@lcap/nasl 2.18.0 → 2.20.0-beta.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 (287) hide show
  1. package/out/automate/engine/index.d.ts +1 -1
  2. package/out/automate/engine/index.js +4 -4
  3. package/out/automate/engine/index.js.map +1 -1
  4. package/out/automate/engine/uniqueName.d.ts +1 -1
  5. package/out/automate/engine/uniqueName.js +3 -3
  6. package/out/automate/engine/uniqueName.js.map +1 -1
  7. package/out/automate/template/myProcess.js +1 -1
  8. package/out/automate/template/myProcess.js.map +1 -1
  9. package/out/bak/translator.js +2 -1
  10. package/out/bak/translator.js.map +1 -1
  11. package/out/common/BaseNode.js +1 -0
  12. package/out/common/BaseNode.js.map +1 -1
  13. package/out/concepts/AnonymousFunction__.d.ts +1 -0
  14. package/out/concepts/AnonymousFunction__.js +40 -2
  15. package/out/concepts/AnonymousFunction__.js.map +1 -1
  16. package/out/concepts/App__.d.ts +79 -261
  17. package/out/concepts/App__.js +241 -367
  18. package/out/concepts/App__.js.map +1 -1
  19. package/out/concepts/BatchAssignment__.d.ts +2 -0
  20. package/out/concepts/BatchAssignment__.js +108 -47
  21. package/out/concepts/BatchAssignment__.js.map +1 -1
  22. package/out/concepts/BindAttribute__.d.ts +5 -0
  23. package/out/concepts/BindAttribute__.js +15 -2
  24. package/out/concepts/BindAttribute__.js.map +1 -1
  25. package/out/concepts/BindDirective__.d.ts +5 -0
  26. package/out/concepts/BindDirective__.js +6 -0
  27. package/out/concepts/BindDirective__.js.map +1 -1
  28. package/out/concepts/BindEvent__.d.ts +5 -0
  29. package/out/concepts/BindEvent__.js +6 -0
  30. package/out/concepts/BindEvent__.js.map +1 -1
  31. package/out/concepts/BindStyle__.d.ts +5 -0
  32. package/out/concepts/BindStyle__.js +6 -0
  33. package/out/concepts/BindStyle__.js.map +1 -1
  34. package/out/concepts/CallFunction__.js +33 -14
  35. package/out/concepts/CallFunction__.js.map +1 -1
  36. package/out/concepts/CallInterface__.js +2 -1
  37. package/out/concepts/CallInterface__.js.map +1 -1
  38. package/out/concepts/CallLogic__.d.ts +2 -1
  39. package/out/concepts/CallLogic__.js +112 -27
  40. package/out/concepts/CallLogic__.js.map +1 -1
  41. package/out/concepts/CallQueryComponent__.js +4 -1
  42. package/out/concepts/CallQueryComponent__.js.map +1 -1
  43. package/out/concepts/Constant__.d.ts +5 -0
  44. package/out/concepts/Constant__.js +6 -0
  45. package/out/concepts/Constant__.js.map +1 -1
  46. package/out/concepts/DataSource__.d.ts +2 -0
  47. package/out/concepts/DataSource__.js +55 -1
  48. package/out/concepts/DataSource__.js.map +1 -1
  49. package/out/concepts/Destination__.d.ts +2 -1
  50. package/out/concepts/Destination__.js +98 -25
  51. package/out/concepts/Destination__.js.map +1 -1
  52. package/out/concepts/Frontend__.d.ts +370 -0
  53. package/out/concepts/Frontend__.js +669 -0
  54. package/out/concepts/Frontend__.js.map +1 -0
  55. package/out/concepts/Identifier__.d.ts +1 -0
  56. package/out/concepts/Identifier__.js +18 -7
  57. package/out/concepts/Identifier__.js.map +1 -1
  58. package/out/concepts/LogicItem__.d.ts +6 -1
  59. package/out/concepts/LogicItem__.js +6 -0
  60. package/out/concepts/LogicItem__.js.map +1 -1
  61. package/out/concepts/Logic__.d.ts +85 -79
  62. package/out/concepts/Logic__.js +41 -23
  63. package/out/concepts/Logic__.js.map +1 -1
  64. package/out/concepts/Match__.js +14 -9
  65. package/out/concepts/Match__.js.map +1 -1
  66. package/out/concepts/NewComposite__.d.ts +345 -0
  67. package/out/concepts/NewComposite__.js +1068 -0
  68. package/out/concepts/NewComposite__.js.map +1 -0
  69. package/out/concepts/NewList__.d.ts +130 -0
  70. package/out/concepts/NewList__.js +349 -0
  71. package/out/concepts/NewList__.js.map +1 -0
  72. package/out/concepts/NewMap__.d.ts +221 -0
  73. package/out/concepts/NewMap__.js +480 -0
  74. package/out/concepts/NewMap__.js.map +1 -0
  75. package/out/concepts/New__.d.ts +19 -0
  76. package/out/concepts/New__.js +66 -0
  77. package/out/concepts/New__.js.map +1 -0
  78. package/out/concepts/Param__.d.ts +7 -0
  79. package/out/concepts/Param__.js +46 -3
  80. package/out/concepts/Param__.js.map +1 -1
  81. package/out/concepts/ProcessElement__.js +42 -13
  82. package/out/concepts/ProcessElement__.js.map +1 -1
  83. package/out/concepts/ProcessOutcomes__.d.ts +30 -0
  84. package/out/concepts/ProcessOutcomes__.js +87 -0
  85. package/out/concepts/ProcessOutcomes__.js.map +1 -0
  86. package/out/concepts/Process__.d.ts +4 -20
  87. package/out/concepts/Process__.js +0 -7
  88. package/out/concepts/Process__.js.map +1 -1
  89. package/out/concepts/Return__.d.ts +5 -0
  90. package/out/concepts/Return__.js +8 -1
  91. package/out/concepts/Return__.js.map +1 -1
  92. package/out/concepts/SelectMembers__.js +3 -3
  93. package/out/concepts/SelectMembers__.js.map +1 -1
  94. package/out/concepts/Transactional__.d.ts +5 -0
  95. package/out/concepts/Transactional__.js +6 -0
  96. package/out/concepts/Transactional__.js.map +1 -1
  97. package/out/concepts/TypeAnnotation__.d.ts +3 -0
  98. package/out/concepts/TypeAnnotation__.js +50 -11
  99. package/out/concepts/TypeAnnotation__.js.map +1 -1
  100. package/out/concepts/ValidationRule__.js +1 -1
  101. package/out/concepts/ValidationRule__.js.map +1 -1
  102. package/out/concepts/Variable__.d.ts +5 -0
  103. package/out/concepts/Variable__.js +9 -2
  104. package/out/concepts/Variable__.js.map +1 -1
  105. package/out/concepts/ViewElement__.d.ts +5 -0
  106. package/out/concepts/ViewElement__.js +21 -3
  107. package/out/concepts/ViewElement__.js.map +1 -1
  108. package/out/concepts/View__.d.ts +6 -0
  109. package/out/concepts/View__.js +23 -3
  110. package/out/concepts/View__.js.map +1 -1
  111. package/out/concepts/basics/stdlib/nasl.auth.js +1 -1
  112. package/out/concepts/basics/stdlib/nasl.auth.js.map +1 -1
  113. package/out/concepts/basics/stdlib/nasl.logging.js +5 -0
  114. package/out/concepts/basics/stdlib/nasl.logging.js.map +1 -1
  115. package/out/concepts/basics/stdlib/nasl.ui.js +2 -0
  116. package/out/concepts/basics/stdlib/nasl.ui.js.map +1 -1
  117. package/out/concepts/basics/stdlib/nasl.util.js +151 -19
  118. package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
  119. package/out/concepts/index__.d.ts +7 -0
  120. package/out/concepts/index__.js +7 -0
  121. package/out/concepts/index__.js.map +1 -1
  122. package/out/enums/KEYWORDS.d.ts +1 -0
  123. package/out/enums/KEYWORDS.js +9 -1
  124. package/out/enums/KEYWORDS.js.map +1 -1
  125. package/out/generator/genBundleFiles.d.ts +6 -3
  126. package/out/generator/genBundleFiles.js +54 -192
  127. package/out/generator/genBundleFiles.js.map +1 -1
  128. package/out/generator/genMetaData.d.ts +2 -11
  129. package/out/generator/genMetaData.js +185 -51
  130. package/out/generator/genMetaData.js.map +1 -1
  131. package/out/generator/genReleaseBody.d.ts +18 -2
  132. package/out/generator/genReleaseBody.js +80 -40
  133. package/out/generator/genReleaseBody.js.map +1 -1
  134. package/out/generator/index.d.ts +1 -0
  135. package/out/generator/index.js +1 -0
  136. package/out/generator/index.js.map +1 -1
  137. package/out/generator/permission.d.ts +17 -0
  138. package/out/generator/permission.js +221 -0
  139. package/out/generator/permission.js.map +1 -0
  140. package/out/index.d.ts +1 -1
  141. package/out/index.js +3 -1
  142. package/out/index.js.map +1 -1
  143. package/out/server/entity2LogicNamespace.js +89 -9
  144. package/out/server/entity2LogicNamespace.js.map +1 -1
  145. package/out/server/extendBaseNode.js +33 -20
  146. package/out/server/extendBaseNode.js.map +1 -1
  147. package/out/server/formatTsUtils.d.ts +1 -2
  148. package/out/server/formatTsUtils.js +36 -47
  149. package/out/server/formatTsUtils.js.map +1 -1
  150. package/out/server/getLogics.d.ts +2 -1
  151. package/out/server/getLogics.js +13 -2
  152. package/out/server/getLogics.js.map +1 -1
  153. package/out/server/getMemberIdentifier.js +4 -4
  154. package/out/server/getMemberIdentifier.js.map +1 -1
  155. package/out/server/getProcesses.js +1 -1
  156. package/out/server/getProcesses.js.map +1 -1
  157. package/out/server/naslServer.d.ts +3 -1
  158. package/out/server/naslServer.js +254 -65
  159. package/out/server/naslServer.js.map +1 -1
  160. package/out/server/process2LogicNamespace.js +8 -0
  161. package/out/server/process2LogicNamespace.js.map +1 -1
  162. package/out/server/translator.js +50 -5
  163. package/out/server/translator.js.map +1 -1
  164. package/out/service/creator/add.configs.js +4 -0
  165. package/out/service/creator/add.configs.js.map +1 -1
  166. package/out/service/datasource/api.d.ts +12 -0
  167. package/out/service/datasource/api.js +14 -0
  168. package/out/service/datasource/api.js.map +1 -0
  169. package/out/service/datasource/index.d.ts +2 -0
  170. package/out/service/datasource/index.js +10 -0
  171. package/out/service/datasource/index.js.map +1 -0
  172. package/out/service/storage/init.js +15 -4
  173. package/out/service/storage/init.js.map +1 -1
  174. package/out/templator/genEditTableBlock.js +4 -5
  175. package/out/templator/genEditTableBlock.js.map +1 -1
  176. package/out/templator/genGetBlock.js +4 -3
  177. package/out/templator/genGetBlock.js.map +1 -1
  178. package/out/templator/genGridViewBlock.js +16 -14
  179. package/out/templator/genGridViewBlock.js.map +1 -1
  180. package/out/templator/genListViewBlock.js +5 -5
  181. package/out/templator/genListViewBlock.js.map +1 -1
  182. package/out/templator/genTableBlock.js +6 -10
  183. package/out/templator/genTableBlock.js.map +1 -1
  184. package/package.json +2 -2
  185. package/sandbox/stdlib/nasl.auth.ts +1 -1
  186. package/sandbox/stdlib/nasl.core.ts +1 -0
  187. package/sandbox/stdlib/nasl.logging.ts +4 -4
  188. package/sandbox/stdlib/nasl.util.ts +9 -5
  189. package/src/automate/engine/index.js +4 -4
  190. package/src/automate/engine/uniqueName.js +3 -3
  191. package/src/automate/template/myProcess.js +1 -1
  192. package/src/automate/upgrader/2.20.js +41 -0
  193. package/src/bak/translator.js +4 -1
  194. package/src/common/BaseNode.ts +1 -0
  195. package/src/concepts/AnonymousFunction__.ts +48 -2
  196. package/src/concepts/App__.ts +298 -650
  197. package/src/concepts/BatchAssignment__.ts +111 -51
  198. package/src/concepts/BindAttribute__.ts +18 -25
  199. package/src/concepts/BindDirective__.ts +7 -0
  200. package/src/concepts/BindEvent__.ts +7 -0
  201. package/src/concepts/BindStyle__.ts +7 -0
  202. package/src/concepts/CallFunction__.ts +34 -45
  203. package/src/concepts/CallInterface__.ts +2 -1
  204. package/src/concepts/CallLogic__.ts +87 -55
  205. package/src/concepts/CallQueryComponent__.ts +4 -1
  206. package/src/concepts/Constant__.ts +7 -0
  207. package/src/concepts/DataSource__.ts +57 -5
  208. package/src/concepts/Destination__.ts +100 -43
  209. package/src/concepts/Frontend__.ts +945 -0
  210. package/src/concepts/Identifier__.ts +18 -16
  211. package/src/concepts/LogicItem__.ts +8 -1
  212. package/src/concepts/Logic__.ts +134 -149
  213. package/src/concepts/Match__.ts +13 -29
  214. package/src/concepts/NewComposite__.ts +1357 -0
  215. package/src/concepts/NewList__.ts +440 -0
  216. package/src/concepts/NewMap__.ts +666 -0
  217. package/src/concepts/New__.ts +73 -0
  218. package/src/concepts/Param__.ts +245 -199
  219. package/src/concepts/ProcessElement__.ts +43 -36
  220. package/src/concepts/ProcessOutcomes__.ts +90 -0
  221. package/src/concepts/Process__.ts +1 -23
  222. package/src/concepts/Return__.ts +11 -1
  223. package/src/concepts/SelectMembers__.ts +3 -3
  224. package/src/concepts/Transactional__.ts +7 -0
  225. package/src/concepts/TypeAnnotation__.ts +54 -49
  226. package/src/concepts/ValidationRule__.ts +19 -1
  227. package/src/concepts/Variable__.ts +12 -6
  228. package/src/concepts/ViewElement__.ts +28 -26
  229. package/src/concepts/View__.ts +26 -26
  230. package/src/concepts/basics/stdlib/nasl.auth.ts +1 -1
  231. package/src/concepts/basics/stdlib/nasl.logging.ts +5 -0
  232. package/src/concepts/basics/stdlib/nasl.ui.ts +2 -0
  233. package/src/concepts/basics/stdlib/nasl.util.ts +153 -19
  234. package/src/concepts/index__.ts +7 -0
  235. package/src/enums/KEYWORDS.ts +9 -0
  236. package/src/generator/genBundleFiles.ts +74 -245
  237. package/src/generator/genMetaData.ts +178 -78
  238. package/src/generator/genReleaseBody.ts +87 -44
  239. package/src/generator/index.ts +1 -0
  240. package/src/generator/permission.ts +261 -0
  241. package/src/index.ts +1 -1
  242. package/src/server/entity2LogicNamespace.ts +90 -10
  243. package/src/server/extendBaseNode.ts +33 -22
  244. package/src/server/formatTsUtils.ts +36 -46
  245. package/src/server/getLogics.ts +15 -3
  246. package/src/server/getMemberIdentifier.ts +5 -5
  247. package/src/server/getProcesses.ts +1 -1
  248. package/src/server/naslServer.ts +260 -77
  249. package/src/server/process2LogicNamespace.ts +8 -0
  250. package/src/server/translator.ts +51 -5
  251. package/src/service/creator/add.configs.js +4 -0
  252. package/src/service/datasource/api.js +11 -0
  253. package/src/service/datasource/index.js +6 -0
  254. package/src/service/storage/init.ts +15 -4
  255. package/src/service/video/VideoTranscribe.js +1 -0
  256. package/src/templator/genEditTableBlock.ts +8 -16
  257. package/src/templator/genGetBlock.ts +18 -19
  258. package/src/templator/genGridViewBlock.ts +18 -18
  259. package/src/templator/genListViewBlock.ts +8 -11
  260. package/src/templator/genTableBlock.ts +6 -10
  261. package/ts-worker/lib/tsserver.js +8 -1
  262. package/out/automate/engine/2.14-components.d.ts +0 -1115
  263. package/out/automate/engine/2.14-components.js +0 -1087
  264. package/out/automate/engine/2.14-components.js.map +0 -1
  265. package/out/concepts/MatchExpression__.d.ts +0 -97
  266. package/out/concepts/MatchExpression__.js +0 -281
  267. package/out/concepts/MatchExpression__.js.map +0 -1
  268. package/src/automate/engine/dist/index.dev.js +0 -517
  269. package/src/common/dist/BaseNode.js +0 -1101
  270. package/src/concepts/basics/stdlib/dist/reference2TypeAnnotationList.js +0 -24
  271. package/src/concepts/dist/Anchor__.js +0 -179
  272. package/src/concepts/dist/Assignment__.js +0 -301
  273. package/src/concepts/dist/CallFunction__.js +0 -473
  274. package/src/concepts/dist/CallInterface__.js +0 -533
  275. package/src/concepts/dist/CallLogic__.js +0 -864
  276. package/src/concepts/dist/ForEachStatement__.js +0 -426
  277. package/src/concepts/dist/MatchCase__.js +0 -587
  278. package/src/concepts/dist/MemberExpression__.js +0 -348
  279. package/src/concepts/dist/Param__.js +0 -537
  280. package/src/concepts/dist/Return__.js +0 -493
  281. package/src/generator/dist/genBundleFiles.js +0 -414
  282. package/src/server/dist/formatTsUtils.js +0 -683
  283. package/src/server/dist/naslServer.js +0 -3396
  284. package/src/service/storage/dist/init.js +0 -541
  285. package/ts-worker/dist/webpack.config.dev.js +0 -104
  286. package/ts-worker/lib/dist/tsserver.dev.js +0 -22953
  287. package/ts-worker/sources/lib/dist/tsserver.dev.js +0 -22912
@@ -0,0 +1,666 @@
1
+ import { TranslatorState, shiftState, withSourceMap } from '../translator';
2
+ import { ElementToVueOptions } from './ViewElement__';
3
+ //================================================================================
4
+ // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
5
+ // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
6
+ //================================================================================
7
+ import { EventPayload, Params } from '../common/EventEmitter';
8
+ import { concept, excludedInJSON, property } from '../decorators';
9
+
10
+ import * as utils from '../utils';
11
+ import { v4 as uuidv4 } from 'uuid';
12
+ import BaseNode from '../common/BaseNode';
13
+ import classMap from '../common/classMap';
14
+ import TypeAnnotation from './TypeAnnotation__';
15
+ import LogicItem from './LogicItem__';
16
+
17
+ /**
18
+ * map构造器
19
+ */
20
+ @concept('map构造器')
21
+ export class NewMap extends LogicItem {
22
+ /**
23
+ * 产品概念
24
+ */
25
+ @property()
26
+ concept: 'NewMap' = 'NewMap';
27
+
28
+ /**
29
+ * 类型
30
+ */
31
+ @property('TypeAnnotation')
32
+ typeAnnotation: TypeAnnotation = undefined;
33
+
34
+ /**
35
+ * 键
36
+ */
37
+ @property('LogicItem')
38
+ keys: Array<LogicItem> = [];
39
+
40
+ /**
41
+ * 键对应的值
42
+ */
43
+ @property('LogicItem')
44
+ values: Array<LogicItem> = [];
45
+
46
+
47
+
48
+ /**
49
+ * @param source 需要合并的部分参数
50
+ */
51
+ constructor(source?: Partial<NewMap>) {
52
+ source = Object.assign({}, NewMap.getDefaultOptions(), source);
53
+ super(source);
54
+ super.subConstructor(source);
55
+ }
56
+
57
+ static from(source: any, parentNode?: any, parentKey?: string): NewMap {
58
+ return super.from(source, parentNode, parentKey) as NewMap;
59
+ }
60
+
61
+
62
+ /**
63
+ * 设置类型
64
+ */
65
+ setTypeAnnotation(typeAnnotation: TypeAnnotation) {
66
+ typeAnnotation._delete();
67
+ const relationOptions = { parentNode: this, parentKey: 'typeAnnotation' };
68
+ Object.assign(typeAnnotation, relationOptions);
69
+ const object = {
70
+ typeAnnotation,
71
+ };
72
+ this.update({
73
+ ...object,
74
+ });
75
+ }
76
+
77
+ /**
78
+ * 设置键
79
+ */
80
+ setKeys(keys: Array<LogicItem>) {
81
+ const object = {
82
+ keys,
83
+ };
84
+ this.update({
85
+ ...object,
86
+ });
87
+ }
88
+
89
+ /**
90
+ * 设置键对应的值
91
+ */
92
+ setValues(values: Array<LogicItem>) {
93
+ const object = {
94
+ values,
95
+ };
96
+ this.update({
97
+ ...object,
98
+ });
99
+ }
100
+
101
+ getItemExistingNames(excludedList: Array<LogicItem> = []) {
102
+ const excludedSet = new Set(excludedList);
103
+ return ((this.keys as LogicItem[]) || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
104
+ }
105
+ getItemUniqueName(name = 'logicItem1') {
106
+ return utils.unique(name, this.getItemExistingNames(), undefined, false);
107
+ }
108
+
109
+ /**
110
+ * 插入逻辑项
111
+ * @internal
112
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
113
+ */
114
+ _insertItemInKeysAt(name: string, index: number): LogicItem;
115
+
116
+ /**
117
+ * 插入逻辑项
118
+ * @internal
119
+ * @param logicItemOptions 逻辑项参数
120
+ */
121
+ _insertItemInKeysAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
122
+
123
+ /**
124
+ * 插入逻辑项
125
+ * @internal
126
+ * @param logicItem 已有的逻辑项实例
127
+ */
128
+ _insertItemInKeysAt(logicItem: LogicItem, index: number): LogicItem;
129
+
130
+ _insertItemInKeysAt(options: string | Partial<LogicItem> | LogicItem, index: number) {
131
+ const logicItemOptions: any = {};
132
+ const relationOptions = { parentNode: this, parentKey: 'keys' };
133
+ let logicItem: LogicItem;
134
+ if (!options) {
135
+ logicItem = LogicItem.from({
136
+ ...logicItemOptions,
137
+ name: this.getItemUniqueName(),
138
+ }, this, 'keys');
139
+ } else if (typeof options === 'string') {
140
+ logicItem = LogicItem.from({
141
+ ...logicItemOptions,
142
+ name: options,
143
+ }, this, 'keys');
144
+ } else if (options instanceof LogicItem) {
145
+ options.ensureDelete(); // 同一实例不支持多处存在
146
+ logicItem = options;
147
+ Object.assign(logicItem, relationOptions);
148
+ } else {
149
+ logicItem = LogicItem.from({
150
+ ...logicItemOptions,
151
+ ...options,
152
+ }, this, 'keys');
153
+ }
154
+ this.keys.splice(index, 0, logicItem);
155
+ return logicItem;
156
+ }
157
+
158
+ /**
159
+ * 插入逻辑项
160
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
161
+ */
162
+ insertItemInKeysAt(name: string, index: number): LogicItem;
163
+
164
+ /**
165
+ * 插入逻辑项
166
+ * @param logicItemOptions 逻辑项参数
167
+ */
168
+ insertItemInKeysAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
169
+
170
+ /**
171
+ * 插入逻辑项
172
+ * @param logicItem 已有的逻辑项实例
173
+ */
174
+ insertItemInKeysAt(logicItem: LogicItem, index: number): LogicItem;
175
+
176
+ insertItemInKeysAt(options: string | Partial<LogicItem> | LogicItem, index: number) {
177
+ const node = this._insertItemInKeysAt(options as any, index);
178
+ node.create({
179
+ index,
180
+ parentNode: this,
181
+ parentKey: 'keys',
182
+ });
183
+ return node;
184
+ }
185
+
186
+ /**
187
+ * 添加逻辑项
188
+ * @internal
189
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
190
+ */
191
+ _addItemInKeys(name?: string): LogicItem;
192
+
193
+ /**
194
+ * 添加逻辑项
195
+ * @internal
196
+ * @param logicItemOptions 逻辑项参数
197
+ */
198
+ _addItemInKeys(logicItemOptions: Partial<LogicItem>): LogicItem;
199
+
200
+ /**
201
+ * 添加逻辑项
202
+ * @internal
203
+ * @param logicItem 已有的逻辑项实例
204
+ */
205
+ _addItemInKeys(logicItem: LogicItem): LogicItem;
206
+
207
+ _addItemInKeys(options?: string | Partial<LogicItem> | LogicItem) {
208
+ const index = this.keys.length;
209
+ return this._insertItemInKeysAt(options as any, index);
210
+ }
211
+
212
+ /**
213
+ * 添加逻辑项
214
+ * @internal
215
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
216
+ */
217
+ addItemInKeys(name?: string): LogicItem;
218
+
219
+ /**
220
+ * 添加逻辑项
221
+ * @param logicItemOptions 逻辑项参数
222
+ */
223
+ addItemInKeys(logicItemOptions: Partial<LogicItem>): LogicItem;
224
+
225
+ /**
226
+ * 添加逻辑项
227
+ * @param logicItem 已有的逻辑项实例
228
+ */
229
+ addItemInKeys(logicItem: LogicItem): LogicItem;
230
+
231
+ addItemInKeys(options?: string | Partial<LogicItem> | LogicItem) {
232
+ const node = this._addItemInKeys(options as any);
233
+ const index = this.keys.indexOf(node);
234
+ node.create({
235
+ index,
236
+ parentNode: this,
237
+ parentKey: 'keys',
238
+ });
239
+ return node;
240
+ }
241
+
242
+ /**
243
+ * 插入逻辑项
244
+ * @internal
245
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
246
+ */
247
+ _insertItemInValuesAt(name: string, index: number): LogicItem;
248
+
249
+ /**
250
+ * 插入逻辑项
251
+ * @internal
252
+ * @param logicItemOptions 逻辑项参数
253
+ */
254
+ _insertItemInValuesAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
255
+
256
+ /**
257
+ * 插入逻辑项
258
+ * @internal
259
+ * @param logicItem 已有的逻辑项实例
260
+ */
261
+ _insertItemInValuesAt(logicItem: LogicItem, index: number): LogicItem;
262
+
263
+ _insertItemInValuesAt(options: string | Partial<LogicItem> | LogicItem, index: number) {
264
+ const logicItemOptions: any = {};
265
+ const relationOptions = { parentNode: this, parentKey: 'values' };
266
+ let logicItem: LogicItem;
267
+ if (!options) {
268
+ logicItem = LogicItem.from({
269
+ ...logicItemOptions,
270
+ name: this.getItemUniqueName(),
271
+ }, this, 'values');
272
+ } else if (typeof options === 'string') {
273
+ logicItem = LogicItem.from({
274
+ ...logicItemOptions,
275
+ name: options,
276
+ }, this, 'values');
277
+ } else if (options instanceof LogicItem) {
278
+ options.ensureDelete(); // 同一实例不支持多处存在
279
+ logicItem = options;
280
+ Object.assign(logicItem, relationOptions);
281
+ } else {
282
+ logicItem = LogicItem.from({
283
+ ...logicItemOptions,
284
+ ...options,
285
+ }, this, 'values');
286
+ }
287
+ this.values.splice(index, 0, logicItem);
288
+ return logicItem;
289
+ }
290
+
291
+ /**
292
+ * 插入逻辑项
293
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
294
+ */
295
+ insertItemInValuesAt(name: string, index: number): LogicItem;
296
+
297
+ /**
298
+ * 插入逻辑项
299
+ * @param logicItemOptions 逻辑项参数
300
+ */
301
+ insertItemInValuesAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
302
+
303
+ /**
304
+ * 插入逻辑项
305
+ * @param logicItem 已有的逻辑项实例
306
+ */
307
+ insertItemInValuesAt(logicItem: LogicItem, index: number): LogicItem;
308
+
309
+ insertItemInValuesAt(options: string | Partial<LogicItem> | LogicItem, index: number) {
310
+ const node = this._insertItemInValuesAt(options as any, index);
311
+ node.create({
312
+ index,
313
+ parentNode: this,
314
+ parentKey: 'values',
315
+ });
316
+ return node;
317
+ }
318
+
319
+ /**
320
+ * 添加逻辑项
321
+ * @internal
322
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
323
+ */
324
+ _addItemInValues(name?: string): LogicItem;
325
+
326
+ /**
327
+ * 添加逻辑项
328
+ * @internal
329
+ * @param logicItemOptions 逻辑项参数
330
+ */
331
+ _addItemInValues(logicItemOptions: Partial<LogicItem>): LogicItem;
332
+
333
+ /**
334
+ * 添加逻辑项
335
+ * @internal
336
+ * @param logicItem 已有的逻辑项实例
337
+ */
338
+ _addItemInValues(logicItem: LogicItem): LogicItem;
339
+
340
+ _addItemInValues(options?: string | Partial<LogicItem> | LogicItem) {
341
+ const index = this.values.length;
342
+ return this._insertItemInValuesAt(options as any, index);
343
+ }
344
+
345
+ /**
346
+ * 添加逻辑项
347
+ * @internal
348
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
349
+ */
350
+ addItemInValues(name?: string): LogicItem;
351
+
352
+ /**
353
+ * 添加逻辑项
354
+ * @param logicItemOptions 逻辑项参数
355
+ */
356
+ addItemInValues(logicItemOptions: Partial<LogicItem>): LogicItem;
357
+
358
+ /**
359
+ * 添加逻辑项
360
+ * @param logicItem 已有的逻辑项实例
361
+ */
362
+ addItemInValues(logicItem: LogicItem): LogicItem;
363
+
364
+ addItemInValues(options?: string | Partial<LogicItem> | LogicItem) {
365
+ const node = this._addItemInValues(options as any);
366
+ const index = this.values.indexOf(node);
367
+ node.create({
368
+ index,
369
+ parentNode: this,
370
+ parentKey: 'values',
371
+ });
372
+ return node;
373
+ }
374
+
375
+
376
+
377
+
378
+ /**
379
+ * 删除类型标注
380
+ * @param name 类型标注名称
381
+ */
382
+ removeTypeAnnotation(name: string): void;
383
+
384
+ /**
385
+ * 删除类型标注
386
+ * @param typeAnnotation 已有的类型标注实例
387
+ */
388
+ removeTypeAnnotation(typeAnnotation: TypeAnnotation): void;
389
+
390
+ removeTypeAnnotation(options: string | TypeAnnotation) {
391
+ let typeAnnotation: TypeAnnotation;
392
+ if (typeof options === 'string') {
393
+ typeAnnotation = this.typeAnnotation;
394
+ if (!typeAnnotation) {
395
+ throw new Error('找不到类型标注 ' + options);
396
+ }
397
+ } else {
398
+ typeAnnotation = options;
399
+ }
400
+ return typeAnnotation.delete();
401
+ }
402
+
403
+ __removeTypeAnnotation(typeAnnotation: TypeAnnotation) {
404
+ const parentKey = typeAnnotation.parentKey;
405
+ const params: Params = {
406
+ parentNode: this,
407
+ parentKey,
408
+ index: -1,
409
+ object: null,
410
+ oldObject: typeAnnotation,
411
+ };
412
+ if (parentKey) {
413
+ params.parentKey = parentKey;
414
+ if (Array.isArray((this as any)[parentKey])) {
415
+ const index = (this as any)[parentKey].indexOf(typeAnnotation);
416
+ ~index && (this as any)[parentKey].splice(index, 1);
417
+ params.index = index;
418
+ } else if ((this as any)[parentKey] === typeAnnotation) {
419
+ params.index = 0;
420
+ (this as any)[parentKey] = undefined;
421
+ }
422
+ }
423
+ return params;
424
+ }
425
+
426
+
427
+
428
+ /**
429
+ * 删除逻辑项
430
+ * @param name 逻辑项名称
431
+ */
432
+ removeItemInKeys(name: string): void;
433
+
434
+ /**
435
+ * 删除逻辑项
436
+ * @param logicItem 已有的逻辑项实例
437
+ */
438
+ removeItemInKeys(logicItem: LogicItem): void;
439
+
440
+ removeItemInKeys(options: string | LogicItem) {
441
+ let logicItem: LogicItem;
442
+ if (typeof options === 'string') {
443
+ logicItem = (this.keys as LogicItem[]).find((item) => item.name === options);
444
+ if (!logicItem) {
445
+ throw new Error('找不到逻辑项 ' + options);
446
+ }
447
+ } else {
448
+ logicItem = options;
449
+ }
450
+ return logicItem.delete();
451
+ }
452
+
453
+
454
+
455
+ /**
456
+ * 删除逻辑项
457
+ * @param name 逻辑项名称
458
+ */
459
+ removeItemInValues(name: string): void;
460
+
461
+ /**
462
+ * 删除逻辑项
463
+ * @param logicItem 已有的逻辑项实例
464
+ */
465
+ removeItemInValues(logicItem: LogicItem): void;
466
+
467
+ removeItemInValues(options: string | LogicItem) {
468
+ let logicItem: LogicItem;
469
+ if (typeof options === 'string') {
470
+ logicItem = (this.values as LogicItem[]).find((item) => item.name === options);
471
+ if (!logicItem) {
472
+ throw new Error('找不到逻辑项 ' + options);
473
+ }
474
+ } else {
475
+ logicItem = options;
476
+ }
477
+ return logicItem.delete();
478
+ }
479
+
480
+ __removeLogicItem(logicItem: LogicItem) {
481
+ const parentKey = logicItem.parentKey;
482
+ const params: Params = {
483
+ parentNode: this,
484
+ parentKey,
485
+ index: -1,
486
+ object: null,
487
+ oldObject: logicItem,
488
+ };
489
+ if (parentKey) {
490
+ params.parentKey = parentKey;
491
+ if (Array.isArray((this as any)[parentKey])) {
492
+ const index = (this as any)[parentKey].indexOf(logicItem);
493
+ ~index && (this as any)[parentKey].splice(index, 1);
494
+ params.index = index;
495
+ } else if ((this as any)[parentKey] === logicItem) {
496
+ params.index = 0;
497
+ (this as any)[parentKey] = undefined;
498
+ }
499
+ }
500
+ return params;
501
+ }
502
+
503
+ //================================================================================
504
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
505
+ // 自动生成的代码已结束。下面可以手动编写。
506
+ //================================================================================
507
+ getIterator() {
508
+ return this.keys.map((k, idx) => ({
509
+ key: k,
510
+ value: this.values[idx],
511
+ uid: uuidv4(),
512
+ }));
513
+ }
514
+
515
+ addPair() {
516
+ this.update({
517
+ keys: [...this.keys, undefined],
518
+ values: [...this.values, undefined],
519
+ })
520
+ }
521
+
522
+ removePair(idx: number) {
523
+ const k = this.keys.slice();
524
+ k.splice(idx, 1);
525
+ const v = this.values.slice();
526
+ v.splice(idx, 1);
527
+ this.update({
528
+ keys: k,
529
+ values: v,
530
+ })
531
+ }
532
+
533
+ toJS(state?: TranslatorState): string {
534
+ let code = '';
535
+ code += 'await (async () => {\n';
536
+ code += 'const obj = {};\n';
537
+ code += 'let k;\n';
538
+ this.keys.forEach((item, index) => {
539
+ const key: any = item;
540
+ const value: any = this.values[index];
541
+ code += `k = `;
542
+ code += `${key ? key.toJS(shiftState(state, code, { inline: true })) : undefined};\n`;
543
+ code += 'obj[k] = ';
544
+ code += `${value ? value.toJS(shiftState(state, code, { inline: true })) : undefined};\n`;
545
+ });
546
+ code += `return obj;\n`;
547
+ code += '})()';
548
+ return code;
549
+ }
550
+
551
+ @withSourceMap()
552
+ toEmbeddedTS(state?: TranslatorState): string {
553
+ let code = '';
554
+ if (this.typeAnnotation) {
555
+ const newConstructor = `nasl.util.New<${this.typeAnnotation.sortedTypeKey}>()`;
556
+ code += '(() => { \n';
557
+ // 方便ts报错检查
558
+ code += 'function __newComposite() {\n';
559
+ code += '\n';
560
+ this.keys.forEach((item, index) => {
561
+ const key = item;
562
+ code += `nasl.util.MapPut(${newConstructor}, `;
563
+ code += `${key ? key.toEmbeddedTS(shiftState(state, code, { inline: true })) : null}`;
564
+ code += ', null)\n';
565
+ });
566
+ this.values.forEach((item, index) => {
567
+ const value = this.values[index];
568
+ code += `nasl.util.MapPut(${newConstructor}, null, `;
569
+ code += `${value ? value.toEmbeddedTS(shiftState(state, code, { inline: true })) : null}`;
570
+ code += ')';
571
+ code += '\n';
572
+ });
573
+ code += `return ${newConstructor};\n`;
574
+ code += '};\n';
575
+
576
+ code += 'return __newComposite();\n';
577
+ code += '})()';
578
+ } else {
579
+ if (this.keys.length) {
580
+ code += '(() => { \n';
581
+ const valueTsArr: any = [];
582
+ let keyTs = 'null';
583
+ let keyBol = false;
584
+ this.keys.forEach((key) => {
585
+ if (key) {
586
+ const ts = key.toEmbeddedTS(shiftState(state, code, { inline: true }));
587
+ if (!keyBol && !['__IDENTIFIER__', '__IDENTIFIER__()'].includes(ts)) {
588
+ keyBol = true;
589
+ keyTs = ts;
590
+ }
591
+ }
592
+ });
593
+ this.values.forEach((item, index) => {
594
+ const ts = item ? item.toEmbeddedTS(shiftState(state, code, { inline: true })) : null;
595
+ valueTsArr.push(ts);
596
+ code += valueTsArr[index];
597
+ code += '; ';
598
+ });
599
+ code += '\n';
600
+ // 方便ts报错检查
601
+ code += 'function __newComposite() {\n';
602
+ this.keys.forEach((key: any) => {
603
+ code += `nasl.core.compare2(${keyTs}, `;
604
+ code += key.toEmbeddedTS(shiftState(state, code, { inline: true }));
605
+ code += ');\n';
606
+ });
607
+ code += `return nasl.util.NewMap(${keyTs}, `;
608
+ valueTsArr.forEach((ts: any, index: number) => {
609
+ code += ['__IDENTIFIER__', '__IDENTIFIER__()'].includes(ts) ? null : ts;
610
+ if (index + 1 < this.values.length)
611
+ code += ', ';
612
+ });
613
+ code += ');\n';
614
+
615
+ code += '};\n';
616
+
617
+ code += 'return __newComposite();\n';
618
+ code += '})()';
619
+ } else {
620
+ code += `nasl.util.NewMap(${null}, ${null})`;
621
+ }
622
+ }
623
+ return code;
624
+ }
625
+
626
+ getInitCode(state?: TranslatorState): string {
627
+ let code = '';
628
+ if (this.keys.length) {
629
+ let keyBol = false;
630
+ code += `nasl.util.NewMap(`;
631
+ this.keys.forEach((key) => {
632
+ if (key && !keyBol) {
633
+ const ts = key.toEmbeddedTS(shiftState(state, code, { inline: true }));
634
+ if (!['__IDENTIFIER__', '__IDENTIFIER__()'].includes(ts)) {
635
+ keyBol = true;
636
+ code += ts;
637
+ }
638
+ }
639
+ });
640
+ if (!keyBol)
641
+ code += 'null';
642
+ code += `, ...[`;
643
+ this.values.forEach((item, index) => {
644
+ const ts = item ? item.toEmbeddedTS(shiftState(state, code, { inline: true })) : null;
645
+ code += ['__IDENTIFIER__', '__IDENTIFIER__()'].includes(ts) ? null : ts;
646
+ if (index + 1 < this.values.length)
647
+ code += ', ';
648
+ });
649
+ code += '])';
650
+ } else {
651
+ code += `nasl.util.NewMap(${null}, ${null})`;
652
+ }
653
+ return code;
654
+ }
655
+ //================================================================================
656
+ // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
657
+ // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
658
+ //================================================================================
659
+ }
660
+
661
+ classMap.NewMap = NewMap;
662
+ export default NewMap;
663
+ //================================================================================
664
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
665
+ // 自动生成的代码已结束。下面可以手动编写。
666
+ //================================================================================