@lcap/nasl 2.13.0 → 2.13.1

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 (40) hide show
  1. package/out/concepts/CompletionProperty__.d.ts +0 -1
  2. package/out/concepts/CompletionProperty__.js +0 -1
  3. package/out/concepts/CompletionProperty__.js.map +1 -1
  4. package/out/concepts/TypeAnnotation__.js +3 -14
  5. package/out/concepts/TypeAnnotation__.js.map +1 -1
  6. package/out/concepts/basics/stdlib/nasl.collection.js +12 -0
  7. package/out/concepts/basics/stdlib/nasl.collection.js.map +1 -1
  8. package/out/concepts/basics/stdlib/nasl.util.js +187 -5
  9. package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
  10. package/out/concepts/basics/stdlib/reference2TypeAnnotationList.js +1 -1
  11. package/out/concepts/basics/stdlib/reference2TypeAnnotationList.js.map +1 -1
  12. package/out/enums/KEYWORDS.d.ts +1 -0
  13. package/out/enums/KEYWORDS.js +16 -1
  14. package/out/enums/KEYWORDS.js.map +1 -1
  15. package/out/generator/genBundleFiles.js +25 -1
  16. package/out/generator/genBundleFiles.js.map +1 -1
  17. package/out/server/getLogics.js +18 -17
  18. package/out/server/getLogics.js.map +1 -1
  19. package/out/server/getMemberIdentifier.d.ts +9 -0
  20. package/out/server/getMemberIdentifier.js +98 -34
  21. package/out/server/getMemberIdentifier.js.map +1 -1
  22. package/out/server/getProcesses.js +9 -18
  23. package/out/server/getProcesses.js.map +1 -1
  24. package/out/server/naslServer.js +5 -2
  25. package/out/server/naslServer.js.map +1 -1
  26. package/out/templator/genQueryComponent.js +8 -8
  27. package/out/templator/genQueryComponent.js.map +1 -1
  28. package/package.json +1 -1
  29. package/src/concepts/CompletionProperty__.ts +0 -1
  30. package/src/concepts/TypeAnnotation__.ts +3 -30
  31. package/src/concepts/basics/stdlib/nasl.collection.ts +12 -0
  32. package/src/concepts/basics/stdlib/nasl.util.ts +187 -5
  33. package/src/concepts/basics/stdlib/reference2TypeAnnotationList.ts +1 -1
  34. package/src/enums/KEYWORDS.ts +16 -0
  35. package/src/generator/genBundleFiles.ts +24 -1
  36. package/src/server/getLogics.ts +18 -17
  37. package/src/server/getMemberIdentifier.ts +92 -32
  38. package/src/server/getProcesses.ts +10 -19
  39. package/src/server/naslServer.ts +5 -2
  40. package/src/templator/genQueryComponent.ts +8 -8
@@ -42,7 +42,6 @@ import { v4 as uuidv4 } from 'uuid';
42
42
  import BaseNode from '../common/BaseNode';
43
43
  import classMap from '../common/classMap';
44
44
 
45
-
46
45
  /**
47
46
  * 类型标注
48
47
  */
@@ -90,8 +89,6 @@ export class TypeAnnotation extends BaseNode {
90
89
  @property()
91
90
  ruleMap: Object = undefined;
92
91
 
93
-
94
-
95
92
  /**
96
93
  * @param source 需要合并的部分参数
97
94
  */
@@ -128,10 +125,6 @@ export class TypeAnnotation extends BaseNode {
128
125
  });
129
126
  }
130
127
 
131
-
132
-
133
-
134
-
135
128
  /**
136
129
  * 插入类型标注
137
130
  * @internal
@@ -164,8 +157,6 @@ export class TypeAnnotation extends BaseNode {
164
157
  return typeAnnotation;
165
158
  }
166
159
 
167
-
168
-
169
160
  /**
170
161
  * 插入类型标注
171
162
  * @param typeAnnotationOptions 类型标注参数
@@ -188,8 +179,6 @@ export class TypeAnnotation extends BaseNode {
188
179
  return node;
189
180
  }
190
181
 
191
-
192
-
193
182
  /**
194
183
  * 添加类型标注
195
184
  * @internal
@@ -209,8 +198,6 @@ export class TypeAnnotation extends BaseNode {
209
198
  return this._insertTypeAnnotationAt(options as any, index);
210
199
  }
211
200
 
212
-
213
-
214
201
  /**
215
202
  * 添加类型标注
216
203
  * @param typeAnnotationOptions 类型标注参数
@@ -234,9 +221,6 @@ export class TypeAnnotation extends BaseNode {
234
221
  return node;
235
222
  }
236
223
 
237
-
238
-
239
-
240
224
  /**
241
225
  * 删除类型标注
242
226
  * @param typeAnnotation 已有的类型标注实例
@@ -244,7 +228,7 @@ export class TypeAnnotation extends BaseNode {
244
228
  removeTypeAnnotation(typeAnnotation: TypeAnnotation): void;
245
229
 
246
230
  removeTypeAnnotation(options: TypeAnnotation) {
247
- let typeAnnotation: TypeAnnotation = options;
231
+ const typeAnnotation: TypeAnnotation = options;
248
232
  return typeAnnotation.delete();
249
233
  }
250
234
 
@@ -307,7 +291,7 @@ export class TypeAnnotation extends BaseNode {
307
291
  return typeTitle;
308
292
  } else if (this.typeKind === 'generic') {
309
293
  if (this.typeArguments && this.typeArguments.length)
310
- return `${this.typeName}<${(this.typeArguments || []).map((arg) => arg.headTitle || 'T')}>`;
294
+ return `${this.typeName}<${(this.typeArguments || []).map((arg) => arg.headTitle || arg.name || 'T').join(', ')}>`;
311
295
  else
312
296
  return this.typeName;
313
297
  } else {
@@ -324,18 +308,7 @@ export class TypeAnnotation extends BaseNode {
324
308
  } else if (this.typeKind === 'reference') {
325
309
  return this.typeName;
326
310
  } else if (this.typeKind === 'generic') {
327
- let str = `${this.typeName}`;
328
- const loop = (typeArguments: Array<TypeAnnotation>) => {
329
- str += '<' + (typeArguments[0].typeTitle || 'T');
330
- if (typeArguments[0].typeKind === 'generic') {
331
- if (this.typeArguments && this.typeArguments.length) {
332
- loop(typeArguments[0].typeArguments);
333
- }
334
- }
335
- str += '>';
336
- };
337
- loop(this.typeArguments);
338
- return str;
311
+ return `${this.typeName}<${this.typeArguments.map((arg) => arg.typeTitle || arg.name || 'T').join(', ')}>`;
339
312
  } else {
340
313
  return this.typeName;
341
314
  }
@@ -68,6 +68,18 @@ export const collectionStructures = [
68
68
  }),
69
69
  ],
70
70
  }),
71
+ new Structure({
72
+ name: 'Map',
73
+ typeParams: [
74
+ new TypeParam({
75
+ name: 'K',
76
+ }),
77
+ new TypeParam({
78
+ name: 'V',
79
+ }),
80
+ ],
81
+ properties: [],
82
+ }),
71
83
  ];
72
84
  export const collectionTypeList: Array<TypeAnnotation> = reference2TypeAnnotationList(collectionStructures, 'nasl.collection');
73
85
 
@@ -221,7 +221,7 @@ export default new Namespace({
221
221
  typeAnnotation: TypeAnnotation.createPrimitive('String'),
222
222
  }),
223
223
  new Param({
224
- name: 'seperator',
224
+ name: 'separator',
225
225
  typeAnnotation: TypeAnnotation.createPrimitive('String'),
226
226
  }),
227
227
  ],
@@ -244,7 +244,7 @@ export default new Namespace({
244
244
  }),
245
245
  }),
246
246
  new Param({
247
- name: 'seperator',
247
+ name: 'separator',
248
248
  typeAnnotation: TypeAnnotation.createPrimitive('String'),
249
249
  }),
250
250
  ],
@@ -275,10 +275,10 @@ export default new Namespace({
275
275
  }),
276
276
  new Function({
277
277
  name: 'Length',
278
- description: '返回字符串长度',
278
+ description: '获得String、Map、List的长度',
279
279
  params: [
280
280
  new Param({
281
- name: 'str1',
281
+ name: 'param',
282
282
  typeAnnotation: TypeAnnotation.createPrimitive('String'),
283
283
  }),
284
284
  ],
@@ -427,7 +427,7 @@ export default new Namespace({
427
427
  }),
428
428
  }),
429
429
  new Param({
430
- name: 'addlist',
430
+ name: 'addList',
431
431
  typeAnnotation: TypeAnnotation.createGeneric('List', {
432
432
  typeArguments: [TypeAnnotation.createTypeParam('T')],
433
433
  }),
@@ -496,6 +496,188 @@ export default new Namespace({
496
496
  }),
497
497
  ],
498
498
  }),
499
+ new Function({
500
+ name: 'MapGet',
501
+ description: '查询出Map中key为指定值的value值列表',
502
+ params: [
503
+ new Param({
504
+ name: 'map',
505
+ typeAnnotation: TypeAnnotation.createGeneric('map', {
506
+ typeArguments: [
507
+ TypeAnnotation.createTypeParam('K'),
508
+ TypeAnnotation.createTypeParam('V'),
509
+ ],
510
+ }),
511
+ }),
512
+ new Param({
513
+ name: 'key',
514
+ typeAnnotation: TypeAnnotation.createTypeParam('K'),
515
+ }),
516
+ ],
517
+ returns: [
518
+ new Return({
519
+ typeAnnotation: TypeAnnotation.createTypeParam('V'),
520
+ }),
521
+ ],
522
+ }),
523
+ new Function({
524
+ name: 'MapPut',
525
+ description: '为Map中添加键值对',
526
+ params: [
527
+ new Param({
528
+ name: 'map',
529
+ typeAnnotation: TypeAnnotation.createGeneric('map', {
530
+ typeArguments: [
531
+ TypeAnnotation.createTypeParam('K'),
532
+ TypeAnnotation.createTypeParam('V'),
533
+ ],
534
+ }),
535
+ }),
536
+ new Param({
537
+ name: 'key',
538
+ typeAnnotation: TypeAnnotation.createTypeParam('K'),
539
+ }),
540
+ new Param({
541
+ name: 'value',
542
+ typeAnnotation: TypeAnnotation.createTypeParam('V'),
543
+ }),
544
+ ],
545
+ }),
546
+ new Function({
547
+ name: 'MapRemove',
548
+ description: '删除Map中的键值对',
549
+ params: [
550
+ new Param({
551
+ name: 'map',
552
+ typeAnnotation: TypeAnnotation.createGeneric('map', {
553
+ typeArguments: [
554
+ TypeAnnotation.createTypeParam('K'),
555
+ TypeAnnotation.createTypeParam('V'),
556
+ ],
557
+ }),
558
+ }),
559
+ new Param({
560
+ name: 'key',
561
+ typeAnnotation: TypeAnnotation.createTypeParam('K'),
562
+ }),
563
+ ],
564
+ }),
565
+ new Function({
566
+ name: 'MapContains',
567
+ description: '指定Map中是否存在参数key的键值对',
568
+ params: [
569
+ new Param({
570
+ name: 'map',
571
+ typeAnnotation: TypeAnnotation.createGeneric('map', {
572
+ typeArguments: [
573
+ TypeAnnotation.createTypeParam('K'),
574
+ TypeAnnotation.createTypeParam('V'),
575
+ ],
576
+ }),
577
+ }),
578
+ new Param({
579
+ name: 'key',
580
+ typeAnnotation: TypeAnnotation.createTypeParam('K'),
581
+ }),
582
+ ],
583
+ returns: [
584
+ new Return({
585
+ typeAnnotation: TypeAnnotation.createTypeParam('Boolean'),
586
+ }),
587
+ ],
588
+ }),
589
+ new Function({
590
+ name: 'MapKeys',
591
+ description: '输出Map中key集合',
592
+ params: [
593
+ new Param({
594
+ name: 'map',
595
+ typeAnnotation: TypeAnnotation.createGeneric('map', {
596
+ typeArguments: [
597
+ TypeAnnotation.createTypeParam('K'),
598
+ TypeAnnotation.createTypeParam('V'),
599
+ ],
600
+ }),
601
+ }),
602
+ ],
603
+ returns: [
604
+ new Return({
605
+ typeAnnotation: TypeAnnotation.createGeneric('List', {
606
+ typeArguments: [TypeAnnotation.createTypeParam('K')],
607
+ }),
608
+ }),
609
+ ],
610
+ }),
611
+ new Function({
612
+ name: 'MapValues',
613
+ description: '输出Map中value集合',
614
+ params: [
615
+ new Param({
616
+ name: 'map',
617
+ typeAnnotation: TypeAnnotation.createGeneric('map', {
618
+ typeArguments: [
619
+ TypeAnnotation.createTypeParam('K'),
620
+ TypeAnnotation.createTypeParam('V'),
621
+ ],
622
+ }),
623
+ }),
624
+ ],
625
+ returns: [
626
+ new Return({
627
+ typeAnnotation: TypeAnnotation.createGeneric('List', {
628
+ typeArguments: [TypeAnnotation.createTypeParam('V')],
629
+ }),
630
+ }),
631
+ ],
632
+ }),
633
+ new Function({
634
+ name: 'MapFilter',
635
+ description: '在指定Map中过滤出符合条件参数的Map集合',
636
+ params: [
637
+ new Param({
638
+ name: 'map',
639
+ typeAnnotation: TypeAnnotation.createGeneric('map', {
640
+ typeArguments: [
641
+ TypeAnnotation.createTypeParam('K'),
642
+ TypeAnnotation.createTypeParam('V'),
643
+ ],
644
+ }),
645
+ }),
646
+ new Param({
647
+ name: 'byKey',
648
+ defaultExpression: new Function({
649
+ name: 'byKey',
650
+ description: '',
651
+ params: [
652
+ new Param({
653
+ name: 'key',
654
+ typeAnnotation: null,
655
+ }),
656
+ ],
657
+ }),
658
+ }),
659
+ new Param({
660
+ name: 'byValue',
661
+ defaultExpression: new Function({
662
+ name: 'byValue',
663
+ description: '',
664
+ params: [
665
+ new Param({
666
+ name: 'value',
667
+ typeAnnotation: null,
668
+ }),
669
+ ],
670
+ }),
671
+ }),
672
+ ],
673
+ returns: [
674
+ new Return({
675
+ typeAnnotation: TypeAnnotation.createGeneric('List', {
676
+ typeArguments: [TypeAnnotation.createTypeParam('K')],
677
+ }),
678
+ }),
679
+ ],
680
+ }),
499
681
  new Function({
500
682
  name: 'CurrDate',
501
683
  description: '返回当前日期',
@@ -15,7 +15,7 @@ export function reference2TypeAnnotationList(list: Array<Entity | Structure | En
15
15
  return TypeAnnotation.createReference(item.name, {
16
16
  typeKind: 'generic',
17
17
  typeNamespace: namespace,
18
- typeArguments: item.typeParams.map((typeParam) => new TypeAnnotation()),
18
+ typeArguments: item.typeParams.map((typeParam) => new TypeAnnotation({ name: typeParam.name })),
19
19
  });
20
20
  } else {
21
21
  return TypeAnnotation.createReference(item.name, {
@@ -1198,3 +1198,19 @@ export const ENTITY_PROPERTY_KEYWORDS = [
1198
1198
  'STATIC',
1199
1199
  'YIELD',
1200
1200
  ];
1201
+
1202
+ export const USER_CUSTOM_KEYWORDS = [
1203
+ 'annotation',
1204
+ 'app',
1205
+ 'component',
1206
+ 'components',
1207
+ 'config',
1208
+ 'configuration',
1209
+ 'dataSource',
1210
+ 'element',
1211
+ 'elements',
1212
+ 'function',
1213
+ 'match',
1214
+ 'operator',
1215
+ 'system',
1216
+ ];
@@ -132,6 +132,29 @@ export async function genBundleFiles(app: App,
132
132
  if (view.isIndex) {
133
133
  indexName = view.name;
134
134
  }
135
+ function getAuth(data: View) {
136
+ if (!data) return
137
+ let res:any = {};
138
+ if( data.children.length === 0) {
139
+ res.name = data.name;
140
+ res.auth = data.auth;
141
+ res.children = [];
142
+ } else {
143
+ res.name = data.name;
144
+ res.auth = data.auth;
145
+ res.children = [];
146
+ data.children.forEach(item => {
147
+ res.children.push(getAuth(item));
148
+ })
149
+ }
150
+ return res;
151
+ }
152
+
153
+ let filterChildren: any[];
154
+ filterChildren = [];
155
+ view.children.forEach(item => {
156
+ filterChildren.push(getAuth(item));
157
+ });
135
158
  pages[view.name] = {
136
159
  title: view.title,
137
160
  name: view.name,
@@ -140,7 +163,7 @@ export async function genBundleFiles(app: App,
140
163
  hasAuth: app.hasAuth,
141
164
  domainName: app.name,
142
165
  auth: view.auth,
143
- subPage: view.children,
166
+ subPage: filterChildren,
144
167
  documentTitle: app.documentTitle,
145
168
  router: {
146
169
  notFound: '/',
@@ -74,13 +74,13 @@ export async function getLogics(node: CallLogic | BindEvent, needAllLogic: boole
74
74
  }
75
75
  nc.map((item) => {
76
76
  item.logics = item.logics.filter((logic) => !logic.name.startsWith('import'));
77
- item.expanded = true;
77
+ item.expanded = false;
78
78
  item.originConcept = 'Entity';
79
79
  return item;
80
80
  });
81
81
  const ps = app.processes.map((p) => {
82
82
  const pItem = process2LogicNamespace(p);
83
- pItem.expanded = true;
83
+ pItem.expanded = false;
84
84
  pItem.originConcept = 'Process';
85
85
  return pItem;
86
86
  });
@@ -92,7 +92,7 @@ export async function getLogics(node: CallLogic | BindEvent, needAllLogic: boole
92
92
  logics: app.logics,
93
93
  children: [...nc, ...extensions, ...ps],
94
94
  });
95
- tree.expanded = true;
95
+ tree.expanded = false;
96
96
  result.push(tree);
97
97
  }
98
98
 
@@ -114,7 +114,7 @@ export async function getLogics(node: CallLogic | BindEvent, needAllLogic: boole
114
114
  path: `elements.${toHump(item.name)}.logics`,
115
115
  originConcept: 'ViewElement',
116
116
  });
117
- viewElement.expanded = true;
117
+ viewElement.expanded = false;
118
118
  viewElements.push(viewElement);
119
119
  }
120
120
  });
@@ -126,7 +126,7 @@ export async function getLogics(node: CallLogic | BindEvent, needAllLogic: boole
126
126
  logics: node.view.logics,
127
127
  children: viewElements,
128
128
  });
129
- tree.expanded = true;
129
+ tree.expanded = false;
130
130
  result.push(tree);
131
131
  const systemTree = new Namespace({
132
132
  name: 'category',
@@ -138,37 +138,37 @@ export async function getLogics(node: CallLogic | BindEvent, needAllLogic: boole
138
138
  path: `process`,
139
139
  title: '流程逻辑',
140
140
  logics: stdlibNamespace.findChild('process').logics,
141
- expanded: true,
141
+ expanded: false,
142
142
  }),
143
143
  new Namespace({
144
144
  name: 'category',
145
145
  path: `browser`,
146
146
  title: '浏览器',
147
147
  logics: stdlibNamespace.findChild('browser').logics,
148
- expanded: true,
148
+ expanded: false,
149
149
  }),
150
150
  new Namespace({
151
151
  name: 'category',
152
152
  path: `auth`,
153
153
  title: '认证与权限',
154
154
  logics: stdlibNamespace.findChild('auth').logics,
155
- expanded: true,
155
+ expanded: false,
156
156
  }),
157
157
  new Namespace({
158
158
  name: 'category',
159
159
  path: `configuration`,
160
160
  title: '配置',
161
161
  logics: stdlibNamespace.findChild('configuration').logics,
162
- expanded: true,
162
+ expanded: false,
163
163
  }),
164
164
  ],
165
- expanded: true,
165
+ expanded: false,
166
166
  });
167
167
  if (!app.processes.length)
168
168
  systemTree.children.shift();
169
169
 
170
- systemTree.expanded = true;
171
- systemTree.children.forEach((child) => (child.expanded = true));
170
+ systemTree.expanded = false;
171
+ systemTree.children.forEach((child) => (child.expanded = false));
172
172
  result.push(systemTree);
173
173
  } else {
174
174
  // 增加全局逻辑中的系统逻辑
@@ -182,25 +182,26 @@ export async function getLogics(node: CallLogic | BindEvent, needAllLogic: boole
182
182
  path: `process`,
183
183
  title: '流程逻辑',
184
184
  logics: stdlibNamespace.findChild('process').logics,
185
- expanded: true,
185
+ expanded: false,
186
186
  }),
187
187
  new Namespace({
188
188
  name: 'category',
189
189
  path: `configuration`,
190
190
  title: '配置',
191
191
  logics: stdlibNamespace.findChild('configuration').logics,
192
- expanded: true,
192
+ expanded: false,
193
193
  })
194
194
  ],
195
- expanded: true,
195
+ expanded: false,
196
196
  });
197
197
  if (!app.processes.length)
198
198
  systemTree.children.shift();
199
199
 
200
- systemTree.expanded = true;
201
- systemTree.children.forEach((child) => (child.expanded = true));
200
+ systemTree.expanded = false;
201
+ systemTree.children.forEach((child) => (child.expanded = false));
202
202
  result.push(systemTree);
203
203
  }
204
+ console.log(result)
204
205
  return result;
205
206
  }
206
207
  }