@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.
- package/README.md +70 -1
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +247 -11
- package/dist/src/cli.js.map +1 -1
- package/dist/src/hono-jsx-activation.d.ts +5 -0
- package/dist/src/hono-jsx-activation.d.ts.map +1 -0
- package/dist/src/hono-jsx-activation.js +373 -0
- package/dist/src/hono-jsx-activation.js.map +1 -0
- package/dist/src/hono-jsx-form-index.d.ts +14 -0
- package/dist/src/hono-jsx-form-index.d.ts.map +1 -0
- package/dist/src/hono-jsx-form-index.js +58 -0
- package/dist/src/hono-jsx-form-index.js.map +1 -0
- 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/template-source.d.ts +11 -0
- package/dist/src/template-source.d.ts.map +1 -0
- package/dist/src/template-source.js +112 -0
- package/dist/src/template-source.js.map +1 -0
- package/dist/src/typescript-template-form-index.d.ts +14 -0
- package/dist/src/typescript-template-form-index.d.ts.map +1 -0
- package/dist/src/typescript-template-form-index.js +204 -0
- package/dist/src/typescript-template-form-index.js.map +1 -0
- package/package.json +4 -2
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { lstat, open } from "node:fs/promises";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
const maxSourceBytes = 1_048_576;
|
|
5
|
+
export class TypeScriptTemplateFormIndexError extends Error {
|
|
6
|
+
code;
|
|
7
|
+
file;
|
|
8
|
+
constructor(code, message, file) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.code = code;
|
|
11
|
+
this.file = file;
|
|
12
|
+
this.name = "TypeScriptTemplateFormIndexError";
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export async function readSource(root, relativePath) {
|
|
16
|
+
const absolutePath = path.resolve(root, relativePath);
|
|
17
|
+
if (!isWithin(root, absolutePath)) {
|
|
18
|
+
throw new TypeScriptTemplateFormIndexError("form_indexer.source_outside_root", "Template source resolves outside the selected project root.", relativePath);
|
|
19
|
+
}
|
|
20
|
+
await rejectSymbolicLinkComponents(root, absolutePath, relativePath);
|
|
21
|
+
let handle;
|
|
22
|
+
try {
|
|
23
|
+
handle = await open(absolutePath, "r");
|
|
24
|
+
const before = await handle.stat();
|
|
25
|
+
if (!before.isFile()) {
|
|
26
|
+
throw sourceFailure("form_indexer.source_not_file", "Template source must be a regular file.", relativePath);
|
|
27
|
+
}
|
|
28
|
+
if (before.size > maxSourceBytes) {
|
|
29
|
+
throw sourceFailure("form_indexer.source_too_large", `Template source exceeds ${maxSourceBytes} bytes.`, relativePath);
|
|
30
|
+
}
|
|
31
|
+
const bytes = Buffer.alloc(before.size + 1);
|
|
32
|
+
let bytesRead = 0;
|
|
33
|
+
while (bytesRead < bytes.length) {
|
|
34
|
+
const chunk = await handle.read(bytes, bytesRead, bytes.length - bytesRead, bytesRead);
|
|
35
|
+
if (chunk.bytesRead === 0)
|
|
36
|
+
break;
|
|
37
|
+
bytesRead += chunk.bytesRead;
|
|
38
|
+
}
|
|
39
|
+
const after = await handle.stat();
|
|
40
|
+
await rejectSymbolicLinkComponents(root, absolutePath, relativePath);
|
|
41
|
+
const current = await lstat(absolutePath);
|
|
42
|
+
if (bytesRead !== before.size || !sameFile(before, after) || !sameFile(after, current)) {
|
|
43
|
+
throw sourceFailure("form_indexer.source_changed", "Template source changed while it was read.", relativePath);
|
|
44
|
+
}
|
|
45
|
+
const sourceBytes = bytes.subarray(0, bytesRead);
|
|
46
|
+
let text;
|
|
47
|
+
try {
|
|
48
|
+
text = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true }).decode(sourceBytes);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
throw sourceFailure("form_indexer.source_encoding_invalid", "Template source must be valid UTF-8.", relativePath);
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
text,
|
|
55
|
+
digest: `sha256:${createHash("sha256").update(sourceBytes).digest("hex")}`,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
if (error instanceof TypeScriptTemplateFormIndexError)
|
|
60
|
+
throw error;
|
|
61
|
+
throw sourceFailure("form_indexer.source_read_failed", "Template source could not be read.", relativePath);
|
|
62
|
+
}
|
|
63
|
+
finally {
|
|
64
|
+
await handle?.close().catch(() => undefined);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async function rejectSymbolicLinkComponents(root, absolutePath, relativePath) {
|
|
68
|
+
const relative = path.relative(root, absolutePath);
|
|
69
|
+
let current = root;
|
|
70
|
+
for (const segment of relative.split(path.sep).filter(Boolean)) {
|
|
71
|
+
current = path.join(current, segment);
|
|
72
|
+
const stats = await lstat(current).catch(() => undefined);
|
|
73
|
+
if (stats === undefined) {
|
|
74
|
+
throw sourceFailure("form_indexer.source_read_failed", "Template source could not be read.", relativePath);
|
|
75
|
+
}
|
|
76
|
+
if (stats.isSymbolicLink()) {
|
|
77
|
+
throw sourceFailure("form_indexer.source_symlink", "Template source must not use symbolic-link components.", relativePath);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
export function normalizeSourcePath(value) {
|
|
82
|
+
if (value.length === 0
|
|
83
|
+
|| path.isAbsolute(value)
|
|
84
|
+
|| path.win32.isAbsolute(value)
|
|
85
|
+
|| value.includes("\\")) {
|
|
86
|
+
throw sourceFailure("form_indexer.source_path_invalid", "Template source must be a root-relative POSIX path.", value);
|
|
87
|
+
}
|
|
88
|
+
const segments = value.split("/");
|
|
89
|
+
if (segments.some((segment) => segment === "" || segment === "." || segment === ".."
|
|
90
|
+
|| /[:\u0000-\u001f\u007f]/u.test(segment) || /[. ]$/u.test(segment)
|
|
91
|
+
|| /^(?:con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\.|$)/iu.test(segment))) {
|
|
92
|
+
throw sourceFailure("form_indexer.source_path_invalid", "Template source path is not canonical.", value);
|
|
93
|
+
}
|
|
94
|
+
return value;
|
|
95
|
+
}
|
|
96
|
+
function sourceFailure(code, message, file) {
|
|
97
|
+
return new TypeScriptTemplateFormIndexError(code, message, file);
|
|
98
|
+
}
|
|
99
|
+
function sameFile(left, right) {
|
|
100
|
+
return left.dev === right.dev
|
|
101
|
+
&& left.ino === right.ino
|
|
102
|
+
&& left.size === right.size
|
|
103
|
+
&& left.mtimeMs === right.mtimeMs
|
|
104
|
+
&& left.ctimeMs === right.ctimeMs;
|
|
105
|
+
}
|
|
106
|
+
function isWithin(root, candidate) {
|
|
107
|
+
const relative = path.relative(root, candidate);
|
|
108
|
+
return relative === "" || (relative !== ".."
|
|
109
|
+
&& !relative.startsWith(`..${path.sep}`)
|
|
110
|
+
&& !path.isAbsolute(relative));
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=template-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-source.js","sourceRoot":"","sources":["../../src/template-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type FormIndex } from "@0disoft/mensor-contract";
|
|
2
|
+
export { TypeScriptTemplateFormIndexError } from "./template-source.js";
|
|
3
|
+
export interface ProduceTypeScriptTemplateFormIndexOptions {
|
|
4
|
+
readonly root: string;
|
|
5
|
+
readonly sources: readonly string[];
|
|
6
|
+
readonly tags: readonly string[];
|
|
7
|
+
readonly producerVersion: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ProducedTypeScriptTemplateFormIndex {
|
|
10
|
+
readonly value: FormIndex;
|
|
11
|
+
readonly text: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function produceTypeScriptTemplateFormIndex(options: ProduceTypeScriptTemplateFormIndexOptions): Promise<ProducedTypeScriptTemplateFormIndex>;
|
|
14
|
+
//# 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":"AAIA,OAAO,EAEL,KAAK,SAAS,EAMf,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EAAE,gCAAgC,EAAE,MAAM,sBAAsB,CAAC;AAIxE,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"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { realpath } from "node:fs/promises";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import { extractStaticHtmlFormDocument } from "@0disoft/mensor-compiler";
|
|
4
|
+
import { serializeFormIndex, } from "@0disoft/mensor-contract";
|
|
5
|
+
import ts from "@typescript/typescript6";
|
|
6
|
+
import { readSource, normalizeSourcePath, TypeScriptTemplateFormIndexError } from "./template-source.js";
|
|
7
|
+
export { TypeScriptTemplateFormIndexError } from "./template-source.js";
|
|
8
|
+
const identifierPattern = /^[A-Za-z_$][A-Za-z0-9_$]*$/u;
|
|
9
|
+
export async function produceTypeScriptTemplateFormIndex(options) {
|
|
10
|
+
if (options.sources.length === 0) {
|
|
11
|
+
throw new TypeScriptTemplateFormIndexError("form_indexer.source_required", "At least one root-relative TypeScript template source is required.");
|
|
12
|
+
}
|
|
13
|
+
if (options.tags.length === 0) {
|
|
14
|
+
throw new TypeScriptTemplateFormIndexError("form_indexer.tag_required", "At least one tagged-template identifier is required.");
|
|
15
|
+
}
|
|
16
|
+
const tags = new Set();
|
|
17
|
+
for (const tag of options.tags) {
|
|
18
|
+
if (!identifierPattern.test(tag)) {
|
|
19
|
+
throw new TypeScriptTemplateFormIndexError("form_indexer.tag_invalid", `Template tag ${JSON.stringify(tag)} must be a JavaScript identifier.`);
|
|
20
|
+
}
|
|
21
|
+
tags.add(tag);
|
|
22
|
+
}
|
|
23
|
+
const root = await realpath(options.root).catch(() => {
|
|
24
|
+
throw new TypeScriptTemplateFormIndexError("form_indexer.root_invalid", "The selected project root could not be resolved.");
|
|
25
|
+
});
|
|
26
|
+
const documents = [];
|
|
27
|
+
for (const sourcePath of [...new Set(options.sources.map(normalizeSourcePath))].sort(compareText)) {
|
|
28
|
+
const source = await readSource(root, sourcePath);
|
|
29
|
+
const extracted = extractDocument(sourcePath, source.text, source.digest, tags);
|
|
30
|
+
if (extracted.templateCount === 0) {
|
|
31
|
+
throw new TypeScriptTemplateFormIndexError("form_indexer.no_templates", "No selected tagged template was found in the explicit source file.", sourcePath);
|
|
32
|
+
}
|
|
33
|
+
documents.push(extracted.document);
|
|
34
|
+
}
|
|
35
|
+
const value = {
|
|
36
|
+
schemaVersion: 1,
|
|
37
|
+
producer: {
|
|
38
|
+
name: "mensor-typescript-template-form-indexer",
|
|
39
|
+
version: options.producerVersion,
|
|
40
|
+
},
|
|
41
|
+
documents,
|
|
42
|
+
};
|
|
43
|
+
try {
|
|
44
|
+
return { value, text: serializeFormIndex(value) };
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
throw new TypeScriptTemplateFormIndexError("form_indexer.output_invalid", error instanceof Error ? error.message : "The produced FormIndex is invalid.");
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function extractDocument(file, sourceText, digest, tags) {
|
|
51
|
+
const sourceFile = ts.createSourceFile(file, sourceText, ts.ScriptTarget.ES2022, true, scriptKind(file));
|
|
52
|
+
const diagnostics = sourceFileSyntaxDiagnostics(sourceFile, sourceText, file)
|
|
53
|
+
.filter((diagnostic) => diagnostic.category === ts.DiagnosticCategory.Error);
|
|
54
|
+
if (diagnostics.length > 0) {
|
|
55
|
+
throw new TypeScriptTemplateFormIndexError("form_indexer.source_syntax_invalid", "TypeScript template source contains syntax errors and cannot be indexed.", file);
|
|
56
|
+
}
|
|
57
|
+
const forms = [];
|
|
58
|
+
const dynamicRanges = [];
|
|
59
|
+
let templateCount = 0;
|
|
60
|
+
const nodes = [sourceFile];
|
|
61
|
+
while (nodes.length > 0) {
|
|
62
|
+
const node = nodes.pop();
|
|
63
|
+
if (node === undefined)
|
|
64
|
+
continue;
|
|
65
|
+
if (ts.isTaggedTemplateExpression(node)
|
|
66
|
+
&& ts.isIdentifier(node.tag)
|
|
67
|
+
&& tags.has(node.tag.text)) {
|
|
68
|
+
templateCount += 1;
|
|
69
|
+
const template = node.template;
|
|
70
|
+
if (!ts.isNoSubstitutionTemplateLiteral(template)) {
|
|
71
|
+
dynamicRanges.push(nodeRange(template, sourceFile));
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
const contentStart = template.getStart(sourceFile) + 1;
|
|
75
|
+
const contentEnd = template.getEnd() - 1;
|
|
76
|
+
const html = sourceText.slice(contentStart, contentEnd);
|
|
77
|
+
const base = sourceFile.getLineAndCharacterOfPosition(contentStart);
|
|
78
|
+
const extracted = extractStaticHtmlFormDocument(file, html);
|
|
79
|
+
forms.push(...extracted.forms.map((form) => offsetForm(form, base)));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
node.forEachChild((child) => {
|
|
83
|
+
nodes.push(child);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
forms.sort((left, right) => compareRange(left.range, right.range));
|
|
87
|
+
dynamicRanges.sort(compareRange);
|
|
88
|
+
const dynamicRange = dynamicRanges[0];
|
|
89
|
+
return {
|
|
90
|
+
templateCount,
|
|
91
|
+
document: {
|
|
92
|
+
path: file,
|
|
93
|
+
contentDigest: digest,
|
|
94
|
+
sourceKind: "mensor/typescript-tagged-html",
|
|
95
|
+
inspection: dynamicRange === undefined
|
|
96
|
+
? { state: "complete" }
|
|
97
|
+
: {
|
|
98
|
+
state: "incomplete",
|
|
99
|
+
reason: "dynamic-interpolation",
|
|
100
|
+
range: dynamicRange,
|
|
101
|
+
},
|
|
102
|
+
forms,
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function offsetForm(form, base) {
|
|
107
|
+
return {
|
|
108
|
+
identity: offsetEvidence(form.identity, base),
|
|
109
|
+
method: offsetEvidence(form.method, base),
|
|
110
|
+
action: form.action.state === "current-document"
|
|
111
|
+
? { state: "current-document", range: offsetRange(form.action.range, base) }
|
|
112
|
+
: offsetEvidence(form.action, base),
|
|
113
|
+
range: offsetRange(form.range, base),
|
|
114
|
+
controls: form.controls.map((control) => offsetControl(control, base)),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
function offsetControl(control, base) {
|
|
118
|
+
return {
|
|
119
|
+
name: offsetEvidence(control.name, base),
|
|
120
|
+
controlKind: offsetEvidence(control.controlKind, base),
|
|
121
|
+
inputType: offsetEvidence(control.inputType, base),
|
|
122
|
+
multiple: offsetEvidence(control.multiple, base),
|
|
123
|
+
multiplicity: offsetEvidence(control.multiplicity, base),
|
|
124
|
+
successful: offsetEvidence(control.successful, base),
|
|
125
|
+
range: offsetRange(control.range, base),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
function offsetEvidence(evidence, base) {
|
|
129
|
+
if (evidence.state === "absent") {
|
|
130
|
+
return evidence.range === undefined
|
|
131
|
+
? { state: "absent" }
|
|
132
|
+
: { state: "absent", range: offsetRange(evidence.range, base) };
|
|
133
|
+
}
|
|
134
|
+
if (evidence.state === "known") {
|
|
135
|
+
return {
|
|
136
|
+
state: "known",
|
|
137
|
+
value: evidence.value,
|
|
138
|
+
range: offsetRange(evidence.range, base),
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
return evidence.state === "dynamic"
|
|
142
|
+
? {
|
|
143
|
+
state: "dynamic",
|
|
144
|
+
reason: evidence.reason,
|
|
145
|
+
range: offsetRange(evidence.range, base),
|
|
146
|
+
}
|
|
147
|
+
: {
|
|
148
|
+
state: "unsupported",
|
|
149
|
+
reason: evidence.reason,
|
|
150
|
+
range: offsetRange(evidence.range, base),
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
function offsetRange(range, base) {
|
|
154
|
+
return {
|
|
155
|
+
start: offsetPosition(range.start, base),
|
|
156
|
+
end: offsetPosition(range.end, base),
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
function offsetPosition(position, base) {
|
|
160
|
+
return {
|
|
161
|
+
line: base.line + position.line,
|
|
162
|
+
character: position.line === 0
|
|
163
|
+
? base.character + position.character
|
|
164
|
+
: position.character,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
function nodeRange(node, sourceFile) {
|
|
168
|
+
const start = sourceFile.getLineAndCharacterOfPosition(node.getStart(sourceFile));
|
|
169
|
+
const end = sourceFile.getLineAndCharacterOfPosition(node.getEnd());
|
|
170
|
+
return {
|
|
171
|
+
start: { line: start.line, character: start.character },
|
|
172
|
+
end: { line: end.line, character: end.character },
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
function scriptKind(fileName) {
|
|
176
|
+
const extension = path.extname(fileName).toLowerCase();
|
|
177
|
+
if (extension === ".tsx")
|
|
178
|
+
return ts.ScriptKind.TSX;
|
|
179
|
+
if (extension === ".jsx")
|
|
180
|
+
return ts.ScriptKind.JSX;
|
|
181
|
+
if ([".js", ".mjs", ".cjs"].includes(extension))
|
|
182
|
+
return ts.ScriptKind.JS;
|
|
183
|
+
return ts.ScriptKind.TS;
|
|
184
|
+
}
|
|
185
|
+
function sourceFileSyntaxDiagnostics(sourceFile, sourceText, fileName) {
|
|
186
|
+
const parserDiagnostics = sourceFile.parseDiagnostics;
|
|
187
|
+
if (parserDiagnostics !== undefined)
|
|
188
|
+
return parserDiagnostics;
|
|
189
|
+
return ts.transpileModule(sourceText, {
|
|
190
|
+
fileName,
|
|
191
|
+
reportDiagnostics: true,
|
|
192
|
+
compilerOptions: { noEmit: true, target: ts.ScriptTarget.ES2022 },
|
|
193
|
+
}).diagnostics ?? [];
|
|
194
|
+
}
|
|
195
|
+
function compareText(left, right) {
|
|
196
|
+
return left < right ? -1 : left > right ? 1 : 0;
|
|
197
|
+
}
|
|
198
|
+
function compareRange(left, right) {
|
|
199
|
+
return left.start.line - right.start.line
|
|
200
|
+
|| left.start.character - right.start.character
|
|
201
|
+
|| left.end.line - right.end.line
|
|
202
|
+
|| left.end.character - right.end.character;
|
|
203
|
+
}
|
|
204
|
+
//# 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.
|
|
3
|
+
"version": "0.10.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.
|
|
46
|
+
"@0disoft/mensor-compiler": "0.10.0",
|
|
47
|
+
"@0disoft/mensor-contract": "0.10.0",
|
|
48
|
+
"@typescript/typescript6": "6.0.2"
|
|
47
49
|
}
|
|
48
50
|
}
|