@0disoft/mensor-cli 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.
@@ -0,0 +1,301 @@
1
+ import { createHash } from "node:crypto";
2
+ import { lstat, open, realpath } from "node:fs/promises";
3
+ import * as path from "node:path";
4
+ import { extractStaticHtmlFormDocument } from "@0disoft/mensor-compiler";
5
+ import { serializeFormIndex, } from "@0disoft/mensor-contract";
6
+ import ts from "@typescript/typescript6";
7
+ const maxSourceBytes = 1_048_576;
8
+ const identifierPattern = /^[A-Za-z_$][A-Za-z0-9_$]*$/u;
9
+ export class TypeScriptTemplateFormIndexError extends Error {
10
+ code;
11
+ file;
12
+ constructor(code, message, file) {
13
+ super(message);
14
+ this.code = code;
15
+ this.file = file;
16
+ this.name = "TypeScriptTemplateFormIndexError";
17
+ }
18
+ }
19
+ export async function produceTypeScriptTemplateFormIndex(options) {
20
+ if (options.sources.length === 0) {
21
+ throw new TypeScriptTemplateFormIndexError("form_indexer.source_required", "At least one root-relative TypeScript template source is required.");
22
+ }
23
+ if (options.tags.length === 0) {
24
+ throw new TypeScriptTemplateFormIndexError("form_indexer.tag_required", "At least one tagged-template identifier is required.");
25
+ }
26
+ const tags = new Set();
27
+ for (const tag of options.tags) {
28
+ if (!identifierPattern.test(tag)) {
29
+ throw new TypeScriptTemplateFormIndexError("form_indexer.tag_invalid", `Template tag ${JSON.stringify(tag)} must be a JavaScript identifier.`);
30
+ }
31
+ tags.add(tag);
32
+ }
33
+ const root = await realpath(options.root).catch(() => {
34
+ throw new TypeScriptTemplateFormIndexError("form_indexer.root_invalid", "The selected project root could not be resolved.");
35
+ });
36
+ const documents = [];
37
+ for (const sourcePath of [...new Set(options.sources.map(normalizeSourcePath))].sort(compareText)) {
38
+ const source = await readSource(root, sourcePath);
39
+ const extracted = extractDocument(sourcePath, source.text, source.digest, tags);
40
+ if (extracted.templateCount === 0) {
41
+ throw new TypeScriptTemplateFormIndexError("form_indexer.no_templates", "No selected tagged template was found in the explicit source file.", sourcePath);
42
+ }
43
+ documents.push(extracted.document);
44
+ }
45
+ const value = {
46
+ schemaVersion: 1,
47
+ producer: {
48
+ name: "mensor-typescript-template-form-indexer",
49
+ version: options.producerVersion,
50
+ },
51
+ documents,
52
+ };
53
+ try {
54
+ return { value, text: serializeFormIndex(value) };
55
+ }
56
+ catch (error) {
57
+ throw new TypeScriptTemplateFormIndexError("form_indexer.output_invalid", error instanceof Error ? error.message : "The produced FormIndex is invalid.");
58
+ }
59
+ }
60
+ function extractDocument(file, sourceText, digest, tags) {
61
+ const sourceFile = ts.createSourceFile(file, sourceText, ts.ScriptTarget.ES2022, true, scriptKind(file));
62
+ const diagnostics = sourceFileSyntaxDiagnostics(sourceFile, sourceText, file)
63
+ .filter((diagnostic) => diagnostic.category === ts.DiagnosticCategory.Error);
64
+ if (diagnostics.length > 0) {
65
+ throw new TypeScriptTemplateFormIndexError("form_indexer.source_syntax_invalid", "TypeScript template source contains syntax errors and cannot be indexed.", file);
66
+ }
67
+ const forms = [];
68
+ const dynamicRanges = [];
69
+ let templateCount = 0;
70
+ const nodes = [sourceFile];
71
+ while (nodes.length > 0) {
72
+ const node = nodes.pop();
73
+ if (node === undefined)
74
+ continue;
75
+ if (ts.isTaggedTemplateExpression(node)
76
+ && ts.isIdentifier(node.tag)
77
+ && tags.has(node.tag.text)) {
78
+ templateCount += 1;
79
+ const template = node.template;
80
+ if (!ts.isNoSubstitutionTemplateLiteral(template)) {
81
+ dynamicRanges.push(nodeRange(template, sourceFile));
82
+ }
83
+ else {
84
+ const contentStart = template.getStart(sourceFile) + 1;
85
+ const contentEnd = template.getEnd() - 1;
86
+ const html = sourceText.slice(contentStart, contentEnd);
87
+ const base = sourceFile.getLineAndCharacterOfPosition(contentStart);
88
+ const extracted = extractStaticHtmlFormDocument(file, html);
89
+ forms.push(...extracted.forms.map((form) => offsetForm(form, base)));
90
+ }
91
+ }
92
+ node.forEachChild((child) => {
93
+ nodes.push(child);
94
+ });
95
+ }
96
+ forms.sort((left, right) => compareRange(left.range, right.range));
97
+ dynamicRanges.sort(compareRange);
98
+ const dynamicRange = dynamicRanges[0];
99
+ return {
100
+ templateCount,
101
+ document: {
102
+ path: file,
103
+ contentDigest: digest,
104
+ sourceKind: "mensor/typescript-tagged-html",
105
+ inspection: dynamicRange === undefined
106
+ ? { state: "complete" }
107
+ : {
108
+ state: "incomplete",
109
+ reason: "dynamic-interpolation",
110
+ range: dynamicRange,
111
+ },
112
+ forms,
113
+ },
114
+ };
115
+ }
116
+ function offsetForm(form, base) {
117
+ return {
118
+ identity: offsetEvidence(form.identity, base),
119
+ method: offsetEvidence(form.method, base),
120
+ action: form.action.state === "current-document"
121
+ ? { state: "current-document", range: offsetRange(form.action.range, base) }
122
+ : offsetEvidence(form.action, base),
123
+ range: offsetRange(form.range, base),
124
+ controls: form.controls.map((control) => offsetControl(control, base)),
125
+ };
126
+ }
127
+ function offsetControl(control, base) {
128
+ return {
129
+ name: offsetEvidence(control.name, base),
130
+ controlKind: offsetEvidence(control.controlKind, base),
131
+ inputType: offsetEvidence(control.inputType, base),
132
+ multiple: offsetEvidence(control.multiple, base),
133
+ multiplicity: offsetEvidence(control.multiplicity, base),
134
+ successful: offsetEvidence(control.successful, base),
135
+ range: offsetRange(control.range, base),
136
+ };
137
+ }
138
+ function offsetEvidence(evidence, base) {
139
+ if (evidence.state === "absent") {
140
+ return evidence.range === undefined
141
+ ? { state: "absent" }
142
+ : { state: "absent", range: offsetRange(evidence.range, base) };
143
+ }
144
+ if (evidence.state === "known") {
145
+ return {
146
+ state: "known",
147
+ value: evidence.value,
148
+ range: offsetRange(evidence.range, base),
149
+ };
150
+ }
151
+ return evidence.state === "dynamic"
152
+ ? {
153
+ state: "dynamic",
154
+ reason: evidence.reason,
155
+ range: offsetRange(evidence.range, base),
156
+ }
157
+ : {
158
+ state: "unsupported",
159
+ reason: evidence.reason,
160
+ range: offsetRange(evidence.range, base),
161
+ };
162
+ }
163
+ function offsetRange(range, base) {
164
+ return {
165
+ start: offsetPosition(range.start, base),
166
+ end: offsetPosition(range.end, base),
167
+ };
168
+ }
169
+ function offsetPosition(position, base) {
170
+ return {
171
+ line: base.line + position.line,
172
+ character: position.line === 0
173
+ ? base.character + position.character
174
+ : position.character,
175
+ };
176
+ }
177
+ function nodeRange(node, sourceFile) {
178
+ const start = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile));
179
+ const end = sourceFile.getLineAndCharacterOfPosition(node.getEnd());
180
+ return {
181
+ start: { line: start.line, character: start.character },
182
+ end: { line: end.line, character: end.character },
183
+ };
184
+ }
185
+ async function readSource(root, relativePath) {
186
+ const absolutePath = path.resolve(root, relativePath);
187
+ if (!isWithin(root, absolutePath)) {
188
+ throw new TypeScriptTemplateFormIndexError("form_indexer.source_outside_root", "Template source resolves outside the selected project root.", relativePath);
189
+ }
190
+ await rejectSymbolicLinkComponents(root, absolutePath, relativePath);
191
+ let handle;
192
+ try {
193
+ handle = await open(absolutePath, "r");
194
+ const before = await handle.stat();
195
+ if (!before.isFile()) {
196
+ throw sourceFailure("form_indexer.source_not_file", "Template source must be a regular file.", relativePath);
197
+ }
198
+ if (before.size > maxSourceBytes) {
199
+ throw sourceFailure("form_indexer.source_too_large", `Template source exceeds ${maxSourceBytes} bytes.`, relativePath);
200
+ }
201
+ const bytes = Buffer.alloc(before.size + 1);
202
+ const { bytesRead } = await handle.read(bytes, 0, bytes.length, 0);
203
+ const after = await handle.stat();
204
+ if (bytesRead > maxSourceBytes || !sameFile(before, after)) {
205
+ throw sourceFailure("form_indexer.source_changed", "Template source changed while it was read.", relativePath);
206
+ }
207
+ const sourceBytes = bytes.subarray(0, bytesRead);
208
+ let text;
209
+ try {
210
+ text = new TextDecoder("utf-8", { fatal: true }).decode(sourceBytes);
211
+ }
212
+ catch {
213
+ throw sourceFailure("form_indexer.source_encoding_invalid", "Template source must be valid UTF-8.", relativePath);
214
+ }
215
+ return {
216
+ text,
217
+ digest: `sha256:${createHash("sha256").update(sourceBytes).digest("hex")}`,
218
+ };
219
+ }
220
+ catch (error) {
221
+ if (error instanceof TypeScriptTemplateFormIndexError)
222
+ throw error;
223
+ throw sourceFailure("form_indexer.source_read_failed", "Template source could not be read.", relativePath);
224
+ }
225
+ finally {
226
+ await handle?.close().catch(() => undefined);
227
+ }
228
+ }
229
+ async function rejectSymbolicLinkComponents(root, absolutePath, relativePath) {
230
+ const relative = path.relative(root, absolutePath);
231
+ let current = root;
232
+ for (const segment of relative.split(path.sep).filter(Boolean)) {
233
+ current = path.join(current, segment);
234
+ const stats = await lstat(current).catch(() => undefined);
235
+ if (stats === undefined) {
236
+ throw sourceFailure("form_indexer.source_read_failed", "Template source could not be read.", relativePath);
237
+ }
238
+ if (stats.isSymbolicLink()) {
239
+ throw sourceFailure("form_indexer.source_symlink", "Template source must not use symbolic-link components.", relativePath);
240
+ }
241
+ }
242
+ }
243
+ function normalizeSourcePath(value) {
244
+ if (value.length === 0
245
+ || path.isAbsolute(value)
246
+ || path.win32.isAbsolute(value)
247
+ || value.includes("\\")) {
248
+ throw sourceFailure("form_indexer.source_path_invalid", "Template source must be a root-relative POSIX path.", value);
249
+ }
250
+ const segments = value.split("/");
251
+ if (segments.some((segment) => segment === "" || segment === "." || segment === "..")) {
252
+ throw sourceFailure("form_indexer.source_path_invalid", "Template source path is not canonical.", value);
253
+ }
254
+ return value;
255
+ }
256
+ function sourceFailure(code, message, file) {
257
+ return new TypeScriptTemplateFormIndexError(code, message, file);
258
+ }
259
+ function sameFile(left, right) {
260
+ return left.dev === right.dev
261
+ && left.ino === right.ino
262
+ && left.size === right.size
263
+ && left.mtimeMs === right.mtimeMs
264
+ && left.ctimeMs === right.ctimeMs;
265
+ }
266
+ function isWithin(root, candidate) {
267
+ const relative = path.relative(root, candidate);
268
+ return relative === "" || (relative !== ".."
269
+ && !relative.startsWith(`..${path.sep}`)
270
+ && !path.isAbsolute(relative));
271
+ }
272
+ function scriptKind(fileName) {
273
+ const extension = path.extname(fileName).toLowerCase();
274
+ if (extension === ".tsx")
275
+ return ts.ScriptKind.TSX;
276
+ if (extension === ".jsx")
277
+ return ts.ScriptKind.JSX;
278
+ if ([".js", ".mjs", ".cjs"].includes(extension))
279
+ return ts.ScriptKind.JS;
280
+ return ts.ScriptKind.TS;
281
+ }
282
+ function sourceFileSyntaxDiagnostics(sourceFile, sourceText, fileName) {
283
+ const parserDiagnostics = sourceFile.parseDiagnostics;
284
+ if (parserDiagnostics !== undefined)
285
+ return parserDiagnostics;
286
+ return ts.transpileModule(sourceText, {
287
+ fileName,
288
+ reportDiagnostics: true,
289
+ compilerOptions: { noEmit: true, target: ts.ScriptTarget.ES2022 },
290
+ }).diagnostics ?? [];
291
+ }
292
+ function compareText(left, right) {
293
+ return left < right ? -1 : left > right ? 1 : 0;
294
+ }
295
+ function compareRange(left, right) {
296
+ return left.start.line - right.start.line
297
+ || left.start.character - right.start.character
298
+ || left.end.line - right.end.line
299
+ || left.end.character - right.end.character;
300
+ }
301
+ //# sourceMappingURL=typescript-template-form-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript-template-form-index.js","sourceRoot":"","sources":["../../src/typescript-template-form-index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@0disoft/mensor-cli",
3
- "version": "0.2.0",
3
+ "version": "0.9.0",
4
4
  "description": "CLI for checking Mensor project contracts.",
5
5
  "license": "Apache-2.0",
6
6
  "publishConfig": {
@@ -43,6 +43,8 @@
43
43
  }
44
44
  },
45
45
  "dependencies": {
46
- "@0disoft/mensor-compiler": "0.2.0"
46
+ "@typescript/typescript6": "6.0.2",
47
+ "@0disoft/mensor-compiler": "0.9.0",
48
+ "@0disoft/mensor-contract": "0.9.0"
47
49
  }
48
50
  }