@lcap/nasl-concepts 3.9.1-beta.16 → 3.9.1-beta.18
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.
- package/out/common/BaseNode.d.ts +11 -3
- package/out/common/BaseNode.d.ts.map +1 -1
- package/out/common/BaseNode.js +146 -113
- package/out/common/BaseNode.js.map +1 -1
- package/out/concepts/App__.d.ts +6 -0
- package/out/concepts/App__.d.ts.map +1 -1
- package/out/concepts/App__.js +12 -0
- package/out/concepts/App__.js.map +1 -1
- package/out/concepts/CallLogic__.d.ts.map +1 -1
- package/out/concepts/CallLogic__.js +6 -4
- package/out/concepts/CallLogic__.js.map +1 -1
- package/out/concepts/CompletionProperty__.d.ts.map +1 -1
- package/out/concepts/CompletionProperty__.js +9 -2
- package/out/concepts/CompletionProperty__.js.map +1 -1
- package/out/concepts/FlowConditionItemV2__.js +1 -1
- package/out/concepts/FlowConditionItemV2__.js.map +1 -1
- package/out/concepts/MemberExpression__.js +3 -3
- package/out/concepts/MemberExpression__.js.map +1 -1
- package/out/concepts/Param__.d.ts +1 -1
- package/out/concepts/Param__.d.ts.map +1 -1
- package/out/concepts/Param__.js +3 -1
- package/out/concepts/Param__.js.map +1 -1
- package/out/concepts/ProcessComponentV2__.js +1 -1
- package/out/concepts/ProcessComponentV2__.js.map +1 -1
- package/out/concepts/ViewElement__.d.ts +4 -0
- package/out/concepts/ViewElement__.d.ts.map +1 -1
- package/out/concepts/ViewElement__.js +12 -8
- package/out/concepts/ViewElement__.js.map +1 -1
- package/out/decorators/constant.d.ts +41 -4
- package/out/decorators/constant.d.ts.map +1 -1
- package/out/decorators/constant.js.map +1 -1
- package/out/decorators/index.d.ts +5 -2
- package/out/decorators/index.d.ts.map +1 -1
- package/out/decorators/index.js +47 -24
- package/out/decorators/index.js.map +1 -1
- package/out/decorators/utils.d.ts +2 -8
- package/out/decorators/utils.d.ts.map +1 -1
- package/out/decorators/utils.js +12 -14
- package/out/decorators/utils.js.map +1 -1
- package/out/semantics/semanticData.d.ts.map +1 -1
- package/out/semantics/semanticData.js +15 -15
- package/out/semantics/semanticData.js.map +1 -1
- package/out/service/annotation.d.ts.map +1 -1
- package/out/service/annotation.js +9 -1
- package/out/service/annotation.js.map +1 -1
- package/package.json +5 -5
package/out/common/BaseNode.d.ts
CHANGED
|
@@ -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
|
-
|
|
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":"AAKA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"BaseNode.d.ts","sourceRoot":"","sources":["../../src/common/BaseNode.ts"],"names":[],"mappings":"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"}
|
package/out/common/BaseNode.js
CHANGED
|
@@ -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 (
|
|
94
|
-
|
|
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,75 @@ let BaseNode = class BaseNode extends EventEmitter_1.EventEmitter {
|
|
|
110
112
|
}
|
|
111
113
|
}
|
|
112
114
|
subConstructor(source) {
|
|
113
|
-
const concept = this.concept
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
|
|
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
|
-
|
|
120
|
+
continue;
|
|
119
121
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
+
const item = source[key];
|
|
123
|
+
if (item === undefined) {
|
|
124
|
+
continue;
|
|
122
125
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
if (
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
(
|
|
133
|
-
|
|
134
|
-
|
|
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.needInstance) {
|
|
130
|
+
return item;
|
|
131
|
+
}
|
|
132
|
+
for (const CtorName of descriptor.objectRef) {
|
|
133
|
+
const Ctor = (0, decorators_1.getConceptConstructor)(CtorName);
|
|
134
|
+
if (item instanceof Ctor) {
|
|
135
|
+
if (!item.parentNode || !item.parentKey) {
|
|
136
|
+
item.parentNode = this;
|
|
137
|
+
item.parentKey = descriptor.key;
|
|
148
138
|
}
|
|
139
|
+
return item;
|
|
149
140
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
141
|
+
}
|
|
142
|
+
return source.silence
|
|
143
|
+
? BaseNode_1.from({ ...item, silence: true }, this, descriptor.key)
|
|
144
|
+
: BaseNode_1.from(item, this, descriptor.key);
|
|
145
|
+
};
|
|
146
|
+
// 子节点迭代
|
|
147
|
+
for (const key of childProperties) {
|
|
148
|
+
const item = source[key];
|
|
149
|
+
if (item === undefined) {
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
if (item?.concept) {
|
|
153
|
+
this[key] = getChildInstance(item, propertyMap.get(key) ?? whitePropertyMap.get(key));
|
|
154
|
+
}
|
|
155
|
+
// 非法值或者是无效值覆盖掉原始的默认值
|
|
156
|
+
else {
|
|
157
|
+
this[key] = item;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// 数组子节点迭代
|
|
161
|
+
for (const key of childrenProperties) {
|
|
162
|
+
const item = source[key];
|
|
163
|
+
if (item === undefined) {
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
if (Array.isArray(item)) {
|
|
167
|
+
this[key] = [];
|
|
168
|
+
if (item.length === 0) {
|
|
169
|
+
continue;
|
|
154
170
|
}
|
|
155
171
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
172
|
+
else {
|
|
173
|
+
this[key] = item;
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
const metaData = propertyMap.get(key) ?? whitePropertyMap.get(key);
|
|
177
|
+
for (const source of item) {
|
|
178
|
+
if (source?.concept) {
|
|
179
|
+
this[key].push(getChildInstance(source, metaData));
|
|
180
|
+
}
|
|
160
181
|
}
|
|
161
|
-
}
|
|
162
|
-
if (process.env.NODE_ENV !== 'testing') {
|
|
182
|
+
}
|
|
183
|
+
if (process.env.NODE_ENV !== 'testing' && utils.isBrowser) {
|
|
163
184
|
nasl_utils_1.breakpoint.operators.create(this);
|
|
164
185
|
}
|
|
165
186
|
// node 环境下需要删除当前节点的 concept 属性
|
|
@@ -198,7 +219,7 @@ let BaseNode = class BaseNode extends EventEmitter_1.EventEmitter {
|
|
|
198
219
|
properties.forEach((key) => {
|
|
199
220
|
const property = propertyMap.get(key);
|
|
200
221
|
const sourceItem = this[key];
|
|
201
|
-
const objectRefCtor = property.objectRef
|
|
222
|
+
const objectRefCtor = property.objectRef.length === 1 ? (0, decorators_1.getConceptConstructor)(property.objectRef[0]) : undefined;
|
|
202
223
|
if (objectRefCtor) {
|
|
203
224
|
if (Array.isArray(sourceItem)) {
|
|
204
225
|
sourceItem.forEach((item, index) => {
|
|
@@ -503,7 +524,7 @@ let BaseNode = class BaseNode extends EventEmitter_1.EventEmitter {
|
|
|
503
524
|
const property = propertyMap.get(key);
|
|
504
525
|
if (property) {
|
|
505
526
|
const objProperty = object[key] ?? null;
|
|
506
|
-
const propertyConcept = property?.objectRef;
|
|
527
|
+
const propertyConcept = property?.objectRef.join(' | ');
|
|
507
528
|
// 在定义中该属性是否为数组
|
|
508
529
|
const propertyIsArray = property?.isArray;
|
|
509
530
|
const propertyDefaultValue = property?.defaultValue;
|
|
@@ -547,7 +568,7 @@ let BaseNode = class BaseNode extends EventEmitter_1.EventEmitter {
|
|
|
547
568
|
const property = propertyMap.get(key);
|
|
548
569
|
if (property) {
|
|
549
570
|
const objProperty = object[key] ?? null;
|
|
550
|
-
const propertyConcept = property?.objectRef;
|
|
571
|
+
const propertyConcept = property?.objectRef.join(' | ');
|
|
551
572
|
// 在定义中该属性是否为数组
|
|
552
573
|
const propertyIsArray = property?.isArray;
|
|
553
574
|
const propertyDefaultValue = property?.defaultValue;
|
|
@@ -638,7 +659,7 @@ let BaseNode = class BaseNode extends EventEmitter_1.EventEmitter {
|
|
|
638
659
|
}
|
|
639
660
|
static from(source, parentNode, parentKey) {
|
|
640
661
|
// 有一些继承的情况
|
|
641
|
-
const Ctor = (0, decorators_1.getConceptConstructor)(source?.concept)
|
|
662
|
+
const Ctor = (0, decorators_1.getConceptConstructor)(source?.concept) ?? this;
|
|
642
663
|
if (Ctor && source instanceof Ctor) {
|
|
643
664
|
if (utils.isDebugMode) {
|
|
644
665
|
// console.warn('传入的对象已经是一个实例,请确认逻辑是否存在问题!');
|
|
@@ -652,27 +673,24 @@ let BaseNode = class BaseNode extends EventEmitter_1.EventEmitter {
|
|
|
652
673
|
return source;
|
|
653
674
|
}
|
|
654
675
|
if (Ctor) {
|
|
655
|
-
|
|
676
|
+
/**
|
|
677
|
+
* TODO: 理论上这里的 new 是可以合并后面的 instance.subConstructor 语句的
|
|
678
|
+
* 并且因为很多节点 new 操作里会有默认值,但是这些默认值又会被下面的 source 覆盖掉
|
|
679
|
+
* 所以这里是实际上是多了很多无用的实例化的,可以考虑合并这两个语句,但是不知道为啥
|
|
680
|
+
* 提上来之后,这里实例化的耗时会变成 10 倍,暂且不看了,以后有空再看
|
|
681
|
+
*/
|
|
682
|
+
const instance = new Ctor({ silence: source.silence });
|
|
656
683
|
if (parentNode) {
|
|
657
684
|
instance.parentNode = parentNode;
|
|
658
685
|
}
|
|
659
686
|
if (parentKey) {
|
|
660
687
|
instance.parentKey = parentKey;
|
|
661
688
|
}
|
|
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
689
|
instance.subConstructor({
|
|
672
690
|
...source,
|
|
673
|
-
concept,
|
|
674
691
|
parentNode,
|
|
675
692
|
});
|
|
693
|
+
Ctor.init?.(instance);
|
|
676
694
|
return instance;
|
|
677
695
|
}
|
|
678
696
|
}
|
|
@@ -846,7 +864,7 @@ let BaseNode = class BaseNode extends EventEmitter_1.EventEmitter {
|
|
|
846
864
|
}
|
|
847
865
|
if (source && source.concept) {
|
|
848
866
|
const Ctor = (0, decorators_1.getConceptConstructor)(source.concept);
|
|
849
|
-
if (!Ctor
|
|
867
|
+
if (!Ctor?.from) {
|
|
850
868
|
return source;
|
|
851
869
|
}
|
|
852
870
|
const instance = Ctor.from(source, parentNode, parentKey);
|
|
@@ -1324,36 +1342,41 @@ let BaseNode = class BaseNode extends EventEmitter_1.EventEmitter {
|
|
|
1324
1342
|
*
|
|
1325
1343
|
* @description 严格迭代所有子节点!排除属性!
|
|
1326
1344
|
*/
|
|
1327
|
-
traverseStrictChildren(cb, whitelist) {
|
|
1345
|
+
traverseStrictChildren(cb, whitelist = []) {
|
|
1328
1346
|
function traverse(node) {
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1347
|
+
const concept = node.concept ?? node.constructor.name;
|
|
1348
|
+
const { childProperties, childrenProperties, } = (0, decorators_1.getConceptMeta)(concept);
|
|
1349
|
+
const traverseChild = (child) => {
|
|
1350
|
+
if (child && concepts_1.asserts.isBaseNode(child)) {
|
|
1351
|
+
cb(child);
|
|
1352
|
+
traverse(child);
|
|
1353
|
+
}
|
|
1354
|
+
};
|
|
1355
|
+
const traverseChildren = (children) => {
|
|
1356
|
+
if (!Array.isArray(children)) {
|
|
1357
|
+
return;
|
|
1358
|
+
}
|
|
1359
|
+
for (const child of children) {
|
|
1360
|
+
traverseChild(child);
|
|
1361
|
+
}
|
|
1362
|
+
};
|
|
1363
|
+
for (const key of childProperties) {
|
|
1364
|
+
traverseChild(node[key]);
|
|
1334
1365
|
}
|
|
1335
|
-
const
|
|
1336
|
-
|
|
1337
|
-
return;
|
|
1366
|
+
for (const key of childrenProperties) {
|
|
1367
|
+
traverseChildren(node[key]);
|
|
1338
1368
|
}
|
|
1339
|
-
const
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
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
|
-
}
|
|
1369
|
+
for (const key of whitelist) {
|
|
1370
|
+
const item = node[key];
|
|
1371
|
+
if (Array.isArray(item)) {
|
|
1372
|
+
traverseChildren(item);
|
|
1351
1373
|
}
|
|
1352
1374
|
else {
|
|
1353
|
-
|
|
1375
|
+
traverseChild(item);
|
|
1354
1376
|
}
|
|
1355
1377
|
}
|
|
1356
1378
|
}
|
|
1379
|
+
cb(this);
|
|
1357
1380
|
traverse(this);
|
|
1358
1381
|
}
|
|
1359
1382
|
/**
|
|
@@ -1391,37 +1414,43 @@ let BaseNode = class BaseNode extends EventEmitter_1.EventEmitter {
|
|
|
1391
1414
|
__traverse(this);
|
|
1392
1415
|
}
|
|
1393
1416
|
/**
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
*/
|
|
1417
|
+
* @description 并非迭代所有子节点,只迭代 NASL 节点的子节点。排除属性;多函数特化版本,不做额外检查。
|
|
1418
|
+
*/
|
|
1397
1419
|
*traverseStrictChildrenDoMultiTasks(tasks, cleanups) {
|
|
1398
|
-
function __traverse(nd) {
|
|
1399
|
-
if (
|
|
1400
|
-
|
|
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;
|
|
1420
|
+
function* __traverse(nd) {
|
|
1421
|
+
if (concepts_1.asserts.isBaseNode(nd)) {
|
|
1422
|
+
for (const task of tasks) {
|
|
1423
|
+
yield* task(nd);
|
|
1412
1424
|
}
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1425
|
+
const props = (0, decorators_1.getConceptPropertyMap)(nd?.concept)?.keys();
|
|
1426
|
+
if (!props) {
|
|
1427
|
+
for (const task of cleanups) {
|
|
1428
|
+
yield* task(nd);
|
|
1429
|
+
}
|
|
1417
1430
|
}
|
|
1418
1431
|
else {
|
|
1419
|
-
|
|
1432
|
+
for (const p of props) {
|
|
1433
|
+
const child = nd[p];
|
|
1434
|
+
if (!child) {
|
|
1435
|
+
continue;
|
|
1436
|
+
}
|
|
1437
|
+
else if (Array.isArray(child)) {
|
|
1438
|
+
for (const node of child) {
|
|
1439
|
+
yield* __traverse(node);
|
|
1440
|
+
}
|
|
1441
|
+
}
|
|
1442
|
+
else {
|
|
1443
|
+
yield* __traverse(child);
|
|
1444
|
+
}
|
|
1445
|
+
}
|
|
1446
|
+
yield;
|
|
1447
|
+
for (const task of cleanups) {
|
|
1448
|
+
yield* task(nd);
|
|
1449
|
+
}
|
|
1420
1450
|
}
|
|
1421
1451
|
}
|
|
1422
|
-
cleanups.forEach(task => utils.runGeneratorSync(task(nd)));
|
|
1423
1452
|
}
|
|
1424
|
-
__traverse(this);
|
|
1453
|
+
yield* __traverse(this);
|
|
1425
1454
|
}
|
|
1426
1455
|
traverseStrictChildrenOnly(cb) {
|
|
1427
1456
|
function __traverse(node) {
|
|
@@ -1858,6 +1887,10 @@ __decorate([
|
|
|
1858
1887
|
__decorate([
|
|
1859
1888
|
(0, decorators_1.excludedInJSON)()
|
|
1860
1889
|
], BaseNode.prototype, "__TypeAnnotation", void 0);
|
|
1890
|
+
__decorate([
|
|
1891
|
+
(0, decorators_1.whiteProperty)(),
|
|
1892
|
+
(0, decorators_1.excludedInJSON)()
|
|
1893
|
+
], BaseNode.prototype, "silence", void 0);
|
|
1861
1894
|
__decorate([
|
|
1862
1895
|
(0, decorators_1.excludedInJSON)()
|
|
1863
1896
|
], BaseNode.prototype, "__isCorrectTypeAnnotation", void 0);
|