@spine-event-engine/proto-tools 2.0.0-snapshot.2 → 2.0.0-snapshot.20

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 (34) hide show
  1. package/README.md +54 -46
  2. package/REFERENCE.md +26 -4
  3. package/dist/src/generation/build-time-handler-analyzer.d.ts +217 -0
  4. package/dist/src/generation/build-time-handler-analyzer.d.ts.map +1 -0
  5. package/dist/src/generation/build-time-handler-analyzer.js +2806 -0
  6. package/dist/src/generation/build-time-handler-analyzer.js.map +1 -0
  7. package/dist/src/generation/entity-query-generator.d.ts +19 -0
  8. package/dist/src/generation/entity-query-generator.d.ts.map +1 -0
  9. package/dist/src/generation/entity-query-generator.js +298 -0
  10. package/dist/src/generation/entity-query-generator.js.map +1 -0
  11. package/dist/src/generation/generated-registry-writer.d.ts +58 -0
  12. package/dist/src/generation/generated-registry-writer.d.ts.map +1 -0
  13. package/dist/src/generation/generated-registry-writer.js +496 -0
  14. package/dist/src/generation/generated-registry-writer.js.map +1 -0
  15. package/dist/src/generation/generation-reuse.mjs +24 -2
  16. package/dist/src/generation/generator.d.ts.map +1 -1
  17. package/dist/src/generation/generator.js +195 -24
  18. package/dist/src/generation/generator.js.map +1 -1
  19. package/dist/src/generation/handler-codegen.d.ts +48 -0
  20. package/dist/src/generation/handler-codegen.d.ts.map +1 -0
  21. package/dist/src/generation/handler-codegen.js +214 -0
  22. package/dist/src/generation/handler-codegen.js.map +1 -0
  23. package/dist/src/generation/handler-generator.js +1 -1
  24. package/dist/src/generation/handler-generator.js.map +1 -1
  25. package/dist/src/generation/rejection-generator.d.ts +1 -0
  26. package/dist/src/generation/rejection-generator.d.ts.map +1 -1
  27. package/dist/src/generation/rejection-generator.js +14 -11
  28. package/dist/src/generation/rejection-generator.js.map +1 -1
  29. package/dist/src/testing/index.d.ts +8 -0
  30. package/dist/src/testing/index.d.ts.map +1 -0
  31. package/dist/src/testing/index.js +20 -0
  32. package/dist/src/testing/index.js.map +1 -0
  33. package/dist/tsconfig.tsbuildinfo +1 -1
  34. package/package.json +9 -6
@@ -0,0 +1,496 @@
1
+ /*
2
+ * Copyright 2026, CodeMatters. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5
+ * in compliance with the License. You may obtain a copy of the License at
6
+ *
7
+ * https://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
10
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11
+ * or implied. See the License for the specific language governing permissions and limitations under
12
+ * the License.
13
+ */
14
+ import { spawnSync } from "node:child_process";
15
+ import { closeSync, constants, lstatSync, mkdirSync, openSync, writeFileSync } from "node:fs";
16
+ import { dirname, extname, isAbsolute, join, relative, resolve, sep } from "node:path";
17
+ const defaultRegistryConst = "generatedHandlerRegistry";
18
+ const defaultRegistryModule = "@spine-event-engine/server/spi/handler-registry";
19
+ const registryTypeName = "GeneratedHandlerRegistry";
20
+ const identRe = /^[$A-Z_a-z][$\w]*$/;
21
+ const reservedWords = new Set([
22
+ "arguments",
23
+ "await",
24
+ "break",
25
+ "case",
26
+ "catch",
27
+ "class",
28
+ "const",
29
+ "continue",
30
+ "debugger",
31
+ "default",
32
+ "delete",
33
+ "do",
34
+ "else",
35
+ "enum",
36
+ "eval",
37
+ "export",
38
+ "extends",
39
+ "false",
40
+ "finally",
41
+ "for",
42
+ "function",
43
+ "if",
44
+ "implements",
45
+ "import",
46
+ "in",
47
+ "instanceof",
48
+ "interface",
49
+ "let",
50
+ "new",
51
+ "null",
52
+ "package",
53
+ "private",
54
+ "protected",
55
+ "public",
56
+ "return",
57
+ "static",
58
+ "super",
59
+ "switch",
60
+ "this",
61
+ "throw",
62
+ "true",
63
+ "try",
64
+ "typeof",
65
+ "var",
66
+ "void",
67
+ "while",
68
+ "with",
69
+ "yield",
70
+ ]);
71
+ /**
72
+ * Build-time writer for unversioned generated handler registry source.
73
+ */
74
+ export class GeneratedRegistryWriter {
75
+ // prettier-ignore
76
+ /**
77
+ * Renders generated registry source without writing to disk.
78
+ *
79
+ * @param analysis Analyzed receiver handlers to render.
80
+ * @param options Caller-owned output and registry naming options.
81
+ * @returns Deterministic generated TypeScript source.
82
+ */
83
+ render(analysis, options) {
84
+ const outputFile = resolve(options.outputFile);
85
+ const registryName = options.registryName ?? defaultRegistryConst;
86
+ const registryModule = options.registryModuleSpecifier ?? defaultRegistryModule;
87
+ const receivers = analysis.receivers;
88
+ const refs = RegistrySource.buildRefs(receivers, outputFile);
89
+ RegistrySource.assertRegistryName(registryName, RegistrySource.importNames(refs));
90
+ const lines = [
91
+ `import type { ${registryTypeName} } from ${RegistrySource.stringLiteral(registryModule)};`,
92
+ ...refs.imports,
93
+ "",
94
+ ...RegistrySource.renderRegistry(receivers, outputFile, registryName, refs),
95
+ "",
96
+ ];
97
+ return lines.join("\n");
98
+ }
99
+ /**
100
+ * Validates and writes generated registry source only when explicitly invoked.
101
+ *
102
+ * @param analysis Analyzed receiver handlers to render and validate.
103
+ * @param options Guarded output location and registry naming options.
104
+ * @returns Generated TypeScript source written to the output file.
105
+ */
106
+ write(analysis, options) {
107
+ RegistrySource.assertNoDiagnostics(analysis);
108
+ RegistrySource.assertWriteOptions(options);
109
+ const source = this.render(analysis, {
110
+ ...options,
111
+ outputFile: options.publishedOutputFile ?? options.outputFile,
112
+ });
113
+ const repoRoot = resolve(options.repoRoot);
114
+ const outputDir = dirname(resolve(options.outputFile));
115
+ RegistrySource.assertGitIgnored(repoRoot, options.outputFile);
116
+ mkdirSync(outputDir, { recursive: true });
117
+ RegistrySource.assertNoSymlinkPath(repoRoot, outputDir, "Generated output directory");
118
+ RegistrySource.assertNoSymlinkOutput(options.outputFile);
119
+ RegistrySource.writeOutput(options.outputFile, source);
120
+ return source;
121
+ }
122
+ }
123
+ /**
124
+ * Renders deterministic generated registries and guards file output.
125
+ */
126
+ const RegistrySource = Object.freeze({
127
+ importNames(refs) {
128
+ return new Set([registryTypeName, ...refs.localNames]);
129
+ },
130
+ buildRefs(receivers, outputFile) {
131
+ const used = new Set();
132
+ const entityRefs = new Map();
133
+ const entityImports = [];
134
+ const schemaRaw = new Map();
135
+ const entityRaw = new Map();
136
+ for (const receiver of receivers) {
137
+ RegistrySource.addReceiverRef(receiver, outputFile, entityRaw, entityRefs, entityImports, used);
138
+ RegistrySource.addReceiverSchemas(receiver, outputFile, schemaRaw);
139
+ }
140
+ const { schemaImports, schemaRefs } = RegistrySource.bindSchemaRefs(schemaRaw, used);
141
+ return {
142
+ entityNames: entityRefs,
143
+ schemaNames: schemaRefs,
144
+ imports: [
145
+ ...entityImports.map(RegistrySource.renderImport),
146
+ ...RegistrySource.renderSchemaImports(schemaImports),
147
+ ],
148
+ localNames: used,
149
+ };
150
+ },
151
+ addReceiverRef(receiver, outputFile, raw, names, imports, used) {
152
+ const moduleSpecifier = RegistrySource.entityModule(outputFile, receiver.sourceFile);
153
+ const key = RegistrySource.entityKey(moduleSpecifier, receiver.className);
154
+ const existing = raw.get(key);
155
+ const ref = existing ??
156
+ RegistrySource.bindRef({
157
+ importedName: receiver.className,
158
+ localName: "",
159
+ moduleSpecifier,
160
+ ...(receiver.defaultExport === true ? { defaultExport: true } : {}),
161
+ }, used);
162
+ if (existing === undefined) {
163
+ raw.set(key, ref);
164
+ imports.push(ref);
165
+ }
166
+ names.set(RegistrySource.entityKey(ref.moduleSpecifier, ref.importedName), ref.localName);
167
+ },
168
+ addReceiverSchemas(receiver, outputFile, schemas) {
169
+ const add = (schema) => {
170
+ RegistrySource.addSchemaRef(schemas, outputFile, receiver.sourceFile, schema);
171
+ };
172
+ if (receiver.receiverKind === "entity")
173
+ add(receiver.stateSchema);
174
+ for (const handler of receiver.handlers) {
175
+ add(handler.input.schema);
176
+ handler.outcomes.returned.forEach(add);
177
+ handler.outcomes.thrown.forEach(add);
178
+ }
179
+ },
180
+ bindSchemaRefs(raw, used) {
181
+ const schemaRefs = new Map();
182
+ const schemaImports = [...raw.values()].sort(RegistrySource.compareRef).map((ref) => {
183
+ const bound = RegistrySource.bindRef(ref, used);
184
+ schemaRefs.set(RegistrySource.entityKey(bound.moduleSpecifier, bound.importedName), bound.localName);
185
+ return bound;
186
+ });
187
+ return { schemaImports, schemaRefs };
188
+ },
189
+ renderRegistry(receivers, outputFile, registryName, refs) {
190
+ const lines = [`export const ${registryName}: GeneratedHandlerRegistry = {`, " receivers: ["];
191
+ receivers.forEach((receiver) => {
192
+ lines.push(...RegistrySource.renderReceiver(receiver, outputFile, refs));
193
+ });
194
+ lines.push(" ],", "};");
195
+ return lines;
196
+ },
197
+ renderReceiver(receiver, outputFile, refs) {
198
+ const entityType = RegistrySource.entityName(refs, outputFile, receiver);
199
+ const receiverKind = receiver.receiverKind;
200
+ const stateSchema = receiver.receiverKind === "entity"
201
+ ? RegistrySource.schemaName(refs, outputFile, receiver.sourceFile, receiver.stateSchema)
202
+ : undefined;
203
+ const lines = [
204
+ " {",
205
+ ` receiverKind: ${RegistrySource.stringLiteral(receiverKind)},`,
206
+ ` receiverType: ${entityType},`,
207
+ ...(stateSchema === undefined ? [] : [` stateSchema: ${stateSchema},`]),
208
+ " handlers: [",
209
+ ];
210
+ for (const handler of receiver.handlers) {
211
+ lines.push(...RegistrySource.renderHandler(handler, receiver.sourceFile, outputFile, refs));
212
+ }
213
+ lines.push(" ],", " },");
214
+ return lines;
215
+ },
216
+ renderHandler(handler, sourceFile, outputFile, refs) {
217
+ const schemaName = (schema) => RegistrySource.schemaName(refs, outputFile, sourceFile, schema);
218
+ const returned = handler.outcomes.returned.map(schemaName).join(", ");
219
+ const thrown = handler.outcomes.thrown.map(schemaName).join(", ");
220
+ return [
221
+ " {",
222
+ ` kind: ${RegistrySource.stringLiteral(handler.kind)},`,
223
+ ` methodName: ${RegistrySource.stringLiteral(handler.methodName)},`,
224
+ " input: {",
225
+ ` schema: ${schemaName(handler.input.schema)},`,
226
+ ` origin: ${RegistrySource.stringLiteral(handler.input.origin)},`,
227
+ ...RegistrySource.renderWhere(handler.input.where),
228
+ " },",
229
+ " outcomes: {",
230
+ ` returned: [${returned}],`,
231
+ ` thrown: [${thrown}],`,
232
+ " },",
233
+ ` parameterCount: ${String(handler.parameterCount)},`,
234
+ " },",
235
+ ];
236
+ },
237
+ renderWhere(where) {
238
+ return where === undefined
239
+ ? []
240
+ : [
241
+ " where: {",
242
+ ` eventField: ${RegistrySource.stringLiteral(where.eventField)},`,
243
+ ` equals: ${RegistrySource.stringLiteral(where.equals)},`,
244
+ " },",
245
+ ];
246
+ },
247
+ addSchemaRef(schemaImports, outputFile, sourceFile, schema) {
248
+ const moduleSpecifier = RegistrySource.importedSchemaModule(outputFile, sourceFile, schema.moduleSpecifier);
249
+ const key = RegistrySource.entityKey(moduleSpecifier, schema.exportName);
250
+ if (schemaImports.has(key)) {
251
+ return;
252
+ }
253
+ schemaImports.set(key, {
254
+ importedName: schema.exportName,
255
+ localName: "",
256
+ moduleSpecifier,
257
+ });
258
+ },
259
+ entityModule(outputFile, sourceFile) {
260
+ return RegistrySource.relativeModule(dirname(outputFile), RegistrySource.replaceSourceExtension(sourceFile));
261
+ },
262
+ importedSchemaModule(outputFile, sourceFile, moduleSpecifier) {
263
+ if (!moduleSpecifier.startsWith(".")) {
264
+ return moduleSpecifier;
265
+ }
266
+ const resolved = resolve(dirname(sourceFile), moduleSpecifier);
267
+ return RegistrySource.relativeModule(dirname(outputFile), resolved);
268
+ },
269
+ relativeModule(fromDirectory, targetPath) {
270
+ const value = relative(fromDirectory, targetPath).split(sep).join("/");
271
+ return value.startsWith(".") ? value : `./${value}`;
272
+ },
273
+ replaceSourceExtension(path) {
274
+ const extension = extname(path);
275
+ switch (extension) {
276
+ case ".cts":
277
+ return `${path.slice(0, -extension.length)}.cjs`;
278
+ case ".mts":
279
+ return `${path.slice(0, -extension.length)}.mjs`;
280
+ case ".ts":
281
+ case ".tsx":
282
+ return `${path.slice(0, -extension.length)}.js`;
283
+ default:
284
+ return path;
285
+ }
286
+ },
287
+ compareRef(left, right) {
288
+ return (RegistrySource.compareString(left.moduleSpecifier, right.moduleSpecifier) ||
289
+ RegistrySource.compareString(left.importedName, right.importedName));
290
+ },
291
+ bindRef(ref, used) {
292
+ return {
293
+ ...ref,
294
+ localName: RegistrySource.allocName(ref.importedName, used),
295
+ };
296
+ },
297
+ allocName(base, used) {
298
+ let next = base;
299
+ let index = 2;
300
+ while (used.has(next)) {
301
+ next = `${base}_${String(index)}`;
302
+ index += 1;
303
+ }
304
+ used.add(next);
305
+ return next;
306
+ },
307
+ renderImport(ref) {
308
+ if (ref.defaultExport === true) {
309
+ return `import ${ref.localName} from ${RegistrySource.stringLiteral(ref.moduleSpecifier)};`;
310
+ }
311
+ const local = ref.importedName === ref.localName
312
+ ? ref.importedName
313
+ : `${ref.importedName} as ${ref.localName}`;
314
+ return `import { ${local} } from ${RegistrySource.stringLiteral(ref.moduleSpecifier)};`;
315
+ },
316
+ renderSchemaImports(refs) {
317
+ const grouped = new Map();
318
+ refs.forEach((ref) => {
319
+ const rendered = ref.importedName === ref.localName
320
+ ? ref.importedName
321
+ : `${ref.importedName} as ${ref.localName}`;
322
+ const existing = grouped.get(ref.moduleSpecifier);
323
+ if (existing === undefined) {
324
+ grouped.set(ref.moduleSpecifier, [rendered]);
325
+ return;
326
+ }
327
+ existing.push(rendered);
328
+ });
329
+ return [...grouped.entries()].map(([moduleSpecifier, names]) => `import { ${names.join(", ")} } from ${RegistrySource.stringLiteral(moduleSpecifier)};`);
330
+ },
331
+ entityName(refs, outputFile, entity) {
332
+ return RegistrySource.refName(refs.entityNames, RegistrySource.entityKey(RegistrySource.entityModule(outputFile, entity.sourceFile), entity.className));
333
+ },
334
+ schemaName(refs, outputFile, sourceFile, schema) {
335
+ return RegistrySource.refName(refs.schemaNames, RegistrySource.entityKey(RegistrySource.importedSchemaModule(outputFile, sourceFile, schema.moduleSpecifier), schema.exportName));
336
+ },
337
+ refName(refs, key) {
338
+ const value = refs.get(key);
339
+ if (value !== undefined) {
340
+ return value;
341
+ }
342
+ throw new Error(`Missing generated registry import binding for ${key}.`);
343
+ },
344
+ entityKey(moduleSpecifier, importedName) {
345
+ return `${moduleSpecifier}::${importedName}`;
346
+ },
347
+ stringLiteral(value) {
348
+ return JSON.stringify(value)
349
+ .replace(/\u2028/g, "\\u2028")
350
+ .replace(/\u2029/g, "\\u2029");
351
+ },
352
+ assertIdentifier(value, label) {
353
+ if (identRe.test(value)) {
354
+ return;
355
+ }
356
+ throw new Error(`${label} must be a valid TypeScript identifier: ${value}`);
357
+ },
358
+ assertRegistryName(value, localNames) {
359
+ RegistrySource.assertIdentifier(value, "Registry name");
360
+ if (reservedWords.has(value)) {
361
+ throw new Error(`Registry name must not be a reserved TypeScript word: ${value}`);
362
+ }
363
+ if (localNames.has(value)) {
364
+ throw new Error(`Registry name collides with generated import binding: ${value}`);
365
+ }
366
+ },
367
+ assertNoDiagnostics(analysis) {
368
+ if (analysis.diagnostics.length === 0) {
369
+ return;
370
+ }
371
+ const first = analysis.diagnostics[0];
372
+ const location = first === undefined
373
+ ? "unknown"
374
+ : `${first.sourceFile}:${String(first.line)}:${String(first.column)}`;
375
+ throw new Error(`Cannot write generated handler registry with analyzer diagnostics. First diagnostic: ${location}.`);
376
+ },
377
+ assertWriteOptions(options) {
378
+ const repoRoot = resolve(options.repoRoot);
379
+ const generatedRoot = resolve(options.generatedRoot);
380
+ const outputFile = resolve(options.outputFile);
381
+ RegistrySource.assertRepoRoot(repoRoot);
382
+ if (generatedRoot.split(sep).at(-1) !== "generated") {
383
+ throw new Error(`Generated root must end with "/generated": ${generatedRoot}`);
384
+ }
385
+ RegistrySource.assertWithin(repoRoot, generatedRoot, "Generated root");
386
+ RegistrySource.assertWithin(repoRoot, outputFile, "Generated output");
387
+ RegistrySource.assertWithin(generatedRoot, outputFile, "Generated output");
388
+ if (options.publishedOutputFile !== undefined) {
389
+ RegistrySource.assertWithin(repoRoot, resolve(options.publishedOutputFile), "Published generated output");
390
+ }
391
+ RegistrySource.assertNoSymlinkPath(repoRoot, generatedRoot, "Generated root");
392
+ RegistrySource.assertNoSymlinkPath(repoRoot, dirname(outputFile), "Generated output directory");
393
+ },
394
+ assertRepoRoot(repoRoot) {
395
+ RegistrySource.assertNoSymlinkAncestors(repoRoot, "Repository root path");
396
+ const stat = RegistrySource.lstatIfPresent(repoRoot);
397
+ if (stat === undefined) {
398
+ throw new Error(`Repository root does not exist: ${repoRoot}`);
399
+ }
400
+ if (stat.isSymbolicLink()) {
401
+ throw new Error(`Repository root must not be a symlink: ${repoRoot}`);
402
+ }
403
+ if (!stat.isDirectory()) {
404
+ throw new Error(`Repository root must be a directory: ${repoRoot}`);
405
+ }
406
+ },
407
+ assertNoSymlinkAncestors(targetPath, label) {
408
+ const parts = resolve(targetPath).split(sep).filter(Boolean);
409
+ let current = sep;
410
+ for (const part of parts.slice(0, -1)) {
411
+ current = join(current, part);
412
+ const stat = RegistrySource.lstatIfPresent(current);
413
+ if (stat?.isSymbolicLink()) {
414
+ throw new Error(`${label} must not use a symlink ancestor: ${current}`);
415
+ }
416
+ if (stat !== undefined && !stat.isDirectory()) {
417
+ throw new Error(`${label} ancestor is not a directory: ${current}`);
418
+ }
419
+ }
420
+ },
421
+ assertNoSymlinkOutput(outputFile) {
422
+ const stat = RegistrySource.lstatIfPresent(resolve(outputFile));
423
+ if (stat?.isSymbolicLink()) {
424
+ throw new Error(`Generated output file must not be a symlink: ${outputFile}`);
425
+ }
426
+ },
427
+ writeOutput(outputFile, source) {
428
+ const flags = constants.O_WRONLY | constants.O_CREAT | constants.O_TRUNC | constants.O_NOFOLLOW;
429
+ const fd = openSync(outputFile, flags, 0o666);
430
+ try {
431
+ writeFileSync(fd, source);
432
+ }
433
+ finally {
434
+ closeSync(fd);
435
+ }
436
+ },
437
+ assertWithin(root, target, label) {
438
+ const value = relative(root, target);
439
+ if (value === "" || value.startsWith("..") || isAbsolute(value)) {
440
+ throw new Error(`${label} must stay within ${root}.`);
441
+ }
442
+ },
443
+ assertNoSymlinkPath(repoRoot, targetPath, label) {
444
+ const relativePath = relative(repoRoot, targetPath);
445
+ if (relativePath === "" || relativePath.startsWith("..") || isAbsolute(relativePath)) {
446
+ throw new Error(`${label} must stay within ${repoRoot}.`);
447
+ }
448
+ const parts = relativePath.split(sep).filter(Boolean);
449
+ let current = repoRoot;
450
+ for (const part of parts) {
451
+ current = join(current, part);
452
+ const stat = RegistrySource.lstatIfPresent(current);
453
+ if (stat === undefined) {
454
+ continue;
455
+ }
456
+ if (stat.isSymbolicLink()) {
457
+ throw new Error(`${label} must not use a symlink path: ${relative(repoRoot, current)}`);
458
+ }
459
+ if (!stat.isDirectory()) {
460
+ throw new Error(`${label} ancestor is not a directory: ${relative(repoRoot, current)}`);
461
+ }
462
+ }
463
+ },
464
+ assertGitIgnored(repoRoot, outputFile) {
465
+ const relativePath = relative(resolve(repoRoot), resolve(outputFile));
466
+ const result = spawnSync("git", ["check-ignore", "--quiet", "--", relativePath], {
467
+ cwd: repoRoot,
468
+ encoding: "utf8",
469
+ });
470
+ if (result.status === 0) {
471
+ return;
472
+ }
473
+ if (result.status === 1) {
474
+ throw new Error(`Generated output must live under a path ignored by Git: ${relativePath}`);
475
+ }
476
+ throw new Error(`Failed to verify Git ignore status for generated output: ${relativePath}`);
477
+ },
478
+ lstatIfPresent(path) {
479
+ try {
480
+ return lstatSync(path);
481
+ }
482
+ catch (error) {
483
+ if (error instanceof Error && "code" in error && error.code === "ENOENT") {
484
+ return undefined;
485
+ }
486
+ throw error;
487
+ }
488
+ },
489
+ compareString(left, right) {
490
+ if (left === right) {
491
+ return 0;
492
+ }
493
+ return left < right ? -1 : 1;
494
+ },
495
+ });
496
+ //# sourceMappingURL=generated-registry-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generated-registry-writer.js","sourceRoot":"","sources":["../../../src/generation/generated-registry-writer.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@
12
12
  * the License.
13
13
  */
14
14
 
15
+ import { createHash } from "node:crypto";
15
16
  import { lstatSync, readFileSync, readdirSync } from "node:fs";
16
17
  import { join, relative, sep } from "node:path";
17
18
 
@@ -61,11 +62,30 @@ function treeContents(root) {
61
62
  return files.sort(([left], [right]) => left.localeCompare(right));
62
63
  }
63
64
 
65
+ /**
66
+ * Creates a stable ID from a generation manifest contract and complete generated output.
67
+ *
68
+ * @param {Readonly<Record<string, unknown>>} manifest Generation manifest contract.
69
+ * @param {string} root Generated-output root.
70
+ * @returns {string} Stable content-derived generation identifier.
71
+ */
72
+ export function generationIdForContents(manifest, root) {
73
+ const contents = { ...manifest };
74
+ delete contents.generationId;
75
+ return createHash("sha256")
76
+ .update(JSON.stringify(canonicalJson(contents)))
77
+ .update("\n")
78
+ .update(JSON.stringify(treeContents(root)))
79
+ .digest("hex");
80
+ }
81
+
64
82
  export function reusableGenerationId(liveManifestPath, liveRoot, stagedManifest, stagedRoot) {
65
83
  try {
66
84
  const liveManifest = JSON.parse(readFileSync(liveManifestPath, "utf8"));
67
85
  const { generationId: liveGenerationId, ...liveContents } = liveManifest;
68
86
  const { generationId: stagedGenerationId, ...stagedContents } = stagedManifest;
87
+ const liveTree = treeContents(liveRoot);
88
+ const stagedTree = treeContents(stagedRoot);
69
89
  if (
70
90
  liveManifest.formatVersion !== 2 ||
71
91
  typeof liveGenerationId !== "string" ||
@@ -74,10 +94,12 @@ export function reusableGenerationId(liveManifestPath, liveRoot, stagedManifest,
74
94
  markerId(stagedRoot) !== stagedGenerationId ||
75
95
  JSON.stringify(canonicalJson(liveContents)) !==
76
96
  JSON.stringify(canonicalJson(stagedContents)) ||
77
- JSON.stringify(treeContents(liveRoot)) !== JSON.stringify(treeContents(stagedRoot))
97
+ (liveTree.length > 0 && JSON.stringify(liveTree) !== JSON.stringify(stagedTree))
78
98
  )
79
99
  return undefined;
80
- return liveGenerationId;
100
+ return liveTree.length === 0
101
+ ? generationIdForContents(stagedManifest, stagedRoot)
102
+ : liveGenerationId;
81
103
  } catch {
82
104
  return undefined;
83
105
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/generation/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/generation/generator.ts"],"names":[],"mappings":"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"}