@phoenix-wing/kt-codegen 0.4.1
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/LICENSE +201 -0
- package/NOTICE +4 -0
- package/README.md +328 -0
- package/dist/KtCodegenAdapter.d.ts +42 -0
- package/dist/KtCodegenAdapter.d.ts.map +1 -0
- package/dist/KtCodegenAdapter.js +90 -0
- package/dist/KtCodegenAdapter.js.map +1 -0
- package/dist/KtCodegenApply.d.ts +93 -0
- package/dist/KtCodegenApply.d.ts.map +1 -0
- package/dist/KtCodegenApply.js +194 -0
- package/dist/KtCodegenApply.js.map +1 -0
- package/dist/KtCodegenBlockPresentation.d.ts +14 -0
- package/dist/KtCodegenBlockPresentation.d.ts.map +1 -0
- package/dist/KtCodegenBlockPresentation.js +56 -0
- package/dist/KtCodegenBlockPresentation.js.map +1 -0
- package/dist/KtCodegenController.d.ts +68 -0
- package/dist/KtCodegenController.d.ts.map +1 -0
- package/dist/KtCodegenController.js +100 -0
- package/dist/KtCodegenController.js.map +1 -0
- package/dist/KtCodegenCore.d.ts +87 -0
- package/dist/KtCodegenCore.d.ts.map +1 -0
- package/dist/KtCodegenCore.js +234 -0
- package/dist/KtCodegenCore.js.map +1 -0
- package/dist/KtCodegenItem.d.ts +84 -0
- package/dist/KtCodegenItem.d.ts.map +1 -0
- package/dist/KtCodegenItem.js +88 -0
- package/dist/KtCodegenItem.js.map +1 -0
- package/dist/KtCodegenMarker.d.ts +110 -0
- package/dist/KtCodegenMarker.d.ts.map +1 -0
- package/dist/KtCodegenMarker.js +246 -0
- package/dist/KtCodegenMarker.js.map +1 -0
- package/dist/KtCodegenOptions.d.ts +29 -0
- package/dist/KtCodegenOptions.d.ts.map +1 -0
- package/dist/KtCodegenOptions.js +97 -0
- package/dist/KtCodegenOptions.js.map +1 -0
- package/dist/KtCodegenParam.d.ts +60 -0
- package/dist/KtCodegenParam.d.ts.map +1 -0
- package/dist/KtCodegenParam.js +68 -0
- package/dist/KtCodegenParam.js.map +1 -0
- package/dist/KtCodegenReader.d.ts +23 -0
- package/dist/KtCodegenReader.d.ts.map +1 -0
- package/dist/KtCodegenReader.js +28 -0
- package/dist/KtCodegenReader.js.map +1 -0
- package/dist/KtCodegenRenderer.d.ts +114 -0
- package/dist/KtCodegenRenderer.d.ts.map +1 -0
- package/dist/KtCodegenRenderer.js +1388 -0
- package/dist/KtCodegenRenderer.js.map +1 -0
- package/dist/KtCodegenTableColumns.d.ts +103 -0
- package/dist/KtCodegenTableColumns.d.ts.map +1 -0
- package/dist/KtCodegenTableColumns.js +35 -0
- package/dist/KtCodegenTableColumns.js.map +1 -0
- package/dist/KtCodegenTableCore.d.ts +61 -0
- package/dist/KtCodegenTableCore.d.ts.map +1 -0
- package/dist/KtCodegenTableCore.js +240 -0
- package/dist/KtCodegenTableCore.js.map +1 -0
- package/dist/KtCodegenTableData.d.ts +22 -0
- package/dist/KtCodegenTableData.d.ts.map +1 -0
- package/dist/KtCodegenTableData.js +17 -0
- package/dist/KtCodegenTableData.js.map +1 -0
- package/dist/api/analyze.d.ts +8 -0
- package/dist/api/analyze.d.ts.map +1 -0
- package/dist/api/analyze.js +102 -0
- package/dist/api/analyze.js.map +1 -0
- package/dist/api/contracts.d.ts +93 -0
- package/dist/api/contracts.d.ts.map +1 -0
- package/dist/api/contracts.js +3 -0
- package/dist/api/contracts.js.map +1 -0
- package/dist/api/index.d.ts +3 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +4 -0
- package/dist/api/index.js.map +1 -0
- package/dist/blocks/index.d.ts +2 -0
- package/dist/blocks/index.d.ts.map +1 -0
- package/dist/blocks/index.js +3 -0
- package/dist/blocks/index.js.map +1 -0
- package/dist/blocks/legacy-blocks.d.ts +309 -0
- package/dist/blocks/legacy-blocks.d.ts.map +1 -0
- package/dist/blocks/legacy-blocks.js +343 -0
- package/dist/blocks/legacy-blocks.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/legacy/csv.d.ts +25 -0
- package/dist/legacy/csv.d.ts.map +1 -0
- package/dist/legacy/csv.js +197 -0
- package/dist/legacy/csv.js.map +1 -0
- package/dist/legacy/index.d.ts +4 -0
- package/dist/legacy/index.d.ts.map +1 -0
- package/dist/legacy/index.js +5 -0
- package/dist/legacy/index.js.map +1 -0
- package/dist/legacy/v4-json.d.ts +12 -0
- package/dist/legacy/v4-json.d.ts.map +1 -0
- package/dist/legacy/v4-json.js +363 -0
- package/dist/legacy/v4-json.js.map +1 -0
- package/dist/legacy/v4-schema.d.ts +30 -0
- package/dist/legacy/v4-schema.d.ts.map +1 -0
- package/dist/legacy/v4-schema.js +63 -0
- package/dist/legacy/v4-schema.js.map +1 -0
- package/dist/model/diagnostic.d.ts +38 -0
- package/dist/model/diagnostic.d.ts.map +1 -0
- package/dist/model/diagnostic.js +6 -0
- package/dist/model/diagnostic.js.map +1 -0
- package/dist/model/equal.d.ts +10 -0
- package/dist/model/equal.d.ts.map +1 -0
- package/dist/model/equal.js +64 -0
- package/dist/model/equal.js.map +1 -0
- package/dist/model/index.d.ts +5 -0
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/index.js +6 -0
- package/dist/model/index.js.map +1 -0
- package/dist/model/target.d.ts +58 -0
- package/dist/model/target.d.ts.map +1 -0
- package/dist/model/target.js +32 -0
- package/dist/model/target.js.map +1 -0
- package/dist/model/validate.d.ts +9 -0
- package/dist/model/validate.d.ts.map +1 -0
- package/dist/model/validate.js +52 -0
- package/dist/model/validate.js.map +1 -0
- package/dist/table/KtCodegenTable.d.ts +75 -0
- package/dist/table/KtCodegenTable.d.ts.map +1 -0
- package/dist/table/KtCodegenTable.js +541 -0
- package/dist/table/KtCodegenTable.js.map +1 -0
- package/dist/table/index.d.ts +4 -0
- package/dist/table/index.d.ts.map +1 -0
- package/dist/table/index.js +5 -0
- package/dist/table/index.js.map +1 -0
- package/doc/CAA/344/270/216Qt/345/257/271/350/257/235/346/241/206/345/217/214/345/220/221/346/233/264/346/226/260/345/235/227/350/277/201/347/247/273.md +74 -0
- package/doc/CAA/345/257/271/350/257/235/346/241/206/351/200/232/347/237/245/345/235/227/350/277/201/347/247/273.md +45 -0
- package/doc/CAA/346/216/245/345/217/243/345/244/264/346/226/207/344/273/266/345/235/227/350/277/201/347/247/273.md +75 -0
- package/doc/CAA/347/211/271/345/276/201/350/257/273/345/206/231/345/235/227/350/277/201/347/247/273.md +77 -0
- package/doc/CAA/347/233/256/345/275/225/344/270/216/346/240/221/345/267/245/345/216/202/345/235/227/350/277/201/347/247/273.md +78 -0
- package/doc/CommandAgent/347/224/237/345/221/275/345/221/250/346/234/237/345/235/227/350/277/201/347/247/273.md +47 -0
- package/doc/Command/345/212/250/344/275/234/344/270/216/346/264/273/345/212/250/345/255/227/346/256/265/345/235/227/350/277/201/347/247/273.md +46 -0
- package/doc/Command/345/233/276/344/270/216/347/212/266/346/200/201/345/235/227/350/277/201/347/247/273.md +64 -0
- package/doc/Dialog/345/255/227/346/256/265/344/270/216/345/272/237/345/274/203/345/205/274/345/256/271/345/235/227/350/277/201/347/247/273.md +60 -0
- package/doc/KtCodegen/345/221/275/345/220/215/350/277/201/347/247/273/350/257/264/346/230/216.md +55 -0
- package/doc//344/270/244/345/260/217/346/227/266/350/277/201/347/247/273/350/256/241/345/210/222/344/270/216/351/252/214/346/224/266.md +52 -0
- package/doc//346/231/256/351/200/232C++/345/217/202/346/225/260/345/235/227/350/277/201/347/247/273.md +72 -0
- package/doc//346/235/245/346/272/220/344/270/216/350/256/270/345/217/257/345/275/222/346/241/243.md +29 -0
- package/doc//347/224/237/346/210/220/345/235/227/350/277/201/347/247/273/347/237/251/351/230/265.md +75 -0
- package/doc//350/207/252/345/212/250/344/273/243/347/240/201/346/240/207/350/256/260/346/211/253/346/217/217.md +84 -0
- package/package.json +62 -0
- package/src/index.ts +20 -0
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { KT_CODEGEN_LEGACY_BLOCKS, } from "./blocks/legacy-blocks.js";
|
|
3
|
+
const KT_CODEGEN_MARKER_START = "START KEVIN CAA WIZARD SECTION";
|
|
4
|
+
const KT_CODEGEN_MARKER_END = "END KEVIN CAA WIZARD SECTION";
|
|
5
|
+
function isArchivedBlockKey(value) {
|
|
6
|
+
return KT_CODEGEN_LEGACY_BLOCKS.some((block) => block.key === value);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* 旧 Kevin 自动代码控制标记的构造与只读扫描器。
|
|
10
|
+
*
|
|
11
|
+
* 本类复现 `KevinCAAFileGuide` 的 `START/END KEVIN CAA WIZARD SECTION`
|
|
12
|
+
* 文本协议和缩进提取规则,但不生成业务代码、不修改源码,也不写文件。
|
|
13
|
+
* 对旧实现会静默吞掉的嵌套、错配和孤立标记,本类返回明确 error 诊断。
|
|
14
|
+
*/
|
|
15
|
+
export class KtCodegenMarker {
|
|
16
|
+
/** 根据共享参数和后缀创建旧标记使用的类身份。 */
|
|
17
|
+
createClassId(param, nameSuffix) {
|
|
18
|
+
return `${param.namePrefix}${param.nameMiddle}${nameSuffix}`;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 创建包含 `//` 的旧格式 Start 标记整行。
|
|
22
|
+
*
|
|
23
|
+
* `linePrefix` 对应旧 VB `_prefix`,通常是空字符串、空格或制表符缩进。
|
|
24
|
+
*/
|
|
25
|
+
createStart(param, nameSuffix, blockKey, linePrefix = "") {
|
|
26
|
+
return `${linePrefix}// ${KT_CODEGEN_MARKER_START} ${this.createClassId(param, nameSuffix)} ${blockKey}`;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* 创建包含 `//` 的旧格式 End 标记整行。
|
|
30
|
+
*
|
|
31
|
+
* `linePrefix` 对应旧 VB `_prefix`,应与配对 Start 使用相同前缀。
|
|
32
|
+
*/
|
|
33
|
+
createEnd(param, nameSuffix, blockKey, linePrefix = "") {
|
|
34
|
+
return `${linePrefix}// ${KT_CODEGEN_MARKER_END} ${this.createClassId(param, nameSuffix)} ${blockKey}`;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 扫描宿主提供的不可变源码快照,返回可安全替换的旧自动代码区域。
|
|
38
|
+
*
|
|
39
|
+
* 扫描仅匹配当前 Param 中出现的 `NameSuffix` 和调用者允许的 block key。
|
|
40
|
+
* 其他类或未请求 block 的合法标记保持不变,便于同一文件容纳多套生成数据。
|
|
41
|
+
*/
|
|
42
|
+
scan(param, snapshot, blockKeys = KT_CODEGEN_LEGACY_BLOCKS.map((block) => block.key)) {
|
|
43
|
+
const expectedClassIds = new Map();
|
|
44
|
+
for (const item of param.items) {
|
|
45
|
+
const classId = this.createClassId(param, item.nameSuffix);
|
|
46
|
+
if (!expectedClassIds.has(classId))
|
|
47
|
+
expectedClassIds.set(classId, item.nameSuffix);
|
|
48
|
+
}
|
|
49
|
+
const requestedBlocks = new Set(blockKeys);
|
|
50
|
+
const regions = [];
|
|
51
|
+
const diagnostics = [];
|
|
52
|
+
for (const file of snapshot.files) {
|
|
53
|
+
this.scanFile(file, expectedClassIds, requestedBlocks, regions, diagnostics);
|
|
54
|
+
}
|
|
55
|
+
return { regions, diagnostics };
|
|
56
|
+
}
|
|
57
|
+
/** 顺序扫描单个文件,并保持旧实现一次只处理一个打开块的基本模型。 */
|
|
58
|
+
scanFile(file, expectedClassIds, requestedBlocks, regions, diagnostics) {
|
|
59
|
+
let open = null;
|
|
60
|
+
for (const line of this.splitLines(file.text)) {
|
|
61
|
+
const parsed = this.parseLine(file.path, line);
|
|
62
|
+
if (parsed.diagnostic) {
|
|
63
|
+
diagnostics.push(parsed.diagnostic);
|
|
64
|
+
if (open)
|
|
65
|
+
open.invalid = true;
|
|
66
|
+
}
|
|
67
|
+
if (!parsed.marker)
|
|
68
|
+
continue;
|
|
69
|
+
if (!isArchivedBlockKey(parsed.marker.blockKey) ||
|
|
70
|
+
!requestedBlocks.has(parsed.marker.blockKey)) {
|
|
71
|
+
if (open) {
|
|
72
|
+
diagnostics.push(this.sourceDiagnostic(parsed.marker.kind === "start"
|
|
73
|
+
? "marker.nested-start"
|
|
74
|
+
: "marker.mismatched-end", "error", `${parsed.marker.kind === "start" ? "Start" : "End"} marker ${parsed.marker.classId} ${parsed.marker.blockKey} appears inside the open ${open.marker.classId} ${open.marker.blockKey} region.`, file.path, line.number, parsed.marker.column));
|
|
75
|
+
open.invalid = true;
|
|
76
|
+
}
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
const nameSuffix = expectedClassIds.get(parsed.marker.classId);
|
|
80
|
+
if (nameSuffix === undefined) {
|
|
81
|
+
if (open && parsed.marker.kind === "start") {
|
|
82
|
+
diagnostics.push(this.sourceDiagnostic("marker.nested-start", "error", `A foreign Start marker appears before ${open.marker.classId} ${open.marker.blockKey} is closed.`, file.path, line.number, parsed.marker.column));
|
|
83
|
+
open.invalid = true;
|
|
84
|
+
}
|
|
85
|
+
else if (open && parsed.marker.kind === "end") {
|
|
86
|
+
diagnostics.push(this.sourceDiagnostic("marker.mismatched-end", "error", `End marker ${parsed.marker.classId} ${parsed.marker.blockKey} does not close ${open.marker.classId} ${open.marker.blockKey}.`, file.path, line.number, parsed.marker.column));
|
|
87
|
+
open.invalid = true;
|
|
88
|
+
}
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
const knownMarker = {
|
|
92
|
+
...parsed.marker,
|
|
93
|
+
blockKey: parsed.marker.blockKey,
|
|
94
|
+
};
|
|
95
|
+
const marker = this.toMarkerPoint(file.path, knownMarker, nameSuffix);
|
|
96
|
+
if (marker.kind === "start") {
|
|
97
|
+
if (open) {
|
|
98
|
+
diagnostics.push(this.sourceDiagnostic("marker.nested-start", "error", `Start marker ${marker.classId} ${marker.blockKey} appears before ${open.marker.classId} ${open.marker.blockKey} is closed.`, file.path, marker.line, marker.column));
|
|
99
|
+
open.invalid = true;
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
open = { marker, invalid: false };
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
if (!open) {
|
|
106
|
+
diagnostics.push(this.sourceDiagnostic("marker.orphan-end", "error", `End marker ${marker.classId} ${marker.blockKey} has no preceding Start marker.`, file.path, marker.line, marker.column));
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
if (open.marker.classId !== marker.classId ||
|
|
110
|
+
open.marker.blockKey !== marker.blockKey) {
|
|
111
|
+
diagnostics.push(this.sourceDiagnostic("marker.mismatched-end", "error", `End marker ${marker.classId} ${marker.blockKey} does not close ${open.marker.classId} ${open.marker.blockKey}.`, file.path, marker.line, marker.column));
|
|
112
|
+
open.invalid = true;
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
if (!open.invalid) {
|
|
116
|
+
regions.push({
|
|
117
|
+
id: `${file.path}:${open.marker.lineStartOffset}:${marker.lineEndOffset}`,
|
|
118
|
+
path: file.path,
|
|
119
|
+
sourceFingerprint: file.fingerprint,
|
|
120
|
+
classId: marker.classId,
|
|
121
|
+
nameSuffix: marker.nameSuffix,
|
|
122
|
+
blockKey: marker.blockKey,
|
|
123
|
+
start: open.marker,
|
|
124
|
+
end: marker,
|
|
125
|
+
bodyStartOffset: open.marker.lineEndOffset,
|
|
126
|
+
bodyEndOffset: marker.lineStartOffset,
|
|
127
|
+
replaceStartOffset: open.marker.lineStartOffset,
|
|
128
|
+
replaceEndOffset: marker.lineEndOffset,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
open = null;
|
|
132
|
+
}
|
|
133
|
+
if (open) {
|
|
134
|
+
diagnostics.push(this.sourceDiagnostic("marker.missing-end", "error", `Start marker ${open.marker.classId} ${open.marker.blockKey} has no matching End marker.`, file.path, open.marker.line, open.marker.column));
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/** 将文件文本拆成保留精确绝对偏移的逻辑行。 */
|
|
138
|
+
splitLines(text) {
|
|
139
|
+
const lines = [];
|
|
140
|
+
let startOffset = 0;
|
|
141
|
+
let number = 0;
|
|
142
|
+
while (startOffset < text.length) {
|
|
143
|
+
let newlineOffset = startOffset;
|
|
144
|
+
while (newlineOffset < text.length &&
|
|
145
|
+
text[newlineOffset] !== "\r" &&
|
|
146
|
+
text[newlineOffset] !== "\n") {
|
|
147
|
+
newlineOffset += 1;
|
|
148
|
+
}
|
|
149
|
+
let endOffset = newlineOffset;
|
|
150
|
+
if (newlineOffset < text.length) {
|
|
151
|
+
endOffset =
|
|
152
|
+
text[newlineOffset] === "\r" && text[newlineOffset + 1] === "\n"
|
|
153
|
+
? newlineOffset + 2
|
|
154
|
+
: newlineOffset + 1;
|
|
155
|
+
}
|
|
156
|
+
lines.push({
|
|
157
|
+
number,
|
|
158
|
+
text: text.slice(startOffset, newlineOffset),
|
|
159
|
+
startOffset,
|
|
160
|
+
endOffset,
|
|
161
|
+
});
|
|
162
|
+
startOffset = endOffset;
|
|
163
|
+
number += 1;
|
|
164
|
+
}
|
|
165
|
+
return lines;
|
|
166
|
+
}
|
|
167
|
+
/** 解析单行中的旧标记;普通源码行返回空结果。 */
|
|
168
|
+
parseLine(path, line) {
|
|
169
|
+
const startColumn = line.text.indexOf(KT_CODEGEN_MARKER_START);
|
|
170
|
+
const endColumn = line.text.indexOf(KT_CODEGEN_MARKER_END);
|
|
171
|
+
if (startColumn < 0 && endColumn < 0)
|
|
172
|
+
return { marker: null, diagnostic: null };
|
|
173
|
+
if (startColumn >= 0 && endColumn >= 0) {
|
|
174
|
+
return {
|
|
175
|
+
marker: null,
|
|
176
|
+
diagnostic: this.sourceDiagnostic("marker.ambiguous-line", "error", "One source line contains both Start and End Kevin markers.", path, line.number, Math.min(startColumn, endColumn)),
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
const kind = startColumn >= 0 ? "start" : "end";
|
|
180
|
+
const column = kind === "start" ? startColumn : endColumn;
|
|
181
|
+
const label = kind === "start" ? KT_CODEGEN_MARKER_START : KT_CODEGEN_MARKER_END;
|
|
182
|
+
const payloadColumn = column + label.length;
|
|
183
|
+
if (line.text[payloadColumn] !== " ") {
|
|
184
|
+
return {
|
|
185
|
+
marker: null,
|
|
186
|
+
diagnostic: this.sourceDiagnostic("marker.malformed", "error", "Kevin marker must contain one space before its class identity.", path, line.number, column),
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
const payloadStartColumn = payloadColumn + 1;
|
|
190
|
+
const payload = line.text.slice(payloadStartColumn).trimEnd();
|
|
191
|
+
const separatorColumn = payload.indexOf(" ");
|
|
192
|
+
if (separatorColumn < 1 || separatorColumn === payload.length - 1) {
|
|
193
|
+
return {
|
|
194
|
+
marker: null,
|
|
195
|
+
diagnostic: this.sourceDiagnostic("marker.malformed-payload", "error", "Kevin marker must contain a class identity followed by a block discriminator.", path, line.number, column),
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
const classId = payload.slice(0, separatorColumn);
|
|
199
|
+
const blockKey = payload.slice(separatorColumn + 1).trim();
|
|
200
|
+
const beforeMarker = line.text.slice(0, column);
|
|
201
|
+
const commentColumn = beforeMarker.lastIndexOf("//");
|
|
202
|
+
const linePrefix = commentColumn >= 0 ? beforeMarker.slice(0, commentColumn) : "";
|
|
203
|
+
const markerEndColumn = payloadStartColumn + payload.length;
|
|
204
|
+
return {
|
|
205
|
+
marker: {
|
|
206
|
+
kind,
|
|
207
|
+
classId,
|
|
208
|
+
blockKey,
|
|
209
|
+
line,
|
|
210
|
+
column,
|
|
211
|
+
markerEndColumn,
|
|
212
|
+
text: line.text.slice(column, markerEndColumn),
|
|
213
|
+
linePrefix,
|
|
214
|
+
},
|
|
215
|
+
diagnostic: null,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
/** 将内部解析记录转换为公开、可审计的绝对定位结构。 */
|
|
219
|
+
toMarkerPoint(path, marker, nameSuffix) {
|
|
220
|
+
return {
|
|
221
|
+
kind: marker.kind,
|
|
222
|
+
path,
|
|
223
|
+
classId: marker.classId,
|
|
224
|
+
nameSuffix,
|
|
225
|
+
blockKey: marker.blockKey,
|
|
226
|
+
line: marker.line.number,
|
|
227
|
+
column: marker.column,
|
|
228
|
+
lineStartOffset: marker.line.startOffset,
|
|
229
|
+
lineEndOffset: marker.line.endOffset,
|
|
230
|
+
markerStartOffset: marker.line.startOffset + marker.column,
|
|
231
|
+
markerEndOffset: marker.line.startOffset + marker.markerEndColumn,
|
|
232
|
+
text: marker.text,
|
|
233
|
+
linePrefix: marker.linePrefix,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
/** 创建带文件、行、列定位的源码诊断。 */
|
|
237
|
+
sourceDiagnostic(code, severity, message, file, row, column) {
|
|
238
|
+
return {
|
|
239
|
+
code,
|
|
240
|
+
severity,
|
|
241
|
+
message,
|
|
242
|
+
path: { source: "source", file, row, column },
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=KtCodegenMarker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KtCodegenMarker.js","sourceRoot":"","sources":["../src/KtCodegenMarker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 旧界面的 Combo 候选值。
|
|
3
|
+
*
|
|
4
|
+
* 数据仍是普通 string。未知值不会在这里或 Reader/Adapter 中被清空;
|
|
5
|
+
* UI 可以用 has* 方法标记错误,并等待用户主动选择新值。本类不持有 UI
|
|
6
|
+
* 状态,也不修改 `KtCodegenItem`。
|
|
7
|
+
*/
|
|
8
|
+
export declare class KtCodegenOptions {
|
|
9
|
+
/** 旧 VB/Qt 界面为 `TCKind` 提供的固定 Combo 候选值。 */
|
|
10
|
+
static readonly tcKinds: readonly ["", "tk_boolean", "tk_double", "tk_string", "tk_specobject", "tk_integer", "tk_null", "tk_void", "tk_short", "tk_char", "tk_octet", "tk_any", "tk_long", "tk_ushort", "tk_ulong", "tk_float", "tk_except", "tk_enum", "tk_sequence", "tk_objref", "tk_TypeCode", "tk_Principal", "tk_struct", "tk_union", "tk_array", "tk_alias", "tk_external", "tk_list", "tk_component", "tk_error", "tk_techno"];
|
|
11
|
+
/** 旧 VB/Qt 界面为 `CATAttrInOut` 提供的固定 Combo 候选值。 */
|
|
12
|
+
static readonly catAttrInOutValues: readonly ["", "sp_IN", "sp_NEUTRAL", "sp_OUT"];
|
|
13
|
+
/**
|
|
14
|
+
* 旧 VB/Qt 界面为 `Component` 提供的 CAA 与 Qt 控件候选值。
|
|
15
|
+
*
|
|
16
|
+
* `-CAA Component-` 和 `-QT Component-` 是旧列表中的分组显示项,继续保留
|
|
17
|
+
* 以便宿主复现旧界面;是否允许用户实际选择由 UI 决定。
|
|
18
|
+
*/
|
|
19
|
+
static readonly components: readonly ["", "-CAA Component-", "SelectorList", "CheckButton", "RadioButton", "Spinner", "Combo", "PushButton", "Editor", "Label", "MultiList", "-QT Component-", "QListWidget", "QDoubleSpinBox", "QSpinBox", "QLineEdit", "QComboBox", "QRadioButton", "QCheckBox", "QTableWidget", "QTableView"];
|
|
20
|
+
/** 判断字符串是否属于已知 `TCKind` 候选值,不修改传入值。 */
|
|
21
|
+
static hasTcKind(value: string): boolean;
|
|
22
|
+
/** 判断字符串是否属于已知 `CATAttrInOut` 候选值,不修改传入值。 */
|
|
23
|
+
static hasCatAttrInOut(value: string): boolean;
|
|
24
|
+
/** 判断字符串是否属于已知 `Component` 候选值,不修改传入值。 */
|
|
25
|
+
static hasComponent(value: string): boolean;
|
|
26
|
+
/** 公共候选值检查的内部实现。 */
|
|
27
|
+
private static includes;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=KtCodegenOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KtCodegenOptions.d.ts","sourceRoot":"","sources":["../src/KtCodegenOptions.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAC3B,4CAA4C;IAC5C,gBAAuB,OAAO,iZAgCnB;IAEX,kDAAkD;IAClD,gBAAuB,kBAAkB,iDAK9B;IAEX;;;;;OAKG;IACH,gBAAuB,UAAU,uSAsBtB;IAEX,uCAAuC;WACzB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI/C,6CAA6C;WAC/B,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIrD,0CAA0C;WAC5B,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIlD,oBAAoB;IACpB,OAAO,CAAC,MAAM,CAAC,QAAQ;CAGxB"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/**
|
|
3
|
+
* 旧界面的 Combo 候选值。
|
|
4
|
+
*
|
|
5
|
+
* 数据仍是普通 string。未知值不会在这里或 Reader/Adapter 中被清空;
|
|
6
|
+
* UI 可以用 has* 方法标记错误,并等待用户主动选择新值。本类不持有 UI
|
|
7
|
+
* 状态,也不修改 `KtCodegenItem`。
|
|
8
|
+
*/
|
|
9
|
+
export class KtCodegenOptions {
|
|
10
|
+
/** 旧 VB/Qt 界面为 `TCKind` 提供的固定 Combo 候选值。 */
|
|
11
|
+
static tcKinds = [
|
|
12
|
+
"", // 未指定类型
|
|
13
|
+
"tk_boolean", // 布尔类型
|
|
14
|
+
"tk_double", // 双精度浮点类型
|
|
15
|
+
"tk_string", // 字符串类型
|
|
16
|
+
"tk_specobject", // CAA SpecObject 类型
|
|
17
|
+
"tk_integer", // 旧生成器使用的整数类型
|
|
18
|
+
"tk_null", // 空类型
|
|
19
|
+
"tk_void", // void 类型
|
|
20
|
+
"tk_short", // 短整型
|
|
21
|
+
"tk_char", // 字符类型
|
|
22
|
+
"tk_octet", // 八位字节类型
|
|
23
|
+
"tk_any", // CORBA Any 类型
|
|
24
|
+
"tk_long", // 长整型
|
|
25
|
+
"tk_ushort", // 无符号短整型
|
|
26
|
+
"tk_ulong", // 无符号长整型
|
|
27
|
+
"tk_float", // 单精度浮点类型
|
|
28
|
+
"tk_except", // 异常类型
|
|
29
|
+
"tk_enum", // 枚举类型
|
|
30
|
+
"tk_sequence", // 序列类型
|
|
31
|
+
"tk_objref", // 对象引用类型
|
|
32
|
+
"tk_TypeCode", // CORBA TypeCode 类型
|
|
33
|
+
"tk_Principal", // CORBA Principal 类型
|
|
34
|
+
"tk_struct", // 结构体类型
|
|
35
|
+
"tk_union", // 联合体类型
|
|
36
|
+
"tk_array", // 数组类型
|
|
37
|
+
"tk_alias", // 类型别名
|
|
38
|
+
"tk_external", // 旧生成器扩展的外部类型
|
|
39
|
+
"tk_list", // 旧生成器扩展的列表类型
|
|
40
|
+
"tk_component", // 旧生成器扩展的组件类型
|
|
41
|
+
"tk_error", // 旧生成器扩展的错误类型
|
|
42
|
+
"tk_techno", // 旧生成器扩展的技术对象类型
|
|
43
|
+
];
|
|
44
|
+
/** 旧 VB/Qt 界面为 `CATAttrInOut` 提供的固定 Combo 候选值。 */
|
|
45
|
+
static catAttrInOutValues = [
|
|
46
|
+
"", // 未指定方向
|
|
47
|
+
"sp_IN", // 输入属性
|
|
48
|
+
"sp_NEUTRAL", // 中性属性
|
|
49
|
+
"sp_OUT", // 输出属性
|
|
50
|
+
];
|
|
51
|
+
/**
|
|
52
|
+
* 旧 VB/Qt 界面为 `Component` 提供的 CAA 与 Qt 控件候选值。
|
|
53
|
+
*
|
|
54
|
+
* `-CAA Component-` 和 `-QT Component-` 是旧列表中的分组显示项,继续保留
|
|
55
|
+
* 以便宿主复现旧界面;是否允许用户实际选择由 UI 决定。
|
|
56
|
+
*/
|
|
57
|
+
static components = [
|
|
58
|
+
"", // 不生成控件
|
|
59
|
+
"-CAA Component-", // CAA 控件分组标题
|
|
60
|
+
"SelectorList", // CAA 选择列表
|
|
61
|
+
"CheckButton", // CAA 复选按钮
|
|
62
|
+
"RadioButton", // CAA 单选按钮
|
|
63
|
+
"Spinner", // CAA 数值调节控件
|
|
64
|
+
"Combo", // CAA 下拉选择控件
|
|
65
|
+
"PushButton", // CAA 普通按钮
|
|
66
|
+
"Editor", // CAA 文本编辑控件
|
|
67
|
+
"Label", // CAA 文本标签
|
|
68
|
+
"MultiList", // CAA 多列或多选列表
|
|
69
|
+
"-QT Component-", // Qt 控件分组标题
|
|
70
|
+
"QListWidget", // Qt 列表控件
|
|
71
|
+
"QDoubleSpinBox", // Qt 双精度数值控件
|
|
72
|
+
"QSpinBox", // Qt 整数数值控件
|
|
73
|
+
"QLineEdit", // Qt 单行文本控件
|
|
74
|
+
"QComboBox", // Qt 下拉选择控件
|
|
75
|
+
"QRadioButton", // Qt 单选按钮
|
|
76
|
+
"QCheckBox", // Qt 复选框
|
|
77
|
+
"QTableWidget", // Qt 基于 Item 的表格控件
|
|
78
|
+
"QTableView", // Qt Model/View 表格控件
|
|
79
|
+
];
|
|
80
|
+
/** 判断字符串是否属于已知 `TCKind` 候选值,不修改传入值。 */
|
|
81
|
+
static hasTcKind(value) {
|
|
82
|
+
return this.includes(this.tcKinds, value);
|
|
83
|
+
}
|
|
84
|
+
/** 判断字符串是否属于已知 `CATAttrInOut` 候选值,不修改传入值。 */
|
|
85
|
+
static hasCatAttrInOut(value) {
|
|
86
|
+
return this.includes(this.catAttrInOutValues, value);
|
|
87
|
+
}
|
|
88
|
+
/** 判断字符串是否属于已知 `Component` 候选值,不修改传入值。 */
|
|
89
|
+
static hasComponent(value) {
|
|
90
|
+
return this.includes(this.components, value);
|
|
91
|
+
}
|
|
92
|
+
/** 公共候选值检查的内部实现。 */
|
|
93
|
+
static includes(values, value) {
|
|
94
|
+
return values.includes(value);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=KtCodegenOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KtCodegenOptions.js","sourceRoot":"","sources":["../src/KtCodegenOptions.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC;;;;;;GAMG;AACH,MAAM,OAAO,gBAAgB;IAC3B,4CAA4C;IACrC,MAAM,CAAU,OAAO,GAAG;QAC/B,EAAE,EAAE,QAAQ;QACZ,YAAY,EAAE,OAAO;QACrB,WAAW,EAAE,UAAU;QACvB,WAAW,EAAE,QAAQ;QACrB,eAAe,EAAE,oBAAoB;QACrC,YAAY,EAAE,cAAc;QAC5B,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,UAAU;QACrB,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,OAAO;QAClB,UAAU,EAAE,SAAS;QACrB,QAAQ,EAAE,eAAe;QACzB,SAAS,EAAE,MAAM;QACjB,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,UAAU;QACtB,WAAW,EAAE,OAAO;QACpB,SAAS,EAAE,OAAO;QAClB,aAAa,EAAE,OAAO;QACtB,WAAW,EAAE,SAAS;QACtB,aAAa,EAAE,oBAAoB;QACnC,cAAc,EAAE,qBAAqB;QACrC,WAAW,EAAE,QAAQ;QACrB,UAAU,EAAE,QAAQ;QACpB,UAAU,EAAE,OAAO;QACnB,UAAU,EAAE,OAAO;QACnB,aAAa,EAAE,cAAc;QAC7B,SAAS,EAAE,cAAc;QACzB,cAAc,EAAE,cAAc;QAC9B,UAAU,EAAE,cAAc;QAC1B,WAAW,EAAE,gBAAgB;KACrB,CAAC;IAEX,kDAAkD;IAC3C,MAAM,CAAU,kBAAkB,GAAG;QAC1C,EAAE,EAAE,QAAQ;QACZ,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE,OAAO;QACrB,QAAQ,EAAE,OAAO;KACT,CAAC;IAEX;;;;;OAKG;IACI,MAAM,CAAU,UAAU,GAAG;QAClC,EAAE,EAAE,QAAQ;QACZ,iBAAiB,EAAE,aAAa;QAChC,cAAc,EAAE,WAAW;QAC3B,aAAa,EAAE,WAAW;QAC1B,aAAa,EAAE,WAAW;QAC1B,SAAS,EAAE,aAAa;QACxB,OAAO,EAAE,aAAa;QACtB,YAAY,EAAE,WAAW;QACzB,QAAQ,EAAE,aAAa;QACvB,OAAO,EAAE,WAAW;QACpB,WAAW,EAAE,cAAc;QAC3B,gBAAgB,EAAE,YAAY;QAC9B,aAAa,EAAE,UAAU;QACzB,gBAAgB,EAAE,aAAa;QAC/B,UAAU,EAAE,YAAY;QACxB,WAAW,EAAE,YAAY;QACzB,WAAW,EAAE,YAAY;QACzB,cAAc,EAAE,UAAU;QAC1B,WAAW,EAAE,SAAS;QACtB,cAAc,EAAE,mBAAmB;QACnC,YAAY,EAAE,qBAAqB;KAC3B,CAAC;IAEX,uCAAuC;IAChC,MAAM,CAAC,SAAS,CAAC,KAAa;QACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,6CAA6C;IACtC,MAAM,CAAC,eAAe,CAAC,KAAa;QACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,0CAA0C;IACnC,MAAM,CAAC,YAAY,CAAC,KAAa;QACtC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,oBAAoB;IACZ,MAAM,CAAC,QAAQ,CAAC,MAAyB,EAAE,KAAa;QAC9D,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { KtCodegenItem } from "./KtCodegenItem.js";
|
|
2
|
+
/** 配置数据进入统一模型之前的来源格式。 */
|
|
3
|
+
export type KtCodegenSourceFormat = "legacy-v4-json" | "legacy-17-column-csv" | "native";
|
|
4
|
+
/** 读取旧配置时保留的格式、协议和扩展字段信息。 */
|
|
5
|
+
export interface KtCodegenSource {
|
|
6
|
+
/** 当前实例最初来自旧 v4 JSON、旧17列 CSV,还是原生 TS 创建。 */
|
|
7
|
+
format: KtCodegenSourceFormat;
|
|
8
|
+
/** 旧 JSON 根字段 `type`;当前兼容值为 `100106`。 */
|
|
9
|
+
legacyType: string;
|
|
10
|
+
/** 旧 JSON 根字段 `version`;当前兼容值为 `4.0`。 */
|
|
11
|
+
legacyVersion: string;
|
|
12
|
+
/** 输入文件中的原始表头顺序,用于兼容检查和问题诊断。 */
|
|
13
|
+
headers: string[];
|
|
14
|
+
/** 未被当前模型识别的旧 JSON 根字段,写回时不得丢失。 */
|
|
15
|
+
extensions: Record<string, unknown>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* KtCodegen 的唯一共享参数数据容器。
|
|
19
|
+
*
|
|
20
|
+
* 对应旧 VB `KevinCAAFileGuide` 的类级 `_Name*` 与 `_FieldList`、C++
|
|
21
|
+
* `KtaControlConfigData`,以及 Qt `KtdAutoCodeParam` 的配置子集。文件路径、
|
|
22
|
+
* 搜索文本、选中行等宿主运行状态不属于本类。
|
|
23
|
+
*
|
|
24
|
+
* 所有成员公开、可变,不生成 getter/setter。Model、View、Controller、Core
|
|
25
|
+
* 和 Renderer 应共享同一个实例;一处修改会立即对其他持有者可见。
|
|
26
|
+
*
|
|
27
|
+
* 本类只维护数据和最小构造初始化,不负责 CSV/JSON、校验、清空、复制或
|
|
28
|
+
* 代码生成。这些操作分别属于 Reader、Adapter、Controller 和 Core。
|
|
29
|
+
*/
|
|
30
|
+
export declare class KtCodegenParam {
|
|
31
|
+
/** 原生模型类型标识,用于与其他 Phoenix Wing 数据对象区分。 */
|
|
32
|
+
kind: "kt.codegen";
|
|
33
|
+
/** TypeScript 领域模型版本;与旧文件的 `version: 4.0` 相互独立。 */
|
|
34
|
+
schemaVersion: 1;
|
|
35
|
+
/** 输入配置的来源协议、原始表头和未知扩展字段。 */
|
|
36
|
+
source: KtCodegenSource;
|
|
37
|
+
/** 类名或生成符号的公共前缀,对应旧配置 `NamePrefix`。 */
|
|
38
|
+
namePrefix: string;
|
|
39
|
+
/** 类名或生成符号的主体名称,对应旧配置 `NameMiddle`。 */
|
|
40
|
+
nameMiddle: string;
|
|
41
|
+
/** 生成代码使用的命名空间,对应旧配置 `NameSpace`。 */
|
|
42
|
+
nameSpace: string;
|
|
43
|
+
/** 列表或集合生成时使用的追加函数名,对应旧配置 `AppendFunction`。 */
|
|
44
|
+
appendFunction: string;
|
|
45
|
+
/**
|
|
46
|
+
* 当前配置包含的参数项。
|
|
47
|
+
*
|
|
48
|
+
* Controller 通过 Adapter 使用原数组 `splice` 更新内容,避免持有此数组
|
|
49
|
+
* 引用的 UI、Core 或 Renderer 在重新读取配置后失去共享关系。
|
|
50
|
+
*/
|
|
51
|
+
items: KtCodegenItem[];
|
|
52
|
+
/**
|
|
53
|
+
* 创建共享参数数据,并可用同名字段进行初始化。
|
|
54
|
+
*
|
|
55
|
+
* 构造时复制 `source`、`headers`、`extensions` 和 `items`,避免初始化对象
|
|
56
|
+
* 与新实例意外共享可变的嵌套容器。不会执行读写、校验或自动修正。
|
|
57
|
+
*/
|
|
58
|
+
constructor(initial?: Partial<KtCodegenParam>);
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=KtCodegenParam.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KtCodegenParam.d.ts","sourceRoot":"","sources":["../src/KtCodegenParam.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,yBAAyB;AACzB,MAAM,MAAM,qBAAqB,GAC7B,gBAAgB,GAChB,sBAAsB,GACtB,QAAQ,CAAC;AAEb,6BAA6B;AAC7B,MAAM,WAAW,eAAe;IAC9B,6CAA6C;IAC7C,MAAM,EAAE,qBAAqB,CAAC;IAE9B,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IAEnB,yCAAyC;IACzC,aAAa,EAAE,MAAM,CAAC;IAEtB,gCAAgC;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,cAAc;IACzB,0CAA0C;IACnC,IAAI,EAAE,YAAY,CAAgB;IAEzC,mDAAmD;IAC5C,aAAa,EAAE,CAAC,CAAK;IAE5B,6BAA6B;IACtB,MAAM,EAAE,eAAe,CAM5B;IAEF,uCAAuC;IAChC,UAAU,EAAE,MAAM,CAAM;IAE/B,uCAAuC;IAChC,UAAU,EAAE,MAAM,CAAM;IAE/B,qCAAqC;IAC9B,SAAS,EAAE,MAAM,CAAM;IAE9B,+CAA+C;IACxC,cAAc,EAAE,MAAM,CAAM;IAEnC;;;;;OAKG;IACI,KAAK,EAAE,aAAa,EAAE,CAAM;IAEnC;;;;;OAKG;gBACS,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;CAiB9C"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { KtCodegenItem } from "./KtCodegenItem.js";
|
|
3
|
+
/**
|
|
4
|
+
* KtCodegen 的唯一共享参数数据容器。
|
|
5
|
+
*
|
|
6
|
+
* 对应旧 VB `KevinCAAFileGuide` 的类级 `_Name*` 与 `_FieldList`、C++
|
|
7
|
+
* `KtaControlConfigData`,以及 Qt `KtdAutoCodeParam` 的配置子集。文件路径、
|
|
8
|
+
* 搜索文本、选中行等宿主运行状态不属于本类。
|
|
9
|
+
*
|
|
10
|
+
* 所有成员公开、可变,不生成 getter/setter。Model、View、Controller、Core
|
|
11
|
+
* 和 Renderer 应共享同一个实例;一处修改会立即对其他持有者可见。
|
|
12
|
+
*
|
|
13
|
+
* 本类只维护数据和最小构造初始化,不负责 CSV/JSON、校验、清空、复制或
|
|
14
|
+
* 代码生成。这些操作分别属于 Reader、Adapter、Controller 和 Core。
|
|
15
|
+
*/
|
|
16
|
+
export class KtCodegenParam {
|
|
17
|
+
/** 原生模型类型标识,用于与其他 Phoenix Wing 数据对象区分。 */
|
|
18
|
+
kind = "kt.codegen";
|
|
19
|
+
/** TypeScript 领域模型版本;与旧文件的 `version: 4.0` 相互独立。 */
|
|
20
|
+
schemaVersion = 1;
|
|
21
|
+
/** 输入配置的来源协议、原始表头和未知扩展字段。 */
|
|
22
|
+
source = {
|
|
23
|
+
format: "native",
|
|
24
|
+
legacyType: "100106",
|
|
25
|
+
legacyVersion: "4.0",
|
|
26
|
+
headers: [],
|
|
27
|
+
extensions: {},
|
|
28
|
+
};
|
|
29
|
+
/** 类名或生成符号的公共前缀,对应旧配置 `NamePrefix`。 */
|
|
30
|
+
namePrefix = "";
|
|
31
|
+
/** 类名或生成符号的主体名称,对应旧配置 `NameMiddle`。 */
|
|
32
|
+
nameMiddle = "";
|
|
33
|
+
/** 生成代码使用的命名空间,对应旧配置 `NameSpace`。 */
|
|
34
|
+
nameSpace = "";
|
|
35
|
+
/** 列表或集合生成时使用的追加函数名,对应旧配置 `AppendFunction`。 */
|
|
36
|
+
appendFunction = "";
|
|
37
|
+
/**
|
|
38
|
+
* 当前配置包含的参数项。
|
|
39
|
+
*
|
|
40
|
+
* Controller 通过 Adapter 使用原数组 `splice` 更新内容,避免持有此数组
|
|
41
|
+
* 引用的 UI、Core 或 Renderer 在重新读取配置后失去共享关系。
|
|
42
|
+
*/
|
|
43
|
+
items = [];
|
|
44
|
+
/**
|
|
45
|
+
* 创建共享参数数据,并可用同名字段进行初始化。
|
|
46
|
+
*
|
|
47
|
+
* 构造时复制 `source`、`headers`、`extensions` 和 `items`,避免初始化对象
|
|
48
|
+
* 与新实例意外共享可变的嵌套容器。不会执行读写、校验或自动修正。
|
|
49
|
+
*/
|
|
50
|
+
constructor(initial) {
|
|
51
|
+
if (!initial)
|
|
52
|
+
return;
|
|
53
|
+
this.kind = initial.kind ?? this.kind;
|
|
54
|
+
this.schemaVersion = initial.schemaVersion ?? this.schemaVersion;
|
|
55
|
+
this.source = {
|
|
56
|
+
...this.source,
|
|
57
|
+
...initial.source,
|
|
58
|
+
headers: [...(initial.source?.headers ?? this.source.headers)],
|
|
59
|
+
extensions: { ...(initial.source?.extensions ?? this.source.extensions) },
|
|
60
|
+
};
|
|
61
|
+
this.namePrefix = initial.namePrefix ?? this.namePrefix;
|
|
62
|
+
this.nameMiddle = initial.nameMiddle ?? this.nameMiddle;
|
|
63
|
+
this.nameSpace = initial.nameSpace ?? this.nameSpace;
|
|
64
|
+
this.appendFunction = initial.appendFunction ?? this.appendFunction;
|
|
65
|
+
this.items = (initial.items ?? this.items).map((item) => new KtCodegenItem(item));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=KtCodegenParam.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KtCodegenParam.js","sourceRoot":"","sources":["../src/KtCodegenParam.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA0BnD;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,cAAc;IACzB,0CAA0C;IACnC,IAAI,GAAiB,YAAY,CAAC;IAEzC,mDAAmD;IAC5C,aAAa,GAAM,CAAC,CAAC;IAE5B,6BAA6B;IACtB,MAAM,GAAoB;QAC/B,MAAM,EAAE,QAAQ;QAChB,UAAU,EAAE,QAAQ;QACpB,aAAa,EAAE,KAAK;QACpB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,EAAE;KACf,CAAC;IAEF,uCAAuC;IAChC,UAAU,GAAW,EAAE,CAAC;IAE/B,uCAAuC;IAChC,UAAU,GAAW,EAAE,CAAC;IAE/B,qCAAqC;IAC9B,SAAS,GAAW,EAAE,CAAC;IAE9B,+CAA+C;IACxC,cAAc,GAAW,EAAE,CAAC;IAEnC;;;;;OAKG;IACI,KAAK,GAAoB,EAAE,CAAC;IAEnC;;;;;OAKG;IACH,YAAY,OAAiC;QAC3C,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC;QACjE,IAAI,CAAC,MAAM,GAAG;YACZ,GAAG,IAAI,CAAC,MAAM;YACd,GAAG,OAAO,CAAC,MAAM;YACjB,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9D,UAAU,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;SAC1E,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;QACxD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QACrD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC;QACpE,IAAI,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACpF,CAAC;CACF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { KtCodegenDataResult } from "./model/diagnostic.js";
|
|
2
|
+
import type { KtCodegenParam } from "./KtCodegenParam.js";
|
|
3
|
+
/**
|
|
4
|
+
* CSV/JSON 输入边界。
|
|
5
|
+
*
|
|
6
|
+
* Reader 把旧配置解析成新的临时 `KtCodegenParam`,不持有共享状态,也不会
|
|
7
|
+
* 直接修改 Controller 的共享实例。是否应用读取结果由 Controller 决定。
|
|
8
|
+
*/
|
|
9
|
+
export declare class KtCodegenReader {
|
|
10
|
+
/**
|
|
11
|
+
* 读取旧 v4 JSON 字符串或已经解析的对象。
|
|
12
|
+
*
|
|
13
|
+
* 保留未知根字段和列表外字符串;协议、列类型或必填字段问题通过诊断返回。
|
|
14
|
+
*/
|
|
15
|
+
readJson(input: string | unknown): KtCodegenDataResult<KtCodegenParam>;
|
|
16
|
+
/**
|
|
17
|
+
* 读取旧17列 CSV。
|
|
18
|
+
*
|
|
19
|
+
* 同时兼容旧 Qt 简单 CSV 和 RFC 4180 引号;不会自动清空未知 Combo 字符串。
|
|
20
|
+
*/
|
|
21
|
+
readCsv(text: string): KtCodegenDataResult<KtCodegenParam>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=KtCodegenReader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KtCodegenReader.d.ts","sourceRoot":"","sources":["../src/KtCodegenReader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,mBAAmB,CAAC,cAAc,CAAC;IAItE;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAAC,cAAc,CAAC;CAG3D"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { ktCodegenParseLegacyCsv } from "./legacy/csv.js";
|
|
3
|
+
import { ktCodegenParseLegacyV4Json } from "./legacy/v4-json.js";
|
|
4
|
+
/**
|
|
5
|
+
* CSV/JSON 输入边界。
|
|
6
|
+
*
|
|
7
|
+
* Reader 把旧配置解析成新的临时 `KtCodegenParam`,不持有共享状态,也不会
|
|
8
|
+
* 直接修改 Controller 的共享实例。是否应用读取结果由 Controller 决定。
|
|
9
|
+
*/
|
|
10
|
+
export class KtCodegenReader {
|
|
11
|
+
/**
|
|
12
|
+
* 读取旧 v4 JSON 字符串或已经解析的对象。
|
|
13
|
+
*
|
|
14
|
+
* 保留未知根字段和列表外字符串;协议、列类型或必填字段问题通过诊断返回。
|
|
15
|
+
*/
|
|
16
|
+
readJson(input) {
|
|
17
|
+
return ktCodegenParseLegacyV4Json(input);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 读取旧17列 CSV。
|
|
21
|
+
*
|
|
22
|
+
* 同时兼容旧 Qt 简单 CSV 和 RFC 4180 引号;不会自动清空未知 Combo 字符串。
|
|
23
|
+
*/
|
|
24
|
+
readCsv(text) {
|
|
25
|
+
return ktCodegenParseLegacyCsv(text);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=KtCodegenReader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KtCodegenReader.js","sourceRoot":"","sources":["../src/KtCodegenReader.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAGtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAGjE;;;;;GAKG;AACH,MAAM,OAAO,eAAe;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,KAAuB;QAC9B,OAAO,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,OAAO,CAAC,IAAY;QAClB,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;CACF"}
|