@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.
- package/README.md +94 -0
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +219 -11
- package/dist/src/cli.js.map +1 -1
- package/dist/src/hono-route-index.d.ts +18 -0
- package/dist/src/hono-route-index.d.ts.map +1 -0
- package/dist/src/hono-route-index.js +292 -0
- package/dist/src/hono-route-index.js.map +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/manifest-output.d.ts +3 -0
- package/dist/src/manifest-output.d.ts.map +1 -0
- package/dist/src/manifest-output.js +70 -0
- package/dist/src/manifest-output.js.map +1 -0
- package/dist/src/sarif.d.ts +3 -0
- package/dist/src/sarif.d.ts.map +1 -0
- package/dist/src/sarif.js +99 -0
- package/dist/src/sarif.js.map +1 -0
- package/dist/src/typescript-template-form-index.d.ts +18 -0
- package/dist/src/typescript-template-form-index.d.ts.map +1 -0
- package/dist/src/typescript-template-form-index.js +301 -0
- package/dist/src/typescript-template-form-index.js.map +1 -0
- package/package.json +4 -2
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { lstat, open, realpath } from "node:fs/promises";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
import { serializeRouteIndex, } from "@0disoft/mensor-contract";
|
|
5
|
+
import ts from "@typescript/typescript6";
|
|
6
|
+
const maxSourceBytes = 1_048_576;
|
|
7
|
+
const maxSourceStructuralDepth = 1_024;
|
|
8
|
+
const identifierPattern = /^[A-Za-z_$][A-Za-z0-9_$]*$/u;
|
|
9
|
+
export class HonoRouteIndexError 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 = "HonoRouteIndexError";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export async function produceHonoRouteIndex(options) {
|
|
20
|
+
if (options.sources.length === 0) {
|
|
21
|
+
throw new HonoRouteIndexError("route_indexer.source_required", "At least one root-relative Hono source file is required.");
|
|
22
|
+
}
|
|
23
|
+
if (options.receivers.length === 0) {
|
|
24
|
+
throw new HonoRouteIndexError("route_indexer.receiver_required", "At least one Hono receiver identifier is required.");
|
|
25
|
+
}
|
|
26
|
+
const receivers = new Set();
|
|
27
|
+
for (const receiver of options.receivers) {
|
|
28
|
+
if (!identifierPattern.test(receiver)) {
|
|
29
|
+
throw new HonoRouteIndexError("route_indexer.receiver_invalid", `Hono receiver ${JSON.stringify(receiver)} must be a JavaScript identifier.`);
|
|
30
|
+
}
|
|
31
|
+
receivers.add(receiver);
|
|
32
|
+
}
|
|
33
|
+
const root = await realpath(options.root).catch(() => {
|
|
34
|
+
throw new HonoRouteIndexError("route_indexer.root_invalid", "The selected project root could not be resolved.");
|
|
35
|
+
});
|
|
36
|
+
const routes = [];
|
|
37
|
+
const sourcePaths = [...new Set(options.sources.map(normalizeSourcePath))].sort(compareText);
|
|
38
|
+
for (const sourcePath of sourcePaths) {
|
|
39
|
+
const source = await readSource(root, sourcePath);
|
|
40
|
+
routes.push(...extractHonoRoutes(sourcePath, source.text, source.digest, receivers));
|
|
41
|
+
}
|
|
42
|
+
if (routes.length === 0) {
|
|
43
|
+
throw new HonoRouteIndexError("route_indexer.no_routes", "No static GET or POST calls were found for the selected Hono receivers.");
|
|
44
|
+
}
|
|
45
|
+
const value = {
|
|
46
|
+
schemaVersion: 1,
|
|
47
|
+
producer: {
|
|
48
|
+
name: "mensor-hono-route-indexer",
|
|
49
|
+
version: options.producerVersion,
|
|
50
|
+
},
|
|
51
|
+
routes,
|
|
52
|
+
};
|
|
53
|
+
let text;
|
|
54
|
+
try {
|
|
55
|
+
text = serializeRouteIndex(value);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
throw new HonoRouteIndexError("route_indexer.output_invalid", error instanceof Error ? error.message : "The produced RouteIndex is invalid.");
|
|
59
|
+
}
|
|
60
|
+
return { value, text };
|
|
61
|
+
}
|
|
62
|
+
function extractHonoRoutes(file, sourceText, digest, receivers) {
|
|
63
|
+
if (sourceStructuralDepthExceeds(sourceText, maxSourceStructuralDepth)) {
|
|
64
|
+
throw new HonoRouteIndexError("route_indexer.source_too_deep", `Hono source structural depth exceeds ${maxSourceStructuralDepth}.`, file);
|
|
65
|
+
}
|
|
66
|
+
const sourceFile = ts.createSourceFile(file, sourceText, ts.ScriptTarget.ES2022, true, scriptKind(file));
|
|
67
|
+
const diagnostics = sourceFileSyntaxDiagnostics(sourceFile, sourceText, file)
|
|
68
|
+
.filter((diagnostic) => diagnostic.category === ts.DiagnosticCategory.Error);
|
|
69
|
+
if (diagnostics.length > 0) {
|
|
70
|
+
throw new HonoRouteIndexError("route_indexer.source_syntax_invalid", "Hono source contains syntax errors and cannot be indexed.", file);
|
|
71
|
+
}
|
|
72
|
+
const routes = [];
|
|
73
|
+
const nodes = [sourceFile];
|
|
74
|
+
while (nodes.length > 0) {
|
|
75
|
+
const node = nodes.pop();
|
|
76
|
+
if (node === undefined) {
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (ts.isCallExpression(node)) {
|
|
80
|
+
const route = routeCall(node, sourceFile, file, digest, receivers);
|
|
81
|
+
if (route !== undefined) {
|
|
82
|
+
routes.push(route);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
node.forEachChild((child) => {
|
|
86
|
+
nodes.push(child);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
return routes;
|
|
90
|
+
}
|
|
91
|
+
function routeCall(call, sourceFile, file, digest, receivers) {
|
|
92
|
+
if (!ts.isPropertyAccessExpression(call.expression) ||
|
|
93
|
+
receiverState(call.expression.expression, receivers) === "none") {
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
const state = receiverState(call.expression.expression, receivers);
|
|
97
|
+
const methodText = call.expression.name.text;
|
|
98
|
+
if (state === "unsupported" ||
|
|
99
|
+
call.questionDotToken !== undefined ||
|
|
100
|
+
call.expression.questionDotToken !== undefined ||
|
|
101
|
+
["all", "on", "route"].includes(methodText)) {
|
|
102
|
+
throw new HonoRouteIndexError("route_indexer.composed_receiver_unsupported", "Selected Hono receivers may use only direct or chained static get and post calls.", file);
|
|
103
|
+
}
|
|
104
|
+
if (methodText !== "get" && methodText !== "post") {
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
const pathArgument = call.arguments[0];
|
|
108
|
+
if (pathArgument === undefined ||
|
|
109
|
+
(!ts.isStringLiteral(pathArgument) && !ts.isNoSubstitutionTemplateLiteral(pathArgument))) {
|
|
110
|
+
throw new HonoRouteIndexError("route_indexer.dynamic_path_unsupported", `Hono ${methodText.toUpperCase()} route on a selected receiver must use one static string path.`, file);
|
|
111
|
+
}
|
|
112
|
+
if (!/^\/[^?#]*$/u.test(pathArgument.text)) {
|
|
113
|
+
throw new HonoRouteIndexError("route_indexer.path_invalid", `Hono route path ${JSON.stringify(pathArgument.text)} must be one static absolute path without query or fragment syntax.`, file);
|
|
114
|
+
}
|
|
115
|
+
const start = sourceFile.getLineAndCharacterOfPosition(call.expression.getStart(sourceFile));
|
|
116
|
+
const end = sourceFile.getLineAndCharacterOfPosition(pathArgument.getEnd());
|
|
117
|
+
return {
|
|
118
|
+
method: methodText === "get" ? "GET" : "POST",
|
|
119
|
+
path: pathArgument.text,
|
|
120
|
+
source: {
|
|
121
|
+
file,
|
|
122
|
+
contentDigest: digest,
|
|
123
|
+
range: {
|
|
124
|
+
start: { line: start.line, character: start.character },
|
|
125
|
+
end: { line: end.line, character: end.character },
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function receiverState(expression, receivers) {
|
|
131
|
+
if (ts.isIdentifier(expression)) {
|
|
132
|
+
return receivers.has(expression.text) ? "selected" : "none";
|
|
133
|
+
}
|
|
134
|
+
if (!ts.isCallExpression(expression) || !ts.isPropertyAccessExpression(expression.expression)) {
|
|
135
|
+
return "none";
|
|
136
|
+
}
|
|
137
|
+
const parentState = receiverState(expression.expression.expression, receivers);
|
|
138
|
+
if (parentState === "none" || parentState === "unsupported") {
|
|
139
|
+
return parentState;
|
|
140
|
+
}
|
|
141
|
+
const method = expression.expression.name.text;
|
|
142
|
+
const routePath = expression.arguments[0];
|
|
143
|
+
return ((method === "get" || method === "post") &&
|
|
144
|
+
expression.questionDotToken === undefined &&
|
|
145
|
+
expression.expression.questionDotToken === undefined &&
|
|
146
|
+
routePath !== undefined &&
|
|
147
|
+
(ts.isStringLiteral(routePath) || ts.isNoSubstitutionTemplateLiteral(routePath)) &&
|
|
148
|
+
/^\/[^?#]*$/u.test(routePath.text)) ? "selected" : "unsupported";
|
|
149
|
+
}
|
|
150
|
+
async function readSource(root, relativePath) {
|
|
151
|
+
const absolutePath = path.resolve(root, ...relativePath.split("/"));
|
|
152
|
+
if (!isWithin(root, absolutePath)) {
|
|
153
|
+
throw new HonoRouteIndexError("route_indexer.source_outside_root", "Hono source must stay inside the selected project root.", relativePath);
|
|
154
|
+
}
|
|
155
|
+
await assertSafeSourcePath(root, absolutePath, relativePath);
|
|
156
|
+
let handle;
|
|
157
|
+
try {
|
|
158
|
+
handle = await open(absolutePath, "r");
|
|
159
|
+
const before = await handle.stat();
|
|
160
|
+
if (!before.isFile() || before.size > maxSourceBytes) {
|
|
161
|
+
throw new HonoRouteIndexError("route_indexer.source_size_invalid", `Hono source must be a regular file no larger than ${maxSourceBytes} bytes.`, relativePath);
|
|
162
|
+
}
|
|
163
|
+
const bytes = await handle.readFile();
|
|
164
|
+
const after = await handle.stat();
|
|
165
|
+
if (bytes.length > maxSourceBytes || !sameIdentity(before, after)) {
|
|
166
|
+
throw new HonoRouteIndexError("route_indexer.source_changed", "Hono source changed while it was being indexed.", relativePath);
|
|
167
|
+
}
|
|
168
|
+
let text;
|
|
169
|
+
try {
|
|
170
|
+
text = new TextDecoder("utf-8", { fatal: true }).decode(bytes);
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
throw new HonoRouteIndexError("route_indexer.source_encoding_invalid", "Hono source must contain valid UTF-8.", relativePath);
|
|
174
|
+
}
|
|
175
|
+
return {
|
|
176
|
+
text,
|
|
177
|
+
digest: `sha256:${createHash("sha256").update(bytes).digest("hex")}`,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
if (error instanceof HonoRouteIndexError) {
|
|
182
|
+
throw error;
|
|
183
|
+
}
|
|
184
|
+
throw new HonoRouteIndexError("route_indexer.source_read_failed", "Hono source could not be read safely.", relativePath);
|
|
185
|
+
}
|
|
186
|
+
finally {
|
|
187
|
+
await handle?.close().catch(() => undefined);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
async function assertSafeSourcePath(root, target, relativePath) {
|
|
191
|
+
const relative = path.relative(root, target);
|
|
192
|
+
let current = root;
|
|
193
|
+
const segments = relative.split(path.sep).filter(Boolean);
|
|
194
|
+
for (let index = 0; index < segments.length; index += 1) {
|
|
195
|
+
const segment = segments[index];
|
|
196
|
+
if (segment === undefined) {
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
current = path.join(current, segment);
|
|
200
|
+
let entry;
|
|
201
|
+
try {
|
|
202
|
+
entry = await lstat(current);
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
throw new HonoRouteIndexError("route_indexer.source_read_failed", "Hono source path could not be inspected.", relativePath);
|
|
206
|
+
}
|
|
207
|
+
if (entry.isSymbolicLink()) {
|
|
208
|
+
throw new HonoRouteIndexError("route_indexer.source_symlink_unsupported", "Hono source paths must not contain symbolic links.", relativePath);
|
|
209
|
+
}
|
|
210
|
+
const final = index === segments.length - 1;
|
|
211
|
+
if ((final && !entry.isFile()) || (!final && !entry.isDirectory())) {
|
|
212
|
+
throw new HonoRouteIndexError("route_indexer.source_type_invalid", "Hono source path must contain directories followed by one regular file.", relativePath);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
function normalizeSourcePath(value) {
|
|
217
|
+
if (value.length === 0 ||
|
|
218
|
+
path.isAbsolute(value) ||
|
|
219
|
+
path.win32.isAbsolute(value)) {
|
|
220
|
+
throw new HonoRouteIndexError("route_indexer.source_not_relative", "Hono source paths must be relative to the selected project root.", value);
|
|
221
|
+
}
|
|
222
|
+
const normalized = value.replaceAll("\\", "/");
|
|
223
|
+
const segments = normalized.split("/");
|
|
224
|
+
if (segments.some((segment) => segment === "" || segment === "." || segment === "..") ||
|
|
225
|
+
!/\.(?:[cm]?[jt]s|[jt]sx)$/u.test(normalized)) {
|
|
226
|
+
throw new HonoRouteIndexError("route_indexer.source_not_canonical", "Hono source must be one canonical root-relative JavaScript or TypeScript path.", value);
|
|
227
|
+
}
|
|
228
|
+
return normalized;
|
|
229
|
+
}
|
|
230
|
+
function sourceStructuralDepthExceeds(sourceText, limit) {
|
|
231
|
+
const scanner = ts.createScanner(ts.ScriptTarget.ES2022, true, ts.LanguageVariant.JSX, sourceText);
|
|
232
|
+
let depth = 0;
|
|
233
|
+
for (let token = scanner.scan(); token !== ts.SyntaxKind.EndOfFileToken; token = scanner.scan()) {
|
|
234
|
+
if (token === ts.SyntaxKind.OpenBraceToken ||
|
|
235
|
+
token === ts.SyntaxKind.OpenBracketToken ||
|
|
236
|
+
token === ts.SyntaxKind.OpenParenToken) {
|
|
237
|
+
depth += 1;
|
|
238
|
+
if (depth > limit) {
|
|
239
|
+
return true;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
else if (token === ts.SyntaxKind.CloseBraceToken ||
|
|
243
|
+
token === ts.SyntaxKind.CloseBracketToken ||
|
|
244
|
+
token === ts.SyntaxKind.CloseParenToken) {
|
|
245
|
+
depth = Math.max(0, depth - 1);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
return false;
|
|
249
|
+
}
|
|
250
|
+
function sourceFileSyntaxDiagnostics(sourceFile, sourceText, fileName) {
|
|
251
|
+
const diagnostics = sourceFile.parseDiagnostics;
|
|
252
|
+
if (diagnostics !== undefined) {
|
|
253
|
+
return diagnostics;
|
|
254
|
+
}
|
|
255
|
+
return ts.transpileModule(sourceText, {
|
|
256
|
+
compilerOptions: {
|
|
257
|
+
allowJs: true,
|
|
258
|
+
checkJs: false,
|
|
259
|
+
jsx: ts.JsxEmit.Preserve,
|
|
260
|
+
module: ts.ModuleKind.ESNext,
|
|
261
|
+
target: ts.ScriptTarget.ES2022,
|
|
262
|
+
},
|
|
263
|
+
fileName,
|
|
264
|
+
reportDiagnostics: true,
|
|
265
|
+
}).diagnostics ?? [];
|
|
266
|
+
}
|
|
267
|
+
function scriptKind(fileName) {
|
|
268
|
+
const extension = path.extname(fileName).toLowerCase();
|
|
269
|
+
if (extension === ".tsx")
|
|
270
|
+
return ts.ScriptKind.TSX;
|
|
271
|
+
if (extension === ".jsx")
|
|
272
|
+
return ts.ScriptKind.JSX;
|
|
273
|
+
if ([".js", ".mjs", ".cjs"].includes(extension))
|
|
274
|
+
return ts.ScriptKind.JS;
|
|
275
|
+
return ts.ScriptKind.TS;
|
|
276
|
+
}
|
|
277
|
+
function sameIdentity(before, after) {
|
|
278
|
+
return before.dev === after.dev &&
|
|
279
|
+
before.ino === after.ino &&
|
|
280
|
+
before.size === after.size &&
|
|
281
|
+
before.mtimeMs === after.mtimeMs;
|
|
282
|
+
}
|
|
283
|
+
function isWithin(root, candidate) {
|
|
284
|
+
const relative = path.relative(root, candidate);
|
|
285
|
+
return relative === "" || (relative !== ".." &&
|
|
286
|
+
!relative.startsWith(`..${path.sep}`) &&
|
|
287
|
+
!path.isAbsolute(relative));
|
|
288
|
+
}
|
|
289
|
+
function compareText(left, right) {
|
|
290
|
+
return left < right ? -1 : left > right ? 1 : 0;
|
|
291
|
+
}
|
|
292
|
+
//# sourceMappingURL=hono-route-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hono-route-index.js","sourceRoot":"","sources":["../../src/hono-route-index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC9C,YAAY,EACV,kBAAkB,EAClB,KAAK,EACL,aAAa,GACd,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AACzD,YAAY,EACV,kBAAkB,EAClB,KAAK,EACL,aAAa,GACd,MAAM,YAAY,CAAC"}
|
package/dist/src/index.js
CHANGED
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare function writeCanonicalArtifactAtomic(root: string, relativeOutput: string, text: string): Promise<void>;
|
|
2
|
+
export declare function writeManifestAtomic(root: string, relativeOutput: string, text: string): Promise<void>;
|
|
3
|
+
//# sourceMappingURL=manifest-output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest-output.d.ts","sourceRoot":"","sources":["../../src/manifest-output.ts"],"names":[],"mappings":"AAaA,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAgCf;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAEf"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { lstat, mkdir, open, realpath, rename, unlink, } from "node:fs/promises";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
let temporaryFileCounter = 0;
|
|
4
|
+
export async function writeCanonicalArtifactAtomic(root, relativeOutput, text) {
|
|
5
|
+
const rootPath = await realpath(root);
|
|
6
|
+
const outputPath = path.resolve(rootPath, relativeOutput);
|
|
7
|
+
const parentPath = path.dirname(outputPath);
|
|
8
|
+
await ensureSafeParent(rootPath, parentPath);
|
|
9
|
+
const resolvedParent = await realpath(parentPath);
|
|
10
|
+
if (!isWithin(rootPath, resolvedParent)) {
|
|
11
|
+
throw new Error("Manifest output parent resolves outside the project root.");
|
|
12
|
+
}
|
|
13
|
+
const existing = await lstatOrUndefined(outputPath);
|
|
14
|
+
if (existing?.isSymbolicLink() === true || existing?.isDirectory() === true) {
|
|
15
|
+
throw new Error("Manifest output must be a regular file or an unused path.");
|
|
16
|
+
}
|
|
17
|
+
const temporaryPath = path.join(resolvedParent, `.${path.basename(outputPath)}.${process.pid}.${temporaryFileCounter += 1}.tmp`);
|
|
18
|
+
let handle;
|
|
19
|
+
try {
|
|
20
|
+
handle = await open(temporaryPath, "wx", 0o600);
|
|
21
|
+
await handle.writeFile(text, "utf8");
|
|
22
|
+
await handle.sync();
|
|
23
|
+
await handle.close();
|
|
24
|
+
handle = undefined;
|
|
25
|
+
await rename(temporaryPath, outputPath);
|
|
26
|
+
}
|
|
27
|
+
finally {
|
|
28
|
+
await handle?.close().catch(() => undefined);
|
|
29
|
+
await unlink(temporaryPath).catch(() => undefined);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export async function writeManifestAtomic(root, relativeOutput, text) {
|
|
33
|
+
await writeCanonicalArtifactAtomic(root, relativeOutput, text);
|
|
34
|
+
}
|
|
35
|
+
async function ensureSafeParent(root, parent) {
|
|
36
|
+
const relative = path.relative(root, parent);
|
|
37
|
+
let current = root;
|
|
38
|
+
for (const segment of relative.split(path.sep).filter(Boolean)) {
|
|
39
|
+
current = path.join(current, segment);
|
|
40
|
+
let entry = await lstatOrUndefined(current);
|
|
41
|
+
if (entry === undefined) {
|
|
42
|
+
await mkdir(current);
|
|
43
|
+
entry = await lstat(current);
|
|
44
|
+
}
|
|
45
|
+
if (entry.isSymbolicLink() || !entry.isDirectory()) {
|
|
46
|
+
throw new Error("Manifest output parent must contain only directories.");
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async function lstatOrUndefined(target) {
|
|
51
|
+
try {
|
|
52
|
+
return await lstat(target);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
if (isNodeError(error) && error.code === "ENOENT") {
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function isWithin(root, candidate) {
|
|
62
|
+
const relative = path.relative(root, candidate);
|
|
63
|
+
return relative === "" || (relative !== ".." &&
|
|
64
|
+
!relative.startsWith(`..${path.sep}`) &&
|
|
65
|
+
!path.isAbsolute(relative));
|
|
66
|
+
}
|
|
67
|
+
function isNodeError(error) {
|
|
68
|
+
return error instanceof Error && "code" in error;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=manifest-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest-output.js","sourceRoot":"","sources":["../../src/manifest-output.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sarif.d.ts","sourceRoot":"","sources":["../../src/sarif.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAChB,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AAIlC,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,gBAAgB,GAAG,kBAAkB,GAC5C,MAAM,CA2DR"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
const sarifSchema = "https://docs.oasis-open.org/sarif/sarif/v2.1.0/errata01/os/schemas/sarif-schema-2.1.0.json";
|
|
2
|
+
export function formatDiagnosticReportSarif(report) {
|
|
3
|
+
const codes = [...new Set(report.diagnostics.map((diagnostic) => diagnostic.code))]
|
|
4
|
+
.sort(compareText);
|
|
5
|
+
const firstByCode = new Map();
|
|
6
|
+
for (const diagnostic of report.diagnostics) {
|
|
7
|
+
if (!firstByCode.has(diagnostic.code))
|
|
8
|
+
firstByCode.set(diagnostic.code, diagnostic);
|
|
9
|
+
}
|
|
10
|
+
const ruleIndexes = new Map(codes.map((code, index) => [code, index]));
|
|
11
|
+
const rules = codes.map((code) => {
|
|
12
|
+
const diagnostic = firstByCode.get(code);
|
|
13
|
+
if (diagnostic === undefined)
|
|
14
|
+
throw new Error(`Missing SARIF rule source for ${code}.`);
|
|
15
|
+
return {
|
|
16
|
+
id: code,
|
|
17
|
+
shortDescription: { text: code },
|
|
18
|
+
fullDescription: {
|
|
19
|
+
text: `Mensor ${diagnostic.category} diagnostic ${code}.`,
|
|
20
|
+
},
|
|
21
|
+
help: { text: diagnostic.repair.hint },
|
|
22
|
+
properties: {
|
|
23
|
+
category: diagnostic.category,
|
|
24
|
+
tags: [diagnostic.category],
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
});
|
|
28
|
+
const results = report.diagnostics.map((diagnostic) => ({
|
|
29
|
+
ruleId: diagnostic.code,
|
|
30
|
+
ruleIndex: requiredRuleIndex(ruleIndexes, diagnostic.code),
|
|
31
|
+
level: diagnostic.severity,
|
|
32
|
+
message: { text: diagnostic.message },
|
|
33
|
+
locations: [physicalLocation(diagnostic.file, diagnostic.range)],
|
|
34
|
+
...(diagnostic.related.length === 0
|
|
35
|
+
? {}
|
|
36
|
+
: {
|
|
37
|
+
relatedLocations: diagnostic.related.map((related, index) => sarifRelatedLocation(related, index + 1)),
|
|
38
|
+
}),
|
|
39
|
+
properties: {
|
|
40
|
+
category: diagnostic.category,
|
|
41
|
+
facts: diagnostic.facts,
|
|
42
|
+
repair: diagnostic.repair,
|
|
43
|
+
},
|
|
44
|
+
}));
|
|
45
|
+
return `${JSON.stringify({
|
|
46
|
+
$schema: sarifSchema,
|
|
47
|
+
version: "2.1.0",
|
|
48
|
+
runs: [
|
|
49
|
+
{
|
|
50
|
+
tool: {
|
|
51
|
+
driver: {
|
|
52
|
+
name: "Mensor",
|
|
53
|
+
semanticVersion: report.producer.version,
|
|
54
|
+
informationUri: "https://github.com/0disoft/mensor",
|
|
55
|
+
rules,
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
results,
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
}, null, 2)}\n`;
|
|
62
|
+
}
|
|
63
|
+
function physicalLocation(file, range) {
|
|
64
|
+
return {
|
|
65
|
+
physicalLocation: {
|
|
66
|
+
artifactLocation: { uri: file },
|
|
67
|
+
region: sarifRegion(range),
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function sarifRelatedLocation(related, id) {
|
|
72
|
+
return {
|
|
73
|
+
id,
|
|
74
|
+
message: { text: related.message },
|
|
75
|
+
physicalLocation: {
|
|
76
|
+
artifactLocation: { uri: related.file },
|
|
77
|
+
region: sarifRegion(related.range),
|
|
78
|
+
},
|
|
79
|
+
properties: { role: related.role },
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function sarifRegion(range) {
|
|
83
|
+
return {
|
|
84
|
+
startLine: range.start.line + 1,
|
|
85
|
+
startColumn: range.start.character + 1,
|
|
86
|
+
endLine: range.end.line + 1,
|
|
87
|
+
endColumn: range.end.character + 1,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
function requiredRuleIndex(indexes, code) {
|
|
91
|
+
const value = indexes.get(code);
|
|
92
|
+
if (value === undefined)
|
|
93
|
+
throw new Error(`Missing SARIF rule index for ${code}.`);
|
|
94
|
+
return value;
|
|
95
|
+
}
|
|
96
|
+
function compareText(left, right) {
|
|
97
|
+
return left < right ? -1 : left > right ? 1 : 0;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=sarif.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sarif.js","sourceRoot":"","sources":["../../src/sarif.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type FormIndex } from "@0disoft/mensor-contract";
|
|
2
|
+
export declare class TypeScriptTemplateFormIndexError extends Error {
|
|
3
|
+
readonly code: string;
|
|
4
|
+
readonly file?: string | undefined;
|
|
5
|
+
constructor(code: string, message: string, file?: string | undefined);
|
|
6
|
+
}
|
|
7
|
+
export interface ProduceTypeScriptTemplateFormIndexOptions {
|
|
8
|
+
readonly root: string;
|
|
9
|
+
readonly sources: readonly string[];
|
|
10
|
+
readonly tags: readonly string[];
|
|
11
|
+
readonly producerVersion: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ProducedTypeScriptTemplateFormIndex {
|
|
14
|
+
readonly value: FormIndex;
|
|
15
|
+
readonly text: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function produceTypeScriptTemplateFormIndex(options: ProduceTypeScriptTemplateFormIndexOptions): Promise<ProducedTypeScriptTemplateFormIndex>;
|
|
18
|
+
//# sourceMappingURL=typescript-template-form-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript-template-form-index.d.ts","sourceRoot":"","sources":["../../src/typescript-template-form-index.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,SAAS,EAMf,MAAM,0BAA0B,CAAC;AAMlC,qBAAa,gCAAiC,SAAQ,KAAK;aAEvC,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,yCAAyC;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,kCAAkC,CACtD,OAAO,EAAE,yCAAyC,GACjD,OAAO,CAAC,mCAAmC,CAAC,CA4D9C"}
|