@0disoft/mensor-compiler 0.2.1 → 0.10.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.
Files changed (56) hide show
  1. package/README.md +22 -0
  2. package/dist/src/check-project.d.ts +4 -3
  3. package/dist/src/check-project.d.ts.map +1 -1
  4. package/dist/src/check-project.js +199 -28
  5. package/dist/src/check-project.js.map +1 -1
  6. package/dist/src/filesystem.d.ts +32 -2
  7. package/dist/src/filesystem.d.ts.map +1 -1
  8. package/dist/src/filesystem.js +170 -12
  9. package/dist/src/filesystem.js.map +1 -1
  10. package/dist/src/form-index-types.d.ts +2 -62
  11. package/dist/src/form-index-types.d.ts.map +1 -1
  12. package/dist/src/form-index-types.js.map +1 -1
  13. package/dist/src/form-index.d.ts +5 -0
  14. package/dist/src/form-index.d.ts.map +1 -1
  15. package/dist/src/form-index.js +23 -0
  16. package/dist/src/form-index.js.map +1 -1
  17. package/dist/src/form-rule.d.ts.map +1 -1
  18. package/dist/src/form-rule.js +35 -12
  19. package/dist/src/form-rule.js.map +1 -1
  20. package/dist/src/hono-jsx-form-index.d.ts +3 -0
  21. package/dist/src/hono-jsx-form-index.d.ts.map +1 -0
  22. package/dist/src/hono-jsx-form-index.js +371 -0
  23. package/dist/src/hono-jsx-form-index.js.map +1 -0
  24. package/dist/src/html-forms.d.ts.map +1 -1
  25. package/dist/src/html-forms.js +150 -87
  26. package/dist/src/html-forms.js.map +1 -1
  27. package/dist/src/index.d.ts +3 -2
  28. package/dist/src/index.d.ts.map +1 -1
  29. package/dist/src/index.js +2 -1
  30. package/dist/src/index.js.map +1 -1
  31. package/dist/src/locations.d.ts +7 -0
  32. package/dist/src/locations.d.ts.map +1 -1
  33. package/dist/src/locations.js +77 -67
  34. package/dist/src/locations.js.map +1 -1
  35. package/dist/src/module-boundary-rule.d.ts +2 -0
  36. package/dist/src/module-boundary-rule.d.ts.map +1 -1
  37. package/dist/src/module-boundary-rule.js +99 -55
  38. package/dist/src/module-boundary-rule.js.map +1 -1
  39. package/dist/src/route-index.d.ts +6 -1
  40. package/dist/src/route-index.d.ts.map +1 -1
  41. package/dist/src/route-index.js +26 -8
  42. package/dist/src/route-index.js.map +1 -1
  43. package/dist/src/route-rule.d.ts +3 -2
  44. package/dist/src/route-rule.d.ts.map +1 -1
  45. package/dist/src/route-rule.js +2 -7
  46. package/dist/src/route-rule.js.map +1 -1
  47. package/dist/src/source-fact-index.d.ts +2 -1
  48. package/dist/src/source-fact-index.d.ts.map +1 -1
  49. package/dist/src/source-fact-index.js +26 -1
  50. package/dist/src/source-fact-index.js.map +1 -1
  51. package/dist/src/types.d.ts +19 -1
  52. package/dist/src/types.d.ts.map +1 -1
  53. package/dist/src/typescript-source.d.ts.map +1 -1
  54. package/dist/src/typescript-source.js +206 -45
  55. package/dist/src/typescript-source.js.map +1 -1
  56. package/package.json +7 -3
package/README.md CHANGED
@@ -24,6 +24,27 @@ if (!result.ok) {
24
24
  process.stdout.write(`${JSON.stringify(result.report, null, 2)}\n`);
25
25
  ```
26
26
 
27
+ ## Compile A Runtime Manifest
28
+
29
+ ```js
30
+ import { compileProject } from "@0disoft/mensor-compiler";
31
+
32
+ const result = await compileProject({ root: process.cwd() });
33
+ if (result.ok) {
34
+ process.stdout.write(`${JSON.stringify(result.manifest, null, 2)}\n`);
35
+ }
36
+ ```
37
+
38
+ The compiler emits a manifest only after every configured diagnostic passes.
39
+ The artifact contains static GET page HTML, POST routes, handler ids, and form
40
+ decode contracts; it contains no source path, AST node, or executable handler.
41
+
42
+ Template producers may reuse the pure `extractStaticHtmlFormDocument(file,
43
+ html)` export to obtain the same serializable HTML facts as the built-in
44
+ provider. The helper does not read files or execute source; producers still
45
+ own source binding, digests, embedded-fragment range offsets, and FormIndex
46
+ serialization.
47
+
27
48
  The default result contains DiagnosticReport v1. Select Check Output v2
28
49
  explicitly when inspection coverage is required:
29
50
 
@@ -44,5 +65,6 @@ dependencies, or access the network.
44
65
  - [Library API](https://github.com/0disoft/mensor/blob/main/docs/library/public-api.md)
45
66
  - [System boundary](https://github.com/0disoft/mensor/blob/main/docs/architecture/00-system-boundary.md)
46
67
  - [Check Output v2](https://github.com/0disoft/mensor/blob/main/docs/architecture/check-output-v2.md)
68
+ - [RuntimeManifest v1](https://github.com/0disoft/mensor/blob/main/docs/architecture/runtime-manifest-v1.md)
47
69
 
48
70
  Mensor is licensed under Apache-2.0.
@@ -1,5 +1,5 @@
1
1
  import { type CompilerPerformanceMetrics } from "./compiler-timing.js";
2
- import type { CheckProjectOptions, CheckProjectResult, CheckProjectV2Options, CheckProjectV2Result } from "./types.js";
2
+ import type { CheckProjectOptions, CheckProjectResult, CheckProjectV2Options, CheckProjectV2Result, CompileProjectOptions, CompileProjectResult } from "./types.js";
3
3
  export declare function checkProject(options: CheckProjectV2Options): Promise<CheckProjectV2Result>;
4
4
  export declare function checkProject(options: CheckProjectOptions): Promise<CheckProjectResult>;
5
5
  export interface MeasuredCheckProjectResult {
@@ -10,6 +10,7 @@ export interface MeasuredCheckProjectV2Result {
10
10
  readonly result: CheckProjectV2Result;
11
11
  readonly metrics: CompilerPerformanceMetrics;
12
12
  }
13
- export declare function checkProjectWithMetrics(options: CheckProjectV2Options): Promise<MeasuredCheckProjectV2Result>;
14
- export declare function checkProjectWithMetrics(options: CheckProjectOptions): Promise<MeasuredCheckProjectResult>;
13
+ export declare function checkProjectWithMetrics(options: CheckProjectV2Options, readConcurrency?: number): Promise<MeasuredCheckProjectV2Result>;
14
+ export declare function checkProjectWithMetrics(options: CheckProjectOptions, readConcurrency?: number): Promise<MeasuredCheckProjectResult>;
15
+ export declare function compileProject(options: CompileProjectOptions): Promise<CompileProjectResult>;
15
16
  //# sourceMappingURL=check-project.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"check-project.d.ts","sourceRoot":"","sources":["../../src/check-project.ts"],"names":[],"mappings":"AAuBA,OAAO,EAEL,KAAK,0BAA0B,EAEhC,MAAM,sBAAsB,CAAC;AAiB9B,OAAO,KAAK,EAEV,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAgBpB,wBAAsB,YAAY,CAChC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAAC;AACjC,wBAAsB,YAAY,CAChC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAU/B,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;CAC9C;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;CAC9C;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,4BAA4B,CAAC,CAAC;AACzC,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,0BAA0B,CAAC,CAAC"}
1
+ {"version":3,"file":"check-project.d.ts","sourceRoot":"","sources":["../../src/check-project.ts"],"names":[],"mappings":"AA6BA,OAAO,EAEL,KAAK,0BAA0B,EAEhC,MAAM,sBAAsB,CAAC;AAiB9B,OAAO,KAAK,EAEV,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AA4BpB,wBAAsB,YAAY,CAChC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAAC;AACjC,wBAAsB,YAAY,CAChC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAU/B,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;CAC9C;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;CAC9C;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,qBAAqB,EAC9B,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,4BAA4B,CAAC,CAAC;AACzC,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,mBAAmB,EAC5B,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,0BAA0B,CAAC,CAAC;AAcvC,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAuC/B"}
@@ -1,10 +1,10 @@
1
1
  import * as path from "node:path";
2
2
  import { performance } from "node:perf_hooks";
3
- import { parseFeatureContract, parseProjectContract, parseRouteIndex, } from "@0disoft/mensor-contract";
4
- import { assertProjectRoot, discoverProjectFiles, readProjectFile, } from "./filesystem.js";
3
+ import { parseFeatureContract, parseFormIndex, parseProjectContract, parseRouteIndex, parseRuntimeManifest, serializeRuntimeManifest, } from "@0disoft/mensor-contract";
4
+ import { assertProjectRoot, discoverProjectSnapshot, readProjectFile, } from "./filesystem.js";
5
5
  import { CompilerTiming, } from "./compiler-timing.js";
6
6
  import { checkFeatureForms } from "./form-rule.js";
7
- import { FormIndexFailure } from "./form-index.js";
7
+ import { FormIndexFailure, verifyExternalFormIndex } from "./form-index.js";
8
8
  import { checkFeatureHandlers } from "./handler-rule.js";
9
9
  import { createStaticHtmlFormIndexProvider } from "./html-forms.js";
10
10
  import { handlerFileRange } from "./locations.js";
@@ -21,21 +21,58 @@ const defaultMaxTotalBytes = 67_108_864;
21
21
  const defaultMaxDepth = 64;
22
22
  const defaultProducerVersion = "0.0.0";
23
23
  export async function checkProject(options) {
24
- const result = await checkProjectInternal(options);
24
+ const result = publicCheckResult(await checkProjectInternal(options));
25
25
  return options.reportVersion === 2
26
26
  ? result
27
27
  : result;
28
28
  }
29
- export async function checkProjectWithMetrics(options) {
29
+ export async function checkProjectWithMetrics(options, readConcurrency = 8) {
30
30
  const timing = new CompilerTiming();
31
31
  const startedAt = performance.now();
32
- const result = await checkProjectInternal(options, timing);
32
+ const result = publicCheckResult(await checkProjectInternal(options, timing, readConcurrency));
33
33
  const metrics = timing.snapshot(performance.now() - startedAt);
34
34
  return options.reportVersion === 2
35
35
  ? { result: result, metrics }
36
36
  : { result: result, metrics };
37
37
  }
38
- async function checkProjectInternal(options, timing) {
38
+ export async function compileProject(options) {
39
+ const analysis = await checkProjectInternal(options);
40
+ if (!analysis.ok) {
41
+ return { ok: false, kind: "failure", failure: analysis.failure };
42
+ }
43
+ const report = analysis.report;
44
+ if (report.diagnostics.length > 0) {
45
+ return { ok: false, kind: "diagnostics", report };
46
+ }
47
+ try {
48
+ const manifest = await createRuntimeManifest(analysis.features, analysis.readSource, analysis.producerVersion);
49
+ return { ok: true, report, manifest };
50
+ }
51
+ catch (error) {
52
+ if (error instanceof InputFailure) {
53
+ return {
54
+ ok: false,
55
+ kind: "failure",
56
+ failure: {
57
+ kind: error.kind,
58
+ code: error.code,
59
+ message: error.message,
60
+ ...(error.file === undefined ? {} : { file: error.file }),
61
+ },
62
+ };
63
+ }
64
+ return {
65
+ ok: false,
66
+ kind: "failure",
67
+ failure: {
68
+ kind: "internal",
69
+ code: "compiler.manifest_failure",
70
+ message: "The compiler could not emit a runtime manifest.",
71
+ },
72
+ };
73
+ }
74
+ }
75
+ async function checkProjectInternal(options, timing, readConcurrency = 8) {
39
76
  try {
40
77
  const reportVersion = options.reportVersion ?? 1;
41
78
  if (reportVersion !== 1 && reportVersion !== 2) {
@@ -94,14 +131,25 @@ async function checkProjectInternal(options, timing) {
94
131
  }
95
132
  const project = projectResult.value;
96
133
  validateFileRoles(project.fileRoles);
97
- const discoveredFiles = await measure(timing, "discovery", () => discoverProjectFiles(root, project.sourceRoot, maxFiles, maxTotalBytes, maxDepth));
134
+ const snapshot = await measure(timing, "discovery", () => discoverProjectSnapshot(root, project.sourceRoot, maxFiles, maxTotalBytes, maxDepth, project.formIndexEvidence ?? []));
135
+ const discoveredFiles = snapshot.files;
98
136
  const discovered = new Set(discoveredFiles);
99
137
  const diagnostics = [];
100
138
  const featureOwners = [];
101
- const sourceFacts = createSourceFactIndex((file) => readProjectFile(root, file, maxFileBytes), timing);
139
+ const sourceTextCache = new Map();
140
+ const readSource = (file) => {
141
+ const existing = sourceTextCache.get(file);
142
+ if (existing !== undefined) {
143
+ return existing;
144
+ }
145
+ const pending = snapshot.readFile(file, maxFileBytes);
146
+ sourceTextCache.set(file, pending);
147
+ return pending;
148
+ };
149
+ const sourceFacts = createSourceFactIndex(readSource, timing, readConcurrency);
102
150
  const formIndexProvider = createStaticHtmlFormIndexProvider({
103
151
  producerVersion,
104
- readSource: (file) => readProjectFile(root, file, maxFileBytes),
152
+ readSource,
105
153
  ...(timing === undefined ? {} : { timing }),
106
154
  });
107
155
  let routeIndexPath;
@@ -119,45 +167,81 @@ async function checkProjectInternal(options, timing) {
119
167
  sourceFacts,
120
168
  });
121
169
  }
170
+ const parsedFeatures = [];
122
171
  for (const featureContractPath of [...project.featureContracts].sort(compareText)) {
123
172
  const safeFeatureContractPath = assertRelativePosixPath(featureContractPath, "feature contract path");
124
173
  if (!discovered.has(safeFeatureContractPath)) {
125
174
  throw new InputFailure("configuration", "feature_contract.not_discovered", `Feature contract ${JSON.stringify(safeFeatureContractPath)} is not a discovered source file.`, safeFeatureContractPath);
126
175
  }
127
- const featureText = await readProjectFile(root, safeFeatureContractPath, maxFileBytes);
176
+ const featureText = await readSource(safeFeatureContractPath);
128
177
  const featureResult = parseFeatureContract(featureText);
129
178
  if (!featureResult.ok) {
130
179
  return contractFailure(safeFeatureContractPath, featureResult.issues);
131
180
  }
132
- featureOwners.push({
133
- id: featureResult.value.feature.id,
134
- root: path.posix.dirname(safeFeatureContractPath),
181
+ parsedFeatures.push({
182
+ feature: featureResult.value,
183
+ path: safeFeatureContractPath,
184
+ text: featureText,
185
+ });
186
+ }
187
+ validateProjectFeatures(parsedFeatures);
188
+ featureOwners.push(...parsedFeatures.map((parsedFeature) => ({
189
+ id: parsedFeature.feature.feature.id,
190
+ root: path.posix.dirname(parsedFeature.path),
191
+ })));
192
+ const projectTemplatePaths = [...new Set(parsedFeatures.flatMap((parsedFeature) => featureTemplatePaths(parsedFeature.path, parsedFeature.feature, discovered, project.formIndex === undefined)))].sort(compareText);
193
+ let formIndex;
194
+ if (project.formIndex === undefined) {
195
+ formIndex = await formIndexProvider.getIndex(projectTemplatePaths);
196
+ }
197
+ else {
198
+ const formIndexPath = assertRelativePosixPath(project.formIndex, "formIndex path");
199
+ const formIndexText = await readProjectFile(root, formIndexPath, maxFileBytes);
200
+ const formIndexResult = parseFormIndex(formIndexText);
201
+ if (!formIndexResult.ok) {
202
+ return contractFailure(formIndexPath, formIndexResult.issues);
203
+ }
204
+ for (const file of project.formIndexEvidence ?? []) {
205
+ const document = formIndexResult.value.documents.find((entry) => entry.path === file);
206
+ if (!document || document.forms.length !== 0 || document.inspection.state !== "complete") {
207
+ throw new InputFailure("configuration", "form_index.evidence_invalid", "Explicit FormIndex evidence must have one complete, form-free index document.", file);
208
+ }
209
+ }
210
+ formIndex = await verifyExternalFormIndex({
211
+ value: formIndexResult.value,
212
+ discovered: new Set([...discovered, ...snapshot.evidenceFiles]),
213
+ readSource,
135
214
  });
136
- diagnostics.push(...measureSync(timing, "ruleEvaluation", () => checkFeaturePlacement(safeFeatureContractPath, featureText, featureResult.value, project.fileRoles, discovered)));
215
+ const indexedPaths = new Set(formIndex.documents.map((document) => document.path));
216
+ const missingTemplate = projectTemplatePaths.find((template) => !indexedPaths.has(template));
217
+ if (missingTemplate !== undefined) {
218
+ throw new InputFailure("configuration", "form_index.document_missing", `FormIndex has no document for ${JSON.stringify(missingTemplate)}.`, missingTemplate);
219
+ }
220
+ }
221
+ for (const parsedFeature of parsedFeatures) {
222
+ diagnostics.push(...measureSync(timing, "ruleEvaluation", () => checkFeaturePlacement(parsedFeature.path, parsedFeature.text, parsedFeature.feature, project.fileRoles, discovered)));
137
223
  diagnostics.push(...(await measure(timing, "ruleEvaluation", () => checkFeatureHandlers({
138
- featureContractPath: safeFeatureContractPath,
139
- featureText,
140
- feature: featureResult.value,
224
+ featureContractPath: parsedFeature.path,
225
+ featureText: parsedFeature.text,
226
+ feature: parsedFeature.feature,
141
227
  discovered,
142
228
  sourceFacts,
143
229
  }))));
144
230
  if (routeIndex !== undefined && routeIndexPath !== undefined) {
145
231
  diagnostics.push(...measureSync(timing, "ruleEvaluation", () => checkFeatureRoutes({
146
- featureContractPath: safeFeatureContractPath,
147
- featureText,
148
- feature: featureResult.value,
232
+ featureContractPath: parsedFeature.path,
233
+ featureText: parsedFeature.text,
234
+ feature: parsedFeature.feature,
149
235
  projectContractPath: configFile,
150
236
  projectText,
151
237
  routeIndexPath,
152
238
  routeIndex,
153
239
  })));
154
240
  }
155
- const templatePaths = featureTemplatePaths(safeFeatureContractPath, featureResult.value, discovered);
156
- const formIndex = await formIndexProvider.getIndex(templatePaths);
157
241
  diagnostics.push(...measureSync(timing, "ruleEvaluation", () => checkFeatureForms({
158
- featureContractPath: safeFeatureContractPath,
159
- featureText,
160
- feature: featureResult.value,
242
+ featureContractPath: parsedFeature.path,
243
+ featureText: parsedFeature.text,
244
+ feature: parsedFeature.feature,
161
245
  formIndex,
162
246
  })));
163
247
  }
@@ -181,6 +265,9 @@ async function checkProjectInternal(options, timing) {
181
265
  return {
182
266
  ok: true,
183
267
  report: createReport(producerVersion, diagnostics, reportVersion, project),
268
+ features: parsedFeatures,
269
+ producerVersion,
270
+ readSource,
184
271
  };
185
272
  }
186
273
  catch (error) {
@@ -206,12 +293,94 @@ async function checkProjectInternal(options, timing) {
206
293
  });
207
294
  }
208
295
  }
209
- function featureTemplatePaths(featureContractPath, feature, discovered) {
296
+ function publicCheckResult(result) {
297
+ return result.ok
298
+ ? { ok: true, report: result.report }
299
+ : result;
300
+ }
301
+ async function createRuntimeManifest(features, readSource, producerVersion) {
302
+ const pagesByRoute = new Map();
303
+ const actionIds = new Set();
304
+ const actionRoutes = new Set();
305
+ const actions = [];
306
+ for (const parsed of features) {
307
+ const featureRoot = path.posix.dirname(parsed.path);
308
+ for (const action of [...parsed.feature.actions].sort((left, right) => compareText(left.id, right.id))) {
309
+ if (actionIds.has(action.id)) {
310
+ throw new InputFailure("configuration", "runtime_manifest.duplicate_handler_id", `Runtime handler id ${JSON.stringify(action.id)} is declared more than once.`, parsed.path);
311
+ }
312
+ actionIds.add(action.id);
313
+ const routeKey = `${action.route.method}\u0000${action.route.path}`;
314
+ if (actionRoutes.has(routeKey)) {
315
+ throw new InputFailure("configuration", "runtime_manifest.duplicate_action_route", `Runtime action route ${action.route.method} ${JSON.stringify(action.route.path)} is declared more than once.`, parsed.path);
316
+ }
317
+ actionRoutes.add(routeKey);
318
+ actions.push({
319
+ id: action.id,
320
+ method: "POST",
321
+ path: action.route.path,
322
+ handlerId: action.id,
323
+ input: action.input,
324
+ });
325
+ if (action.form.documentPath !== undefined) {
326
+ const template = joinProjectPath(featureRoot, action.form.template);
327
+ const html = await readSource(template);
328
+ const page = {
329
+ id: `${parsed.feature.feature.id}.form.${action.form.id}`,
330
+ method: "GET",
331
+ path: action.form.documentPath,
332
+ html,
333
+ };
334
+ const existing = pagesByRoute.get(page.path);
335
+ if (existing !== undefined && existing.html !== page.html) {
336
+ throw new InputFailure("configuration", "runtime_manifest.page_conflict", `GET page ${JSON.stringify(page.path)} is backed by different templates.`, parsed.path);
337
+ }
338
+ if (existing === undefined) {
339
+ pagesByRoute.set(page.path, page);
340
+ }
341
+ }
342
+ }
343
+ }
344
+ const candidate = {
345
+ manifestVersion: 1,
346
+ producer: { name: "mensor", version: producerVersion },
347
+ pages: [...pagesByRoute.values()],
348
+ actions,
349
+ };
350
+ const serialized = serializeRuntimeManifest(candidate);
351
+ const parsed = parseRuntimeManifest(serialized);
352
+ if (!parsed.ok) {
353
+ throw new Error("Serialized RuntimeManifest did not parse.");
354
+ }
355
+ return parsed.value;
356
+ }
357
+ function validateProjectFeatures(features) {
358
+ const featureIds = new Map();
359
+ const featureRoots = new Map();
360
+ for (const parsedFeature of features) {
361
+ const featureId = parsedFeature.feature.feature.id;
362
+ const existingIdPath = featureIds.get(featureId);
363
+ if (existingIdPath !== undefined) {
364
+ throw new InputFailure("configuration", "feature_contract.duplicate_feature_id", `Feature id ${JSON.stringify(featureId)} is declared by both ${JSON.stringify(existingIdPath)} and ${JSON.stringify(parsedFeature.path)}.`, parsedFeature.path);
365
+ }
366
+ featureIds.set(featureId, parsedFeature.path);
367
+ const featureRoot = path.posix.dirname(parsedFeature.path);
368
+ const existingRootPath = featureRoots.get(featureRoot);
369
+ if (existingRootPath !== undefined) {
370
+ throw new InputFailure("configuration", "feature_contract.duplicate_root", `Feature root ${JSON.stringify(featureRoot)} contains both ${JSON.stringify(existingRootPath)} and ${JSON.stringify(parsedFeature.path)}.`, parsedFeature.path);
371
+ }
372
+ featureRoots.set(featureRoot, parsedFeature.path);
373
+ }
374
+ }
375
+ function featureTemplatePaths(featureContractPath, feature, discovered, requireStaticHtml) {
210
376
  const featureRoot = path.posix.dirname(featureContractPath);
211
377
  const templates = new Set();
212
378
  for (const action of feature.actions) {
213
379
  const templateFile = assertRelativePosixPath(action.form.template, "form template");
214
380
  const projectTemplate = joinProjectPath(featureRoot, templateFile);
381
+ if (requireStaticHtml && !projectTemplate.endsWith(".html")) {
382
+ throw new InputFailure("configuration", "form.template_kind_unsupported", `Form template ${JSON.stringify(projectTemplate)} must be static HTML unless project.formIndex is configured.`, projectTemplate);
383
+ }
215
384
  if (!discovered.has(projectTemplate)) {
216
385
  throw new InputFailure("configuration", "form.template_not_discovered", `Form template ${JSON.stringify(projectTemplate)} is not a discovered source file.`, projectTemplate);
217
386
  }
@@ -344,7 +513,9 @@ function createInspection(project) {
344
513
  },
345
514
  forms: {
346
515
  state: "checked",
347
- basis: "static-html-form-index",
516
+ basis: project.formIndex === undefined
517
+ ? "static-html-form-index"
518
+ : "form-index",
348
519
  },
349
520
  handlers: {
350
521
  state: "checked",
@@ -1 +1 @@
1
- {"version":3,"file":"check-project.js","sourceRoot":"","sources":["../../src/check-project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check-project.js","sourceRoot":"","sources":["../../src/check-project.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,34 @@
1
+ export interface ProjectFileIdentity {
2
+ readonly ctimeNs: bigint;
3
+ readonly dev: bigint;
4
+ readonly ino: bigint;
5
+ readonly mtimeNs: bigint;
6
+ readonly size: bigint;
7
+ }
8
+ interface ProjectFileStat extends ProjectFileIdentity {
9
+ readonly isDirectory: () => boolean;
10
+ readonly isFile: () => boolean;
11
+ readonly isSymbolicLink: () => boolean;
12
+ }
13
+ interface ProjectFileHandle {
14
+ readonly close: () => Promise<void>;
15
+ readonly read: (buffer: Buffer, offset: number, length: number, position: number) => Promise<{
16
+ readonly bytesRead: number;
17
+ }>;
18
+ readonly stat: () => Promise<ProjectFileStat>;
19
+ }
20
+ export interface ProjectFileOperations {
21
+ readonly lstat: (file: string) => Promise<ProjectFileStat>;
22
+ readonly open: (file: string) => Promise<ProjectFileHandle>;
23
+ }
24
+ export interface ProjectSnapshot {
25
+ readonly files: readonly string[];
26
+ readonly evidenceFiles: readonly string[];
27
+ readonly readFile: (relativePath: string, maxFileBytes: number) => Promise<string>;
28
+ }
1
29
  export declare function assertProjectRoot(root: string): Promise<string>;
2
- export declare function readProjectFile(root: string, relativePath: string, maxFileBytes: number): Promise<string>;
3
- export declare function discoverProjectFiles(root: string, sourceRoot: string, maxFiles: number, maxTotalBytes: number, maxDepth: number): Promise<readonly string[]>;
30
+ export declare function readProjectFile(root: string, relativePath: string, maxFileBytes: number, operations?: ProjectFileOperations): Promise<string>;
31
+ export declare function readProjectSnapshotFile(root: string, relativePath: string, maxFileBytes: number, expected: ProjectFileIdentity, operations?: ProjectFileOperations): Promise<string>;
32
+ export declare function discoverProjectSnapshot(root: string, sourceRoot: string, maxFiles: number, maxTotalBytes: number, maxDepth: number, explicitEvidence?: readonly string[]): Promise<ProjectSnapshot>;
33
+ export {};
4
34
  //# sourceMappingURL=filesystem.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/filesystem.ts"],"names":[],"mappings":"AAWA,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBrE;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAsCjB;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAyE5B"}
1
+ {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/filesystem.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,eAAgB,SAAQ,mBAAmB;IACnD,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC;CACxC;AAED,UAAU,iBAAiB;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,CACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3D,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACpF;AAeD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBrE;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,UAAU,GAAE,qBAAiD,GAC5D,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,mBAAmB,EAC7B,UAAU,GAAE,qBAAiD,GAC5D,OAAO,CAAC,MAAM,CAAC,CAGjB;AAqND,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,GAAE,SAAS,MAAM,EAAO,GACvC,OAAO,CAAC,eAAe,CAAC,CAiH1B"}