@0disoft/mensor-compiler 0.2.0 → 0.9.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 (48) hide show
  1. package/README.md +70 -0
  2. package/dist/src/check-project.d.ts +2 -1
  3. package/dist/src/check-project.d.ts.map +1 -1
  4. package/dist/src/check-project.js +191 -26
  5. package/dist/src/check-project.js.map +1 -1
  6. package/dist/src/filesystem.d.ts +31 -2
  7. package/dist/src/filesystem.d.ts.map +1 -1
  8. package/dist/src/filesystem.js +142 -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/html-forms.d.ts.map +1 -1
  21. package/dist/src/html-forms.js +150 -87
  22. package/dist/src/html-forms.js.map +1 -1
  23. package/dist/src/index.d.ts +3 -2
  24. package/dist/src/index.d.ts.map +1 -1
  25. package/dist/src/index.js +2 -1
  26. package/dist/src/index.js.map +1 -1
  27. package/dist/src/locations.d.ts +7 -0
  28. package/dist/src/locations.d.ts.map +1 -1
  29. package/dist/src/locations.js +77 -67
  30. package/dist/src/locations.js.map +1 -1
  31. package/dist/src/module-boundary-rule.d.ts +2 -0
  32. package/dist/src/module-boundary-rule.d.ts.map +1 -1
  33. package/dist/src/module-boundary-rule.js +89 -55
  34. package/dist/src/module-boundary-rule.js.map +1 -1
  35. package/dist/src/route-index.d.ts +6 -1
  36. package/dist/src/route-index.d.ts.map +1 -1
  37. package/dist/src/route-index.js +26 -8
  38. package/dist/src/route-index.js.map +1 -1
  39. package/dist/src/route-rule.d.ts +3 -2
  40. package/dist/src/route-rule.d.ts.map +1 -1
  41. package/dist/src/route-rule.js +2 -7
  42. package/dist/src/route-rule.js.map +1 -1
  43. package/dist/src/types.d.ts +19 -1
  44. package/dist/src/types.d.ts.map +1 -1
  45. package/dist/src/typescript-source.d.ts.map +1 -1
  46. package/dist/src/typescript-source.js +206 -45
  47. package/dist/src/typescript-source.js.map +1 -1
  48. package/package.json +2 -2
package/README.md ADDED
@@ -0,0 +1,70 @@
1
+ # @0disoft/mensor-compiler
2
+
3
+ Deterministic source contract checker for Mensor projects.
4
+
5
+ ## Install
6
+
7
+ ```text
8
+ pnpm add @0disoft/mensor-compiler
9
+ ```
10
+
11
+ Node.js 22 or newer is required.
12
+
13
+ ## Check A Project
14
+
15
+ ```js
16
+ import { checkProject } from "@0disoft/mensor-compiler";
17
+
18
+ const result = await checkProject({ root: process.cwd() });
19
+
20
+ if (!result.ok) {
21
+ process.exitCode = 1;
22
+ }
23
+
24
+ process.stdout.write(`${JSON.stringify(result.report, null, 2)}\n`);
25
+ ```
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
+
48
+ The default result contains DiagnosticReport v1. Select Check Output v2
49
+ explicitly when inspection coverage is required:
50
+
51
+ ```js
52
+ const result = await checkProject({
53
+ root: process.cwd(),
54
+ reportVersion: 2,
55
+ });
56
+ ```
57
+
58
+ Contract failures are returned as data. Unexpected I/O or compiler failures
59
+ remain exceptions. The compiler reads supported project files but does not
60
+ execute project source or configuration, spawn framework tools, install
61
+ dependencies, or access the network.
62
+
63
+ ## Documentation
64
+
65
+ - [Library API](https://github.com/0disoft/mensor/blob/main/docs/library/public-api.md)
66
+ - [System boundary](https://github.com/0disoft/mensor/blob/main/docs/architecture/00-system-boundary.md)
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)
69
+
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 {
@@ -12,4 +12,5 @@ export interface MeasuredCheckProjectV2Result {
12
12
  }
13
13
  export declare function checkProjectWithMetrics(options: CheckProjectV2Options): Promise<MeasuredCheckProjectV2Result>;
14
14
  export declare function checkProjectWithMetrics(options: CheckProjectOptions): 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,GAC7B,OAAO,CAAC,4BAA4B,CAAC,CAAC;AACzC,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,0BAA0B,CAAC,CAAC;AAavC,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,7 +21,7 @@ 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;
@@ -29,12 +29,49 @@ export async function checkProject(options) {
29
29
  export async function checkProjectWithMetrics(options) {
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));
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
+ 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
+ }
38
75
  async function checkProjectInternal(options, timing) {
39
76
  try {
40
77
  const reportVersion = options.reportVersion ?? 1;
@@ -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));
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);
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,75 @@ 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
+ formIndex = await verifyExternalFormIndex({
205
+ value: formIndexResult.value,
206
+ discovered,
207
+ readSource,
135
208
  });
136
- diagnostics.push(...measureSync(timing, "ruleEvaluation", () => checkFeaturePlacement(safeFeatureContractPath, featureText, featureResult.value, project.fileRoles, discovered)));
209
+ const indexedPaths = new Set(formIndex.documents.map((document) => document.path));
210
+ const missingTemplate = projectTemplatePaths.find((template) => !indexedPaths.has(template));
211
+ if (missingTemplate !== undefined) {
212
+ throw new InputFailure("configuration", "form_index.document_missing", `FormIndex has no document for ${JSON.stringify(missingTemplate)}.`, missingTemplate);
213
+ }
214
+ }
215
+ for (const parsedFeature of parsedFeatures) {
216
+ diagnostics.push(...measureSync(timing, "ruleEvaluation", () => checkFeaturePlacement(parsedFeature.path, parsedFeature.text, parsedFeature.feature, project.fileRoles, discovered)));
137
217
  diagnostics.push(...(await measure(timing, "ruleEvaluation", () => checkFeatureHandlers({
138
- featureContractPath: safeFeatureContractPath,
139
- featureText,
140
- feature: featureResult.value,
218
+ featureContractPath: parsedFeature.path,
219
+ featureText: parsedFeature.text,
220
+ feature: parsedFeature.feature,
141
221
  discovered,
142
222
  sourceFacts,
143
223
  }))));
144
224
  if (routeIndex !== undefined && routeIndexPath !== undefined) {
145
225
  diagnostics.push(...measureSync(timing, "ruleEvaluation", () => checkFeatureRoutes({
146
- featureContractPath: safeFeatureContractPath,
147
- featureText,
148
- feature: featureResult.value,
226
+ featureContractPath: parsedFeature.path,
227
+ featureText: parsedFeature.text,
228
+ feature: parsedFeature.feature,
149
229
  projectContractPath: configFile,
150
230
  projectText,
151
231
  routeIndexPath,
152
232
  routeIndex,
153
233
  })));
154
234
  }
155
- const templatePaths = featureTemplatePaths(safeFeatureContractPath, featureResult.value, discovered);
156
- const formIndex = await formIndexProvider.getIndex(templatePaths);
157
235
  diagnostics.push(...measureSync(timing, "ruleEvaluation", () => checkFeatureForms({
158
- featureContractPath: safeFeatureContractPath,
159
- featureText,
160
- feature: featureResult.value,
236
+ featureContractPath: parsedFeature.path,
237
+ featureText: parsedFeature.text,
238
+ feature: parsedFeature.feature,
161
239
  formIndex,
162
240
  })));
163
241
  }
@@ -181,6 +259,9 @@ async function checkProjectInternal(options, timing) {
181
259
  return {
182
260
  ok: true,
183
261
  report: createReport(producerVersion, diagnostics, reportVersion, project),
262
+ features: parsedFeatures,
263
+ producerVersion,
264
+ readSource,
184
265
  };
185
266
  }
186
267
  catch (error) {
@@ -206,12 +287,94 @@ async function checkProjectInternal(options, timing) {
206
287
  });
207
288
  }
208
289
  }
209
- function featureTemplatePaths(featureContractPath, feature, discovered) {
290
+ function publicCheckResult(result) {
291
+ return result.ok
292
+ ? { ok: true, report: result.report }
293
+ : result;
294
+ }
295
+ async function createRuntimeManifest(features, readSource, producerVersion) {
296
+ const pagesByRoute = new Map();
297
+ const actionIds = new Set();
298
+ const actionRoutes = new Set();
299
+ const actions = [];
300
+ for (const parsed of features) {
301
+ const featureRoot = path.posix.dirname(parsed.path);
302
+ for (const action of [...parsed.feature.actions].sort((left, right) => compareText(left.id, right.id))) {
303
+ if (actionIds.has(action.id)) {
304
+ throw new InputFailure("configuration", "runtime_manifest.duplicate_handler_id", `Runtime handler id ${JSON.stringify(action.id)} is declared more than once.`, parsed.path);
305
+ }
306
+ actionIds.add(action.id);
307
+ const routeKey = `${action.route.method}\u0000${action.route.path}`;
308
+ if (actionRoutes.has(routeKey)) {
309
+ 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);
310
+ }
311
+ actionRoutes.add(routeKey);
312
+ actions.push({
313
+ id: action.id,
314
+ method: "POST",
315
+ path: action.route.path,
316
+ handlerId: action.id,
317
+ input: action.input,
318
+ });
319
+ if (action.form.documentPath !== undefined) {
320
+ const template = joinProjectPath(featureRoot, action.form.template);
321
+ const html = await readSource(template);
322
+ const page = {
323
+ id: `${parsed.feature.feature.id}.form.${action.form.id}`,
324
+ method: "GET",
325
+ path: action.form.documentPath,
326
+ html,
327
+ };
328
+ const existing = pagesByRoute.get(page.path);
329
+ if (existing !== undefined && existing.html !== page.html) {
330
+ throw new InputFailure("configuration", "runtime_manifest.page_conflict", `GET page ${JSON.stringify(page.path)} is backed by different templates.`, parsed.path);
331
+ }
332
+ if (existing === undefined) {
333
+ pagesByRoute.set(page.path, page);
334
+ }
335
+ }
336
+ }
337
+ }
338
+ const candidate = {
339
+ manifestVersion: 1,
340
+ producer: { name: "mensor", version: producerVersion },
341
+ pages: [...pagesByRoute.values()],
342
+ actions,
343
+ };
344
+ const serialized = serializeRuntimeManifest(candidate);
345
+ const parsed = parseRuntimeManifest(serialized);
346
+ if (!parsed.ok) {
347
+ throw new Error("Serialized RuntimeManifest did not parse.");
348
+ }
349
+ return parsed.value;
350
+ }
351
+ function validateProjectFeatures(features) {
352
+ const featureIds = new Map();
353
+ const featureRoots = new Map();
354
+ for (const parsedFeature of features) {
355
+ const featureId = parsedFeature.feature.feature.id;
356
+ const existingIdPath = featureIds.get(featureId);
357
+ if (existingIdPath !== undefined) {
358
+ 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);
359
+ }
360
+ featureIds.set(featureId, parsedFeature.path);
361
+ const featureRoot = path.posix.dirname(parsedFeature.path);
362
+ const existingRootPath = featureRoots.get(featureRoot);
363
+ if (existingRootPath !== undefined) {
364
+ 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);
365
+ }
366
+ featureRoots.set(featureRoot, parsedFeature.path);
367
+ }
368
+ }
369
+ function featureTemplatePaths(featureContractPath, feature, discovered, requireStaticHtml) {
210
370
  const featureRoot = path.posix.dirname(featureContractPath);
211
371
  const templates = new Set();
212
372
  for (const action of feature.actions) {
213
373
  const templateFile = assertRelativePosixPath(action.form.template, "form template");
214
374
  const projectTemplate = joinProjectPath(featureRoot, templateFile);
375
+ if (requireStaticHtml && !projectTemplate.endsWith(".html")) {
376
+ throw new InputFailure("configuration", "form.template_kind_unsupported", `Form template ${JSON.stringify(projectTemplate)} must be static HTML unless project.formIndex is configured.`, projectTemplate);
377
+ }
215
378
  if (!discovered.has(projectTemplate)) {
216
379
  throw new InputFailure("configuration", "form.template_not_discovered", `Form template ${JSON.stringify(projectTemplate)} is not a discovered source file.`, projectTemplate);
217
380
  }
@@ -344,7 +507,9 @@ function createInspection(project) {
344
507
  },
345
508
  forms: {
346
509
  state: "checked",
347
- basis: "static-html-form-index",
510
+ basis: project.formIndex === undefined
511
+ ? "static-html-form-index"
512
+ : "form-index",
348
513
  },
349
514
  handlers: {
350
515
  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,33 @@
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 readFile: (relativePath: string, maxFileBytes: number) => Promise<string>;
27
+ }
1
28
  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[]>;
29
+ export declare function readProjectFile(root: string, relativePath: string, maxFileBytes: number, operations?: ProjectFileOperations): Promise<string>;
30
+ export declare function readProjectSnapshotFile(root: string, relativePath: string, maxFileBytes: number, expected: ProjectFileIdentity, operations?: ProjectFileOperations): Promise<string>;
31
+ export declare function discoverProjectSnapshot(root: string, sourceRoot: string, maxFiles: number, maxTotalBytes: number, maxDepth: number): Promise<ProjectSnapshot>;
32
+ export {};
4
33
  //# 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,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;AA4MD,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,eAAe,CAAC,CA0F1B"}