@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.
Files changed (39) hide show
  1. package/README.md +81 -18
  2. package/bin/webui +0 -0
  3. package/dist/index.d.ts +28 -35
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +55 -79
  6. package/dist/index.js.map +1 -1
  7. package/dist/projection/adapters/esbuild.d.ts +14 -0
  8. package/dist/projection/adapters/esbuild.d.ts.map +1 -0
  9. package/dist/projection/adapters/esbuild.js +426 -0
  10. package/dist/projection/adapters/esbuild.js.map +1 -0
  11. package/dist/projection/compiler.d.ts +12 -0
  12. package/dist/projection/compiler.d.ts.map +1 -0
  13. package/dist/projection/compiler.js +1166 -0
  14. package/dist/projection/compiler.js.map +1 -0
  15. package/dist/projection/diagnostics.d.ts +153 -0
  16. package/dist/projection/diagnostics.d.ts.map +1 -0
  17. package/dist/projection/diagnostics.js +210 -0
  18. package/dist/projection/diagnostics.js.map +1 -0
  19. package/dist/projection/fixtures/conformance.d.ts +40 -0
  20. package/dist/projection/fixtures/conformance.d.ts.map +1 -0
  21. package/dist/projection/fixtures/conformance.js +602 -0
  22. package/dist/projection/fixtures/conformance.js.map +1 -0
  23. package/dist/projection/graph.d.ts +144 -0
  24. package/dist/projection/graph.d.ts.map +1 -0
  25. package/dist/projection/graph.js +4 -0
  26. package/dist/projection/graph.js.map +1 -0
  27. package/dist/projection/index.d.ts +37 -0
  28. package/dist/projection/index.d.ts.map +1 -0
  29. package/dist/projection/index.js +17 -0
  30. package/dist/projection/index.js.map +1 -0
  31. package/dist/projection/loader.d.ts +10 -0
  32. package/dist/projection/loader.d.ts.map +1 -0
  33. package/dist/projection/loader.js +45 -0
  34. package/dist/projection/loader.js.map +1 -0
  35. package/dist/projection/manifest.d.ts +97 -0
  36. package/dist/projection/manifest.d.ts.map +1 -0
  37. package/dist/projection/manifest.js +340 -0
  38. package/dist/projection/manifest.js.map +1 -0
  39. package/package.json +31 -9
@@ -0,0 +1,426 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+ /**
4
+ * Official esbuild adapter for bundler-neutral state projection.
5
+ *
6
+ * This module uses esbuild types only. It never imports the esbuild runtime;
7
+ * the application-owned esbuild instance supplies the plugin API and version.
8
+ */
9
+ import { mkdir, open, readFile, rename, rm, } from "node:fs/promises";
10
+ import * as path from "node:path";
11
+ import { ProjectionError, createDiagnostic, } from "../diagnostics.js";
12
+ import { serializeManifestCanonical, } from "../manifest.js";
13
+ import { compileProjection, preloadProjectionCompiler, } from "../loader.js";
14
+ let temporaryFileSequence = 0;
15
+ /** Create the official esbuild projection plugin. */
16
+ export function esbuildProjection(options = {}) {
17
+ return {
18
+ name: "webui-state-projection",
19
+ setup(build) {
20
+ build.initialOptions.metafile = true;
21
+ const versionError = validateEsbuildVersion(build.esbuild.version);
22
+ const compilerLoad = versionError
23
+ ? Promise.resolve(undefined)
24
+ : preloadProjectionCompiler().then(() => undefined, (error) => error);
25
+ if (versionError) {
26
+ build.onStart(() => ({
27
+ errors: [diagnosticMessage(versionError)],
28
+ }));
29
+ }
30
+ build.onEnd(async (result) => {
31
+ if (result.errors.length > 0 || versionError)
32
+ return;
33
+ try {
34
+ const compilerError = await compilerLoad;
35
+ if (compilerError !== undefined)
36
+ throw compilerError;
37
+ await emitProjectionManifest(build, result, options);
38
+ }
39
+ catch (error) {
40
+ return {
41
+ errors: errorMessages(error),
42
+ };
43
+ }
44
+ });
45
+ },
46
+ };
47
+ }
48
+ async function emitProjectionManifest(build, result, options) {
49
+ const profile = process.env["WEBUI_PROJECTION_PROFILE"] === "1";
50
+ const profileStart = profile ? performance.now() : 0;
51
+ const metafile = result.metafile;
52
+ if (!metafile) {
53
+ throw adapterError("esbuild did not return a metafile", "Do not disable metafile after esbuildProjection() configures the build.");
54
+ }
55
+ const workingDirectory = path.resolve(build.initialOptions.absWorkingDir ?? process.cwd());
56
+ const manifestPath = resolveManifestPath(workingDirectory, build, options);
57
+ const outputIds = outputPaths(workingDirectory, metafile);
58
+ if ([...outputIds.values()].some((outputId) => samePath(outputId, manifestPath))) {
59
+ throw adapterError("the projection manifest path collides with an esbuild output", "Choose a distinct manifest filename such as dist/webui-projection.json.");
60
+ }
61
+ const packageCache = new Map();
62
+ const records = await loadInputRecords(workingDirectory, build, metafile, packageCache);
63
+ const graphReady = profile ? performance.now() : 0;
64
+ const recordByMetafileId = new Map(records.map((record) => [record.metafileId, record]));
65
+ const graph = buildModuleGraph(metafile, records, recordByMetafileId);
66
+ const membership = buildMembership(metafile, outputIds, recordByMetafileId);
67
+ const outputContents = await loadOutputContents(result, outputIds);
68
+ const rootDir = commonAncestor([
69
+ manifestPath,
70
+ ...records
71
+ .filter((record) => record.kind === "file")
72
+ .map((record) => record.moduleId),
73
+ ...outputIds.values(),
74
+ ]);
75
+ const context = {
76
+ graph,
77
+ membership,
78
+ outputContents,
79
+ rootDir,
80
+ manifestPath,
81
+ bundlerName: "esbuild",
82
+ bundlerVersion: build.esbuild.version,
83
+ };
84
+ const manifest = await compileProjection(context);
85
+ const compiled = profile ? performance.now() : 0;
86
+ await writeAtomic(manifestPath, serializeManifestCanonical(manifest));
87
+ if (profile) {
88
+ const finished = performance.now();
89
+ console.error(`[webui-projection] graph=${(graphReady - profileStart).toFixed(1)}ms compile=${(compiled - graphReady).toFixed(1)}ms write=${(finished - compiled).toFixed(1)}ms total=${(finished - profileStart).toFixed(1)}ms`);
90
+ }
91
+ }
92
+ function resolveManifestPath(workingDirectory, build, options) {
93
+ if (options.manifest) {
94
+ return path.resolve(workingDirectory, options.manifest);
95
+ }
96
+ const outdir = build.initialOptions.outdir;
97
+ if (outdir) {
98
+ return path.resolve(workingDirectory, outdir, "webui-projection.json");
99
+ }
100
+ const outfile = build.initialOptions.outfile;
101
+ if (outfile) {
102
+ return path.join(path.dirname(path.resolve(workingDirectory, outfile)), "webui-projection.json");
103
+ }
104
+ throw adapterError("esbuildProjection() requires outdir, outfile, or an explicit manifest path", "Configure an emitted file location so projection output hashes can be validated.");
105
+ }
106
+ function outputPaths(workingDirectory, metafile) {
107
+ const result = new Map();
108
+ for (const outputPath of Object.keys(metafile.outputs)) {
109
+ result.set(outputPath, path.resolve(workingDirectory, outputPath));
110
+ }
111
+ return result;
112
+ }
113
+ async function loadInputRecords(workingDirectory, build, metafile, packageCache) {
114
+ const entries = Object.keys(metafile.inputs);
115
+ const records = await Promise.all(entries.map(async (metafileId) => {
116
+ const filePath = path.resolve(workingDirectory, metafileId);
117
+ const source = await readPhysicalSource(filePath);
118
+ if (source !== undefined) {
119
+ return {
120
+ metafileId,
121
+ moduleId: filePath,
122
+ kind: "file",
123
+ source,
124
+ packageName: undefined,
125
+ };
126
+ }
127
+ const stdinSource = sourceForStdin(metafileId, build);
128
+ return {
129
+ metafileId,
130
+ moduleId: virtualModuleId(metafileId),
131
+ kind: "virtual",
132
+ source: stdinSource,
133
+ packageName: undefined,
134
+ };
135
+ }));
136
+ const resolved = [];
137
+ for (const record of records) {
138
+ resolved.push(record.kind === "file"
139
+ ? {
140
+ ...record,
141
+ packageName: await nearestPackageName(record.moduleId, packageCache),
142
+ }
143
+ : record);
144
+ }
145
+ return resolved;
146
+ }
147
+ async function readPhysicalSource(filePath) {
148
+ try {
149
+ const bytes = await readFile(filePath);
150
+ return bytes.toString("utf8");
151
+ }
152
+ catch (error) {
153
+ if (isMissingFile(error))
154
+ return undefined;
155
+ throw error;
156
+ }
157
+ }
158
+ function sourceForStdin(metafileId, build) {
159
+ const stdin = build.initialOptions.stdin;
160
+ if (!stdin)
161
+ return undefined;
162
+ const sourcefile = stdin.sourcefile ?? "<stdin>";
163
+ if (metafileId !== sourcefile && metafileId !== "<stdin>") {
164
+ return undefined;
165
+ }
166
+ return typeof stdin.contents === "string"
167
+ ? stdin.contents
168
+ : Buffer.from(stdin.contents).toString("utf8");
169
+ }
170
+ function buildModuleGraph(metafile, records, recordByMetafileId) {
171
+ const modules = new Map();
172
+ for (const record of records) {
173
+ const input = metafile.inputs[record.metafileId];
174
+ const imports = input.imports.map((entry) => resolvedImport(entry, recordByMetafileId));
175
+ modules.set(record.moduleId, {
176
+ id: record.moduleId,
177
+ kind: record.kind,
178
+ ...packageNameProperty(record.packageName),
179
+ source: record.source,
180
+ imports,
181
+ });
182
+ }
183
+ const entries = new Set();
184
+ for (const output of Object.values(metafile.outputs)) {
185
+ if (!output.entryPoint)
186
+ continue;
187
+ const record = recordByMetafileId.get(output.entryPoint);
188
+ if (record)
189
+ entries.add(record.moduleId);
190
+ }
191
+ return {
192
+ modules,
193
+ entries: [...entries].sort(comparePaths),
194
+ };
195
+ }
196
+ function resolvedImport(entry, recordByMetafileId) {
197
+ const target = entry.external
198
+ ? undefined
199
+ : recordByMetafileId.get(entry.path);
200
+ return {
201
+ specifier: entry.original ?? entry.path,
202
+ resolvedId: target?.moduleId,
203
+ external: entry.external === true,
204
+ kind: entry.kind === "dynamic-import" ? "dynamic" : "static",
205
+ ...packageNameProperty(target?.packageName ??
206
+ (entry.external ? packageNameFromSpecifier(entry.path) : undefined)),
207
+ };
208
+ }
209
+ function packageNameProperty(packageName) {
210
+ return packageName === undefined ? {} : { packageName };
211
+ }
212
+ function buildMembership(metafile, outputIds, recordByMetafileId) {
213
+ const outputs = new Map();
214
+ for (const [outputPath, metadata] of Object.entries(metafile.outputs)) {
215
+ const outputId = outputIds.get(outputPath);
216
+ if (!outputId)
217
+ continue;
218
+ const members = new Set();
219
+ for (const inputPath of Object.keys(metadata.inputs)) {
220
+ const record = recordByMetafileId.get(inputPath);
221
+ if (record)
222
+ members.add(record.moduleId);
223
+ }
224
+ outputs.set(outputId, members);
225
+ }
226
+ return { outputs };
227
+ }
228
+ async function loadOutputContents(result, outputIds) {
229
+ const inMemory = new Map();
230
+ for (const outputFile of result.outputFiles ?? []) {
231
+ inMemory.set(pathKey(outputFile.path), outputFile.contents);
232
+ }
233
+ const contents = new Map();
234
+ for (const outputId of outputIds.values()) {
235
+ const memory = inMemory.get(pathKey(outputId));
236
+ contents.set(outputId, memory ?? (await readFile(outputId)));
237
+ }
238
+ return contents;
239
+ }
240
+ async function nearestPackageName(filePath, cache) {
241
+ let directory = path.dirname(filePath);
242
+ const visited = [];
243
+ while (true) {
244
+ if (cache.has(directory)) {
245
+ const cached = cache.get(directory);
246
+ for (const value of visited)
247
+ cache.set(value, cached);
248
+ return cached;
249
+ }
250
+ visited.push(directory);
251
+ const packagePath = path.join(directory, "package.json");
252
+ try {
253
+ const text = await readFile(packagePath, "utf8");
254
+ const parsed = JSON.parse(text);
255
+ const name = typeof parsed.name === "string" && parsed.name.length > 0
256
+ ? parsed.name
257
+ : undefined;
258
+ for (const value of visited)
259
+ cache.set(value, name);
260
+ return name;
261
+ }
262
+ catch (error) {
263
+ if (!isMissingFile(error)) {
264
+ throw adapterError(`could not read package identity from '${packagePath}'`, error instanceof Error ? error.message : String(error));
265
+ }
266
+ }
267
+ const parent = path.dirname(directory);
268
+ if (parent === directory) {
269
+ for (const value of visited)
270
+ cache.set(value, undefined);
271
+ return undefined;
272
+ }
273
+ directory = parent;
274
+ }
275
+ }
276
+ function packageNameFromSpecifier(specifier) {
277
+ if (specifier.length === 0 ||
278
+ specifier.startsWith(".") ||
279
+ specifier.startsWith("/") ||
280
+ path.isAbsolute(specifier)) {
281
+ return undefined;
282
+ }
283
+ const segments = specifier.split("/");
284
+ if (specifier.startsWith("@")) {
285
+ return segments.length >= 2
286
+ ? `${segments[0]}/${segments[1]}`
287
+ : undefined;
288
+ }
289
+ return segments[0];
290
+ }
291
+ function virtualModuleId(metafileId) {
292
+ return `\0esbuild:${metafileId}`;
293
+ }
294
+ function commonAncestor(paths) {
295
+ if (paths.length === 0) {
296
+ throw adapterError("esbuild produced no physical projection artifacts", "Provide at least one physical output file.");
297
+ }
298
+ let ancestor = path.dirname(path.resolve(paths[0]));
299
+ for (let index = 1; index < paths.length; index++) {
300
+ const directory = path.dirname(path.resolve(paths[index]));
301
+ while (!isWithin(ancestor, directory)) {
302
+ const parent = path.dirname(ancestor);
303
+ if (parent === ancestor) {
304
+ throw adapterError("projection inputs and outputs do not share a filesystem root", "Keep one bundler invocation on a single filesystem volume.");
305
+ }
306
+ ancestor = parent;
307
+ }
308
+ }
309
+ return ancestor;
310
+ }
311
+ function isWithin(root, candidate) {
312
+ const relative = path.relative(root, candidate);
313
+ return (relative.length === 0 ||
314
+ (relative !== ".." &&
315
+ !relative.startsWith(`..${path.sep}`) &&
316
+ !path.isAbsolute(relative)));
317
+ }
318
+ function comparePaths(left, right) {
319
+ return Buffer.compare(Buffer.from(left, "utf8"), Buffer.from(right, "utf8"));
320
+ }
321
+ function samePath(left, right) {
322
+ return pathKey(left) === pathKey(right);
323
+ }
324
+ function pathKey(value) {
325
+ const resolved = path.resolve(value);
326
+ return process.platform === "win32"
327
+ ? resolved.toLowerCase()
328
+ : resolved;
329
+ }
330
+ async function writeAtomic(manifestPath, contents) {
331
+ await mkdir(path.dirname(manifestPath), { recursive: true });
332
+ const sequence = temporaryFileSequence++;
333
+ const temporaryPath = `${manifestPath}.tmp-${process.pid}-${sequence}`;
334
+ try {
335
+ const handle = await open(temporaryPath, "wx");
336
+ try {
337
+ await handle.writeFile(contents, "utf8");
338
+ await handle.sync();
339
+ }
340
+ finally {
341
+ await handle.close();
342
+ }
343
+ await rename(temporaryPath, manifestPath);
344
+ }
345
+ finally {
346
+ await rm(temporaryPath, { force: true });
347
+ }
348
+ }
349
+ function validateEsbuildVersion(version) {
350
+ const parsed = parseVersion(version);
351
+ if (parsed === undefined ||
352
+ parsed.major !== 0 ||
353
+ parsed.minor !== 28 ||
354
+ parsed.patch < 1) {
355
+ return createDiagnostic("PROJ-P002", {
356
+ help: `Install an application-owned esbuild peer compatible with ^0.28.1; found ${version}.`,
357
+ });
358
+ }
359
+ return undefined;
360
+ }
361
+ function parseVersion(value) {
362
+ const segments = value.split(".");
363
+ if (segments.length < 3)
364
+ return undefined;
365
+ const major = Number(segments[0]);
366
+ const minor = Number(segments[1]);
367
+ const patchText = segments[2];
368
+ let end = 0;
369
+ while (end < patchText.length &&
370
+ patchText.charCodeAt(end) >= 48 &&
371
+ patchText.charCodeAt(end) <= 57) {
372
+ end++;
373
+ }
374
+ if (end === 0)
375
+ return undefined;
376
+ const patch = Number(patchText.slice(0, end));
377
+ return Number.isInteger(major) &&
378
+ Number.isInteger(minor) &&
379
+ Number.isInteger(patch)
380
+ ? { major, minor, patch }
381
+ : undefined;
382
+ }
383
+ function errorMessages(error) {
384
+ if (error instanceof ProjectionError) {
385
+ return error.diagnostics.map(diagnosticMessage);
386
+ }
387
+ return [
388
+ diagnosticMessage(createDiagnostic("PROJ-C013", {
389
+ help: error instanceof Error
390
+ ? error.message
391
+ : String(error),
392
+ })),
393
+ ];
394
+ }
395
+ function diagnosticMessage(diagnostic) {
396
+ return {
397
+ id: diagnostic.code,
398
+ pluginName: "webui-state-projection",
399
+ text: `${diagnostic.code}: ${diagnostic.title}`,
400
+ ...(diagnostic.location === undefined
401
+ ? {}
402
+ : {
403
+ location: {
404
+ file: diagnostic.location,
405
+ },
406
+ }),
407
+ ...(diagnostic.help === undefined
408
+ ? {}
409
+ : {
410
+ notes: [{ text: `help: ${diagnostic.help}` }],
411
+ }),
412
+ detail: diagnostic,
413
+ };
414
+ }
415
+ function adapterError(title, help) {
416
+ return new ProjectionError([
417
+ createDiagnostic("PROJ-C013", { help: `${title}. ${help}` }),
418
+ ]);
419
+ }
420
+ function isMissingFile(error) {
421
+ if (!(error instanceof Error))
422
+ return false;
423
+ const code = error.code;
424
+ return code === "ENOENT" || code === "ENOTDIR";
425
+ }
426
+ //# sourceMappingURL=esbuild.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esbuild.js","sourceRoot":"","sources":["../../../src/projection/adapters/esbuild.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { AdapterContext } from "./graph.js";
2
+ import type { ProjectionManifest } from "./manifest.js";
3
+ /**
4
+ * Compiles the projection manifest for a single bundler invocation.
5
+ *
6
+ * Pure function of `ctx`: never touches the filesystem, never executes user
7
+ * modules. Throws `ProjectionError` carrying every hard diagnostic found
8
+ * across the whole graph when any candidate's exact keys cannot be proven or
9
+ * any `define()` association is invalid.
10
+ */
11
+ export declare function compileProjection(ctx: AdapterContext): ProjectionManifest;
12
+ //# sourceMappingURL=compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/projection/compiler.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAkB,kBAAkB,EAAE,MAAM,eAAe,CAAC;AA4FxE;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,kBAAkB,CA6BzE"}