@lcap/nasl-concepts 4.4.0-beta.14 → 4.4.0-beta.15

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.
@@ -28,13 +28,33 @@ export declare class BaseNode extends EventEmitter {
28
28
  */
29
29
  get concept(): string;
30
30
  /**
31
- * toJSON 时需要去除的键,为了避免出现 CircularJSON
31
+ * BaseNode 基础排除键(所有节点类型共享)
32
32
  */
33
- readonly JSON_EXCLUDED_KEYS: Set<string>;
33
+ static readonly BASE_JSON_EXCLUDED_KEYS: Set<string>;
34
+ /**
35
+ * 按类缓存的 JSON_EXCLUDED_KEYS
36
+ * 每个节点类型都有自己的 Set,但延迟初始化以节省内存
37
+ */
38
+ private static _classExcludedKeysCache;
39
+ /**
40
+ * 获取 JSON_EXCLUDED_KEYS
41
+ *
42
+ * 优化策略:
43
+ * 1. 每个节点类型(类)维护自己的 JSON_EXCLUDED_KEYS Set
44
+ * 2. 使用 WeakMap 缓存,避免重复创建
45
+ * 3. 合并 BaseNode 基础键和类特定的键
46
+ *
47
+ * 注意:excludedInJSON 装饰器会在类原型上设置 JSON_EXCLUDED_KEYS,
48
+ * 我们需要合并这些键和基础键。
49
+ */
50
+ get JSON_EXCLUDED_KEYS(): Set<string>;
34
51
  /**
35
52
  * 唯一 Id
53
+ * 延迟生成:只有访问时才创建,节省内存
36
54
  */
37
- id: string;
55
+ private _id?;
56
+ get id(): string;
57
+ set id(value: string);
38
58
  /**
39
59
  * 用于AI指标的uuid
40
60
  */
@@ -61,56 +81,71 @@ export declare class BaseNode extends EventEmitter {
61
81
  */
62
82
  parentNode: SyntaxNode;
63
83
  parentKey: string;
84
+ /**
85
+ * UI 状态位标志
86
+ * 使用一个 number(4 bytes)存储所有 UI 状态布尔值,节省内存
87
+ */
88
+ private _uiFlags;
64
89
  /**
65
90
  * 是否正在编辑
66
91
  * 前端 UI 状态
67
92
  */
68
- editable: boolean;
93
+ get editable(): boolean;
94
+ set editable(value: boolean);
69
95
  /**
70
96
  * 是否可以删除
71
97
  * 前端 UI 状态
72
98
  */
73
- removable: boolean;
99
+ get removable(): boolean;
100
+ set removable(value: boolean);
74
101
  /**
75
102
  * 是否正在请求
76
103
  * 前端 UI 状态
77
104
  */
78
- loading: boolean;
105
+ get loading(): boolean;
106
+ set loading(value: boolean);
79
107
  /**
80
108
  * 节点是否为展开状态
81
109
  * 前端 UI 状态
82
110
  */
83
- expanded: boolean;
111
+ get expanded(): boolean;
112
+ set expanded(value: boolean);
84
113
  /**
85
114
  * 节点是否显示
86
115
  * 前端 UI 状态
87
116
  */
88
- hidden: boolean;
117
+ get hidden(): boolean;
118
+ set hidden(value: boolean);
89
119
  /**
90
120
  * 页面树节点是否显示
91
121
  * 前端 UI 状态
92
122
  */
93
- pageTreeNodeHidden: boolean;
123
+ get pageTreeNodeHidden(): boolean;
124
+ set pageTreeNodeHidden(value: boolean);
94
125
  /**
95
126
  * 逻辑树节点是否显示
96
127
  * 前端 UI 状态
97
128
  */
98
- logicTreeNodeHidden: boolean;
129
+ get logicTreeNodeHidden(): boolean;
130
+ set logicTreeNodeHidden(value: boolean);
99
131
  /**
100
132
  * 数据树节点是否显示
101
133
  * 前端 UI 状态
102
134
  */
103
- dataTreeNodeHidden: boolean;
135
+ get dataTreeNodeHidden(): boolean;
136
+ set dataTreeNodeHidden(value: boolean);
104
137
  /**
105
- * 数据树节点是否显示
106
- * 前端 UI 状态
107
- */
108
- processTreeNodeHidden: boolean;
138
+ * 流程树节点是否显示
139
+ * 前端 UI 状态
140
+ */
141
+ get processTreeNodeHidden(): boolean;
142
+ set processTreeNodeHidden(value: boolean);
109
143
  /**
110
- * 数据树节点是否展开
144
+ * 逻辑树节点是否展开
111
145
  * 前端 UI 状态
112
146
  */
113
- logicTreeNodeExpanded: boolean;
147
+ get logicTreeNodeExpanded(): boolean;
148
+ set logicTreeNodeExpanded(value: boolean);
114
149
  /**
115
150
  * 用于挂 embeddedTS 的 sourceMap
116
151
  */
@@ -119,7 +154,8 @@ export declare class BaseNode extends EventEmitter {
119
154
  * 是否为叶子节点
120
155
  * 前端 UI 状态
121
156
  */
122
- isLeaf: boolean;
157
+ get isLeaf(): boolean;
158
+ set isLeaf(value: boolean);
123
159
  storageJSON: any;
124
160
  /**
125
161
  * 当前节点上报错详细信息
@@ -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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"}
@@ -55,6 +55,23 @@ function assertAppOrModule(node) {
55
55
  throw new Error(`App、Module 节点断言失败`);
56
56
  }
57
57
  }
58
+ /**
59
+ * UI 状态位标志定义
60
+ * 使用一个 number(4 bytes)存储多个布尔值,节省内存
61
+ */
62
+ const UI_FLAGS = {
63
+ EDITABLE: 1 << 0, // 0x0001
64
+ REMOVABLE: 1 << 1, // 0x0002
65
+ LOADING: 1 << 2, // 0x0004
66
+ EXPANDED: 1 << 3, // 0x0008
67
+ HIDDEN: 1 << 4, // 0x0010
68
+ PAGE_TREE_NODE_HIDDEN: 1 << 5, // 0x0020
69
+ LOGIC_TREE_NODE_HIDDEN: 1 << 6, // 0x0040
70
+ DATA_TREE_NODE_HIDDEN: 1 << 7, // 0x0080
71
+ PROCESS_TREE_NODE_HIDDEN: 1 << 8, // 0x0100
72
+ LOGIC_TREE_NODE_EXPANDED: 1 << 9, // 0x0200
73
+ IS_LEAF: 1 << 10, // 0x0400
74
+ };
58
75
  /**
59
76
  * 顶点类
60
77
  * 属性均为只读,仅在初始化和 load 的情况下可以修改
@@ -68,6 +85,218 @@ class BaseNode extends EventEmitter_1.EventEmitter {
68
85
  get concept() {
69
86
  return this._concept ?? this.constructor.ConceptName;
70
87
  }
88
+ /**
89
+ * BaseNode 基础排除键(所有节点类型共享)
90
+ */
91
+ static { this.BASE_JSON_EXCLUDED_KEYS = new Set([
92
+ '_mutable',
93
+ '_concept',
94
+ 'editable',
95
+ 'removable',
96
+ 'loading',
97
+ 'expanded',
98
+ 'hidden',
99
+ 'pageTreeNodeHidden',
100
+ 'logicTreeNodeHidden',
101
+ 'dataTreeNodeHidden',
102
+ 'processTreeNodeHidden',
103
+ 'logicTreeNodeExpanded',
104
+ 'isLeaf',
105
+ 'sourceMap',
106
+ 'storageJSON',
107
+ 'parentNode',
108
+ 'parentKey',
109
+ '__TypeAnnotation',
110
+ '__isCorrectTypeAnnotation',
111
+ 'breakpoint',
112
+ 'tsErrorDetail',
113
+ '__editing',
114
+ '_refCount',
115
+ '_aiUID',
116
+ '_changedTime',
117
+ 'changedTime',
118
+ 'branchName',
119
+ 'workingCopy',
120
+ 'branch',
121
+ 'silence',
122
+ ]); }
123
+ /**
124
+ * 按类缓存的 JSON_EXCLUDED_KEYS
125
+ * 每个节点类型都有自己的 Set,但延迟初始化以节省内存
126
+ */
127
+ static { this._classExcludedKeysCache = new WeakMap(); }
128
+ /**
129
+ * 获取 JSON_EXCLUDED_KEYS
130
+ *
131
+ * 优化策略:
132
+ * 1. 每个节点类型(类)维护自己的 JSON_EXCLUDED_KEYS Set
133
+ * 2. 使用 WeakMap 缓存,避免重复创建
134
+ * 3. 合并 BaseNode 基础键和类特定的键
135
+ *
136
+ * 注意:excludedInJSON 装饰器会在类原型上设置 JSON_EXCLUDED_KEYS,
137
+ * 我们需要合并这些键和基础键。
138
+ */
139
+ get JSON_EXCLUDED_KEYS() {
140
+ const constructor = this.constructor;
141
+ // 检查缓存
142
+ let excludedKeys = BaseNode._classExcludedKeysCache.get(constructor);
143
+ if (excludedKeys) {
144
+ return excludedKeys;
145
+ }
146
+ // 创建新的 Set,合并基础键和类特定的键
147
+ excludedKeys = new Set(BaseNode.BASE_JSON_EXCLUDED_KEYS);
148
+ // 合并类原型上通过装饰器添加的键
149
+ const prototypeKeys = constructor.JSON_EXCLUDED_KEYS;
150
+ if (prototypeKeys && prototypeKeys instanceof Set) {
151
+ prototypeKeys.forEach((key) => {
152
+ excludedKeys.add(key);
153
+ });
154
+ }
155
+ // 缓存结果
156
+ BaseNode._classExcludedKeysCache.set(constructor, excludedKeys);
157
+ return excludedKeys;
158
+ }
159
+ get id() {
160
+ if (!this._id) {
161
+ this._id = (0, nasl_utils_1.createUUID)();
162
+ }
163
+ return this._id;
164
+ }
165
+ set id(value) {
166
+ this._id = value;
167
+ }
168
+ /**
169
+ * 是否正在编辑
170
+ * 前端 UI 状态
171
+ */
172
+ get editable() {
173
+ return !!(this._uiFlags & UI_FLAGS.EDITABLE);
174
+ }
175
+ set editable(value) {
176
+ this._uiFlags = value
177
+ ? (this._uiFlags | UI_FLAGS.EDITABLE)
178
+ : (this._uiFlags & ~UI_FLAGS.EDITABLE);
179
+ }
180
+ /**
181
+ * 是否可以删除
182
+ * 前端 UI 状态
183
+ */
184
+ get removable() {
185
+ return !!(this._uiFlags & UI_FLAGS.REMOVABLE);
186
+ }
187
+ set removable(value) {
188
+ this._uiFlags = value
189
+ ? (this._uiFlags | UI_FLAGS.REMOVABLE)
190
+ : (this._uiFlags & ~UI_FLAGS.REMOVABLE);
191
+ }
192
+ /**
193
+ * 是否正在请求
194
+ * 前端 UI 状态
195
+ */
196
+ get loading() {
197
+ return !!(this._uiFlags & UI_FLAGS.LOADING);
198
+ }
199
+ set loading(value) {
200
+ this._uiFlags = value
201
+ ? (this._uiFlags | UI_FLAGS.LOADING)
202
+ : (this._uiFlags & ~UI_FLAGS.LOADING);
203
+ }
204
+ /**
205
+ * 节点是否为展开状态
206
+ * 前端 UI 状态
207
+ */
208
+ get expanded() {
209
+ return !!(this._uiFlags & UI_FLAGS.EXPANDED);
210
+ }
211
+ set expanded(value) {
212
+ this._uiFlags = value
213
+ ? (this._uiFlags | UI_FLAGS.EXPANDED)
214
+ : (this._uiFlags & ~UI_FLAGS.EXPANDED);
215
+ }
216
+ /**
217
+ * 节点是否显示
218
+ * 前端 UI 状态
219
+ */
220
+ get hidden() {
221
+ return !!(this._uiFlags & UI_FLAGS.HIDDEN);
222
+ }
223
+ set hidden(value) {
224
+ this._uiFlags = value
225
+ ? (this._uiFlags | UI_FLAGS.HIDDEN)
226
+ : (this._uiFlags & ~UI_FLAGS.HIDDEN);
227
+ }
228
+ /**
229
+ * 页面树节点是否显示
230
+ * 前端 UI 状态
231
+ */
232
+ get pageTreeNodeHidden() {
233
+ return !!(this._uiFlags & UI_FLAGS.PAGE_TREE_NODE_HIDDEN);
234
+ }
235
+ set pageTreeNodeHidden(value) {
236
+ this._uiFlags = value
237
+ ? (this._uiFlags | UI_FLAGS.PAGE_TREE_NODE_HIDDEN)
238
+ : (this._uiFlags & ~UI_FLAGS.PAGE_TREE_NODE_HIDDEN);
239
+ }
240
+ /**
241
+ * 逻辑树节点是否显示
242
+ * 前端 UI 状态
243
+ */
244
+ get logicTreeNodeHidden() {
245
+ return !!(this._uiFlags & UI_FLAGS.LOGIC_TREE_NODE_HIDDEN);
246
+ }
247
+ set logicTreeNodeHidden(value) {
248
+ this._uiFlags = value
249
+ ? (this._uiFlags | UI_FLAGS.LOGIC_TREE_NODE_HIDDEN)
250
+ : (this._uiFlags & ~UI_FLAGS.LOGIC_TREE_NODE_HIDDEN);
251
+ }
252
+ /**
253
+ * 数据树节点是否显示
254
+ * 前端 UI 状态
255
+ */
256
+ get dataTreeNodeHidden() {
257
+ return !!(this._uiFlags & UI_FLAGS.DATA_TREE_NODE_HIDDEN);
258
+ }
259
+ set dataTreeNodeHidden(value) {
260
+ this._uiFlags = value
261
+ ? (this._uiFlags | UI_FLAGS.DATA_TREE_NODE_HIDDEN)
262
+ : (this._uiFlags & ~UI_FLAGS.DATA_TREE_NODE_HIDDEN);
263
+ }
264
+ /**
265
+ * 流程树节点是否显示
266
+ * 前端 UI 状态
267
+ */
268
+ get processTreeNodeHidden() {
269
+ return !!(this._uiFlags & UI_FLAGS.PROCESS_TREE_NODE_HIDDEN);
270
+ }
271
+ set processTreeNodeHidden(value) {
272
+ this._uiFlags = value
273
+ ? (this._uiFlags | UI_FLAGS.PROCESS_TREE_NODE_HIDDEN)
274
+ : (this._uiFlags & ~UI_FLAGS.PROCESS_TREE_NODE_HIDDEN);
275
+ }
276
+ /**
277
+ * 逻辑树节点是否展开
278
+ * 前端 UI 状态
279
+ */
280
+ get logicTreeNodeExpanded() {
281
+ return !!(this._uiFlags & UI_FLAGS.LOGIC_TREE_NODE_EXPANDED);
282
+ }
283
+ set logicTreeNodeExpanded(value) {
284
+ this._uiFlags = value
285
+ ? (this._uiFlags | UI_FLAGS.LOGIC_TREE_NODE_EXPANDED)
286
+ : (this._uiFlags & ~UI_FLAGS.LOGIC_TREE_NODE_EXPANDED);
287
+ }
288
+ /**
289
+ * 是否为叶子节点
290
+ * 前端 UI 状态
291
+ */
292
+ get isLeaf() {
293
+ return !!(this._uiFlags & UI_FLAGS.IS_LEAF);
294
+ }
295
+ set isLeaf(value) {
296
+ this._uiFlags = value
297
+ ? (this._uiFlags | UI_FLAGS.IS_LEAF)
298
+ : (this._uiFlags & ~UI_FLAGS.IS_LEAF);
299
+ }
71
300
  /**
72
301
  * @param source 需要合并的部分参数
73
302
  */
@@ -78,10 +307,6 @@ class BaseNode extends EventEmitter_1.EventEmitter {
78
307
  * 标记在构造函数结束后是否可修改
79
308
  */
80
309
  this._mutable = true;
81
- /**
82
- * 唯一 Id
83
- */
84
- this.id = utils.uuidv4().replace(/-/g, '');
85
310
  /**
86
311
  * 用于AI指标的uuid
87
312
  */
@@ -91,10 +316,12 @@ class BaseNode extends EventEmitter_1.EventEmitter {
91
316
  */
92
317
  this.parentNode = null;
93
318
  this.parentKey = '';
319
+ /**
320
+ * UI 状态位标志
321
+ * 使用一个 number(4 bytes)存储所有 UI 状态布尔值,节省内存
322
+ */
323
+ this._uiFlags = 0;
94
324
  if (!source?.silence) {
95
- if (this.hasOwnProperty('JSON_EXCLUDED_KEYS') && this.JSON_EXCLUDED_KEYS === undefined) {
96
- delete this.JSON_EXCLUDED_KEYS;
97
- }
98
325
  /**
99
326
  * 监听action,delete,update事件
100
327
  */
@@ -115,6 +342,16 @@ class BaseNode extends EventEmitter_1.EventEmitter {
115
342
  subConstructor(source) {
116
343
  const concept = this.concept ?? this.constructor.name;
117
344
  const { childProperties, childrenProperties, normalProperties, propertyMap, whitePropertyMap, } = (0, decorators_1.getConceptMeta)(concept);
345
+ // UI 状态属性(使用位标志存储)
346
+ const uiStateKeys = ['editable', 'removable', 'loading', 'expanded', 'hidden',
347
+ 'pageTreeNodeHidden', 'logicTreeNodeHidden', 'dataTreeNodeHidden',
348
+ 'processTreeNodeHidden', 'logicTreeNodeExpanded', 'isLeaf'];
349
+ for (const key of uiStateKeys) {
350
+ const value = source?.[key];
351
+ if (value !== undefined) {
352
+ this[key] = value; // 使用 setter 设置
353
+ }
354
+ }
118
355
  // 普通属性迭代
119
356
  for (const key of normalProperties) {
120
357
  if (key === 'concept') {
@@ -124,7 +361,20 @@ class BaseNode extends EventEmitter_1.EventEmitter {
124
361
  if (item === undefined) {
125
362
  continue;
126
363
  }
127
- this[key] = item;
364
+ // 特殊处理:App 类将 id 定义为实例属性(而不是访问器)
365
+ // 如果直接赋值会调用 BaseNode 的 setter,需要直接设置实例属性
366
+ if (key === 'id' && this.concept === 'App') {
367
+ // 直接设置实例属性,绕过 BaseNode 的 id setter
368
+ Object.defineProperty(this, 'id', {
369
+ value: item,
370
+ writable: true,
371
+ enumerable: true,
372
+ configurable: true,
373
+ });
374
+ }
375
+ else {
376
+ this[key] = item;
377
+ }
128
378
  }
129
379
  const getChildInstance = (item, descriptor) => {
130
380
  if (descriptor.skipInstantiate ||
@@ -1962,40 +2212,43 @@ __decorate([
1962
2212
  ], BaseNode.prototype, "parentNode", void 0);
1963
2213
  __decorate([
1964
2214
  (0, decorators_1.excludedInJSON)()
1965
- ], BaseNode.prototype, "editable", void 0);
2215
+ ], BaseNode.prototype, "_uiFlags", void 0);
2216
+ __decorate([
2217
+ (0, decorators_1.excludedInJSON)()
2218
+ ], BaseNode.prototype, "editable", null);
1966
2219
  __decorate([
1967
2220
  (0, decorators_1.excludedInJSON)()
1968
- ], BaseNode.prototype, "removable", void 0);
2221
+ ], BaseNode.prototype, "removable", null);
1969
2222
  __decorate([
1970
2223
  (0, decorators_1.excludedInJSON)()
1971
- ], BaseNode.prototype, "loading", void 0);
2224
+ ], BaseNode.prototype, "loading", null);
1972
2225
  __decorate([
1973
2226
  (0, decorators_1.excludedInJSON)()
1974
- ], BaseNode.prototype, "expanded", void 0);
2227
+ ], BaseNode.prototype, "expanded", null);
1975
2228
  __decorate([
1976
2229
  (0, decorators_1.excludedInJSON)()
1977
- ], BaseNode.prototype, "hidden", void 0);
2230
+ ], BaseNode.prototype, "hidden", null);
1978
2231
  __decorate([
1979
2232
  (0, decorators_1.excludedInJSON)()
1980
- ], BaseNode.prototype, "pageTreeNodeHidden", void 0);
2233
+ ], BaseNode.prototype, "pageTreeNodeHidden", null);
1981
2234
  __decorate([
1982
2235
  (0, decorators_1.excludedInJSON)()
1983
- ], BaseNode.prototype, "logicTreeNodeHidden", void 0);
2236
+ ], BaseNode.prototype, "logicTreeNodeHidden", null);
1984
2237
  __decorate([
1985
2238
  (0, decorators_1.excludedInJSON)()
1986
- ], BaseNode.prototype, "dataTreeNodeHidden", void 0);
2239
+ ], BaseNode.prototype, "dataTreeNodeHidden", null);
1987
2240
  __decorate([
1988
2241
  (0, decorators_1.excludedInJSON)()
1989
- ], BaseNode.prototype, "processTreeNodeHidden", void 0);
2242
+ ], BaseNode.prototype, "processTreeNodeHidden", null);
1990
2243
  __decorate([
1991
2244
  (0, decorators_1.excludedInJSON)()
1992
- ], BaseNode.prototype, "logicTreeNodeExpanded", void 0);
2245
+ ], BaseNode.prototype, "logicTreeNodeExpanded", null);
1993
2246
  __decorate([
1994
2247
  (0, decorators_1.excludedInJSON)()
1995
2248
  ], BaseNode.prototype, "sourceMap", void 0);
1996
2249
  __decorate([
1997
2250
  (0, decorators_1.excludedInJSON)()
1998
- ], BaseNode.prototype, "isLeaf", void 0);
2251
+ ], BaseNode.prototype, "isLeaf", null);
1999
2252
  __decorate([
2000
2253
  (0, decorators_1.excludedInJSON)()
2001
2254
  ], BaseNode.prototype, "storageJSON", void 0);