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