@nimbus-sh/worker 0.12.0 → 0.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esbuild-cli-artifact.generated.d.ts +1 -1
- package/dist/esbuild-cli-artifact.generated.js +4 -4
- package/dist/esbuild-wasm-bundle.generated.d.ts +11 -10
- package/dist/esbuild-wasm-bundle.generated.d.ts.map +1 -1
- package/dist/esbuild-wasm-bundle.generated.js +11 -10
- package/dist/facets/build-facet.d.ts +53 -0
- package/dist/facets/build-facet.d.ts.map +1 -0
- package/dist/facets/build-facet.js +346 -0
- package/dist/facets/cirrus-real.d.ts +3 -0
- package/dist/facets/cirrus-real.d.ts.map +1 -1
- package/dist/facets/cirrus-real.js +1 -2
- package/dist/facets/compose.d.ts +1 -0
- package/dist/facets/compose.d.ts.map +1 -1
- package/dist/facets/compose.js +3 -0
- package/dist/facets/data-plan.d.ts +14 -30
- package/dist/facets/data-plan.d.ts.map +1 -1
- package/dist/facets/data-plan.js +153 -13
- package/dist/facets/dev-stylesheet.d.ts +27 -0
- package/dist/facets/dev-stylesheet.d.ts.map +1 -0
- package/dist/facets/dev-stylesheet.js +65 -0
- package/dist/facets/esbuild-transform.d.ts +23 -18
- package/dist/facets/esbuild-transform.d.ts.map +1 -1
- package/dist/facets/esbuild-transform.js +63 -109
- package/dist/facets/manager.d.ts +49 -9
- package/dist/facets/manager.d.ts.map +1 -1
- package/dist/facets/manager.js +238 -69
- package/dist/facets/oxc-transform.d.ts +29 -0
- package/dist/facets/oxc-transform.d.ts.map +1 -0
- package/dist/facets/oxc-transform.js +198 -0
- package/dist/facets/prebundle-pool.d.ts +23 -0
- package/dist/facets/prebundle-pool.d.ts.map +1 -0
- package/dist/facets/prebundle-pool.js +55 -0
- package/dist/facets/process.d.ts +13 -6
- package/dist/facets/process.d.ts.map +1 -1
- package/dist/facets/process.js +37 -31
- package/dist/facets/transform-store.d.ts +4 -4
- package/dist/facets/transform-store.js +4 -4
- package/dist/facets/vite-dev-server.d.ts +89 -12
- package/dist/facets/vite-dev-server.d.ts.map +1 -1
- package/dist/facets/vite-dev-server.js +66 -43
- package/dist/hosted/commands.d.ts.map +1 -1
- package/dist/hosted/commands.js +20 -4
- package/dist/hosted/runtime.d.ts.map +1 -1
- package/dist/hosted/runtime.js +7 -2
- package/dist/hosted/services.d.ts +3 -3
- package/dist/hosted/services.d.ts.map +1 -1
- package/dist/hosted/services.js +102 -95
- package/dist/hosted/session.d.ts +1 -0
- package/dist/hosted/session.d.ts.map +1 -1
- package/dist/loaders/generated-workers.d.ts +3 -0
- package/dist/loaders/generated-workers.d.ts.map +1 -1
- package/dist/loaders/generated-workers.js +3 -0
- package/dist/napi-wasm-artifacts.generated.js +2 -2
- package/dist/node-shims-artifact.generated.d.ts +14 -1
- package/dist/node-shims-artifact.generated.d.ts.map +1 -1
- package/dist/node-shims-artifact.generated.js +23 -10
- package/dist/npm/bin-links.d.ts +7 -4
- package/dist/npm/bin-links.d.ts.map +1 -1
- package/dist/npm/bin-links.js +14 -55
- package/dist/npm/cache.d.ts +6 -0
- package/dist/npm/cache.d.ts.map +1 -1
- package/dist/npm/cache.js +26 -4
- package/dist/npm/installer.d.ts +1 -1
- package/dist/npm/installer.d.ts.map +1 -1
- package/dist/npm/installer.js +26 -52
- package/dist/npm/pre-bundle-facet.d.ts +15 -117
- package/dist/npm/pre-bundle-facet.d.ts.map +1 -1
- package/dist/npm/pre-bundle-facet.js +13 -511
- package/dist/oxc-facet-artifact.generated.d.ts +18 -0
- package/dist/oxc-facet-artifact.generated.d.ts.map +1 -0
- package/dist/oxc-facet-artifact.generated.js +17 -0
- package/dist/oxc-wasm-artifact.generated.d.ts +20 -0
- package/dist/oxc-wasm-artifact.generated.d.ts.map +1 -0
- package/dist/oxc-wasm-artifact.generated.js +19 -0
- package/dist/rolldown-facet-artifact.generated.d.ts +18 -0
- package/dist/rolldown-facet-artifact.generated.d.ts.map +1 -0
- package/dist/rolldown-facet-artifact.generated.js +17 -0
- package/dist/router/remote-api.d.ts.map +1 -1
- package/dist/router/remote-api.js +9 -0
- package/dist/runtime/bash-repl.d.ts.map +1 -1
- package/dist/runtime/bash-repl.js +1 -4
- package/dist/runtime/cpython-resident.d.ts.map +1 -1
- package/dist/runtime/cpython-resident.js +1 -0
- package/dist/runtime/esbuild-wasm-bytes.d.ts +25 -23
- package/dist/runtime/esbuild-wasm-bytes.d.ts.map +1 -1
- package/dist/runtime/esbuild-wasm-bytes.js +30 -25
- package/dist/runtime/facet-loader-host.d.ts +5 -4
- package/dist/runtime/facet-loader-host.d.ts.map +1 -1
- package/dist/runtime/facet-loader-host.js +5 -4
- package/dist/runtime/node-runner.d.ts +2 -0
- package/dist/runtime/node-runner.d.ts.map +1 -1
- package/dist/runtime/node-runner.js +1 -0
- package/dist/runtime/node-shims-artifact.d.ts +8 -1
- package/dist/runtime/node-shims-artifact.d.ts.map +1 -1
- package/dist/runtime/node-shims-artifact.js +32 -4
- package/dist/runtime/node-shims.d.ts.map +1 -1
- package/dist/runtime/node-shims.js +145 -109
- package/dist/runtime/opencode-facet-runner.d.ts.map +1 -1
- package/dist/runtime/opencode-facet-runner.js +6 -2
- package/dist/runtime/oxc-wasm-bytes.d.ts +19 -0
- package/dist/runtime/oxc-wasm-bytes.d.ts.map +1 -0
- package/dist/runtime/oxc-wasm-bytes.js +39 -0
- package/dist/runtime/package-manager.js +1 -1
- package/dist/runtime/process-logs-api.d.ts.map +1 -1
- package/dist/runtime/process-logs-api.js +2 -0
- package/dist/runtime/project-fs.d.ts +8 -1
- package/dist/runtime/project-fs.d.ts.map +1 -1
- package/dist/runtime/project-fs.js +15 -1
- package/dist/runtime/python-repl.d.ts +40 -1
- package/dist/runtime/python-repl.d.ts.map +1 -1
- package/dist/runtime/python-repl.js +19 -11
- package/dist/runtime/ruby-repl.d.ts +38 -0
- package/dist/runtime/ruby-repl.d.ts.map +1 -1
- package/dist/runtime/ruby-repl.js +24 -5
- package/dist/runtime/ruby-resident.d.ts.map +1 -1
- package/dist/runtime/ruby-resident.js +2 -0
- package/dist/session/nimbus-session.d.ts +13 -8
- package/dist/session/nimbus-session.d.ts.map +1 -1
- package/dist/session/nimbus-session.js +11 -5
- package/dist/session/programmatic.d.ts +25 -30
- package/dist/session/programmatic.d.ts.map +1 -1
- package/dist/session/programmatic.js +65 -93
- package/dist/session/routes.d.ts.map +1 -1
- package/dist/session/routes.js +23 -7
- package/dist/session/rpc.d.ts +16 -6
- package/dist/session/rpc.d.ts.map +1 -1
- package/dist/session/rpc.js +53 -13
- package/dist/session/start-real-vite.d.ts +24 -9
- package/dist/session/start-real-vite.d.ts.map +1 -1
- package/dist/session/start-real-vite.js +40 -4
- package/dist/session/supervisor-op.d.ts +14 -0
- package/dist/session/supervisor-op.d.ts.map +1 -1
- package/dist/session/supervisor-op.js +49 -0
- package/dist/session/supervisor-rpc.d.ts +11 -0
- package/dist/session/supervisor-rpc.d.ts.map +1 -1
- package/dist/session/supervisor-rpc.js +18 -0
- package/dist/session/vite-command.d.ts.map +1 -1
- package/dist/session/vite-command.js +23 -19
- package/dist/session/ws-relay.d.ts.map +1 -1
- package/dist/session/ws-relay.js +13 -1
- package/dist/shell/npm-bin-entrypoints.d.ts +3 -1
- package/dist/shell/npm-bin-entrypoints.d.ts.map +1 -1
- package/dist/shell/npm-bin-entrypoints.js +53 -25
- package/dist/vfs/facet-resident-store.d.ts.map +1 -1
- package/dist/vfs/facet-resident-store.js +11 -5
- package/dist/wrangler/nimbus-wrangler.d.ts +8 -0
- package/dist/wrangler/nimbus-wrangler.d.ts.map +1 -1
- package/dist/wrangler/nimbus-wrangler.js +54 -57
- package/package.json +7 -5
- package/public/_assets/esbuild-0.24.2.wasm +0 -0
- package/public/_assets/napi-wasm/loader/{99efae93dd1dcc2b → ab7e57fe9e8750c2}/napi-wasm-loader.mjs +4 -4
- package/public/_assets/napi-wasm/loader/{99efae93dd1dcc2b → ab7e57fe9e8750c2}/provenance.json +2 -2
- package/public/_assets/oxc/nimbus-oxc-1aa8c4c7057c6c28.provenance.json +72 -0
- package/public/_assets/oxc/nimbus-oxc-1aa8c4c7057c6c28.wasm +0 -0
- package/public/_assets/runtime/esbuild-cli-f13e6a112b03ac07.js +1143 -0
- package/public/_assets/runtime/js-interpreter-3c37c48024f0f651.js +23 -0
- package/public/_assets/runtime/js-interpreter-ops-2f4dfec6798e70fc.js +290 -0
- package/public/_assets/runtime/js-interpreter-primordials-e620a61b7e9800fa.js +1 -0
- package/public/_assets/runtime/{node-shims-f92f16c7d7c532e9.js → node-shims-e3adc4576da31e6e.js} +651 -103
- package/public/_assets/runtime/{esbuild-cli-b7aecffd4c6a36fe.js → oxc-facet-fd86fefcdf16bf9c.js} +217 -1047
- package/public/_assets/runtime/{resident-store-92386265e8b306dc.js → resident-store-009f39539ac989fc.js} +11 -5
- package/public/_assets/runtime/rolldown-facet-09983434e2dbe93e.js +15165 -0
- package/public/_assets/runtime/{vfs-write-ledger-d33ee0034446c3e0.js → vfs-write-ledger-9e9594591425a9b8.js} +4 -1
- package/scripts/acorn-primordials.mjs +637 -0
- package/scripts/bundle-esbuild-wasm.mjs +42 -50
- package/scripts/bundle-facet-workers.mjs +247 -18
- package/scripts/bundle-node-shims.mjs +29 -2
- package/scripts/bundle-oxc-wasm.mjs +105 -0
- package/scripts/interpreter-bundle.mjs +105 -0
- package/scripts/napi-wasm/build.mjs +4 -1
- package/scripts/napi-wasm/loader/napi-wasm-loader.ts +38 -3
- package/scripts/oxc-wasm/Cargo.lock +1246 -0
- package/scripts/oxc-wasm/Cargo.toml +30 -0
- package/scripts/oxc-wasm/build.mjs +249 -0
- package/scripts/oxc-wasm/examples/memory.rs +51 -0
- package/scripts/oxc-wasm/examples/transform.rs +20 -0
- package/scripts/oxc-wasm/inputs.mjs +32 -0
- package/scripts/oxc-wasm/rust-toolchain.toml +5 -0
- package/scripts/oxc-wasm/src/abi.rs +136 -0
- package/scripts/oxc-wasm/src/diagnostics.rs +49 -0
- package/scripts/oxc-wasm/src/helpers.rs +139 -0
- package/scripts/oxc-wasm/src/lib.rs +247 -0
- package/scripts/oxc-wasm/src/module.rs +978 -0
- package/scripts/oxc-wasm/src/names.rs +175 -0
- package/scripts/oxc-wasm/src/options.rs +154 -0
- package/scripts/parser-audit.mjs +492 -0
- package/scripts/rolldown-facet/entry.mjs +21 -0
- package/scripts/rolldown-facet/shims.mjs +64 -0
- package/dist/facets/esbuild-bundle-pool.d.ts +0 -43
- package/dist/facets/esbuild-bundle-pool.d.ts.map +0 -1
- package/dist/facets/esbuild-bundle-pool.js +0 -80
- package/dist/loaders/pre-bundle-preamble.d.ts +0 -44
- package/dist/loaders/pre-bundle-preamble.d.ts.map +0 -1
- package/dist/loaders/pre-bundle-preamble.js +0 -116
- package/dist/runtime/host-wasm.d.ts +0 -8
- package/dist/runtime/host-wasm.d.ts.map +0 -1
- package/dist/runtime/host-wasm.js +0 -33
- /package/public/_assets/napi-wasm/loader/{99efae93dd1dcc2b → ab7e57fe9e8750c2}/wasi-trampoline.wasm +0 -0
|
@@ -1,30 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Which file contents a resident node process holds from its first
|
|
3
|
-
* instruction, besides its module map.
|
|
4
|
-
*
|
|
5
|
-
* A synchronous read cannot wait for bytes, so whatever a process reads
|
|
6
|
-
* synchronously has to be in its facet before it runs; the namespace (every
|
|
7
|
-
* name and stat) is always there, content is not. This decides content by
|
|
8
|
-
* rule, from the namespace and the module closure, without reading file
|
|
9
|
-
* contents except a few package.json files:
|
|
10
|
-
*
|
|
11
|
-
* package-json every package.json
|
|
12
|
-
* project the working tree, minus dependency, VCS and build-cache dirs
|
|
13
|
-
* convention config and lockfile names in the working dir and above it
|
|
14
|
-
* package-data non-code files under 256 KiB in every package the closure uses
|
|
15
|
-
* home $HOME's dot entries (tool config, skills), minus caches
|
|
16
|
-
* typescript when the closure has typescript: its lib .d.ts, @types/**,
|
|
17
|
-
* and the declaration files of the packages @types depends on
|
|
18
|
-
* static what the closure's own code names by a foldable path
|
|
19
|
-
* (static-fs-refs.ts), resolved against the namespace:
|
|
20
|
-
* under 256 KiB, or any size when the code reads it with
|
|
21
|
-
* readFileSync (or a read-only openSync) by that path,
|
|
22
|
-
* through any symlinks on it
|
|
23
|
-
* learned paths earlier launches of the same package versions missed
|
|
24
|
-
*
|
|
25
|
-
* Code the closure loads is in the module map already; the store adopts it,
|
|
26
|
-
* so it is readable as data too.
|
|
27
|
-
*/
|
|
1
|
+
import type { RuntimeFsBridge } from '@nimbus-sh/core/runtime/os-contracts.js';
|
|
28
2
|
import type { StaticFsRefs } from '@nimbus-sh/core/runtime/static-fs-refs.js';
|
|
29
3
|
export interface DataPlanEntry {
|
|
30
4
|
path: string;
|
|
@@ -40,8 +14,12 @@ export interface DataPlanSource {
|
|
|
40
14
|
}>;
|
|
41
15
|
/** A file's text, or null when it cannot be read. */
|
|
42
16
|
readText(path: string): Promise<string | null>;
|
|
43
|
-
/**
|
|
44
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Where the symlink at a path leads, as the namespace follows it (its
|
|
19
|
+
* stored target, re-rooted on a mount that reads its links from its own
|
|
20
|
+
* root: RuntimeFsBridge.linkLeadsTo), or null when the path is not a symlink.
|
|
21
|
+
*/
|
|
22
|
+
linkTarget(path: string): Promise<string | null>;
|
|
45
23
|
/** What is at a path, following symlinks, or null. */
|
|
46
24
|
stat(path: string): Promise<{
|
|
47
25
|
kind: string;
|
|
@@ -59,7 +37,7 @@ export interface DataPlanInput {
|
|
|
59
37
|
/** Called with the bytes of each listed page, to pace a long walk. */
|
|
60
38
|
spend?: (units: number) => Promise<void>;
|
|
61
39
|
}
|
|
62
|
-
export type DataPlanRule = 'package-json' | 'project' | 'convention' | 'package-data' | 'home' | 'typescript' | 'static' | 'learned';
|
|
40
|
+
export type DataPlanRule = 'package-json' | 'project' | 'convention' | 'package-data' | 'home' | 'typescript' | 'static' | 'entries' | 'learned';
|
|
63
41
|
export interface DataPlan {
|
|
64
42
|
paths: string[];
|
|
65
43
|
bytes: number;
|
|
@@ -72,6 +50,12 @@ export interface DataPlan {
|
|
|
72
50
|
export declare const PACKAGE_DATA_MAX_BYTES: number;
|
|
73
51
|
/** The package directory a path sits in: up to the name after its last node_modules. */
|
|
74
52
|
export declare function packageRootOf(k: string): string | null;
|
|
53
|
+
/**
|
|
54
|
+
* DataPlanSource.linkTarget over a process's bridge: where the symlink at
|
|
55
|
+
* `path` leads as the namespace follows it, or null when it is no link. A
|
|
56
|
+
* missing or unreadable component is not a link: the lookup ends there.
|
|
57
|
+
*/
|
|
58
|
+
export declare function linkTargetOf(fs: Pick<RuntimeFsBridge, 'readlink' | 'linkLeadsTo'>, path: string): Promise<string | null>;
|
|
75
59
|
/**
|
|
76
60
|
* The plan for one launch. Walks the namespace once, in pages.
|
|
77
61
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-plan.d.ts","sourceRoot":"","sources":["../../src/facets/data-plan.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"data-plan.d.ts","sourceRoot":"","sources":["../../src/facets/data-plan.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAE9E,MAAM,WAAW,aAAa;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE;AAEhG,MAAM,WAAW,cAAc;IAC7B,wEAAwE;IACxE,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACvF,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC/C;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACjD,sDAAsD;IACtD,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,IAAI,EAAE,SAAS,YAAY,EAAE,CAAC;IAC9B,4DAA4D;IAC5D,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3B,sEAAsE;IACtE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAED,MAAM,MAAM,YAAY,GACpB,cAAc,GAAG,SAAS,GAAG,YAAY,GAAG,cAAc,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAE1H,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/D;AAED,mFAAmF;AACnF,eAAO,MAAM,sBAAsB,QAAa,CAAC;AAkCjD,wFAAwF;AACxF,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOtD;AAgID;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAO9H;AA6BD;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CA+RnG"}
|
package/dist/facets/data-plan.js
CHANGED
|
@@ -1,3 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which file contents a resident node process holds from its first
|
|
3
|
+
* instruction, besides its module map.
|
|
4
|
+
*
|
|
5
|
+
* A synchronous read cannot wait for bytes, so whatever a process reads
|
|
6
|
+
* synchronously has to be in its facet before it runs; the namespace (every
|
|
7
|
+
* name and stat) is always there, content is not. This decides content by
|
|
8
|
+
* rule, from the namespace and the module closure, without reading file
|
|
9
|
+
* contents except a few package.json files:
|
|
10
|
+
*
|
|
11
|
+
* package-json every package.json
|
|
12
|
+
* project the working tree, minus dependency, VCS and build-cache dirs
|
|
13
|
+
* convention config and lockfile names in the working dir and above it
|
|
14
|
+
* package-data non-code files under 256 KiB in every package the closure uses
|
|
15
|
+
* home $HOME's dot entries (tool config, skills), minus caches
|
|
16
|
+
* typescript when the closure has typescript: its lib .d.ts, @types/**,
|
|
17
|
+
* and the declaration files of the packages @types depends on
|
|
18
|
+
* static what the closure's own code names by a foldable path
|
|
19
|
+
* (static-fs-refs.ts), resolved against the namespace:
|
|
20
|
+
* under 256 KiB, or any size when the code reads it with
|
|
21
|
+
* readFileSync (or a read-only openSync) by that path,
|
|
22
|
+
* through any symlinks on it
|
|
23
|
+
* entries the entry files the working dir's own dependencies name
|
|
24
|
+
* (exports under every condition, module, main, browser),
|
|
25
|
+
* under 256 KiB: a dev server reads them synchronously to
|
|
26
|
+
* pre-bundle what the app imports (Vite's optimizer reads
|
|
27
|
+
* each with readFileSync), and the process never loads them
|
|
28
|
+
* learned paths earlier launches of the same package versions missed
|
|
29
|
+
*
|
|
30
|
+
* Code the closure loads is in the module map already; the store adopts it,
|
|
31
|
+
* so it is readable as data too.
|
|
32
|
+
*/
|
|
33
|
+
import { resolveFile } from '@nimbus-sh/core/runtime/require-resolution.js';
|
|
1
34
|
/** Package data this size or larger is a bundle or a binary, not configuration. */
|
|
2
35
|
export const PACKAGE_DATA_MAX_BYTES = 256 * 1024;
|
|
3
36
|
const CODE_FILE = /\.(?:c|m)?(?:j|t)sx?$|\.map$|\.d\.(?:c|m)?ts$|\.node$|\.wasm$/;
|
|
@@ -74,6 +107,39 @@ function exportTarget(value) {
|
|
|
74
107
|
}
|
|
75
108
|
return null;
|
|
76
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Every file a package.json names as an entry, relative to its package:
|
|
112
|
+
* each subpath's `exports` targets under every condition (a dev server
|
|
113
|
+
* resolves for the browser, the process for node), and `module`, `main` and
|
|
114
|
+
* a string `browser`. Subpath patterns name no file until a specifier fills
|
|
115
|
+
* them, so they name none here.
|
|
116
|
+
*/
|
|
117
|
+
function entryTargets(manifest) {
|
|
118
|
+
const out = new Set();
|
|
119
|
+
const leaves = (value) => {
|
|
120
|
+
if (typeof value === 'string') {
|
|
121
|
+
if (!value.includes('*'))
|
|
122
|
+
out.add(value);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
if (Array.isArray(value)) {
|
|
126
|
+
for (const v of value)
|
|
127
|
+
leaves(v);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (value && typeof value === 'object')
|
|
131
|
+
for (const v of Object.values(value))
|
|
132
|
+
leaves(v);
|
|
133
|
+
};
|
|
134
|
+
leaves(manifest.exports);
|
|
135
|
+
for (const field of ['module', 'main', 'browser']) {
|
|
136
|
+
if (typeof manifest[field] === 'string')
|
|
137
|
+
out.add(manifest[field]);
|
|
138
|
+
}
|
|
139
|
+
if (manifest.exports === undefined && manifest.main === undefined)
|
|
140
|
+
out.add('index.js');
|
|
141
|
+
return [...out];
|
|
142
|
+
}
|
|
77
143
|
/** Map `./sub` through a package.json `exports` field; null when it does not export it. */
|
|
78
144
|
function mapExports(exportsField, sub) {
|
|
79
145
|
if (typeof exportsField !== 'object' || exportsField === null || Array.isArray(exportsField)) {
|
|
@@ -103,6 +169,21 @@ function mapExports(exportsField, sub) {
|
|
|
103
169
|
return null;
|
|
104
170
|
return t.replaceAll('*', sub.slice(best.prefix.length, sub.length - best.suffix.length));
|
|
105
171
|
}
|
|
172
|
+
/** A directory's package.json, parsed once per plan; null when absent or not JSON. */
|
|
173
|
+
async function readManifest(source, dir, manifests) {
|
|
174
|
+
let manifest = manifests.get(dir);
|
|
175
|
+
if (manifest === undefined) {
|
|
176
|
+
const text = await source.readText(joinKey(dir, 'package.json'));
|
|
177
|
+
try {
|
|
178
|
+
manifest = text === null ? null : JSON.parse(text);
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
manifest = null;
|
|
182
|
+
}
|
|
183
|
+
manifests.set(dir, manifest);
|
|
184
|
+
}
|
|
185
|
+
return manifest;
|
|
186
|
+
}
|
|
106
187
|
async function resolveSpecifier(source, fromDir, spec, manifests) {
|
|
107
188
|
const parts = spec.split('/');
|
|
108
189
|
const nameLen = spec.startsWith('@') ? 2 : 1;
|
|
@@ -113,17 +194,7 @@ async function resolveSpecifier(source, fromDir, spec, manifests) {
|
|
|
113
194
|
for (let dir = fromDir;; dir = parentOf(dir)) {
|
|
114
195
|
if (baseOf(dir) !== 'node_modules') {
|
|
115
196
|
const pkgDir = joinKey(dir, 'node_modules/' + name);
|
|
116
|
-
|
|
117
|
-
if (manifest === undefined) {
|
|
118
|
-
const text = await source.readText(pkgDir + '/package.json');
|
|
119
|
-
try {
|
|
120
|
-
manifest = text === null ? null : JSON.parse(text);
|
|
121
|
-
}
|
|
122
|
-
catch {
|
|
123
|
-
manifest = null;
|
|
124
|
-
}
|
|
125
|
-
manifests.set(pkgDir, manifest);
|
|
126
|
-
}
|
|
197
|
+
const manifest = await readManifest(source, pkgDir, manifests);
|
|
127
198
|
if (manifest) {
|
|
128
199
|
const mapped = manifest.exports !== undefined ? mapExports(manifest.exports, sub ? './' + sub : '.') : null;
|
|
129
200
|
if (mapped)
|
|
@@ -135,6 +206,37 @@ async function resolveSpecifier(source, fromDir, spec, manifests) {
|
|
|
135
206
|
return null;
|
|
136
207
|
}
|
|
137
208
|
}
|
|
209
|
+
/** The resolver's filesystem (require-resolution.ts) over the plan's source. */
|
|
210
|
+
function resolutionFs(source) {
|
|
211
|
+
return {
|
|
212
|
+
exists: async (path) => (await source.stat(path)) !== null,
|
|
213
|
+
isDirectory: async (path) => (await source.stat(path))?.kind === 'directory',
|
|
214
|
+
readFileString: async (path) => {
|
|
215
|
+
const text = await source.readText(path);
|
|
216
|
+
if (text === null)
|
|
217
|
+
throw Object.assign(new Error(`ENOENT: ${path}`), { code: 'ENOENT' });
|
|
218
|
+
return text;
|
|
219
|
+
},
|
|
220
|
+
stat: async (path) => {
|
|
221
|
+
const found = await source.stat(path);
|
|
222
|
+
return found === null ? null : { size: found.size };
|
|
223
|
+
},
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* DataPlanSource.linkTarget over a process's bridge: where the symlink at
|
|
228
|
+
* `path` leads as the namespace follows it, or null when it is no link. A
|
|
229
|
+
* missing or unreadable component is not a link: the lookup ends there.
|
|
230
|
+
*/
|
|
231
|
+
export async function linkTargetOf(fs, path) {
|
|
232
|
+
try {
|
|
233
|
+
const text = await fs.readlink(path);
|
|
234
|
+
return text === null ? null : await fs.linkLeadsTo(path, text);
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
return null;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
138
240
|
/** Symlinks a lookup follows before it gives up (Linux's MAXSYMLINKS). */
|
|
139
241
|
const MAX_LINK_HOPS = 40;
|
|
140
242
|
/**
|
|
@@ -149,7 +251,7 @@ async function throughLinks(source, k) {
|
|
|
149
251
|
let followed = false;
|
|
150
252
|
for (let i = 1; i <= segs.length; i++) {
|
|
151
253
|
const at = segs.slice(0, i).join('/');
|
|
152
|
-
const target = await source.
|
|
254
|
+
const target = await source.linkTarget('/' + at);
|
|
153
255
|
if (target === null)
|
|
154
256
|
continue;
|
|
155
257
|
const base = target.startsWith('/') ? key(target) : joinKey(parentOf(at), target);
|
|
@@ -209,7 +311,7 @@ export async function planFacetData(source, input) {
|
|
|
209
311
|
const learned = new Set();
|
|
210
312
|
for (const p of input.learned ?? [])
|
|
211
313
|
learned.add(key(p));
|
|
212
|
-
const rules = Object.fromEntries(['package-json', 'project', 'convention', 'package-data', 'home', 'typescript', 'static', 'learned']
|
|
314
|
+
const rules = Object.fromEntries(['package-json', 'project', 'convention', 'package-data', 'home', 'typescript', 'static', 'entries', 'learned']
|
|
213
315
|
.map((r) => [r, { files: 0, bytes: 0 }]));
|
|
214
316
|
const paths = [];
|
|
215
317
|
const planned = new Set();
|
|
@@ -448,6 +550,44 @@ export async function planFacetData(source, input) {
|
|
|
448
550
|
take(entry, 'static');
|
|
449
551
|
}
|
|
450
552
|
}
|
|
553
|
+
// The working dir's dependencies' entries, each the file Node's resolver
|
|
554
|
+
// loads for it (require-resolution.ts, as the module-map walk resolves): a
|
|
555
|
+
// `main` without its extension, or naming a directory with a package.json
|
|
556
|
+
// of its own.
|
|
557
|
+
const files = resolutionFs(source);
|
|
558
|
+
const projectManifest = await readManifest(source, cwd, manifests);
|
|
559
|
+
const dependencies = new Set();
|
|
560
|
+
for (const field of ['dependencies', 'devDependencies', 'optionalDependencies']) {
|
|
561
|
+
const named = projectManifest?.[field];
|
|
562
|
+
if (named && typeof named === 'object')
|
|
563
|
+
for (const name of Object.keys(named))
|
|
564
|
+
dependencies.add(name);
|
|
565
|
+
}
|
|
566
|
+
for (const name of dependencies) {
|
|
567
|
+
let pkgDir = null;
|
|
568
|
+
for (let d = cwd; pkgDir === null; d = parentOf(d)) {
|
|
569
|
+
if (packageRoots.has(joinKey(d, 'node_modules/' + name)))
|
|
570
|
+
pkgDir = joinKey(d, 'node_modules/' + name);
|
|
571
|
+
if (d === '')
|
|
572
|
+
break;
|
|
573
|
+
}
|
|
574
|
+
if (pkgDir === null)
|
|
575
|
+
continue;
|
|
576
|
+
const manifest = await readManifest(source, pkgDir, manifests);
|
|
577
|
+
if (manifest === null)
|
|
578
|
+
continue;
|
|
579
|
+
for (const rel of entryTargets(manifest)) {
|
|
580
|
+
const resolved = await resolveFile(files, joinKey(pkgDir, rel));
|
|
581
|
+
const k = resolved === null ? null : await throughLinks(source, resolved);
|
|
582
|
+
if (k === null)
|
|
583
|
+
continue;
|
|
584
|
+
const found = await source.stat(k);
|
|
585
|
+
if (found === null || found.kind !== 'file')
|
|
586
|
+
continue;
|
|
587
|
+
if (found.size < PACKAGE_DATA_MAX_BYTES && !closure.has(k))
|
|
588
|
+
take({ path: k, kind: 'file', size: found.size }, 'entries');
|
|
589
|
+
}
|
|
590
|
+
}
|
|
451
591
|
// The files behind symlinked directories the project or home rule reached.
|
|
452
592
|
if (linkedDirs.length > 0) {
|
|
453
593
|
after = null;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dev-stylesheet.ts — a stylesheet as the Vite dev server serves it: its
|
|
3
|
+
* local `@import`s inlined by the CSS layer and rules `vite build` bundles
|
|
4
|
+
* with (core runtime/css-bundle.ts, on css-tree), so dev and build agree on
|
|
5
|
+
* what an import means: its conditions wrap what it imports (`@media`,
|
|
6
|
+
* `@supports`, `@layer`), a sheet imported twice keeps its last place,
|
|
7
|
+
* imports of remote sheets are hoisted, nested imports are followed.
|
|
8
|
+
*
|
|
9
|
+
* Unlike a build, nothing is emitted: each `url()` becomes its file's path
|
|
10
|
+
* from the project root (under the dev server's base), so a `url()` in an
|
|
11
|
+
* inlined sheet still names its file wherever the sheet that imported it is
|
|
12
|
+
* served. An `@import` that names no file in the project stays an `@import`
|
|
13
|
+
* for the browser to fetch and report.
|
|
14
|
+
*/
|
|
15
|
+
/** The reads a stylesheet needs from the dev server's VFS. */
|
|
16
|
+
export interface DevStylesheetFs {
|
|
17
|
+
exists(path: string): boolean;
|
|
18
|
+
isDirectory(path: string): boolean;
|
|
19
|
+
readFileString(path: string): string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The stylesheet at `vfsPath` (under the project's `root`), its imports
|
|
23
|
+
* inlined, its url()s rooted at `base`. A sheet the CSS layer refuses (an
|
|
24
|
+
* `@import` with no URL) is served as written, the reason in a comment first.
|
|
25
|
+
*/
|
|
26
|
+
export declare function devStylesheet(fs: DevStylesheetFs, root: string, base: string, vfsPath: string): Promise<string>;
|
|
27
|
+
//# sourceMappingURL=dev-stylesheet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev-stylesheet.d.ts","sourceRoot":"","sources":["../../src/facets/dev-stylesheet.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IACnC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACtC;AAeD;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0BrH"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dev-stylesheet.ts — a stylesheet as the Vite dev server serves it: its
|
|
3
|
+
* local `@import`s inlined by the CSS layer and rules `vite build` bundles
|
|
4
|
+
* with (core runtime/css-bundle.ts, on css-tree), so dev and build agree on
|
|
5
|
+
* what an import means: its conditions wrap what it imports (`@media`,
|
|
6
|
+
* `@supports`, `@layer`), a sheet imported twice keeps its last place,
|
|
7
|
+
* imports of remote sheets are hoisted, nested imports are followed.
|
|
8
|
+
*
|
|
9
|
+
* Unlike a build, nothing is emitted: each `url()` becomes its file's path
|
|
10
|
+
* from the project root (under the dev server's base), so a `url()` in an
|
|
11
|
+
* inlined sheet still names its file wherever the sheet that imported it is
|
|
12
|
+
* served. An `@import` that names no file in the project stays an `@import`
|
|
13
|
+
* for the browser to fetch and report.
|
|
14
|
+
*/
|
|
15
|
+
import { bundleCss, CssError } from '@nimbus-sh/core/runtime/css-bundle.js';
|
|
16
|
+
const dirOf = (path) => path.slice(0, path.lastIndexOf('/')) || '/';
|
|
17
|
+
/** `path` with `.` and `..` segments resolved, leading slash as given. */
|
|
18
|
+
function normalize(path) {
|
|
19
|
+
const out = [];
|
|
20
|
+
for (const segment of path.split('/')) {
|
|
21
|
+
if (segment === '' || segment === '.')
|
|
22
|
+
continue;
|
|
23
|
+
if (segment === '..')
|
|
24
|
+
out.pop();
|
|
25
|
+
else
|
|
26
|
+
out.push(segment);
|
|
27
|
+
}
|
|
28
|
+
return (path.startsWith('/') ? '/' : '') + out.join('/');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The stylesheet at `vfsPath` (under the project's `root`), its imports
|
|
32
|
+
* inlined, its url()s rooted at `base`. A sheet the CSS layer refuses (an
|
|
33
|
+
* `@import` with no URL) is served as written, the reason in a comment first.
|
|
34
|
+
*/
|
|
35
|
+
export async function devStylesheet(fs, root, base, vfsPath) {
|
|
36
|
+
const source = fs.readFileString(vfsPath);
|
|
37
|
+
const rootedUrl = (path) => `${base}/${path.slice(root.length).replace(/^\/+/, '')}`;
|
|
38
|
+
const plugin = {
|
|
39
|
+
name: 'nimbus-dev-css',
|
|
40
|
+
async resolve({ path, resolveDir, kind }) {
|
|
41
|
+
const suffix = /[?#].*$/.exec(path)?.[0] ?? '';
|
|
42
|
+
const bare = path.slice(0, path.length - suffix.length);
|
|
43
|
+
const target = normalize(bare.startsWith('/') ? `${root}${bare}` : `${resolveDir}/${bare}`);
|
|
44
|
+
if (kind === 'url-token')
|
|
45
|
+
return { path: rootedUrl(target) + suffix, external: true };
|
|
46
|
+
if (!fs.exists(target) || fs.isDirectory(target))
|
|
47
|
+
return { path, external: true };
|
|
48
|
+
return { path: target, namespace: 'file' };
|
|
49
|
+
},
|
|
50
|
+
async load({ path }) {
|
|
51
|
+
return { contents: fs.readFileString(path), loader: 'css', resolveDir: dirOf(path) };
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
const unused = () => {
|
|
55
|
+
throw new Error('a dev stylesheet emits no assets');
|
|
56
|
+
};
|
|
57
|
+
try {
|
|
58
|
+
return (await bundleCss([{ namespace: 'file', path: vfsPath, resolveDir: dirOf(vfsPath), source }], plugin, { emit: unused, dataUrl: unused }, { minify: false })).css;
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
if (error instanceof CssError)
|
|
62
|
+
return `/* ${error.message.replace(/\*\//g, '* /')} */\n${source}`;
|
|
63
|
+
throw error;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -5,8 +5,8 @@ import type { NamespaceFs } from '@nimbus-sh/core/runtime/process-files.js';
|
|
|
5
5
|
export declare const ESBUILD_FACET_WORKER_ID: string;
|
|
6
6
|
/**
|
|
7
7
|
* Slim Worker Loader module whose DO class owns the esbuild wasm.
|
|
8
|
-
* `
|
|
9
|
-
*
|
|
8
|
+
* `wasm` is the staged esbuild.wasm (fetchEsbuildWasmBytes), compiled by the
|
|
9
|
+
* facet's module map at its startup: no other isolate holds it.
|
|
10
10
|
* `jsFnBody` is the staged adapter (fetchEsbuildJsFnBody), compiled into a
|
|
11
11
|
* factory at startup, the one moment code may be generated from a string;
|
|
12
12
|
* each call of the factory is a separate esbuild, and takes the `WebAssembly`
|
|
@@ -14,21 +14,18 @@ export declare const ESBUILD_FACET_WORKER_ID: string;
|
|
|
14
14
|
* the global one unless given). `cliRunner` is the staged runner of the
|
|
15
15
|
* `esbuild` command (fetchEsbuildCliRunner).
|
|
16
16
|
*/
|
|
17
|
-
export declare function esbuildFacetWorkerCode(
|
|
17
|
+
export declare function esbuildFacetWorkerCode(wasm: ArrayBuffer, jsFnBody: string, cliRunner: string, transformRuntime: string): WorkerCode;
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
20
|
-
* esbuild facet,
|
|
21
|
-
*
|
|
22
|
-
* freshly minted stub; an overloaded facet is not asked again. A slice that
|
|
23
|
-
* still fails answers each of its requests with a transient error, which is
|
|
24
|
-
* no verdict on the source, and the other slices keep their answers.
|
|
19
|
+
* Where the transform facet sends a module that ran Oxc out of native stack
|
|
20
|
+
* (oxcTransformHost): the esbuild facet, whose Go stacks grow. One call per
|
|
21
|
+
* batch; the caller answers a failed call as transient.
|
|
25
22
|
*/
|
|
26
|
-
export declare function
|
|
23
|
+
export declare function esbuildStackFallbackHost(ctx: DurableObjectState, env: unknown): EsbuildTransformHost;
|
|
27
24
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
25
|
+
* Where the build facet sends a build whose rolldown binding died under it
|
|
26
|
+
* (rolldownBuildHost): the esbuild facet, whose Go stacks grow.
|
|
30
27
|
*/
|
|
31
|
-
export declare function
|
|
28
|
+
export declare function esbuildBuildFallbackHost(ctx: DurableObjectState, env: unknown): EsbuildBuildHost;
|
|
32
29
|
/**
|
|
33
30
|
* Runs one `esbuild` command in the Durable Object's esbuild facet, as
|
|
34
31
|
* process `pid`: its files go through a supervisor capability minted for that
|
|
@@ -37,11 +34,19 @@ export declare function esbuildBuildHost(ctx: DurableObjectState, env: unknown):
|
|
|
37
34
|
*/
|
|
38
35
|
export declare function runEsbuildCli(ctx: DurableObjectState, env: unknown, pid: number, args: EsbuildCliArgs, output: EsbuildCliOutput): Promise<number>;
|
|
39
36
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* facet's
|
|
43
|
-
*
|
|
44
|
-
*
|
|
37
|
+
* What a transform from supervisorEsbuildService's host is a function of:
|
|
38
|
+
* the transform facet's code (OXC_FACET_WORKER_ID) and, for a module too deep
|
|
39
|
+
* for it, the esbuild facet's (ESBUILD_FACET_WORKER_ID, which carries the
|
|
40
|
+
* esbuild version). The launch's transform store keys results by it, so a new
|
|
41
|
+
* build of either engine misses every stored result.
|
|
42
|
+
*/
|
|
43
|
+
export declare const TRANSFORM_HOST_ID: string;
|
|
44
|
+
/**
|
|
45
|
+
* The transforms and builds a Durable Object's supervisor shares: transforms
|
|
46
|
+
* run in its transform facet (oxc-transform.ts), builds in its build facet
|
|
47
|
+
* (build-facet.ts, rolldown), each with the esbuild facet for what its engine
|
|
48
|
+
* cannot finish, and build() reads `vfs` from here. TRANSFORM_HOST_ID is
|
|
49
|
+
* the host's identity, which the launch's transform store keys its results by.
|
|
45
50
|
*/
|
|
46
51
|
export declare function supervisorEsbuildService(ctx: DurableObjectState, env: unknown, vfs: NamespaceFs): EsbuildService;
|
|
47
52
|
//# sourceMappingURL=esbuild-transform.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"esbuild-transform.d.ts","sourceRoot":"","sources":["../../src/facets/esbuild-transform.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EAGd,KAAK,gBAAgB,EAIrB,KAAK,oBAAoB,EAG1B,MAAM,4CAA4C,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"esbuild-transform.d.ts","sourceRoot":"","sources":["../../src/facets/esbuild-transform.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EAGd,KAAK,gBAAgB,EAIrB,KAAK,oBAAoB,EAG1B,MAAM,4CAA4C,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAQ/F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAMpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AAyD5E,eAAO,MAAM,uBAAuB,QAA2H,CAAC;AAQhK;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,GACvB,UAAU,CAqBZ;AA0ED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,OAAO,GAAG,oBAAoB,CAEpG;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,OAAO,GAAG,gBAAgB,CAEhG;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,kBAAkB,EACvB,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,QAAsD,CAAC;AAErF;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,GAAG,cAAc,CAMhH"}
|