@bytecodealliance/jco 1.25.2 → 1.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -4
- package/dist/api.d.ts +6 -0
- package/dist/api.d.ts.map +1 -0
- package/{src → dist}/api.js +2 -12
- package/dist/api.js.map +1 -0
- package/dist/browser.d.ts +5 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +12 -0
- package/dist/browser.js.map +1 -0
- package/dist/bundle.d.ts +42 -0
- package/dist/bundle.d.ts.map +1 -0
- package/dist/bundle.js +124 -0
- package/dist/bundle.js.map +1 -0
- package/dist/cmd/componentize.d.ts +34 -0
- package/dist/cmd/componentize.d.ts.map +1 -0
- package/dist/cmd/componentize.js +243 -0
- package/dist/cmd/componentize.js.map +1 -0
- package/{types → dist}/cmd/opt.d.ts +17 -12
- package/dist/cmd/opt.d.ts.map +1 -0
- package/{src → dist}/cmd/opt.js +53 -87
- package/dist/cmd/opt.js.map +1 -0
- package/dist/cmd/run.d.ts +3 -0
- package/dist/cmd/run.d.ts.map +1 -0
- package/{src → dist}/cmd/run.js +24 -54
- package/dist/cmd/run.js.map +1 -0
- package/dist/cmd/transpile.d.ts +48 -0
- package/dist/cmd/transpile.d.ts.map +1 -0
- package/{src → dist}/cmd/transpile.js +1 -36
- package/dist/cmd/transpile.js.map +1 -0
- package/{types → dist}/cmd/types.d.ts +21 -22
- package/dist/cmd/types.d.ts.map +1 -0
- package/{src → dist}/cmd/types.js +27 -51
- package/dist/cmd/types.js.map +1 -0
- package/dist/cmd/wasm-tools.d.ts +8 -0
- package/dist/cmd/wasm-tools.d.ts.map +1 -0
- package/{src → dist}/cmd/wasm-tools.js +28 -42
- package/dist/cmd/wasm-tools.js.map +1 -0
- package/{types → dist}/common.d.ts +27 -25
- package/dist/common.d.ts.map +1 -0
- package/{src → dist}/common.js +19 -44
- package/dist/common.js.map +1 -0
- package/{types → dist}/jco.d.ts.map +1 -1
- package/{src → dist}/jco.js +74 -149
- package/dist/jco.js.map +1 -0
- package/dist/ora-shim.d.ts +9 -0
- package/dist/ora-shim.d.ts.map +1 -0
- package/dist/ora-shim.js +10 -0
- package/dist/ora-shim.js.map +1 -0
- package/package.json +22 -22
- package/src/browser.js +0 -18
- package/src/cmd/componentize.js +0 -170
- package/src/ora-shim.js +0 -9
- package/types/api.d.ts +0 -6
- package/types/api.d.ts.map +0 -1
- package/types/browser.d.ts +0 -4
- package/types/browser.d.ts.map +0 -1
- package/types/cmd/componentize.d.ts +0 -2
- package/types/cmd/componentize.d.ts.map +0 -1
- package/types/cmd/opt.d.ts.map +0 -1
- package/types/cmd/run.d.ts +0 -3
- package/types/cmd/run.d.ts.map +0 -1
- package/types/cmd/transpile.d.ts +0 -72
- package/types/cmd/transpile.d.ts.map +0 -1
- package/types/cmd/types.d.ts.map +0 -1
- package/types/cmd/wasm-tools.d.ts +0 -8
- package/types/cmd/wasm-tools.d.ts.map +0 -1
- package/types/common.d.ts.map +0 -1
- package/types/ora-shim.d.ts +0 -8
- package/types/ora-shim.d.ts.map +0 -1
- /package/{types → dist}/jco.d.ts +0 -0
package/README.md
CHANGED
|
@@ -57,7 +57,7 @@ Options:
|
|
|
57
57
|
-h, --help display help for command
|
|
58
58
|
|
|
59
59
|
Commands:
|
|
60
|
-
componentize [options] <
|
|
60
|
+
componentize [options] <source> Create a component from a JavaScript or TypeScript module
|
|
61
61
|
transpile [options] <component-path> Transpile a WebAssembly Component to JS + core Wasm for JavaScript execution
|
|
62
62
|
types [options] <wit-path> Generate types for the given WIT
|
|
63
63
|
guest-types [options] <wit-path> (experimental) Generate guest types for the given WIT
|
|
@@ -106,15 +106,38 @@ jco serve --port 8080 server.wasm
|
|
|
106
106
|
|
|
107
107
|
> **Note**: `jco componentize` is considered experimental, and breaking changes may be made without notice.
|
|
108
108
|
|
|
109
|
-
To componentize a
|
|
109
|
+
To componentize a JavaScript file run:
|
|
110
110
|
|
|
111
111
|
```
|
|
112
112
|
jco componentize app.js --wit wit -n world-name -o component.wasm
|
|
113
113
|
```
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
By default, [StarlingMonkey][sm] is the default componentization backend, but alternative backends can be
|
|
116
|
+
selected with the `--backend` option, for example [QuickJS-NG][qjs-ng] via [`componentize-qjs`][cqjs]
|
|
117
|
+
(i.e. `--backend quickjs` or `--backend qjs`):
|
|
116
118
|
|
|
117
|
-
|
|
119
|
+
```
|
|
120
|
+
jco componentize app.js --wit wit -n world-name -o component.wasm --backend qjs
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
The accepted backend names are `starlingmonkey`/`sm` and `quickjs`/`qjs`. The existing `--engine <path>`
|
|
124
|
+
option supplies a custom StarlingMonkey build and is valid only with the StarlingMonkey backend.
|
|
125
|
+
|
|
126
|
+
TypeScript entry modules are transformed and bundled automatically:
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
jco componentize app.ts --wit wit -n world-name -o component.wasm
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
The TypeScript transform erases types but does not perform semantic type checking. Run `tsc --noEmit`
|
|
133
|
+
separately when required.
|
|
134
|
+
|
|
135
|
+
See [ComponentizeJS][cjs] and [componentize-qjs][cqjs] for backend-specific details.
|
|
136
|
+
|
|
137
|
+
[sm]: https://github.com/bytecodealliance/StarlingMonkey
|
|
138
|
+
[qjs-ng]: https://github.com/quickjs-ng/quickjs
|
|
139
|
+
[cjs]: https://github.com/bytecodealliance/componentize-js
|
|
140
|
+
[cqjs]: https://github.com/andreiltd/componentize-qjs
|
|
118
141
|
|
|
119
142
|
## API
|
|
120
143
|
|
package/dist/api.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { optimizeComponent as opt } from "./cmd/opt.js";
|
|
2
|
+
export { transpileComponent as transpile, typesComponent as types } from "./cmd/transpile.js";
|
|
3
|
+
export { print, parse, componentWit, componentNew, componentEmbed, metadataAdd, metadataShow, } from "@bytecodealliance/jco-transpile/wasm-tools";
|
|
4
|
+
export declare function preview1AdapterCommandPath(): URL;
|
|
5
|
+
export declare function preview1AdapterReactorPath(): URL;
|
|
6
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,IAAI,GAAG,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,kBAAkB,IAAI,SAAS,EAAE,cAAc,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE9F,OAAO,EACH,KAAK,EACL,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,WAAW,EACX,YAAY,GACf,MAAM,4CAA4C,CAAC;AAEpD,wBAAgB,0BAA0B,QAEzC;AACD,wBAAgB,0BAA0B,QAEzC"}
|
package/{src → dist}/api.js
RENAMED
|
@@ -1,20 +1,10 @@
|
|
|
1
|
-
// @ts-check
|
|
2
1
|
export { optimizeComponent as opt } from "./cmd/opt.js";
|
|
3
2
|
export { transpileComponent as transpile, typesComponent as types } from "./cmd/transpile.js";
|
|
4
|
-
|
|
5
|
-
export {
|
|
6
|
-
print,
|
|
7
|
-
parse,
|
|
8
|
-
componentWit,
|
|
9
|
-
componentNew,
|
|
10
|
-
componentEmbed,
|
|
11
|
-
metadataAdd,
|
|
12
|
-
metadataShow,
|
|
13
|
-
} from "@bytecodealliance/jco-transpile/wasm-tools";
|
|
14
|
-
|
|
3
|
+
export { print, parse, componentWit, componentNew, componentEmbed, metadataAdd, metadataShow, } from "@bytecodealliance/jco-transpile/wasm-tools";
|
|
15
4
|
export function preview1AdapterCommandPath() {
|
|
16
5
|
return new URL("../lib/wasi_snapshot_preview1.command.wasm", import.meta.url);
|
|
17
6
|
}
|
|
18
7
|
export function preview1AdapterReactorPath() {
|
|
19
8
|
return new URL("../lib/wasi_snapshot_preview1.reactor.wasm", import.meta.url);
|
|
20
9
|
}
|
|
10
|
+
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,IAAI,GAAG,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,kBAAkB,IAAI,SAAS,EAAE,cAAc,IAAI,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE9F,OAAO,EACH,KAAK,EACL,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,WAAW,EACX,YAAY,GACf,MAAM,4CAA4C,CAAC;AAEpD,MAAM,UAAU,0BAA0B;IACtC,OAAO,IAAI,GAAG,CAAC,4CAA4C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClF,CAAC;AACD,MAAM,UAAU,0BAA0B;IACtC,OAAO,IAAI,GAAG,CAAC,4CAA4C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClF,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { generate as _generate, generateTypes as _generateTypes } from "@bytecodealliance/jco-transpile/component";
|
|
2
|
+
export declare function generate(...args: Parameters<typeof _generate>): Promise<import("@bytecodealliance/jco-transpile/component").Transpiled>;
|
|
3
|
+
export declare function generateTypes(...args: Parameters<typeof _generateTypes>): Promise<import("@bytecodealliance/jco-transpile/component").Files>;
|
|
4
|
+
export { generate as transpile };
|
|
5
|
+
//# sourceMappingURL=browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,QAAQ,IAAI,SAAS,EACrB,aAAa,IAAI,cAAc,EAClC,MAAM,2CAA2C,CAAC;AAEnD,wBAAsB,QAAQ,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,2EAGnE;AAED,wBAAsB,aAAa,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,sEAG7E;AAGD,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAE,CAAC"}
|
package/dist/browser.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { $init, generate as _generate, generateTypes as _generateTypes, } from "@bytecodealliance/jco-transpile/component";
|
|
2
|
+
export async function generate(...args) {
|
|
3
|
+
await $init;
|
|
4
|
+
return _generate(...args);
|
|
5
|
+
}
|
|
6
|
+
export async function generateTypes(...args) {
|
|
7
|
+
await $init;
|
|
8
|
+
return _generateTypes(...args);
|
|
9
|
+
}
|
|
10
|
+
// for backwards compat
|
|
11
|
+
export { generate as transpile };
|
|
12
|
+
//# sourceMappingURL=browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,KAAK,EACL,QAAQ,IAAI,SAAS,EACrB,aAAa,IAAI,cAAc,GAClC,MAAM,2CAA2C,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAG,IAAkC;IAChE,MAAM,KAAK,CAAC;IACZ,OAAO,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAG,IAAuC;IAC1E,MAAM,KAAK,CAAC;IACZ,OAAO,cAAc,CAAC,GAAG,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,uBAAuB;AACvB,OAAO,EAAE,QAAQ,IAAI,SAAS,EAAE,CAAC"}
|
package/dist/bundle.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { ExternalOption, RolldownOptions, RolldownPluginOption } from "rolldown";
|
|
2
|
+
export interface BundleComponentSourceOptions {
|
|
3
|
+
aliases?: Record<string, string | false | string[]>;
|
|
4
|
+
external?: ExternalOption[];
|
|
5
|
+
plugins?: RolldownPluginOption[];
|
|
6
|
+
config?: RolldownOptions;
|
|
7
|
+
typescript?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Classify a component source path for source preparation.
|
|
11
|
+
*
|
|
12
|
+
* @param {string} sourcePath
|
|
13
|
+
* @returns {"javascript" | "typescript" | "typescript-declaration"}
|
|
14
|
+
*/
|
|
15
|
+
export declare function classifyComponentSource(sourcePath: string): "javascript" | "typescript" | "typescript-declaration";
|
|
16
|
+
/**
|
|
17
|
+
* Load one Rolldown configuration object using Rolldown's config loader.
|
|
18
|
+
*
|
|
19
|
+
* @param {string} configPath
|
|
20
|
+
* @returns {Promise<import("rolldown").RolldownOptions>}
|
|
21
|
+
*/
|
|
22
|
+
export declare function loadBundleConfig(configPath: string): Promise<RolldownOptions>;
|
|
23
|
+
/**
|
|
24
|
+
* Bundle a JavaScript or TypeScript component entry point into the single ES
|
|
25
|
+
* module expected by ComponentizeJS.
|
|
26
|
+
*
|
|
27
|
+
* `aliases` and `plugins` are intentionally exposed for Jco-owned source
|
|
28
|
+
* adapters, such as future runtime compatibility modules. The output shape is
|
|
29
|
+
* kept internal because ComponentizeJS accepts exactly one ES module.
|
|
30
|
+
*
|
|
31
|
+
* @param {string} entryPath
|
|
32
|
+
* @param {{
|
|
33
|
+
* aliases?: Record<string, string | false | string[]>,
|
|
34
|
+
* external?: Array<string | RegExp>,
|
|
35
|
+
* plugins?: Array<import("rolldown").RolldownPluginOption>,
|
|
36
|
+
* config?: import("rolldown").RolldownOptions,
|
|
37
|
+
* typescript?: boolean,
|
|
38
|
+
* }} [options]
|
|
39
|
+
* @returns {Promise<string>}
|
|
40
|
+
*/
|
|
41
|
+
export declare function bundleComponentSource(entryPath: string, options?: BundleComponentSourceOptions): Promise<string>;
|
|
42
|
+
//# sourceMappingURL=bundle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEtF,MAAM,WAAW,4BAA4B;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC;IACpD,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACjC,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAOD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY,GAAG,wBAAwB,CAQlH;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAanF;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,qBAAqB,CACvC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,4BAAiC,GAC3C,OAAO,CAAC,MAAM,CAAC,CA2DjB"}
|
package/dist/bundle.js
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { dirname, resolve } from "node:path";
|
|
2
|
+
/** External imports that represent WebAssembly Component capabilities. */
|
|
3
|
+
const WASI_EXTERNAL = /^wasi:/;
|
|
4
|
+
const TYPESCRIPT_ENTRY = /\.(?:[cm]?ts|tsx)$/i;
|
|
5
|
+
const TYPESCRIPT_DECLARATION_ENTRY = /\.d\.(?:[cm]?ts|tsx)$/i;
|
|
6
|
+
/**
|
|
7
|
+
* Classify a component source path for source preparation.
|
|
8
|
+
*
|
|
9
|
+
* @param {string} sourcePath
|
|
10
|
+
* @returns {"javascript" | "typescript" | "typescript-declaration"}
|
|
11
|
+
*/
|
|
12
|
+
export function classifyComponentSource(sourcePath) {
|
|
13
|
+
if (TYPESCRIPT_DECLARATION_ENTRY.test(sourcePath)) {
|
|
14
|
+
return "typescript-declaration";
|
|
15
|
+
}
|
|
16
|
+
if (TYPESCRIPT_ENTRY.test(sourcePath)) {
|
|
17
|
+
return "typescript";
|
|
18
|
+
}
|
|
19
|
+
return "javascript";
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Load one Rolldown configuration object using Rolldown's config loader.
|
|
23
|
+
*
|
|
24
|
+
* @param {string} configPath
|
|
25
|
+
* @returns {Promise<import("rolldown").RolldownOptions>}
|
|
26
|
+
*/
|
|
27
|
+
export async function loadBundleConfig(configPath) {
|
|
28
|
+
const { loadConfig } = await import("rolldown/config");
|
|
29
|
+
let config = await loadConfig(resolve(configPath));
|
|
30
|
+
if (typeof config === "function") {
|
|
31
|
+
config = await config({ bundle: true });
|
|
32
|
+
}
|
|
33
|
+
if (Array.isArray(config)) {
|
|
34
|
+
throw new TypeError("Jco bundle configuration must export a single configuration object");
|
|
35
|
+
}
|
|
36
|
+
if (!config || typeof config !== "object") {
|
|
37
|
+
throw new TypeError("Jco bundle configuration must export a configuration object");
|
|
38
|
+
}
|
|
39
|
+
return config;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Bundle a JavaScript or TypeScript component entry point into the single ES
|
|
43
|
+
* module expected by ComponentizeJS.
|
|
44
|
+
*
|
|
45
|
+
* `aliases` and `plugins` are intentionally exposed for Jco-owned source
|
|
46
|
+
* adapters, such as future runtime compatibility modules. The output shape is
|
|
47
|
+
* kept internal because ComponentizeJS accepts exactly one ES module.
|
|
48
|
+
*
|
|
49
|
+
* @param {string} entryPath
|
|
50
|
+
* @param {{
|
|
51
|
+
* aliases?: Record<string, string | false | string[]>,
|
|
52
|
+
* external?: Array<string | RegExp>,
|
|
53
|
+
* plugins?: Array<import("rolldown").RolldownPluginOption>,
|
|
54
|
+
* config?: import("rolldown").RolldownOptions,
|
|
55
|
+
* typescript?: boolean,
|
|
56
|
+
* }} [options]
|
|
57
|
+
* @returns {Promise<string>}
|
|
58
|
+
*/
|
|
59
|
+
export async function bundleComponentSource(entryPath, options = {}) {
|
|
60
|
+
const { rolldown } = await import("rolldown");
|
|
61
|
+
const absoluteEntryPath = resolve(entryPath);
|
|
62
|
+
const config = options.config ?? {};
|
|
63
|
+
if (Array.isArray(config.output)) {
|
|
64
|
+
throw new TypeError("Jco bundle configuration must define at most one output");
|
|
65
|
+
}
|
|
66
|
+
const { output: configOutput, ...inputConfig } = config;
|
|
67
|
+
const configAlias = config.resolve?.alias;
|
|
68
|
+
const aliases = (Array.isArray(configAlias)
|
|
69
|
+
? [
|
|
70
|
+
...configAlias,
|
|
71
|
+
...Object.entries(options.aliases ?? {}).map(([find, replacement]) => ({ find, replacement })),
|
|
72
|
+
]
|
|
73
|
+
: { ...(configAlias ?? {}), ...(options.aliases ?? {}) });
|
|
74
|
+
const build = await rolldown({
|
|
75
|
+
...inputConfig,
|
|
76
|
+
input: absoluteEntryPath,
|
|
77
|
+
cwd: dirname(absoluteEntryPath),
|
|
78
|
+
platform: "neutral",
|
|
79
|
+
tsconfig: options.typescript ? (inputConfig.tsconfig ?? true) : inputConfig.tsconfig,
|
|
80
|
+
external: mergeExternal(config.external, options.external),
|
|
81
|
+
plugins: [config.plugins ?? [], options.plugins ?? []],
|
|
82
|
+
resolve: {
|
|
83
|
+
...config.resolve,
|
|
84
|
+
alias: aliases,
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
try {
|
|
88
|
+
const { output } = await build.generate({
|
|
89
|
+
...(configOutput ?? {}),
|
|
90
|
+
format: "esm",
|
|
91
|
+
codeSplitting: false,
|
|
92
|
+
});
|
|
93
|
+
const chunks = output.filter((item) => item.type === "chunk");
|
|
94
|
+
const assets = output.filter((item) => item.type === "asset");
|
|
95
|
+
if (assets.length > 0) {
|
|
96
|
+
throw new Error(`Component bundling produced unsupported assets: ${assets.map((asset) => asset.fileName).join(", ")}`);
|
|
97
|
+
}
|
|
98
|
+
if (chunks.length !== 1 || !chunks[0].isEntry) {
|
|
99
|
+
throw new Error(`Component bundling must produce exactly one entry chunk; received ${chunks.length} chunk(s). Dynamic or split chunks are not supported.`);
|
|
100
|
+
}
|
|
101
|
+
return chunks[0].code;
|
|
102
|
+
}
|
|
103
|
+
finally {
|
|
104
|
+
await build.close();
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function mergeExternal(configExternal, jcoExternal = []) {
|
|
108
|
+
const external = [WASI_EXTERNAL, configExternal, ...jcoExternal].filter((option) => option !== undefined);
|
|
109
|
+
return (id, parentId, isResolved) => external.some((option) => matchesExternal(option, id, parentId, isResolved));
|
|
110
|
+
}
|
|
111
|
+
function matchesExternal(option, id, parentId, isResolved) {
|
|
112
|
+
if (typeof option === "function") {
|
|
113
|
+
return option(id, parentId, isResolved) === true;
|
|
114
|
+
}
|
|
115
|
+
if (Array.isArray(option)) {
|
|
116
|
+
return option.some((item) => matchesExternal(item, id, parentId, isResolved));
|
|
117
|
+
}
|
|
118
|
+
if (typeof option === "string") {
|
|
119
|
+
return option === id;
|
|
120
|
+
}
|
|
121
|
+
option.lastIndex = 0;
|
|
122
|
+
return option.test(id);
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../src/bundle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
type ComponentizeJSBackend = "qjs" | "quickjs" | "starlingmonkey" | "sm";
|
|
2
|
+
export interface ComponentizeOptions {
|
|
3
|
+
wit: string;
|
|
4
|
+
out: string;
|
|
5
|
+
worldName?: string;
|
|
6
|
+
bundle?: boolean;
|
|
7
|
+
bundleConfig?: string;
|
|
8
|
+
backend?: ComponentizeJSBackend;
|
|
9
|
+
backendQjsDisableAysnc: boolean;
|
|
10
|
+
aot?: boolean;
|
|
11
|
+
aotMinStackSizeBytes?: number;
|
|
12
|
+
wevalBin?: string;
|
|
13
|
+
wizerBin?: string;
|
|
14
|
+
disable?: string[];
|
|
15
|
+
enable?: string[];
|
|
16
|
+
debug?: boolean;
|
|
17
|
+
preview2Adapter?: string;
|
|
18
|
+
debugStarlingmonkeyBuild?: boolean;
|
|
19
|
+
engine?: string;
|
|
20
|
+
debugBindings?: boolean;
|
|
21
|
+
debugBindingsDir?: string;
|
|
22
|
+
debugBinary?: boolean;
|
|
23
|
+
debugBinaryPath?: string;
|
|
24
|
+
debugEnableWizerLogging?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Componentize a JavaScript or TypeScript entry module against a WIT world.
|
|
28
|
+
*
|
|
29
|
+
* @param {string} jsSource
|
|
30
|
+
* @param {ComponentizeOptions} opts
|
|
31
|
+
*/
|
|
32
|
+
export declare function componentize(jsSource: string, opts: ComponentizeOptions): Promise<void>;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=componentize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"componentize.d.ts","sourceRoot":"","sources":["../../src/cmd/componentize.ts"],"names":[],"mappings":"AAcA,KAAK,qBAAqB,GAAG,KAAK,GAAG,SAAS,GAAG,gBAAgB,GAAG,IAAI,CAAC;AAEzE,MAAM,WAAW,mBAAmB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,sBAAsB,EAAE,OAAO,CAAC;IAChC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACrC;AAsED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0D7F"}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { stat, readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { resolve, basename, extname } from "node:path";
|
|
3
|
+
import { componentWitMetadataForWorld } from "@bytecodealliance/jco-transpile";
|
|
4
|
+
import { bundleComponentSource, classifyComponentSource, loadBundleConfig } from "../bundle.js";
|
|
5
|
+
import { styleText, isWindows } from "../common.js";
|
|
6
|
+
/** All features that can be enabled/disabled */
|
|
7
|
+
const ALL_FEATURES = ["clocks", "http", "random", "stdio", "fetch-event"];
|
|
8
|
+
/** Features that should be used for --debug mode */
|
|
9
|
+
const DEBUG_FEATURES = ["stdio"];
|
|
10
|
+
const COMPONENTIZE_BACKENDS = {
|
|
11
|
+
starlingmonkey: "starlingmonkey",
|
|
12
|
+
sm: "starlingmonkey",
|
|
13
|
+
quickjs: "quickjs",
|
|
14
|
+
qjs: "quickjs",
|
|
15
|
+
};
|
|
16
|
+
const STARLINGMONKEY_OPTIONS = [
|
|
17
|
+
"aot",
|
|
18
|
+
"aotMinStackSizeBytes",
|
|
19
|
+
"wevalBin",
|
|
20
|
+
"disable",
|
|
21
|
+
"enable",
|
|
22
|
+
"debug",
|
|
23
|
+
"preview2Adapter",
|
|
24
|
+
"debugStarlingmonkeyBuild",
|
|
25
|
+
"engine",
|
|
26
|
+
"debugBindings",
|
|
27
|
+
"debugBindingsDir",
|
|
28
|
+
"debugBinary",
|
|
29
|
+
"debugBinaryPath",
|
|
30
|
+
"debugEnableWizerLogging",
|
|
31
|
+
];
|
|
32
|
+
/**
|
|
33
|
+
* Detect whether the WIT of a given component contains an older version of
|
|
34
|
+
* `wasi:http` which necessitates an older version of `componentize-js`
|
|
35
|
+
*
|
|
36
|
+
* @param {string} witPath
|
|
37
|
+
* @returns bool
|
|
38
|
+
*/
|
|
39
|
+
async function usesOlderWasiHTTP(witPath, worldName) {
|
|
40
|
+
witPath = (isWindows ? "//?/" : "") + resolve(witPath);
|
|
41
|
+
const worldMetadata = await componentWitMetadataForWorld({ tag: "path", val: witPath }, worldName);
|
|
42
|
+
// Check if the an old `wasi:http/incoming-handler` version is exported
|
|
43
|
+
const exportsOldIncomingHandler = worldMetadata.exports.some((iface) => {
|
|
44
|
+
return (iface.namespace === "wasi" &&
|
|
45
|
+
iface.version != null &&
|
|
46
|
+
iface.version.major === 0n &&
|
|
47
|
+
iface.version.minor < 3n &&
|
|
48
|
+
iface.version.patch < 10n);
|
|
49
|
+
});
|
|
50
|
+
const importsOldFetch = worldMetadata.imports.some((iface) => {
|
|
51
|
+
return (iface.namespace === "wasi" &&
|
|
52
|
+
iface.version != null &&
|
|
53
|
+
iface.version.major === 0n &&
|
|
54
|
+
iface.version.minor < 3n &&
|
|
55
|
+
iface.version.patch < 10n);
|
|
56
|
+
});
|
|
57
|
+
return exportsOldIncomingHandler || importsOldFetch;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Componentize a JavaScript or TypeScript entry module against a WIT world.
|
|
61
|
+
*
|
|
62
|
+
* @param {string} jsSource
|
|
63
|
+
* @param {ComponentizeOptions} opts
|
|
64
|
+
*/
|
|
65
|
+
export async function componentize(jsSource, opts) {
|
|
66
|
+
// normalize the backend option
|
|
67
|
+
const backend = normalizeBackend(opts.backend);
|
|
68
|
+
validateBackendOptions(backend, opts);
|
|
69
|
+
// Detect source code type
|
|
70
|
+
const sourceType = classifyComponentSource(jsSource);
|
|
71
|
+
if (sourceType === "typescript-declaration") {
|
|
72
|
+
throw new Error(`TypeScript declaration files cannot be componentized directly: ${jsSource}. Provide a .ts, .mts, .cts, or .tsx entry module instead.`);
|
|
73
|
+
}
|
|
74
|
+
const isTypeScript = sourceType === "typescript";
|
|
75
|
+
const shouldBundle = opts.bundle === true || isTypeScript;
|
|
76
|
+
// Perform bundling
|
|
77
|
+
if (opts.bundleConfig && !shouldBundle) {
|
|
78
|
+
throw new Error("--bundle-config requires --bundle");
|
|
79
|
+
}
|
|
80
|
+
const bundleConfig = opts.bundleConfig ? await loadBundleConfig(opts.bundleConfig) : undefined;
|
|
81
|
+
const source = shouldBundle
|
|
82
|
+
? await bundleComponentSource(jsSource, { config: bundleConfig, typescript: isTypeScript })
|
|
83
|
+
: await readFile(jsSource, "utf8");
|
|
84
|
+
const witPath = resolve(opts.wit);
|
|
85
|
+
const sourceName = isTypeScript ? `${basename(jsSource, extname(jsSource))}.js` : basename(jsSource);
|
|
86
|
+
// Build the component
|
|
87
|
+
let component;
|
|
88
|
+
const backendArgs = { source, sourceName, jsSource, witPath, opts };
|
|
89
|
+
try {
|
|
90
|
+
switch (backend) {
|
|
91
|
+
case "quickjs":
|
|
92
|
+
component = await componentizeQJS(backendArgs);
|
|
93
|
+
break;
|
|
94
|
+
case "starlingmonkey":
|
|
95
|
+
component = await componentizeCJS(backendArgs);
|
|
96
|
+
break;
|
|
97
|
+
default:
|
|
98
|
+
throw new Error(`unrecognized componentization backend [${backend}]`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
// Detect package resolution issues that usually mean a misconfigured "witPath"
|
|
103
|
+
if (err instanceof Error && err.toString().includes("no known packages")) {
|
|
104
|
+
const isFile = await stat(witPath).then((s) => s.isFile());
|
|
105
|
+
if (isFile) {
|
|
106
|
+
const hint = await printWITPathHint(witPath);
|
|
107
|
+
if (err.message) {
|
|
108
|
+
err.message += `\n${hint}`;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
throw err;
|
|
113
|
+
}
|
|
114
|
+
// Write out the component
|
|
115
|
+
await writeFile(opts.out, component);
|
|
116
|
+
console.log(`${styleText("green", "OK")} Successfully written ${styleText("bold", opts.out)}.`);
|
|
117
|
+
}
|
|
118
|
+
function normalizeBackend(backend = "starlingmonkey") {
|
|
119
|
+
const normalized = COMPONENTIZE_BACKENDS[backend];
|
|
120
|
+
if (!normalized) {
|
|
121
|
+
throw new Error(`Unknown componentization backend "${backend}". Expected one of: starlingmonkey, sm, quickjs, qjs.`);
|
|
122
|
+
}
|
|
123
|
+
return normalized;
|
|
124
|
+
}
|
|
125
|
+
function validateBackendOptions(backend, opts) {
|
|
126
|
+
if (backend === "starlingmonkey") {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const incompatible = STARLINGMONKEY_OPTIONS.filter((option) => opts[option] !== undefined);
|
|
130
|
+
if (incompatible.length > 0) {
|
|
131
|
+
throw new Error(`The ${incompatible.map((option) => `--${option.replace(/[A-Z]/g, (letter) => `-${letter.toLowerCase()}`)}`).join(", ")} option${incompatible.length === 1 ? " is" : "s are"} only supported by the starlingmonkey backend.`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Print a hint about the witPath option that may be incorrect
|
|
136
|
+
*
|
|
137
|
+
* @param {string} witPath - witPath option that was used (which is a path that resolves to a file or directory)
|
|
138
|
+
* @returns {string} user-visible, highlighted output that can be printed
|
|
139
|
+
*/
|
|
140
|
+
async function printWITPathHint(witPath) {
|
|
141
|
+
const warningPrefix = styleText(["yellow", "bold"], "warning");
|
|
142
|
+
const pathMeta = await stat(witPath);
|
|
143
|
+
let output = "\n";
|
|
144
|
+
if (!pathMeta.isFile() && !pathMeta.isDirectory()) {
|
|
145
|
+
output += `${warningPrefix} The supplited WIT path [${witPath}] is neither a file or directory.\n`;
|
|
146
|
+
return output;
|
|
147
|
+
}
|
|
148
|
+
output += `${warningPrefix} Your WIT path option [${witPath}] may be incorrect\n`;
|
|
149
|
+
output += `${warningPrefix} When using a world with dependencies, you must pass the enclosing WIT folder, not a single file.\n`;
|
|
150
|
+
output += `${warningPrefix} (e.g. 'wit/', rather than 'wit/component.wit').\n`;
|
|
151
|
+
return output;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Build set of disabled features
|
|
155
|
+
*
|
|
156
|
+
* At present, `componentize-js` does not use enabled features but exclusively
|
|
157
|
+
* takes into account disabled features.
|
|
158
|
+
*
|
|
159
|
+
* @param {{ debug: boolean, disable: string[], enable: string[] }} opts
|
|
160
|
+
* @returns {{ disableFeatures: string[], enableFeatures: string[] }}
|
|
161
|
+
*/
|
|
162
|
+
function calculateFeatureSet(opts) {
|
|
163
|
+
const disableFeatures = new Set(opts?.debug ? DEBUG_FEATURES : []);
|
|
164
|
+
const disable = opts?.disable ?? [];
|
|
165
|
+
const enable = opts?.enable ?? [];
|
|
166
|
+
// Process disabled features
|
|
167
|
+
if (disable.includes("all")) {
|
|
168
|
+
ALL_FEATURES.forEach((v) => disableFeatures.add(v));
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
disable.forEach((v) => disableFeatures.add(v));
|
|
172
|
+
}
|
|
173
|
+
// Process enabled features
|
|
174
|
+
if (enable.includes("all")) {
|
|
175
|
+
ALL_FEATURES.forEach((v) => disableFeatures.delete(v));
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
enable.forEach((v) => disableFeatures.delete(v));
|
|
179
|
+
}
|
|
180
|
+
return {
|
|
181
|
+
disableFeatures: [...disableFeatures],
|
|
182
|
+
enableFeatures: ALL_FEATURES.filter((v) => !disableFeatures.has(v)),
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
/** Componentize with componentize-qjs (QuickJS) */
|
|
186
|
+
async function componentizeQJS(args) {
|
|
187
|
+
const { source, jsSource, opts, witPath } = args;
|
|
188
|
+
const componentizeQJSModule = await eval('import("componentize-qjs")');
|
|
189
|
+
const result = await componentizeQJSModule.componentize({
|
|
190
|
+
witPath,
|
|
191
|
+
jsSource: source,
|
|
192
|
+
jsPath: resolve(jsSource),
|
|
193
|
+
world: opts.worldName,
|
|
194
|
+
sync: opts.backendQjsDisableAysnc,
|
|
195
|
+
});
|
|
196
|
+
return result.component;
|
|
197
|
+
}
|
|
198
|
+
/** Componentize with componentize-js (StarlingMonkey) */
|
|
199
|
+
async function componentizeCJS(args) {
|
|
200
|
+
const { opts, sourceName, source, witPath } = args;
|
|
201
|
+
const { disableFeatures, enableFeatures } = calculateFeatureSet(opts);
|
|
202
|
+
// Load an older version of componentize-js if we detect an older version of WASI HTTP in use
|
|
203
|
+
// as the version that is usable is baked into the StarlingMonkey version provided by a given version
|
|
204
|
+
// of componentize-js
|
|
205
|
+
let componentizeJSModule;
|
|
206
|
+
const useOldComponentizeJS = await usesOlderWasiHTTP(witPath, opts.worldName);
|
|
207
|
+
if (useOldComponentizeJS) {
|
|
208
|
+
// NOTE: if we were to use a version of componentize-js 0.20.0 or newer here,
|
|
209
|
+
// the build would fail, as newer versions do not support wasi:http < 0.2.10
|
|
210
|
+
// for fetch.
|
|
211
|
+
console.error(`${styleText(["yellow", "bold"], "warning")} Falling back to componentize-js 0.19.3 because this component requests Preview 2 WASI packages older than 0.2.10. See https://bytecodealliance.github.io/jco/troubleshooting/common-issues.html#componentize-js-0193-fallback for details and upgrade steps.`);
|
|
212
|
+
componentizeJSModule = await eval('import("@bytecodealliance/componentize-js-0-19-3")');
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
componentizeJSModule = await eval('import("@bytecodealliance/componentize-js")');
|
|
216
|
+
}
|
|
217
|
+
const result = await componentizeJSModule.componentize(source, {
|
|
218
|
+
enableAot: opts.aot,
|
|
219
|
+
aotMinStackSizeBytes: opts.aotMinStackSizeBytes,
|
|
220
|
+
wevalBin: opts.wevalBin,
|
|
221
|
+
wizerBin: opts.wizerBin,
|
|
222
|
+
sourceName,
|
|
223
|
+
witPath,
|
|
224
|
+
worldName: opts.worldName,
|
|
225
|
+
disableFeatures,
|
|
226
|
+
enableFeatures,
|
|
227
|
+
preview2Adapter: opts.preview2Adapter,
|
|
228
|
+
debugBuild: opts.debugStarlingmonkeyBuild,
|
|
229
|
+
engine: opts.engine,
|
|
230
|
+
debug: {
|
|
231
|
+
bindings: opts.debugBindings,
|
|
232
|
+
bindingsDir: opts.debugBindingsDir,
|
|
233
|
+
binary: opts.debugBinary,
|
|
234
|
+
binaryPath: opts.debugBinaryPath,
|
|
235
|
+
enableWizerLogging: opts.debugEnableWizerLogging,
|
|
236
|
+
},
|
|
237
|
+
});
|
|
238
|
+
if (result.debug) {
|
|
239
|
+
console.error(`${styleText("cyan", "DEBUG")} Debug output\n${JSON.stringify(result.debug, null, 2)}\n`);
|
|
240
|
+
}
|
|
241
|
+
return result.component;
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=componentize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"componentize.js","sourceRoot":"","sources":["../../src/cmd/componentize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAE/E,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChG,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpD,gDAAgD;AAChD,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;AAE1E,oDAAoD;AACpD,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,CAAC;AAsCjC,MAAM,qBAAqB,GAA0C;IACjE,cAAc,EAAE,gBAAgB;IAChC,EAAE,EAAE,gBAAgB;IACpB,OAAO,EAAE,SAAS;IAClB,GAAG,EAAE,SAAS;CACjB,CAAC;AAEF,MAAM,sBAAsB,GAAqC;IAC7D,KAAK;IACL,sBAAsB;IACtB,UAAU;IACV,SAAS;IACT,QAAQ;IACR,OAAO;IACP,iBAAiB;IACjB,0BAA0B;IAC1B,QAAQ;IACR,eAAe;IACf,kBAAkB;IAClB,aAAa;IACb,iBAAiB;IACjB,yBAAyB;CAC5B,CAAC;AAEF;;;;;;GAMG;AACH,KAAK,UAAU,iBAAiB,CAAC,OAAe,EAAE,SAAkB;IAChE,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,MAAM,4BAA4B,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IAEnG,uEAAuE;IACvE,MAAM,yBAAyB,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QACnE,OAAO,CACH,KAAK,CAAC,SAAS,KAAK,MAAM;YAC1B,KAAK,CAAC,OAAO,IAAI,IAAI;YACrB,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE;YAC1B,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE;YACxB,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG,CAC5B,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QACzD,OAAO,CACH,KAAK,CAAC,SAAS,KAAK,MAAM;YAC1B,KAAK,CAAC,OAAO,IAAI,IAAI;YACrB,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE;YAC1B,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE;YACxB,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG,CAC5B,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,OAAO,yBAAyB,IAAI,eAAe,CAAC;AACxD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,IAAyB;IAC1E,+BAA+B;IAC/B,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAEtC,0BAA0B;IAC1B,MAAM,UAAU,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,UAAU,KAAK,wBAAwB,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACX,kEAAkE,QAAQ,4DAA4D,CACzI,CAAC;IACN,CAAC;IACD,MAAM,YAAY,GAAG,UAAU,KAAK,YAAY,CAAC;IACjD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,YAAY,CAAC;IAE1D,mBAAmB;IACnB,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/F,MAAM,MAAM,GAAG,YAAY;QACvB,CAAC,CAAC,MAAM,qBAAqB,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC;QAC3F,CAAC,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAErG,sBAAsB;IACtB,IAAI,SAAS,CAAC;IACd,MAAM,WAAW,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACpE,IAAI,CAAC;QACD,QAAQ,OAAO,EAAE,CAAC;YACd,KAAK,SAAS;gBACV,SAAS,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;gBAC/C,MAAM;YACV,KAAK,gBAAgB;gBACjB,SAAS,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;gBAC/C,MAAM;YACV;gBACI,MAAM,IAAI,KAAK,CAAC,0CAA0C,OAAO,GAAG,CAAC,CAAC;QAC9E,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,+EAA+E;QAC/E,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACvE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3D,IAAI,MAAM,EAAE,CAAC;gBACT,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBAC7C,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oBACd,GAAG,CAAC,OAAO,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC/B,CAAC;YACL,CAAC;QACL,CAAC;QACD,MAAM,GAAG,CAAC;IACd,CAAC;IAED,0BAA0B;IAC1B,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAErC,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,yBAAyB,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpG,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAO,GAAG,gBAAgB;IAChD,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACX,qCAAqC,OAAO,uDAAuD,CACtG,CAAC;IACN,CAAC;IACD,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,SAAS,sBAAsB,CAAC,OAA8B,EAAE,IAAyB;IACrF,IAAI,OAAO,KAAK,gBAAgB,EAAE,CAAC;QAC/B,OAAO;IACX,CAAC;IAED,MAAM,YAAY,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC;IAC3F,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACX,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,gDAAgD,CAC/N,CAAC;IACN,CAAC;AACL,CAAC;AACD;;;;;GAKG;AACH,KAAK,UAAU,gBAAgB,CAAC,OAAe;IAC3C,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,aAAa,4BAA4B,OAAO,qCAAqC,CAAC;QACnG,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,MAAM,IAAI,GAAG,aAAa,0BAA0B,OAAO,sBAAsB,CAAC;IAClF,MAAM,IAAI,GAAG,aAAa,qGAAqG,CAAC;IAChI,MAAM,IAAI,GAAG,aAAa,oDAAoD,CAAC;IAC/E,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,mBAAmB,CAAC,IAAyB;IAClD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC;IAElC,4BAA4B;IAC5B,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;SAAM,CAAC;QACJ,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,2BAA2B;IAC3B,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACJ,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,OAAO;QACH,eAAe,EAAE,CAAC,GAAG,eAAe,CAAC;QACrC,cAAc,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACtE,CAAC;AACN,CAAC;AAED,mDAAmD;AACnD,KAAK,UAAU,eAAe,CAAC,IAA6B;IACxD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACjD,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,YAAY,CAAC;QACpD,OAAO;QACP,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC;QACzB,KAAK,EAAE,IAAI,CAAC,SAAS;QACrB,IAAI,EAAE,IAAI,CAAC,sBAAsB;KACpC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,SAAS,CAAC;AAC5B,CAAC;AAED,yDAAyD;AACzD,KAAK,UAAU,eAAe,CAAC,IAA6B;IACxD,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACnD,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACtE,6FAA6F;IAC7F,qGAAqG;IACrG,qBAAqB;IACrB,IAAI,oBAAoB,CAAC;IACzB,MAAM,oBAAoB,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9E,IAAI,oBAAoB,EAAE,CAAC;QACvB,6EAA6E;QAC7E,4EAA4E;QAC5E,aAAa;QACb,OAAO,CAAC,KAAK,CACT,GAAG,SAAS,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,+PAA+P,CAC7S,CAAC;QACF,oBAAoB,GAAG,MAAM,IAAI,CAAC,oDAAoD,CAAC,CAAC;IAC5F,CAAC;SAAM,CAAC;QACJ,oBAAoB,GAAG,MAAM,IAAI,CAAC,6CAA6C,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,YAAY,CAAC,MAAM,EAAE;QAC3D,SAAS,EAAE,IAAI,CAAC,GAAG;QACnB,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;QAC/C,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU;QACV,OAAO;QACP,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,eAAe;QACf,cAAc;QACd,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,UAAU,EAAE,IAAI,CAAC,wBAAwB;QACzC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE;YACH,QAAQ,EAAE,IAAI,CAAC,aAAa;YAC5B,WAAW,EAAE,IAAI,CAAC,gBAAgB;YAClC,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,UAAU,EAAE,IAAI,CAAC,eAAe;YAChC,kBAAkB,EAAE,IAAI,CAAC,uBAAuB;SACnD;KACJ,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5G,CAAC;IAED,OAAO,MAAM,CAAC,SAAS,CAAC;AAC5B,CAAC"}
|
|
@@ -1,20 +1,25 @@
|
|
|
1
|
-
export
|
|
2
|
-
/**
|
|
3
|
-
*
|
|
4
|
-
* @param {Uint8Array} componentBytes
|
|
5
|
-
* @param {{ quiet: boolean, asyncify?: boolean, optArgs?: string[], noVerify?: boolean }} opts?
|
|
6
|
-
* @returns {Promise<{ component: Uint8Array, compressionInfo: { beforeBytes: number, afterBytes: number }[] >}
|
|
7
|
-
*/
|
|
8
|
-
export function optimizeComponent(componentBytes: Uint8Array, opts: {
|
|
1
|
+
export interface OptimizeOptions {
|
|
9
2
|
quiet: boolean;
|
|
10
3
|
asyncify?: boolean;
|
|
11
4
|
optArgs?: string[];
|
|
12
5
|
noVerify?: boolean;
|
|
13
|
-
|
|
6
|
+
wasmOptBin?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface OptimizeResult {
|
|
14
9
|
component: Uint8Array;
|
|
15
|
-
compressionInfo: {
|
|
10
|
+
compressionInfo: Array<{
|
|
16
11
|
beforeBytes: number;
|
|
17
12
|
afterBytes: number;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
13
|
+
}>;
|
|
14
|
+
}
|
|
15
|
+
export declare function opt(componentPath: string, opts: OptimizeOptions & {
|
|
16
|
+
output: string;
|
|
17
|
+
}, program: any): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
*
|
|
20
|
+
* @param {Uint8Array} componentBytes
|
|
21
|
+
* @param {{ quiet: boolean, asyncify?: boolean, optArgs?: string[], noVerify?: boolean }} opts?
|
|
22
|
+
* @returns {Promise<{ component: Uint8Array, compressionInfo: { beforeBytes: number, afterBytes: number }[] >}
|
|
23
|
+
*/
|
|
24
|
+
export declare function optimizeComponent(componentBytes: Uint8Array, opts: OptimizeOptions): Promise<OptimizeResult>;
|
|
20
25
|
//# sourceMappingURL=opt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opt.d.ts","sourceRoot":"","sources":["../../src/cmd/opt.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC3B,SAAS,EAAE,UAAU,CAAC;IACtB,eAAe,EAAE,KAAK,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;CACN;AAED,wBAAsB,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,OAAO,EAAE,GAAG,iBAkDxG;AAgBD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CA6JlH"}
|