@microsoft/webui 0.0.18 → 0.0.19
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 +81 -18
- package/bin/webui +0 -0
- package/dist/index.d.ts +28 -35
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +55 -79
- package/dist/index.js.map +1 -1
- package/dist/projection/adapters/esbuild.d.ts +14 -0
- package/dist/projection/adapters/esbuild.d.ts.map +1 -0
- package/dist/projection/adapters/esbuild.js +426 -0
- package/dist/projection/adapters/esbuild.js.map +1 -0
- package/dist/projection/compiler.d.ts +12 -0
- package/dist/projection/compiler.d.ts.map +1 -0
- package/dist/projection/compiler.js +1166 -0
- package/dist/projection/compiler.js.map +1 -0
- package/dist/projection/diagnostics.d.ts +153 -0
- package/dist/projection/diagnostics.d.ts.map +1 -0
- package/dist/projection/diagnostics.js +210 -0
- package/dist/projection/diagnostics.js.map +1 -0
- package/dist/projection/fixtures/conformance.d.ts +40 -0
- package/dist/projection/fixtures/conformance.d.ts.map +1 -0
- package/dist/projection/fixtures/conformance.js +602 -0
- package/dist/projection/fixtures/conformance.js.map +1 -0
- package/dist/projection/graph.d.ts +144 -0
- package/dist/projection/graph.d.ts.map +1 -0
- package/dist/projection/graph.js +4 -0
- package/dist/projection/graph.js.map +1 -0
- package/dist/projection/index.d.ts +37 -0
- package/dist/projection/index.d.ts.map +1 -0
- package/dist/projection/index.js +17 -0
- package/dist/projection/index.js.map +1 -0
- package/dist/projection/loader.d.ts +10 -0
- package/dist/projection/loader.d.ts.map +1 -0
- package/dist/projection/loader.js +45 -0
- package/dist/projection/loader.js.map +1 -0
- package/dist/projection/manifest.d.ts +97 -0
- package/dist/projection/manifest.d.ts.map +1 -0
- package/dist/projection/manifest.js +340 -0
- package/dist/projection/manifest.js.map +1 -0
- package/package.json +31 -9
package/README.md
CHANGED
|
@@ -15,14 +15,15 @@ The package automatically installs the correct platform-specific native binary f
|
|
|
15
15
|
## Quick start
|
|
16
16
|
|
|
17
17
|
```js
|
|
18
|
-
import { build,
|
|
18
|
+
import { build, Protocol } from "@microsoft/webui";
|
|
19
19
|
|
|
20
20
|
// Build templates into a protocol
|
|
21
21
|
const result = build({ appDir: "./src" });
|
|
22
22
|
|
|
23
|
-
//
|
|
24
|
-
const
|
|
25
|
-
|
|
23
|
+
// Decode and index once, then render repeatedly
|
|
24
|
+
const protocol = new Protocol(result.protocol, { plugin: "webui" });
|
|
25
|
+
const html = protocol.render({ name: "World", items: ["a", "b"] });
|
|
26
|
+
console.log(html.toString("utf8"));
|
|
26
27
|
```
|
|
27
28
|
|
|
28
29
|
## API
|
|
@@ -58,30 +59,92 @@ usage with a literal fallback (e.g. `var(--brand, #000)`) is exempt. Missing
|
|
|
58
59
|
required tokens fail the build with a structured `missing-theme-token` error.
|
|
59
60
|
Misspelled literal-fallback tokens are returned as non-fatal warnings.
|
|
60
61
|
|
|
61
|
-
###
|
|
62
|
+
### Optional state projection
|
|
62
63
|
|
|
63
|
-
|
|
64
|
+
The build-only `@microsoft/webui/projection.js` subpath exposes the
|
|
65
|
+
bundler-neutral projection compiler and the supported esbuild adapter. esbuild
|
|
66
|
+
and TypeScript are optional peer dependencies, so applications that do not use
|
|
67
|
+
projection do not install or load them:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
npm install -D esbuild typescript
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
```js
|
|
74
|
+
import * as esbuild from "esbuild";
|
|
75
|
+
import { esbuildProjection } from "@microsoft/webui/projection.js";
|
|
76
|
+
|
|
77
|
+
await esbuild.build({
|
|
78
|
+
entryPoints: ["src/index.ts"],
|
|
79
|
+
outdir: "dist",
|
|
80
|
+
bundle: true,
|
|
81
|
+
splitting: true,
|
|
82
|
+
format: "esm",
|
|
83
|
+
plugins: [esbuildProjection()],
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
const result = build({
|
|
87
|
+
appDir: "./src",
|
|
88
|
+
plugin: "webui",
|
|
89
|
+
projectionManifests: ["./dist/webui-projection.json"],
|
|
90
|
+
});
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
esbuild runs once and emits both browser chunks and
|
|
94
|
+
`webui-projection.json`; WebUI then embeds the exact initial/navigation
|
|
95
|
+
surfaces into `protocol.bin`. The adapter uses esbuild's resolved graph and
|
|
96
|
+
emitted output membership, so code splitting, dynamic imports, output hashes,
|
|
97
|
+
and external bundles remain application-owned.
|
|
98
|
+
|
|
99
|
+
Other bundler adapters can use the exported `AdapterContext`,
|
|
100
|
+
`compileProjection()`, and conformance fixtures without importing esbuild. The
|
|
101
|
+
package currently ships and supports `esbuildProjection()` as its official
|
|
102
|
+
adapter.
|
|
103
|
+
|
|
104
|
+
With no manifest, WebUI performs no JavaScript analysis and preserves full
|
|
105
|
+
state. Once any manifest is supplied, coverage is strict: every scripted
|
|
106
|
+
component compiled into the protocol must have exactly one entry. Shared
|
|
107
|
+
controls built as external bundles should emit their own manifest fragment,
|
|
108
|
+
then all fragments should be passed through `projectionManifests`.
|
|
109
|
+
|
|
110
|
+
Manifest keys are exact JavaScript `@observable` and `@attr` property names.
|
|
111
|
+
During hydration, an existing SSR host attribute wins over projected `@attr`
|
|
112
|
+
state. Runtime hosts never load TypeScript, esbuild, or the manifest.
|
|
113
|
+
|
|
114
|
+
### `new Protocol(protocol: Buffer, options?: ProtocolOptions)`
|
|
115
|
+
|
|
116
|
+
Decodes and indexes a compiled protocol once. Keep this object for the server
|
|
117
|
+
lifetime and use it for all runtime operations.
|
|
64
118
|
|
|
65
119
|
```js
|
|
66
|
-
const
|
|
120
|
+
const protocol = new Protocol(protocolBytes, { plugin: "webui" });
|
|
67
121
|
```
|
|
68
122
|
|
|
69
|
-
|
|
123
|
+
`Protocol` owns its decoded native state. The package does not keep a hidden
|
|
124
|
+
`WeakMap`, copy the source `Buffer`, or expose render functions that accept
|
|
125
|
+
protocol bytes on every request.
|
|
126
|
+
|
|
127
|
+
### `protocol.render(state: object | string, options?: RenderOptions): Buffer`
|
|
70
128
|
|
|
71
|
-
Renders
|
|
129
|
+
Renders state into a UTF-8 Node.js `Buffer`, the canonical buffered result for
|
|
130
|
+
direct HTTP, file, or socket writes:
|
|
72
131
|
|
|
73
132
|
```js
|
|
74
|
-
|
|
75
|
-
response.write(chunk);
|
|
76
|
-
});
|
|
133
|
+
response.end(protocol.render({ title: "Hello" }));
|
|
77
134
|
```
|
|
78
135
|
|
|
79
|
-
|
|
136
|
+
Call `.toString("utf8")` explicitly when JavaScript string operations are
|
|
137
|
+
required.
|
|
138
|
+
|
|
139
|
+
### `protocol.renderStream(state, onChunk, options?): void`
|
|
80
140
|
|
|
81
|
-
|
|
141
|
+
Renders with streaming output. Internal handler writes are coalesced around a
|
|
142
|
+
16 KiB target before the callback crosses into JavaScript.
|
|
82
143
|
|
|
83
144
|
```js
|
|
84
|
-
|
|
145
|
+
protocol.renderStream(state, (chunk) => {
|
|
146
|
+
response.write(chunk);
|
|
147
|
+
});
|
|
85
148
|
```
|
|
86
149
|
|
|
87
150
|
### `inspect(protocol: Buffer): string`
|
|
@@ -93,16 +156,16 @@ const json = inspect(protocol);
|
|
|
93
156
|
console.log(JSON.parse(json));
|
|
94
157
|
```
|
|
95
158
|
|
|
96
|
-
### `renderPartial(
|
|
159
|
+
### `protocol.renderPartial(state, entryId, requestPath, inventoryHex): string`
|
|
97
160
|
|
|
98
161
|
Produces a JSON partial response for client-side navigation, including state, template metadata, condition closures, and route chain.
|
|
99
162
|
|
|
100
|
-
### `renderComponentTemplates(
|
|
163
|
+
### `protocol.renderComponentTemplates(componentTags, inventoryHex): string`
|
|
101
164
|
|
|
102
165
|
Renders templates and styles for on-demand component loading (used by `Router.ensureLoaded()`). Returns a JSON string with `templateStyles`, `templates`, `templateFunctions`, and `inventory`. Uses the same inventory bitfield as partial navigation to avoid sending duplicates.
|
|
103
166
|
|
|
104
167
|
```js
|
|
105
|
-
const json = renderComponentTemplates(
|
|
168
|
+
const json = protocol.renderComponentTemplates(["settings-dialog"], inventoryHex);
|
|
106
169
|
const { templates, templateFunctions, templateStyles, inventory } = JSON.parse(json);
|
|
107
170
|
```
|
|
108
171
|
|
package/bin/webui
CHANGED
|
Binary file
|
package/dist/index.d.ts
CHANGED
|
@@ -20,6 +20,13 @@ export interface BuildOptions {
|
|
|
20
20
|
outDir?: string;
|
|
21
21
|
/** Design token theme: a JSON file path or npm package name. */
|
|
22
22
|
theme?: string;
|
|
23
|
+
/** Projection manifest file paths, merged in order. */
|
|
24
|
+
projectionManifests?: string[];
|
|
25
|
+
/** Inline manifests with logical paths anchoring root/stale validation. */
|
|
26
|
+
projectionManifestObjects?: Array<{
|
|
27
|
+
path: string;
|
|
28
|
+
manifest: unknown;
|
|
29
|
+
}>;
|
|
23
30
|
}
|
|
24
31
|
/** Build statistics. */
|
|
25
32
|
export interface BuildStats {
|
|
@@ -55,6 +62,9 @@ export interface RenderOptions {
|
|
|
55
62
|
entry?: string;
|
|
56
63
|
/** URL path to match routes against (default: "/"). */
|
|
57
64
|
requestPath?: string;
|
|
65
|
+
}
|
|
66
|
+
/** Options fixed for the lifetime of a loaded protocol. */
|
|
67
|
+
export interface ProtocolOptions {
|
|
58
68
|
/** Handler plugin name. */
|
|
59
69
|
plugin?: string;
|
|
60
70
|
}
|
|
@@ -92,42 +102,25 @@ export interface PartialResponse {
|
|
|
92
102
|
/** Build a WebUI application from an app directory. */
|
|
93
103
|
export declare function build(options: BuildOptions): BuildResult;
|
|
94
104
|
/**
|
|
95
|
-
*
|
|
96
|
-
*
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Render a protocol with streaming output.
|
|
101
|
-
* Each HTML fragment is passed to the onChunk callback as it is produced.
|
|
105
|
+
* A decoded protocol with reusable indices for all runtime operations.
|
|
106
|
+
*
|
|
107
|
+
* Create one instance when the server loads `protocol.bin` and share it
|
|
108
|
+
* across requests. Construction decodes and indexes the protocol once.
|
|
102
109
|
*/
|
|
103
|
-
export declare
|
|
104
|
-
|
|
105
|
-
|
|
110
|
+
export declare class Protocol {
|
|
111
|
+
#private;
|
|
112
|
+
constructor(protocolData: Buffer, options?: ProtocolOptions);
|
|
113
|
+
/** Render a complete HTML response as a UTF-8 Node.js buffer. */
|
|
114
|
+
render(state: object | string, options?: RenderOptions): Buffer;
|
|
115
|
+
/** Stream a complete HTML response in chunks around 16 KiB. */
|
|
116
|
+
renderStream(state: object | string, onChunk: (html: string) => void, options?: RenderOptions): void;
|
|
117
|
+
/** Produce a complete JSON partial-navigation response. */
|
|
118
|
+
renderPartial(state: object | string, entryId: string, requestPath: string, inventoryHex: string): string;
|
|
119
|
+
/** Render component templates and styles for on-demand loading. */
|
|
120
|
+
renderComponentTemplates(componentTags: string[], inventoryHex: string): string;
|
|
121
|
+
/** Return CSS token names in build order. */
|
|
122
|
+
tokens(): string[];
|
|
123
|
+
}
|
|
106
124
|
/** Inspect protocol bytes and return JSON representation. */
|
|
107
125
|
export declare function inspect(protocolData: Buffer): string;
|
|
108
|
-
/**
|
|
109
|
-
* Produce a complete JSON partial response for client-side navigation.
|
|
110
|
-
*
|
|
111
|
-
* Returns a JSON string with `state`, `templates`, `inventory`, `path`, and `chain`.
|
|
112
|
-
* Pipe directly to the HTTP response — no post-processing needed.
|
|
113
|
-
*
|
|
114
|
-
* If you need to inspect the response, parse it with the exported `PartialResponse` type:
|
|
115
|
-
* ```ts
|
|
116
|
-
* const partial: PartialResponse = JSON.parse(renderPartial(...));
|
|
117
|
-
* ```
|
|
118
|
-
*/
|
|
119
|
-
export declare function renderPartial(protocolData: Buffer, stateJson: string, entryId: string, requestPath: string, inventoryHex: string): string;
|
|
120
|
-
/**
|
|
121
|
-
* Render component templates and styles for on-demand loading.
|
|
122
|
-
*
|
|
123
|
-
* Used by `Router.ensureLoaded()` to fetch templates for components that
|
|
124
|
-
* are not part of the route tree (e.g., dialogs, popovers). Uses the same
|
|
125
|
-
* inventory bitfield as partial navigation to avoid sending duplicates.
|
|
126
|
-
*
|
|
127
|
-
* Returns a JSON string. Parse with the exported `ComponentTemplatesResponse` type:
|
|
128
|
-
* ```ts
|
|
129
|
-
* const resp: ComponentTemplatesResponse = JSON.parse(renderComponentTemplates(...));
|
|
130
|
-
* ```
|
|
131
|
-
*/
|
|
132
|
-
export declare function renderComponentTemplates(protocolData: Buffer, componentTags: string[], inventoryHex: string): string;
|
|
133
126
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAaA,gDAAgD;AAChD,MAAM,WAAW,YAAY;IAC3B,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAClC,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,oEAAoE;IACpE,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,6GAA6G;IAC7G,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -44,7 +44,14 @@ function warnFallback() {
|
|
|
44
44
|
export function build(options) {
|
|
45
45
|
const native = loadAddon();
|
|
46
46
|
if (native?.build) {
|
|
47
|
-
|
|
47
|
+
const { projectionManifestObjects, ...nativeOptions } = options;
|
|
48
|
+
return native.build({
|
|
49
|
+
...nativeOptions,
|
|
50
|
+
projectionManifestObjects: projectionManifestObjects?.map(({ path, manifest }) => ({
|
|
51
|
+
path,
|
|
52
|
+
json: JSON.stringify(manifest),
|
|
53
|
+
})),
|
|
54
|
+
});
|
|
48
55
|
}
|
|
49
56
|
// Fallback: shell out to CLI binary.
|
|
50
57
|
const binPath = resolve("bin");
|
|
@@ -63,6 +70,15 @@ export function build(options) {
|
|
|
63
70
|
args.push("--components", c);
|
|
64
71
|
}
|
|
65
72
|
}
|
|
73
|
+
if (options.projectionManifests) {
|
|
74
|
+
for (const manifest of options.projectionManifests) {
|
|
75
|
+
args.push("--projection-manifest", manifest);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (options.projectionManifestObjects &&
|
|
79
|
+
options.projectionManifestObjects.length > 0) {
|
|
80
|
+
throw new Error("[webui] Inline projection manifest objects require the native addon; write the manifest and pass projectionManifests when using the CLI fallback.");
|
|
81
|
+
}
|
|
66
82
|
if (options.componentAssetRoots && options.componentAssetRoots.length > 0) {
|
|
67
83
|
args.push("--emit-component-assets", options.componentAssetRoots.join(","));
|
|
68
84
|
}
|
|
@@ -112,50 +128,47 @@ function readComponentAssetFiles(outDir) {
|
|
|
112
128
|
}
|
|
113
129
|
return files;
|
|
114
130
|
}
|
|
115
|
-
// ──
|
|
116
|
-
/**
|
|
117
|
-
* Render a pre-compiled protocol with state data.
|
|
118
|
-
* Uses native addon when available, WASM fallback otherwise.
|
|
119
|
-
*/
|
|
120
|
-
export function render(protocol, state, options) {
|
|
121
|
-
const native = loadAddon();
|
|
122
|
-
if (native) {
|
|
123
|
-
let result = "";
|
|
124
|
-
const stateStr = typeof state === "string" ? state : JSON.stringify(state);
|
|
125
|
-
const entry = options?.entry ?? "index.html";
|
|
126
|
-
const requestPath = options?.requestPath ?? "/";
|
|
127
|
-
native.render(protocol, stateStr, entry, requestPath, (chunk) => {
|
|
128
|
-
result += chunk;
|
|
129
|
-
}, options?.plugin);
|
|
130
|
-
return result;
|
|
131
|
-
}
|
|
132
|
-
warnFallback();
|
|
133
|
-
throw new Error("[webui] render() requires the native addon. WASM render fallback not yet wired.");
|
|
134
|
-
}
|
|
131
|
+
// ── Runtime protocol API ─────────────────────────────────────────────
|
|
135
132
|
/**
|
|
136
|
-
*
|
|
137
|
-
*
|
|
133
|
+
* A decoded protocol with reusable indices for all runtime operations.
|
|
134
|
+
*
|
|
135
|
+
* Create one instance when the server loads `protocol.bin` and share it
|
|
136
|
+
* across requests. Construction decodes and indexes the protocol once.
|
|
138
137
|
*/
|
|
139
|
-
export
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
const
|
|
143
|
-
const
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
138
|
+
export class Protocol {
|
|
139
|
+
#native;
|
|
140
|
+
constructor(protocolData, options) {
|
|
141
|
+
const native = loadAddon();
|
|
142
|
+
const NativeProtocol = native?.Protocol;
|
|
143
|
+
if (!NativeProtocol) {
|
|
144
|
+
warnFallback();
|
|
145
|
+
throw new Error("[webui] Native addon is incompatible: Protocol is required.");
|
|
146
|
+
}
|
|
147
|
+
this.#native = new NativeProtocol(protocolData, options?.plugin);
|
|
148
|
+
}
|
|
149
|
+
/** Render a complete HTML response as a UTF-8 Node.js buffer. */
|
|
150
|
+
render(state, options) {
|
|
151
|
+
const stateJson = typeof state === "string" ? state : JSON.stringify(state);
|
|
152
|
+
return this.#native.render(stateJson, options?.entry ?? "index.html", options?.requestPath ?? "/");
|
|
153
|
+
}
|
|
154
|
+
/** Stream a complete HTML response in chunks around 16 KiB. */
|
|
155
|
+
renderStream(state, onChunk, options) {
|
|
156
|
+
const stateJson = typeof state === "string" ? state : JSON.stringify(state);
|
|
157
|
+
this.#native.renderStream(stateJson, options?.entry ?? "index.html", options?.requestPath ?? "/", onChunk);
|
|
158
|
+
}
|
|
159
|
+
/** Produce a complete JSON partial-navigation response. */
|
|
160
|
+
renderPartial(state, entryId, requestPath, inventoryHex) {
|
|
161
|
+
const stateJson = typeof state === "string" ? state : JSON.stringify(state);
|
|
162
|
+
return this.#native.renderPartial(stateJson, entryId, requestPath, inventoryHex);
|
|
163
|
+
}
|
|
164
|
+
/** Render component templates and styles for on-demand loading. */
|
|
165
|
+
renderComponentTemplates(componentTags, inventoryHex) {
|
|
166
|
+
return this.#native.renderComponentTemplates(componentTags, inventoryHex);
|
|
167
|
+
}
|
|
168
|
+
/** Return CSS token names in build order. */
|
|
169
|
+
tokens() {
|
|
170
|
+
return this.#native.tokens();
|
|
147
171
|
}
|
|
148
|
-
warnFallback();
|
|
149
|
-
throw new Error("[webui] renderStream() requires the native addon. WASM render fallback not yet wired.");
|
|
150
|
-
}
|
|
151
|
-
// ── Convenience ──────────────────────────────────────────────────────
|
|
152
|
-
/** Build and render in a single call. */
|
|
153
|
-
export function buildAndRender(options, state, renderOpts) {
|
|
154
|
-
const result = build(options);
|
|
155
|
-
if (!result.protocol || result.protocol.length === 0) {
|
|
156
|
-
throw new Error("[webui] Build did not return protocol data.");
|
|
157
|
-
}
|
|
158
|
-
return render(result.protocol, state, renderOpts);
|
|
159
172
|
}
|
|
160
173
|
/** Inspect protocol bytes and return JSON representation. */
|
|
161
174
|
export function inspect(protocolData) {
|
|
@@ -165,43 +178,6 @@ export function inspect(protocolData) {
|
|
|
165
178
|
}
|
|
166
179
|
throw new Error("[webui] inspect() requires the native addon.");
|
|
167
180
|
}
|
|
168
|
-
/**
|
|
169
|
-
* Produce a complete JSON partial response for client-side navigation.
|
|
170
|
-
*
|
|
171
|
-
* Returns a JSON string with `state`, `templates`, `inventory`, `path`, and `chain`.
|
|
172
|
-
* Pipe directly to the HTTP response — no post-processing needed.
|
|
173
|
-
*
|
|
174
|
-
* If you need to inspect the response, parse it with the exported `PartialResponse` type:
|
|
175
|
-
* ```ts
|
|
176
|
-
* const partial: PartialResponse = JSON.parse(renderPartial(...));
|
|
177
|
-
* ```
|
|
178
|
-
*/
|
|
179
|
-
export function renderPartial(protocolData, stateJson, entryId, requestPath, inventoryHex) {
|
|
180
|
-
const native = loadAddon();
|
|
181
|
-
if (native?.renderPartial) {
|
|
182
|
-
return native.renderPartial(protocolData, stateJson, entryId, requestPath, inventoryHex);
|
|
183
|
-
}
|
|
184
|
-
throw new Error("[webui] renderPartial() requires the native addon.");
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Render component templates and styles for on-demand loading.
|
|
188
|
-
*
|
|
189
|
-
* Used by `Router.ensureLoaded()` to fetch templates for components that
|
|
190
|
-
* are not part of the route tree (e.g., dialogs, popovers). Uses the same
|
|
191
|
-
* inventory bitfield as partial navigation to avoid sending duplicates.
|
|
192
|
-
*
|
|
193
|
-
* Returns a JSON string. Parse with the exported `ComponentTemplatesResponse` type:
|
|
194
|
-
* ```ts
|
|
195
|
-
* const resp: ComponentTemplatesResponse = JSON.parse(renderComponentTemplates(...));
|
|
196
|
-
* ```
|
|
197
|
-
*/
|
|
198
|
-
export function renderComponentTemplates(protocolData, componentTags, inventoryHex) {
|
|
199
|
-
const native = loadAddon();
|
|
200
|
-
if (native?.renderComponentTemplates) {
|
|
201
|
-
return native.renderComponentTemplates(protocolData, JSON.stringify(componentTags), inventoryHex);
|
|
202
|
-
}
|
|
203
|
-
throw new Error("[webui] renderComponentTemplates() requires the native addon.");
|
|
204
|
-
}
|
|
205
181
|
// ── Helpers ──────────────────────────────────────────────────────────
|
|
206
182
|
function emptyStats() {
|
|
207
183
|
return {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Plugin } from "esbuild";
|
|
2
|
+
/** Configuration for the official esbuild projection adapter. */
|
|
3
|
+
export interface EsbuildProjectionOptions {
|
|
4
|
+
/**
|
|
5
|
+
* Manifest path. Relative values resolve from esbuild's `absWorkingDir`.
|
|
6
|
+
*
|
|
7
|
+
* Defaults to `<outdir>/webui-projection.json` or the directory containing
|
|
8
|
+
* `outfile`.
|
|
9
|
+
*/
|
|
10
|
+
readonly manifest?: string;
|
|
11
|
+
}
|
|
12
|
+
/** Create the official esbuild projection plugin. */
|
|
13
|
+
export declare function esbuildProjection(options?: EsbuildProjectionOptions): Plugin;
|
|
14
|
+
//# sourceMappingURL=esbuild.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esbuild.d.ts","sourceRoot":"","sources":["../../../src/projection/adapters/esbuild.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAIV,MAAM,EAEP,MAAM,SAAS,CAAC;AAoBjB,iEAAiE;AACjE,MAAM,WAAW,wBAAwB;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAYD,qDAAqD;AACrD,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,wBAA6B,GACrC,MAAM,CAgCR"}
|