@lcap/nasl 3.5.0-beta.4 → 3.6.0-alpha.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 (98) hide show
  1. package/out/breakpoint/shared/utils.js +1 -19
  2. package/out/breakpoint/shared/utils.js.map +1 -1
  3. package/out/breakpoint/store/core.js +1 -1
  4. package/out/breakpoint/store/core.js.map +1 -1
  5. package/out/common/BaseNode.d.ts +9 -0
  6. package/out/common/BaseNode.js +15 -0
  7. package/out/common/BaseNode.js.map +1 -1
  8. package/out/common/Command.js +1 -0
  9. package/out/common/Command.js.map +1 -1
  10. package/out/common/EventEmitter.d.ts +1 -1
  11. package/out/common/EventEmitter.js +0 -4
  12. package/out/common/EventEmitter.js.map +1 -1
  13. package/out/concepts/AnonymousFunction__.d.ts +6 -1
  14. package/out/concepts/AnonymousFunction__.js +34 -16
  15. package/out/concepts/AnonymousFunction__.js.map +1 -1
  16. package/out/concepts/App__.d.ts +29 -0
  17. package/out/concepts/App__.js +120 -21
  18. package/out/concepts/App__.js.map +1 -1
  19. package/out/concepts/BindAttribute__.js.map +1 -1
  20. package/out/concepts/BindEvent__.js +2 -2
  21. package/out/concepts/BindEvent__.js.map +1 -1
  22. package/out/concepts/BusinessComponent__.d.ts +1 -1
  23. package/out/concepts/BusinessComponent__.js +107 -87
  24. package/out/concepts/BusinessComponent__.js.map +1 -1
  25. package/out/concepts/CallEvent__.d.ts +4 -0
  26. package/out/concepts/CallEvent__.js +18 -1
  27. package/out/concepts/CallEvent__.js.map +1 -1
  28. package/out/concepts/CallFunction__.d.ts +0 -1
  29. package/out/concepts/CallFunction__.js +0 -8
  30. package/out/concepts/CallFunction__.js.map +1 -1
  31. package/out/concepts/Destination__.js +3 -3
  32. package/out/concepts/Destination__.js.map +1 -1
  33. package/out/concepts/Entity__.d.ts +1 -1
  34. package/out/concepts/Entity__.js +2 -0
  35. package/out/concepts/Entity__.js.map +1 -1
  36. package/out/concepts/Logic__.js +15 -8
  37. package/out/concepts/Logic__.js.map +1 -1
  38. package/out/concepts/Match__.d.ts +1 -1
  39. package/out/concepts/ValidationRule__.js +2 -1
  40. package/out/concepts/ValidationRule__.js.map +1 -1
  41. package/out/concepts/ViewElement__.d.ts +1 -0
  42. package/out/concepts/ViewElement__.js +20 -3
  43. package/out/concepts/ViewElement__.js.map +1 -1
  44. package/out/concepts/View__.js +19 -18
  45. package/out/concepts/View__.js.map +1 -1
  46. package/out/server/extendBaseNode.js +18 -0
  47. package/out/server/extendBaseNode.js.map +1 -1
  48. package/out/server/getProcesses.js +3 -3
  49. package/out/server/getProcesses.js.map +1 -1
  50. package/out/server/naslServer.js +16 -12
  51. package/out/server/naslServer.js.map +1 -1
  52. package/out/service/storage/init.js +24 -1
  53. package/out/service/storage/init.js.map +1 -1
  54. package/out/templator/genCurdMultipleKeyBlock.d.ts +27 -0
  55. package/out/templator/genCurdMultipleKeyBlock.js +673 -1
  56. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  57. package/out/templator/genGetBlock.js +2 -1
  58. package/out/templator/genGetBlock.js.map +1 -1
  59. package/out/templator/genTableBlock.d.ts +2 -0
  60. package/out/templator/genTableBlock.js +114 -1
  61. package/out/templator/genTableBlock.js.map +1 -1
  62. package/out/templator/genUpdateBlock.js +2 -1
  63. package/out/templator/genUpdateBlock.js.map +1 -1
  64. package/out/translator/utils.js +30 -1
  65. package/out/translator/utils.js.map +1 -1
  66. package/out/utils/index.d.ts +17 -0
  67. package/out/utils/index.js +184 -1
  68. package/out/utils/index.js.map +1 -1
  69. package/package.json +1 -1
  70. package/src/breakpoint/shared/utils.ts +2 -24
  71. package/src/breakpoint/store/core.ts +1 -1
  72. package/src/common/BaseNode.ts +19 -0
  73. package/src/common/Command.ts +1 -0
  74. package/src/common/EventEmitter.ts +1 -6
  75. package/src/concepts/AnonymousFunction__.ts +36 -18
  76. package/src/concepts/App__.ts +132 -21
  77. package/src/concepts/BindAttribute__.ts +0 -1
  78. package/src/concepts/BindEvent__.ts +2 -2
  79. package/src/concepts/BusinessComponent__.ts +122 -98
  80. package/src/concepts/CallEvent__.ts +19 -2
  81. package/src/concepts/CallFunction__.ts +0 -11
  82. package/src/concepts/Destination__.ts +3 -3
  83. package/src/concepts/Entity__.ts +3 -1
  84. package/src/concepts/Logic__.ts +15 -9
  85. package/src/concepts/ValidationRule__.ts +6 -1
  86. package/src/concepts/ViewElement__.ts +26 -3
  87. package/src/concepts/View__.ts +19 -18
  88. package/src/server/extendBaseNode.ts +21 -0
  89. package/src/server/getProcesses.ts +3 -3
  90. package/src/server/naslServer.ts +17 -11
  91. package/src/service/storage/init.ts +31 -1
  92. package/src/templator/genCurdMultipleKeyBlock.ts +781 -57
  93. package/src/templator/genGetBlock.ts +2 -1
  94. package/src/templator/genTableBlock.ts +127 -2
  95. package/src/templator/genUpdateBlock.ts +2 -1
  96. package/src/translator/utils.ts +32 -1
  97. package/src/utils/index.ts +211 -1
  98. package/ts-worker/src/index.js +1 -0
@@ -14,8 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.attrConvertCamelCase = exports.replaceNode = exports.toBriefExpr = exports.shouldLoadCss = exports.specialOfficialCustoms = exports.officialCustoms = exports.waitPromise = exports.clearObjectDeep = exports.clearObject = exports.throttle = exports.getGlobalEnv = exports.findConceptValueFromNamespace = exports.findConceptKeyWordIndexFromNamespace = exports.findConceptKeyWordByNamespace = exports.findClosestModule = void 0;
17
+ exports.hasParamNameOfAnonymousFunction = exports.checkParamNameOfAnonymousFunction = exports.AnonymousFnNode = exports.attrConvertCamelCase = exports.replaceNode = exports.toBriefExpr = exports.shouldLoadCss = exports.specialOfficialCustoms = exports.officialCustoms = exports.waitPromise = exports.clearObjectDeep = exports.clearObject = exports.throttle = exports.getGlobalEnv = exports.findConceptValueFromNamespace = exports.findConceptKeyWordIndexFromNamespace = exports.findConceptKeyWordByNamespace = exports.findClosestModule = void 0;
18
18
  const compare_versions_1 = require("compare-versions");
19
+ const index_1 = require("../decorators/index");
19
20
  const traverse_1 = require("./traverse");
20
21
  // import TypeAnnotation from '../concepts/TypeAnnotation__';
21
22
  // import App from '../concepts/App__';
@@ -200,4 +201,186 @@ function attrConvertCamelCase(str) {
200
201
  return strList.join('');
201
202
  }
202
203
  exports.attrConvertCamelCase = attrConvertCamelCase;
204
+ class AnonymousFnNode {
205
+ }
206
+ exports.AnonymousFnNode = AnonymousFnNode;
207
+ /**
208
+ * 收集匿名函数
209
+ * @param param0
210
+ * @returns
211
+ */
212
+ function collectAnonymousFn({ anonymousFnNode, cb }) {
213
+ const descendantsAnonyList = cb(anonymousFnNode);
214
+ const { node } = anonymousFnNode;
215
+ const propertyMap = (0, index_1.getConceptPropertyMap)(node?.concept);
216
+ if (!propertyMap) {
217
+ return;
218
+ }
219
+ for (const property of propertyMap.keys()) {
220
+ const child = node[property];
221
+ if (!child) {
222
+ continue;
223
+ }
224
+ else if (Array.isArray(child)) {
225
+ child.forEach((node) => collectAnonymousFn({
226
+ anonymousFnNode: {
227
+ node,
228
+ descendants: descendantsAnonyList
229
+ },
230
+ cb
231
+ }));
232
+ }
233
+ else {
234
+ collectAnonymousFn({
235
+ anonymousFnNode: {
236
+ node: child,
237
+ descendants: descendantsAnonyList
238
+ },
239
+ cb
240
+ });
241
+ }
242
+ }
243
+ }
244
+ function getAnonymousFnNodes(node) {
245
+ const anonymousFnNodes = [];
246
+ // 1.匿名函数可能在里层,如:ListDistinctBy
247
+ // 2.存在多级匿名数据结构
248
+ collectAnonymousFn({
249
+ anonymousFnNode: {
250
+ node,
251
+ descendants: anonymousFnNodes
252
+ },
253
+ cb: (anonymousFnNode) => {
254
+ const { node, descendants } = anonymousFnNode;
255
+ if (node?.concept === 'AnonymousFunction') {
256
+ const newAnonymousNode = {
257
+ node,
258
+ descendants: [],
259
+ };
260
+ descendants?.push(newAnonymousNode);
261
+ return newAnonymousNode.descendants;
262
+ }
263
+ return descendants;
264
+ }
265
+ });
266
+ return anonymousFnNodes;
267
+ }
268
+ /**
269
+ * 父链上存在的参数名字
270
+ * @returns
271
+ */
272
+ function getAncestorExistingParamNames(baseNode) {
273
+ let node = baseNode;
274
+ const names = new Set();
275
+ while (node) {
276
+ node = node.parentNode;
277
+ switch (node?.concept) {
278
+ case 'AnonymousFunction':
279
+ node.params.forEach((param) => {
280
+ names.add(param.name);
281
+ });
282
+ break;
283
+ case 'ForEachStatement':
284
+ names.add(node.item?.name);
285
+ names.add(node.index?.name);
286
+ break;
287
+ case 'Logic':
288
+ case 'View':
289
+ const varList = [
290
+ ...(node.params || []),
291
+ ...(node.returns || []),
292
+ ...(node.variables || [])
293
+ ];
294
+ varList?.forEach((variable) => {
295
+ names.add(variable?.name);
296
+ });
297
+ break;
298
+ }
299
+ }
300
+ return names;
301
+ }
302
+ /**
303
+ * 确保匿名函数的参数名称都是不重复的,且更新内部的引用关系
304
+ * @param param0
305
+ */
306
+ function ensureAnonymousFnsParamName({ ancestorParamNames, anonymousFnNodes, }) {
307
+ const paramInfoMapList = [];
308
+ anonymousFnNodes.forEach((anonymousFnNode) => {
309
+ const { node: anonymousFn, descendants } = anonymousFnNode || {};
310
+ const tempParamInfoMap = anonymousFn?.ensureParamName(ancestorParamNames);
311
+ paramInfoMapList.push(tempParamInfoMap);
312
+ if (Array.isArray(descendants)) {
313
+ const paramNames = new Set([...ancestorParamNames]);
314
+ tempParamInfoMap.forEach((value) => {
315
+ paramNames.add(value.newName);
316
+ });
317
+ const descendantTempParamInfoMap = ensureAnonymousFnsParamName({
318
+ ancestorParamNames: paramNames,
319
+ anonymousFnNodes: descendants,
320
+ });
321
+ paramInfoMapList.push(...descendantTempParamInfoMap);
322
+ }
323
+ });
324
+ return paramInfoMapList;
325
+ }
326
+ /**
327
+ * 校验匿名函数的局部变量是否重名
328
+ */
329
+ function checkParamNameOfAnonymousFunction(node) {
330
+ const anonymousFnNodes = getAnonymousFnNodes(node);
331
+ // 从外到里计算更改的name
332
+ const paramInfoMapList = ensureAnonymousFnsParamName({
333
+ ancestorParamNames: getAncestorExistingParamNames(node),
334
+ anonymousFnNodes
335
+ });
336
+ paramInfoMapList?.forEach((paramInfoMap) => {
337
+ paramInfoMap.forEach((paramInfo) => {
338
+ const { newName, param, identifiers } = paramInfo || {};
339
+ param?.update({
340
+ name: newName,
341
+ });
342
+ if (Array.isArray(identifiers)) {
343
+ identifiers.forEach((identifier) => {
344
+ identifier?.update({
345
+ name: newName,
346
+ });
347
+ });
348
+ }
349
+ });
350
+ });
351
+ }
352
+ exports.checkParamNameOfAnonymousFunction = checkParamNameOfAnonymousFunction;
353
+ // 获取内部匿名函数的局部变量
354
+ function collectAnonymousFnNodesParams(node) {
355
+ const paramNames = new Set();
356
+ const anonymousFnNodes = getAnonymousFnNodes(node);
357
+ if (Array.isArray(anonymousFnNodes)) {
358
+ anonymousFnNodes.forEach((anonymousFnNode) => {
359
+ const { node: anonymousFn, descendants } = anonymousFnNode || {};
360
+ anonymousFn.params.forEach((param) => {
361
+ paramNames.add(param.name);
362
+ });
363
+ if (Array.isArray(descendants)) {
364
+ descendants.forEach(({ node: descendantNode }) => {
365
+ const descendantParamNames = collectAnonymousFnNodesParams(descendantNode);
366
+ descendantParamNames.forEach((descendantParamName) => {
367
+ paramNames.add(descendantParamName);
368
+ });
369
+ });
370
+ }
371
+ });
372
+ }
373
+ return paramNames;
374
+ }
375
+ /**
376
+ * 新的参数名是否存在同名
377
+ * @param param0
378
+ */
379
+ function hasParamNameOfAnonymousFunction({ node, newName, }) {
380
+ const ancestorParamNames = getAncestorExistingParamNames(node);
381
+ const anonymousFnNodesParams = collectAnonymousFnNodesParams(node);
382
+ const paramNames = new Set([...ancestorParamNames.values(), ...anonymousFnNodesParams.values()]);
383
+ return paramNames.has(newName);
384
+ }
385
+ exports.hasParamNameOfAnonymousFunction = hasParamNameOfAnonymousFunction;
203
386
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,uDAA2C;AAE3C,yCAAsC;AACtC,6DAA6D;AAC7D,uCAAuC;AAEvC,2CAAyB;AACzB,6CAA2B;AAC3B,2CAAyB;AACzB,0CAAwB;AACxB,2CAAyB;AACzB,wCAAsB;AACtB,iDAA+B;AAE/B,UAAU;AACV,SAAgB,iBAAiB,CAAC,IAAc;IAC9C,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,OAAO,UAAU,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QACpE,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;KACpC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAND,8CAMC;AAED,kBAAkB;AAClB,SAAgB,6BAA6B,CAAC,SAAiB;IAC7D,MAAM,YAAY,GAAG,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACjD,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;IACtF,OAAO,YAAY,CAAC,GAAG,EAAE,CAAC;AAC5B,CAAC;AAND,sEAMC;AAED,0BAA0B;AAC1B,SAAgB,oCAAoC,CAAC,SAAiB,EAAE,OAAe;IACrF,MAAM,YAAY,GAAG,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACjD,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE;QACrD,IAAI,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE;YACrB,OAAO,aAAa,KAAK,OAAO,CAAC;SAClC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAVD,oFAUC;AAED,kCAAkC;AAClC,8DAA8D;AAC9D,eAAe;AACf,SAAgB,6BAA6B,CAAC,SAAiB,EAAE,OAAe;IAC9E,MAAM,YAAY,GAAG,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACjD,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,GAAG,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,EAAE;QAChE,IAAI,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE;YACrB,OAAO,aAAa,KAAK,OAAO,CAAC;SAClC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,IAAI,SAAS;QAAE,OAAO,YAAY,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAClD,OAAO,EAAE,CAAC;AACZ,CAAC;AAbD,sEAaC;AAED,SAAgB,YAAY;IAC1B,OAAO,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAE,MAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAE,MAAc,CAAC,UAAU,CAAC;AAClG,CAAC;AAFD,oCAEC;AAED;;;;;GAKG;AACI,MAAM,QAAQ,GAAG,CAAC,IAAc,EAAE,IAAY,EAAE,OAAY,EAAE,EAAE,CAAC,IAAI,CAAC;AAAhE,QAAA,QAAQ,YAAwD;AAE7E,SAAgB,WAAW,CAAC,GAAQ;IAClC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC/B,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI;YAAE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC;AAJD,kCAIC;AAED,SAAgB,eAAe,CAAC,GAAQ;IACtC,IAAA,mBAAQ,EACN,CAAC,OAAO,EAAE,EAAE;QACV,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACxC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI;gBAAE,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC,EACD,EAAE,IAAI,EAAE,GAAG,EAAE,EACb,EAAE,IAAI,EAAE,WAAW,EAAE,CACtB,CAAC;AACJ,CAAC;AAVD,0CAUC;AAEM,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAAxF,QAAA,WAAW,eAA6E;AAErG,qBAAqB;AACR,QAAA,eAAe,GAAG;IAC7B,eAAe;IACf,kBAAkB;IAClB,kBAAkB;IAClB,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,eAAe;IACf,kBAAkB;IAClB,mBAAmB;IACnB,kBAAkB;IAClB,aAAa;IACb,kBAAkB;IAClB,YAAY;CACb,CAAC;AACF,8BAA8B;AACjB,QAAA,sBAAsB,GAAG,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC7F,yBAAyB;AAClB,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,OAAe,EAAW,EAAE,CACtE,CAAC,uBAAe,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC/B,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC,8BAAsB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,IAAA,0BAAO,EAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AAH3F,QAAA,aAAa,iBAG8E;AAmBxG,SAAgB,WAAW,CAAC,UAAqB;IAC/C,IAAI,IAAI,GAAG,GAAG,CAAC;IACf,IACE;QACE,gBAAgB;QAChB,eAAe;QACf,YAAY;QACZ,kBAAkB;QAClB,sBAAsB;QACtB,gBAAgB;QAChB,aAAa;QACb,UAAU;QACV,kBAAkB;QAClB,iBAAiB;KAClB,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,EAC/B;QACA,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;KAC7B;SAAM,IACL,CAAC,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,EAC5I;QACA,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC;KACzB;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAvBD,kCAuBC;AAED,SAAgB,WAAW,CAAC,OAAY,EAAE,OAAY;IACpD,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IACjE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE;QACzC,UAAU,CAAC,MAAM,CAAC;YAChB,CAAC,SAAS,CAAC,EAAE,OAAO;SACrB,CAAC,CAAC;KACJ;SAAM;QACL,4BAA4B;QAC5B,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE;YACxB,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAC;QACH,IAAI,UAAU,CAAC,OAAO,KAAK,OAAO,EAAE;YAClC,IAAI,SAAS,KAAK,MAAM,EAAE;gBACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;gBACvE,KAAK,CAAC,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;aAC7C;iBAAM;gBACL,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;gBAC7E,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC7C,KAAK,CAAC,wBAAwB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;aACnD;SACF;aAAM;YACL,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;YAClF,MAAM,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;YACzF,IAAI,UAAU,CAAC,eAAe,cAAc,IAAI,CAAC;gBAAE,UAAU,CAAC,eAAe,cAAc,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;;gBAC/G,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;SACjD;QACD,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACzB;AACH,CAAC;AA9BD,kCA8BC;AAED,SAAgB,oBAAoB,CAAC,GAAW;IAC9C,IAAI,OAAO,GAAa,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACvC,IAAI,KAAK,KAAK,CAAC,EAAE;YACf,OAAO,OAAO,CAAC;SAChB;aAAM;YACL,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;SAClE;IACH,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAVD,oDAUC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lcap/nasl",
3
3
  "description": "NetEase Application Specific Language",
4
- "version": "3.5.0-beta.4",
4
+ "version": "3.6.0-alpha.2",
5
5
  "author": "Forrest <rainforest92@126.com>",
6
6
  "scripts": {
7
7
  "clear": "rimraf ./out",
@@ -16,6 +16,7 @@ import {
16
16
  } from './constants';
17
17
 
18
18
  type Callback = (node: BaseNode) => void;
19
+ type Condition = (node: BaseNode) => boolean;
19
20
 
20
21
  type HistoryInApp = {
21
22
  _historyIndex?: number,
@@ -117,30 +118,7 @@ const isBreakableByCurrent = (node: BaseNode): Boolean => {
117
118
  return BREAKPOINT_CONCEPTS.includes(concept);
118
119
  };
119
120
 
120
- const queryComponents = [
121
- 'CallQueryComponent',
122
- 'OqlQueryComponent',
123
- ];
124
-
125
- const conditions = [
126
- (node: BaseNode) => {
127
- if (!node) {
128
- return;
129
- }
130
-
131
- const { concept } = node;
132
- const included = queryComponents.includes(concept);
133
-
134
- if (!included) {
135
- return;
136
- }
137
-
138
- const concpet = 'Paginate' as any;
139
- const ancestor = node.getAncestor(concpet);
140
-
141
- return !ancestor;
142
- },
143
- ];
121
+ const conditions: Condition[] = [];
144
122
 
145
123
  const isBreakableByConditions = (node: BaseNode): Boolean => {
146
124
  if (!node) {
@@ -138,7 +138,7 @@ const isFrontend = (node: BaseNode) => {
138
138
 
139
139
  const { getAncestor } = node;
140
140
 
141
- return getAncestor && getAncestor.call(node, 'View');
141
+ return getAncestor && getAncestor.call(node, 'FrontendType');
142
142
  };
143
143
 
144
144
  const updateToBackend = (node: BaseNode) => {
@@ -210,6 +210,13 @@ export class BaseNode extends EventEmitter {
210
210
  @property()
211
211
  name: string = '';
212
212
 
213
+ /**
214
+ * 应用内节点的分组管理机制
215
+ * 暂无明确的名称定义要求,只要求唯一即可,建议使用时第一个分组给一个root分组
216
+ */
217
+ @property()
218
+ composedBy?: Array<string>;
219
+
213
220
  /**
214
221
  * 当前节点的类型标注
215
222
  */
@@ -300,6 +307,10 @@ export class BaseNode extends EventEmitter {
300
307
  if (utils.isNode && ('concept' in this) && !this.concept) {
301
308
  Reflect.deleteProperty(this, 'concept');
302
309
  }
310
+
311
+ if (this?.composedBy) {
312
+ (this as any)?.app && (this as any).app.addComposeNodes(this.composedBy, this);
313
+ }
303
314
  }
304
315
 
305
316
  fixInstantiate() {
@@ -1102,6 +1113,14 @@ export class BaseNode extends EventEmitter {
1102
1113
  /* override */
1103
1114
  }
1104
1115
 
1116
+ /**
1117
+ * 移除绑定实体元素的页面元素
1118
+ */
1119
+ @action('移除绑定实体元素的页面元素')
1120
+ async removeBindEntityPropertyViewEelment(): Promise<any> {
1121
+ /* override */
1122
+ }
1123
+
1105
1124
  /**
1106
1125
  * 准备删除
1107
1126
  */
@@ -47,6 +47,7 @@ export function unregisterCommand(command: string, execute?: CommandExecute) {
47
47
  }
48
48
  _commands.delete(command);
49
49
  }
50
+ _commands.delete(command);
50
51
  }
51
52
 
52
53
  export function invokeCommand(command: string, ...args: any[]) {
@@ -27,12 +27,7 @@ export class EventEmitter {
27
27
  * @param eventName 事件名
28
28
  * @param listener 监听器
29
29
  */
30
- off(eventName?: string, listener?: EventListener) {
31
- if (!eventName) {
32
- (this as any)._events = {};
33
- return;
34
- }
35
-
30
+ off(eventName: string, listener: EventListener) {
36
31
  const listeners = this._events[eventName];
37
32
  if (listeners) {
38
33
  const index = listeners.indexOf(listener);
@@ -649,27 +649,45 @@ export class AnonymousFunction extends LogicItem {
649
649
  return code;
650
650
  }
651
651
 
652
- checkParamName() {
653
- let node: types.SyntaxNode = this;
654
- const names: Set<string> = new Set();
655
- while (node && node.concept !== 'Logic') {
656
- node = node.parentNode;
657
- if (asserts.isAnonymousFunction(node)) {
658
- node.params.forEach((param) => {
659
- names.add(param.name);
660
- });
652
+ /**
653
+ * 确保参数名称都是不重复的,且更新内部的引用关系
654
+ * @param paramNames
655
+ * @returns
656
+ */
657
+ ensureParamName(paramNames: Set<string>) {
658
+ const paramInfoMap = new Map<string, any>();
659
+ this.params.forEach((param) => {
660
+ const name = utils.unique(param.name, paramNames);
661
+ if (!paramInfoMap.get(param.name)) {
662
+ paramInfoMap.set(param.name, {});
661
663
  }
662
-
663
- if (asserts.isForEachStatement(node)) {
664
- names.add(node.item.name);
665
- names.add(node.index.name);
664
+ const paramInfo = paramInfoMap.get(param.name);
665
+ // 即使没有修改,也需要把名字塞进去
666
+ paramInfo.newName = name;
667
+ if (name !== param.name) {
668
+ paramInfo.param = param;
669
+ }
670
+ });
671
+ this.traverseChildren((node) => {
672
+ if (node?.concept === 'Identifier') {
673
+ const parentNode = node.parentNode;
674
+ if (
675
+ parentNode?.concept !== 'MemberExpression'
676
+ || (parentNode.parentNode?.concept !== 'MemberExpression' && (parentNode as any).object === node)
677
+ ) {
678
+ if (node) {
679
+ const paramInfo = paramInfoMap.get(node.name);
680
+ if (paramInfo?.param) {
681
+ if (!Array.isArray(paramInfo?.identifiers)) {
682
+ paramInfo.identifiers = [];
683
+ }
684
+ paramInfo.identifiers.push(node);
685
+ }
686
+ }
687
+ }
666
688
  }
667
- }
668
-
669
- this.params.forEach((param) => {
670
- const name = utils.unique(param.name, names);
671
- param.name = name;
672
689
  });
690
+ return paramInfoMap;
673
691
  }
674
692
 
675
693
  //================================================================================
@@ -33,6 +33,13 @@ interface compilerInfoMapProps {
33
33
  js?: { prefix: string };
34
34
  }
35
35
 
36
+ type composeCacheType = {
37
+ [key: string]: composeCacheType,
38
+ } & {
39
+ nodes?: any[];
40
+ };
41
+
42
+
36
43
  //================================================================================
37
44
  // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
38
45
  // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
@@ -3926,6 +3933,116 @@ export class App extends BaseNode {
3926
3933
  @property()
3927
3934
  preferenceMap: Record<string, string> = {};
3928
3935
 
3936
+ /**
3937
+ * 组合节点缓存
3938
+ */
3939
+ composeCache: composeCacheType = {};
3940
+
3941
+
3942
+ /**
3943
+ * 获取组合节点
3944
+ */
3945
+ getCompose(path: string[]) {
3946
+ let compose = this.composeCache;
3947
+ path.forEach((key) => {
3948
+ compose = compose?.[key];
3949
+ });
3950
+ return compose || null;
3951
+ }
3952
+
3953
+ /**
3954
+ * 获取组合节点
3955
+ */
3956
+ getComposeNodes(path: string[]) {
3957
+ let compose = this.composeCache;
3958
+ path.forEach((key) => {
3959
+ compose = compose?.[key];
3960
+ });
3961
+ return compose?.nodes || [];
3962
+ }
3963
+
3964
+ /**
3965
+ * 往组合内添加节点
3966
+ */
3967
+ addComposeNodes(path: string[], node: BaseNode | BaseNode[]) {
3968
+ let compose = this.composeCache;
3969
+ path.forEach((key, index) => {
3970
+ if (index === path.length - 1) {
3971
+ if (compose?.[key]?.nodes) {
3972
+ if (Array.isArray(node)) {
3973
+ compose[key].nodes.push(...node);
3974
+ } else {
3975
+ compose[key].nodes.push(node);
3976
+ }
3977
+ } else {
3978
+ if (!compose?.[key]) {
3979
+ compose[key] = {};
3980
+ }
3981
+ compose[key].nodes = Array.isArray(node) ? node : [node];
3982
+ }
3983
+ } else {
3984
+ if (!compose?.[key]) {
3985
+ compose[key] = {};
3986
+ }
3987
+ compose = compose[key];
3988
+ }
3989
+ });
3990
+ }
3991
+
3992
+ /**
3993
+ * 删除分组, 包括子集
3994
+ */
3995
+ deleteCompose(path: string[]) {
3996
+ if (!Array.isArray(path)) return;
3997
+ let compose = this.composeCache;
3998
+
3999
+ const delNodes = (_compose: composeCacheType) => {
4000
+ if (_compose?.nodes) {
4001
+ for(let key in _compose) {
4002
+ if (key !== 'nodes') {
4003
+ delNodes(_compose[key]);
4004
+ }
4005
+ }
4006
+ _compose.nodes.forEach((node) => {
4007
+ node.delete();
4008
+ })
4009
+ _compose.nodes = [];
4010
+ }
4011
+ }
4012
+
4013
+ this.emit('collect:start', {
4014
+ actionMsg: '删除同一分组节点',
4015
+ });
4016
+ path.forEach((key, index) => {
4017
+ if (index === path.length - 1) {
4018
+ delNodes(compose?.[key]);
4019
+ } else {
4020
+ compose = compose[key];
4021
+ }
4022
+ });
4023
+ this.emit('collect:end');
4024
+ }
4025
+
4026
+ /**
4027
+ * 释放分组内所有节点
4028
+ */
4029
+ releaseComposeNode(path: string[]) {
4030
+ if (!Array.isArray(path)) return;
4031
+ let compose = this.composeCache;
4032
+ path.forEach((key, index) => {
4033
+ if (index === path.length - 1) {
4034
+ const nodes = compose?.[key]?.nodes || [];
4035
+ nodes.forEach((node) => {
4036
+ node.update({
4037
+ composedBy: [],
4038
+ });
4039
+ })
4040
+ } else {
4041
+ compose = compose[key];
4042
+ }
4043
+ });
4044
+ }
4045
+
3929
4046
  /**
3930
4047
  * 获取命名空间
3931
4048
  */
@@ -3998,21 +4115,23 @@ export class App extends BaseNode {
3998
4115
  }
3999
4116
 
4000
4117
  loadPackageInfo(scope: string) {
4001
- const dependencyMap = (window as any).globalData.ideVersionDetail.dependencies;
4118
+ const materialConfig = (window as any).globalData.materialConfig || {};
4119
+ const { framework, ui } = materialConfig;
4120
+
4002
4121
  const packageInfo = {
4003
4122
  template: { name: '', version: '', scope },
4004
4123
  ui: { name: '', version: '', scope },
4005
4124
  scope,
4006
4125
  };
4007
4126
 
4008
- packageInfo.template.name = scope === 'h5' ? '@lcap/mobile-template' : 'lcap-pc-template';
4009
- packageInfo.template.version =
4010
- scope === 'h5' ? dependencyMap.FrontendArchH5.version : dependencyMap.FrontendArchPC.version;
4011
- packageInfo.ui.name = scope === 'h5' ? '@lcap/mobile-ui' : 'cloud-ui.vusion';
4012
- packageInfo.ui.version =
4013
- scope === 'h5'
4014
- ? dependencyMap.FrontendComponentLibraryH5.version
4015
- : dependencyMap.FrontendComponentLibraryPC.version;
4127
+ packageInfo.template.name = scope === 'h5' ? framework.h5 : framework.pc;
4128
+ packageInfo.template.version = framework.version;
4129
+
4130
+ packageInfo.ui.name = scope === 'h5' ? ui.h5.name : ui.pc.name;
4131
+ packageInfo.ui.version = scope === 'h5'
4132
+ ? ui.h5.version
4133
+ : ui.pc.version;
4134
+
4016
4135
  return packageInfo;
4017
4136
  }
4018
4137
 
@@ -4047,21 +4166,13 @@ export class App extends BaseNode {
4047
4166
  `${prefix}/packages/vue@2/dist/vue.min.js`,
4048
4167
  // `${prefix}/packages/vue-router@3/dist/vue-router.min.js`,
4049
4168
 
4050
- scope === 'h5'
4051
- ? `${prefix}/packages/@lcap/mobile-ui@${packageInfo.ui.version}/dist-theme/index.js`
4052
- : `${prefix}/packages/cloud-ui.vusion@${packageInfo.ui.version}/dist-theme/index.js`,
4169
+ `${prefix}/packages/${packageInfo.ui.name}@${packageInfo.ui.version}/dist-theme/index.js`,
4053
4170
 
4054
- scope === 'h5'
4055
- ? `${prefix}/packages/@lcap/mobile-template@${packageInfo.template.version}/cloudAdminDesigner.umd.min.js`
4056
- : `${prefix}/packages/lcap-pc-template@${packageInfo.template.version}/cloudAdminDesigner.umd.min.js`,
4171
+ `${prefix}/packages/${packageInfo.template.name}@${packageInfo.template.version}/cloudAdminDesigner.umd.min.js`,
4057
4172
  ],
4058
4173
  css: [
4059
- scope === 'h5'
4060
- ? `${prefix}/packages/@lcap/mobile-ui@${packageInfo.ui.version}/dist-theme/index.css`
4061
- : `${prefix}/packages/cloud-ui.vusion@${packageInfo.ui.version}/dist-theme/index.css`,
4062
- scope === 'h5'
4063
- ? `${prefix}/packages/@lcap/mobile-template@${packageInfo.template.version}/cloudAdminDesigner.css`
4064
- : `${prefix}/packages/lcap-pc-template@${packageInfo.template.version}/cloudAdminDesigner.css`,
4174
+ `${prefix}/packages/${packageInfo.ui.name}@${packageInfo.ui.version}/dist-theme/index.css`,
4175
+ `${prefix}/packages/${packageInfo.template.name}@${packageInfo.template.version}/cloudAdminDesigner.css`,
4065
4176
  ],
4066
4177
  },
4067
4178
  custom: {
@@ -1080,7 +1080,6 @@ export class BindAttribute extends BaseNode {
1080
1080
  return str;
1081
1081
  }
1082
1082
 
1083
-
1084
1083
  @withSourceMapGenerator
1085
1084
  *toEmbeddedTS(state = createCompilerState()): TranslatorGenerator {
1086
1085
  const self = this;
@@ -774,7 +774,7 @@ export class BindEvent extends BaseNode {
774
774
  let code = '';
775
775
  if (!Object.keys(elementsEventsMap).length) return;
776
776
  // 业务组件
777
- const businessComponent = this.element.correspondingBusinessComponent;
777
+ const businessComponent = this.element?.correspondingBusinessComponent;
778
778
  // 已有的点击事件,已知类型的,就直接取值
779
779
  if (
780
780
  [
@@ -1092,7 +1092,7 @@ export class BindEvent extends BaseNode {
1092
1092
  const newName = this.name.replace(/-/g, '');
1093
1093
  if (asserts.isViewElement(parentNode)) {
1094
1094
  return `${parentNode.name}_${newName}`;
1095
- } else if (asserts.isView(parentNode)) {
1095
+ } else if (asserts.isView(parentNode) || asserts.isBusinessComponent(parentNode)) {
1096
1096
  return `${this.likeComponent.name}_${newName}`;
1097
1097
  } else {
1098
1098
  // 这里编译成这个名字了 后续pctemplate 里也得按这个调用?