@lcap/nasl 2.20.0-beta.3 → 2.20.0-beta.5
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/automate/engine/index.d.ts +1 -1
- package/out/automate/engine/index.js +2 -3
- package/out/automate/engine/index.js.map +1 -1
- package/out/automate/engine/uniqueName.d.ts +1 -1
- package/out/automate/engine/uniqueName.js +2 -2
- package/out/automate/engine/uniqueName.js.map +1 -1
- package/out/automate/engine/utils.js +4 -1
- package/out/automate/engine/utils.js.map +1 -1
- package/out/automate/template/myProcess.d.ts +1 -1
- package/out/automate/template/myProcess.js +2 -2
- package/out/automate/template/myProcess.js.map +1 -1
- package/out/bak/translator.js +14 -22
- package/out/bak/translator.js.map +1 -1
- package/out/common/BaseNode.js +4 -1
- package/out/common/BaseNode.js.map +1 -1
- package/out/common/Command.d.ts +1 -0
- package/out/common/Command.js +5 -1
- package/out/common/Command.js.map +1 -1
- package/out/concepts/App__.d.ts +4 -0
- package/out/concepts/App__.js +30 -6
- package/out/concepts/App__.js.map +1 -1
- package/out/concepts/Assignee__.js +4 -3
- package/out/concepts/Assignee__.js.map +1 -1
- package/out/concepts/BatchAssignment__.js +3 -3
- package/out/concepts/BatchAssignment__.js.map +1 -1
- package/out/concepts/BindAttribute__.d.ts +7 -0
- package/out/concepts/BindAttribute__.js +271 -39
- package/out/concepts/BindAttribute__.js.map +1 -1
- package/out/concepts/BindDirective__.d.ts +7 -0
- package/out/concepts/BindDirective__.js +215 -16
- package/out/concepts/BindDirective__.js.map +1 -1
- package/out/concepts/BindStyle__.d.ts +7 -0
- package/out/concepts/BindStyle__.js +192 -2
- package/out/concepts/BindStyle__.js.map +1 -1
- package/out/concepts/CallFunction__.js +22 -8
- package/out/concepts/CallFunction__.js.map +1 -1
- package/out/concepts/CallInterface__.js +3 -2
- package/out/concepts/CallInterface__.js.map +1 -1
- package/out/concepts/CallLogic__.d.ts +3 -0
- package/out/concepts/CallLogic__.js +78 -89
- package/out/concepts/CallLogic__.js.map +1 -1
- package/out/concepts/CallQueryComponent__.js +20 -3
- package/out/concepts/CallQueryComponent__.js.map +1 -1
- package/out/concepts/ConfigGroup__.d.ts +1 -0
- package/out/concepts/ConfigGroup__.js +13 -0
- package/out/concepts/ConfigGroup__.js.map +1 -1
- package/out/concepts/ConfigProperty__.d.ts +19 -0
- package/out/concepts/ConfigProperty__.js +63 -0
- package/out/concepts/ConfigProperty__.js.map +1 -1
- package/out/concepts/Configuration__.d.ts +1 -0
- package/out/concepts/Configuration__.js +13 -0
- package/out/concepts/Configuration__.js.map +1 -1
- package/out/concepts/DataSource__.js +11 -3
- package/out/concepts/DataSource__.js.map +1 -1
- package/out/concepts/Destination__.d.ts +1 -0
- package/out/concepts/Destination__.js +61 -7
- package/out/concepts/Destination__.js.map +1 -1
- package/out/concepts/EntityProperty__.js +9 -1
- package/out/concepts/EntityProperty__.js.map +1 -1
- package/out/concepts/EnumItem__.d.ts +5 -5
- package/out/concepts/EnumItem__.js +6 -6
- package/out/concepts/Enum__.d.ts +20 -19
- package/out/concepts/Enum__.js +28 -1
- package/out/concepts/Enum__.js.map +1 -1
- package/out/concepts/ExternalDestination__.d.ts +1 -0
- package/out/concepts/ExternalDestination__.js +22 -4
- package/out/concepts/ExternalDestination__.js.map +1 -1
- package/out/concepts/ForEachStatement__.js +2 -0
- package/out/concepts/ForEachStatement__.js.map +1 -1
- package/out/concepts/Frontend__.d.ts +2 -1
- package/out/concepts/Frontend__.js.map +1 -1
- package/out/concepts/Identifier__.js +16 -5
- package/out/concepts/Identifier__.js.map +1 -1
- package/out/concepts/InterfaceParam__.js +9 -1
- package/out/concepts/InterfaceParam__.js.map +1 -1
- package/out/concepts/JSBlock__.js +5 -1
- package/out/concepts/JSBlock__.js.map +1 -1
- package/out/concepts/Logic__.d.ts +79 -79
- package/out/concepts/Logic__.js +30 -8
- package/out/concepts/Logic__.js.map +1 -1
- package/out/concepts/Match__.d.ts +2 -2
- package/out/concepts/Match__.js +29 -13
- package/out/concepts/Match__.js.map +1 -1
- package/out/concepts/MemberExpression__.js +9 -0
- package/out/concepts/MemberExpression__.js.map +1 -1
- package/out/concepts/Module__.d.ts +16 -0
- package/out/concepts/Module__.js +43 -0
- package/out/concepts/Module__.js.map +1 -1
- package/out/concepts/NewComposite__.d.ts +3 -4
- package/out/concepts/NewComposite__.js +99 -116
- package/out/concepts/NewComposite__.js.map +1 -1
- package/out/concepts/NewList__.d.ts +1 -0
- package/out/concepts/NewList__.js +22 -2
- package/out/concepts/NewList__.js.map +1 -1
- package/out/concepts/NewMap__.d.ts +1 -0
- package/out/concepts/NewMap__.js +43 -11
- package/out/concepts/NewMap__.js.map +1 -1
- package/out/concepts/OqlQueryComponent__.js +40 -12
- package/out/concepts/OqlQueryComponent__.js.map +1 -1
- package/out/concepts/Param__.js +10 -2
- package/out/concepts/Param__.js.map +1 -1
- package/out/concepts/ProcessElement__.js +2 -1
- package/out/concepts/ProcessElement__.js.map +1 -1
- package/out/concepts/ProcessOutcome__.js +1 -1
- package/out/concepts/ProcessOutcome__.js.map +1 -1
- package/out/concepts/ProcessOutcomes__.js +1 -1
- package/out/concepts/ProcessOutcomes__.js.map +1 -1
- package/out/concepts/Process__.js +1 -0
- package/out/concepts/Process__.js.map +1 -1
- package/out/concepts/Return__.js +13 -2
- package/out/concepts/Return__.js.map +1 -1
- package/out/concepts/StringInterpolation__.js +14 -2
- package/out/concepts/StringInterpolation__.js.map +1 -1
- package/out/concepts/StringLiteral__.js +6 -6
- package/out/concepts/StringLiteral__.js.map +1 -1
- package/out/concepts/StructureProperty__.js +9 -1
- package/out/concepts/StructureProperty__.js.map +1 -1
- package/out/concepts/TypeAnnotation__.d.ts +6 -3
- package/out/concepts/TypeAnnotation__.js +67 -13
- package/out/concepts/TypeAnnotation__.js.map +1 -1
- package/out/concepts/ValidationRule__.d.ts +1 -0
- package/out/concepts/ValidationRule__.js +53 -0
- package/out/concepts/ValidationRule__.js.map +1 -1
- package/out/concepts/Variable__.js +12 -1
- package/out/concepts/Variable__.js.map +1 -1
- package/out/concepts/ViewElement__.d.ts +1 -0
- package/out/concepts/ViewElement__.js +24 -1
- package/out/concepts/ViewElement__.js.map +1 -1
- package/out/concepts/View__.d.ts +1 -3
- package/out/concepts/View__.js +33 -12
- package/out/concepts/View__.js.map +1 -1
- package/out/concepts/basics/stdlib/nasl.collection.js +6 -1
- package/out/concepts/basics/stdlib/nasl.collection.js.map +1 -1
- package/out/concepts/basics/stdlib/nasl.configuration.js +3 -0
- package/out/concepts/basics/stdlib/nasl.configuration.js.map +1 -1
- package/out/concepts/basics/stdlib/nasl.core.d.ts +2 -0
- package/out/concepts/basics/stdlib/nasl.core.js +34 -0
- package/out/concepts/basics/stdlib/nasl.core.js.map +1 -1
- package/out/concepts/basics/stdlib/nasl.util.js +4 -2
- package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
- package/out/concepts/basics/types/index.d.ts +1 -0
- package/out/concepts/basics/types/index.js +3 -1
- package/out/concepts/basics/types/index.js.map +1 -1
- package/out/concepts/index__.d.ts +0 -1
- package/out/concepts/index__.js +0 -1
- package/out/concepts/index__.js.map +1 -1
- package/out/enums/KEYWORDS.js +8 -0
- package/out/enums/KEYWORDS.js.map +1 -1
- package/out/generator/genBundleFiles.js +24 -5
- package/out/generator/genBundleFiles.js.map +1 -1
- package/out/generator/genReleaseBody.d.ts +3 -3
- package/out/generator/genReleaseBody.js +98 -23
- package/out/generator/genReleaseBody.js.map +1 -1
- package/out/generator/permission.d.ts +3 -10
- package/out/generator/permission.js +43 -21
- package/out/generator/permission.js.map +1 -1
- package/out/index.d.ts +1 -1
- package/out/index.js +2 -1
- package/out/index.js.map +1 -1
- package/out/server/entity2LogicNamespace.js +2 -20
- package/out/server/entity2LogicNamespace.js.map +1 -1
- package/out/server/extendBaseNode.js +16 -5
- package/out/server/extendBaseNode.js.map +1 -1
- package/out/server/formatTsUtils.d.ts +2 -1
- package/out/server/formatTsUtils.js +40 -10
- package/out/server/formatTsUtils.js.map +1 -1
- package/out/server/getLogics.d.ts +2 -2
- package/out/server/getLogics.js +3 -3
- package/out/server/getLogics.js.map +1 -1
- package/out/server/getMemberIdentifier.d.ts +1 -0
- package/out/server/getMemberIdentifier.js +27 -1
- package/out/server/getMemberIdentifier.js.map +1 -1
- package/out/server/index.js +1 -0
- package/out/server/index.js.map +1 -1
- package/out/server/naslServer.d.ts +7 -1
- package/out/server/naslServer.js +558 -62
- package/out/server/naslServer.js.map +1 -1
- package/out/server/translator.js +109 -33
- package/out/server/translator.js.map +1 -1
- package/out/service/storage/init.js +22 -2
- package/out/service/storage/init.js.map +1 -1
- package/out/templator/genCreateBlock.js +1 -3
- package/out/templator/genCreateBlock.js.map +1 -1
- package/out/templator/genCurdEditMultipleKeyBlock.js +1 -3
- package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
- package/out/templator/genCurdMultipleKeyBlock.js +2 -4
- package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
- package/out/templator/genGetBlock.js +1 -1
- package/out/templator/genGetBlock.js.map +1 -1
- package/out/templator/genGridViewBlock.js +2 -2
- package/out/templator/genGridViewBlock.js.map +1 -1
- package/out/templator/genListViewBlock.js +7 -1
- package/out/templator/genListViewBlock.js.map +1 -1
- package/out/templator/genSelectBlock.js +1 -1
- package/out/templator/genSelectBlock.js.map +1 -1
- package/out/templator/genTableBlock.js +2 -2
- package/out/templator/genTableBlock.js.map +1 -1
- package/out/templator/genUpdateBlock.js +2 -3
- package/out/templator/genUpdateBlock.js.map +1 -1
- package/out/translator/index.js +4 -1
- package/out/translator/index.js.map +1 -1
- package/out/utils/traverse.js +8 -2
- package/out/utils/traverse.js.map +1 -1
- package/package.json +2 -2
- package/sandbox/stdlib/dist/nasl.logging.js +0 -0
- package/sandbox/stdlib/dist/nasl.util.js +0 -0
- package/sandbox/stdlib/nasl.collection.ts +1 -0
- package/sandbox/stdlib/nasl.core.ts +34 -0
- package/sandbox/stdlib/nasl.oql.ts +71 -15
- package/sandbox/stdlib/nasl.util.ts +9 -3
- package/src/automate/engine/dist/index.dev.js +517 -0
- package/src/automate/engine/index.js +2 -3
- package/src/automate/engine/uniqueName.js +2 -2
- package/src/automate/engine/utils.js +4 -2
- package/src/automate/template/myProcess.js +2 -2
- package/src/bak/translator.js +16 -25
- package/src/common/BaseNode.ts +3 -1
- package/src/common/Command.ts +4 -0
- package/src/common/dist/BaseNode.js +1101 -0
- package/src/concepts/App__.ts +36 -7
- package/src/concepts/Assignee__.ts +4 -3
- package/src/concepts/BatchAssignment__.ts +3 -3
- package/src/concepts/BindAttribute__.ts +301 -38
- package/src/concepts/BindDirective__.ts +205 -30
- package/src/concepts/BindStyle__.ts +188 -24
- package/src/concepts/CallFunction__.ts +55 -10
- package/src/concepts/CallInterface__.ts +3 -2
- package/src/concepts/CallLogic__.ts +110 -90
- package/src/concepts/CallQueryComponent__.ts +18 -3
- package/src/concepts/ConfigGroup__.ts +17 -4
- package/src/concepts/ConfigProperty__.ts +72 -4
- package/src/concepts/Configuration__.ts +14 -5
- package/src/concepts/DataSource__.ts +10 -3
- package/src/concepts/Destination__.ts +61 -7
- package/src/concepts/EntityProperty__.ts +7 -1
- package/src/concepts/EnumItem__.ts +6 -6
- package/src/concepts/Enum__.ts +22 -19
- package/src/concepts/ExternalDestination__.ts +29 -9
- package/src/concepts/ForEachStatement__.ts +2 -0
- package/src/concepts/Frontend__.ts +2 -1
- package/src/concepts/Identifier__.ts +16 -5
- package/src/concepts/InterfaceParam__.ts +7 -1
- package/src/concepts/JSBlock__.ts +3 -2
- package/src/concepts/Logic__.ts +110 -89
- package/src/concepts/Match__.ts +53 -14
- package/src/concepts/MemberExpression__.ts +6 -0
- package/src/concepts/Module__.ts +57 -0
- package/src/concepts/NewComposite__.ts +104 -131
- package/src/concepts/NewList__.ts +23 -2
- package/src/concepts/NewMap__.ts +48 -24
- package/src/concepts/OqlQueryComponent__.ts +40 -20
- package/src/concepts/Param__.ts +178 -176
- package/src/concepts/ProcessElement__.ts +2 -1
- package/src/concepts/ProcessOutcome__.ts +1 -1
- package/src/concepts/ProcessOutcomes__.ts +1 -1
- package/src/concepts/Process__.ts +1 -0
- package/src/concepts/Return__.ts +10 -2
- package/src/concepts/StringInterpolation__.ts +19 -7
- package/src/concepts/StringLiteral__.ts +7 -6
- package/src/concepts/StructureProperty__.ts +7 -1
- package/src/concepts/TypeAnnotation__.ts +102 -15
- package/src/concepts/ValidationRule__.ts +58 -9
- package/src/concepts/Variable__.ts +13 -1
- package/src/concepts/ViewElement__.ts +47 -2
- package/src/concepts/View__.ts +39 -18
- package/src/concepts/basics/stdlib/dist/nasl.util.js +1602 -0
- package/src/concepts/basics/stdlib/dist/reference2TypeAnnotationList.js +24 -0
- package/src/concepts/basics/stdlib/nasl.collection.ts +6 -1
- package/src/concepts/basics/stdlib/nasl.configuration.ts +3 -0
- package/src/concepts/basics/stdlib/nasl.core.ts +33 -2
- package/src/concepts/basics/stdlib/nasl.util.ts +4 -2
- package/src/concepts/basics/types/index.ts +1 -0
- package/src/concepts/dist/BindAttribute__.js +795 -0
- package/src/concepts/dist/BindEvent__.js +732 -0
- package/src/concepts/dist/CallFunction__.js +527 -0
- package/src/concepts/dist/CallLogic__.js +932 -0
- package/src/concepts/dist/Destination__.js +708 -0
- package/src/concepts/dist/ExternalDestination__.js +298 -0
- package/src/concepts/dist/Identifier__.js +311 -0
- package/src/concepts/dist/StringInterpolation__.js +231 -0
- package/src/concepts/dist/TypeAnnotation__.js +834 -0
- package/src/concepts/dist/ViewElement__.js +1692 -0
- package/src/concepts/dist/View__.js +1601 -0
- package/src/concepts/index__.ts +0 -1
- package/src/enums/KEYWORDS.ts +8 -0
- package/src/generator/dist/genBundleFiles.js +261 -0
- package/src/generator/dist/genMetaData.js +245 -0
- package/src/generator/dist/permission.js +405 -0
- package/src/generator/genBundleFiles.ts +24 -5
- package/src/generator/genReleaseBody.ts +77 -31
- package/src/generator/permission.ts +47 -21
- package/src/index.ts +1 -1
- package/src/server/entity2LogicNamespace.ts +2 -20
- package/src/server/extendBaseNode.ts +15 -5
- package/src/server/formatTsUtils.ts +41 -10
- package/src/server/getLogics.ts +4 -4
- package/src/server/getMemberIdentifier.ts +27 -1
- package/src/server/index.ts +2 -0
- package/src/server/naslServer.ts +555 -63
- package/src/server/translator.ts +96 -34
- package/src/service/storage/dist/init.js +579 -0
- package/src/service/storage/init.ts +23 -3
- package/src/templator/dist/genEditTableBlock.js +204 -0
- package/src/templator/dist/genGridViewBlock.js +265 -0
- package/src/templator/dist/genListViewBlock.js +84 -0
- package/src/templator/dist/genTableBlock.js +209 -0
- package/src/templator/dist/utils.js +527 -0
- package/src/templator/genCreateBlock.ts +1 -3
- package/src/templator/genCurdEditMultipleKeyBlock.ts +1 -3
- package/src/templator/genCurdMultipleKeyBlock.ts +2 -4
- package/src/templator/genGetBlock.ts +1 -1
- package/src/templator/genGridViewBlock.ts +3 -4
- package/src/templator/genListViewBlock.ts +9 -3
- package/src/templator/genSelectBlock.ts +1 -1
- package/src/templator/genTableBlock.ts +3 -3
- package/src/templator/genUpdateBlock.ts +2 -3
- package/src/translator/index.ts +3 -1
- package/src/utils/traverse.ts +10 -2
- package/ts-worker/lib/tsserver.js +10 -2
- package/ts-worker/package.json +1 -0
- package/ts-worker/webpack.config.js +11 -2
- package/out/concepts/ConstructArgument__.d.ts +0 -40
- package/out/concepts/ConstructArgument__.js +0 -108
- package/out/concepts/ConstructArgument__.js.map +0 -1
- package/out/concepts/Construct__.d.ts +0 -189
- package/out/concepts/Construct__.js +0 -340
- package/out/concepts/Construct__.js.map +0 -1
- package/out/templator/sql-parser/index.d.ts +0 -1
- package/out/templator/sql-parser/index.js +0 -228
- package/out/templator/sql-parser/index.js.map +0 -1
- package/out/templator/sql-parser/parser.js +0 -26664
- package/out/templator/sql-parser/parser.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Logic, View, BaseNode, CallLogic, ViewElement, BindEvent, BindAttribute, App, Entity, Module, Frontend } from
|
|
1
|
+
import { Logic, View, BaseNode, CallLogic, ViewElement, BindEvent, BindAttribute, App, Entity, Module, Frontend, BindStyle, BindDirective } from "../concepts";
|
|
2
2
|
import { processToTreeFragment } from '../server/process2LogicNamespace';
|
|
3
3
|
|
|
4
4
|
type Usage = {
|
|
@@ -48,7 +48,7 @@ async function findViewLogicReferences(logic: Logic, vis: Set<Logic> = new Set()
|
|
|
48
48
|
async function dfs(usage: Usage) {
|
|
49
49
|
if (usage.node instanceof CallLogic) {
|
|
50
50
|
const logic = usage.node.logic;
|
|
51
|
-
if (!vis.has(logic)) {
|
|
51
|
+
if (!vis.has(logic) && logic) {
|
|
52
52
|
vis.add(logic);
|
|
53
53
|
await findViewLogicReferences(logic, vis);
|
|
54
54
|
}
|
|
@@ -78,7 +78,7 @@ async function findUIReferences(logic: Logic) {
|
|
|
78
78
|
|
|
79
79
|
const res: Array<View | ViewElement> = [];
|
|
80
80
|
function dfs(usage: Usage, parent: Usage = null) {
|
|
81
|
-
if ((usage.node instanceof BindEvent || usage.node instanceof BindAttribute)
|
|
81
|
+
if ((usage.node instanceof BindEvent || usage.node instanceof BindAttribute || usage.node instanceof BindStyle || usage.node instanceof BindDirective)
|
|
82
82
|
&& (parent.node instanceof View || parent.node instanceof ViewElement))
|
|
83
83
|
res.push(parent.node);
|
|
84
84
|
|
|
@@ -102,13 +102,11 @@ function findResourcesOfUI(view: View | ViewElement) {
|
|
|
102
102
|
path: node.authPath,
|
|
103
103
|
type: 'page',
|
|
104
104
|
});
|
|
105
|
-
else if (node instanceof ViewElement) {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
type: 'component',
|
|
111
|
-
});
|
|
105
|
+
else if (node instanceof ViewElement && node.auth) {
|
|
106
|
+
res.push({
|
|
107
|
+
path: node.authPath,
|
|
108
|
+
type: 'component',
|
|
109
|
+
});
|
|
112
110
|
}
|
|
113
111
|
node = node.parentNode;
|
|
114
112
|
}
|
|
@@ -160,7 +158,7 @@ function removeRedundantResourceData2(resources: ResourceNode[][]) {
|
|
|
160
158
|
});
|
|
161
159
|
}
|
|
162
160
|
|
|
163
|
-
async function findResourcesOfLogic(logic: Logic) {
|
|
161
|
+
async function findResourcesOfLogic(logic: Logic, uploaders: Map<string, ViewElement[]>) {
|
|
164
162
|
const logics = await findViewLogicReferences(logic);
|
|
165
163
|
logics.push(logic);
|
|
166
164
|
|
|
@@ -168,6 +166,12 @@ async function findResourcesOfLogic(logic: Logic) {
|
|
|
168
166
|
for (const logic of logics) {
|
|
169
167
|
UIs = UIs.concat(await findUIReferences(logic));
|
|
170
168
|
}
|
|
169
|
+
|
|
170
|
+
const service = logic.toService() as { url: { method: string, path: string } };
|
|
171
|
+
if (uploaders.has(service.url.path)) {
|
|
172
|
+
UIs = UIs.concat(uploaders.get(service.url.path));
|
|
173
|
+
}
|
|
174
|
+
|
|
171
175
|
UIs = Array.from(new Set(UIs));
|
|
172
176
|
|
|
173
177
|
const res = UIs.map((ui) => findResourcesOfUI(ui));
|
|
@@ -233,29 +237,51 @@ function getAllLogics(app: App) {
|
|
|
233
237
|
};
|
|
234
238
|
}
|
|
235
239
|
|
|
240
|
+
function findUploaders(app: App) {
|
|
241
|
+
const map = new Map<string, ViewElement[]>();
|
|
242
|
+
app.traverseChildren((node) => {
|
|
243
|
+
if (node instanceof ViewElement && node.tag?.includes('uploader')) {
|
|
244
|
+
const urlAttr = node.bindAttrs.find((item) => item.name === 'url');
|
|
245
|
+
const url = urlAttr?.value;
|
|
246
|
+
if (url) {
|
|
247
|
+
if (!map.has(url))
|
|
248
|
+
map.set(url, [node]);
|
|
249
|
+
else
|
|
250
|
+
map.get(url).push(node);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
});
|
|
254
|
+
return map;
|
|
255
|
+
}
|
|
256
|
+
|
|
236
257
|
export async function genPermissionData(app: App) {
|
|
237
258
|
// console.time('xxx');
|
|
238
259
|
openCache();
|
|
239
260
|
const logicPageResourceDtoList: { [key: string]: ResourceNode[][] } = {};
|
|
240
|
-
const resourceList: string[] = [];
|
|
241
|
-
const resourceDataList: { value: string, type: 'logic', description: string }[] = [];
|
|
242
261
|
const { logics, processLogics } = getAllLogics(app);
|
|
262
|
+
const uploaders = findUploaders(app);
|
|
243
263
|
for (const logic of [...logics, ...processLogics]) {
|
|
244
|
-
const resources = await findResourcesOfLogic(logic);
|
|
264
|
+
const resources = await findResourcesOfLogic(logic, uploaders);
|
|
245
265
|
if (resources.length === 0)
|
|
246
266
|
continue;
|
|
247
267
|
|
|
248
268
|
const service = logics.includes(logic) ? logic.toService() : logic.toProcessService() as { url: { method: string, path: string } };
|
|
249
269
|
const key = `${service.url.path}:${service.url.method}`;
|
|
250
270
|
logicPageResourceDtoList[key] = resources;
|
|
251
|
-
resourceList.push(key);
|
|
252
|
-
resourceDataList.push({
|
|
253
|
-
value: key,
|
|
254
|
-
type: 'logic',
|
|
255
|
-
description: logic.description,
|
|
256
|
-
});
|
|
257
271
|
}
|
|
258
272
|
closeCache();
|
|
259
273
|
// console.timeEnd('xxx');
|
|
260
|
-
return
|
|
274
|
+
return logicPageResourceDtoList;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
export function genLogicAuthFlag(app: App) {
|
|
278
|
+
let flag = false;
|
|
279
|
+
app.traverseChildren((node) => {
|
|
280
|
+
if(flag) return;
|
|
281
|
+
|
|
282
|
+
if((node instanceof View || node instanceof ViewElement) && node.auth)
|
|
283
|
+
flag = true;
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
return flag;
|
|
261
287
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { EventEmitter, EventPayload, BaseNode } from './common';
|
|
2
2
|
export * from './concepts';
|
|
3
|
-
export { genBundleFiles, genFrontendBundleFiles, genMetaData, genReleaseBody, genPermissionData } from './generator';
|
|
3
|
+
export { genBundleFiles, genFrontendBundleFiles, genMetaData, genReleaseBody, genPermissionData, genLogicAuthFlag } from './generator';
|
|
4
4
|
export * from './translator';
|
|
5
5
|
// export { default as diagnosticManager } from './manager/diagnostic';
|
|
6
6
|
export { default as server, NaslServer } from './server';
|
|
@@ -138,26 +138,6 @@ export function entity2LogicNamespace(entity: Entity) {
|
|
|
138
138
|
}),
|
|
139
139
|
required: true,
|
|
140
140
|
}),
|
|
141
|
-
new Param({
|
|
142
|
-
name: 'properties',
|
|
143
|
-
defaultExpression: new AnonymousFunction({
|
|
144
|
-
description: '',
|
|
145
|
-
params: [
|
|
146
|
-
new Param({
|
|
147
|
-
name: 'item',
|
|
148
|
-
typeAnnotation: new TypeAnnotation({
|
|
149
|
-
typeKind: 'reference',
|
|
150
|
-
typeNamespace: entity.getNamespace(),
|
|
151
|
-
typeName: entity.name,
|
|
152
|
-
}),
|
|
153
|
-
}),
|
|
154
|
-
],
|
|
155
|
-
body: new NewList({
|
|
156
|
-
concept: 'NewList',
|
|
157
|
-
}),
|
|
158
|
-
}),
|
|
159
|
-
required: false,
|
|
160
|
-
}),
|
|
161
141
|
],
|
|
162
142
|
body: [],
|
|
163
143
|
returns: [
|
|
@@ -181,6 +161,7 @@ export function entity2LogicNamespace(entity: Entity) {
|
|
|
181
161
|
name: 'filter',
|
|
182
162
|
description: '',
|
|
183
163
|
params: [
|
|
164
|
+
// 实体的 updateBy、deleteBy 方法的 filter 参数后端要求使用 _ 变量名,类型为本实体
|
|
184
165
|
new Param({
|
|
185
166
|
name: '_',
|
|
186
167
|
typeAnnotation: new TypeAnnotation({
|
|
@@ -246,6 +227,7 @@ export function entity2LogicNamespace(entity: Entity) {
|
|
|
246
227
|
name: 'filter',
|
|
247
228
|
description: '',
|
|
248
229
|
params: [
|
|
230
|
+
// 实体的 updateBy、deleteBy 方法的 filter 参数后端要求使用 _ 变量名,类型为本实体
|
|
249
231
|
new Param({
|
|
250
232
|
name: '_',
|
|
251
233
|
typeAnnotation: new TypeAnnotation({
|
|
@@ -87,7 +87,10 @@ BaseNode.prototype.changeName = async function changeName(newValue: string, upda
|
|
|
87
87
|
*/
|
|
88
88
|
const res = naslServer._renamePrepare(this, refsList, newValue);
|
|
89
89
|
if (res.length <= 1) {
|
|
90
|
-
(this
|
|
90
|
+
if (this.concept === 'enumItem') {
|
|
91
|
+
(this as any).setValue(newValue);
|
|
92
|
+
} else
|
|
93
|
+
(this as SetNameNode).setName(newValue);
|
|
91
94
|
} else {
|
|
92
95
|
const callback = (value: boolean) => {
|
|
93
96
|
if (value) {
|
|
@@ -208,7 +211,11 @@ BaseNode.prototype.prepareDelete = async function prepareDelete() {
|
|
|
208
211
|
App.emit('collect:end');
|
|
209
212
|
} else {
|
|
210
213
|
this.delete();
|
|
214
|
+
if (node instanceof Frontend) {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
211
217
|
}
|
|
218
|
+
return;
|
|
212
219
|
} else {
|
|
213
220
|
if (node instanceof Frontend) {
|
|
214
221
|
let viewPath = (this as FileNode).getEmbeddedFilePath();
|
|
@@ -226,7 +233,6 @@ BaseNode.prototype.prepareDelete = async function prepareDelete() {
|
|
|
226
233
|
}
|
|
227
234
|
return null;
|
|
228
235
|
}).filter((record) => !!record);
|
|
229
|
-
console.log(result);
|
|
230
236
|
const App = this.rootNode;
|
|
231
237
|
App.emit('collect:start', {
|
|
232
238
|
actionMsg: `删除端${node.name}`,
|
|
@@ -256,7 +262,11 @@ BaseNode.prototype.prepareDelete = async function prepareDelete() {
|
|
|
256
262
|
return null;
|
|
257
263
|
const minRange: MinRange = naslServer._findMinRange(record, fileNode as FileNode);
|
|
258
264
|
if (minRange) {
|
|
259
|
-
|
|
265
|
+
/**
|
|
266
|
+
* 调用方是 调用逻辑或者跳转页面, 去删除对应位置的内容
|
|
267
|
+
* 如果是跳转页面,因为流程下的特殊翻译,需要过滤下 非页面下的参数修改,查找到页面跳转
|
|
268
|
+
*/
|
|
269
|
+
if (minRange.node instanceof CallLogic || (node.parentNode instanceof View && minRange.node instanceof Destination)) {
|
|
260
270
|
minRange.node.deleteCalleeArg(Index);
|
|
261
271
|
}
|
|
262
272
|
}
|
|
@@ -365,14 +375,14 @@ BaseNode.prototype.addParamsPrepare = async function addParamsPrepare(needAdd =
|
|
|
365
375
|
/**
|
|
366
376
|
* 在原型上增加方法来调用
|
|
367
377
|
*/
|
|
368
|
-
BaseNode.prototype.getCurrentTypeAnnotation = async function getCurrentTypeAnnotation() {
|
|
378
|
+
BaseNode.prototype.getCurrentTypeAnnotation = async function getCurrentTypeAnnotation(outTime? :number) {
|
|
369
379
|
try {
|
|
370
380
|
/**
|
|
371
381
|
* 查找这个节点是不是有依赖
|
|
372
382
|
*/
|
|
373
383
|
const app = this.getAncestor('App');
|
|
374
384
|
const naslServer = (app as any).naslServer as NaslServer;
|
|
375
|
-
return naslServer.getCurrentTypeAnnotation(this);
|
|
385
|
+
return naslServer.getCurrentTypeAnnotation(this, outTime || 2000);
|
|
376
386
|
} catch (err) {
|
|
377
387
|
console.log(err);
|
|
378
388
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BaseNode, Identifier, TypeAnnotation, StructureProperty, Entity, Structure, EntityProperty, Param, MemberExpression, CompletionProperty, Variable, Return, Logic } from '..';
|
|
1
|
+
import { BaseNode, Identifier, TypeAnnotation, StructureProperty, Entity, Structure, EntityProperty, Param, MemberExpression, CompletionProperty, Variable, Return, Logic, ConfigProperty } from '..';
|
|
2
2
|
import { getNaslNodeByNodeCallee } from '../automate/engine/utils';
|
|
3
3
|
|
|
4
4
|
interface variableItem {
|
|
@@ -29,6 +29,11 @@ function formatTs2TypeString(displayParts: Array<{ text: string; kind: string }>
|
|
|
29
29
|
});
|
|
30
30
|
return str;
|
|
31
31
|
}
|
|
32
|
+
|
|
33
|
+
function isValidName(str: string) {
|
|
34
|
+
const regex = /^[a-zA-Z][a-zA-Z0-9_]*$/;
|
|
35
|
+
return regex.test(str);
|
|
36
|
+
}
|
|
32
37
|
/**
|
|
33
38
|
* 解析 Completion 和 QuickInfo 的 displayString
|
|
34
39
|
* 生成 TypeAnnotation
|
|
@@ -45,16 +50,19 @@ export function type2TypeAnnotation(oldType: Array<any> | {}): TypeAnnotation {
|
|
|
45
50
|
let typeAnnotation: TypeAnnotation;
|
|
46
51
|
try {
|
|
47
52
|
const { typeName, typeNamespace, typeArguments, typeKind, properties } = type as any;
|
|
48
|
-
if (typeKind === 'anonymousStructure'
|
|
53
|
+
if (typeKind === 'anonymousStructure') {
|
|
49
54
|
// 自定义类型
|
|
50
55
|
const newProperties: StructureProperty[] = [];
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
if (Array.isArray(properties) && properties.length) {
|
|
57
|
+
properties.forEach((item) => {
|
|
58
|
+
if (!item?.name?.startsWith('__')) {
|
|
59
|
+
// 如果没有获取到类型,就默认塞一个string
|
|
60
|
+
const itemType = type2TypeAnnotation(item.typeInfo) || TypeAnnotation.createPrimitive('String');
|
|
61
|
+
const structureProperty = StructureProperty.from({ name: item.name, typeAnnotation: itemType }, typeAnnotation, 'properties');
|
|
62
|
+
newProperties.push(structureProperty);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
58
66
|
typeAnnotation = TypeAnnotation.createTypeAnonymousStructure(newProperties);
|
|
59
67
|
} else if (!typeName || typeName === 'Promise' || typeName === 'nasl' || typeName === '___IDENTIFIER__') {
|
|
60
68
|
return null;
|
|
@@ -225,7 +233,7 @@ export function getPlatformType(type: string): string {
|
|
|
225
233
|
return tsType;
|
|
226
234
|
}
|
|
227
235
|
export function isNoChildType(type: String) {
|
|
228
|
-
return type?.startsWith('nasl.core') || type?.startsWith('app.enums');
|
|
236
|
+
return (type?.startsWith('nasl.core') && !['String', 'Text', 'Email'].includes(type.split('.')[2])) || type?.startsWith('app.enums');
|
|
229
237
|
}
|
|
230
238
|
function findNode(typeKey: string, node: BaseNode) {
|
|
231
239
|
let newType: Structure | Logic;
|
|
@@ -327,6 +335,11 @@ function getAStructureScopeType(type: string, parent: any, node: BaseNode) {
|
|
|
327
335
|
if (typeKey && typeKey.startsWith('dataSources')) {
|
|
328
336
|
typeKey = 'app.' + typeKey;
|
|
329
337
|
}
|
|
338
|
+
// 如果ls传过来的名字是不合法的就隐藏
|
|
339
|
+
if (!isValidName(name)) {
|
|
340
|
+
console.warn(item, '获取变量不展示');
|
|
341
|
+
return null;
|
|
342
|
+
}
|
|
330
343
|
res.push({
|
|
331
344
|
name,
|
|
332
345
|
typeKey,
|
|
@@ -644,3 +657,21 @@ export function formatFrontEndVariables(frontEndVariables: Array<Variable>) {
|
|
|
644
657
|
});
|
|
645
658
|
return result;
|
|
646
659
|
}
|
|
660
|
+
|
|
661
|
+
export function formatConfigProperties(configProperties: Array<ConfigProperty>) {
|
|
662
|
+
const result = configProperties.map((item) => {
|
|
663
|
+
const namespace = item.getNamespace();
|
|
664
|
+
const newItem: any = {
|
|
665
|
+
name: item.name,
|
|
666
|
+
value: item.name,
|
|
667
|
+
expression: new Identifier({
|
|
668
|
+
name: item.name,
|
|
669
|
+
namespace,
|
|
670
|
+
}),
|
|
671
|
+
icon: 'configProperty',
|
|
672
|
+
calleewholeKey: item.calleewholeKey,
|
|
673
|
+
};
|
|
674
|
+
return newItem;
|
|
675
|
+
});
|
|
676
|
+
return result;
|
|
677
|
+
}
|
package/src/server/getLogics.ts
CHANGED
|
@@ -57,9 +57,9 @@ function iterator(tree: FakeNode | FakeProcessNode, searchContent: string, fakeN
|
|
|
57
57
|
function toHump(name: string): string {
|
|
58
58
|
return name.replace(/\-(\w)/g, (all, letter) => letter.toUpperCase());
|
|
59
59
|
}
|
|
60
|
-
export async function getLogics(node: CallLogic | BindEvent| Identifier, needAllLogic: boolean = true) {
|
|
60
|
+
export async function getLogics(node: CallLogic | BindEvent| Identifier | Logic, needAllLogic: boolean = true) {
|
|
61
61
|
const app = node.rootNode as App;
|
|
62
|
-
if (node.concept === 'CallLogic' || node.concept === 'BindEvent') {
|
|
62
|
+
if (node.concept === 'CallLogic' || node.concept === 'BindEvent' || node.concept === 'Logic') {
|
|
63
63
|
const result = [];
|
|
64
64
|
|
|
65
65
|
if (needAllLogic) {
|
|
@@ -202,7 +202,7 @@ export async function getLogics(node: CallLogic | BindEvent| Identifier, needAll
|
|
|
202
202
|
new Namespace({
|
|
203
203
|
name: 'category',
|
|
204
204
|
path: `configuration`,
|
|
205
|
-
title: '
|
|
205
|
+
title: '应用信息',
|
|
206
206
|
logics: stdlibNamespace.findChild('configuration').logics,
|
|
207
207
|
expanded: false,
|
|
208
208
|
}),
|
|
@@ -243,7 +243,7 @@ export async function getLogics(node: CallLogic | BindEvent| Identifier, needAll
|
|
|
243
243
|
new Namespace({
|
|
244
244
|
name: 'category',
|
|
245
245
|
path: `configuration`,
|
|
246
|
-
title: '
|
|
246
|
+
title: '应用信息',
|
|
247
247
|
logics: stdlibNamespace.findChild('configuration').logics.filter((item) => item.name !== 'getCurrentIp'),
|
|
248
248
|
expanded: false,
|
|
249
249
|
}),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseNode, CompletionProperty, App, Variable, Identifier, MemberExpression, Enum, NullLiteral, BooleanLiteral, Param, BindAttribute, LogicItem, TypeAnnotation, StructureProperty, Entity, Structure, EntityProperty, Frontend, View } from '..';
|
|
2
|
-
import { formatVariableData, formatFrontEndVariables } from './formatTsUtils';
|
|
2
|
+
import { formatVariableData, formatFrontEndVariables, formatConfigProperties } from './formatTsUtils';
|
|
3
3
|
|
|
4
4
|
// 简单实现一版本的格式化nums
|
|
5
5
|
export function formatEnums(enums: Array<Enum>) {
|
|
@@ -274,3 +274,29 @@ export async function getSelectNextCompletionData(node: Identifier, completionPr
|
|
|
274
274
|
return completionData;
|
|
275
275
|
}
|
|
276
276
|
}
|
|
277
|
+
|
|
278
|
+
// 获取枚举
|
|
279
|
+
export function getConfigsIdentifier(node: BaseNode): CompletionProperty[] {
|
|
280
|
+
const app = node.rootNode as App;
|
|
281
|
+
const groups = app?.configuration.groups;
|
|
282
|
+
const customGroup = groups.find((group) => group.name === 'custom');
|
|
283
|
+
const properties = customGroup ? customGroup.properties : [];
|
|
284
|
+
const newProperties = formatConfigProperties(properties);
|
|
285
|
+
// 添加依赖库的枚举选择
|
|
286
|
+
const modules = app?.dependencies?.filter((module) => module.type === 'extension') || [];
|
|
287
|
+
const extensionConfigProperties: any[] = [];
|
|
288
|
+
modules.forEach((module) => {
|
|
289
|
+
const groups = module?.configuration?.groups || [];
|
|
290
|
+
const customGroup = groups.find((group) => group.name === 'custom');
|
|
291
|
+
const properties = customGroup ? customGroup.properties : [];
|
|
292
|
+
if (properties.length) {
|
|
293
|
+
extensionConfigProperties.push({
|
|
294
|
+
name: module.name,
|
|
295
|
+
concept: 'Module',
|
|
296
|
+
icon: 'depend-dataSource',
|
|
297
|
+
children: formatConfigProperties(properties),
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
});
|
|
301
|
+
return newProperties.concat(extensionConfigProperties);
|
|
302
|
+
}
|
package/src/server/index.ts
CHANGED
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
getGlobalVariableIdentifier,
|
|
12
12
|
getLiteralsIdentifier,
|
|
13
13
|
getSelectNextCompletionData,
|
|
14
|
+
getConfigsIdentifier,
|
|
14
15
|
} from './getMemberIdentifier';
|
|
15
16
|
import { NaslServer as NaslServerClass } from './naslServer';
|
|
16
17
|
import './extendBaseNode';
|
|
@@ -35,6 +36,7 @@ const server: any = {
|
|
|
35
36
|
getAllComponentEventMap,
|
|
36
37
|
getLogging,
|
|
37
38
|
displayString2TypeAnnotation,
|
|
39
|
+
getConfigsIdentifier,
|
|
38
40
|
};
|
|
39
41
|
export default server;
|
|
40
42
|
export const NaslServer = NaslServerClass;
|