@lcap/nasl-breakpoint 3.9.0-beta.10
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/README.md +3 -0
- package/out/generator/AfterStartNode.d.ts +8 -0
- package/out/generator/AfterStartNode.d.ts.map +1 -0
- package/out/generator/AfterStartNode.js +30 -0
- package/out/generator/AfterStartNode.js.map +1 -0
- package/out/generator/BeforeEndNode.d.ts +8 -0
- package/out/generator/BeforeEndNode.d.ts.map +1 -0
- package/out/generator/BeforeEndNode.js +28 -0
- package/out/generator/BeforeEndNode.js.map +1 -0
- package/out/generator/BreakpointNode.d.ts +23 -0
- package/out/generator/BreakpointNode.d.ts.map +1 -0
- package/out/generator/BreakpointNode.js +318 -0
- package/out/generator/BreakpointNode.js.map +1 -0
- package/out/generator/CallbackNode.d.ts +6 -0
- package/out/generator/CallbackNode.d.ts.map +1 -0
- package/out/generator/CallbackNode.js +39 -0
- package/out/generator/CallbackNode.js.map +1 -0
- package/out/generator/FragmentNode.d.ts +5 -0
- package/out/generator/FragmentNode.d.ts.map +1 -0
- package/out/generator/FragmentNode.js +18 -0
- package/out/generator/FragmentNode.js.map +1 -0
- package/out/generator/index.d.ts +10 -0
- package/out/generator/index.d.ts.map +1 -0
- package/out/generator/index.js +149 -0
- package/out/generator/index.js.map +1 -0
- package/out/index.d.ts +4 -0
- package/out/index.d.ts.map +1 -0
- package/out/index.js +20 -0
- package/out/index.js.map +1 -0
- package/out/shared/constants.d.ts +38 -0
- package/out/shared/constants.d.ts.map +1 -0
- package/out/shared/constants.js +108 -0
- package/out/shared/constants.js.map +1 -0
- package/out/shared/index.d.ts +4 -0
- package/out/shared/index.d.ts.map +1 -0
- package/out/shared/index.js +33 -0
- package/out/shared/index.js.map +1 -0
- package/out/shared/operations.d.ts +11 -0
- package/out/shared/operations.d.ts.map +1 -0
- package/out/shared/operations.js +25 -0
- package/out/shared/operations.js.map +1 -0
- package/out/shared/socket.d.ts +49 -0
- package/out/shared/socket.d.ts.map +1 -0
- package/out/shared/socket.js +260 -0
- package/out/shared/socket.js.map +1 -0
- package/out/shared/utils.d.ts +29 -0
- package/out/shared/utils.d.ts.map +1 -0
- package/out/shared/utils.js +217 -0
- package/out/shared/utils.js.map +1 -0
- package/out/store/core.d.ts +81 -0
- package/out/store/core.d.ts.map +1 -0
- package/out/store/core.js +411 -0
- package/out/store/core.js.map +1 -0
- package/out/store/dock.d.ts +2 -0
- package/out/store/dock.d.ts.map +1 -0
- package/out/store/dock.js +160 -0
- package/out/store/dock.js.map +1 -0
- package/out/store/index.d.ts +3 -0
- package/out/store/index.d.ts.map +1 -0
- package/out/store/index.js +19 -0
- package/out/store/index.js.map +1 -0
- package/package.json +34 -0
package/README.md
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AfterStartNode.d.ts","sourceRoot":"","sources":["../../src/generator/AfterStartNode.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAG9C,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,cAAc;IACxD,cAAc,EAAE,MAAM,CAAM;gBAEhB,OAAO,KAAK;IAMxB,IAAI;IAQJ,IAAI;CASL"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const BreakpointNode_1 = __importDefault(require("./BreakpointNode"));
|
|
7
|
+
const utils_1 = require("../shared/utils");
|
|
8
|
+
class AfterStartNode extends BreakpointNode_1.default {
|
|
9
|
+
constructor(options = {}) {
|
|
10
|
+
super(options);
|
|
11
|
+
this._logicNodePath = '';
|
|
12
|
+
this.init();
|
|
13
|
+
}
|
|
14
|
+
init() {
|
|
15
|
+
super.init();
|
|
16
|
+
const { logic } = this;
|
|
17
|
+
const ancestor = (0, utils_1.getLogicAncestor)(logic);
|
|
18
|
+
this._logicNodePath = ancestor && ancestor.nodePath;
|
|
19
|
+
}
|
|
20
|
+
toJS() {
|
|
21
|
+
const id = this._logicNodePath;
|
|
22
|
+
const logic = this.logic ? this.logic.toJS() : '';
|
|
23
|
+
const breaker = `const $breaker = window.$breaker.colonize()`;
|
|
24
|
+
const hook = `await $breaker.fireHook('after-start')('${id}')`;
|
|
25
|
+
const list = [logic, breaker, hook];
|
|
26
|
+
return list.filter(Boolean).join('\n');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.default = AfterStartNode;
|
|
30
|
+
//# sourceMappingURL=AfterStartNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AfterStartNode.js","sourceRoot":"","sources":["../../src/generator/AfterStartNode.ts"],"names":[],"mappings":";;;;;AAAA,sEAA8C;AAC9C,2CAAmD;AAEnD,MAAqB,cAAe,SAAQ,wBAAc;IAGxD,YAAY,OAAO,GAAG,EAAE;QACtB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHjB,mBAAc,GAAW,EAAE,CAAC;QAK1B,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,IAAI;QACF,KAAK,CAAC,IAAI,EAAE,CAAC;QAEb,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAA,wBAAgB,EAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC;IACtD,CAAC;IAED,IAAI;QACF,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,CAAC,KAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,MAAM,OAAO,GAAG,6CAA6C,CAAC;QAC9D,MAAM,IAAI,GAAG,2CAA2C,EAAE,IAAI,CAAC;QAC/D,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAEpC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CACF;AA1BD,iCA0BC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BeforeEndNode.d.ts","sourceRoot":"","sources":["../../src/generator/BeforeEndNode.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAG9C,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,cAAc;IACvD,cAAc,EAAE,MAAM,CAAM;gBAEhB,OAAO,KAAK;IAMxB,IAAI;IAQJ,IAAI;CAOL"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const BreakpointNode_1 = __importDefault(require("./BreakpointNode"));
|
|
7
|
+
const utils_1 = require("../shared/utils");
|
|
8
|
+
class BeforeEndNode extends BreakpointNode_1.default {
|
|
9
|
+
constructor(options = {}) {
|
|
10
|
+
super(options);
|
|
11
|
+
this._logicNodePath = '';
|
|
12
|
+
this.init();
|
|
13
|
+
}
|
|
14
|
+
init() {
|
|
15
|
+
super.init();
|
|
16
|
+
const { logic } = this;
|
|
17
|
+
const ancestor = (0, utils_1.getLogicAncestor)(logic);
|
|
18
|
+
this._logicNodePath = ancestor && ancestor.nodePath;
|
|
19
|
+
}
|
|
20
|
+
toJS() {
|
|
21
|
+
const id = this._logicNodePath;
|
|
22
|
+
const logic = this.logic ? this.logic.toJS() : '';
|
|
23
|
+
const hook = `await $breaker.fireHook('before-end')('${id}')`;
|
|
24
|
+
return `${hook}\n${logic}`;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.default = BeforeEndNode;
|
|
28
|
+
//# sourceMappingURL=BeforeEndNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BeforeEndNode.js","sourceRoot":"","sources":["../../src/generator/BeforeEndNode.ts"],"names":[],"mappings":";;;;;AAAA,sEAA8C;AAC9C,2CAAmD;AAEnD,MAAqB,aAAc,SAAQ,wBAAc;IAGvD,YAAY,OAAO,GAAG,EAAE;QACtB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHjB,mBAAc,GAAW,EAAE,CAAC;QAK1B,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,IAAI;QACF,KAAK,CAAC,IAAI,EAAE,CAAC;QAEb,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAA,wBAAgB,EAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC;IACtD,CAAC;IAED,IAAI;QACF,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,IAAI,CAAC,KAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,GAAG,0CAA0C,EAAE,IAAI,CAAC;QAE9D,OAAO,GAAG,IAAI,KAAK,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF;AAxBD,gCAwBC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { BaseNode } from '@lcap/nasl-concepts';
|
|
2
|
+
type Options = {
|
|
3
|
+
logic?: BaseNode;
|
|
4
|
+
variable?: BaseNode;
|
|
5
|
+
};
|
|
6
|
+
export declare const parse = "(code) => eval(code)";
|
|
7
|
+
export declare function makeGenerators(isFailsafes: boolean, getRuntimeStr?: any, callbackBag?: any): (((instance: BreakpointNode) => (breaker: string) => string) | ((instance: BreakpointNode) => () => any))[];
|
|
8
|
+
export default class BreakpointNode extends BaseNode {
|
|
9
|
+
_nodePath: string;
|
|
10
|
+
variable: BaseNode;
|
|
11
|
+
logic: BaseNode;
|
|
12
|
+
constructor(options?: Options);
|
|
13
|
+
get node(): BaseNode;
|
|
14
|
+
get items(): any;
|
|
15
|
+
get concept(): any;
|
|
16
|
+
get getCallNode(): any;
|
|
17
|
+
get typeAnnotation(): any;
|
|
18
|
+
get __TypeAnnotation(): any;
|
|
19
|
+
init(): void;
|
|
20
|
+
toJS(): string;
|
|
21
|
+
}
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=BreakpointNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BreakpointNode.d.ts","sourceRoot":"","sources":["../../src/generator/BreakpointNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAY,MAAM,qBAAqB,CAAC;AAIzD,KAAK,OAAO,GAAG;IACb,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AA0BF,eAAO,MAAM,KAAK,yBAAyB,CAAC;AAgB5C,wBAAgB,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,GAAG,gBASnD,cAAc,eAAe,MAAM,2BAuJlC,cAAc,mBAwItD;AAOD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,QAAQ;IAClD,SAAS,EAAE,MAAM,CAAM;IAEvB,QAAQ,EAAE,QAAQ,CAAa;IAE/B,KAAK,EAAE,QAAQ,CAAa;gBAEhB,OAAO,GAAE,OAAY;IAQjC,IAAI,IAAI,aAEP;IAED,IAAI,KAAK,QAER;IAED,IAAI,OAAO,QAEV;IAED,IAAI,WAAW,QAEd;IAED,IAAI,cAAc,QAEjB;IAGD,IAAI,gBAAgB,QAEnB;IAED,IAAI;IAWJ,IAAI,IAAI,MAAM;CAwBf"}
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeGenerators = exports.parse = void 0;
|
|
4
|
+
const nasl_concepts_1 = require("@lcap/nasl-concepts");
|
|
5
|
+
const utils_1 = require("../shared/utils");
|
|
6
|
+
const MATCH_CONCEPT = 'Match';
|
|
7
|
+
const MATCH_CASE_CONCEPT = 'MatchCase';
|
|
8
|
+
const ASSIGNMENT_CONCEPT = 'Assignment';
|
|
9
|
+
const CALL_LOGIC_CONCEPT = 'CallLogic';
|
|
10
|
+
const CALL_FUNCTION_CONCEPT = 'CallFunction';
|
|
11
|
+
const CALL_INTERFACE_CONCEPT = 'CallInterface';
|
|
12
|
+
const WHILE_STATEMENT_CONCEPT = 'WhileStatement';
|
|
13
|
+
const DESTINATION_CONCPETS = ['ExternalDestination', 'Destination'];
|
|
14
|
+
const LOG_CALLER_NAMES = ['showMessage'];
|
|
15
|
+
const LOG_LEVEL = ['ERROR', 'WARN', 'DEBUG', 'INFO'];
|
|
16
|
+
const BEFORE_LOGIC_CONCEPTS = [
|
|
17
|
+
MATCH_CONCEPT,
|
|
18
|
+
'JSBlock',
|
|
19
|
+
'New',
|
|
20
|
+
'NewMap',
|
|
21
|
+
'NewList',
|
|
22
|
+
'NewComposite',
|
|
23
|
+
'ForEachStatement',
|
|
24
|
+
'SwitchStatement',
|
|
25
|
+
'IfStatement',
|
|
26
|
+
];
|
|
27
|
+
const attribute = '[Symbol.for(\'breakpoint\')]';
|
|
28
|
+
exports.parse = '(code) => eval(code)';
|
|
29
|
+
const assemble = (instance) => (code) => {
|
|
30
|
+
if (!instance || !code) {
|
|
31
|
+
return code;
|
|
32
|
+
}
|
|
33
|
+
const { _nodePath } = instance;
|
|
34
|
+
if (!_nodePath) {
|
|
35
|
+
return code;
|
|
36
|
+
}
|
|
37
|
+
return `await $breaker.assembleFragment('${_nodePath}')(${code})`;
|
|
38
|
+
};
|
|
39
|
+
function makeGenerators(isFailsafes, getRuntimeStr, callbackBag) {
|
|
40
|
+
const toJS = (node) => {
|
|
41
|
+
if (getRuntimeStr && node) {
|
|
42
|
+
return getRuntimeStr(node, callbackBag);
|
|
43
|
+
}
|
|
44
|
+
return node?.toJS();
|
|
45
|
+
};
|
|
46
|
+
const callLogicGenerator = (instance) => (breaker) => {
|
|
47
|
+
const { _nodePath, logic, variable } = instance;
|
|
48
|
+
const node = logic || variable;
|
|
49
|
+
if (!node) {
|
|
50
|
+
return breaker;
|
|
51
|
+
}
|
|
52
|
+
const source = node;
|
|
53
|
+
const { concept, calleeNamespace, calleeName, isViewLogic } = source;
|
|
54
|
+
if (concept !== CALL_LOGIC_CONCEPT) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (calleeNamespace === 'nasl.logging' && LOG_LEVEL.includes(calleeName)) {
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (LOG_CALLER_NAMES.includes(calleeName)) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const { arguments: args } = source;
|
|
64
|
+
const wrapper = (callback) => {
|
|
65
|
+
if (isViewLogic) {
|
|
66
|
+
return callback();
|
|
67
|
+
}
|
|
68
|
+
const callNode = source.getCallNode() || {};
|
|
69
|
+
const { params: callNodeParams } = callNode;
|
|
70
|
+
const callNodeBase = callNodeParams || [];
|
|
71
|
+
callNode.params = callNodeBase.concat({ name: attribute });
|
|
72
|
+
const result = callback();
|
|
73
|
+
callNode.params = callNodeParams;
|
|
74
|
+
return result;
|
|
75
|
+
};
|
|
76
|
+
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
77
|
+
const breakpointExpression = new BreakpointNode();
|
|
78
|
+
const breakpointArgument = new nasl_concepts_1.Argument();
|
|
79
|
+
const base = args || [];
|
|
80
|
+
breakpointArgument.name = attribute;
|
|
81
|
+
breakpointArgument.keyword = attribute;
|
|
82
|
+
breakpointArgument.expression = breakpointExpression;
|
|
83
|
+
breakpointExpression._nodePath = _nodePath;
|
|
84
|
+
source.arguments = base.concat(breakpointArgument);
|
|
85
|
+
const callback = () => toJS(source);
|
|
86
|
+
const code = wrapper(callback);
|
|
87
|
+
source.arguments = args;
|
|
88
|
+
return assemble(instance)(code);
|
|
89
|
+
};
|
|
90
|
+
const callFunctionGenerator = (instance) => (breaker) => {
|
|
91
|
+
const { _nodePath, logic, variable } = instance;
|
|
92
|
+
const node = logic || variable;
|
|
93
|
+
if (!node) {
|
|
94
|
+
return breaker;
|
|
95
|
+
}
|
|
96
|
+
const source = node;
|
|
97
|
+
const { concept } = source;
|
|
98
|
+
if (concept !== CALL_FUNCTION_CONCEPT) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const { arguments: sourceArguments, typeArguments: sourceTypeArguments, } = source;
|
|
102
|
+
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
103
|
+
const breakpointExpression = new BreakpointNode();
|
|
104
|
+
const breakpointArgument = new nasl_concepts_1.Argument();
|
|
105
|
+
const baseArguments = sourceArguments || [];
|
|
106
|
+
const baseTypeArguments = sourceTypeArguments || [];
|
|
107
|
+
const addToTypeArguments = baseTypeArguments?.length;
|
|
108
|
+
breakpointArgument.name = attribute;
|
|
109
|
+
breakpointArgument.keyword = attribute;
|
|
110
|
+
breakpointArgument.expression = breakpointExpression;
|
|
111
|
+
breakpointExpression._nodePath = _nodePath;
|
|
112
|
+
if (addToTypeArguments) {
|
|
113
|
+
source.typeArguments = baseTypeArguments.concat(breakpointArgument);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
const { length } = baseArguments;
|
|
117
|
+
if (length) {
|
|
118
|
+
const lastBaseArgument = baseArguments[length - 1];
|
|
119
|
+
const beforeBaseArguments = baseArguments.slice(0, -1);
|
|
120
|
+
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
121
|
+
const combinedLastBaseArgument = new BreakpointNode();
|
|
122
|
+
combinedLastBaseArgument.variable = lastBaseArgument;
|
|
123
|
+
combinedLastBaseArgument._nodePath = _nodePath;
|
|
124
|
+
source.arguments = beforeBaseArguments.concat(combinedLastBaseArgument);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
source.arguments = baseArguments.concat(breakpointArgument);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
const code = toJS(source);
|
|
131
|
+
source.arguments = sourceArguments;
|
|
132
|
+
source.typeArguments = sourceTypeArguments;
|
|
133
|
+
return assemble(instance)(code);
|
|
134
|
+
};
|
|
135
|
+
const callInterfaceGenerator = (instance) => (breaker) => {
|
|
136
|
+
const { logic } = instance;
|
|
137
|
+
if (!logic) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
const source = logic;
|
|
141
|
+
const { concept } = source;
|
|
142
|
+
if (concept !== CALL_INTERFACE_CONCEPT) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
const code = toJS(source);
|
|
146
|
+
const assembled = assemble(instance)(code);
|
|
147
|
+
return `${assembled}\n${breaker}`;
|
|
148
|
+
};
|
|
149
|
+
const variableGenerator = (instance) => () => {
|
|
150
|
+
const { _nodePath, variable } = instance;
|
|
151
|
+
if (!variable) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
const promise = toJS(variable) || '';
|
|
155
|
+
return `await $breaker.generateBreakpoint('${_nodePath}', ${exports.parse})(${promise})`;
|
|
156
|
+
};
|
|
157
|
+
const assignmentGenerator = (instance) => () => {
|
|
158
|
+
const { _nodePath, logic } = instance;
|
|
159
|
+
if (!logic) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
const source = logic;
|
|
163
|
+
const { concept, right } = source;
|
|
164
|
+
if (concept !== ASSIGNMENT_CONCEPT) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
const options = { variable: right };
|
|
168
|
+
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
169
|
+
const breakpointRight = new BreakpointNode(options);
|
|
170
|
+
breakpointRight._nodePath = _nodePath;
|
|
171
|
+
source.right = breakpointRight;
|
|
172
|
+
const code = toJS(source);
|
|
173
|
+
source.right = right;
|
|
174
|
+
return code;
|
|
175
|
+
};
|
|
176
|
+
const whileStatementGenerator = (instance) => (breaker) => {
|
|
177
|
+
const { _nodePath, logic } = instance;
|
|
178
|
+
if (!logic) {
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const source = logic;
|
|
182
|
+
const { concept, body = [] } = source;
|
|
183
|
+
if (concept !== WHILE_STATEMENT_CONCEPT) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
187
|
+
const item = new BreakpointNode();
|
|
188
|
+
item._nodePath = _nodePath;
|
|
189
|
+
source.body = body.concat(item);
|
|
190
|
+
const code = toJS(source);
|
|
191
|
+
source.body = body;
|
|
192
|
+
return `${breaker}\n${code}`;
|
|
193
|
+
};
|
|
194
|
+
const matchCaseLogicGenerator = (instance) => () => {
|
|
195
|
+
const { _nodePath, logic } = instance;
|
|
196
|
+
if (!logic) {
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
const source = logic;
|
|
200
|
+
const parentConcept = source?.parentNode?.concept;
|
|
201
|
+
const underMatch = parentConcept === MATCH_CASE_CONCEPT;
|
|
202
|
+
const ancestor = source.getAncestor(MATCH_CONCEPT) || {};
|
|
203
|
+
const { isExpression } = ancestor;
|
|
204
|
+
if (!underMatch || !isExpression) {
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
208
|
+
const breakpoint = new BreakpointNode({ variable: source });
|
|
209
|
+
breakpoint._nodePath = _nodePath;
|
|
210
|
+
return toJS(breakpoint);
|
|
211
|
+
};
|
|
212
|
+
const destinationLogicGenerator = (instance) => () => {
|
|
213
|
+
const { _nodePath, logic } = instance;
|
|
214
|
+
if (!logic) {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
const source = logic;
|
|
218
|
+
const { anchor, concept } = source;
|
|
219
|
+
if (!DESTINATION_CONCPETS.includes(concept)) {
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
|
223
|
+
const breakpoint = new BreakpointNode({ variable: anchor });
|
|
224
|
+
breakpoint._nodePath = _nodePath;
|
|
225
|
+
source.anchor = breakpoint;
|
|
226
|
+
const code = toJS(source);
|
|
227
|
+
source.anchor = anchor;
|
|
228
|
+
return code;
|
|
229
|
+
};
|
|
230
|
+
const logicGenerator = (instance) => (breaker) => {
|
|
231
|
+
const { logic } = instance;
|
|
232
|
+
if (!logic) {
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
const promise = toJS(logic) || '';
|
|
236
|
+
const { concept } = logic;
|
|
237
|
+
const shouldSetBefore = BEFORE_LOGIC_CONCEPTS.includes(concept);
|
|
238
|
+
const code = shouldSetBefore ? [breaker, promise] : [promise, breaker];
|
|
239
|
+
return code.join('\n');
|
|
240
|
+
};
|
|
241
|
+
if (isFailsafes) {
|
|
242
|
+
return [
|
|
243
|
+
variableGenerator,
|
|
244
|
+
logicGenerator,
|
|
245
|
+
];
|
|
246
|
+
}
|
|
247
|
+
return [
|
|
248
|
+
callLogicGenerator,
|
|
249
|
+
callFunctionGenerator,
|
|
250
|
+
callInterfaceGenerator,
|
|
251
|
+
variableGenerator,
|
|
252
|
+
assignmentGenerator,
|
|
253
|
+
whileStatementGenerator,
|
|
254
|
+
matchCaseLogicGenerator,
|
|
255
|
+
destinationLogicGenerator,
|
|
256
|
+
logicGenerator,
|
|
257
|
+
];
|
|
258
|
+
}
|
|
259
|
+
exports.makeGenerators = makeGenerators;
|
|
260
|
+
// 不要更换顺序
|
|
261
|
+
const generators = makeGenerators(true);
|
|
262
|
+
const failsafes = makeGenerators(false);
|
|
263
|
+
class BreakpointNode extends nasl_concepts_1.BaseNode {
|
|
264
|
+
constructor(options = {}) {
|
|
265
|
+
super();
|
|
266
|
+
this._nodePath = '';
|
|
267
|
+
this.variable = undefined;
|
|
268
|
+
this.logic = undefined;
|
|
269
|
+
this.logic = options.logic;
|
|
270
|
+
this.variable = options.variable;
|
|
271
|
+
this.init();
|
|
272
|
+
}
|
|
273
|
+
get node() {
|
|
274
|
+
return this.logic || this.variable;
|
|
275
|
+
}
|
|
276
|
+
get items() {
|
|
277
|
+
return this.node?.items;
|
|
278
|
+
}
|
|
279
|
+
get concept() {
|
|
280
|
+
return this.node?.concept;
|
|
281
|
+
}
|
|
282
|
+
get getCallNode() {
|
|
283
|
+
return this.node?.getCallNode;
|
|
284
|
+
}
|
|
285
|
+
get typeAnnotation() {
|
|
286
|
+
return this.node?.typeAnnotation;
|
|
287
|
+
}
|
|
288
|
+
// @ts-ignore
|
|
289
|
+
get __TypeAnnotation() {
|
|
290
|
+
return this.node?.__TypeAnnotation;
|
|
291
|
+
}
|
|
292
|
+
init() {
|
|
293
|
+
const source = this.logic || this.variable;
|
|
294
|
+
const node = (0, utils_1.getRealNode)(source);
|
|
295
|
+
if (!node) {
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
this._nodePath = (0, utils_1.getUniqueIdFromNode)(node);
|
|
299
|
+
}
|
|
300
|
+
toJS() {
|
|
301
|
+
const node = this.logic || this.variable;
|
|
302
|
+
const id = this._nodePath;
|
|
303
|
+
const keyword = `generateBreakpoint('${id}'`;
|
|
304
|
+
const breaker = id && `await $breaker.generateBreakpoint('${id}', ${exports.parse})()`;
|
|
305
|
+
if (!node) {
|
|
306
|
+
return breaker;
|
|
307
|
+
}
|
|
308
|
+
let result;
|
|
309
|
+
result = generators.reduce((code, generator) => code || generator(this)(breaker), '');
|
|
310
|
+
result = failsafes.reduce((code, generator) => {
|
|
311
|
+
const useful = code && code.includes(keyword);
|
|
312
|
+
return useful ? code : generator(this)(breaker);
|
|
313
|
+
}, result);
|
|
314
|
+
return result || breaker;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
exports.default = BreakpointNode;
|
|
318
|
+
//# sourceMappingURL=BreakpointNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BreakpointNode.js","sourceRoot":"","sources":["../../src/generator/BreakpointNode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CallbackNode.d.ts","sourceRoot":"","sources":["../../src/generator/CallbackNode.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,eAAO,MAAM,YAAY,SAAU,GAAG,KAAG,OAUxC,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,cAAc;IACtD,IAAI;CAqBL"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.isFunctional = void 0;
|
|
7
|
+
const BreakpointNode_1 = __importDefault(require("./BreakpointNode"));
|
|
8
|
+
const isFunctional = (node) => {
|
|
9
|
+
try {
|
|
10
|
+
const a = node?.toJS && node?.toJS();
|
|
11
|
+
const b = node?.toJSOfEntityLogicProperties && node?.toJSOfEntityLogicProperties();
|
|
12
|
+
return a && a !== b;
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
console.error(error);
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
exports.isFunctional = isFunctional;
|
|
20
|
+
class CallbackNode extends BreakpointNode_1.default {
|
|
21
|
+
toJS() {
|
|
22
|
+
const { logic, variable } = this;
|
|
23
|
+
const node = (logic || variable);
|
|
24
|
+
if (!node) {
|
|
25
|
+
return '';
|
|
26
|
+
}
|
|
27
|
+
const code = node.toJS();
|
|
28
|
+
const founctional = (0, exports.isFunctional)(node);
|
|
29
|
+
if (!founctional) {
|
|
30
|
+
return code;
|
|
31
|
+
}
|
|
32
|
+
if (!code) {
|
|
33
|
+
return code;
|
|
34
|
+
}
|
|
35
|
+
return `$breaker.transfer(($breaker) => ${code})`;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.default = CallbackNode;
|
|
39
|
+
//# sourceMappingURL=CallbackNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CallbackNode.js","sourceRoot":"","sources":["../../src/generator/CallbackNode.ts"],"names":[],"mappings":";;;;;;AAAA,sEAA8C;AAEvC,MAAM,YAAY,GAAG,CAAC,IAAS,EAAW,EAAE;IACjD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,EAAE,2BAA2B,IAAI,IAAI,EAAE,2BAA2B,EAAE,CAAC;QAEnF,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAVW,QAAA,YAAY,gBAUvB;AAEF,MAAqB,YAAa,SAAQ,wBAAc;IACtD,IAAI;QACF,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QACjC,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI,QAAQ,CAAQ,CAAC;QAExC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,IAAA,oBAAY,EAAC,IAAI,CAAC,CAAC;QAEvC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,mCAAmC,IAAI,GAAG,CAAC;IACpD,CAAC;CACF;AAtBD,+BAsBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FragmentNode.d.ts","sourceRoot":"","sources":["../../src/generator/FragmentNode.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,cAAc;IACtD,IAAI;CAUL"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const BreakpointNode_1 = __importDefault(require("./BreakpointNode"));
|
|
7
|
+
class FragmentNode extends BreakpointNode_1.default {
|
|
8
|
+
toJS() {
|
|
9
|
+
const { variable, _nodePath } = this;
|
|
10
|
+
const code = variable ? variable.toJS() : '';
|
|
11
|
+
if (_nodePath) {
|
|
12
|
+
return `await $breaker.assembleFragment('${_nodePath}')(${code})`;
|
|
13
|
+
}
|
|
14
|
+
return code;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.default = FragmentNode;
|
|
18
|
+
//# sourceMappingURL=FragmentNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FragmentNode.js","sourceRoot":"","sources":["../../src/generator/FragmentNode.ts"],"names":[],"mappings":";;;;;AAAA,sEAA8C;AAE9C,MAAqB,YAAa,SAAQ,wBAAc;IACtD,IAAI;QACF,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAE,QAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAEtD,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,oCAAoC,SAAS,MAAM,IAAI,GAAG,CAAC;QACpE,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAXD,+BAWC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { App } from '@lcap/nasl-concepts';
|
|
2
|
+
import AfterStartNode from './AfterStartNode';
|
|
3
|
+
import BeforeEndNode from './BeforeEndNode';
|
|
4
|
+
import CallbackNode, { isFunctional } from './CallbackNode';
|
|
5
|
+
import BreakpointNode, { makeGenerators, parse } from './BreakpointNode';
|
|
6
|
+
export { AfterStartNode, BeforeEndNode, CallbackNode, BreakpointNode, isFunctional, makeGenerators, parse, };
|
|
7
|
+
export declare const genBreakpoints: (app: App) => void;
|
|
8
|
+
export declare const clearBreakpoints: (app: App) => void;
|
|
9
|
+
export default genBreakpoints;
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAY,MAAM,qBAAqB,CAAC;AAKpD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,YAAY,EAAE,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,cAAc,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzE,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,cAAc,EACd,KAAK,GACN,CAAA;AAwHD,eAAO,MAAM,cAAc,QAAS,GAAG,SAItC,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAS,GAAG,SAIxC,CAAC;AAEF,eAAe,cAAc,CAAC"}
|