@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,87 @@
1
+ import type { KtCodegenAnalyzeRequest, KtCodegenPlan } from "./api/contracts.js";
2
+ import type { KtCodegenItem } from "./KtCodegenItem.js";
3
+ import type { KtCodegenParam } from "./KtCodegenParam.js";
4
+ import { KtCodegenRenderer } from "./KtCodegenRenderer.js";
5
+ import { KtCodegenMarker } from "./KtCodegenMarker.js";
6
+ /**
7
+ * 与宿主、产品 UI 和文件系统无关的参数代码生成核心算法入口。
8
+ *
9
+ * Core 负责校验生成请求、扫描旧标记、选择目标 Renderer,并聚合 region、
10
+ * artifact 和 diagnostic 生成 Analyze Plan。它不负责配置或真实源码读写。
11
+ */
12
+ export declare class KtCodegenCore {
13
+ /** 当前注册的目标 Renderer;宿主可注入或追加新的生成实现。 */
14
+ renderers: KtCodegenRenderer[];
15
+ /** 旧自动代码 Start/End 控制标记的只读扫描器。 */
16
+ readonly marker: KtCodegenMarker;
17
+ /**
18
+ * 创建核心算法入口。
19
+ *
20
+ * 默认注册已迁移部分的 CAA Renderer、Qt 双向更新 Renderer、普通 C++
21
+ * Parameter Renderer,并创建标准旧标记扫描器。自定义数组会被复制;
22
+ * 扫描器可注入。
23
+ */
24
+ constructor(renderers?: readonly KtCodegenRenderer[], marker?: KtCodegenMarker);
25
+ /**
26
+ * 根据共享参数、目标、block key 和源码 snapshot 生成 Analyze Plan。
27
+ *
28
+ * 本方法不修改 `param`,也不执行真实文件写入;Renderer 必须遵守同一规则。
29
+ */
30
+ analyze(param: KtCodegenParam, request: Omit<KtCodegenAnalyzeRequest, "param">): KtCodegenPlan;
31
+ /**
32
+ * 按旧 `KevinCAAParamInfor.GetDefaultValue` 规则生成 C++ 默认值表达式。
33
+ *
34
+ * 字符串类型自动补双引号;分号恢复为逗号;Spinner/QDoubleSpinBox 的 `mm`
35
+ * 和 `degree/deg` 根据旧规则转换。方法只返回新字符串,不修改 Item。
36
+ */
37
+ static formatDefaultValue(item: KtCodegenItem, addQuotation?: boolean): string;
38
+ /** 判断类型名是否属于旧生成器识别的3D点、向量、方向或射线类型。 */
39
+ static isPointOrVector3DType(dataType: string): boolean;
40
+ /** 判断 Item 是否为旧生成器识别的 Kt 三维向量类型。 */
41
+ static isKtVector(item: KtCodegenItem): boolean;
42
+ /** 判断 Item 是否为旧生成器识别的 CAA 三维点、向量或方向类型。 */
43
+ static isCaaVector(item: KtCodegenItem): boolean;
44
+ /**
45
+ * 按旧 `GetCurrentSelectorList` 规则判断 Item 是否属于 Selector Field。
46
+ *
47
+ * 旧实现只要求 `id >= 1` 且 Component 精确属于五个候选值,不检查
48
+ * DataType,也从2023年起不再检查 ComponentCount;后缀筛选由 Renderer
49
+ * 根据当前 Marker 单独完成。
50
+ */
51
+ static isSelectorField(item: KtCodegenItem): boolean;
52
+ /**
53
+ * 判断 Selector Field 是否支持旧 Command 宏自动生成。
54
+ *
55
+ * 旧实现只支持精确的 `SelectorList` 与 `QListWidget`,并仅排除
56
+ * `ComponentCount === 0`;此处有意不把负数扩展解释为0。
57
+ */
58
+ static isCommandAutoField(item: KtCodegenItem): boolean;
59
+ /**
60
+ * 按旧 `CmdAgentBuildGraph` 的优先级从 Field 名推断建议选择过滤器。
61
+ *
62
+ * 匹配不区分大小写;`GRID_AXIS`、`AXIS_SYSTEM` 等更具体名称必须先于
63
+ * 通用 `AXIS`,未命中时返回 `DEFAULT`。
64
+ */
65
+ static getCommandSuggestedFilter(paramString: string): string;
66
+ /**
67
+ * 按旧 `IsParamSpecList` 顺序判断参数是否使用列表式 Get/Set。
68
+ *
69
+ * 旧逻辑先排除3D点和向量,即使这些 Item 的 `isList` 为 true 也返回 false;
70
+ * 此处保留该顺序,避免迁移后的生成代码悄然变化。
71
+ */
72
+ static isParamSpecList(item: KtCodegenItem): boolean;
73
+ /**
74
+ * 复现旧 `GetLastCharIfOnlyUpper`:仅当末字符为单独的大写字符时返回它。
75
+ *
76
+ * 该 helper 用于 `SpecObjectCollect` 的排序函数后缀选择。
77
+ */
78
+ static getLastStandaloneUppercase(value: string | null | undefined): string;
79
+ /**
80
+ * 按旧 `ConvertNameOnTree` 规则把参数符号名转换为 CAA 特征树标题。
81
+ *
82
+ * 仅在当前字符为大写且前一字符不是大写时插入空格;连续大写缩写保持
83
+ * 原样。方法不修改输入 Item。
84
+ */
85
+ static formatTreeName(value: string): string;
86
+ }
87
+ //# sourceMappingURL=KtCodegenCore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KtCodegenCore.d.ts","sourceRoot":"","sources":["../src/KtCodegenCore.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,uBAAuB,EACvB,aAAa,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AA8BvD;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,uCAAuC;IAChC,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAEtC,kCAAkC;IAClC,SAAgB,MAAM,EAAE,eAAe,CAAC;IAExC;;;;;;OAMG;gBAED,SAAS,GAAE,SAAS,iBAAiB,EAgBpC,EACD,MAAM,GAAE,eAAuC;IAMjD;;;;OAIG;IACH,OAAO,CACL,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,GAC9C,aAAa;IAIhB;;;;;OAKG;WACW,kBAAkB,CAC9B,IAAI,EAAE,aAAa,EACnB,YAAY,UAAQ,GACnB,MAAM;IAoCT,sCAAsC;WACxB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI9D,oCAAoC;WACtB,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAItD,0CAA0C;WAC5B,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAIvD;;;;;;OAMG;WACW,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAI3D;;;;;OAKG;WACW,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAO9D;;;;;OAKG;WACW,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAepE;;;;;OAKG;WACW,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAa3D;;;;OAIG;WACW,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM;IASlF;;;;;OAKG;WACW,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAWpD"}
@@ -0,0 +1,234 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ import { ktCodegenAnalyze } from "./api/analyze.js";
3
+ import { KtCodegenRenderer } from "./KtCodegenRenderer.js";
4
+ import { KtCodegenMarker } from "./KtCodegenMarker.js";
5
+ const KT_CODEGEN_POINT_OR_VECTOR_3D_TYPES = new Set([
6
+ "CATMathPoint",
7
+ "CATMathVector",
8
+ "CATMathPointf",
9
+ "CATMathVectorf",
10
+ "KtMathVector",
11
+ "KtMathRay",
12
+ "CATMathDirectionf",
13
+ "CATMathDirection",
14
+ ]);
15
+ const KT_CODEGEN_CAA_VECTOR_TYPES = new Set([
16
+ "CATMathPoint",
17
+ "CATMathVector",
18
+ "CATMathPointf",
19
+ "CATMathVectorf",
20
+ "CATMathDirectionf",
21
+ "CATMathDirection",
22
+ ]);
23
+ const KT_CODEGEN_SELECTOR_FIELD_COMPONENTS = new Set([
24
+ "SelectorList",
25
+ "MultiList",
26
+ "QListWidget",
27
+ "QTableWidget",
28
+ "QTableView",
29
+ ]);
30
+ /**
31
+ * 与宿主、产品 UI 和文件系统无关的参数代码生成核心算法入口。
32
+ *
33
+ * Core 负责校验生成请求、扫描旧标记、选择目标 Renderer,并聚合 region、
34
+ * artifact 和 diagnostic 生成 Analyze Plan。它不负责配置或真实源码读写。
35
+ */
36
+ export class KtCodegenCore {
37
+ /** 当前注册的目标 Renderer;宿主可注入或追加新的生成实现。 */
38
+ renderers;
39
+ /** 旧自动代码 Start/End 控制标记的只读扫描器。 */
40
+ marker;
41
+ /**
42
+ * 创建核心算法入口。
43
+ *
44
+ * 默认注册已迁移部分的 CAA Renderer、Qt 双向更新 Renderer、普通 C++
45
+ * Parameter Renderer,并创建标准旧标记扫描器。自定义数组会被复制;
46
+ * 扫描器可注入。
47
+ */
48
+ constructor(renderers = [
49
+ KtCodegenRenderer.createCaa({
50
+ isParamSpecList: (item) => KtCodegenCore.isParamSpecList(item),
51
+ formatDefaultValue: KtCodegenCore.formatDefaultValue,
52
+ getLastStandaloneUppercase: KtCodegenCore.getLastStandaloneUppercase,
53
+ isPointOrVector3DType: KtCodegenCore.isPointOrVector3DType,
54
+ formatTreeName: KtCodegenCore.formatTreeName,
55
+ isCaaVector: KtCodegenCore.isCaaVector,
56
+ isSelectorField: KtCodegenCore.isSelectorField,
57
+ isCommandAutoField: KtCodegenCore.isCommandAutoField,
58
+ getCommandSuggestedFilter: KtCodegenCore.getCommandSuggestedFilter,
59
+ }),
60
+ KtCodegenRenderer.createQt({
61
+ isPointOrVector3DType: KtCodegenCore.isPointOrVector3DType,
62
+ }),
63
+ KtCodegenRenderer.createCppParameter(KtCodegenCore.formatDefaultValue),
64
+ ], marker = new KtCodegenMarker()) {
65
+ this.renderers = [...renderers];
66
+ this.marker = marker;
67
+ }
68
+ /**
69
+ * 根据共享参数、目标、block key 和源码 snapshot 生成 Analyze Plan。
70
+ *
71
+ * 本方法不修改 `param`,也不执行真实文件写入;Renderer 必须遵守同一规则。
72
+ */
73
+ analyze(param, request) {
74
+ return ktCodegenAnalyze({ ...request, param }, this.renderers, this.marker);
75
+ }
76
+ /**
77
+ * 按旧 `KevinCAAParamInfor.GetDefaultValue` 规则生成 C++ 默认值表达式。
78
+ *
79
+ * 字符串类型自动补双引号;分号恢复为逗号;Spinner/QDoubleSpinBox 的 `mm`
80
+ * 和 `degree/deg` 根据旧规则转换。方法只返回新字符串,不修改 Item。
81
+ */
82
+ static formatDefaultValue(item, addQuotation = false) {
83
+ let output = item.defaultValue;
84
+ const isStringType = item.dataType.toLowerCase().includes("string");
85
+ if (output.length === 0) {
86
+ return addQuotation && isStringType ? '""' : output;
87
+ }
88
+ if (output.startsWith('"'))
89
+ return output;
90
+ if (isStringType)
91
+ return `"${output}"`;
92
+ output = output.replaceAll(";", ", ");
93
+ const component = item.component.toLowerCase();
94
+ if (component !== "spinner" && component !== "qdoublespinbox")
95
+ return output;
96
+ if (output === "0" || output.length === 0)
97
+ return output;
98
+ const unit = item.unit.toLowerCase();
99
+ if (unit === "mm") {
100
+ const values = output.split(",");
101
+ if (values.length > 1) {
102
+ return values
103
+ .map((value) => {
104
+ const trimmed = value.trim();
105
+ return trimmed === "0" || trimmed.length === 0
106
+ ? trimmed
107
+ : `${trimmed} * 0.001`;
108
+ })
109
+ .join(", ");
110
+ }
111
+ return `${output} * 0.001`;
112
+ }
113
+ if (unit === "degree" || unit === "deg") {
114
+ return `${output} * 0.017453292519943295`;
115
+ }
116
+ return output;
117
+ }
118
+ /** 判断类型名是否属于旧生成器识别的3D点、向量、方向或射线类型。 */
119
+ static isPointOrVector3DType(dataType) {
120
+ return KT_CODEGEN_POINT_OR_VECTOR_3D_TYPES.has(dataType);
121
+ }
122
+ /** 判断 Item 是否为旧生成器识别的 Kt 三维向量类型。 */
123
+ static isKtVector(item) {
124
+ return item.dataType === "KtMathVector";
125
+ }
126
+ /** 判断 Item 是否为旧生成器识别的 CAA 三维点、向量或方向类型。 */
127
+ static isCaaVector(item) {
128
+ return KT_CODEGEN_CAA_VECTOR_TYPES.has(item.dataType);
129
+ }
130
+ /**
131
+ * 按旧 `GetCurrentSelectorList` 规则判断 Item 是否属于 Selector Field。
132
+ *
133
+ * 旧实现只要求 `id >= 1` 且 Component 精确属于五个候选值,不检查
134
+ * DataType,也从2023年起不再检查 ComponentCount;后缀筛选由 Renderer
135
+ * 根据当前 Marker 单独完成。
136
+ */
137
+ static isSelectorField(item) {
138
+ return item.id >= 1 && KT_CODEGEN_SELECTOR_FIELD_COMPONENTS.has(item.component);
139
+ }
140
+ /**
141
+ * 判断 Selector Field 是否支持旧 Command 宏自动生成。
142
+ *
143
+ * 旧实现只支持精确的 `SelectorList` 与 `QListWidget`,并仅排除
144
+ * `ComponentCount === 0`;此处有意不把负数扩展解释为0。
145
+ */
146
+ static isCommandAutoField(item) {
147
+ return ((item.component === "SelectorList" || item.component === "QListWidget") &&
148
+ item.componentCount !== 0);
149
+ }
150
+ /**
151
+ * 按旧 `CmdAgentBuildGraph` 的优先级从 Field 名推断建议选择过滤器。
152
+ *
153
+ * 匹配不区分大小写;`GRID_AXIS`、`AXIS_SYSTEM` 等更具体名称必须先于
154
+ * 通用 `AXIS`,未命中时返回 `DEFAULT`。
155
+ */
156
+ static getCommandSuggestedFilter(paramString) {
157
+ const key = paramString.toLowerCase();
158
+ if (key.includes("gridaxis"))
159
+ return "GRID_AXIS";
160
+ if (key.includes("axissystem"))
161
+ return "AXIS_SYSTEM";
162
+ if (key.includes("direction"))
163
+ return "DIRECTION";
164
+ if (key.includes("support"))
165
+ return "SUPPORT";
166
+ if (key.includes("point") || key.includes("origin"))
167
+ return "POINT";
168
+ if (key.includes("line"))
169
+ return "LINE";
170
+ if (key.includes("curve"))
171
+ return "CURVE";
172
+ if (key.includes("plane"))
173
+ return "PLANE";
174
+ if (key.includes("face") || key.includes("surface"))
175
+ return "FACE";
176
+ if (key.includes("axis"))
177
+ return "AXIS";
178
+ return "DEFAULT";
179
+ }
180
+ /**
181
+ * 按旧 `IsParamSpecList` 顺序判断参数是否使用列表式 Get/Set。
182
+ *
183
+ * 旧逻辑先排除3D点和向量,即使这些 Item 的 `isList` 为 true 也返回 false;
184
+ * 此处保留该顺序,避免迁移后的生成代码悄然变化。
185
+ */
186
+ static isParamSpecList(item) {
187
+ if (this.isPointOrVector3DType(item.dataType))
188
+ return false;
189
+ if (item.isList)
190
+ return true;
191
+ return (item.dataType.includes("::SpecObjectCollect") ||
192
+ item.dataType === "CATListValCATISpecObject_var" ||
193
+ item.dataType === "CATMathVector" ||
194
+ item.dataType === "CATRawColldouble" ||
195
+ item.dataType === "CATRawCollint" ||
196
+ item.dataType === "CATMathPoint");
197
+ }
198
+ /**
199
+ * 复现旧 `GetLastCharIfOnlyUpper`:仅当末字符为单独的大写字符时返回它。
200
+ *
201
+ * 该 helper 用于 `SpecObjectCollect` 的排序函数后缀选择。
202
+ */
203
+ static getLastStandaloneUppercase(value) {
204
+ if (!value)
205
+ return "";
206
+ const last = value.at(-1) ?? "";
207
+ if (!/^\p{Lu}$/u.test(last))
208
+ return "";
209
+ if (value.length === 1)
210
+ return last;
211
+ const previous = value.at(-2) ?? "";
212
+ return /^\p{Lu}$/u.test(previous) ? "" : last;
213
+ }
214
+ /**
215
+ * 按旧 `ConvertNameOnTree` 规则把参数符号名转换为 CAA 特征树标题。
216
+ *
217
+ * 仅在当前字符为大写且前一字符不是大写时插入空格;连续大写缩写保持
218
+ * 原样。方法不修改输入 Item。
219
+ */
220
+ static formatTreeName(value) {
221
+ if (value.length <= 1)
222
+ return value;
223
+ let output = value[0] ?? "";
224
+ for (let index = 1; index < value.length; index += 1) {
225
+ const current = value[index] ?? "";
226
+ const previous = value[index - 1] ?? "";
227
+ if (/^\p{Lu}$/u.test(current) && !/^\p{Lu}$/u.test(previous))
228
+ output += " ";
229
+ output += current;
230
+ }
231
+ return output;
232
+ }
233
+ }
234
+ //# sourceMappingURL=KtCodegenCore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KtCodegenCore.js","sourceRoot":"","sources":["../src/KtCodegenCore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * 单条参数代码生成配置,也是 MVC-C 各层共享的最小数据项。
3
+ *
4
+ * 对应旧 VB `KevinCAAParamInfor`、C++ `KtaControlConfigItem` 和 Qt
5
+ * `KtdAutoCodeItem`。17 个旧格式字段全部公开、可变,不生成
6
+ * getter/setter。Reader、UI、Controller、Core 和 Renderer 可以持有同一个
7
+ * 实例;任意一处修改都会立即对其他持有者可见,因此调用者负责协调修改。
8
+ *
9
+ * `tcKind`、`catAttrInOut`、`component` 等 Combo 字段仍是普通字符串。
10
+ * 列表外的值必须原样保留,由 UI 提示并等待用户主动修正。
11
+ */
12
+ export declare class KtCodegenItem {
13
+ /**
14
+ * 旧格式第0列 `NameSuffix`。
15
+ *
16
+ * 标识本参数所属的类、对象或生成目标后缀;默认沿用旧实现的 `Base`。
17
+ */
18
+ nameSuffix: string;
19
+ /**
20
+ * 旧格式第1列 `ID`。
21
+ *
22
+ * 旧生成规则用于排序、分组或选择特殊生成分支的参数编号。
23
+ */
24
+ id: number;
25
+ /** 旧格式第2列 `Name`:供表格或界面显示的参数名称。 */
26
+ name: string;
27
+ /**
28
+ * 旧格式第3列 `ParamString`。
29
+ *
30
+ * 参数在生成代码中的变量名或符号名,也是常用的参数身份字段。
31
+ */
32
+ paramString: string;
33
+ /** 旧格式第4列 `DataType`:生成代码使用的 CAA、C++ 或 Qt 数据类型。 */
34
+ dataType: string;
35
+ /**
36
+ * 旧格式第5列 `TCKind`:CAA catalog/spec 的类型标识。
37
+ *
38
+ * 值保持为普通字符串;不在候选列表中时仍须原样读取和写回。
39
+ */
40
+ tcKind: string;
41
+ /**
42
+ * 旧格式第6列 `DefaultValue`:生成声明、构造或 UI 初始化代码时使用的默认值文本。
43
+ */
44
+ defaultValue: string;
45
+ /**
46
+ * 旧格式第7列 `CATAttrInOut`:CAA 特征属性的输入、输出或中性方向标识。
47
+ *
48
+ * 值保持为普通字符串;未知值由 UI 提示,不由 Reader 或 Adapter 清空。
49
+ */
50
+ catAttrInOut: string;
51
+ /** 旧格式第8列 `IsList`:是否按列表或集合参数生成相关代码。 */
52
+ isList: boolean;
53
+ /** 旧格式第9列 `IsOnTree`:参数是否参与旧界面或对象树相关生成。 */
54
+ isOnTree: boolean;
55
+ /**
56
+ * 旧格式第10列 `Component`:CAA 或 Qt 控件类型。
57
+ *
58
+ * 例如 `Spinner`、`QLineEdit`、`QComboBox`;私有或未来扩展值必须保留。
59
+ */
60
+ component: string;
61
+ /**
62
+ * 旧格式第11列 `ComponentCount`,历史 CSV 表头也可能写作 `Count`。
63
+ *
64
+ * 表示需要生成的控件数量;0 在旧逻辑中通常表示不生成 UI 行为。
65
+ */
66
+ componentCount: number;
67
+ /** 旧格式第12列 `IsParamDlg`:参数是否参与参数对话框代码生成。 */
68
+ isParamDlg: boolean;
69
+ /** 旧格式第13列 `Unit`:参数单位文本,例如 `mm` 或 `degree`。 */
70
+ unit: string;
71
+ /** 旧格式第14列 `Author`:参数配置记录的作者。 */
72
+ author: string;
73
+ /** 旧格式第15列 `CreateDate`:参数配置记录的创建日期文本。 */
74
+ createDate: string;
75
+ /** 旧格式第16列 `Notes`:参数说明、生成提示或其他备注。 */
76
+ notes: string;
77
+ /**
78
+ * 创建参数项,并可用同名字段进行初始化。
79
+ *
80
+ * 构造函数不执行候选值校验或自动修正,确保旧配置字符串保持原样。
81
+ */
82
+ constructor(initial?: Partial<KtCodegenItem>);
83
+ }
84
+ //# sourceMappingURL=KtCodegenItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KtCodegenItem.d.ts","sourceRoot":"","sources":["../src/KtCodegenItem.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;IACxB;;;;OAIG;IACI,UAAU,EAAE,MAAM,CAAU;IAEnC;;;;OAIG;IACI,EAAE,EAAE,MAAM,CAAK;IAEtB,mCAAmC;IAC5B,IAAI,EAAE,MAAM,CAAM;IAEzB;;;;OAIG;IACI,WAAW,EAAE,MAAM,CAAM;IAEhC,mDAAmD;IAC5C,QAAQ,EAAE,MAAM,CAAM;IAE7B;;;;OAIG;IACI,MAAM,EAAE,MAAM,CAAM;IAE3B;;OAEG;IACI,YAAY,EAAE,MAAM,CAAM;IAEjC;;;;OAIG;IACI,YAAY,EAAE,MAAM,CAAM;IAEjC,wCAAwC;IACjC,MAAM,EAAE,OAAO,CAAS;IAE/B,2CAA2C;IACpC,QAAQ,EAAE,OAAO,CAAS;IAEjC;;;;OAIG;IACI,SAAS,EAAE,MAAM,CAAM;IAE9B;;;;OAIG;IACI,cAAc,EAAE,MAAM,CAAK;IAElC,4CAA4C;IACrC,UAAU,EAAE,OAAO,CAAS;IAEnC,gDAAgD;IACzC,IAAI,EAAE,MAAM,CAAM;IAEzB,kCAAkC;IAC3B,MAAM,EAAE,MAAM,CAAM;IAE3B,0CAA0C;IACnC,UAAU,EAAE,MAAM,CAAM;IAE/B,sCAAsC;IAC/B,KAAK,EAAE,MAAM,CAAM;IAE1B;;;;OAIG;gBACS,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;CAG7C"}
@@ -0,0 +1,88 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ /**
3
+ * 单条参数代码生成配置,也是 MVC-C 各层共享的最小数据项。
4
+ *
5
+ * 对应旧 VB `KevinCAAParamInfor`、C++ `KtaControlConfigItem` 和 Qt
6
+ * `KtdAutoCodeItem`。17 个旧格式字段全部公开、可变,不生成
7
+ * getter/setter。Reader、UI、Controller、Core 和 Renderer 可以持有同一个
8
+ * 实例;任意一处修改都会立即对其他持有者可见,因此调用者负责协调修改。
9
+ *
10
+ * `tcKind`、`catAttrInOut`、`component` 等 Combo 字段仍是普通字符串。
11
+ * 列表外的值必须原样保留,由 UI 提示并等待用户主动修正。
12
+ */
13
+ export class KtCodegenItem {
14
+ /**
15
+ * 旧格式第0列 `NameSuffix`。
16
+ *
17
+ * 标识本参数所属的类、对象或生成目标后缀;默认沿用旧实现的 `Base`。
18
+ */
19
+ nameSuffix = "Base";
20
+ /**
21
+ * 旧格式第1列 `ID`。
22
+ *
23
+ * 旧生成规则用于排序、分组或选择特殊生成分支的参数编号。
24
+ */
25
+ id = 0;
26
+ /** 旧格式第2列 `Name`:供表格或界面显示的参数名称。 */
27
+ name = "";
28
+ /**
29
+ * 旧格式第3列 `ParamString`。
30
+ *
31
+ * 参数在生成代码中的变量名或符号名,也是常用的参数身份字段。
32
+ */
33
+ paramString = "";
34
+ /** 旧格式第4列 `DataType`:生成代码使用的 CAA、C++ 或 Qt 数据类型。 */
35
+ dataType = "";
36
+ /**
37
+ * 旧格式第5列 `TCKind`:CAA catalog/spec 的类型标识。
38
+ *
39
+ * 值保持为普通字符串;不在候选列表中时仍须原样读取和写回。
40
+ */
41
+ tcKind = "";
42
+ /**
43
+ * 旧格式第6列 `DefaultValue`:生成声明、构造或 UI 初始化代码时使用的默认值文本。
44
+ */
45
+ defaultValue = "";
46
+ /**
47
+ * 旧格式第7列 `CATAttrInOut`:CAA 特征属性的输入、输出或中性方向标识。
48
+ *
49
+ * 值保持为普通字符串;未知值由 UI 提示,不由 Reader 或 Adapter 清空。
50
+ */
51
+ catAttrInOut = "";
52
+ /** 旧格式第8列 `IsList`:是否按列表或集合参数生成相关代码。 */
53
+ isList = false;
54
+ /** 旧格式第9列 `IsOnTree`:参数是否参与旧界面或对象树相关生成。 */
55
+ isOnTree = false;
56
+ /**
57
+ * 旧格式第10列 `Component`:CAA 或 Qt 控件类型。
58
+ *
59
+ * 例如 `Spinner`、`QLineEdit`、`QComboBox`;私有或未来扩展值必须保留。
60
+ */
61
+ component = "";
62
+ /**
63
+ * 旧格式第11列 `ComponentCount`,历史 CSV 表头也可能写作 `Count`。
64
+ *
65
+ * 表示需要生成的控件数量;0 在旧逻辑中通常表示不生成 UI 行为。
66
+ */
67
+ componentCount = 0;
68
+ /** 旧格式第12列 `IsParamDlg`:参数是否参与参数对话框代码生成。 */
69
+ isParamDlg = false;
70
+ /** 旧格式第13列 `Unit`:参数单位文本,例如 `mm` 或 `degree`。 */
71
+ unit = "";
72
+ /** 旧格式第14列 `Author`:参数配置记录的作者。 */
73
+ author = "";
74
+ /** 旧格式第15列 `CreateDate`:参数配置记录的创建日期文本。 */
75
+ createDate = "";
76
+ /** 旧格式第16列 `Notes`:参数说明、生成提示或其他备注。 */
77
+ notes = "";
78
+ /**
79
+ * 创建参数项,并可用同名字段进行初始化。
80
+ *
81
+ * 构造函数不执行候选值校验或自动修正,确保旧配置字符串保持原样。
82
+ */
83
+ constructor(initial) {
84
+ if (initial)
85
+ Object.assign(this, initial);
86
+ }
87
+ }
88
+ //# sourceMappingURL=KtCodegenItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KtCodegenItem.js","sourceRoot":"","sources":["../src/KtCodegenItem.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC;;;;;;;;;;GAUG;AACH,MAAM,OAAO,aAAa;IACxB;;;;OAIG;IACI,UAAU,GAAW,MAAM,CAAC;IAEnC;;;;OAIG;IACI,EAAE,GAAW,CAAC,CAAC;IAEtB,mCAAmC;IAC5B,IAAI,GAAW,EAAE,CAAC;IAEzB;;;;OAIG;IACI,WAAW,GAAW,EAAE,CAAC;IAEhC,mDAAmD;IAC5C,QAAQ,GAAW,EAAE,CAAC;IAE7B;;;;OAIG;IACI,MAAM,GAAW,EAAE,CAAC;IAE3B;;OAEG;IACI,YAAY,GAAW,EAAE,CAAC;IAEjC;;;;OAIG;IACI,YAAY,GAAW,EAAE,CAAC;IAEjC,wCAAwC;IACjC,MAAM,GAAY,KAAK,CAAC;IAE/B,2CAA2C;IACpC,QAAQ,GAAY,KAAK,CAAC;IAEjC;;;;OAIG;IACI,SAAS,GAAW,EAAE,CAAC;IAE9B;;;;OAIG;IACI,cAAc,GAAW,CAAC,CAAC;IAElC,4CAA4C;IACrC,UAAU,GAAY,KAAK,CAAC;IAEnC,gDAAgD;IACzC,IAAI,GAAW,EAAE,CAAC;IAEzB,kCAAkC;IAC3B,MAAM,GAAW,EAAE,CAAC;IAE3B,0CAA0C;IACnC,UAAU,GAAW,EAAE,CAAC;IAE/B,sCAAsC;IAC/B,KAAK,GAAW,EAAE,CAAC;IAE1B;;;;OAIG;IACH,YAAY,OAAgC;QAC1C,IAAI,OAAO;YAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;CACF"}
@@ -0,0 +1,110 @@
1
+ import { type KtCodegenBlockKey } from "./blocks/legacy-blocks.js";
2
+ import type { KtCodegenSnapshot } from "./api/contracts.js";
3
+ import type { KtCodegenDiagnostic } from "./model/diagnostic.js";
4
+ import type { KtCodegenParam } from "./KtCodegenParam.js";
5
+ /** 自动代码控制标记的开始或结束种类。 */
6
+ export type KtCodegenMarkerKind = "start" | "end";
7
+ /** 源文件中一个已识别的旧 Kevin 自动代码控制标记。 */
8
+ export interface KtCodegenMarkerPoint {
9
+ /** 标记是自动代码块的开始还是结束。 */
10
+ readonly kind: KtCodegenMarkerKind;
11
+ /** 标记所在文件的宿主路径。 */
12
+ readonly path: string;
13
+ /** `NamePrefix + NameMiddle + NameSuffix` 组成的旧类身份。 */
14
+ readonly classId: string;
15
+ /** 从类身份反查出的参数 `NameSuffix`。 */
16
+ readonly nameSuffix: string;
17
+ /** 32个旧自动代码块之一的稳定 key。 */
18
+ readonly blockKey: KtCodegenBlockKey;
19
+ /** 从0开始的标记所在行号。 */
20
+ readonly line: number;
21
+ /** 从0开始的 `START` 或 `END` 所在列号。 */
22
+ readonly column: number;
23
+ /** 当前整行在文件文本中的起始偏移。 */
24
+ readonly lineStartOffset: number;
25
+ /** 当前整行及其换行符之后的偏移;末行无换行时等于文本长度。 */
26
+ readonly lineEndOffset: number;
27
+ /** `START` 或 `END` 第一个字符在文件文本中的偏移。 */
28
+ readonly markerStartOffset: number;
29
+ /** block key 最后一个字符之后、行尾空白之前的偏移。 */
30
+ readonly markerEndOffset: number;
31
+ /** 不含注释符和行尾空白的控制标记文本。 */
32
+ readonly text: string;
33
+ /** 旧 VB 从控制标记前最后一个 `//` 之前提取的代码缩进前缀。 */
34
+ readonly linePrefix: string;
35
+ }
36
+ /** 一对可安全定位的旧自动代码 Start/End 标记及其替换范围。 */
37
+ export interface KtCodegenMarkerRegion {
38
+ /** 当前 Analyze Plan 内稳定关联 artifact 的区域身份。 */
39
+ readonly id: string;
40
+ /** 标记所在文件的宿主路径。 */
41
+ readonly path: string;
42
+ /** 扫描时文件内容指纹,供 Apply 前并发检查。 */
43
+ readonly sourceFingerprint: string;
44
+ /** 当前自动代码块对应的旧类身份。 */
45
+ readonly classId: string;
46
+ /** 当前自动代码块对应的参数后缀。 */
47
+ readonly nameSuffix: string;
48
+ /** 当前自动代码块的稳定 key。 */
49
+ readonly blockKey: KtCodegenBlockKey;
50
+ /** 已配对的开始标记。 */
51
+ readonly start: KtCodegenMarkerPoint;
52
+ /** 已配对的结束标记。 */
53
+ readonly end: KtCodegenMarkerPoint;
54
+ /** 旧块内容起始偏移,即 Start 标记整行之后。 */
55
+ readonly bodyStartOffset: number;
56
+ /** 旧块内容结束偏移,即 End 标记整行之前。 */
57
+ readonly bodyEndOffset: number;
58
+ /** 整块替换起始偏移,包含 Start 标记所在整行。 */
59
+ readonly replaceStartOffset: number;
60
+ /** 整块替换结束偏移,包含 End 标记所在整行及已有换行符。 */
61
+ readonly replaceEndOffset: number;
62
+ }
63
+ /** 一次只读源码标记扫描的结果。 */
64
+ export interface KtCodegenMarkerScanResult {
65
+ /** 结构完整且没有嵌套或错配风险的标记区域。 */
66
+ readonly regions: readonly KtCodegenMarkerRegion[];
67
+ /** 孤立、缺失、嵌套、错配或格式异常标记的结构化诊断。 */
68
+ readonly diagnostics: readonly KtCodegenDiagnostic[];
69
+ }
70
+ /**
71
+ * 旧 Kevin 自动代码控制标记的构造与只读扫描器。
72
+ *
73
+ * 本类复现 `KevinCAAFileGuide` 的 `START/END KEVIN CAA WIZARD SECTION`
74
+ * 文本协议和缩进提取规则,但不生成业务代码、不修改源码,也不写文件。
75
+ * 对旧实现会静默吞掉的嵌套、错配和孤立标记,本类返回明确 error 诊断。
76
+ */
77
+ export declare class KtCodegenMarker {
78
+ /** 根据共享参数和后缀创建旧标记使用的类身份。 */
79
+ createClassId(param: KtCodegenParam, nameSuffix: string): string;
80
+ /**
81
+ * 创建包含 `//` 的旧格式 Start 标记整行。
82
+ *
83
+ * `linePrefix` 对应旧 VB `_prefix`,通常是空字符串、空格或制表符缩进。
84
+ */
85
+ createStart(param: KtCodegenParam, nameSuffix: string, blockKey: KtCodegenBlockKey, linePrefix?: string): string;
86
+ /**
87
+ * 创建包含 `//` 的旧格式 End 标记整行。
88
+ *
89
+ * `linePrefix` 对应旧 VB `_prefix`,应与配对 Start 使用相同前缀。
90
+ */
91
+ createEnd(param: KtCodegenParam, nameSuffix: string, blockKey: KtCodegenBlockKey, linePrefix?: string): string;
92
+ /**
93
+ * 扫描宿主提供的不可变源码快照,返回可安全替换的旧自动代码区域。
94
+ *
95
+ * 扫描仅匹配当前 Param 中出现的 `NameSuffix` 和调用者允许的 block key。
96
+ * 其他类或未请求 block 的合法标记保持不变,便于同一文件容纳多套生成数据。
97
+ */
98
+ scan(param: KtCodegenParam, snapshot: KtCodegenSnapshot, blockKeys?: readonly KtCodegenBlockKey[]): KtCodegenMarkerScanResult;
99
+ /** 顺序扫描单个文件,并保持旧实现一次只处理一个打开块的基本模型。 */
100
+ private scanFile;
101
+ /** 将文件文本拆成保留精确绝对偏移的逻辑行。 */
102
+ private splitLines;
103
+ /** 解析单行中的旧标记;普通源码行返回空结果。 */
104
+ private parseLine;
105
+ /** 将内部解析记录转换为公开、可审计的绝对定位结构。 */
106
+ private toMarkerPoint;
107
+ /** 创建带文件、行、列定位的源码诊断。 */
108
+ private sourceDiagnostic;
109
+ }
110
+ //# sourceMappingURL=KtCodegenMarker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KtCodegenMarker.d.ts","sourceRoot":"","sources":["../src/KtCodegenMarker.ts"],"names":[],"mappings":"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"}