@lcap/nasl-concepts 3.9.1-beta.2 → 3.9.1-beta.22

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 (91) hide show
  1. package/out/common/BaseNode.d.ts +11 -3
  2. package/out/common/BaseNode.d.ts.map +1 -1
  3. package/out/common/BaseNode.js +150 -117
  4. package/out/common/BaseNode.js.map +1 -1
  5. package/out/concepts/App__.d.ts +6 -0
  6. package/out/concepts/App__.d.ts.map +1 -1
  7. package/out/concepts/App__.js +12 -0
  8. package/out/concepts/App__.js.map +1 -1
  9. package/out/concepts/AuthLogicForCallInterface__.d.ts.map +1 -1
  10. package/out/concepts/AuthLogicForCallInterface__.js +7 -6
  11. package/out/concepts/AuthLogicForCallInterface__.js.map +1 -1
  12. package/out/concepts/BusinessComponent__.d.ts.map +1 -1
  13. package/out/concepts/BusinessComponent__.js +25 -48
  14. package/out/concepts/BusinessComponent__.js.map +1 -1
  15. package/out/concepts/BusinessLogic__.d.ts.map +1 -1
  16. package/out/concepts/BusinessLogic__.js +16 -14
  17. package/out/concepts/BusinessLogic__.js.map +1 -1
  18. package/out/concepts/CallLogic__.d.ts.map +1 -1
  19. package/out/concepts/CallLogic__.js +6 -4
  20. package/out/concepts/CallLogic__.js.map +1 -1
  21. package/out/concepts/CompletionProperty__.d.ts.map +1 -1
  22. package/out/concepts/CompletionProperty__.js +9 -2
  23. package/out/concepts/CompletionProperty__.js.map +1 -1
  24. package/out/concepts/DataSource__.d.ts +5 -0
  25. package/out/concepts/DataSource__.d.ts.map +1 -1
  26. package/out/concepts/DataSource__.js +20 -5
  27. package/out/concepts/DataSource__.js.map +1 -1
  28. package/out/concepts/FlowConditionItemV2__.js +1 -1
  29. package/out/concepts/FlowConditionItemV2__.js.map +1 -1
  30. package/out/concepts/Identifier__.d.ts.map +1 -1
  31. package/out/concepts/Identifier__.js +1 -1
  32. package/out/concepts/Identifier__.js.map +1 -1
  33. package/out/concepts/Logic__.d.ts.map +1 -1
  34. package/out/concepts/Logic__.js +26 -23
  35. package/out/concepts/Logic__.js.map +1 -1
  36. package/out/concepts/MemberExpression__.js +3 -3
  37. package/out/concepts/MemberExpression__.js.map +1 -1
  38. package/out/concepts/Namespace__.d.ts +1 -0
  39. package/out/concepts/Namespace__.d.ts.map +1 -1
  40. package/out/concepts/Namespace__.js +3 -0
  41. package/out/concepts/Namespace__.js.map +1 -1
  42. package/out/concepts/OverriddenLogic__.d.ts.map +1 -1
  43. package/out/concepts/OverriddenLogic__.js +9 -7
  44. package/out/concepts/OverriddenLogic__.js.map +1 -1
  45. package/out/concepts/Param__.d.ts +1 -1
  46. package/out/concepts/Param__.d.ts.map +1 -1
  47. package/out/concepts/Param__.js +3 -1
  48. package/out/concepts/Param__.js.map +1 -1
  49. package/out/concepts/ProcessComponentV2__.js +1 -1
  50. package/out/concepts/ProcessComponentV2__.js.map +1 -1
  51. package/out/concepts/Process__.js +4 -4
  52. package/out/concepts/Process__.js.map +1 -1
  53. package/out/concepts/Structure__.d.ts +6 -0
  54. package/out/concepts/Structure__.d.ts.map +1 -1
  55. package/out/concepts/Structure__.js +46 -0
  56. package/out/concepts/Structure__.js.map +1 -1
  57. package/out/concepts/SubLogic__.d.ts.map +1 -1
  58. package/out/concepts/SubLogic__.js +29 -22
  59. package/out/concepts/SubLogic__.js.map +1 -1
  60. package/out/concepts/ValidationRule__.d.ts +1 -0
  61. package/out/concepts/ValidationRule__.d.ts.map +1 -1
  62. package/out/concepts/ValidationRule__.js +4 -0
  63. package/out/concepts/ValidationRule__.js.map +1 -1
  64. package/out/concepts/ViewElement__.d.ts +4 -0
  65. package/out/concepts/ViewElement__.d.ts.map +1 -1
  66. package/out/concepts/ViewElement__.js +12 -8
  67. package/out/concepts/ViewElement__.js.map +1 -1
  68. package/out/concepts/View__.d.ts.map +1 -1
  69. package/out/concepts/View__.js +17 -16
  70. package/out/concepts/View__.js.map +1 -1
  71. package/out/decorators/constant.d.ts +50 -4
  72. package/out/decorators/constant.d.ts.map +1 -1
  73. package/out/decorators/constant.js.map +1 -1
  74. package/out/decorators/index.d.ts +5 -2
  75. package/out/decorators/index.d.ts.map +1 -1
  76. package/out/decorators/index.js +75 -26
  77. package/out/decorators/index.js.map +1 -1
  78. package/out/decorators/utils.d.ts +2 -8
  79. package/out/decorators/utils.d.ts.map +1 -1
  80. package/out/decorators/utils.js +12 -14
  81. package/out/decorators/utils.js.map +1 -1
  82. package/out/semantics/semanticData.d.ts +4 -3
  83. package/out/semantics/semanticData.d.ts.map +1 -1
  84. package/out/semantics/semanticData.js +61 -53
  85. package/out/semantics/semanticData.js.map +1 -1
  86. package/out/service/annotation.d.ts.map +1 -1
  87. package/out/service/annotation.js +11 -3
  88. package/out/service/annotation.js.map +1 -1
  89. package/out/service/entity2LogicNamespace.js +1 -1
  90. package/out/service/entity2LogicNamespace.js.map +1 -1
  91. package/package.json +5 -5
@@ -129,6 +129,15 @@ export declare class BaseNode extends EventEmitter {
129
129
  * 当前节点的类型标注
130
130
  */
131
131
  __TypeAnnotation: TypeAnnotation;
132
+ /**
133
+ * 静默模式
134
+ *
135
+ * @description 静默模式下,会屏蔽掉所有节点事件
136
+ * @description 该属性具有传染性,在实例化时,子树根节点是只读,那么其所有子节点都是静默的
137
+ * @description 创建静默实例,可以使用`App.createSilenceApp(data)`
138
+ * @description 现在只会在发布模式下启用
139
+ */
140
+ silence: boolean;
132
141
  /**
133
142
  * 当前节点的类型标注是不是正确的
134
143
  */
@@ -357,9 +366,8 @@ export declare class BaseNode extends EventEmitter {
357
366
  */
358
367
  traverseStrictChildrenStopWhen(cb: (el: SyntaxNode) => void, setStopFlag: (el: SyntaxNode) => boolean, whitelist?: string[]): void;
359
368
  /**
360
- * 迭代所有子节点
361
- * @description 严格迭代所有子节点,排除属性;多函数特化版本,不做额外检查
362
- */
369
+ * @description 并非迭代所有子节点,只迭代 NASL 节点的子节点。排除属性;多函数特化版本,不做额外检查。
370
+ */
363
371
  traverseStrictChildrenDoMultiTasks(tasks: Array<(_: SyntaxNode) => Generator<any, any, any>>, cleanups: Array<(_: SyntaxNode) => Generator<any, any, any>>): Generator<any, any, any>;
364
372
  traverseStrictChildrenOnly(cb: (el: SyntaxNode) => void): void;
365
373
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"BaseNode.d.ts","sourceRoot":"","sources":["../../src/common/BaseNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseNode.d.ts","sourceRoot":"","sources":["../../src/common/BaseNode.ts"],"names":[],"mappings":"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"}
@@ -90,16 +90,18 @@ let BaseNode = class BaseNode extends EventEmitter_1.EventEmitter {
90
90
  */
91
91
  this.parentNode = null;
92
92
  this.parentKey = '';
93
- if (this.hasOwnProperty('JSON_EXCLUDED_KEYS') && this.JSON_EXCLUDED_KEYS === undefined) {
94
- delete this.JSON_EXCLUDED_KEYS;
93
+ if (!source?.silence) {
94
+ if (this.hasOwnProperty('JSON_EXCLUDED_KEYS') && this.JSON_EXCLUDED_KEYS === undefined) {
95
+ delete this.JSON_EXCLUDED_KEYS;
96
+ }
97
+ /**
98
+ * 监听action,delete,update事件
99
+ */
100
+ this.on('create', this.genActionListener);
101
+ this.on('delete', this.genActionListener);
102
+ this.on('update', this.genActionListener);
103
+ this.on('node:Editing', this.nodeEditing);
95
104
  }
96
- /**
97
- * 监听action,delete,update事件
98
- */
99
- this.on('create', this.genActionListener);
100
- this.on('delete', this.genActionListener);
101
- this.on('update', this.genActionListener);
102
- this.on('node:Editing', this.nodeEditing);
103
105
  /**
104
106
  * 调试相关内容只在浏览器端有效
105
107
  */
@@ -110,56 +112,69 @@ let BaseNode = class BaseNode extends EventEmitter_1.EventEmitter {
110
112
  }
111
113
  }
112
114
  subConstructor(source) {
113
- const concept = this.concept || this.constructor.name;
114
- const properties = (0, decorators_1.getConceptProperties)(concept);
115
- const propertyMap = (0, decorators_1.getConceptPropertyMap)(concept);
116
- properties.forEach((key) => {
115
+ const concept = this.concept ?? this.constructor.name;
116
+ const { childProperties, childrenProperties, normalProperties, propertyMap, whitePropertyMap, } = (0, decorators_1.getConceptMeta)(concept);
117
+ // 普通属性迭代
118
+ for (const key of normalProperties) {
117
119
  if (key === 'concept') {
118
- return;
120
+ continue;
119
121
  }
120
- if (source[key] === undefined) {
121
- return;
122
+ const item = source[key];
123
+ if (item === undefined) {
124
+ continue;
122
125
  }
123
- const sourceItem = source[key] !== undefined ? source[key] : this[key];
124
- let property = propertyMap.get(key);
125
- let objectRefCtor;
126
- if (
127
- // 属性存在
128
- sourceItem &&
129
- (
130
- // 全量标注需要的后端标注数据
131
- key === 'typeAnnotation' ||
132
- (
133
- // 测试环境下手动添加的前端标注数据
134
- process.env.NODE_ENV === 'testing' &&
135
- key === '__TypeAnnotation'))) {
136
- property = { objectRef: 'TypeAnnotation' };
137
- }
138
- try {
139
- if (property?.objectRef) {
140
- const arr = property.objectRef.split(' | ');
141
- for (let i = 0; i < arr.length; i++) {
142
- objectRefCtor = (0, decorators_1.getConceptConstructor)(arr[i]);
143
- if (objectRefCtor && sourceItem instanceof objectRefCtor) {
144
- sourceItem.parentNode = this;
145
- sourceItem.parentKey = key;
146
- break;
147
- }
126
+ this[key] = item;
127
+ }
128
+ const getChildInstance = (item, descriptor) => {
129
+ if (descriptor.skipInstantiate ||
130
+ (!item?.concept && !descriptor.compatInstantiate)) {
131
+ return item;
132
+ }
133
+ let Ctor;
134
+ for (const CtorName of descriptor.objectRef) {
135
+ Ctor = (0, decorators_1.getConceptConstructor)(CtorName);
136
+ if (item instanceof Ctor) {
137
+ if (!item.parentNode || !item.parentKey) {
138
+ item.parentNode = this;
139
+ item.parentKey = descriptor.key;
148
140
  }
141
+ return item;
149
142
  }
150
- // 数组的情况也在这里做掉了
151
- const val = objectRefCtor && sourceItem && !(sourceItem instanceof objectRefCtor) ? this.instantiateSub(sourceItem, key) : sourceItem;
152
- if (val !== undefined) {
153
- this[key] = val;
143
+ }
144
+ const sourceItem = source.silence ? { ...item, silence: true } : item;
145
+ const Constructor = (descriptor.compatInstantiate && Ctor?.from) ? Ctor : BaseNode_1;
146
+ return Constructor.from(sourceItem, this, descriptor.key);
147
+ };
148
+ // 子节点迭代
149
+ for (const key of childProperties) {
150
+ const item = source[key];
151
+ if (item === undefined) {
152
+ continue;
153
+ }
154
+ this[key] = getChildInstance(item, propertyMap.get(key) ?? whitePropertyMap.get(key));
155
+ }
156
+ // 数组子节点迭代
157
+ for (const key of childrenProperties) {
158
+ const item = source[key];
159
+ if (item === undefined) {
160
+ continue;
161
+ }
162
+ if (Array.isArray(item)) {
163
+ this[key] = [];
164
+ if (item.length === 0) {
165
+ continue;
154
166
  }
155
167
  }
156
- catch (e) {
157
- // Function has non-object prototype 'undefined' in instanceof check
158
- if (!e.message.includes('Function has non-object prototype'))
159
- throw e;
168
+ else {
169
+ this[key] = item;
170
+ continue;
160
171
  }
161
- });
162
- if (process.env.NODE_ENV !== 'testing') {
172
+ const metaData = propertyMap.get(key) ?? whitePropertyMap.get(key);
173
+ for (const source of item) {
174
+ this[key].push(getChildInstance(source, metaData));
175
+ }
176
+ }
177
+ if (process.env.NODE_ENV !== 'testing' && utils.isBrowser) {
163
178
  nasl_utils_1.breakpoint.operators.create(this);
164
179
  }
165
180
  // node 环境下需要删除当前节点的 concept 属性
@@ -198,7 +213,7 @@ let BaseNode = class BaseNode extends EventEmitter_1.EventEmitter {
198
213
  properties.forEach((key) => {
199
214
  const property = propertyMap.get(key);
200
215
  const sourceItem = this[key];
201
- const objectRefCtor = property.objectRef && (0, decorators_1.getConceptConstructor)(property.objectRef);
216
+ const objectRefCtor = property.objectRef.length === 1 ? (0, decorators_1.getConceptConstructor)(property.objectRef[0]) : undefined;
202
217
  if (objectRefCtor) {
203
218
  if (Array.isArray(sourceItem)) {
204
219
  sourceItem.forEach((item, index) => {
@@ -503,7 +518,7 @@ let BaseNode = class BaseNode extends EventEmitter_1.EventEmitter {
503
518
  const property = propertyMap.get(key);
504
519
  if (property) {
505
520
  const objProperty = object[key] ?? null;
506
- const propertyConcept = property?.objectRef;
521
+ const propertyConcept = property?.objectRef.join(' | ');
507
522
  // 在定义中该属性是否为数组
508
523
  const propertyIsArray = property?.isArray;
509
524
  const propertyDefaultValue = property?.defaultValue;
@@ -546,8 +561,12 @@ let BaseNode = class BaseNode extends EventEmitter_1.EventEmitter {
546
561
  for (const key in object) {
547
562
  const property = propertyMap.get(key);
548
563
  if (property) {
549
- const objProperty = object[key] ?? null;
550
- const propertyConcept = property?.objectRef;
564
+ let objProperty = object[key] ?? null;
565
+ // 减少存储开销
566
+ if (['_aiUID'].includes(key) && !objProperty) {
567
+ objProperty = undefined;
568
+ }
569
+ const propertyConcept = property?.objectRef.join(' | ');
551
570
  // 在定义中该属性是否为数组
552
571
  const propertyIsArray = property?.isArray;
553
572
  const propertyDefaultValue = property?.defaultValue;
@@ -638,7 +657,7 @@ let BaseNode = class BaseNode extends EventEmitter_1.EventEmitter {
638
657
  }
639
658
  static from(source, parentNode, parentKey) {
640
659
  // 有一些继承的情况
641
- const Ctor = (0, decorators_1.getConceptConstructor)(source?.concept) || this;
660
+ const Ctor = (0, decorators_1.getConceptConstructor)(source?.concept) ?? this;
642
661
  if (Ctor && source instanceof Ctor) {
643
662
  if (utils.isDebugMode) {
644
663
  // console.warn('传入的对象已经是一个实例,请确认逻辑是否存在问题!');
@@ -652,27 +671,24 @@ let BaseNode = class BaseNode extends EventEmitter_1.EventEmitter {
652
671
  return source;
653
672
  }
654
673
  if (Ctor) {
655
- const instance = new Ctor();
674
+ /**
675
+ * TODO: 理论上这里的 new 是可以合并后面的 instance.subConstructor 语句的
676
+ * 并且因为很多节点 new 操作里会有默认值,但是这些默认值又会被下面的 source 覆盖掉
677
+ * 所以这里是实际上是多了很多无用的实例化的,可以考虑合并这两个语句,但是不知道为啥
678
+ * 提上来之后,这里实例化的耗时会变成 10 倍,暂且不看了,以后有空再看
679
+ */
680
+ const instance = new Ctor({ silence: source.silence });
656
681
  if (parentNode) {
657
682
  instance.parentNode = parentNode;
658
683
  }
659
684
  if (parentKey) {
660
685
  instance.parentKey = parentKey;
661
686
  }
662
- let concept;
663
- if (source?.concept)
664
- concept = source?.concept;
665
- else if (!Ctor.isAbstract) {
666
- concept = this?.prototype?.concept ?? Ctor.ConceptName ?? Ctor.name;
667
- }
668
- else {
669
- throw new Error('抽象类需要补充 concept!');
670
- }
671
687
  instance.subConstructor({
672
688
  ...source,
673
- concept,
674
689
  parentNode,
675
690
  });
691
+ Ctor.init?.(instance);
676
692
  return instance;
677
693
  }
678
694
  }
@@ -846,7 +862,7 @@ let BaseNode = class BaseNode extends EventEmitter_1.EventEmitter {
846
862
  }
847
863
  if (source && source.concept) {
848
864
  const Ctor = (0, decorators_1.getConceptConstructor)(source.concept);
849
- if (!Ctor.from) {
865
+ if (!Ctor?.from) {
850
866
  return source;
851
867
  }
852
868
  const instance = Ctor.from(source, parentNode, parentKey);
@@ -1324,36 +1340,41 @@ let BaseNode = class BaseNode extends EventEmitter_1.EventEmitter {
1324
1340
  *
1325
1341
  * @description 严格迭代所有子节点!排除属性!
1326
1342
  */
1327
- traverseStrictChildren(cb, whitelist) {
1343
+ traverseStrictChildren(cb, whitelist = []) {
1328
1344
  function traverse(node) {
1329
- if (!node) {
1330
- return;
1331
- }
1332
- if (concepts_1.asserts.isBaseNode(node)) {
1333
- cb(node);
1345
+ const concept = node.concept ?? node.constructor.name;
1346
+ const { childProperties, childrenProperties, } = (0, decorators_1.getConceptMeta)(concept);
1347
+ const traverseChild = (child) => {
1348
+ if (child && concepts_1.asserts.isBaseNode(child)) {
1349
+ cb(child);
1350
+ traverse(child);
1351
+ }
1352
+ };
1353
+ const traverseChildren = (children) => {
1354
+ if (!Array.isArray(children)) {
1355
+ return;
1356
+ }
1357
+ for (const child of children) {
1358
+ traverseChild(child);
1359
+ }
1360
+ };
1361
+ for (const key of childProperties) {
1362
+ traverseChild(node[key]);
1334
1363
  }
1335
- const propertyMap = (0, decorators_1.getConceptPropertyMap)(node?.concept);
1336
- if (!propertyMap) {
1337
- return;
1364
+ for (const key of childrenProperties) {
1365
+ traverseChildren(node[key]);
1338
1366
  }
1339
- const keys = (whitelist && whitelist.length > 0)
1340
- ? Array.from(propertyMap.keys()).concat(whitelist)
1341
- : propertyMap.keys();
1342
- for (const property of keys) {
1343
- const prop = node[property];
1344
- if (!prop) {
1345
- continue;
1346
- }
1347
- else if (Array.isArray(prop)) {
1348
- for (const child of prop) {
1349
- traverse(child);
1350
- }
1367
+ for (const key of whitelist) {
1368
+ const item = node[key];
1369
+ if (Array.isArray(item)) {
1370
+ traverseChildren(item);
1351
1371
  }
1352
1372
  else {
1353
- traverse(prop);
1373
+ traverseChild(item);
1354
1374
  }
1355
1375
  }
1356
1376
  }
1377
+ cb(this);
1357
1378
  traverse(this);
1358
1379
  }
1359
1380
  /**
@@ -1391,37 +1412,43 @@ let BaseNode = class BaseNode extends EventEmitter_1.EventEmitter {
1391
1412
  __traverse(this);
1392
1413
  }
1393
1414
  /**
1394
- * 迭代所有子节点
1395
- * @description 严格迭代所有子节点,排除属性;多函数特化版本,不做额外检查
1396
- */
1415
+ * @description 并非迭代所有子节点,只迭代 NASL 节点的子节点。排除属性;多函数特化版本,不做额外检查。
1416
+ */
1397
1417
  *traverseStrictChildrenDoMultiTasks(tasks, cleanups) {
1398
- function __traverse(nd) {
1399
- if (!concepts_1.asserts.isBaseNode(nd)) {
1400
- return;
1401
- }
1402
- tasks.forEach(task => utils.runGeneratorSync(task(nd)));
1403
- const props = (0, decorators_1.getConceptPropertyMap)(nd?.concept)?.keys();
1404
- if (!props) {
1405
- cleanups.forEach(task => utils.runGeneratorSync(task(nd)));
1406
- return;
1407
- }
1408
- for (const p of props) {
1409
- const child = nd[p];
1410
- if (!child) {
1411
- continue;
1418
+ function* __traverse(nd) {
1419
+ if (concepts_1.asserts.isBaseNode(nd)) {
1420
+ for (const task of tasks) {
1421
+ yield* task(nd);
1412
1422
  }
1413
- else if (Array.isArray(child)) {
1414
- child?.forEach?.((node) => {
1415
- __traverse(node);
1416
- });
1423
+ const props = (0, decorators_1.getConceptPropertyMap)(nd?.concept)?.keys();
1424
+ if (!props) {
1425
+ for (const task of cleanups) {
1426
+ yield* task(nd);
1427
+ }
1417
1428
  }
1418
1429
  else {
1419
- __traverse(child);
1430
+ for (const p of props) {
1431
+ const child = nd[p];
1432
+ if (!child) {
1433
+ continue;
1434
+ }
1435
+ else if (Array.isArray(child)) {
1436
+ for (const node of child) {
1437
+ yield* __traverse(node);
1438
+ }
1439
+ }
1440
+ else {
1441
+ yield* __traverse(child);
1442
+ }
1443
+ }
1444
+ yield;
1445
+ for (const task of cleanups) {
1446
+ yield* task(nd);
1447
+ }
1420
1448
  }
1421
1449
  }
1422
- cleanups.forEach(task => utils.runGeneratorSync(task(nd)));
1423
1450
  }
1424
- __traverse(this);
1451
+ yield* __traverse(this);
1425
1452
  }
1426
1453
  traverseStrictChildrenOnly(cb) {
1427
1454
  function __traverse(node) {
@@ -1643,18 +1670,20 @@ let BaseNode = class BaseNode extends EventEmitter_1.EventEmitter {
1643
1670
  queue.push(this); // 将初始节点加入队列
1644
1671
  let point = 0; // 创建一个指针,指向当前遍历的节点
1645
1672
  while (queue[point]) {
1646
- const node = queue[point]; // 从队列中取出一个节点
1673
+ const node0 = queue[point]; // 从队列中取出一个节点
1674
+ // @ts-ignore
1675
+ const node = node0.__v_raw || node0;
1647
1676
  point++; // 指针后移
1648
1677
  if (node) {
1649
1678
  let result = false;
1650
1679
  if (!containsSelf) {
1651
- result = node !== this && Boolean(node) && pre(node);
1680
+ result = (node !== this && node0 !== this) && Boolean(node) && pre(node);
1652
1681
  }
1653
1682
  else {
1654
1683
  result = Boolean(node) && pre(node);
1655
1684
  }
1656
1685
  if (result) {
1657
- results.push(node); // 如果pre函数返回true,则将节点添加到结果数组
1686
+ results.push(node0); // 如果pre函数返回true,则将节点添加到结果数组
1658
1687
  continue; // 继续下一次循环,继续遍历同层级的其他节点
1659
1688
  }
1660
1689
  const propertyMap = (0, decorators_1.getConceptPropertyMap)(node?.concept);
@@ -1856,6 +1885,10 @@ __decorate([
1856
1885
  __decorate([
1857
1886
  (0, decorators_1.excludedInJSON)()
1858
1887
  ], BaseNode.prototype, "__TypeAnnotation", void 0);
1888
+ __decorate([
1889
+ (0, decorators_1.whiteProperty)(),
1890
+ (0, decorators_1.excludedInJSON)()
1891
+ ], BaseNode.prototype, "silence", void 0);
1859
1892
  __decorate([
1860
1893
  (0, decorators_1.excludedInJSON)()
1861
1894
  ], BaseNode.prototype, "__isCorrectTypeAnnotation", void 0);