@componentonce/compiler-esbuild 0.1.0-beta.0 → 0.1.0-beta.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/README.md +103 -15
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +171 -0
- package/dist/cli.js.map +1 -0
- package/dist/compiler.d.ts +141 -0
- package/dist/compiler.d.ts.map +1 -0
- package/dist/compiler.js +296 -0
- package/dist/compiler.js.map +1 -0
- package/dist/index.d.ts +2 -136
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -289
- package/dist/index.js.map +1 -1
- package/dist/package.d.ts +88 -0
- package/dist/package.d.ts.map +1 -0
- package/dist/package.js +229 -0
- package/dist/package.js.map +1 -0
- package/examples/react-card.tsx +31 -0
- package/package.json +22 -2
package/README.md
CHANGED
|
@@ -1,31 +1,119 @@
|
|
|
1
1
|
# @componentonce/compiler-esbuild
|
|
2
2
|
|
|
3
|
-
Optional trusted compiler
|
|
3
|
+
Optional trusted compiler, packager, and evaluator tooling for ComponentOnce.
|
|
4
4
|
|
|
5
|
-
This package is not part of the core runtime ABI
|
|
5
|
+
This package is not part of the core runtime ABI. It owns no storage or transport.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## CLI: source file to self-describing package
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Install the renderer adapter you use plus this compiler, then:
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
```sh
|
|
12
|
+
componentonce build ./src/amount-card.tsx \
|
|
13
|
+
--renderer react \
|
|
14
|
+
--out ./dist/amount-card.componentonce.json
|
|
15
|
+
```
|
|
12
16
|
|
|
13
|
-
|
|
17
|
+
The default renderer is `react`, so this is also valid:
|
|
14
18
|
|
|
15
|
-
|
|
19
|
+
```sh
|
|
20
|
+
componentonce build ./src/amount-card.tsx
|
|
21
|
+
```
|
|
16
22
|
|
|
17
|
-
|
|
18
|
-
- react/jsx-runtime
|
|
19
|
-
- react/jsx-dev-runtime
|
|
23
|
+
Useful options:
|
|
20
24
|
|
|
21
|
-
|
|
25
|
+
```text
|
|
26
|
+
--renderer <id> Renderer id recorded in the package
|
|
27
|
+
-o, --out <file> Output JSON package
|
|
28
|
+
--export <name> Definition export name (default: definition)
|
|
29
|
+
--external <name> Additional host module kept external and loaded for trusted build discovery
|
|
30
|
+
```
|
|
22
31
|
|
|
23
|
-
|
|
32
|
+
React builds automatically externalize `react`, the JSX runtimes, and `@componentonce/react`. DOM builds automatically externalize `@componentonce/dom`. Relative imports are bundled from the entry file directory; undeclared package imports still fail rather than being silently pulled from the compiler process.
|
|
24
33
|
|
|
25
|
-
|
|
34
|
+
The source module normally exports one definition:
|
|
26
35
|
|
|
27
|
-
|
|
36
|
+
```tsx
|
|
37
|
+
import {
|
|
38
|
+
createReactRequirement,
|
|
39
|
+
defineReactComponent,
|
|
40
|
+
} from "@componentonce/react";
|
|
28
41
|
|
|
29
|
-
|
|
42
|
+
export const definition = defineReactComponent<Props, HostContext, Payload>({
|
|
43
|
+
manifest: {
|
|
44
|
+
id: "example/amount-card",
|
|
45
|
+
version: "1.0.0",
|
|
46
|
+
requirements: [createReactRequirement("19.3.0")],
|
|
47
|
+
},
|
|
48
|
+
component({ props, context, payload }) {
|
|
49
|
+
return <strong>{props.label}: {context.formatAmount(payload.amount)}</strong>;
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
The high-level builder evaluates trusted source once during build to discover the exported manifest. The resulting package stores that manifest next to the bundle, so catalogs can inspect identity, version, and requirements without executing the component.
|
|
55
|
+
|
|
56
|
+
## Programmatic packaging
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
import * as React from "react";
|
|
60
|
+
import * as jsxRuntime from "react/jsx-runtime";
|
|
61
|
+
import * as ComponentOnceReact from "@componentonce/react";
|
|
62
|
+
import {
|
|
63
|
+
buildTrustedReactPackage,
|
|
64
|
+
serializeTrustedComponentPackage,
|
|
65
|
+
} from "@componentonce/compiler-esbuild";
|
|
66
|
+
|
|
67
|
+
const componentPackage = await buildTrustedReactPackage({
|
|
68
|
+
source,
|
|
69
|
+
sourceFileName: "amount-card.tsx",
|
|
70
|
+
resolveDir: sourceDirectory,
|
|
71
|
+
externals: {
|
|
72
|
+
react: React,
|
|
73
|
+
"react/jsx-runtime": jsxRuntime,
|
|
74
|
+
"@componentonce/react": ComponentOnceReact,
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
await store.put(
|
|
79
|
+
componentPackage.manifest.id,
|
|
80
|
+
serializeTrustedComponentPackage(componentPackage),
|
|
81
|
+
);
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
At runtime:
|
|
85
|
+
|
|
86
|
+
```ts
|
|
87
|
+
import {
|
|
88
|
+
instantiateTrustedComponentPackage,
|
|
89
|
+
parseTrustedComponentPackage,
|
|
90
|
+
} from "@componentonce/compiler-esbuild";
|
|
91
|
+
|
|
92
|
+
const componentPackage = parseTrustedComponentPackage(await store.get(...));
|
|
93
|
+
|
|
94
|
+
console.log(componentPackage.manifest); // no component execution
|
|
95
|
+
|
|
96
|
+
const definition = instantiateTrustedComponentPackage(componentPackage, {
|
|
97
|
+
externals: {
|
|
98
|
+
react: React,
|
|
99
|
+
"react/jsx-runtime": jsxRuntime,
|
|
100
|
+
"@componentonce/react": ComponentOnceReact,
|
|
101
|
+
},
|
|
102
|
+
});
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Instantiation verifies that the definition inside the executable bundle still has the same manifest as the package envelope.
|
|
106
|
+
|
|
107
|
+
## Low-level compilation
|
|
108
|
+
|
|
109
|
+
`compileTrustedModule` compiles JavaScript/TypeScript into an immutable CommonJS artifact. Caller-declared package imports remain external. Relative imports can be bundled when `resolveDir` is supplied.
|
|
110
|
+
|
|
111
|
+
`compileTrustedReactModule` adds automatic JSX transformation and React/JSX host externals while still never bundling React.
|
|
112
|
+
|
|
113
|
+
Artifacts contain deterministic bundle text, byte length, SHA-256 hash/integrity, normalized diagnostics, exact external imports, and esbuild metafile data.
|
|
114
|
+
|
|
115
|
+
## Trust model
|
|
116
|
+
|
|
117
|
+
`instantiateTrustedBundle` deliberately uses `new Function` with a narrow injected require map. It is for trusted internal code and is not a security sandbox.
|
|
30
118
|
|
|
31
119
|
esbuild transpiles TypeScript syntax but does not perform semantic type checking; hosts that need that guarantee should run their TypeScript checker separately.
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AA2BA,oFAAoF;AACpF,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDhF"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { mkdir, readFile, writeFile } from "node:fs/promises";
|
|
3
|
+
import { createRequire } from "node:module";
|
|
4
|
+
import { basename, dirname, extname, resolve } from "node:path";
|
|
5
|
+
import { pathToFileURL } from "node:url";
|
|
6
|
+
import { buildTrustedDefinitionPackage, buildTrustedReactPackage, serializeTrustedComponentPackage, } from "./package.js";
|
|
7
|
+
const REACT_HOST_EXTERNALS = [
|
|
8
|
+
"react",
|
|
9
|
+
"react/jsx-runtime",
|
|
10
|
+
"react/jsx-dev-runtime",
|
|
11
|
+
"@componentonce/react",
|
|
12
|
+
];
|
|
13
|
+
const DOM_HOST_EXTERNALS = ["@componentonce/dom"];
|
|
14
|
+
/** Run the ComponentOnce command line interface with ordinary process arguments. */
|
|
15
|
+
export async function runComponentOnceCli(args) {
|
|
16
|
+
if (args.length === 0 || args.includes("--help") || args.includes("-h")) {
|
|
17
|
+
process.stdout.write(usage());
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
if (args[0] !== "build") {
|
|
21
|
+
throw new Error("Unknown command \"" + String(args[0]) + "\".\n\n" + usage());
|
|
22
|
+
}
|
|
23
|
+
const options = parseBuildArgs(args.slice(1));
|
|
24
|
+
const entryPath = resolve(options.entry);
|
|
25
|
+
const source = await readFile(entryPath, "utf8");
|
|
26
|
+
const sourceDir = dirname(entryPath);
|
|
27
|
+
const externalNames = uniqueStrings([
|
|
28
|
+
...(options.renderer === "react" ? REACT_HOST_EXTERNALS : []),
|
|
29
|
+
...(options.renderer === "dom" ? DOM_HOST_EXTERNALS : []),
|
|
30
|
+
...options.externalModules,
|
|
31
|
+
]);
|
|
32
|
+
const externals = await loadExternals(externalNames, sourceDir);
|
|
33
|
+
const componentPackage = options.renderer === "react"
|
|
34
|
+
? await buildTrustedReactPackage({
|
|
35
|
+
source,
|
|
36
|
+
sourceFileName: basename(entryPath),
|
|
37
|
+
resolveDir: sourceDir,
|
|
38
|
+
externals,
|
|
39
|
+
...(options.definitionExport === undefined
|
|
40
|
+
? {}
|
|
41
|
+
: { definitionExport: options.definitionExport }),
|
|
42
|
+
})
|
|
43
|
+
: await buildTrustedDefinitionPackage({
|
|
44
|
+
source,
|
|
45
|
+
sourceFileName: basename(entryPath),
|
|
46
|
+
resolveDir: sourceDir,
|
|
47
|
+
renderer: options.renderer,
|
|
48
|
+
externals,
|
|
49
|
+
...(options.definitionExport === undefined
|
|
50
|
+
? {}
|
|
51
|
+
: { definitionExport: options.definitionExport }),
|
|
52
|
+
});
|
|
53
|
+
const outPath = resolve(options.out);
|
|
54
|
+
await mkdir(dirname(outPath), { recursive: true });
|
|
55
|
+
await writeFile(outPath, serializeTrustedComponentPackage(componentPackage) + "\n", "utf8");
|
|
56
|
+
process.stdout.write("Built " +
|
|
57
|
+
componentPackage.manifest.id +
|
|
58
|
+
"@" +
|
|
59
|
+
componentPackage.manifest.version +
|
|
60
|
+
" (" +
|
|
61
|
+
componentPackage.renderer +
|
|
62
|
+
") -> " +
|
|
63
|
+
outPath +
|
|
64
|
+
"\n");
|
|
65
|
+
}
|
|
66
|
+
function parseBuildArgs(args) {
|
|
67
|
+
const entry = args[0];
|
|
68
|
+
if (entry === undefined || entry.startsWith("-")) {
|
|
69
|
+
throw new Error("componentonce build requires an entry source file.\n\n" + usage());
|
|
70
|
+
}
|
|
71
|
+
let renderer = "react";
|
|
72
|
+
let out;
|
|
73
|
+
let definitionExport;
|
|
74
|
+
const externalModules = [];
|
|
75
|
+
for (let index = 1; index < args.length; index += 1) {
|
|
76
|
+
const arg = args[index];
|
|
77
|
+
switch (arg) {
|
|
78
|
+
case "--renderer": {
|
|
79
|
+
renderer = requireOptionValue(args, ++index, "--renderer");
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
case "--out":
|
|
83
|
+
case "-o": {
|
|
84
|
+
out = requireOptionValue(args, ++index, String(arg));
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
case "--export": {
|
|
88
|
+
definitionExport = requireOptionValue(args, ++index, "--export");
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
case "--external": {
|
|
92
|
+
externalModules.push(requireOptionValue(args, ++index, "--external"));
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
default:
|
|
96
|
+
throw new Error("Unknown build option \"" + String(arg) + "\".\n\n" + usage());
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
entry,
|
|
101
|
+
renderer,
|
|
102
|
+
out: out ?? defaultOutputPath(entry),
|
|
103
|
+
...(definitionExport === undefined ? {} : { definitionExport }),
|
|
104
|
+
externalModules,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function requireOptionValue(args, index, option) {
|
|
108
|
+
const value = args[index];
|
|
109
|
+
if (value === undefined || value.startsWith("-")) {
|
|
110
|
+
throw new Error(option + " requires a value.");
|
|
111
|
+
}
|
|
112
|
+
return value;
|
|
113
|
+
}
|
|
114
|
+
function defaultOutputPath(entry) {
|
|
115
|
+
const extension = extname(entry);
|
|
116
|
+
const base = extension === "" ? entry : entry.slice(0, -extension.length);
|
|
117
|
+
return base + ".componentonce.json";
|
|
118
|
+
}
|
|
119
|
+
async function loadExternals(specifiers, sourceDir) {
|
|
120
|
+
const resolver = createRequire(pathToFileURL(resolve(sourceDir, "__componentonce_resolve__.mjs")));
|
|
121
|
+
const externals = {};
|
|
122
|
+
for (const specifier of specifiers) {
|
|
123
|
+
externals[specifier] = await loadExternal(specifier, resolver);
|
|
124
|
+
}
|
|
125
|
+
return externals;
|
|
126
|
+
}
|
|
127
|
+
async function loadExternal(specifier, resolver) {
|
|
128
|
+
try {
|
|
129
|
+
return resolver(specifier);
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
if (!canRetryAsEsm(error))
|
|
133
|
+
throw error;
|
|
134
|
+
return import(specifier);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
function canRetryAsEsm(error) {
|
|
138
|
+
if (typeof error !== "object" || error === null || !("code" in error))
|
|
139
|
+
return false;
|
|
140
|
+
const code = error.code;
|
|
141
|
+
return code === "ERR_REQUIRE_ESM" || code === "ERR_PACKAGE_PATH_NOT_EXPORTED";
|
|
142
|
+
}
|
|
143
|
+
function uniqueStrings(values) {
|
|
144
|
+
return [...new Set(values)];
|
|
145
|
+
}
|
|
146
|
+
function usage() {
|
|
147
|
+
return [
|
|
148
|
+
"ComponentOnce trusted component builder",
|
|
149
|
+
"",
|
|
150
|
+
"Usage:",
|
|
151
|
+
" componentonce build <entry> [options]",
|
|
152
|
+
"",
|
|
153
|
+
"Options:",
|
|
154
|
+
" --renderer <id> Renderer id recorded in the package (default: react)",
|
|
155
|
+
" -o, --out <file> Output JSON package (default: <entry>.componentonce.json)",
|
|
156
|
+
" --export <name> Definition export name (default: definition)",
|
|
157
|
+
" --external <name> Host module to keep external and load for trusted build-time discovery",
|
|
158
|
+
" -h, --help Show this help",
|
|
159
|
+
"",
|
|
160
|
+
"React builds automatically externalize react, JSX runtimes, and @componentonce/react.",
|
|
161
|
+
"DOM builds automatically externalize @componentonce/dom.",
|
|
162
|
+
"Relative imports are bundled from the entry file directory.",
|
|
163
|
+
"",
|
|
164
|
+
].join("\n");
|
|
165
|
+
}
|
|
166
|
+
runComponentOnceCli(process.argv.slice(2)).catch((error) => {
|
|
167
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
168
|
+
process.stderr.write("componentonce: " + message + "\n");
|
|
169
|
+
process.exitCode = 1;
|
|
170
|
+
});
|
|
171
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { type Metafile } from "esbuild";
|
|
2
|
+
/** Stable identifier for the trusted CommonJS bundle contract emitted by this package. */
|
|
3
|
+
export declare const COMPONENTONCE_TRUSTED_BUNDLE_FORMAT: "componentonce.trusted-cjs.v1";
|
|
4
|
+
/** Source syntaxes accepted by the trusted compiler. */
|
|
5
|
+
export type ComponentOnceSourceLoader = "js" | "jsx" | "ts" | "tsx";
|
|
6
|
+
/** JSX transform mode forwarded to esbuild by the generic compiler. */
|
|
7
|
+
export type ComponentOnceJsxMode = "transform" | "preserve" | "automatic";
|
|
8
|
+
/** Input for compiling one trusted JavaScript or TypeScript module. */
|
|
9
|
+
export interface ComponentOnceCompileInput {
|
|
10
|
+
/** TypeScript, TSX, JavaScript, or JSX module source. */
|
|
11
|
+
readonly source: string;
|
|
12
|
+
/** Stable diagnostic/source-map name. */
|
|
13
|
+
readonly sourceFileName?: string;
|
|
14
|
+
/** Explicit source syntax, otherwise inferred from sourceFileName. */
|
|
15
|
+
readonly loader?: ComponentOnceSourceLoader;
|
|
16
|
+
/** Directory used to resolve and bundle relative imports from the in-memory entry source. */
|
|
17
|
+
readonly resolveDir?: string;
|
|
18
|
+
/** Exact import specifiers the host will inject during instantiation. */
|
|
19
|
+
readonly externalModules?: readonly string[];
|
|
20
|
+
/** JSX transform mode; generic compilation defaults to transform. */
|
|
21
|
+
readonly jsx?: ComponentOnceJsxMode;
|
|
22
|
+
}
|
|
23
|
+
/** React convenience compiler input; React externals are supplied by the wrapper. */
|
|
24
|
+
export interface ComponentOnceReactCompileInput {
|
|
25
|
+
readonly source: string;
|
|
26
|
+
readonly sourceFileName?: string;
|
|
27
|
+
readonly loader?: ComponentOnceSourceLoader;
|
|
28
|
+
/** Directory used to resolve and bundle relative imports from the in-memory entry source. */
|
|
29
|
+
readonly resolveDir?: string;
|
|
30
|
+
/** Additional non-React host externals. */
|
|
31
|
+
readonly additionalExternalModules?: readonly string[];
|
|
32
|
+
}
|
|
33
|
+
/** Source location attached to a normalized compiler diagnostic. */
|
|
34
|
+
export interface ComponentOnceDiagnosticLocation {
|
|
35
|
+
/** Source file name supplied to the compiler. */
|
|
36
|
+
readonly file: string;
|
|
37
|
+
/** One-based source line. */
|
|
38
|
+
readonly line: number;
|
|
39
|
+
/** Zero-based source column. */
|
|
40
|
+
readonly column: number;
|
|
41
|
+
/** Length of the highlighted source range. */
|
|
42
|
+
readonly length: number;
|
|
43
|
+
/** Full source line associated with the diagnostic. */
|
|
44
|
+
readonly lineText: string;
|
|
45
|
+
}
|
|
46
|
+
/** Secondary explanatory note attached to a compiler diagnostic. */
|
|
47
|
+
export interface ComponentOnceDiagnosticNote {
|
|
48
|
+
/** Human-readable note. */
|
|
49
|
+
readonly text: string;
|
|
50
|
+
/** Source location when esbuild can identify one. */
|
|
51
|
+
readonly location?: ComponentOnceDiagnosticLocation;
|
|
52
|
+
}
|
|
53
|
+
/** Storage-neutral compiler warning or error. */
|
|
54
|
+
export interface ComponentOnceDiagnostic {
|
|
55
|
+
/** Diagnostic severity. */
|
|
56
|
+
readonly kind: "error" | "warning";
|
|
57
|
+
/** Human-readable diagnostic text. */
|
|
58
|
+
readonly text: string;
|
|
59
|
+
/** Primary source location when available. */
|
|
60
|
+
readonly location?: ComponentOnceDiagnosticLocation;
|
|
61
|
+
/** Supporting notes supplied by esbuild. */
|
|
62
|
+
readonly notes: readonly ComponentOnceDiagnosticNote[];
|
|
63
|
+
}
|
|
64
|
+
/** Read-only esbuild metadata describing the emitted bundle and its external imports. */
|
|
65
|
+
export type ComponentOnceBundleMetafile = Readonly<Metafile>;
|
|
66
|
+
/** Immutable, storage-neutral output of the trusted module compiler. */
|
|
67
|
+
export interface ComponentOnceTrustedBundleArtifact {
|
|
68
|
+
/** Bundle contract understood by `instantiateTrustedBundle`. */
|
|
69
|
+
readonly format: typeof COMPONENTONCE_TRUSTED_BUNDLE_FORMAT;
|
|
70
|
+
/** Executable CommonJS bundle text. */
|
|
71
|
+
readonly code: string;
|
|
72
|
+
/** UTF-8 byte length of `code`. */
|
|
73
|
+
readonly byteLength: number;
|
|
74
|
+
/** Lowercase hexadecimal SHA-256 digest of `code`. */
|
|
75
|
+
readonly sha256: string;
|
|
76
|
+
/** Subresource-integrity-style SHA-256 value for `code`. */
|
|
77
|
+
readonly integrity: string;
|
|
78
|
+
/** Exact external module specifiers referenced by the emitted bundle. */
|
|
79
|
+
readonly externalModules: readonly string[];
|
|
80
|
+
/** Normalized non-fatal compiler diagnostics. */
|
|
81
|
+
readonly diagnostics: readonly ComponentOnceDiagnostic[];
|
|
82
|
+
/** esbuild metadata for dependency and output inspection. */
|
|
83
|
+
readonly metafile: ComponentOnceBundleMetafile;
|
|
84
|
+
}
|
|
85
|
+
/** Compilation failure with stable, normalized esbuild diagnostics. */
|
|
86
|
+
export declare class ComponentOnceCompileError extends Error {
|
|
87
|
+
/** Compiler errors that caused the build to fail. */
|
|
88
|
+
readonly diagnostics: readonly ComponentOnceDiagnostic[];
|
|
89
|
+
constructor(diagnostics: readonly ComponentOnceDiagnostic[]);
|
|
90
|
+
}
|
|
91
|
+
/** Exact host-owned module values exposed to a trusted bundle's local `require`. */
|
|
92
|
+
export type ComponentOnceHostExternals = Readonly<Record<string, unknown>>;
|
|
93
|
+
/** JavaScript text, UTF-8 bytes, or an in-memory artifact accepted by the trusted evaluator. */
|
|
94
|
+
export type ComponentOnceTrustedBundleSource = string | Uint8Array | ComponentOnceTrustedBundleArtifact;
|
|
95
|
+
/** Options controlling explicit external injection and optional integrity verification. */
|
|
96
|
+
export interface InstantiateTrustedBundleOptions {
|
|
97
|
+
/** Exact external values, including the host's React and JSX runtime instances. */
|
|
98
|
+
readonly externals: ComponentOnceHostExternals;
|
|
99
|
+
/** Expected integrity for separately loaded text/bytes; artifacts verify their own value by default. */
|
|
100
|
+
readonly expectedIntegrity?: string;
|
|
101
|
+
/** Debugger-only source name appended to the evaluated bundle. */
|
|
102
|
+
readonly sourceName?: string;
|
|
103
|
+
}
|
|
104
|
+
/** Deterministic error raised when a bundle requests an external the host did not inject. */
|
|
105
|
+
export declare class ComponentOnceMissingExternalError extends Error {
|
|
106
|
+
/** Exact module specifier requested by the bundle. */
|
|
107
|
+
readonly specifier: string;
|
|
108
|
+
/** Sorted external specifiers supplied by the host. */
|
|
109
|
+
readonly availableExternals: readonly string[];
|
|
110
|
+
constructor(specifier: string, availableExternals: readonly string[]);
|
|
111
|
+
}
|
|
112
|
+
/** Error raised when loaded bundle content does not match its expected SHA-256 integrity. */
|
|
113
|
+
export declare class ComponentOnceIntegrityError extends Error {
|
|
114
|
+
/** Expected subresource-integrity-style SHA-256 value. */
|
|
115
|
+
readonly expectedIntegrity: string;
|
|
116
|
+
/** Actual subresource-integrity-style SHA-256 value. */
|
|
117
|
+
readonly actualIntegrity: string;
|
|
118
|
+
constructor(expectedIntegrity: string, actualIntegrity: string);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Compile one trusted module into a deterministic CommonJS artifact.
|
|
122
|
+
*
|
|
123
|
+
* Only caller-declared imports remain external. This generic path does not add React or any other
|
|
124
|
+
* runtime implicitly; every external must be injected explicitly by the host at instantiation.
|
|
125
|
+
*/
|
|
126
|
+
export declare function compileTrustedModule(input: ComponentOnceCompileInput): Promise<ComponentOnceTrustedBundleArtifact>;
|
|
127
|
+
/** Compile a trusted React module while keeping the host React singleton external. */
|
|
128
|
+
export declare function compileTrustedReactModule(input: ComponentOnceReactCompileInput): Promise<ComponentOnceTrustedBundleArtifact>;
|
|
129
|
+
/** Calculate a subresource-integrity-style SHA-256 value for bundle text or UTF-8 bytes. */
|
|
130
|
+
export declare function calculateTrustedBundleIntegrity(source: string | Uint8Array): string;
|
|
131
|
+
/** Throw when bundle text or bytes do not match an expected SHA-256 integrity value. */
|
|
132
|
+
export declare function assertTrustedBundleIntegrity(source: string | Uint8Array, expectedIntegrity: string): void;
|
|
133
|
+
/**
|
|
134
|
+
* Execute a trusted bundle with a deliberately narrow CommonJS environment.
|
|
135
|
+
*
|
|
136
|
+
* This API uses `new Function` and is only for trusted internal code. It is not a sandbox: evaluated
|
|
137
|
+
* code retains access to JavaScript globals. The only available `require` values are provided by
|
|
138
|
+
* `options.externals`, so React is always the exact instance selected by the host.
|
|
139
|
+
*/
|
|
140
|
+
export declare function instantiateTrustedBundle<TExports = Record<string, unknown>>(source: ComponentOnceTrustedBundleSource, options: InstantiateTrustedBundleOptions): TExports;
|
|
141
|
+
//# sourceMappingURL=compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"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"}
|