@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.
Files changed (144) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +4 -0
  3. package/README.md +328 -0
  4. package/dist/KtCodegenAdapter.d.ts +42 -0
  5. package/dist/KtCodegenAdapter.d.ts.map +1 -0
  6. package/dist/KtCodegenAdapter.js +90 -0
  7. package/dist/KtCodegenAdapter.js.map +1 -0
  8. package/dist/KtCodegenApply.d.ts +93 -0
  9. package/dist/KtCodegenApply.d.ts.map +1 -0
  10. package/dist/KtCodegenApply.js +194 -0
  11. package/dist/KtCodegenApply.js.map +1 -0
  12. package/dist/KtCodegenBlockPresentation.d.ts +14 -0
  13. package/dist/KtCodegenBlockPresentation.d.ts.map +1 -0
  14. package/dist/KtCodegenBlockPresentation.js +56 -0
  15. package/dist/KtCodegenBlockPresentation.js.map +1 -0
  16. package/dist/KtCodegenController.d.ts +68 -0
  17. package/dist/KtCodegenController.d.ts.map +1 -0
  18. package/dist/KtCodegenController.js +100 -0
  19. package/dist/KtCodegenController.js.map +1 -0
  20. package/dist/KtCodegenCore.d.ts +87 -0
  21. package/dist/KtCodegenCore.d.ts.map +1 -0
  22. package/dist/KtCodegenCore.js +234 -0
  23. package/dist/KtCodegenCore.js.map +1 -0
  24. package/dist/KtCodegenItem.d.ts +84 -0
  25. package/dist/KtCodegenItem.d.ts.map +1 -0
  26. package/dist/KtCodegenItem.js +88 -0
  27. package/dist/KtCodegenItem.js.map +1 -0
  28. package/dist/KtCodegenMarker.d.ts +110 -0
  29. package/dist/KtCodegenMarker.d.ts.map +1 -0
  30. package/dist/KtCodegenMarker.js +246 -0
  31. package/dist/KtCodegenMarker.js.map +1 -0
  32. package/dist/KtCodegenOptions.d.ts +29 -0
  33. package/dist/KtCodegenOptions.d.ts.map +1 -0
  34. package/dist/KtCodegenOptions.js +97 -0
  35. package/dist/KtCodegenOptions.js.map +1 -0
  36. package/dist/KtCodegenParam.d.ts +60 -0
  37. package/dist/KtCodegenParam.d.ts.map +1 -0
  38. package/dist/KtCodegenParam.js +68 -0
  39. package/dist/KtCodegenParam.js.map +1 -0
  40. package/dist/KtCodegenReader.d.ts +23 -0
  41. package/dist/KtCodegenReader.d.ts.map +1 -0
  42. package/dist/KtCodegenReader.js +28 -0
  43. package/dist/KtCodegenReader.js.map +1 -0
  44. package/dist/KtCodegenRenderer.d.ts +114 -0
  45. package/dist/KtCodegenRenderer.d.ts.map +1 -0
  46. package/dist/KtCodegenRenderer.js +1388 -0
  47. package/dist/KtCodegenRenderer.js.map +1 -0
  48. package/dist/KtCodegenTableColumns.d.ts +103 -0
  49. package/dist/KtCodegenTableColumns.d.ts.map +1 -0
  50. package/dist/KtCodegenTableColumns.js +35 -0
  51. package/dist/KtCodegenTableColumns.js.map +1 -0
  52. package/dist/KtCodegenTableCore.d.ts +61 -0
  53. package/dist/KtCodegenTableCore.d.ts.map +1 -0
  54. package/dist/KtCodegenTableCore.js +240 -0
  55. package/dist/KtCodegenTableCore.js.map +1 -0
  56. package/dist/KtCodegenTableData.d.ts +22 -0
  57. package/dist/KtCodegenTableData.d.ts.map +1 -0
  58. package/dist/KtCodegenTableData.js +17 -0
  59. package/dist/KtCodegenTableData.js.map +1 -0
  60. package/dist/api/analyze.d.ts +8 -0
  61. package/dist/api/analyze.d.ts.map +1 -0
  62. package/dist/api/analyze.js +102 -0
  63. package/dist/api/analyze.js.map +1 -0
  64. package/dist/api/contracts.d.ts +93 -0
  65. package/dist/api/contracts.d.ts.map +1 -0
  66. package/dist/api/contracts.js +3 -0
  67. package/dist/api/contracts.js.map +1 -0
  68. package/dist/api/index.d.ts +3 -0
  69. package/dist/api/index.d.ts.map +1 -0
  70. package/dist/api/index.js +4 -0
  71. package/dist/api/index.js.map +1 -0
  72. package/dist/blocks/index.d.ts +2 -0
  73. package/dist/blocks/index.d.ts.map +1 -0
  74. package/dist/blocks/index.js +3 -0
  75. package/dist/blocks/index.js.map +1 -0
  76. package/dist/blocks/legacy-blocks.d.ts +309 -0
  77. package/dist/blocks/legacy-blocks.d.ts.map +1 -0
  78. package/dist/blocks/legacy-blocks.js +343 -0
  79. package/dist/blocks/legacy-blocks.js.map +1 -0
  80. package/dist/index.d.ts +19 -0
  81. package/dist/index.d.ts.map +1 -0
  82. package/dist/index.js +20 -0
  83. package/dist/index.js.map +1 -0
  84. package/dist/legacy/csv.d.ts +25 -0
  85. package/dist/legacy/csv.d.ts.map +1 -0
  86. package/dist/legacy/csv.js +197 -0
  87. package/dist/legacy/csv.js.map +1 -0
  88. package/dist/legacy/index.d.ts +4 -0
  89. package/dist/legacy/index.d.ts.map +1 -0
  90. package/dist/legacy/index.js +5 -0
  91. package/dist/legacy/index.js.map +1 -0
  92. package/dist/legacy/v4-json.d.ts +12 -0
  93. package/dist/legacy/v4-json.d.ts.map +1 -0
  94. package/dist/legacy/v4-json.js +363 -0
  95. package/dist/legacy/v4-json.js.map +1 -0
  96. package/dist/legacy/v4-schema.d.ts +30 -0
  97. package/dist/legacy/v4-schema.d.ts.map +1 -0
  98. package/dist/legacy/v4-schema.js +63 -0
  99. package/dist/legacy/v4-schema.js.map +1 -0
  100. package/dist/model/diagnostic.d.ts +38 -0
  101. package/dist/model/diagnostic.d.ts.map +1 -0
  102. package/dist/model/diagnostic.js +6 -0
  103. package/dist/model/diagnostic.js.map +1 -0
  104. package/dist/model/equal.d.ts +10 -0
  105. package/dist/model/equal.d.ts.map +1 -0
  106. package/dist/model/equal.js +64 -0
  107. package/dist/model/equal.js.map +1 -0
  108. package/dist/model/index.d.ts +5 -0
  109. package/dist/model/index.d.ts.map +1 -0
  110. package/dist/model/index.js +6 -0
  111. package/dist/model/index.js.map +1 -0
  112. package/dist/model/target.d.ts +58 -0
  113. package/dist/model/target.d.ts.map +1 -0
  114. package/dist/model/target.js +32 -0
  115. package/dist/model/target.js.map +1 -0
  116. package/dist/model/validate.d.ts +9 -0
  117. package/dist/model/validate.d.ts.map +1 -0
  118. package/dist/model/validate.js +52 -0
  119. package/dist/model/validate.js.map +1 -0
  120. package/dist/table/KtCodegenTable.d.ts +75 -0
  121. package/dist/table/KtCodegenTable.d.ts.map +1 -0
  122. package/dist/table/KtCodegenTable.js +541 -0
  123. package/dist/table/KtCodegenTable.js.map +1 -0
  124. package/dist/table/index.d.ts +4 -0
  125. package/dist/table/index.d.ts.map +1 -0
  126. package/dist/table/index.js +5 -0
  127. package/dist/table/index.js.map +1 -0
  128. 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
  129. 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
  130. 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
  131. 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
  132. 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
  133. 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
  134. 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
  135. 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
  136. 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
  137. package/doc/KtCodegen/345/221/275/345/220/215/350/277/201/347/247/273/350/257/264/346/230/216.md +55 -0
  138. 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
  139. 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
  140. 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
  141. 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
  142. 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
  143. package/package.json +62 -0
  144. package/src/index.ts +20 -0
@@ -0,0 +1,12 @@
1
+ import { type KtCodegenDataResult } from "../model/diagnostic.js";
2
+ import { KtCodegenParam, type KtCodegenSourceFormat } from "../KtCodegenParam.js";
3
+ import { type KtCodegenLegacyV4JsonObject } from "./v4-schema.js";
4
+ /** 把已解析对象按旧 v4 协议转换为统一参数数据。 */
5
+ export declare function ktCodegenParseLegacyV4Object(input: unknown, sourceFormat?: KtCodegenSourceFormat): KtCodegenDataResult<KtCodegenParam>;
6
+ /** 读取旧 v4 JSON 文本或对象,并返回统一参数数据和诊断。 */
7
+ export declare function ktCodegenParseLegacyV4Json(input: string | unknown): KtCodegenDataResult<KtCodegenParam>;
8
+ /** 把统一参数数据转换为旧 v4 JSON 的结构化对象。 */
9
+ export declare function ktCodegenToLegacyV4JsonObject(spec: KtCodegenParam, rootKeys?: readonly string[]): KtCodegenLegacyV4JsonObject;
10
+ /** 把统一参数数据序列化为旧 C++/Qt 可读取的 v4 JSON 文本。 */
11
+ export declare function ktCodegenWriteLegacyV4Json(spec: KtCodegenParam, space?: number, rootKeys?: readonly string[]): string;
12
+ //# sourceMappingURL=v4-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v4-json.d.ts","sourceRoot":"","sources":["../../src/legacy/v4-json.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,mBAAmB,EAGzB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,cAAc,EACd,KAAK,qBAAqB,EAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAKL,KAAK,2BAA2B,EACjC,MAAM,gBAAgB,CAAC;AAyOxB,+BAA+B;AAC/B,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,OAAO,EACd,YAAY,GAAE,qBAAwC,GACrD,mBAAmB,CAAC,cAAc,CAAC,CA6LrC;AAED,sCAAsC;AACtC,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAkBvG;AAkGD,kCAAkC;AAClC,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,cAAc,EACpB,QAAQ,GAAE,SAAS,MAAM,EAAO,GAC/B,2BAA2B,CAe7B;AAED,2CAA2C;AAC3C,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,cAAc,EACpB,KAAK,SAAI,EACT,QAAQ,GAAE,SAAS,MAAM,EAAO,GAC/B,MAAM,CAER"}
@@ -0,0 +1,363 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import { ktCodegenHasDiagnosticErrors, } from "../model/diagnostic.js";
3
+ import { KtCodegenItem } from "../KtCodegenItem.js";
4
+ import { KtCodegenParam, } from "../KtCodegenParam.js";
5
+ import { KT_CODEGEN_LEGACY_V4_JSON_HEADERS, KT_CODEGEN_LEGACY_V4_ROOT_KEYS, ktCodegenNormalizeLegacyV4Header, } from "./v4-schema.js";
6
+ function ktCodegenDiagnostic(code, severity, message, path) {
7
+ return path ? { code, severity, message, path } : { code, severity, message };
8
+ }
9
+ function ktCodegenIsRecord(value) {
10
+ return typeof value === "object" && value !== null && !Array.isArray(value);
11
+ }
12
+ function ktCodegenReadString(value, field, diagnostics, path) {
13
+ if (value === undefined || value === null)
14
+ return "";
15
+ if (typeof value === "string")
16
+ return value.trim();
17
+ if (typeof value === "number" || typeof value === "boolean") {
18
+ diagnostics.push(ktCodegenDiagnostic("legacy.value-coerced-to-string", "warning", `${field} was converted from ${typeof value} to string.`, path));
19
+ return String(value);
20
+ }
21
+ diagnostics.push(ktCodegenDiagnostic("legacy.invalid-string", "error", `${field} must be a scalar value.`, path));
22
+ return "";
23
+ }
24
+ function ktCodegenReadInteger(value, field, diagnostics, path) {
25
+ if (typeof value === "number" && Number.isInteger(value))
26
+ return value;
27
+ if (typeof value === "string" && /^[-+]?\d+$/.test(value.trim())) {
28
+ return Number.parseInt(value.trim(), 10);
29
+ }
30
+ if (value === undefined || value === null || value === "")
31
+ return 0;
32
+ diagnostics.push(ktCodegenDiagnostic("legacy.invalid-integer", "error", `${field} must be an integer.`, path));
33
+ return 0;
34
+ }
35
+ function ktCodegenReadBoolean(value, field, diagnostics, path) {
36
+ if (typeof value === "boolean")
37
+ return value;
38
+ if (value === 1)
39
+ return true;
40
+ if (value === 0 || value === undefined || value === null)
41
+ return false;
42
+ if (typeof value === "string") {
43
+ const normalized = value.trim().toLowerCase();
44
+ if (normalized === "1" || normalized === "true" || normalized === "是")
45
+ return true;
46
+ if (normalized === "" ||
47
+ normalized === "0" ||
48
+ normalized === "false" ||
49
+ normalized === "否") {
50
+ return false;
51
+ }
52
+ }
53
+ diagnostics.push(ktCodegenDiagnostic("legacy.unknown-boolean", "warning", `${field} is not a recognized legacy boolean and was treated as false.`, path));
54
+ return false;
55
+ }
56
+ function ktCodegenValueAt(values, field) {
57
+ return values[field];
58
+ }
59
+ function ktCodegenParseParameterRow(row, rowIndex, columns, diagnostics) {
60
+ const values = {};
61
+ for (let columnIndex = 0; columnIndex < columns.length; columnIndex += 1) {
62
+ const column = columns[columnIndex];
63
+ if (column)
64
+ values[column] = row[columnIndex];
65
+ }
66
+ const path = (field) => ({
67
+ source: "json",
68
+ row: rowIndex,
69
+ field,
70
+ });
71
+ const parameter = new KtCodegenItem({
72
+ nameSuffix: ktCodegenReadString(ktCodegenValueAt(values, "NameSuffix"), "NameSuffix", diagnostics, path("NameSuffix")),
73
+ id: ktCodegenReadInteger(ktCodegenValueAt(values, "ID"), "ID", diagnostics, path("ID")),
74
+ name: ktCodegenReadString(ktCodegenValueAt(values, "Name"), "Name", diagnostics, path("Name")),
75
+ paramString: ktCodegenReadString(ktCodegenValueAt(values, "ParamString"), "ParamString", diagnostics, path("ParamString")),
76
+ dataType: ktCodegenReadString(ktCodegenValueAt(values, "DataType"), "DataType", diagnostics, path("DataType")),
77
+ defaultValue: ktCodegenReadString(ktCodegenValueAt(values, "DefaultValue"), "DefaultValue", diagnostics, path("DefaultValue")),
78
+ unit: ktCodegenReadString(ktCodegenValueAt(values, "Unit"), "Unit", diagnostics, path("Unit")),
79
+ isList: ktCodegenReadBoolean(ktCodegenValueAt(values, "IsList"), "IsList", diagnostics, path("IsList")),
80
+ tcKind: ktCodegenReadString(ktCodegenValueAt(values, "TCKind"), "TCKind", diagnostics, path("TCKind")),
81
+ catAttrInOut: ktCodegenReadString(ktCodegenValueAt(values, "CATAttrInOut"), "CATAttrInOut", diagnostics, path("CATAttrInOut")),
82
+ isOnTree: ktCodegenReadBoolean(ktCodegenValueAt(values, "IsOnTree"), "IsOnTree", diagnostics, path("IsOnTree")),
83
+ component: ktCodegenReadString(ktCodegenValueAt(values, "Component"), "Component", diagnostics, path("Component")),
84
+ componentCount: ktCodegenReadInteger(ktCodegenValueAt(values, "ComponentCount"), "ComponentCount", diagnostics, path("ComponentCount")),
85
+ isParamDlg: ktCodegenReadBoolean(ktCodegenValueAt(values, "IsParamDlg"), "IsParamDlg", diagnostics, path("IsParamDlg")),
86
+ author: ktCodegenReadString(ktCodegenValueAt(values, "Author"), "Author", diagnostics, path("Author")),
87
+ createDate: ktCodegenReadString(ktCodegenValueAt(values, "CreateDate"), "CreateDate", diagnostics, path("CreateDate")),
88
+ notes: ktCodegenReadString(ktCodegenValueAt(values, "Notes"), "Notes", diagnostics, path("Notes")),
89
+ });
90
+ if (!parameter.nameSuffix) {
91
+ diagnostics.push(ktCodegenDiagnostic("model.missing-name-suffix", "error", "NameSuffix is required.", path("NameSuffix")));
92
+ }
93
+ if (!parameter.paramString) {
94
+ diagnostics.push(ktCodegenDiagnostic("model.missing-symbol", "error", "ParamString is required.", path("ParamString")));
95
+ }
96
+ if (!parameter.dataType) {
97
+ diagnostics.push(ktCodegenDiagnostic("model.missing-data-type", "error", "DataType is required.", path("DataType")));
98
+ }
99
+ return parameter;
100
+ }
101
+ /** 把已解析对象按旧 v4 协议转换为统一参数数据。 */
102
+ export function ktCodegenParseLegacyV4Object(input, sourceFormat = "legacy-v4-json") {
103
+ const diagnostics = [];
104
+ if (!ktCodegenIsRecord(input)) {
105
+ return {
106
+ ok: false,
107
+ value: null,
108
+ diagnostics: [
109
+ ktCodegenDiagnostic("legacy.invalid-root", "error", "Legacy v4 JSON root must be an object.", {
110
+ source: "json",
111
+ }),
112
+ ],
113
+ };
114
+ }
115
+ const legacyType = ktCodegenReadString(input.type, "type", diagnostics, {
116
+ source: "json",
117
+ field: "type",
118
+ });
119
+ const legacyVersion = ktCodegenReadString(input.version, "version", diagnostics, {
120
+ source: "json",
121
+ field: "version",
122
+ });
123
+ if (legacyType !== "100106") {
124
+ diagnostics.push(ktCodegenDiagnostic("legacy.unsupported-type", "error", `Expected type 100106, got ${legacyType}.`, {
125
+ source: "json",
126
+ field: "type",
127
+ }));
128
+ }
129
+ if (legacyVersion !== "4.0") {
130
+ diagnostics.push(ktCodegenDiagnostic("legacy.unsupported-version", "error", `Expected version 4.0, got ${legacyVersion}.`, { source: "json", field: "version" }));
131
+ }
132
+ const rawHeaders = Array.isArray(input.headers) ? input.headers : [];
133
+ if (!Array.isArray(input.headers)) {
134
+ diagnostics.push(ktCodegenDiagnostic("legacy.missing-headers", "error", "headers must be an array.", {
135
+ source: "json",
136
+ field: "headers",
137
+ }));
138
+ }
139
+ const headers = rawHeaders.map((header, index) => ktCodegenReadString(header, `headers[${index}]`, diagnostics, {
140
+ source: "json",
141
+ column: index,
142
+ field: "headers",
143
+ }));
144
+ const columns = headers.map((header, index) => {
145
+ const column = ktCodegenNormalizeLegacyV4Header(header);
146
+ if (!column) {
147
+ diagnostics.push(ktCodegenDiagnostic("legacy.unknown-header", "warning", `Unknown header ${header} was ignored.`, {
148
+ source: "json",
149
+ column: index,
150
+ field: "headers",
151
+ }));
152
+ }
153
+ return column;
154
+ });
155
+ const seenColumns = new Set();
156
+ for (const column of columns) {
157
+ if (!column)
158
+ continue;
159
+ if (seenColumns.has(column)) {
160
+ diagnostics.push(ktCodegenDiagnostic("legacy.duplicate-header", "error", `Header ${column} appears more than once.`, {
161
+ source: "json",
162
+ field: column,
163
+ }));
164
+ }
165
+ seenColumns.add(column);
166
+ }
167
+ for (const required of ["NameSuffix", "ID", "ParamString", "DataType"]) {
168
+ if (!seenColumns.has(required)) {
169
+ diagnostics.push(ktCodegenDiagnostic("legacy.required-header-missing", "error", `Required header ${required} is missing.`, {
170
+ source: "json",
171
+ field: required,
172
+ }));
173
+ }
174
+ }
175
+ const rawData = Array.isArray(input.data) ? input.data : [];
176
+ if (!Array.isArray(input.data)) {
177
+ diagnostics.push(ktCodegenDiagnostic("legacy.missing-data", "error", "data must be an array.", {
178
+ source: "json",
179
+ field: "data",
180
+ }));
181
+ }
182
+ const items = [];
183
+ rawData.forEach((row, rowIndex) => {
184
+ if (!Array.isArray(row)) {
185
+ diagnostics.push(ktCodegenDiagnostic("legacy.invalid-row", "error", "Each data row must be an array.", {
186
+ source: "json",
187
+ row: rowIndex,
188
+ field: "data",
189
+ }));
190
+ return;
191
+ }
192
+ items.push(ktCodegenParseParameterRow(row, rowIndex, columns, diagnostics));
193
+ });
194
+ const symbols = new Set();
195
+ items.forEach((parameter, rowIndex) => {
196
+ const identity = `${parameter.nameSuffix}\u0000${parameter.paramString}`;
197
+ if (symbols.has(identity)) {
198
+ diagnostics.push(ktCodegenDiagnostic("model.duplicate-symbol", "error", `Duplicate parameter ${parameter.nameSuffix}.${parameter.paramString}.`, { source: "model", row: rowIndex, field: "symbol" }));
199
+ }
200
+ symbols.add(identity);
201
+ });
202
+ const extensions = Object.fromEntries(Object.entries(input).filter(([key]) => !KT_CODEGEN_LEGACY_V4_ROOT_KEYS.has(key)));
203
+ const spec = new KtCodegenParam({
204
+ kind: "kt.codegen",
205
+ schemaVersion: 1,
206
+ source: {
207
+ format: sourceFormat,
208
+ legacyType,
209
+ legacyVersion,
210
+ headers,
211
+ extensions,
212
+ },
213
+ namePrefix: ktCodegenReadString(input.NamePrefix, "NamePrefix", diagnostics, {
214
+ source: "json",
215
+ field: "NamePrefix",
216
+ }),
217
+ nameMiddle: ktCodegenReadString(input.NameMiddle, "NameMiddle", diagnostics, {
218
+ source: "json",
219
+ field: "NameMiddle",
220
+ }),
221
+ nameSpace: ktCodegenReadString(input.NameSpace, "NameSpace", diagnostics, {
222
+ source: "json",
223
+ field: "NameSpace",
224
+ }),
225
+ appendFunction: ktCodegenReadString(input.AppendFunction, "AppendFunction", diagnostics, {
226
+ source: "json",
227
+ field: "AppendFunction",
228
+ }),
229
+ items,
230
+ });
231
+ if (!spec.namePrefix) {
232
+ diagnostics.push(ktCodegenDiagnostic("model.missing-prefix", "error", "NamePrefix is required.", {
233
+ source: "model",
234
+ field: "naming.prefix",
235
+ }));
236
+ }
237
+ if (!spec.nameMiddle) {
238
+ diagnostics.push(ktCodegenDiagnostic("model.missing-middle", "error", "NameMiddle is required.", {
239
+ source: "model",
240
+ field: "naming.middle",
241
+ }));
242
+ }
243
+ return {
244
+ ok: !ktCodegenHasDiagnosticErrors(diagnostics),
245
+ value: spec,
246
+ diagnostics: Object.freeze(diagnostics),
247
+ };
248
+ }
249
+ /** 读取旧 v4 JSON 文本或对象,并返回统一参数数据和诊断。 */
250
+ export function ktCodegenParseLegacyV4Json(input) {
251
+ if (typeof input !== "string")
252
+ return ktCodegenParseLegacyV4Object(input);
253
+ try {
254
+ return ktCodegenParseLegacyV4Object(JSON.parse(input));
255
+ }
256
+ catch (error) {
257
+ return {
258
+ ok: false,
259
+ value: null,
260
+ diagnostics: [
261
+ ktCodegenDiagnostic("legacy.invalid-json", "error", error instanceof Error ? error.message : "Invalid JSON text.", { source: "json" }),
262
+ ],
263
+ };
264
+ }
265
+ }
266
+ function ktCodegenParamValueForColumn(parameter, column) {
267
+ switch (column) {
268
+ case "NameSuffix": return parameter.nameSuffix;
269
+ case "ID": return parameter.id;
270
+ case "Name": return parameter.name;
271
+ case "ParamString": return parameter.paramString;
272
+ case "DataType": return parameter.dataType;
273
+ case "TCKind": return parameter.tcKind;
274
+ case "DefaultValue": return parameter.defaultValue;
275
+ case "CATAttrInOut": return parameter.catAttrInOut;
276
+ case "IsList": return parameter.isList ? 1 : 0;
277
+ case "IsOnTree": return parameter.isOnTree ? 1 : 0;
278
+ case "Component": return parameter.component;
279
+ case "ComponentCount": return parameter.componentCount;
280
+ case "IsParamDlg": return parameter.isParamDlg ? 1 : 0;
281
+ case "Unit": return parameter.unit;
282
+ case "Author": return parameter.author;
283
+ case "CreateDate": return parameter.createDate;
284
+ case "Notes": return parameter.notes;
285
+ default: return null;
286
+ }
287
+ }
288
+ /** 保留既有表头的名称与顺序,仅把缺少的新列插到 schema 邻近位置。 */
289
+ function ktCodegenHeadersForWrite(spec) {
290
+ if (spec.source.format !== "legacy-v4-json" || spec.source.headers.length === 0) {
291
+ return [...KT_CODEGEN_LEGACY_V4_JSON_HEADERS];
292
+ }
293
+ const headers = [...spec.source.headers];
294
+ const present = new Set(headers.map(ktCodegenNormalizeLegacyV4Header).filter((column) => column !== null));
295
+ for (let schemaIndex = 0; schemaIndex < KT_CODEGEN_LEGACY_V4_JSON_HEADERS.length; schemaIndex += 1) {
296
+ const column = KT_CODEGEN_LEGACY_V4_JSON_HEADERS[schemaIndex];
297
+ if (present.has(column))
298
+ continue;
299
+ const nextIndex = headers.findIndex((header) => {
300
+ const normalized = ktCodegenNormalizeLegacyV4Header(header);
301
+ return normalized !== null
302
+ && KT_CODEGEN_LEGACY_V4_JSON_HEADERS.indexOf(normalized) > schemaIndex;
303
+ });
304
+ headers.splice(nextIndex < 0 ? headers.length : nextIndex, 0, column);
305
+ present.add(column);
306
+ }
307
+ return headers;
308
+ }
309
+ function ktCodegenParamToLegacyRow(parameter, headers) {
310
+ return headers.map((header) => ktCodegenParamValueForColumn(parameter, ktCodegenNormalizeLegacyV4Header(header)));
311
+ }
312
+ const KT_CODEGEN_LEGACY_V4_ROOT_ORDER = [
313
+ "type",
314
+ "version",
315
+ "NamePrefix",
316
+ "NameMiddle",
317
+ "NameSpace",
318
+ "AppendFunction",
319
+ "headers",
320
+ "data",
321
+ ];
322
+ function ktCodegenOrderedRootKeys(values, preferredKeys, extensionKeys) {
323
+ const keys = [...new Set(preferredKeys.filter((key) => Object.hasOwn(values, key)))];
324
+ for (let schemaIndex = 0; schemaIndex < KT_CODEGEN_LEGACY_V4_ROOT_ORDER.length; schemaIndex += 1) {
325
+ const key = KT_CODEGEN_LEGACY_V4_ROOT_ORDER[schemaIndex];
326
+ if (keys.includes(key))
327
+ continue;
328
+ const nextIndex = keys.findIndex((candidate) => {
329
+ const candidateIndex = KT_CODEGEN_LEGACY_V4_ROOT_ORDER.indexOf(candidate);
330
+ return candidateIndex > schemaIndex;
331
+ });
332
+ keys.splice(nextIndex < 0 ? keys.length : nextIndex, 0, key);
333
+ }
334
+ for (const key of extensionKeys) {
335
+ if (keys.includes(key) || !Object.hasOwn(values, key))
336
+ continue;
337
+ const structuralIndex = keys.findIndex((candidate) => candidate === "headers" || candidate === "data");
338
+ keys.splice(structuralIndex < 0 ? keys.length : structuralIndex, 0, key);
339
+ }
340
+ return keys;
341
+ }
342
+ /** 把统一参数数据转换为旧 v4 JSON 的结构化对象。 */
343
+ export function ktCodegenToLegacyV4JsonObject(spec, rootKeys = []) {
344
+ const headers = ktCodegenHeadersForWrite(spec);
345
+ const values = {
346
+ ...spec.source.extensions,
347
+ type: "100106",
348
+ version: "4.0",
349
+ NamePrefix: spec.namePrefix,
350
+ NameMiddle: spec.nameMiddle,
351
+ NameSpace: spec.nameSpace,
352
+ AppendFunction: spec.appendFunction,
353
+ headers,
354
+ data: spec.items.map((parameter) => ktCodegenParamToLegacyRow(parameter, headers)),
355
+ };
356
+ const keys = ktCodegenOrderedRootKeys(values, rootKeys, Object.keys(spec.source.extensions));
357
+ return Object.fromEntries(keys.map((key) => [key, values[key]]));
358
+ }
359
+ /** 把统一参数数据序列化为旧 C++/Qt 可读取的 v4 JSON 文本。 */
360
+ export function ktCodegenWriteLegacyV4Json(spec, space = 4, rootKeys = []) {
361
+ return `${JSON.stringify(ktCodegenToLegacyV4JsonObject(spec, rootKeys), null, space)}\n`;
362
+ }
363
+ //# sourceMappingURL=v4-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v4-json.js","sourceRoot":"","sources":["../../src/legacy/v4-json.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /** 当前 v4 JSON 写出使用的规范17列表头和顺序。 */
2
+ export declare const KT_CODEGEN_LEGACY_V4_JSON_HEADERS: readonly ["NameSuffix", "ID", "Name", "ParamString", "DataType", "TCKind", "DefaultValue", "CATAttrInOut", "IsList", "IsOnTree", "Component", "ComponentCount", "IsParamDlg", "Unit", "Author", "CreateDate", "Notes"];
3
+ /** 旧 CSV 使用的17列表头;第11列历史名称为 `Count`。 */
4
+ export declare const KT_CODEGEN_LEGACY_17_COLUMN_CSV_HEADERS: readonly ("NameSuffix" | "ID" | "Name" | "ParamString" | "DataType" | "TCKind" | "DefaultValue" | "CATAttrInOut" | "IsList" | "IsOnTree" | "Component" | "ComponentCount" | "IsParamDlg" | "Unit" | "Author" | "CreateDate" | "Notes" | "Count")[];
5
+ /** 规范化后的旧 v4 参数列名。 */
6
+ export type KtCodegenLegacyV4Column = (typeof KT_CODEGEN_LEGACY_V4_JSON_HEADERS)[number];
7
+ /** C++/Qt v4 JSON 配置的结构化表示。 */
8
+ export interface KtCodegenLegacyV4JsonObject extends Record<string, unknown> {
9
+ /** 旧文件类型标识。 */
10
+ readonly type: "100106";
11
+ /** 旧文件协议版本。 */
12
+ readonly version: "4.0";
13
+ /** 旧类名前缀。 */
14
+ readonly NamePrefix: string;
15
+ /** 旧类名主体。 */
16
+ readonly NameMiddle: string;
17
+ /** 旧代码命名空间。 */
18
+ readonly NameSpace: string;
19
+ /** 旧列表追加函数名。 */
20
+ readonly AppendFunction: string;
21
+ /** 输入或输出表头。 */
22
+ readonly headers: readonly string[];
23
+ /** 按表头顺序存储的参数行。 */
24
+ readonly data: readonly (readonly unknown[])[];
25
+ }
26
+ /** 已知 v4 JSON 根字段;其余字段作为 extensions 保留。 */
27
+ export declare const KT_CODEGEN_LEGACY_V4_ROOT_KEYS: Set<string>;
28
+ /** 把大小写或历史别名不同的表头规范化为当前17列字段名。 */
29
+ export declare function ktCodegenNormalizeLegacyV4Header(value: string): KtCodegenLegacyV4Column | null;
30
+ //# sourceMappingURL=v4-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v4-schema.d.ts","sourceRoot":"","sources":["../../src/legacy/v4-schema.ts"],"names":[],"mappings":"AAEA,kCAAkC;AAClC,eAAO,MAAM,iCAAiC,wNAkBpC,CAAC;AAEX,wCAAwC;AACxC,eAAO,MAAM,uCAAuC,oPAI1C,CAAC;AAEX,sBAAsB;AACtB,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,iCAAiC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzF,+BAA+B;AAC/B,MAAM,WAAW,2BAA4B,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC1E,eAAe;IACf,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,eAAe;IACf,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,aAAa;IACb,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,aAAa;IACb,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,eAAe;IACf,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,gBAAgB;IAChB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,eAAe;IACf,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,mBAAmB;IACnB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,OAAO,EAAE,CAAC,EAAE,CAAC;CAChD;AAED,2CAA2C;AAC3C,eAAO,MAAM,8BAA8B,aASzC,CAAC;AAuBH,kCAAkC;AAClC,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,MAAM,GAAG,uBAAuB,GAAG,IAAI,CAE9F"}
@@ -0,0 +1,63 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ /** 当前 v4 JSON 写出使用的规范17列表头和顺序。 */
3
+ export const KT_CODEGEN_LEGACY_V4_JSON_HEADERS = [
4
+ "NameSuffix",
5
+ "ID",
6
+ "Name",
7
+ "ParamString",
8
+ "DataType",
9
+ "TCKind",
10
+ "DefaultValue",
11
+ "CATAttrInOut",
12
+ "IsList",
13
+ "IsOnTree",
14
+ "Component",
15
+ "ComponentCount",
16
+ "IsParamDlg",
17
+ "Unit",
18
+ "Author",
19
+ "CreateDate",
20
+ "Notes",
21
+ ];
22
+ /** 旧 CSV 使用的17列表头;第11列历史名称为 `Count`。 */
23
+ export const KT_CODEGEN_LEGACY_17_COLUMN_CSV_HEADERS = [
24
+ ...KT_CODEGEN_LEGACY_V4_JSON_HEADERS.slice(0, 11),
25
+ "Count",
26
+ ...KT_CODEGEN_LEGACY_V4_JSON_HEADERS.slice(12),
27
+ ];
28
+ /** 已知 v4 JSON 根字段;其余字段作为 extensions 保留。 */
29
+ export const KT_CODEGEN_LEGACY_V4_ROOT_KEYS = new Set([
30
+ "type",
31
+ "version",
32
+ "NamePrefix",
33
+ "NameMiddle",
34
+ "NameSpace",
35
+ "AppendFunction",
36
+ "headers",
37
+ "data",
38
+ ]);
39
+ const KT_CODEGEN_LEGACY_HEADER_ALIASES = Object.freeze({
40
+ namesuffix: "NameSuffix",
41
+ id: "ID",
42
+ name: "Name",
43
+ paramstring: "ParamString",
44
+ datatype: "DataType",
45
+ tckind: "TCKind",
46
+ defaultvalue: "DefaultValue",
47
+ catattrinout: "CATAttrInOut",
48
+ islist: "IsList",
49
+ isontree: "IsOnTree",
50
+ component: "Component",
51
+ componentcount: "ComponentCount",
52
+ count: "ComponentCount",
53
+ isparamdlg: "IsParamDlg",
54
+ unit: "Unit",
55
+ author: "Author",
56
+ createdate: "CreateDate",
57
+ notes: "Notes",
58
+ });
59
+ /** 把大小写或历史别名不同的表头规范化为当前17列字段名。 */
60
+ export function ktCodegenNormalizeLegacyV4Header(value) {
61
+ return KT_CODEGEN_LEGACY_HEADER_ALIASES[value.trim().toLowerCase()] ?? null;
62
+ }
63
+ //# sourceMappingURL=v4-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v4-schema.js","sourceRoot":"","sources":["../../src/legacy/v4-schema.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,kCAAkC;AAClC,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,YAAY;IACZ,IAAI;IACJ,MAAM;IACN,aAAa;IACb,UAAU;IACV,QAAQ;IACR,cAAc;IACd,cAAc;IACd,QAAQ;IACR,UAAU;IACV,WAAW;IACX,gBAAgB;IAChB,YAAY;IACZ,MAAM;IACN,QAAQ;IACR,YAAY;IACZ,OAAO;CACC,CAAC;AAEX,wCAAwC;AACxC,MAAM,CAAC,MAAM,uCAAuC,GAAG;IACrD,GAAG,iCAAiC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;IACjD,OAAO;IACP,GAAG,iCAAiC,CAAC,KAAK,CAAC,EAAE,CAAC;CACtC,CAAC;AAyBX,2CAA2C;AAC3C,MAAM,CAAC,MAAM,8BAA8B,GAAG,IAAI,GAAG,CAAC;IACpD,MAAM;IACN,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,SAAS;IACT,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,gCAAgC,GAAsD,MAAM,CAAC,MAAM,CAAC;IACxG,UAAU,EAAE,YAAY;IACxB,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,cAAc,EAAE,gBAAgB;IAChC,KAAK,EAAE,gBAAgB;IACvB,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;CACf,CAAC,CAAC;AAEH,kCAAkC;AAClC,MAAM,UAAU,gCAAgC,CAAC,KAAa;IAC5D,OAAO,gCAAgC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,38 @@
1
+ /** 诊断严重级别。 */
2
+ export type KtCodegenDiagnosticSeverity = "error" | "warning" | "info";
3
+ /** 诊断在输入数据或生成阶段中的可选定位信息。 */
4
+ export interface KtCodegenDiagnosticPath {
5
+ /** 诊断来源边界。 */
6
+ readonly source: "json" | "csv" | "model" | "source" | "renderer";
7
+ /** 源码诊断对应的宿主文件路径。 */
8
+ readonly file?: string;
9
+ /** 从0开始的数据行号或源码行号。 */
10
+ readonly row?: number;
11
+ /** 从0开始的列号。 */
12
+ readonly column?: number;
13
+ /** 相关模型字段、请求字段或生成目标。 */
14
+ readonly field?: string;
15
+ }
16
+ /** 参数读取、校验或生成过程中产生的稳定诊断。 */
17
+ export interface KtCodegenDiagnostic {
18
+ /** 可供测试、UI 和自动化判断使用的稳定诊断代码。 */
19
+ readonly code: string;
20
+ /** 错误、警告或说明级别。 */
21
+ readonly severity: KtCodegenDiagnosticSeverity;
22
+ /** 供开发者或用户阅读的说明。 */
23
+ readonly message: string;
24
+ /** 可选的结构化定位信息。 */
25
+ readonly path?: KtCodegenDiagnosticPath;
26
+ }
27
+ /** Reader、Adapter 等数据边界统一使用的结果结构。 */
28
+ export interface KtCodegenDataResult<T> {
29
+ /** 操作是否在没有 error 诊断的情况下完成。 */
30
+ readonly ok: boolean;
31
+ /** 成功值;操作失败且无法产生安全结果时为 null。 */
32
+ readonly value: T | null;
33
+ /** 操作产生的全部结构化诊断。 */
34
+ readonly diagnostics: readonly KtCodegenDiagnostic[];
35
+ }
36
+ /** 判断诊断集合中是否至少包含一个 error。 */
37
+ export declare function ktCodegenHasDiagnosticErrors(diagnostics: readonly KtCodegenDiagnostic[]): boolean;
38
+ //# sourceMappingURL=diagnostic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostic.d.ts","sourceRoot":"","sources":["../../src/model/diagnostic.ts"],"names":[],"mappings":"AAEA,cAAc;AACd,MAAM,MAAM,2BAA2B,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEvE,4BAA4B;AAC5B,MAAM,WAAW,uBAAuB;IACtC,cAAc;IACd,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;IAClE,qBAAqB;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,sBAAsB;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe;IACf,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,4BAA4B;AAC5B,MAAM,WAAW,mBAAmB;IAClC,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kBAAkB;IAClB,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;IAC/C,oBAAoB;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,kBAAkB;IAClB,QAAQ,CAAC,IAAI,CAAC,EAAE,uBAAuB,CAAC;CACzC;AAED,qCAAqC;AACrC,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,gCAAgC;IAChC,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACzB,oBAAoB;IACpB,QAAQ,CAAC,WAAW,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACtD;AAED,6BAA6B;AAC7B,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,SAAS,mBAAmB,EAAE,GAC1C,OAAO,CAET"}
@@ -0,0 +1,6 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ /** 判断诊断集合中是否至少包含一个 error。 */
3
+ export function ktCodegenHasDiagnosticErrors(diagnostics) {
4
+ return diagnostics.some((diagnostic) => diagnostic.severity === "error");
5
+ }
6
+ //# sourceMappingURL=diagnostic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostic.js","sourceRoot":"","sources":["../../src/model/diagnostic.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAyCtC,6BAA6B;AAC7B,MAAM,UAAU,4BAA4B,CAC1C,WAA2C;IAE3C,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { KtCodegenParam } from "../KtCodegenParam.js";
2
+ /**
3
+ * 比较两份参数配置的业务语义。
4
+ *
5
+ * 来源格式和原始 headers 不参与比较,因此 CSV `ComponentCount` 与旧 JSON
6
+ * `Count` 等别名不会制造假冲突;协议版本、未知扩展字段、类属性、Item
7
+ * 数量/顺序和17列值仍须完全一致,适合安全转换和宿主去重。
8
+ */
9
+ export declare function ktCodegenParamsEqual(left: KtCodegenParam, right: KtCodegenParam): boolean;
10
+ //# sourceMappingURL=equal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"equal.d.ts","sourceRoot":"","sources":["../../src/model/equal.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAwC3D;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAgBzF"}
@@ -0,0 +1,64 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ const KT_CODEGEN_ITEM_FIELDS = [
3
+ "nameSuffix",
4
+ "id",
5
+ "name",
6
+ "paramString",
7
+ "dataType",
8
+ "tcKind",
9
+ "defaultValue",
10
+ "catAttrInOut",
11
+ "isList",
12
+ "isOnTree",
13
+ "component",
14
+ "componentCount",
15
+ "isParamDlg",
16
+ "unit",
17
+ "author",
18
+ "createDate",
19
+ "notes",
20
+ ];
21
+ function ktCodegenJsonValueEqual(left, right) {
22
+ if (Object.is(left, right))
23
+ return true;
24
+ if (Array.isArray(left) || Array.isArray(right)) {
25
+ return Array.isArray(left)
26
+ && Array.isArray(right)
27
+ && left.length === right.length
28
+ && left.every((value, index) => ktCodegenJsonValueEqual(value, right[index]));
29
+ }
30
+ if (!left || !right || typeof left !== "object" || typeof right !== "object")
31
+ return false;
32
+ const leftRecord = left;
33
+ const rightRecord = right;
34
+ const leftKeys = Object.keys(leftRecord).sort();
35
+ const rightKeys = Object.keys(rightRecord).sort();
36
+ return leftKeys.length === rightKeys.length
37
+ && leftKeys.every((key, index) => key === rightKeys[index]
38
+ && ktCodegenJsonValueEqual(leftRecord[key], rightRecord[key]));
39
+ }
40
+ /**
41
+ * 比较两份参数配置的业务语义。
42
+ *
43
+ * 来源格式和原始 headers 不参与比较,因此 CSV `ComponentCount` 与旧 JSON
44
+ * `Count` 等别名不会制造假冲突;协议版本、未知扩展字段、类属性、Item
45
+ * 数量/顺序和17列值仍须完全一致,适合安全转换和宿主去重。
46
+ */
47
+ export function ktCodegenParamsEqual(left, right) {
48
+ return left.kind === right.kind
49
+ && left.schemaVersion === right.schemaVersion
50
+ && left.source.legacyType === right.source.legacyType
51
+ && left.source.legacyVersion === right.source.legacyVersion
52
+ && ktCodegenJsonValueEqual(left.source.extensions, right.source.extensions)
53
+ && left.namePrefix === right.namePrefix
54
+ && left.nameMiddle === right.nameMiddle
55
+ && left.nameSpace === right.nameSpace
56
+ && left.appendFunction === right.appendFunction
57
+ && left.items.length === right.items.length
58
+ && left.items.every((item, index) => {
59
+ const candidate = right.items[index];
60
+ return candidate !== undefined
61
+ && KT_CODEGEN_ITEM_FIELDS.every((field) => Object.is(item[field], candidate[field]));
62
+ });
63
+ }
64
+ //# sourceMappingURL=equal.js.map