@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.
Files changed (62) hide show
  1. package/README.md +3 -0
  2. package/out/generator/AfterStartNode.d.ts +8 -0
  3. package/out/generator/AfterStartNode.d.ts.map +1 -0
  4. package/out/generator/AfterStartNode.js +30 -0
  5. package/out/generator/AfterStartNode.js.map +1 -0
  6. package/out/generator/BeforeEndNode.d.ts +8 -0
  7. package/out/generator/BeforeEndNode.d.ts.map +1 -0
  8. package/out/generator/BeforeEndNode.js +28 -0
  9. package/out/generator/BeforeEndNode.js.map +1 -0
  10. package/out/generator/BreakpointNode.d.ts +23 -0
  11. package/out/generator/BreakpointNode.d.ts.map +1 -0
  12. package/out/generator/BreakpointNode.js +318 -0
  13. package/out/generator/BreakpointNode.js.map +1 -0
  14. package/out/generator/CallbackNode.d.ts +6 -0
  15. package/out/generator/CallbackNode.d.ts.map +1 -0
  16. package/out/generator/CallbackNode.js +39 -0
  17. package/out/generator/CallbackNode.js.map +1 -0
  18. package/out/generator/FragmentNode.d.ts +5 -0
  19. package/out/generator/FragmentNode.d.ts.map +1 -0
  20. package/out/generator/FragmentNode.js +18 -0
  21. package/out/generator/FragmentNode.js.map +1 -0
  22. package/out/generator/index.d.ts +10 -0
  23. package/out/generator/index.d.ts.map +1 -0
  24. package/out/generator/index.js +149 -0
  25. package/out/generator/index.js.map +1 -0
  26. package/out/index.d.ts +4 -0
  27. package/out/index.d.ts.map +1 -0
  28. package/out/index.js +20 -0
  29. package/out/index.js.map +1 -0
  30. package/out/shared/constants.d.ts +38 -0
  31. package/out/shared/constants.d.ts.map +1 -0
  32. package/out/shared/constants.js +108 -0
  33. package/out/shared/constants.js.map +1 -0
  34. package/out/shared/index.d.ts +4 -0
  35. package/out/shared/index.d.ts.map +1 -0
  36. package/out/shared/index.js +33 -0
  37. package/out/shared/index.js.map +1 -0
  38. package/out/shared/operations.d.ts +11 -0
  39. package/out/shared/operations.d.ts.map +1 -0
  40. package/out/shared/operations.js +25 -0
  41. package/out/shared/operations.js.map +1 -0
  42. package/out/shared/socket.d.ts +49 -0
  43. package/out/shared/socket.d.ts.map +1 -0
  44. package/out/shared/socket.js +260 -0
  45. package/out/shared/socket.js.map +1 -0
  46. package/out/shared/utils.d.ts +29 -0
  47. package/out/shared/utils.d.ts.map +1 -0
  48. package/out/shared/utils.js +217 -0
  49. package/out/shared/utils.js.map +1 -0
  50. package/out/store/core.d.ts +81 -0
  51. package/out/store/core.d.ts.map +1 -0
  52. package/out/store/core.js +411 -0
  53. package/out/store/core.js.map +1 -0
  54. package/out/store/dock.d.ts +2 -0
  55. package/out/store/dock.d.ts.map +1 -0
  56. package/out/store/dock.js +160 -0
  57. package/out/store/dock.js.map +1 -0
  58. package/out/store/index.d.ts +3 -0
  59. package/out/store/index.d.ts.map +1 -0
  60. package/out/store/index.js +19 -0
  61. package/out/store/index.js.map +1 -0
  62. package/package.json +34 -0
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # Nasl Breakpoint
2
+
3
+ Nasl 断点
@@ -0,0 +1,8 @@
1
+ import BreakpointNode from './BreakpointNode';
2
+ export default class AfterStartNode extends BreakpointNode {
3
+ _logicNodePath: string;
4
+ constructor(options?: {});
5
+ init(): void;
6
+ toJS(): string;
7
+ }
8
+ //# sourceMappingURL=AfterStartNode.d.ts.map
@@ -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,8 @@
1
+ import BreakpointNode from './BreakpointNode';
2
+ export default class BeforeEndNode extends BreakpointNode {
3
+ _logicNodePath: string;
4
+ constructor(options?: {});
5
+ init(): void;
6
+ toJS(): string;
7
+ }
8
+ //# sourceMappingURL=BeforeEndNode.d.ts.map
@@ -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,6 @@
1
+ import BreakpointNode from './BreakpointNode';
2
+ export declare const isFunctional: (node: any) => boolean;
3
+ export default class CallbackNode extends BreakpointNode {
4
+ toJS(): any;
5
+ }
6
+ //# sourceMappingURL=CallbackNode.d.ts.map
@@ -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,5 @@
1
+ import BreakpointNode from './BreakpointNode';
2
+ export default class FragmentNode extends BreakpointNode {
3
+ toJS(): any;
4
+ }
5
+ //# sourceMappingURL=FragmentNode.d.ts.map
@@ -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"}