@lcap/nasl 4.4.0-rc.2 → 4.4.1-rc.2

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 (143) hide show
  1. package/out/generator/genBundleFiles.d.ts +2 -0
  2. package/out/generator/genBundleFiles.d.ts.map +1 -1
  3. package/out/generator/genBundleFiles.js +46 -10
  4. package/out/generator/genBundleFiles.js.map +1 -1
  5. package/out/generator/icestark.d.ts +1 -1
  6. package/out/generator/icestark.d.ts.map +1 -1
  7. package/out/generator/icestark.js +6 -1
  8. package/out/generator/icestark.js.map +1 -1
  9. package/out/generator/qiankun.d.ts +1 -1
  10. package/out/generator/qiankun.d.ts.map +1 -1
  11. package/out/generator/qiankun.js +5 -3
  12. package/out/generator/qiankun.js.map +1 -1
  13. package/out/generator/release-body/data.d.ts.map +1 -1
  14. package/out/generator/release-body/data.js +30 -0
  15. package/out/generator/release-body/data.js.map +1 -1
  16. package/out/generator/release-body/share-content.js +1 -1
  17. package/out/generator/release-body/share-content.js.map +1 -1
  18. package/out/generator/release-body/types.d.ts +1 -0
  19. package/out/generator/release-body/types.d.ts.map +1 -1
  20. package/out/generator/wujie.d.ts +1 -1
  21. package/out/generator/wujie.d.ts.map +1 -1
  22. package/out/generator/wujie.js +6 -1
  23. package/out/generator/wujie.js.map +1 -1
  24. package/out/natural/exports/nasl2Files.d.ts +18 -1
  25. package/out/natural/exports/nasl2Files.d.ts.map +1 -1
  26. package/out/natural/exports/nasl2Files.js +162 -3
  27. package/out/natural/exports/nasl2Files.js.map +1 -1
  28. package/out/natural/exports/transform2BatchActions.d.ts +3 -1
  29. package/out/natural/exports/transform2BatchActions.d.ts.map +1 -1
  30. package/out/natural/exports/transform2BatchActions.js +767 -101
  31. package/out/natural/exports/transform2BatchActions.js.map +1 -1
  32. package/out/natural/old/parser/transformTS2UI.js +1 -1
  33. package/out/natural/old/parser/transformTS2UI.js.map +1 -1
  34. package/out/natural/old/parser/transformTSCode.d.ts.map +1 -1
  35. package/out/natural/old/parser/transformTSCode.js +26 -2
  36. package/out/natural/old/parser/transformTSCode.js.map +1 -1
  37. package/out/natural/parser/parseNaturalTS.d.ts.map +1 -1
  38. package/out/natural/parser/parseNaturalTS.js +97 -26
  39. package/out/natural/parser/parseNaturalTS.js.map +1 -1
  40. package/out/natural/parser/parseNaturalTSXView.d.ts.map +1 -1
  41. package/out/natural/parser/parseNaturalTSXView.js +106 -87
  42. package/out/natural/parser/parseNaturalTSXView.js.map +1 -1
  43. package/out/natural/transforms/checker/checkDefaultValue.d.ts +2 -1
  44. package/out/natural/transforms/checker/checkDefaultValue.d.ts.map +1 -1
  45. package/out/natural/transforms/checker/checkDefaultValue.js +7 -1
  46. package/out/natural/transforms/checker/checkDefaultValue.js.map +1 -1
  47. package/out/natural/transforms/checker/checkLcapEntity.d.ts +16 -0
  48. package/out/natural/transforms/checker/checkLcapEntity.d.ts.map +1 -0
  49. package/out/natural/transforms/checker/checkLcapEntity.js +337 -0
  50. package/out/natural/transforms/checker/checkLcapEntity.js.map +1 -0
  51. package/out/natural/transforms/checker/checkValidationCalleeName.d.ts +3 -0
  52. package/out/natural/transforms/checker/checkValidationCalleeName.d.ts.map +1 -0
  53. package/out/natural/transforms/checker/checkValidationCalleeName.js +88 -0
  54. package/out/natural/transforms/checker/checkValidationCalleeName.js.map +1 -0
  55. package/out/natural/transforms/checker/checkViewElement.d.ts.map +1 -1
  56. package/out/natural/transforms/checker/checkViewElement.js +175 -9
  57. package/out/natural/transforms/checker/checkViewElement.js.map +1 -1
  58. package/out/natural/transforms/checker/index.d.ts +2 -0
  59. package/out/natural/transforms/checker/index.d.ts.map +1 -1
  60. package/out/natural/transforms/checker/index.js +5 -1
  61. package/out/natural/transforms/checker/index.js.map +1 -1
  62. package/out/natural/transforms/transform2Entity.d.ts +5 -0
  63. package/out/natural/transforms/transform2Entity.d.ts.map +1 -1
  64. package/out/natural/transforms/transform2Entity.js +84 -4
  65. package/out/natural/transforms/transform2Entity.js.map +1 -1
  66. package/out/natural/transforms/transform2GlobalLogicDeclaration.d.ts +1 -1
  67. package/out/natural/transforms/transform2GlobalLogicDeclaration.d.ts.map +1 -1
  68. package/out/natural/transforms/transform2GlobalLogicDeclaration.js +15 -1
  69. package/out/natural/transforms/transform2GlobalLogicDeclaration.js.map +1 -1
  70. package/out/natural/transforms/transform2Logic.d.ts +3 -3
  71. package/out/natural/transforms/transform2Logic.d.ts.map +1 -1
  72. package/out/natural/transforms/transform2Logic.js +54 -13
  73. package/out/natural/transforms/transform2Logic.js.map +1 -1
  74. package/out/natural/transforms/transform2LogicItem.d.ts +4 -0
  75. package/out/natural/transforms/transform2LogicItem.d.ts.map +1 -1
  76. package/out/natural/transforms/transform2LogicItem.js +82 -18
  77. package/out/natural/transforms/transform2LogicItem.js.map +1 -1
  78. package/out/natural/transforms/transform2ValidationRule.d.ts +1 -1
  79. package/out/natural/transforms/transform2ValidationRule.d.ts.map +1 -1
  80. package/out/natural/transforms/transform2ValidationRule.js +5 -0
  81. package/out/natural/transforms/transform2ValidationRule.js.map +1 -1
  82. package/out/natural/transforms/transform2Variable.d.ts +3 -3
  83. package/out/natural/transforms/transform2Variable.d.ts.map +1 -1
  84. package/out/natural/transforms/transform2Variable.js +36 -5
  85. package/out/natural/transforms/transform2Variable.js.map +1 -1
  86. package/out/natural/transforms/transformThemeAndStyle.d.ts +4 -1
  87. package/out/natural/transforms/transformThemeAndStyle.d.ts.map +1 -1
  88. package/out/natural/transforms/transformThemeAndStyle.js +25 -12
  89. package/out/natural/transforms/transformThemeAndStyle.js.map +1 -1
  90. package/out/natural/transforms/utils/createComponentLookupMap.d.ts +32 -0
  91. package/out/natural/transforms/utils/createComponentLookupMap.d.ts.map +1 -0
  92. package/out/natural/transforms/utils/createComponentLookupMap.js +57 -0
  93. package/out/natural/transforms/utils/createComponentLookupMap.js.map +1 -0
  94. package/out/natural/transforms/utils/iconNames.d.ts +2 -0
  95. package/out/natural/transforms/utils/iconNames.d.ts.map +1 -0
  96. package/out/natural/transforms/utils/iconNames.js +299 -0
  97. package/out/natural/transforms/utils/iconNames.js.map +1 -0
  98. package/out/natural/transforms/utils/normalizeNode.d.ts +3 -0
  99. package/out/natural/transforms/utils/normalizeNode.d.ts.map +1 -0
  100. package/out/natural/transforms/utils/normalizeNode.js +15 -0
  101. package/out/natural/transforms/utils/normalizeNode.js.map +1 -0
  102. package/out/natural/transforms/utils/parseDecorator.d.ts +32 -4
  103. package/out/natural/transforms/utils/parseDecorator.d.ts.map +1 -1
  104. package/out/natural/transforms/utils/parseDecorator.js +81 -9
  105. package/out/natural/transforms/utils/parseDecorator.js.map +1 -1
  106. package/out/natural/transforms/utils/transform2Directory.d.ts +59 -0
  107. package/out/natural/transforms/utils/transform2Directory.d.ts.map +1 -0
  108. package/out/natural/transforms/utils/transform2Directory.js +229 -0
  109. package/out/natural/transforms/utils/transform2Directory.js.map +1 -0
  110. package/out/natural/utils/index.d.ts +17 -0
  111. package/out/natural/utils/index.d.ts.map +1 -1
  112. package/out/natural/utils/index.js +38 -2
  113. package/out/natural/utils/index.js.map +1 -1
  114. package/out/natural/utils/nasl-file-types.d.ts +45 -0
  115. package/out/natural/utils/nasl-file-types.d.ts.map +1 -0
  116. package/out/natural/utils/nasl-file-types.js +131 -0
  117. package/out/natural/utils/nasl-file-types.js.map +1 -0
  118. package/out/server/OQL/sqlDbTypes.json +717 -0
  119. package/out/server/createUiTs.d.ts +0 -1
  120. package/out/server/createUiTs.d.ts.map +1 -1
  121. package/out/server/createUiTs.js +1 -118
  122. package/out/server/createUiTs.js.map +1 -1
  123. package/out/server/extendBaseNode.d.ts.map +1 -1
  124. package/out/server/extendBaseNode.js +3 -0
  125. package/out/server/extendBaseNode.js.map +1 -1
  126. package/out/server/naslServer.d.ts.map +1 -1
  127. package/out/server/naslServer.js +14 -21
  128. package/out/server/naslServer.js.map +1 -1
  129. package/out/service/storage/init.d.ts +1 -1
  130. package/out/service/storage/init.d.ts.map +1 -1
  131. package/out/service/storage/init.js +17 -7
  132. package/out/service/storage/init.js.map +1 -1
  133. package/out/service/storage/specTools.d.ts +20 -8
  134. package/out/service/storage/specTools.d.ts.map +1 -1
  135. package/out/service/storage/specTools.js +124 -5
  136. package/out/service/storage/specTools.js.map +1 -1
  137. package/package.json +9 -9
  138. package/sandbox/stdlib/nasl.util.ts +1 -1
  139. package/sandbox/stdlib/nasl.validation.ts +50 -14
  140. package/out/natural/transforms/utils/fetchFromComments.d.ts +0 -3
  141. package/out/natural/transforms/utils/fetchFromComments.d.ts.map +0 -1
  142. package/out/natural/transforms/utils/fetchFromComments.js +0 -10
  143. package/out/natural/transforms/utils/fetchFromComments.js.map +0 -1
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeArrowFunctionBody = void 0;
4
+ const utils_1 = require("../../utils");
5
+ function normalizeArrowFunctionBody(node) {
6
+ if (node.type === 'ArrowFunctionExpression' && node.body.type !== 'BlockStatement') {
7
+ return {
8
+ ...node,
9
+ body: utils_1.babelTypes.blockStatement([utils_1.babelTypes.expressionStatement(node.body)]),
10
+ };
11
+ }
12
+ return node;
13
+ }
14
+ exports.normalizeArrowFunctionBody = normalizeArrowFunctionBody;
15
+ //# sourceMappingURL=normalizeNode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeNode.js","sourceRoot":"","sources":["../../../../src/natural/transforms/utils/normalizeNode.ts"],"names":[],"mappings":";;;AAAA,uCAAyC;AAEzC,SAAgB,0BAA0B,CAAC,IAAwE;IACjH,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAyB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACnF,OAAO;YACL,GAAG,IAAI;YACP,IAAI,EAAE,kBAAU,CAAC,cAAc,CAAC,CAAC,kBAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAA6B,CAAC,CAAC,CAAC;SACtG,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AARD,gEAQC"}
@@ -17,11 +17,11 @@ export interface DecoratorHandler<K extends string = never> {
17
17
  /**
18
18
  * Entity 装饰器处理器配置
19
19
  */
20
- export declare const ENTITY_DECORATOR: DecoratorHandler<'title' | 'uuid' | 'tableName' | 'origin'>;
20
+ export declare const ENTITY_DECORATOR: DecoratorHandler<'title' | 'uuid' | 'tableName' | 'origin' | 'directory'>;
21
21
  /**
22
22
  * EntityProperty 装饰器处理器配置
23
23
  */
24
- export declare const ENTITY_PROPERTY_DECORATOR: DecoratorHandler<'title' | 'description' | 'uuid' | 'columnName' | 'required' | 'primaryKey' | 'generationRule' | 'sequence'>;
24
+ export declare const ENTITY_PROPERTY_DECORATOR: DecoratorHandler<'title' | 'description' | 'uuid' | 'columnName' | 'required' | 'primaryKey' | 'dbType' | 'rules' | 'generationRule' | 'sequence'>;
25
25
  /**
26
26
  * EntityRelation 装饰器处理器配置(特殊处理)
27
27
  */
@@ -29,15 +29,43 @@ export declare const ENTITY_RELATION_DECORATOR: DecoratorHandler;
29
29
  /**
30
30
  * Enum 装饰器处理器配置
31
31
  */
32
- export declare const ENUM_DECORATOR: DecoratorHandler<'title' | 'description'>;
32
+ export declare const ENUM_DECORATOR: DecoratorHandler<'title' | 'description' | 'directory'>;
33
33
  /**
34
34
  * Structure 装饰器处理器配置
35
35
  */
36
- export declare const STRUCTURE_DECORATOR: DecoratorHandler<'title'>;
36
+ export declare const STRUCTURE_DECORATOR: DecoratorHandler<'title' | 'directory'>;
37
+ /**
38
+ * Logic 装饰器处理器配置(服务端全局逻辑)
39
+ */
40
+ export declare const LOGIC_DECORATOR: DecoratorHandler<'description' | 'transactional' | 'directory'>;
41
+ /**
42
+ * Logic 装饰器处理器配置(View 中的前端逻辑)
43
+ */
44
+ export declare const VIEW_LOGIC_DECORATOR: DecoratorHandler<'description' | 'directory'>;
45
+ /**
46
+ * Variable 装饰器处理器配置(普通变量)
47
+ */
48
+ export declare const VARIABLE_DECORATOR: DecoratorHandler<'description' | 'autoInferType'>;
49
+ /**
50
+ * BackendVariable 装饰器处理器配置(后端全局变量)
51
+ */
52
+ export declare const BACKEND_VARIABLE_DECORATOR: DecoratorHandler<'description'>;
53
+ /**
54
+ * FrontendVariable 装饰器处理器配置(前端全局变量)
55
+ */
56
+ export declare const FRONTEND_VARIABLE_DECORATOR: DecoratorHandler<'description' | 'localStorage'>;
57
+ /**
58
+ * Variable 装饰器处理器配置(View 中的变量)
59
+ */
60
+ export declare const VIEW_VARIABLE_DECORATOR: DecoratorHandler<'description' | 'directory' | 'autoInferType'>;
37
61
  /**
38
62
  * StructureProperty 装饰器处理器配置
39
63
  */
40
64
  export declare const STRUCTURE_PROPERTY_DECORATOR: DecoratorHandler<'title' | 'description' | 'jsonName'>;
65
+ /**
66
+ * Return 装饰器处理器配置(Logic 中的返回变量)
67
+ */
68
+ export declare const RETURN_DECORATOR: DecoratorHandler<'description' | 'autoInferType'>;
41
69
  /**
42
70
  * 统一的装饰器处理函数
43
71
  * 根据配置的处理器列表处理所有装饰器
@@ -1 +1 @@
1
- {"version":3,"file":"parseDecorator.d.ts","sourceRoot":"","sources":["../../../../src/natural/transforms/utils/parseDecorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAY,SAAS,EAAc,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGpG;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,EAAE,mBAAmB,uBA8BtK;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,KAAK;IACtD,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAErB,QAAQ,CAAC,EAAE;SAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM;KAAE,CAAC;IAEnC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,mBAAmB,KAAK,IAAI,CAAC;CAC1H;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,gBAAgB,CAAC,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAMxF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,gBAAgB,CAAC,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,UAAU,GAAG,YAAY,GAAG,gBAAgB,GAAG,UAAU,CAgBnK,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,gBA0BvC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,gBAAgB,CAAC,OAAO,GAAG,aAAa,CAMpE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,gBAAgB,CAAC,OAAO,CAMzD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,4BAA4B,EAAE,gBAAgB,CAAC,OAAO,GAAG,aAAa,GAAG,UAAU,CAM/F,CAAC;AAEF;;;GAGG;AACH,wBAAgB,yBAAyB,CACrC,UAAU,EAAE,UAAU,CAAC,SAAS,EAAE,GAAG,SAAS,EAC9C,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,EACpC,MAAM,EAAE,SAAS,CAAC,QAAQ,EAC1B,UAAU,EAAE,mBAAmB,GAChC,IAAI,CAiCN"}
1
+ {"version":3,"file":"parseDecorator.d.ts","sourceRoot":"","sources":["../../../../src/natural/transforms/utils/parseDecorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAY,SAAS,EAAc,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIpG;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,EAAE,mBAAmB,uBA0CtK;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,KAAK;IACtD,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IAErB,QAAQ,CAAC,EAAE;SAAG,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM;KAAE,CAAC;IAEnC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,mBAAmB,KAAK,IAAI,CAAC;CAC1H;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,gBAAgB,CAAC,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAMtG,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,gBAAgB,CAAC,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,gBAAgB,GAAG,UAAU,CAkBxL,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,gBA0BvC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,gBAAgB,CAAC,OAAO,GAAG,aAAa,GAAG,WAAW,CAMlF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,gBAAgB,CAAC,OAAO,GAAG,WAAW,CAMvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,gBAAgB,CAAC,aAAa,GAAG,eAAe,GAAG,WAAW,CAG3F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,gBAAgB,CAAC,aAAa,GAAG,WAAW,CAG9E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,CAAC,aAAa,GAAG,eAAe,CAGhF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,gBAAgB,CAAC,aAAa,CAGtE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,2BAA2B,EAAE,gBAAgB,CAAC,aAAa,GAAG,cAAc,CAMxF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,gBAAgB,CAAC,aAAa,GAAG,WAAW,GAAG,eAAe,CAGnG,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,4BAA4B,EAAE,gBAAgB,CAAC,OAAO,GAAG,aAAa,GAAG,UAAU,CAM/F,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,gBAAgB,CAAC,aAAa,GAAG,eAAe,CAG9E,CAAC;AAEF;;;GAGG;AACH,wBAAgB,yBAAyB,CACrC,UAAU,EAAE,UAAU,CAAC,SAAS,EAAE,GAAG,SAAS,EAC9C,QAAQ,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,EACpC,MAAM,EAAE,SAAS,CAAC,QAAQ,EAC1B,UAAU,EAAE,mBAAmB,GAChC,IAAI,CAmCN"}
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.processDecoratorsByConfig = exports.STRUCTURE_PROPERTY_DECORATOR = exports.STRUCTURE_DECORATOR = exports.ENUM_DECORATOR = exports.ENTITY_RELATION_DECORATOR = exports.ENTITY_PROPERTY_DECORATOR = exports.ENTITY_DECORATOR = exports.pickDecoratorObject = void 0;
3
+ exports.processDecoratorsByConfig = exports.RETURN_DECORATOR = exports.STRUCTURE_PROPERTY_DECORATOR = exports.VIEW_VARIABLE_DECORATOR = exports.FRONTEND_VARIABLE_DECORATOR = exports.BACKEND_VARIABLE_DECORATOR = exports.VARIABLE_DECORATOR = exports.VIEW_LOGIC_DECORATOR = exports.LOGIC_DECORATOR = exports.STRUCTURE_DECORATOR = exports.ENUM_DECORATOR = exports.ENTITY_RELATION_DECORATOR = exports.ENTITY_PROPERTY_DECORATOR = exports.ENTITY_DECORATOR = exports.pickDecoratorObject = void 0;
4
4
  const utils_1 = require("../../utils");
5
5
  const transform2Entity_1 = require("../transform2Entity");
6
+ const transform2Directory_1 = require("./transform2Directory");
6
7
  /**
7
8
  * 从装饰器对象表达式中提取指定的属性
8
9
  */
@@ -19,17 +20,32 @@ function pickDecoratorObject(objectExpression, keys, mappings, parseState) {
19
20
  value = item.value.value;
20
21
  }
21
22
  else if (item.value.type === 'StringLiteral') {
22
- value = item.value.value;
23
+ // directory 字段需要特殊处理
24
+ if (item.key.name === 'directory') {
25
+ const directoryInfo = (0, transform2Directory_1.parseDirectoryValue)(item.value.value, parseState);
26
+ value = directoryInfo;
27
+ }
28
+ else {
29
+ value = item.value.value;
30
+ }
23
31
  }
24
32
  else if (item.value.type === 'NumericLiteral') {
25
33
  value = item.value.value;
26
34
  }
27
- else if (item.key.name === 'databaseTypeAnnotation') {
35
+ else if (item.key.name === 'dbType') {
28
36
  if (item.value.type === 'Identifier' || item.value.type === 'CallExpression') {
29
37
  value = (0, transform2Entity_1.transform2DatabaseTypeAnnotation)(item.value, parseState);
30
38
  }
31
39
  else {
32
- return (0, utils_1.throwError)(parseState, '不支持的 databaseTypeAnnotation 类型:' + (0, utils_1.generate)(item).code);
40
+ return (0, utils_1.throwError)(parseState, '不支持的 dbType 类型:' + (0, utils_1.generate)(item).code);
41
+ }
42
+ }
43
+ else if (item.key.name === 'rules') {
44
+ if (item.value.type === 'ArrayExpression') {
45
+ value = (0, transform2Entity_1.transform2ValidationRules)(item.value, parseState);
46
+ }
47
+ else {
48
+ return (0, utils_1.throwError)(parseState, '不支持的 rules 类型,应为调用表达式数组(如 [min(0), max(100)]):' + (0, utils_1.generate)(item).code);
33
49
  }
34
50
  }
35
51
  else {
@@ -50,7 +66,7 @@ exports.pickDecoratorObject = pickDecoratorObject;
50
66
  */
51
67
  exports.ENTITY_DECORATOR = {
52
68
  name: 'Entity',
53
- allowedKeys: new Set(['title', 'uuid', 'tableName', 'origin']),
69
+ allowedKeys: new Set(['title', 'uuid', 'tableName', 'origin', 'directory']),
54
70
  mappings: {
55
71
  title: 'description',
56
72
  },
@@ -67,12 +83,14 @@ exports.ENTITY_PROPERTY_DECORATOR = {
67
83
  'columnName',
68
84
  'required',
69
85
  'primaryKey',
70
- // 'databaseTypeAnnotation',
86
+ 'dbType',
87
+ 'rules',
71
88
  'generationRule',
72
89
  'sequence',
73
90
  ]),
74
91
  mappings: {
75
92
  title: 'label',
93
+ dbType: 'databaseTypeAnnotation',
76
94
  },
77
95
  };
78
96
  /**
@@ -112,7 +130,7 @@ exports.ENTITY_RELATION_DECORATOR = {
112
130
  */
113
131
  exports.ENUM_DECORATOR = {
114
132
  name: 'Enum',
115
- allowedKeys: new Set(['title', 'description']),
133
+ allowedKeys: new Set(['title', 'description', 'directory']),
116
134
  mappings: {
117
135
  title: 'description',
118
136
  },
@@ -122,11 +140,56 @@ exports.ENUM_DECORATOR = {
122
140
  */
123
141
  exports.STRUCTURE_DECORATOR = {
124
142
  name: 'Structure',
125
- allowedKeys: new Set(['title']),
143
+ allowedKeys: new Set(['title', 'directory']),
126
144
  mappings: {
127
145
  title: 'description',
128
146
  },
129
147
  };
148
+ /**
149
+ * Logic 装饰器处理器配置(服务端全局逻辑)
150
+ */
151
+ exports.LOGIC_DECORATOR = {
152
+ name: 'Logic',
153
+ allowedKeys: new Set(['description', 'transactional', 'directory']),
154
+ };
155
+ /**
156
+ * Logic 装饰器处理器配置(View 中的前端逻辑)
157
+ */
158
+ exports.VIEW_LOGIC_DECORATOR = {
159
+ name: 'Logic',
160
+ allowedKeys: new Set(['description', 'directory']),
161
+ };
162
+ /**
163
+ * Variable 装饰器处理器配置(普通变量)
164
+ */
165
+ exports.VARIABLE_DECORATOR = {
166
+ name: 'Variable',
167
+ allowedKeys: new Set(['description', 'autoInferType']),
168
+ };
169
+ /**
170
+ * BackendVariable 装饰器处理器配置(后端全局变量)
171
+ */
172
+ exports.BACKEND_VARIABLE_DECORATOR = {
173
+ name: 'BackendVariable',
174
+ allowedKeys: new Set(['description']),
175
+ };
176
+ /**
177
+ * FrontendVariable 装饰器处理器配置(前端全局变量)
178
+ */
179
+ exports.FRONTEND_VARIABLE_DECORATOR = {
180
+ name: 'FrontendVariable',
181
+ allowedKeys: new Set(['description', 'localStorage']),
182
+ mappings: {
183
+ localStorage: 'localCache',
184
+ },
185
+ };
186
+ /**
187
+ * Variable 装饰器处理器配置(View 中的变量)
188
+ */
189
+ exports.VIEW_VARIABLE_DECORATOR = {
190
+ name: 'Variable',
191
+ allowedKeys: new Set(['description', 'directory', 'autoInferType']),
192
+ };
130
193
  /**
131
194
  * StructureProperty 装饰器处理器配置
132
195
  */
@@ -137,6 +200,13 @@ exports.STRUCTURE_PROPERTY_DECORATOR = {
137
200
  title: 'label',
138
201
  },
139
202
  };
203
+ /**
204
+ * Return 装饰器处理器配置(Logic 中的返回变量)
205
+ */
206
+ exports.RETURN_DECORATOR = {
207
+ name: 'Return',
208
+ allowedKeys: new Set(['description', 'autoInferType']),
209
+ };
140
210
  /**
141
211
  * 统一的装饰器处理函数
142
212
  * 根据配置的处理器列表处理所有装饰器
@@ -162,7 +232,9 @@ function processDecoratorsByConfig(decorators, handlers, target, parseState) {
162
232
  const decoratorProps = pickDecoratorObject(decoratorArgs, handler.allowedKeys, handler.mappings, parseState);
163
233
  Object.keys(decoratorProps).forEach(key => {
164
234
  if (decoratorProps[key] !== undefined) {
165
- target[key] = decoratorProps[key];
235
+ // directory 属性使用临时属性名,避免与只读 getter 冲突
236
+ const propName = key === 'directory' ? '_directoryInfo' : key;
237
+ target[propName] = decoratorProps[key];
166
238
  }
167
239
  });
168
240
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parseDecorator.js","sourceRoot":"","sources":["../../../../src/natural/transforms/utils/parseDecorator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parseDecorator.js","sourceRoot":"","sources":["../../../../src/natural/transforms/utils/parseDecorator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import { naslTypes, type ParseNaturalTSState } from '../../utils';
2
+ /**
3
+ * 解析的目录信息
4
+ */
5
+ export interface DirectoryInfo {
6
+ name: string;
7
+ title?: string;
8
+ }
9
+ /**
10
+ * 目录范围类型,根据装饰器名称决定
11
+ */
12
+ export type DirectoryScope = 'Logic' | 'Enum' | 'Structure' | 'Entity' | 'View';
13
+ /**
14
+ * 从字符串解析目录信息
15
+ * 支持格式:
16
+ * - name(title) - 包含标题的格式
17
+ * - name - 纯名称格式
18
+ *
19
+ * name 必须以小写字母开头,由小写字母、数字或下划线组成
20
+ *
21
+ * @param directoryValue - 目录字符串值
22
+ * @param parseState - 解析状态
23
+ * @returns 解析后的目录信息
24
+ */
25
+ export declare function parseDirectoryValue(directoryValue: string, parseState: ParseNaturalTSState): DirectoryInfo;
26
+ /**
27
+ * 根据装饰器名称获取目录范围
28
+ * @param decoratorName - 装饰器名称(Logic、Enum、Structure、Entity)
29
+ * @returns 目录范围
30
+ */
31
+ export declare function getDirectoryScopeFromDecorator(decoratorName: string): DirectoryScope;
32
+ /**
33
+ * 查找或创建目录(统一方法)
34
+ * 根据 directory 信息和范围类型,在对应的父节点中查找或创建目录
35
+ *
36
+ * @param appOrView - NASL 应用实例或 View 实例
37
+ * @param directoryInfo - 目录信息
38
+ * @param scope - 目录范围(Logic、Enum、Structure、Entity、View)
39
+ * @returns 找到或创建的目录实例
40
+ */
41
+ export declare function findOrCreateDirectory(appOrView: naslTypes.App | naslTypes.View, directoryInfo: DirectoryInfo, scope: DirectoryScope): naslTypes.Directory;
42
+ /**
43
+ * 将节点添加到指定目录(统一方法)
44
+ * @param directory - 目标目录
45
+ * @param node - 要添加的节点
46
+ * @param scope - 目录范围,用于确定正确的 namespace
47
+ * @param dataSourceName - 数据源名称(仅 Entity 类型需要)
48
+ */
49
+ export declare function addNodeToDirectory(directory: naslTypes.Directory, node: naslTypes.Entity | naslTypes.Logic | naslTypes.Enum | naslTypes.Structure | naslTypes.Variable, scope: DirectoryScope, dataSourceName?: string): void;
50
+ /**
51
+ * 处理节点的 directory 信息(统一方法)
52
+ * 如果节点有 _directoryInfo 临时属性,则在对应的父目录中创建或查找目录,并添加引用
53
+ *
54
+ * @param appOrView - NASL 应用实例或 View 实例
55
+ * @param node - 要处理的节点
56
+ * @param scope - 目录范围(Logic、Enum、Structure、Entity、View)
57
+ */
58
+ export declare function handleDirectory(appOrView: naslTypes.App | naslTypes.View, node: naslTypes.Entity | naslTypes.Logic | naslTypes.Enum | naslTypes.Structure | naslTypes.Variable, scope: DirectoryScope): void;
59
+ //# sourceMappingURL=transform2Directory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform2Directory.d.ts","sourceRoot":"","sources":["../../../../src/natural/transforms/utils/transform2Directory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAc,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhF;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,mBAAmB,GAC9B,aAAa,CAyBf;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,aAAa,EAAE,MAAM,GAAG,cAAc,CAMpF;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,IAAI,EACzC,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,cAAc,GACpB,SAAS,CAAC,SAAS,CAiGrB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,CAAC,SAAS,EAC9B,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,QAAQ,EACpG,KAAK,EAAE,cAAc,EACrB,cAAc,CAAC,EAAE,MAAM,GACtB,IAAI,CA2CN;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,IAAI,EACzC,IAAI,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,QAAQ,EACpG,KAAK,EAAE,cAAc,GACpB,IAAI,CAeN"}
@@ -0,0 +1,229 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleDirectory = exports.addNodeToDirectory = exports.findOrCreateDirectory = exports.getDirectoryScopeFromDecorator = exports.parseDirectoryValue = void 0;
4
+ const utils_1 = require("../../utils");
5
+ /**
6
+ * 从字符串解析目录信息
7
+ * 支持格式:
8
+ * - name(title) - 包含标题的格式
9
+ * - name - 纯名称格式
10
+ *
11
+ * name 必须以小写字母开头,由小写字母、数字或下划线组成
12
+ *
13
+ * @param directoryValue - 目录字符串值
14
+ * @param parseState - 解析状态
15
+ * @returns 解析后的目录信息
16
+ */
17
+ function parseDirectoryValue(directoryValue, parseState) {
18
+ // 验证格式: name(title) 或 name
19
+ // name 必须以小写字母开头,由小写字母、数字或下划线组成
20
+ const nameRegex = /^[a-z][a-z0-9_]*$/;
21
+ const nameWithTitleRegex = /^([a-z][a-z0-9_]*)\((.+)\)$/;
22
+ let name;
23
+ let title;
24
+ // 尝试匹配 name(title) 格式
25
+ const matchWithTitle = directoryValue.match(nameWithTitleRegex);
26
+ if (matchWithTitle) {
27
+ name = matchWithTitle[1];
28
+ title = matchWithTitle[2];
29
+ }
30
+ else if (nameRegex.test(directoryValue)) {
31
+ // 匹配纯 name 格式
32
+ name = directoryValue;
33
+ }
34
+ else {
35
+ return (0, utils_1.throwError)(parseState, `directory 格式不正确:"${directoryValue}"。正确格式为 "name(title)" 或 "name",其中 name 必须以小写字母开头,由小写字母、数字或下划线组成`);
36
+ }
37
+ return { name, title };
38
+ }
39
+ exports.parseDirectoryValue = parseDirectoryValue;
40
+ /**
41
+ * 根据装饰器名称获取目录范围
42
+ * @param decoratorName - 装饰器名称(Logic、Enum、Structure、Entity)
43
+ * @returns 目录范围
44
+ */
45
+ function getDirectoryScopeFromDecorator(decoratorName) {
46
+ const validScopes = ['Logic', 'Enum', 'Structure', 'Entity'];
47
+ if (validScopes.includes(decoratorName)) {
48
+ return decoratorName;
49
+ }
50
+ throw new Error(`不支持的装饰器类型:${decoratorName}`);
51
+ }
52
+ exports.getDirectoryScopeFromDecorator = getDirectoryScopeFromDecorator;
53
+ /**
54
+ * 查找或创建目录(统一方法)
55
+ * 根据 directory 信息和范围类型,在对应的父节点中查找或创建目录
56
+ *
57
+ * @param appOrView - NASL 应用实例或 View 实例
58
+ * @param directoryInfo - 目录信息
59
+ * @param scope - 目录范围(Logic、Enum、Structure、Entity、View)
60
+ * @returns 找到或创建的目录实例
61
+ */
62
+ function findOrCreateDirectory(appOrView, directoryInfo, scope) {
63
+ let parentDirectories;
64
+ let parentNode;
65
+ let rootDirectoryName;
66
+ // 根据范围确定父目录列表和父节点
67
+ if (scope === 'View') {
68
+ // View:目录直接存储在 view.directories 中
69
+ const view = appOrView;
70
+ parentDirectories = view.directories || [];
71
+ parentNode = view;
72
+ }
73
+ else {
74
+ // App 类型的处理
75
+ const app = appOrView;
76
+ switch (scope) {
77
+ case 'Logic':
78
+ // 逻辑目录存储在 app.directories 中,需要找到名为 'LOGICS' 的目录
79
+ rootDirectoryName = 'LOGICS';
80
+ parentDirectories = app.directories.filter((dir) => dir.name === 'LOGICS');
81
+ parentNode = app;
82
+ break;
83
+ case 'Enum':
84
+ // 枚举目录存储在 app.directories 中,需要找到名为 'ENUMS' 的目录
85
+ rootDirectoryName = 'ENUMS';
86
+ parentDirectories = app.directories.filter((dir) => dir.name === 'ENUMS');
87
+ parentNode = app;
88
+ break;
89
+ case 'Structure':
90
+ // 结构目录存储在 app.directories 中,需要找到名为 'STRUCTURES' 的目录
91
+ rootDirectoryName = 'STRUCTURES';
92
+ parentDirectories = app.directories.filter((dir) => dir.name === 'STRUCTURES');
93
+ parentNode = app;
94
+ break;
95
+ case 'Entity':
96
+ // 实体目录存储在数据源的 directories 中
97
+ if (app.dataSources && app.dataSources.length > 0) {
98
+ parentDirectories = app.dataSources[0].directories || [];
99
+ parentNode = app.dataSources[0];
100
+ }
101
+ else {
102
+ throw new Error('找不到数据源,无法创建实体目录');
103
+ }
104
+ break;
105
+ default:
106
+ throw new Error(`不支持的目录范围:${scope}`);
107
+ }
108
+ // 如果没有找到根目录(Logic、Enum、Structure),使用 App 的 addDirectory 方法创建根目录
109
+ if (rootDirectoryName && parentDirectories.length === 0) {
110
+ const rootDirectory = app.addDirectory({
111
+ name: rootDirectoryName,
112
+ });
113
+ parentDirectories = [rootDirectory];
114
+ }
115
+ }
116
+ // 在父目录列表中查找匹配的目录
117
+ let targetDirectory;
118
+ if (scope === 'View' || scope === 'Entity') {
119
+ // View 和 Entity:直接在 parentDirectories 中查找
120
+ targetDirectory = parentDirectories.find((dir) => dir.name === directoryInfo.name);
121
+ }
122
+ else {
123
+ // Logic、Enum、Structure:在父目录的 children 中查找
124
+ for (const parent of parentDirectories) {
125
+ if (parent.children) {
126
+ targetDirectory = parent.children.find((child) => child.name === directoryInfo.name);
127
+ if (targetDirectory) {
128
+ break;
129
+ }
130
+ }
131
+ }
132
+ }
133
+ // 如果找不到,创建新目录
134
+ if (!targetDirectory) {
135
+ if (scope === 'View' || scope === 'Entity') {
136
+ // View 和 Entity:直接在父节点下创建
137
+ targetDirectory = parentNode.addDirectory({
138
+ name: directoryInfo.name,
139
+ title: directoryInfo.title,
140
+ });
141
+ }
142
+ else if (parentDirectories.length > 0) {
143
+ // Logic、Enum、Structure:在父目录的 children 中创建
144
+ const parent = parentDirectories[0];
145
+ targetDirectory = parent.addDirectory({
146
+ name: directoryInfo.name,
147
+ title: directoryInfo.title,
148
+ });
149
+ }
150
+ }
151
+ return targetDirectory;
152
+ }
153
+ exports.findOrCreateDirectory = findOrCreateDirectory;
154
+ /**
155
+ * 将节点添加到指定目录(统一方法)
156
+ * @param directory - 目标目录
157
+ * @param node - 要添加的节点
158
+ * @param scope - 目录范围,用于确定正确的 namespace
159
+ * @param dataSourceName - 数据源名称(仅 Entity 类型需要)
160
+ */
161
+ function addNodeToDirectory(directory, node, scope, dataSourceName) {
162
+ // 根据 scope 确定正确的 namespace
163
+ let namespace;
164
+ switch (scope) {
165
+ case 'Logic':
166
+ namespace = 'app.logics';
167
+ break;
168
+ case 'Enum':
169
+ namespace = 'app.enums';
170
+ break;
171
+ case 'Structure':
172
+ namespace = 'app.structures';
173
+ break;
174
+ case 'Entity':
175
+ // Entity 的 namespace 需要包含数据源名称
176
+ const dsName = dataSourceName || node.dataSource?.name || 'defaultDS';
177
+ namespace = `app.dataSources.${dsName}.entities`;
178
+ break;
179
+ case 'View':
180
+ // View 中的变量和逻辑,namespace 为空
181
+ namespace = '';
182
+ break;
183
+ default:
184
+ namespace = '';
185
+ }
186
+ // 检查是否已存在同名引用
187
+ const existingDef = directory.definitions?.find((def) => def.name === node.name && (scope === 'View' ? def.referredConcept === node.concept : true));
188
+ if (existingDef) {
189
+ // 更新现有引用的属性
190
+ existingDef.referredConcept = node.concept;
191
+ existingDef.namespace = namespace;
192
+ }
193
+ else {
194
+ // 使用 Directory 的 addReferredDefinition 方法添加新引用
195
+ directory.addReferredDefinition({
196
+ name: node.name,
197
+ referredConcept: node.concept,
198
+ namespace: namespace,
199
+ });
200
+ }
201
+ }
202
+ exports.addNodeToDirectory = addNodeToDirectory;
203
+ /**
204
+ * 处理节点的 directory 信息(统一方法)
205
+ * 如果节点有 _directoryInfo 临时属性,则在对应的父目录中创建或查找目录,并添加引用
206
+ *
207
+ * @param appOrView - NASL 应用实例或 View 实例
208
+ * @param node - 要处理的节点
209
+ * @param scope - 目录范围(Logic、Enum、Structure、Entity、View)
210
+ */
211
+ function handleDirectory(appOrView, node, scope) {
212
+ // 从临时属性 _directoryInfo 读取 directory 信息
213
+ const directoryInfo = node._directoryInfo;
214
+ if (directoryInfo) {
215
+ try {
216
+ const directory = findOrCreateDirectory(appOrView, directoryInfo, scope);
217
+ addNodeToDirectory(directory, node, scope);
218
+ // 处理完后删除节点上的临时属性,避免序列化时包含
219
+ delete node._directoryInfo;
220
+ }
221
+ catch (error) {
222
+ // 目录处理失败时记录错误但不中断流程
223
+ const scopeDesc = scope === 'View' ? 'View directory' : 'directory';
224
+ console.warn(`处理 ${scopeDesc} 失败: ${error.message}`, node.name);
225
+ }
226
+ }
227
+ }
228
+ exports.handleDirectory = handleDirectory;
229
+ //# sourceMappingURL=transform2Directory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform2Directory.js","sourceRoot":"","sources":["../../../../src/natural/transforms/utils/transform2Directory.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import generate from '@babel/generator';
4
4
  import * as naslTypes from '../../concepts';
5
5
  export { babelTypes, naslTypes, generate };
6
6
  export { genHash, uuidv4, firstLowerCase, firstUpperCase, splitPath } from '../../utils';
7
+ export { createComponentLookupMap } from '../transforms/utils/createComponentLookupMap';
7
8
  export declare function DEBUG(): boolean;
8
9
  export declare const parseNaturalTSErrorMap: Record<number, Array<string>>;
9
10
  export declare class ParseNaturalTSError extends Error {
@@ -43,6 +44,22 @@ export interface ParseViewState extends ParseLogicState {
43
44
  * @param babelNode2 babel节点,用于便捷生成代码片段信息
44
45
  */
45
46
  export declare function throwError(state: ParseNaturalTSState, message: string, babelNode?: babelTypes.Node | string, babelNode2?: babelTypes.Node | string): undefined;
47
+ /**
48
+ * 检查语句是否是指定名称的 $ 调用表达式(装饰器调用)
49
+ * @param statement - 要检查的语句
50
+ * @param decoratorName - 装饰器名称,如 'Logic', 'View', 'Variable'
51
+ * @returns 如果匹配返回 CallExpression,否则返回 undefined
52
+ *
53
+ * @example
54
+ * ```typescript
55
+ * // 检查是否是 $Logic 调用
56
+ * const decorator = getDecoratorCall(prevStatement, 'Logic');
57
+ * if (decorator) {
58
+ * // 处理装饰器
59
+ * }
60
+ * ```
61
+ */
62
+ export declare function getDecoratorCall(statement: babelTypes.Statement | undefined, decoratorName: string): babelTypes.CallExpression | undefined;
46
63
  /**
47
64
  * 抛出警告,在 DEBUG 模式下不抛出这类错误
48
65
  * @param message 错误信息
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/natural/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,QAAQ,MAAM,kBAAkB,CAAC;AACxC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAI5C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAG3C,OAAO,EACL,OAAO,EACP,MAAM,EACN,cAAc,EACd,cAAc,EACd,SAAS,EACV,MAAM,aAAa,CAAC;AAGrB,wBAAgB,KAAK,YAEpB;AAED,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAM,CAAC;AAExE,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAGD,MAAM,MAAM,aAAa,GAAG,GAAG,CAC7B,MAAM,EACN;IACE,SAAS,EAAE,GAAG,CAAC;IACf,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5B,CACF,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,IAAI,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,cAAc,GAAG,YAAY,GAAG,aAAa,CAAC;IAC1D,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;CAClC;AAED,MAAM,WAAW,cAAe,SAAQ,eAAe;IACrD,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,IAAI,GAAG,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,IAAI,GAAG,MAAM,GAAG,SAAS,CAwC9J;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,UAAU,CAAC,IAAI,GAAG,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,IAAI,GAAG,MAAM,QAYxH;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,yDAWxC;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,UAG/F;AAID,eAAO,MAAM,QAAQ,SAAU,GAAG,aAAa,MAAM,QAAQ,MAAM;;;CAoBlE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/natural/utils/index.ts"],"names":[],"mappings":"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"}