@0disoft/mensor-cli 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 (37) hide show
  1. package/README.md +70 -1
  2. package/dist/src/cli.d.ts.map +1 -1
  3. package/dist/src/cli.js +247 -11
  4. package/dist/src/cli.js.map +1 -1
  5. package/dist/src/hono-jsx-activation.d.ts +5 -0
  6. package/dist/src/hono-jsx-activation.d.ts.map +1 -0
  7. package/dist/src/hono-jsx-activation.js +373 -0
  8. package/dist/src/hono-jsx-activation.js.map +1 -0
  9. package/dist/src/hono-jsx-form-index.d.ts +14 -0
  10. package/dist/src/hono-jsx-form-index.d.ts.map +1 -0
  11. package/dist/src/hono-jsx-form-index.js +58 -0
  12. package/dist/src/hono-jsx-form-index.js.map +1 -0
  13. package/dist/src/hono-route-index.d.ts +18 -0
  14. package/dist/src/hono-route-index.d.ts.map +1 -0
  15. package/dist/src/hono-route-index.js +292 -0
  16. package/dist/src/hono-route-index.js.map +1 -0
  17. package/dist/src/index.d.ts +1 -0
  18. package/dist/src/index.d.ts.map +1 -1
  19. package/dist/src/index.js +1 -0
  20. package/dist/src/index.js.map +1 -1
  21. package/dist/src/manifest-output.d.ts +3 -0
  22. package/dist/src/manifest-output.d.ts.map +1 -0
  23. package/dist/src/manifest-output.js +70 -0
  24. package/dist/src/manifest-output.js.map +1 -0
  25. package/dist/src/sarif.d.ts +3 -0
  26. package/dist/src/sarif.d.ts.map +1 -0
  27. package/dist/src/sarif.js +99 -0
  28. package/dist/src/sarif.js.map +1 -0
  29. package/dist/src/template-source.d.ts +11 -0
  30. package/dist/src/template-source.d.ts.map +1 -0
  31. package/dist/src/template-source.js +112 -0
  32. package/dist/src/template-source.js.map +1 -0
  33. package/dist/src/typescript-template-form-index.d.ts +14 -0
  34. package/dist/src/typescript-template-form-index.d.ts.map +1 -0
  35. package/dist/src/typescript-template-form-index.js +204 -0
  36. package/dist/src/typescript-template-form-index.js.map +1 -0
  37. package/package.json +4 -2
@@ -0,0 +1,373 @@
1
+ import { parseJsonc } from "@0disoft/mensor-contract";
2
+ import ts from "@typescript/typescript6";
3
+ import { TypeScriptTemplateFormIndexError } from "./template-source.js";
4
+ const rendererTags = new Set(["html", "head", "body", "meta", "title", "link", "div", "span", "main", "section", "header", "footer"]);
5
+ export function assertHonoJsxConfiguration(file, source) {
6
+ const result = parseJsonc(source);
7
+ if (!result.ok || !isObject(result.value))
8
+ invalid(file, "Expected an unambiguous JSONC JSX configuration.");
9
+ const value = result.value;
10
+ const options = value["compilerOptions"];
11
+ if (value["extends"] !== undefined || value["references"] !== undefined || !isObject(options)
12
+ || !["react-jsx", "react-jsxdev"].includes(String(options["jsx"]))
13
+ || options["jsxImportSource"] !== "hono/jsx"
14
+ || ["jsxFactory", "jsxFragmentFactory", "reactNamespace", "plugins", "paths", "baseUrl"].some((key) => options[key] !== undefined)) {
15
+ invalid(file, "Select a standalone automatic-JSX configuration with jsxImportSource hono/jsx and no inherited or custom transform settings.", "configuration_unsupported");
16
+ }
17
+ }
18
+ export function assertHonoJsxBuild(file, source) {
19
+ const parsed = parseSource(file, source);
20
+ const define = importedName(parsed, "vite", "defineConfig");
21
+ const plugin = parsed.statements.find((node) => ts.isImportDeclaration(node) && ts.isStringLiteral(node.moduleSpecifier)
22
+ && node.moduleSpecifier.text === "honox/vite" && !node.importClause?.isTypeOnly);
23
+ const exported = parsed.statements.find(ts.isExportAssignment);
24
+ if (!define || !plugin?.importClause?.name || parsed.statements.length !== 3
25
+ || !exported || exported.isExportEquals || !ts.isCallExpression(exported.expression)
26
+ || !ts.isIdentifier(exported.expression.expression) || exported.expression.expression.text !== define
27
+ || exported.expression.arguments.length !== 1)
28
+ invalid(file, "Build configuration must directly export defineConfig with only the Vite and HonoX imports.");
29
+ const config = objectProperties(exported.expression.arguments[0], file);
30
+ if ([...config.keys()].some((key) => !["plugins", "esbuild", "build"].includes(key)))
31
+ invalid(file, "Unsupported build override.");
32
+ const plugins = config.get("plugins");
33
+ const entry = plugins && ts.isArrayLiteralExpression(plugins) ? plugins.elements[0] : undefined;
34
+ if (!plugins || !ts.isArrayLiteralExpression(plugins) || plugins.elements.length !== 1
35
+ || !entry || !ts.isCallExpression(entry) || !ts.isIdentifier(entry.expression)
36
+ || entry.expression.text !== plugin.importClause.name.text || entry.arguments.length !== 0) {
37
+ invalid(file, "Build must activate only the default honox() plugin without options.", "build_plugin_unsupported", plugins ?? parsed);
38
+ }
39
+ const jsx = objectProperties(config.get("esbuild"), file);
40
+ if (jsx.size !== 2 || literal(jsx.get("jsx")) !== "automatic" || literal(jsx.get("jsxImportSource")) !== "hono/jsx") {
41
+ invalid(file, "Build JSX settings must explicitly select automatic hono/jsx.", "runtime_mismatch", config.get("esbuild") ?? parsed);
42
+ }
43
+ const build = config.get("build");
44
+ if (build)
45
+ assertStaticBuild(build, file);
46
+ }
47
+ function objectProperties(node, file) {
48
+ if (!node || !ts.isObjectLiteralExpression(node))
49
+ invalid(file, "Expected static configuration properties.");
50
+ const result = new Map();
51
+ for (const property of node.properties) {
52
+ if (!ts.isPropertyAssignment(property) || (!ts.isIdentifier(property.name) && !ts.isStringLiteral(property.name))
53
+ || result.has(property.name.text))
54
+ invalid(file, "Computed, spread, duplicate or shorthand settings are unsupported.");
55
+ result.set(property.name.text, property.initializer);
56
+ }
57
+ return result;
58
+ }
59
+ function literal(node) {
60
+ return node && ts.isStringLiteral(node) ? node.text : undefined;
61
+ }
62
+ function assertStaticBuild(node, file) {
63
+ const properties = objectProperties(node, file);
64
+ const allowed = new Set(["outDir", "emptyOutDir", "ssr"]);
65
+ for (const [key, value] of properties) {
66
+ if (key === "rollupOptions") {
67
+ const rollup = objectProperties(value, file);
68
+ if (rollup.size !== 1 || !rollup.has("output"))
69
+ invalid(file, "Only static Rollup output filenames are supported.", "build_settings_unsupported", value);
70
+ const output = objectProperties(rollup.get("output"), file);
71
+ for (const [name, setting] of output) {
72
+ if (!["entryFileNames", "chunkFileNames", "assetFileNames"].includes(name) || !ts.isStringLiteral(setting)) {
73
+ invalid(file, "Rollup output accepts only literal entryFileNames, chunkFileNames and assetFileNames.", "build_settings_unsupported", setting);
74
+ }
75
+ }
76
+ continue;
77
+ }
78
+ if (!allowed.has(key) || (!ts.isStringLiteral(value) && value.kind !== ts.SyntaxKind.TrueKeyword
79
+ && value.kind !== ts.SyntaxKind.FalseKeyword))
80
+ invalid(file, "Custom bundler transforms and build settings are unsupported.", "build_settings_unsupported", value);
81
+ }
82
+ }
83
+ export function assertHonoJsxRoute(file, source) {
84
+ const parsed = parseSource(file, source);
85
+ const factory = importedName(parsed, "honox/factory", "createRoute");
86
+ const exported = parsed.statements.find(ts.isExportAssignment);
87
+ if (!factory || !exported || exported.isExportEquals || !ts.isCallExpression(exported.expression)
88
+ || !ts.isIdentifier(exported.expression.expression) || exported.expression.expression.text !== factory
89
+ || exported.expression.arguments.length !== 1) {
90
+ invalid(file, "Each selected route must directly default-export createRoute imported from honox/factory.");
91
+ }
92
+ const handler = exported.expression.arguments[0];
93
+ if (!handler || !ts.isArrowFunction(handler) || handler.modifiers?.length || handler.parameters.length !== 1
94
+ || !ts.isIdentifier(handler.parameters[0].name) || handler.parameters[0].initializer) {
95
+ invalid(file, "Route must use one synchronous context callback without middleware.");
96
+ }
97
+ let body = handler.body;
98
+ if (ts.isBlock(body)) {
99
+ const bindings = new Set([handler.parameters[0].name.text]);
100
+ const helperCache = new Map();
101
+ for (const statement of body.statements.slice(0, -1)) {
102
+ assertRoutePrelude(statement, bindings, file, parsed, handler.parameters[0].name.text, helperCache);
103
+ }
104
+ const returned = body.statements.at(-1);
105
+ if (!returned || !ts.isReturnStatement(returned) || !returned.expression) {
106
+ invalid(file, "Route callback must end with a direct return of context.render(JSX).", "route_prelude_unsupported", returned ?? body);
107
+ }
108
+ body = returned.expression;
109
+ }
110
+ while (ts.isParenthesizedExpression(body))
111
+ body = body.expression;
112
+ if (!ts.isCallExpression(body) || body.questionDotToken || !ts.isPropertyAccessExpression(body.expression)
113
+ || body.expression.questionDotToken || !ts.isIdentifier(body.expression.expression)
114
+ || body.expression.expression.text !== handler.parameters[0].name.text
115
+ || body.expression.name.text !== "render" || body.arguments.length !== 1) {
116
+ invalid(file, "Route callback must directly return context.render(JSX).");
117
+ }
118
+ let rendered = body.arguments[0];
119
+ while (ts.isParenthesizedExpression(rendered))
120
+ rendered = rendered.expression;
121
+ if (!ts.isJsxElement(rendered) && !ts.isJsxFragment(rendered) && !ts.isJsxSelfClosingElement(rendered)) {
122
+ invalid(file, "Route render argument must be direct JSX, not a variable or helper result.");
123
+ }
124
+ const pending = [parsed];
125
+ while (pending.length > 0) {
126
+ const node = pending.pop();
127
+ if (!node || node === rendered)
128
+ continue;
129
+ if (ts.isJsxElement(node) || ts.isJsxFragment(node) || ts.isJsxSelfClosingElement(node)) {
130
+ invalid(file, "JSX outside the selected route render argument is unsupported.");
131
+ }
132
+ ts.forEachChild(node, (child) => { pending.push(child); });
133
+ }
134
+ }
135
+ function assertRoutePrelude(statement, bindings, file, parsed, context, helperCache) {
136
+ if (!ts.isVariableStatement(statement) || statement.modifiers?.length
137
+ || statement.declarationList.flags !== ts.NodeFlags.Const) {
138
+ invalid(file, "Only supported const declarations may precede the route render return.", "route_prelude_unsupported", statement);
139
+ }
140
+ for (const declaration of statement.declarationList.declarations) {
141
+ const value = declaration.initializer;
142
+ if (!ts.isIdentifier(declaration.name) || bindings.has(declaration.name.text) || !value
143
+ || (ts.isCallExpression(value) && ts.isIdentifier(value.expression) && value.expression.text === declaration.name.text)
144
+ || !(ts.isStringLiteral(value) || ts.isNoSubstitutionTemplateLiteral(value)
145
+ || ts.isNumericLiteral(value) || value.kind === ts.SyntaxKind.TrueKeyword
146
+ || value.kind === ts.SyntaxKind.FalseKeyword || value.kind === ts.SyntaxKind.NullKeyword
147
+ || isReadOnlyContextHelper(value, parsed, context, bindings, helperCache))) {
148
+ invalid(file, "Route declarations require unique local names and scalar literals or a verified read-only context helper.", "route_prelude_unsupported", statement);
149
+ }
150
+ bindings.add(declaration.name.text);
151
+ }
152
+ }
153
+ function isReadOnlyContextHelper(value, source, context, bindings, cache) {
154
+ if (!ts.isCallExpression(value) || value.questionDotToken || !ts.isIdentifier(value.expression)
155
+ || bindings.has(value.expression.text) || value.arguments.length !== 1
156
+ || !ts.isIdentifier(value.arguments[0]) || value.arguments[0].text !== context)
157
+ return false;
158
+ const name = value.expression.text;
159
+ const cached = cache.get(name);
160
+ if (cached !== undefined)
161
+ return cached;
162
+ if (cache.size >= 16)
163
+ return false;
164
+ // Keep repeated calls bounded; each distinct helper is checked once per route.
165
+ const result = verifyContextHelper(name, source);
166
+ cache.set(name, result);
167
+ return result;
168
+ }
169
+ function verifyContextHelper(name, source) {
170
+ const factory = importedName(source, "honox/factory", "createRoute");
171
+ const registration = (node) => ts.isCallExpression(node) && !node.questionDotToken
172
+ && ts.isIdentifier(node.expression) && node.expression.text === factory
173
+ && node.arguments.length === 1 && ts.isArrowFunction(node.arguments[0]);
174
+ for (const statement of source.statements) {
175
+ if (ts.isFunctionDeclaration(statement) || ts.isTypeAliasDeclaration(statement)
176
+ || ts.isInterfaceDeclaration(statement) || ts.isEmptyStatement(statement))
177
+ continue;
178
+ if (ts.isImportDeclaration(statement) && (statement.importClause?.isTypeOnly
179
+ || (ts.isStringLiteral(statement.moduleSpecifier) && statement.moduleSpecifier.text === "honox/factory")))
180
+ continue;
181
+ if (ts.isExportAssignment(statement) && !statement.isExportEquals && registration(statement.expression))
182
+ continue;
183
+ if (ts.isVariableStatement(statement) && statement.declarationList.flags === ts.NodeFlags.Const
184
+ && statement.declarationList.declarations.every((entry) => ts.isIdentifier(entry.name)
185
+ && entry.initializer && registration(entry.initializer)))
186
+ continue;
187
+ return false;
188
+ }
189
+ const helper = source.statements.find((node) => ts.isFunctionDeclaration(node) && node.name?.text === name);
190
+ if (!helper?.body || helper.modifiers?.length || helper.asteriskToken || helper.parameters.length !== 1)
191
+ return false;
192
+ const parameter = helper.parameters[0];
193
+ if (!ts.isIdentifier(parameter.name) || parameter.initializer || parameter.dotDotDotToken || parameter.questionToken)
194
+ return false;
195
+ const isRead = (node) => !!node && ts.isCallExpression(node)
196
+ && !node.questionDotToken && ts.isPropertyAccessExpression(node.expression) && !node.expression.questionDotToken
197
+ && ts.isIdentifier(node.expression.expression) && node.expression.expression.text === parameter.name.getText(source)
198
+ && node.expression.name.text === "get" && node.arguments.length === 1 && ts.isStringLiteral(node.arguments[0]);
199
+ const statements = helper.body.statements;
200
+ let arrayIdentifier;
201
+ if (statements.length === 1 && ts.isReturnStatement(statements[0]) && isRead(statements[0].expression)) {
202
+ // A literal-key context read returns opaque data, never text evidence.
203
+ }
204
+ else {
205
+ const [read, guard, fallback] = statements;
206
+ if (statements.length !== 3 || !read || !ts.isVariableStatement(read) || read.modifiers?.length
207
+ || read.declarationList.flags !== ts.NodeFlags.Const || read.declarationList.declarations.length !== 1)
208
+ return false;
209
+ const local = read.declarationList.declarations[0];
210
+ if (!ts.isIdentifier(local.name) || local.name.text === parameter.name.text || local.name.text === "Array"
211
+ || parameter.name.text === "Array" || !isRead(local.initializer)
212
+ || !guard || !ts.isIfStatement(guard) || guard.elseStatement
213
+ || !ts.isCallExpression(guard.expression) || guard.expression.questionDotToken
214
+ || !ts.isPropertyAccessExpression(guard.expression.expression) || guard.expression.expression.questionDotToken
215
+ || !ts.isIdentifier(guard.expression.expression.expression) || guard.expression.expression.expression.text !== "Array"
216
+ || guard.expression.expression.name.text !== "isArray" || guard.expression.arguments.length !== 1
217
+ || !ts.isIdentifier(guard.expression.arguments[0]) || guard.expression.arguments[0].text !== local.name.text
218
+ || !ts.isBlock(guard.thenStatement) || guard.thenStatement.statements.length !== 1)
219
+ return false;
220
+ const returned = guard.thenStatement.statements[0];
221
+ if (!ts.isReturnStatement(returned) || !returned.expression)
222
+ return false;
223
+ let result = returned.expression;
224
+ while (ts.isAsExpression(result) || ts.isTypeAssertionExpression(result) || ts.isParenthesizedExpression(result))
225
+ result = result.expression;
226
+ if (!ts.isIdentifier(result) || result.text !== local.name.text || !fallback || !ts.isReturnStatement(fallback)
227
+ || !fallback.expression || !ts.isArrayLiteralExpression(fallback.expression) || fallback.expression.elements.length !== 0)
228
+ return false;
229
+ arrayIdentifier = guard.expression.expression.expression;
230
+ }
231
+ // Reject source-local rebinding or escape of the helper and the intrinsic guard.
232
+ const pending = [source];
233
+ while (pending.length > 0) {
234
+ const node = pending.pop();
235
+ if (ts.isIdentifier(node) && node.text === name && node !== helper.name) {
236
+ if (!ts.isCallExpression(node.parent) || node.parent.expression !== node)
237
+ return false;
238
+ }
239
+ if (ts.isIdentifier(node) && node.text === factory
240
+ && !(ts.isImportSpecifier(node.parent) && node.parent.name === node)
241
+ && !(ts.isCallExpression(node.parent) && node.parent.expression === node))
242
+ return false;
243
+ if (arrayIdentifier && ts.isIdentifier(node) && node.text === "Array" && node !== arrayIdentifier) {
244
+ const access = node.parent;
245
+ if (!ts.isPropertyAccessExpression(access) || access.expression !== node || access.name.text !== "from"
246
+ || !ts.isCallExpression(access.parent) || access.parent.expression !== access)
247
+ return false;
248
+ }
249
+ if (ts.isIdentifier(node) && ["globalThis", "global", "window", "self", "eval", "Function"].includes(node.text))
250
+ return false;
251
+ ts.forEachChild(node, (child) => { pending.push(child); });
252
+ }
253
+ return true;
254
+ }
255
+ export function assertHonoJsxRenderer(file, source) {
256
+ const parsed = parseSource(file, source);
257
+ const factory = importedName(parsed, "hono/jsx-renderer", "jsxRenderer");
258
+ const statements = parsed.statements.filter((node) => !ts.isEmptyStatement(node));
259
+ const exported = statements.find(ts.isExportAssignment);
260
+ if (!factory || statements.length !== 2 || !exported || exported.isExportEquals
261
+ || !ts.isCallExpression(exported.expression) || !ts.isIdentifier(exported.expression.expression)
262
+ || exported.expression.expression.text !== factory || exported.expression.arguments.length !== 1) {
263
+ invalid(file, "Renderer must contain only the Hono jsxRenderer import and one direct default factory call.");
264
+ }
265
+ const callback = exported.expression.arguments[0];
266
+ if (!callback || !ts.isArrowFunction(callback) || callback.parameters.length !== 1 || callback.modifiers?.length) {
267
+ invalid(file, "Renderer must use one synchronous children callback.");
268
+ }
269
+ const parameter = callback.parameters[0];
270
+ if (!parameter || !ts.isObjectBindingPattern(parameter.name) || parameter.name.elements.length !== 1 || parameter.initializer) {
271
+ invalid(file, "Renderer must receive only the children slot.");
272
+ }
273
+ const binding = parameter.name.elements[0];
274
+ if (!binding || !ts.isIdentifier(binding.name) || binding.name.text !== "children"
275
+ || binding.propertyName || binding.initializer || binding.dotDotDotToken)
276
+ invalid(file, "Renderer children binding is unsupported.");
277
+ let body = callback.body;
278
+ if (ts.isBlock(body)) {
279
+ const returned = body.statements[0];
280
+ if (body.statements.length !== 1 || !returned || !ts.isReturnStatement(returned) || !returned.expression) {
281
+ invalid(file, "Renderer may only return a transparent JSX wrapper.");
282
+ }
283
+ body = returned.expression;
284
+ }
285
+ while (ts.isParenthesizedExpression(body))
286
+ body = body.expression;
287
+ if (!ts.isJsxElement(body) && !ts.isJsxFragment(body))
288
+ invalid(file, "Renderer must return intrinsic JSX.");
289
+ let slots = 0;
290
+ const pending = [body];
291
+ while (pending.length > 0) {
292
+ const node = pending.pop();
293
+ if (!node)
294
+ break;
295
+ if (ts.isJsxExpression(node) && node.expression) {
296
+ if (!ts.isIdentifier(node.expression) || node.expression.text !== "children")
297
+ invalid(file, "Renderer contains dynamic content other than children.");
298
+ for (let parent = node.parent; parent && parent !== callback; parent = parent.parent) {
299
+ if (ts.isJsxElement(parent) && ["head", "title", "meta", "link"].includes(parent.openingElement.tagName.getText(parsed))) {
300
+ invalid(file, "Renderer children must remain in body-content wrappers.");
301
+ }
302
+ }
303
+ slots += 1;
304
+ }
305
+ if (ts.isJsxOpeningElement(node) || ts.isJsxSelfClosingElement(node)) {
306
+ if (!rendererTags.has(node.tagName.getText(parsed)))
307
+ invalid(file, "Renderer contains a custom or form-bearing element.");
308
+ for (const attribute of node.attributes.properties) {
309
+ if (ts.isJsxSpreadAttribute(attribute) || !attribute.initializer || !ts.isStringLiteral(attribute.initializer)
310
+ || /^on|innerhtml|dangerously|^children$/iu.test(attribute.name.getText(parsed)))
311
+ invalid(file, "Renderer attributes must be static and cannot attach behavior.");
312
+ }
313
+ }
314
+ ts.forEachChild(node, (child) => { pending.push(child); });
315
+ }
316
+ if (slots !== 1)
317
+ invalid(file, "Renderer must preserve exactly one children slot.");
318
+ }
319
+ function parseSource(file, source) {
320
+ let parsed;
321
+ try {
322
+ parsed = ts.createSourceFile(file, source, ts.ScriptTarget.ES2022, true, ts.ScriptKind.TSX);
323
+ }
324
+ catch {
325
+ invalid(file, "Renderer activation source could not be parsed within supported limits.");
326
+ }
327
+ const diagnostics = parsed.parseDiagnostics;
328
+ if (diagnostics === undefined || diagnostics.some((entry) => entry.category === ts.DiagnosticCategory.Error)) {
329
+ invalid(file, "Renderer activation source contains syntax errors.");
330
+ }
331
+ const pending = [parsed];
332
+ let count = 0;
333
+ while (pending.length > 0) {
334
+ const node = pending.pop();
335
+ if (!node)
336
+ break;
337
+ if (++count > 100_000)
338
+ invalid(file, "Renderer activation source exceeds the AST budget.");
339
+ ts.forEachChild(node, (child) => { pending.push(child); });
340
+ }
341
+ const prologue = source.slice(0, parsed.statements[0]?.getStart(parsed) ?? source.length);
342
+ for (const match of prologue.matchAll(/@(jsxImportSource|jsxRuntime|jsxFrag|jsx)\s+([^\s*]+)/gu)) {
343
+ if (!((match[1] === "jsxImportSource" && match[2] === "hono/jsx")
344
+ || (match[1] === "jsxRuntime" && match[2] === "automatic")))
345
+ invalid(file, "JSX pragmas conflict with the selected Hono runtime.", "runtime_mismatch", parsed);
346
+ }
347
+ return parsed;
348
+ }
349
+ function importedName(file, moduleName, exported) {
350
+ const matches = [];
351
+ for (const statement of file.statements) {
352
+ if (!ts.isImportDeclaration(statement) || !ts.isStringLiteral(statement.moduleSpecifier)
353
+ || statement.moduleSpecifier.text !== moduleName || statement.importClause?.isTypeOnly)
354
+ continue;
355
+ const bindings = statement.importClause?.namedBindings;
356
+ if (!bindings || !ts.isNamedImports(bindings))
357
+ continue;
358
+ for (const element of bindings.elements) {
359
+ if (!element.isTypeOnly && (element.propertyName ?? element.name).text === exported)
360
+ matches.push(element.name.text);
361
+ }
362
+ }
363
+ return matches.length === 1 ? matches[0] : undefined;
364
+ }
365
+ function isObject(value) {
366
+ return typeof value === "object" && value !== null && !Array.isArray(value);
367
+ }
368
+ function invalid(file, message, reason = "activation_invalid", node) {
369
+ const location = node ? node.getSourceFile().getLineAndCharacterOfPosition(node.getStart()) : undefined;
370
+ const prefix = location ? `Line ${location.line + 1}, column ${location.character + 1}: ` : "";
371
+ throw new TypeScriptTemplateFormIndexError(`hono_jsx.${reason}`, prefix + message, file);
372
+ }
373
+ //# sourceMappingURL=hono-jsx-activation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hono-jsx-activation.js","sourceRoot":"","sources":["../../src/hono-jsx-activation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type FormIndex } from "@0disoft/mensor-contract";
2
+ export interface HonoJsxFormIndexOptions {
3
+ readonly root: string;
4
+ readonly sources: readonly string[];
5
+ readonly jsxConfig: string;
6
+ readonly buildConfig: string;
7
+ readonly renderer: string;
8
+ readonly producerVersion: string;
9
+ }
10
+ export declare function produceHonoJsxFormIndex(options: HonoJsxFormIndexOptions): Promise<{
11
+ value: FormIndex;
12
+ text: string;
13
+ }>;
14
+ //# sourceMappingURL=hono-jsx-form-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hono-jsx-form-index.d.ts","sourceRoot":"","sources":["../../src/hono-jsx-form-index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAI9E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CA+C3H"}
@@ -0,0 +1,58 @@
1
+ import { realpath } from "node:fs/promises";
2
+ import path from "node:path";
3
+ import { extractHonoJsxFormDocument } from "@0disoft/mensor-compiler/hono-jsx";
4
+ import { serializeFormIndex } from "@0disoft/mensor-contract";
5
+ import { assertHonoJsxBuild, assertHonoJsxConfiguration, assertHonoJsxRenderer, assertHonoJsxRoute } from "./hono-jsx-activation.js";
6
+ import { normalizeSourcePath, readSource, TypeScriptTemplateFormIndexError } from "./template-source.js";
7
+ export async function produceHonoJsxFormIndex(options) {
8
+ const fail = (message) => {
9
+ throw new TypeScriptTemplateFormIndexError("hono_jsx.activation_invalid", message);
10
+ };
11
+ if (options.sources.length === 0)
12
+ fail("At least one explicit TSX source is required.");
13
+ if (options.sources.length > 60)
14
+ fail("At most 60 TSX sources may be selected.");
15
+ const root = await realpath(options.root).catch(() => fail("The selected project root could not be resolved."));
16
+ const sources = [...new Set(options.sources.map(normalizeSourcePath))].sort();
17
+ const renderer = normalizeSourcePath(options.renderer);
18
+ const jsxConfig = normalizeSourcePath(options.jsxConfig);
19
+ const buildConfig = normalizeSourcePath(options.buildConfig);
20
+ const applicationRoot = path.posix.dirname(buildConfig);
21
+ if (path.posix.basename(buildConfig) !== "vite.config.ts"
22
+ || jsxConfig !== path.posix.join(applicationRoot, "tsconfig.json")
23
+ || renderer !== path.posix.join(applicationRoot, "app/routes/_renderer.tsx")
24
+ || sources.some((file) => file === renderer || !file.endsWith(".tsx") || path.posix.dirname(file) !== path.posix.dirname(renderer))) {
25
+ fail("Select the default HonoX layout: vite.config.ts, tsconfig.json and routes directly beside app/routes/_renderer.tsx.");
26
+ }
27
+ const inputs = [jsxConfig, buildConfig, renderer, ...sources];
28
+ if (new Set(inputs).size !== inputs.length)
29
+ fail("Configuration, renderer and route paths must be distinct.");
30
+ const snapshot = new Map();
31
+ for (const file of inputs)
32
+ snapshot.set(file, await readSource(root, file));
33
+ const text = (file) => snapshot.get(file).text;
34
+ assertHonoJsxConfiguration(jsxConfig, text(jsxConfig));
35
+ assertHonoJsxBuild(buildConfig, text(buildConfig));
36
+ assertHonoJsxRenderer(renderer, text(renderer));
37
+ const documents = inputs.slice(0, 3).map((file) => ({
38
+ path: file, contentDigest: snapshot.get(file).digest,
39
+ sourceKind: "mensor/hono-jsx-activation", inspection: { state: "complete" }, forms: [],
40
+ }));
41
+ for (const file of sources) {
42
+ assertHonoJsxRoute(file, text(file));
43
+ try {
44
+ documents.push(extractHonoJsxFormDocument(file, text(file)));
45
+ }
46
+ catch (error) {
47
+ const failure = error;
48
+ throw new TypeScriptTemplateFormIndexError(typeof failure.code === "string" ? failure.code : "hono_jsx.source_invalid", typeof failure.message === "string" ? failure.message : "JSX source could not be indexed.", file);
49
+ }
50
+ }
51
+ for (const file of inputs) {
52
+ if ((await readSource(root, file)).digest !== snapshot.get(file).digest)
53
+ fail("An input changed during JSX indexing.");
54
+ }
55
+ const value = { schemaVersion: 1, producer: { name: "mensor/hono-jsx", version: options.producerVersion }, documents };
56
+ return { value, text: serializeFormIndex(value) };
57
+ }
58
+ //# sourceMappingURL=hono-jsx-form-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hono-jsx-form-index.js","sourceRoot":"","sources":["../../src/hono-jsx-form-index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { type RouteIndex } from "@0disoft/mensor-contract";
2
+ export declare class HonoRouteIndexError extends Error {
3
+ readonly code: string;
4
+ readonly file?: string | undefined;
5
+ constructor(code: string, message: string, file?: string | undefined);
6
+ }
7
+ export interface ProduceHonoRouteIndexOptions {
8
+ readonly root: string;
9
+ readonly sources: readonly string[];
10
+ readonly receivers: readonly string[];
11
+ readonly producerVersion: string;
12
+ }
13
+ export interface ProducedHonoRouteIndex {
14
+ readonly value: RouteIndex;
15
+ readonly text: string;
16
+ }
17
+ export declare function produceHonoRouteIndex(options: ProduceHonoRouteIndexOptions): Promise<ProducedHonoRouteIndex>;
18
+ //# sourceMappingURL=hono-route-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hono-route-index.d.ts","sourceRoot":"","sources":["../../src/hono-route-index.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,0BAA0B,CAAC;AAOlC,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,IAAI,EAAE,MAAM;aAEZ,IAAI,CAAC,EAAE,MAAM;gBAFb,IAAI,EAAE,MAAM,EAC5B,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,MAAM,YAAA;CAKhC;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,sBAAsB,CAAC,CA6DjC"}