@lcap/nasl 2.13.0-beta.2 → 2.13.1-beta.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 (157) hide show
  1. package/out/concepts/BindAttribute__.js +7 -4
  2. package/out/concepts/BindAttribute__.js.map +1 -1
  3. package/out/concepts/CompletionProperty__.d.ts +0 -1
  4. package/out/concepts/CompletionProperty__.js +0 -1
  5. package/out/concepts/CompletionProperty__.js.map +1 -1
  6. package/out/concepts/DataSource__.js +1 -0
  7. package/out/concepts/DataSource__.js.map +1 -1
  8. package/out/concepts/Destination__.js +6 -1
  9. package/out/concepts/Destination__.js.map +1 -1
  10. package/out/concepts/Entity__.js +1 -0
  11. package/out/concepts/Entity__.js.map +1 -1
  12. package/out/concepts/Enum__.js +1 -0
  13. package/out/concepts/Enum__.js.map +1 -1
  14. package/out/concepts/Function__.d.ts +2 -1
  15. package/out/concepts/Function__.js +0 -28
  16. package/out/concepts/Function__.js.map +1 -1
  17. package/out/concepts/InterfaceParam__.js +6 -3
  18. package/out/concepts/InterfaceParam__.js.map +1 -1
  19. package/out/concepts/Interface__.js +1 -0
  20. package/out/concepts/Interface__.js.map +1 -1
  21. package/out/concepts/Logic__.js +1 -0
  22. package/out/concepts/Logic__.js.map +1 -1
  23. package/out/concepts/Param__.js +6 -3
  24. package/out/concepts/Param__.js.map +1 -1
  25. package/out/concepts/ProcessElement__.d.ts +4 -0
  26. package/out/concepts/ProcessElement__.js +31 -0
  27. package/out/concepts/ProcessElement__.js.map +1 -1
  28. package/out/concepts/Process__.js +1 -0
  29. package/out/concepts/Process__.js.map +1 -1
  30. package/out/concepts/Return__.js +6 -3
  31. package/out/concepts/Return__.js.map +1 -1
  32. package/out/concepts/Role__.js +1 -0
  33. package/out/concepts/Role__.js.map +1 -1
  34. package/out/concepts/Structure__.js +1 -0
  35. package/out/concepts/Structure__.js.map +1 -1
  36. package/out/concepts/TypeAnnotation__.js +3 -14
  37. package/out/concepts/TypeAnnotation__.js.map +1 -1
  38. package/out/concepts/Unparsed__.js +3 -3
  39. package/out/concepts/Unparsed__.js.map +1 -1
  40. package/out/concepts/Variable__.js +6 -3
  41. package/out/concepts/Variable__.js.map +1 -1
  42. package/out/concepts/ViewElement__.js.map +1 -1
  43. package/out/concepts/View__.js +1 -0
  44. package/out/concepts/View__.js.map +1 -1
  45. package/out/concepts/basics/stdlib/nasl.collection.js +12 -0
  46. package/out/concepts/basics/stdlib/nasl.collection.js.map +1 -1
  47. package/out/concepts/basics/stdlib/nasl.util.js +187 -5
  48. package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
  49. package/out/concepts/basics/stdlib/reference2TypeAnnotationList.js +1 -1
  50. package/out/concepts/basics/stdlib/reference2TypeAnnotationList.js.map +1 -1
  51. package/out/enums/KEYWORDS.d.ts +1 -0
  52. package/out/enums/KEYWORDS.js +16 -1
  53. package/out/enums/KEYWORDS.js.map +1 -1
  54. package/out/generator/genBundleFiles.js +25 -1
  55. package/out/generator/genBundleFiles.js.map +1 -1
  56. package/out/server/createUiTs.js +12 -12
  57. package/out/server/createUiTs.js.map +1 -1
  58. package/out/server/formatTsUtils.d.ts +21 -0
  59. package/out/server/formatTsUtils.js +323 -0
  60. package/out/server/formatTsUtils.js.map +1 -0
  61. package/out/server/getLogics.js +18 -17
  62. package/out/server/getLogics.js.map +1 -1
  63. package/out/server/getMemberIdentifier.d.ts +1 -12
  64. package/out/server/getMemberIdentifier.js +11 -264
  65. package/out/server/getMemberIdentifier.js.map +1 -1
  66. package/out/server/getProcesses.js +9 -18
  67. package/out/server/getProcesses.js.map +1 -1
  68. package/out/server/naslServer.d.ts +48 -0
  69. package/out/server/naslServer.js +58 -13
  70. package/out/server/naslServer.js.map +1 -1
  71. package/out/server/stdlib/nasl.annotation.d.ts +4 -0
  72. package/out/server/stdlib/nasl.annotation.js +1 -0
  73. package/out/server/stdlib/nasl.annotation.js.map +1 -0
  74. package/out/server/stdlib/nasl.auth.d.ts +30 -0
  75. package/out/server/stdlib/nasl.auth.js +1 -0
  76. package/out/server/stdlib/nasl.auth.js.map +1 -0
  77. package/out/server/stdlib/nasl.browser.d.ts +5 -0
  78. package/out/server/stdlib/nasl.browser.js +1 -0
  79. package/out/server/stdlib/nasl.browser.js.map +1 -0
  80. package/out/server/stdlib/nasl.collection.d.ts +22 -0
  81. package/out/server/stdlib/nasl.collection.js +1 -0
  82. package/out/server/stdlib/nasl.collection.js.map +1 -0
  83. package/out/server/stdlib/nasl.configuration.d.ts +3 -0
  84. package/out/server/stdlib/nasl.configuration.js +1 -0
  85. package/out/server/stdlib/nasl.configuration.js.map +1 -0
  86. package/out/server/stdlib/nasl.core.d.ts +104 -0
  87. package/out/server/stdlib/nasl.core.js +1 -0
  88. package/out/server/stdlib/nasl.core.js.map +1 -0
  89. package/out/server/stdlib/nasl.interface.d.ts +7 -0
  90. package/out/server/stdlib/nasl.interface.js +1 -0
  91. package/out/server/stdlib/nasl.interface.js.map +1 -0
  92. package/out/server/stdlib/nasl.langUtil.d.ts +28 -0
  93. package/out/server/stdlib/nasl.langUtil.js +1 -0
  94. package/out/server/stdlib/nasl.langUtil.js.map +1 -0
  95. package/out/server/stdlib/nasl.process.d.ts +50 -0
  96. package/out/server/stdlib/nasl.process.js +1 -0
  97. package/out/server/stdlib/nasl.process.js.map +1 -0
  98. package/out/server/stdlib/nasl.ui.d.ts +186 -0
  99. package/out/server/stdlib/nasl.ui.definition.d.ts +1072 -0
  100. package/out/server/stdlib/nasl.ui.definition.js +632 -0
  101. package/out/server/stdlib/nasl.ui.definition.js.map +1 -0
  102. package/out/server/stdlib/nasl.ui.js +1 -0
  103. package/out/server/stdlib/nasl.ui.js.map +1 -0
  104. package/out/server/stdlib/nasl.util.d.ts +74 -0
  105. package/out/server/stdlib/nasl.util.js +4 -0
  106. package/out/server/stdlib/nasl.util.js.map +1 -0
  107. package/out/server/stdlib/nasl.validation.d.ts +32 -0
  108. package/out/server/stdlib/nasl.validation.js +1 -0
  109. package/out/server/stdlib/nasl.validation.js.map +1 -0
  110. package/out/templator/genQueryComponent.js +8 -8
  111. package/out/templator/genQueryComponent.js.map +1 -1
  112. package/package.json +1 -1
  113. package/src/concepts/BindAttribute__.ts +7 -24
  114. package/src/concepts/CompletionProperty__.ts +0 -1
  115. package/src/concepts/DataSource__.ts +1 -0
  116. package/src/concepts/Destination__.ts +6 -1
  117. package/src/concepts/Entity__.ts +1 -0
  118. package/src/concepts/Enum__.ts +1 -0
  119. package/src/concepts/InterfaceParam__.ts +6 -3
  120. package/src/concepts/Interface__.ts +1 -0
  121. package/src/concepts/Logic__.ts +1 -0
  122. package/src/concepts/Param__.ts +5 -3
  123. package/src/concepts/ProcessElement__.ts +35 -1
  124. package/src/concepts/Process__.ts +1 -0
  125. package/src/concepts/Return__.ts +5 -3
  126. package/src/concepts/Role__.ts +1 -0
  127. package/src/concepts/Structure__.ts +1 -0
  128. package/src/concepts/TypeAnnotation__.ts +3 -30
  129. package/src/concepts/Unparsed__.ts +3 -10
  130. package/src/concepts/Variable__.ts +5 -3
  131. package/src/concepts/ViewElement__.ts +1 -19
  132. package/src/concepts/View__.ts +1 -0
  133. package/src/concepts/basics/stdlib/nasl.collection.ts +12 -0
  134. package/src/concepts/basics/stdlib/nasl.util.ts +187 -5
  135. package/src/concepts/basics/stdlib/reference2TypeAnnotationList.ts +1 -1
  136. package/src/enums/KEYWORDS.ts +16 -0
  137. package/src/generator/genBundleFiles.ts +24 -1
  138. package/src/server/createUiTs.ts +12 -12
  139. package/src/server/formatTsUtils.ts +319 -0
  140. package/src/server/getLogics.ts +18 -17
  141. package/src/server/getMemberIdentifier.ts +10 -264
  142. package/src/server/getProcesses.ts +10 -19
  143. package/src/server/naslServer.ts +58 -12
  144. package/src/server/stdlib/nasl.annotation.ts +4 -0
  145. package/src/server/stdlib/nasl.auth.ts +31 -0
  146. package/src/server/stdlib/nasl.browser.ts +5 -0
  147. package/src/server/stdlib/nasl.collection.ts +22 -0
  148. package/src/server/stdlib/nasl.configuration.ts +3 -0
  149. package/src/server/stdlib/nasl.core.ts +128 -0
  150. package/src/server/stdlib/nasl.interface.ts +7 -0
  151. package/src/server/stdlib/nasl.langUtil.ts +31 -0
  152. package/src/server/stdlib/nasl.process.ts +87 -0
  153. package/src/server/stdlib/nasl.ui.definition.ts +1760 -0
  154. package/src/server/stdlib/nasl.ui.ts +189 -0
  155. package/src/server/stdlib/nasl.util.ts +84 -0
  156. package/src/server/stdlib/nasl.validation.ts +33 -0
  157. package/src/templator/genQueryComponent.ts +8 -8
@@ -1,250 +1,6 @@
1
- import { BaseNode, CompletionProperty, App, Identifier, MemberExpression, Enum, NullLiteral, BooleanLiteral, Param, BindAttribute, LogicItem, TypeAnnotation } from '..';
1
+ import { BaseNode, CompletionProperty, App, Identifier, MemberExpression, Enum, NullLiteral, BooleanLiteral, BindAttribute, LogicItem } from '..';
2
2
  import naslServer from './naslServer';
3
-
4
- interface variableItem {
5
- text: string;
6
- completionDetail: any;
7
- children?: variableItem[] | any;
8
- name?: string;
9
- value?: string;
10
- expression: MemberExpression | Identifier;
11
- }
12
-
13
- /**
14
- * 把ts返回的详细信息截取成一个类型字符串
15
- * @param displayParts ts返回的key value
16
- * // 0: {text: 'let', kind: 'keyword'}
17
- // 1: {text: ' ', kind: 'space'}
18
- // 2: {text: 'bindRoles', kind: 'text'}
19
- // 3: {text: ':', kind: 'punctuation'}
20
- // 4: {text: ' ', kind: 'space'}
21
- // 5: {text: 'roles', kind: 'moduleName'}
22
- // 6: {text: '.', kind: 'punctuation'}
23
- // 7: {text: 'DEV_AdminRole', kind: 'enumName'}
24
- * @returns type roles.DEV_AdminRole
25
- */
26
- function formatTs2TypeString(displayParts: Array<{ text: string; kind: string }>) {
27
- let str = '';
28
- displayParts.forEach((item) => {
29
- str += item.text;
30
- });
31
- const strTypes = str.split(': ');
32
- const type = strTypes[1];
33
- return type;
34
- }
35
- /**
36
- * 把当前类型转成typeAnnotation
37
- * @param type app
38
- * @returns typeAnnotation
39
- */
40
- function getCompletionDetailType(type: string): TypeAnnotation {
41
- let typeAnnotation;
42
- try {
43
- if (type.includes('<') && type.includes('>')) {
44
- // 泛型的处理
45
- typeAnnotation = createGenericTypeAnnotation(type);
46
- } else {
47
- typeAnnotation = createType2Annotation(type);
48
- }
49
- } catch (err) {
50
- console.log(err);
51
- }
52
- return typeAnnotation;
53
- }
54
-
55
- function createGenericTypeAnnotation(type: string) {
56
- // 取出匹配的内容
57
-
58
- const childType = type.substring(0, type.indexOf('<'));
59
- const typeAnnotation = createType2Annotation(childType);
60
- // 如果还有匹配到的多层泛型;
61
- // 取出匹配到的内容
62
- const types = /\<([^()]+)\>/g.exec(type);
63
- const newtext = types[1];
64
- // 把匹配的值,的内容在,检索一遍,看是不是泛型套泛型
65
- const newTypes = /\<([^()]+)\>/g.exec(newtext);
66
- // 如果是的话就去递归
67
- if (newTypes) {
68
- const argTypeAnnotation = createGenericTypeAnnotation(newtext);
69
- typeAnnotation.typeArguments = [argTypeAnnotation];
70
- } else {
71
- // 如果不是就创造内部的真正类型
72
- const argTypeAnnotation = createType2Annotation(newtext);
73
- typeAnnotation.typeArguments = [argTypeAnnotation];
74
- }
75
- return typeAnnotation;
76
- }
77
- function createType2Annotation(type: string): TypeAnnotation {
78
- let typeAnnotation;
79
- // 没有泛型类型的
80
- const types = type.split('.');
81
- if (types.length === 1) {
82
- typeAnnotation = TypeAnnotation.createPrimitive(types[0]);
83
- } else {
84
- if (type.startsWith('nasl.core')) {
85
- typeAnnotation = TypeAnnotation.createPrimitive(types[types.length - 1]);
86
- } else if (type.startsWith('nasl.ui')) {
87
- typeAnnotation = TypeAnnotation.createReference(types[types.length - 1], {
88
- typeNamespace: 'nasl.ui',
89
- });
90
- } else if (type.startsWith('nasl.process')) {
91
- typeAnnotation = TypeAnnotation.createReference(types[types.length - 1], {
92
- typeNamespace: 'nasl.process',
93
- });
94
- } else if (type.startsWith('nasl.collection')) {
95
- typeAnnotation = TypeAnnotation.createGeneric(types[types.length - 1], {
96
- typeNamespace: 'nasl.collection',
97
- });
98
- } else if (type.startsWith('entities.')) {
99
- typeAnnotation = TypeAnnotation.createReference(types[types.length - 1], {
100
- typeNamespace: 'app.entities',
101
- });
102
- } else if (type.startsWith('structures.')) {
103
- typeAnnotation = TypeAnnotation.createReference(types[types.length - 1], {
104
- typeNamespace: 'app.structures',
105
- });
106
- } else if (type.startsWith('enums.')) {
107
- typeAnnotation = TypeAnnotation.createReference(types[types.length - 1], {
108
- typeNamespace: 'app.enums',
109
- });
110
- }
111
- }
112
- return typeAnnotation;
113
- }
114
- export function getPlatformType(tsType: string): string {
115
- const namespacePrefix = ['app', 'extensions', 'apis', 'components', 'nasl'];
116
- if (tsType === 'String') {
117
- return 'nasl.core.String';
118
- }
119
-
120
- const strTypes = tsType.split('.');
121
- if (strTypes.length) {
122
- const first = strTypes[0];
123
- // 如果不是这几个前缀就加一个namespace
124
- if (!namespacePrefix.includes(first)) {
125
- return 'app.' + tsType;
126
- }
127
- }
128
- return tsType;
129
- }
130
- /**
131
- * 把要返回去的数据做一下排序
132
- * @param result 要返回数据
133
- * @param node 当前内容的上下级
134
- * @returns 返回排序后的数组
135
- * 因为ts会按照 a-z的顺序进行排序
136
- * 但是影响用户体验,需要先按照页面排序,其次按照logic进行排序
137
- * 流程的韬哥自己解决了,所以先解决这两部分
138
- */
139
- function sortFirstVariableData(result: CompletionProperty[], node: BaseNode) {
140
- const newResult: CompletionProperty[] = [];
141
- const logic = (node as Param).logic;
142
- const view = (node as Param).view;
143
- if (view) {
144
- const { params, variables } = view;
145
- const list = [...params, ...variables];
146
- list.forEach((item) => {
147
- const findIndex = result.findIndex((findItem) => findItem.name === item.name);
148
- if (findIndex === 0 || findIndex) {
149
- newResult.push(result[findIndex]);
150
- result.splice(findIndex, 1);
151
- }
152
- });
153
- }
154
- if (logic) {
155
- const { params, returns, variables } = logic;
156
- const list = [...params, ...returns, ...variables];
157
- list.forEach((item) => {
158
- const findIndex = result.findIndex((findItem) => findItem.name === item.name);
159
- if (findIndex === 0 || findIndex) {
160
- newResult.push(result[findIndex]);
161
- result.splice(findIndex, 1);
162
- }
163
- });
164
- }
165
- newResult.push(...result);
166
- return newResult;
167
- }
168
- // 格式化变量数据
169
- export function formatVariableData(data: unknown | variableItem[], node: BaseNode, parent?: any) {
170
- if (Array.isArray(data)) {
171
- let result = data.map((item) => {
172
- // value需要拼接生成
173
- item.value = parent ? `${parent.value}.${item.text}` : item.text;
174
- item.name = item.text;
175
- // 当前结构的typeAnnotation
176
- let typeAnnotation;
177
- let type;
178
-
179
- if (item.completionDetail) {
180
- let type = formatTs2TypeString(item.completionDetail.displayParts as Array<{ text: string; kind: string }>);
181
- typeAnnotation = getCompletionDetailType(type);
182
- type = getPlatformType(type);
183
- }
184
- // 如果没有父节点就是Identifier
185
- if (!parent) {
186
- const identifier = new Identifier({ name: item.name });
187
- // 携带上当前的类型
188
- identifier.typeAnnotation = typeAnnotation;
189
- item.expression = identifier;
190
- } else {
191
- const memberExpression = new MemberExpression({
192
- object: parent.expression,
193
- property: new Identifier({ name: item.name }),
194
- });
195
- // 携带上当前的类型
196
- memberExpression.typeAnnotation = typeAnnotation;
197
- item.expression = memberExpression;
198
- }
199
- if (item.children) {
200
- item.children = formatVariableData(item.children, node, item);
201
- }
202
- if (!parent) {
203
- const completionProperty = new CompletionProperty(item);
204
- // 变量 param return 在这里添加图标
205
- completionProperty.icon = getNodeiconFromLogic(completionProperty, node);
206
- return completionProperty;
207
- } else {
208
- const completionProperty = new CompletionProperty(item);
209
- completionProperty.icon = 'refProperty';
210
- return completionProperty;
211
- }
212
- });
213
-
214
- /**
215
- * 排序result
216
- * 如果没有父级就是第一集就排序一下当前result,用户体验优化
217
- */
218
- if (!parent) {
219
- result = sortFirstVariableData(result, node);
220
- }
221
- return result;
222
- }
223
- }
224
- // 从logic获取节点的icon
225
- function getNodeiconFromLogic(completionProperty: CompletionProperty, node: BaseNode): string {
226
- const logic = (node as Param).logic;
227
- const view = (node as Param).view;
228
- if (view) {
229
- const { params } = view;
230
- if (params.find((item) => item.name === completionProperty.name))
231
- return 'param';
232
- }
233
- if (logic) {
234
- const { params, returns } = logic;
235
- if (params.find((item) => item.name === completionProperty.name))
236
- return 'param';
237
-
238
- if (returns.find((item) => item.name === completionProperty.name))
239
- return 'return';
240
- // if (variables.find((item) => item.name === completionProperty.name))
241
- // return 'variable';
242
-
243
- // 其余的全部按variable展示
244
- return 'variable';
245
- }
246
- return 'variable';
247
- }
3
+ import { formatVariableData } from './formatTsUtils';
248
4
 
249
5
  // 简单实现一版本的格式化nums
250
6
  function formatEnums(enums: Array<Enum>) {
@@ -409,7 +165,7 @@ function getCurrentLogic(node: BaseNode,
409
165
  completionProperty.icon = 'logic';
410
166
  return completionProperty;
411
167
  });
412
- result.push({ name: '逻辑', children: logicVariable, expanded: true, icon: 'category' });
168
+ result.push({ name: '逻辑', children: logicVariable, expanded: false, icon: 'category' });
413
169
  }
414
170
  }
415
171
 
@@ -436,10 +192,10 @@ export async function getMemberIdentifier(node: BaseNode) {
436
192
 
437
193
  // 这个可能需要自己算一下
438
194
  const result = [
439
- { name: '字面量', children: literals, expanded: true, icon: 'category' },
440
- { name: '枚举', children: newEnums, expanded: true, icon: 'category' },
441
- { name: '变量', children: completionData, expanded: true, icon: 'category' },
442
- { name: '公共变量', children: globalVariable, expanded: true, icon: 'category' },
195
+ { name: '字面量', children: literals, expanded: false, icon: 'category' },
196
+ { name: '枚举', children: newEnums, expanded: false, icon: 'category' },
197
+ { name: '变量', children: completionData, expanded: false, icon: 'category' },
198
+ { name: '公共变量', children: globalVariable, expanded: false, icon: 'category' },
443
199
  // { name: '流程变量', children: [] },
444
200
  ];
445
201
  getCurrentLogic(node, result);
@@ -463,19 +219,9 @@ export function getEnumsIdentifier(node: BaseNode): CompletionProperty[] {
463
219
  // 获取变量
464
220
  export async function getVariableIdentifier(node: BaseNode): Promise<CompletionProperty[]> {
465
221
  let completionData: CompletionProperty[] = [new CompletionProperty({})];
466
- if (node instanceof Identifier || node instanceof MemberExpression) {
467
- const value = (node as Identifier | MemberExpression).getValue();
468
- if (value) {
469
- const completion = (await naslServer.getValueSelectCompletion(node, value)) as variableItem[];
470
- completionData = formatVariableData(completion, node);
471
- } else {
472
- const nextCompletion = await naslServer.getFieldKeySelectCompletion(node, '');
473
- completionData = formatVariableData(nextCompletion, node);
474
- }
475
- } else {
476
- const nextCompletion = await naslServer.getFieldKeySelectCompletion(node, '');
477
- completionData = formatVariableData(nextCompletion, node);
478
- }
222
+ // 只获取第一层内容
223
+ const nextCompletion = await naslServer.getFieldKeySelectCompletion(node, '');
224
+ completionData = formatVariableData(nextCompletion, node);
479
225
  return completionData;
480
226
  }
481
227
 
@@ -1,6 +1,7 @@
1
1
  import Constant from '@nasl/concepts/Constant__';
2
2
  import { CompletionProperty, Process, ProcessElement, Namespace, Logic, TypeAnnotation, Return, Variable, StructureProperty, Param, Identifier, MemberExpression, LogicItem, App, BaseNode, Structure, Entity, EntityProperty } from '..';
3
3
  import { getNodeByNodeCallee } from '../automate/engine/utils';
4
+ import { isNoChildType, nextFindTypeChild } from './formatTsUtils';
4
5
  function alphaUpper(name: string) {
5
6
  if (!name) {
6
7
  return '';
@@ -250,20 +251,20 @@ export function genCompletionProperty(prefix: string[] = []):(v: Variable | Para
250
251
  if (t.length) {
251
252
  prevalue = `${t.join('.')}.`;
252
253
  }
253
- const hasChild = ['reference', 'generic'].includes(v.typeAnnotation.typeKind);
254
- const cp = new CompletionProperty({
254
+ const noChildType = isNoChildType(v.typeAnnotation.typeKey);
255
+ const item = {
255
256
  expression: m || p,
256
- noFurther: !hasChild,
257
257
  name: v.name,
258
258
  value: prevalue + v.name,
259
+ };
259
260
 
260
- });
261
- console.log(cp.value);
262
- cp.icon = v.concept;
263
-
264
- if (hasChild) {
265
- cp.children = [new CompletionProperty()];
261
+ if (!noChildType) {
262
+ nextFindTypeChild(v.typeAnnotation.typeKey, item, null, v);
266
263
  }
264
+
265
+ const cp = new CompletionProperty(item);
266
+ console.log(cp.value, v);
267
+ cp.icon = v.concept;
267
268
  return cp;
268
269
  };
269
270
  }
@@ -307,7 +308,6 @@ export function getProcessVariableSuggestions(node: Logic, abandonConstant: bool
307
308
  const cp = new CompletionProperty({
308
309
  name: us.name,
309
310
  value: us.name,
310
- noFurther: true,
311
311
  children: [
312
312
  ...us.returns.map(genCompletionProperty([process.name, us.name])),
313
313
  ...(abandonConstant ? [] : us.constants.map(genCompletionProperty([process.name, us.name]))),
@@ -321,7 +321,6 @@ export function getProcessVariableSuggestions(node: Logic, abandonConstant: bool
321
321
  const processVariables = new CompletionProperty({
322
322
  name: process.name,
323
323
  value: process.name,
324
- noFurther: true,
325
324
  children: [
326
325
  ...process.params.map(genCompletionProperty([process.name])),
327
326
  ...process.returns.map(genCompletionProperty([process.name])),
@@ -335,7 +334,6 @@ export function getProcessVariableSuggestions(node: Logic, abandonConstant: bool
335
334
  name: processElem.name,
336
335
  value: processElem.name,
337
336
  icon: processElem.type,
338
- noFurther: true,
339
337
  children: processElem.variables.map(genCompletionProperty([process.name, processElem.name])),
340
338
  });
341
339
  scopeVariable.isProcess = true;
@@ -348,7 +346,6 @@ export function getProcessVariableSuggestions(node: Logic, abandonConstant: bool
348
346
  name: processElem.name,
349
347
  value: processElem.name,
350
348
  icon: processElem.type,
351
- noFurther: true,
352
349
  children: processElem.constants.map(genCompletionProperty([process.name, processElem.name])),
353
350
  });
354
351
  scopeVariable.isProcess = true;
@@ -360,7 +357,6 @@ export function getProcessVariableSuggestions(node: Logic, abandonConstant: bool
360
357
  name: processElem.name,
361
358
  value: processElem.name,
362
359
  icon: processElem.type,
363
- noFurther: true,
364
360
  children: [
365
361
  ...processElem.variables.map(genCompletionProperty([process.name, processElem.name])),
366
362
  ...processElem.returns.map(genCompletionProperty([process.name, processElem.name])),
@@ -457,7 +453,6 @@ export function getProcessVariableSuggestionsAll(node: ProcessElement) {
457
453
  const cp = new CompletionProperty({
458
454
  name: us.name,
459
455
  value: us.name,
460
- noFurther: true,
461
456
  children: [
462
457
  ...us.returns.map(node => deduceTypeAnnotation(app, node, node.typeAnnotation, [process.name, us.name], [])),
463
458
  ...us.constants.map(node => deduceTypeAnnotation(app, node, node.typeAnnotation, [process.name, us.name], [])),
@@ -472,7 +467,6 @@ export function getProcessVariableSuggestionsAll(node: ProcessElement) {
472
467
  const processVariables = new CompletionProperty({
473
468
  name: process.name,
474
469
  value: process.name,
475
- noFurther: true,
476
470
  children: [
477
471
  ...process.params.map(node => deduceTypeAnnotation(app, node, node.typeAnnotation, [process.name], [])),
478
472
  ...process.returns.map(node => deduceTypeAnnotation(app, node, node.typeAnnotation, [process.name], [])),
@@ -487,7 +481,6 @@ export function getProcessVariableSuggestionsAll(node: ProcessElement) {
487
481
  name: processElem.name,
488
482
  value: processElem.name,
489
483
  icon: processElem.type,
490
- noFurther: true,
491
484
  children: processElem.variables.map(node => deduceTypeAnnotation(app, node, node.typeAnnotation, [process.name, processElem.name], [])),
492
485
  });
493
486
  scopeVariable.expanded = true;
@@ -501,7 +494,6 @@ export function getProcessVariableSuggestionsAll(node: ProcessElement) {
501
494
  name: processElem.name,
502
495
  value: processElem.name,
503
496
  icon: processElem.type,
504
- noFurther: true,
505
497
  children: processElem.constants.map(node => deduceTypeAnnotation(app, node, node.typeAnnotation, [process.name, processElem.name], [])),
506
498
  });
507
499
  scopeVariable.expanded = true;
@@ -514,7 +506,6 @@ export function getProcessVariableSuggestionsAll(node: ProcessElement) {
514
506
  name: processElem.name,
515
507
  value: processElem.name,
516
508
  icon: processElem.type,
517
- noFurther: true,
518
509
  children: [
519
510
  ...processElem.variables.map(node => deduceTypeAnnotation(app, node, node.typeAnnotation, [process.name, processElem.name], [])),
520
511
  ...processElem.returns.map(node => deduceTypeAnnotation(app, node, node.typeAnnotation, [process.name, processElem.name], [])),
@@ -56,7 +56,7 @@ import { DiagnosticRecord, Diagnostic, default as diagnosticManager } from '../m
56
56
  import formatUiTs from './createUiTs';
57
57
  import { primitiveTypeList } from '../concepts/basics/types/coreTypeList';
58
58
  import { traverse } from '../utils';
59
- import { getPlatformType } from './getMemberIdentifier';
59
+ import { getPlatformType } from './formatTsUtils';
60
60
 
61
61
  const EmbeddedTSFileLineMap: { [name: string]: number } = {
62
62
  Entity: 3,
@@ -146,7 +146,6 @@ const naslServer = {
146
146
  structure.sourceMap = result.sourceMap;
147
147
  this.file2NodeMap.set(result.filePath, structure);
148
148
  } catch (err) {
149
- console.log(err);
150
149
  }
151
150
  });
152
151
  (module as App).dataSources?.forEach((dataSource) => {
@@ -158,7 +157,6 @@ const naslServer = {
158
157
  dataSource.sourceMap = result.sourceMap;
159
158
  this.file2NodeMap.set(result.filePath, dataSource);
160
159
  } catch (err) {
161
- console.log(err);
162
160
  }
163
161
  dataSource.entities.forEach((entity) => {
164
162
  try {
@@ -168,7 +166,6 @@ const naslServer = {
168
166
  entity.sourceMap = result.sourceMap;
169
167
  this.file2NodeMap.set(result.filePath, entity);
170
168
  } catch (err) {
171
- console.log(err);
172
169
  }
173
170
  });
174
171
  });
@@ -181,7 +178,6 @@ const naslServer = {
181
178
  _interface.sourceMap = result.sourceMap;
182
179
  this.file2NodeMap.set(result.filePath, _interface);
183
180
  } catch (err) {
184
- console.log(err);
185
181
  }
186
182
  });
187
183
  module.enums.forEach((_enum) => {
@@ -192,7 +188,6 @@ const naslServer = {
192
188
  _enum.sourceMap = result.sourceMap;
193
189
  this.file2NodeMap.set(result.filePath, _enum);
194
190
  } catch (err) {
195
- console.log(err);
196
191
  }
197
192
  });
198
193
  module.logics.forEach((logic) => {
@@ -204,7 +199,6 @@ const naslServer = {
204
199
  logic.sourceMap = result.sourceMap;
205
200
  this.file2NodeMap.set(result.filePath, logic);
206
201
  } catch (err) {
207
- console.log(err);
208
202
  }
209
203
  });
210
204
 
@@ -218,7 +212,6 @@ const naslServer = {
218
212
  process.sourceMap = result.sourceMap;
219
213
  this.file2NodeMap.set(result.filePath, process);
220
214
  } catch (err) {
221
- console.log(err);
222
215
  }
223
216
  });
224
217
 
@@ -231,7 +224,6 @@ const naslServer = {
231
224
  role.sourceMap = result.sourceMap;
232
225
  this.file2NodeMap.set(result.filePath, role);
233
226
  } catch (err) {
234
- console.log(err);
235
227
  }
236
228
  });
237
229
  }
@@ -249,7 +241,6 @@ const naslServer = {
249
241
  naslServer.view2TSFile(view.children, results);
250
242
  }
251
243
  } catch (err) {
252
- console.log(err);
253
244
  }
254
245
  });
255
246
  }
@@ -391,6 +382,11 @@ const naslServer = {
391
382
  });
392
383
  return typeList;
393
384
  },
385
+ /**
386
+ * 获取 Convert 的可选类型
387
+ * @param node 传入当前已经选择的变量
388
+ * @returns 可以选择的类型数组
389
+ */
394
390
  async getTypeQuickinfo(node: BaseNode) {
395
391
  if (node && node instanceof BaseNode) {
396
392
  const callFunction = node.parentNode.parentNode;
@@ -478,9 +474,20 @@ const naslServer = {
478
474
  }
479
475
  return '';
480
476
  },
477
+ /**
478
+ * ts的 quickInfo方法,查询指定位置的详情
479
+ * @param args 文件信息数组
480
+ * @returns 查询到的
481
+ */
481
482
  _getTypeQuickinfo(args: any) {
482
483
  return this.messager.requestCommand('quickInfo', args) as unknown as { responseRequired: boolean; response: tsProtocol.QuickInfoResponseBody };
483
484
  },
485
+ /**
486
+ * 获取已经选中的内容的 下一级的内容
487
+ * @param node 已经选中的内容
488
+ * @param noFilterList 不过滤的key 的数据
489
+ * @returns 可以选择的数据数组
490
+ */
484
491
  getSelectNextCompletion(node: BaseNode, noFilterList?: Array<string>) {
485
492
  const { currentSource, fileNode } = naslServer.getCurrentSource(node);
486
493
  // console.log(currentSource, fileNode);
@@ -500,6 +507,11 @@ const naslServer = {
500
507
  _getSelectNextCompletion(args: any) {
501
508
  return this.messager.requestCommand('getSelectNextCompletion', args);
502
509
  },
510
+ /**
511
+ * 获取诊断信息
512
+ * @param fileNames 多个文件名
513
+ * @returns 诊断结果
514
+ */
503
515
  async getDiagnosticRecords(fileNames?: Array<string>): Promise<Array<DiagnosticRecord>> {
504
516
  const records = (await this.messager.requestCommand('getDiagnosticRecords', fileNames)) as Array<DiagnosticRecord>;
505
517
  return this._resolveDiagnosticRecords(records);
@@ -508,6 +520,11 @@ const naslServer = {
508
520
  const records = await this.getDiagnosticRecords(fileNames);
509
521
  // diagnosticManager.pushAll(records);
510
522
  },
523
+ /**
524
+ * 处理诊断结果
525
+ * @param records 结果
526
+ * @returns 过滤或者转换后的诊断结果
527
+ */
511
528
  _resolveDiagnosticRecords(records: Array<DiagnosticRecord>) {
512
529
  records.forEach((record) => {
513
530
  const node = this.file2NodeMap.get(record.filePath);
@@ -552,6 +569,11 @@ const naslServer = {
552
569
 
553
570
  return records;
554
571
  },
572
+ /**
573
+ * 额外的诊断
574
+ * @param fileNode 文件级别的节点
575
+ * @returns 诊断结果
576
+ */
555
577
  _attachDiagnostics(fileNode: BaseNode): Diagnostic[] {
556
578
  const diagnostics: Diagnostic[] = [];
557
579
  if (fileNode instanceof View) {
@@ -656,6 +678,12 @@ const naslServer = {
656
678
  }, 2000);
657
679
  }
658
680
  },
681
+ /**
682
+ * 单个问题的诊断处理
683
+ * @param diagnostic 诊断问题
684
+ * @param fileNode 页面节点
685
+ * @returns 处理后的结果
686
+ */
659
687
  _resolveDiagnostic(diagnostic: tsProtocol.DiagnosticWithFileName, fileNode: FileNode): Diagnostic {
660
688
  const minRange = this._findMinRange(diagnostic, fileNode);
661
689
  const tsErrorDetail = {
@@ -676,6 +704,12 @@ const naslServer = {
676
704
  };
677
705
  }
678
706
  },
707
+ /**
708
+ * 通过节点诊断反过来查找节点
709
+ * @param diagnostic 诊断信息
710
+ * @param fileNode 文件级别节点
711
+ * @returns 找到的节点
712
+ */
679
713
  _findMinRange(diagnostic: tsProtocol.DiagnosticWithFileName | tsProtocol.ReferencesResponseItem, fileNode: FileNode) {
680
714
  let minRange: MinRange;
681
715
  const sourceMap: SourceMap = fileNode.sourceMap;
@@ -717,6 +751,11 @@ const naslServer = {
717
751
  }
718
752
  return minRange;
719
753
  },
754
+ /**
755
+ * 查看当前节点是不是有引用
756
+ * @param node 节点
757
+ * @returns 查找到的数组
758
+ */
720
759
  async _isHaveRef(node: BaseNode) {
721
760
  const { currentSource, fileNode } = naslServer.getCurrentSource(node);
722
761
  let refsList: tsProtocol.ReferencesResponseItem[] = [];
@@ -1223,7 +1262,10 @@ const naslServer = {
1223
1262
  }
1224
1263
  // params修改 查找View不需要修改
1225
1264
  // 逻辑改名,触发了在定义里面的,element定义,的值,直接掠过
1226
- if (minRange.node instanceof View && (node instanceof Logic || node instanceof Param)) {
1265
+ /**
1266
+ 修改枚举名 引发查找到view ,以为viewElement有一个类型,但是渲染了两次,就过滤掉找到view的 内容
1267
+ */
1268
+ if (minRange.node instanceof View && (node instanceof Logic || node instanceof Param || node instanceof Enum)) {
1227
1269
  /**
1228
1270
  * 这里过滤一下,一些查找引用,重复的内容,直接屏蔽掉,防止操作重复
1229
1271
  * 因为在生成的时候 ,可能弄了一些副作用的引用
@@ -1246,6 +1288,10 @@ const naslServer = {
1246
1288
  if (minRange.node instanceof Logic && node !== minRange.node) {
1247
1289
  return null;
1248
1290
  }
1291
+
1292
+ if (node instanceof Param && minRange.node instanceof Interface) {
1293
+ return null;
1294
+ }
1249
1295
  } else {
1250
1296
  console.log('没找到节点需要排查');
1251
1297
  console.log(record, fileNode.sourceMap);
@@ -1449,7 +1495,7 @@ const naslServer = {
1449
1495
  * @returns 当前节点,最后输出所有节点
1450
1496
  */
1451
1497
  _recursionCreateResult(root: QuoteNode, map: Map<QuoteNode, Array<QuoteNode>>) {
1452
- const children = map.get(root).map((item: QuoteNode) => naslServer._recursionCreateResult(item, map));
1498
+ const children = (map.get(root) || []).map((item: QuoteNode) => naslServer._recursionCreateResult(item, map));
1453
1499
  if (children && children.length) {
1454
1500
  root.children = children;
1455
1501
  }
@@ -0,0 +1,4 @@
1
+ declare namespace nasl.annotation {
2
+ export function Entity():any;
3
+ export function EntityRelation(property: any):any;
4
+ }
@@ -0,0 +1,31 @@
1
+ declare namespace nasl.auth {
2
+ export function hasAuth(authPath: nasl.core.String): nasl.core.Boolean;
3
+ export function login(): Promise<void>;
4
+ export function logout(): Promise<void>;
5
+ export function encryptByAES(authPath: nasl.core.String): nasl.core.String;
6
+ export function decryptByAES(authPath: nasl.core.String): nasl.core.String;
7
+
8
+ export const userInfo: {
9
+ Status: nasl.core.String,
10
+ UserInfoExtend: {
11
+ Company: nasl.core.String,
12
+ JobLevel: nasl.core.String,
13
+ JobNum: nasl.core.String,
14
+ JobYear: nasl.core.String,
15
+ RealName: nasl.core.String,
16
+ NickName: nasl.core.String,
17
+ NameAndEmail: nasl.core.String,
18
+ Position: nasl.core.String,
19
+ Department: nasl.core.String,
20
+ EmployeeId: nasl.core.String,
21
+ },
22
+ UserName: nasl.core.String,
23
+ Email: nasl.core.String,
24
+ UserId: nasl.core.String,
25
+ Phone: nasl.core.String,
26
+ CreateTime: nasl.core.Long,
27
+ UpdateTime: nasl.core.Long,
28
+ LoginCount: nasl.core.Integer,
29
+ Source: nasl.core.String,
30
+ }
31
+ }
@@ -0,0 +1,5 @@
1
+ declare namespace nasl.browser {
2
+ export function requestFullscreen(): Promise<void>;
3
+ export function exitFullscreen(): Promise<void>;
4
+ export function getDistance(Point1: nasl.core.String, Point2: nasl.core.String): nasl.core.Double;
5
+ }