@loadmill/universal 0.3.138 → 0.3.140

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.
@@ -0,0 +1,21 @@
1
+ import { DeclaredVariable } from './types';
2
+ export declare class ASTWalker {
3
+ private readonly script;
4
+ private ast;
5
+ private untouchables;
6
+ private detected;
7
+ constructor(script: string);
8
+ detectDeclarations: (untouchables: string[]) => DeclaredVariable[];
9
+ private addDeclaredFunction;
10
+ private getIdentifierName;
11
+ private addNestedDeclaredProps;
12
+ private addAssignmentProperty;
13
+ private addRestElement;
14
+ private addDestructuredArrayElements;
15
+ private addDeclaredVariables;
16
+ private addImplicitDeclarations;
17
+ private addSingleImplicitVar;
18
+ private addMultipleImplicitVar;
19
+ private addDeclaredClass;
20
+ private addIdentifier;
21
+ }
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ASTWalker = void 0;
4
+ var acorn_js_parser_1 = require("../parser/acorn-js-parser");
5
+ var type_guard_1 = require("./type-guard");
6
+ var ASTWalker = /** @class */ (function () {
7
+ function ASTWalker(script) {
8
+ var _this = this;
9
+ Object.defineProperty(this, "script", {
10
+ enumerable: true,
11
+ configurable: true,
12
+ writable: true,
13
+ value: script
14
+ });
15
+ Object.defineProperty(this, "ast", {
16
+ enumerable: true,
17
+ configurable: true,
18
+ writable: true,
19
+ value: void 0
20
+ });
21
+ Object.defineProperty(this, "untouchables", {
22
+ enumerable: true,
23
+ configurable: true,
24
+ writable: true,
25
+ value: void 0
26
+ });
27
+ Object.defineProperty(this, "detected", {
28
+ enumerable: true,
29
+ configurable: true,
30
+ writable: true,
31
+ value: void 0
32
+ });
33
+ Object.defineProperty(this, "detectDeclarations", {
34
+ enumerable: true,
35
+ configurable: true,
36
+ writable: true,
37
+ value: function (untouchables) {
38
+ _this.untouchables = untouchables;
39
+ for (var _i = 0, _a = _this.ast.body; _i < _a.length; _i++) {
40
+ var node = _a[_i];
41
+ if (type_guard_1.isFunctionDeclaration(node)) {
42
+ _this.addDeclaredFunction(node);
43
+ }
44
+ else if (type_guard_1.isVariableDeclaration(node)) {
45
+ _this.addDeclaredVariables(node);
46
+ }
47
+ else if (type_guard_1.isExpressionStatement(node)) {
48
+ _this.addImplicitDeclarations(node);
49
+ }
50
+ else if (type_guard_1.isClassDeclaration(node)) {
51
+ _this.addDeclaredClass(node);
52
+ }
53
+ }
54
+ return _this.detected;
55
+ }
56
+ });
57
+ Object.defineProperty(this, "addDeclaredFunction", {
58
+ enumerable: true,
59
+ configurable: true,
60
+ writable: true,
61
+ value: function (node) {
62
+ _this.addIdentifier(node.id, node);
63
+ }
64
+ });
65
+ Object.defineProperty(this, "getIdentifierName", {
66
+ enumerable: true,
67
+ configurable: true,
68
+ writable: true,
69
+ value: function (id) { return id.name; }
70
+ });
71
+ Object.defineProperty(this, "addNestedDeclaredProps", {
72
+ enumerable: true,
73
+ configurable: true,
74
+ writable: true,
75
+ value: function (_a, initValue) {
76
+ var _b;
77
+ var properties = _a.properties;
78
+ var values = initValue && type_guard_1.isObjectExpression(initValue) ?
79
+ initValue.properties :
80
+ [];
81
+ var _loop_1 = function (i) {
82
+ var prop = properties[i];
83
+ if (type_guard_1.isRestElement(prop)) {
84
+ _this.addRestElement(prop, values.slice(i));
85
+ }
86
+ else {
87
+ var initObj = initValue;
88
+ var key = prop.key;
89
+ var keyName_1 = key.name;
90
+ var matchingInitProp = (_b = initObj === null || initObj === void 0 ? void 0 : initObj.properties) === null || _b === void 0 ? void 0 : _b.find(function (p) {
91
+ return p.key.name === keyName_1 ||
92
+ p.key.value === keyName_1;
93
+ });
94
+ var propValue = prop.value;
95
+ if (type_guard_1.isAssignmentPattern(propValue)) {
96
+ _this.addIdentifier(propValue.left, propValue.right);
97
+ }
98
+ else {
99
+ _this.addAssignmentProperty(prop, matchingInitProp === null || matchingInitProp === void 0 ? void 0 : matchingInitProp.value);
100
+ }
101
+ }
102
+ };
103
+ for (var i = 0; i < properties.length; i++) {
104
+ _loop_1(i);
105
+ }
106
+ }
107
+ });
108
+ Object.defineProperty(this, "addAssignmentProperty", {
109
+ enumerable: true,
110
+ configurable: true,
111
+ writable: true,
112
+ value: function (_a, initValue) {
113
+ var value = _a.value;
114
+ if (type_guard_1.isIdentifier(value)) {
115
+ _this.addIdentifier(value, initValue);
116
+ }
117
+ else if (type_guard_1.isObjectPattern(value)) {
118
+ _this.addNestedDeclaredProps(value, initValue);
119
+ }
120
+ else if (type_guard_1.isArrayPattern(value)) {
121
+ _this.addDestructuredArrayElements(value, initValue);
122
+ }
123
+ }
124
+ });
125
+ Object.defineProperty(this, "addRestElement", {
126
+ enumerable: true,
127
+ configurable: true,
128
+ writable: true,
129
+ value: function (_a, values) {
130
+ var argument = _a.argument;
131
+ if (type_guard_1.isIdentifier(argument)) {
132
+ var valueRange = values ?
133
+ {
134
+ start: values[0].start,
135
+ end: values[values.length - 1].end,
136
+ }
137
+ : {
138
+ start: argument.start,
139
+ end: argument.end,
140
+ };
141
+ _this.addIdentifier(argument, valueRange);
142
+ }
143
+ else if (type_guard_1.isObjectPattern(argument)) {
144
+ _this.addNestedDeclaredProps(argument);
145
+ }
146
+ }
147
+ });
148
+ Object.defineProperty(this, "addDestructuredArrayElements", {
149
+ enumerable: true,
150
+ configurable: true,
151
+ writable: true,
152
+ value: function (_a, initValue) {
153
+ var elements = _a.elements;
154
+ var values = initValue && type_guard_1.isArrayExpression(initValue)
155
+ ? initValue.elements
156
+ : [];
157
+ for (var i = 0; i < elements.length; i++) {
158
+ var element = elements[i];
159
+ var value = values[i];
160
+ if (type_guard_1.isAssignmentPattern(element)) {
161
+ _this.addIdentifier(element.left, element.right);
162
+ }
163
+ else if (type_guard_1.isIdentifier(element)) {
164
+ _this.addIdentifier(element, value);
165
+ }
166
+ else if (type_guard_1.isRestElement(element)) {
167
+ _this.addRestElement(element, values.slice(i));
168
+ }
169
+ else if (type_guard_1.isObjectPattern(element)) {
170
+ _this.addNestedDeclaredProps(element);
171
+ }
172
+ else if (type_guard_1.isArrayPattern(element)) {
173
+ _this.addDestructuredArrayElements(element);
174
+ }
175
+ }
176
+ }
177
+ });
178
+ Object.defineProperty(this, "addDeclaredVariables", {
179
+ enumerable: true,
180
+ configurable: true,
181
+ writable: true,
182
+ value: function (node) {
183
+ for (var _i = 0, _a = node.declarations; _i < _a.length; _i++) {
184
+ var declaration = _a[_i];
185
+ var pattern = declaration.id;
186
+ var initValue = declaration.init;
187
+ if (type_guard_1.isIdentifier(pattern)) {
188
+ _this.addIdentifier(pattern, initValue);
189
+ }
190
+ else if (type_guard_1.isObjectPattern(pattern)) {
191
+ _this.addNestedDeclaredProps(pattern, initValue);
192
+ }
193
+ else if (type_guard_1.isArrayPattern(pattern)) {
194
+ _this.addDestructuredArrayElements(pattern, initValue);
195
+ }
196
+ }
197
+ }
198
+ });
199
+ Object.defineProperty(this, "addImplicitDeclarations", {
200
+ enumerable: true,
201
+ configurable: true,
202
+ writable: true,
203
+ value: function (_a) {
204
+ var expression = _a.expression;
205
+ if (type_guard_1.isAssignmentExpression(expression)) {
206
+ _this.addSingleImplicitVar(expression);
207
+ }
208
+ else if (type_guard_1.isSequenceExpression(expression)) {
209
+ _this.addMultipleImplicitVar(expression);
210
+ }
211
+ }
212
+ });
213
+ Object.defineProperty(this, "addSingleImplicitVar", {
214
+ enumerable: true,
215
+ configurable: true,
216
+ writable: true,
217
+ value: function (expression) {
218
+ var value = expression.right;
219
+ if (type_guard_1.isIdentifier(expression.left)) {
220
+ var assignedName = _this.getIdentifierName(expression.left);
221
+ if (!_this.untouchables.includes(assignedName)) {
222
+ _this.addIdentifier(expression.left, value);
223
+ }
224
+ }
225
+ else if (type_guard_1.isObjectPattern(expression.left)) {
226
+ _this.addNestedDeclaredProps(expression.left);
227
+ }
228
+ else if (type_guard_1.isArrayPattern(expression.left)) {
229
+ _this.addDestructuredArrayElements(expression.left, value);
230
+ }
231
+ }
232
+ });
233
+ Object.defineProperty(this, "addMultipleImplicitVar", {
234
+ enumerable: true,
235
+ configurable: true,
236
+ writable: true,
237
+ value: function (_a) {
238
+ var expressions = _a.expressions;
239
+ for (var _i = 0, expressions_1 = expressions; _i < expressions_1.length; _i++) {
240
+ var expression = expressions_1[_i];
241
+ if (type_guard_1.isAssignmentExpression(expression)) {
242
+ _this.addSingleImplicitVar(expression);
243
+ }
244
+ }
245
+ }
246
+ });
247
+ Object.defineProperty(this, "addDeclaredClass", {
248
+ enumerable: true,
249
+ configurable: true,
250
+ writable: true,
251
+ value: function (node) {
252
+ _this.addIdentifier(node.id, node);
253
+ }
254
+ });
255
+ this.ast = new acorn_js_parser_1.JSParser().parse(this.script);
256
+ this.untouchables = [];
257
+ this.detected = [];
258
+ }
259
+ Object.defineProperty(ASTWalker.prototype, "addIdentifier", {
260
+ enumerable: false,
261
+ configurable: true,
262
+ writable: true,
263
+ value: function (id, value) {
264
+ this.detected.push({
265
+ name: this.getIdentifierName(id),
266
+ rawValue: value ? this.script.slice(value.start, value.end) : '',
267
+ });
268
+ }
269
+ });
270
+ return ASTWalker;
271
+ }());
272
+ exports.ASTWalker = ASTWalker;
273
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ast/ast-walker/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { ArrayExpression, ArrayPattern, AssignmentExpression, AssignmentPattern, ClassDeclaration, ExpressionStatement, FunctionDeclaration, Identifier, ObjectExpression, ObjectPattern, ParserNode, RestElement, SequenceExpression, VariableDeclaration } from './types';
2
+ declare type ASTNodeTypeGuard<T extends ParserNode> = (node: ParserNode) => node is T;
3
+ export declare const isFunctionDeclaration: ASTNodeTypeGuard<FunctionDeclaration>;
4
+ export declare const isVariableDeclaration: ASTNodeTypeGuard<VariableDeclaration>;
5
+ export declare const isExpressionStatement: ASTNodeTypeGuard<ExpressionStatement>;
6
+ export declare const isAssignmentExpression: ASTNodeTypeGuard<AssignmentExpression>;
7
+ export declare const isAssignmentPattern: ASTNodeTypeGuard<AssignmentPattern>;
8
+ export declare const isSequenceExpression: ASTNodeTypeGuard<SequenceExpression>;
9
+ export declare const isIdentifier: ASTNodeTypeGuard<Identifier>;
10
+ export declare const isArrayPattern: ASTNodeTypeGuard<ArrayPattern>;
11
+ export declare const isArrayExpression: ASTNodeTypeGuard<ArrayExpression>;
12
+ export declare const isObjectPattern: ASTNodeTypeGuard<ObjectPattern>;
13
+ export declare const isObjectExpression: ASTNodeTypeGuard<ObjectExpression>;
14
+ export declare const isRestElement: ASTNodeTypeGuard<RestElement>;
15
+ export declare const isClassDeclaration: ASTNodeTypeGuard<ClassDeclaration>;
16
+ export {};
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isClassDeclaration = exports.isRestElement = exports.isObjectExpression = exports.isObjectPattern = exports.isArrayExpression = exports.isArrayPattern = exports.isIdentifier = exports.isSequenceExpression = exports.isAssignmentPattern = exports.isAssignmentExpression = exports.isExpressionStatement = exports.isVariableDeclaration = exports.isFunctionDeclaration = void 0;
4
+ var string_utils_1 = require("../../string-utils");
5
+ var types_1 = require("./types");
6
+ var hasId = function (node) { return !!node.id; };
7
+ var hasDeclarations = function (node) { return Array.isArray(node.declarations); };
8
+ var hasExpression = function (node) { return !!node.expression; };
9
+ var hasLeft = function (node) { return !!node.left; };
10
+ var hasExpressions = function (node) { return Array.isArray(node.expressions); };
11
+ var hasName = function (id) { return string_utils_1.isNonEmptyString(id.name); };
12
+ var hasElements = function (node) { return Array.isArray(node.elements); };
13
+ var hasProperties = function (node) { return Array.isArray(node.properties); };
14
+ var hasArgument = function (rest) { return !!rest.argument; };
15
+ var isOfType = function (node, enumerator, type) {
16
+ return node.type === enumerator[type];
17
+ };
18
+ var isFunctionDeclaration = function (node) {
19
+ return isOfType(node, types_1.Declarations, types_1.Declarations.FunctionDeclaration) && hasId(node);
20
+ };
21
+ exports.isFunctionDeclaration = isFunctionDeclaration;
22
+ var isVariableDeclaration = function (node) {
23
+ return isOfType(node, types_1.Declarations, types_1.Declarations.VariableDeclaration) && hasDeclarations(node);
24
+ };
25
+ exports.isVariableDeclaration = isVariableDeclaration;
26
+ var isExpressionStatement = function (node) {
27
+ return isOfType(node, types_1.Statements, types_1.Statements.ExpressionStatement) && hasExpression(node);
28
+ };
29
+ exports.isExpressionStatement = isExpressionStatement;
30
+ var isAssignmentExpression = function (node) {
31
+ return isOfType(node, types_1.Expressions, types_1.Expressions.AssignmentExpression) && hasLeft(node);
32
+ };
33
+ exports.isAssignmentExpression = isAssignmentExpression;
34
+ var isAssignmentPattern = function (node) {
35
+ return isOfType(node, types_1.Patterns, types_1.Patterns.AssignmentPattern) && hasLeft(node);
36
+ };
37
+ exports.isAssignmentPattern = isAssignmentPattern;
38
+ var isSequenceExpression = function (node) {
39
+ return isOfType(node, types_1.Expressions, types_1.Expressions.SequenceExpression) && hasExpressions(node);
40
+ };
41
+ exports.isSequenceExpression = isSequenceExpression;
42
+ var isIdentifier = function (node) {
43
+ return node.type === 'Identifier' && hasName(node);
44
+ };
45
+ exports.isIdentifier = isIdentifier;
46
+ var isArrayPattern = function (node) {
47
+ return isOfType(node, types_1.Patterns, types_1.Patterns.ArrayPattern) && hasElements(node);
48
+ };
49
+ exports.isArrayPattern = isArrayPattern;
50
+ var isArrayExpression = function (node) {
51
+ return isOfType(node, types_1.Expressions, types_1.Expressions.ArrayExpression) && hasElements(node);
52
+ };
53
+ exports.isArrayExpression = isArrayExpression;
54
+ var isObjectPattern = function (node) {
55
+ return isOfType(node, types_1.Patterns, types_1.Patterns.ObjectPattern) && hasProperties(node);
56
+ };
57
+ exports.isObjectPattern = isObjectPattern;
58
+ var isObjectExpression = function (node) {
59
+ return isOfType(node, types_1.Expressions, types_1.Expressions.ObjectExpression) && hasProperties(node);
60
+ };
61
+ exports.isObjectExpression = isObjectExpression;
62
+ var isRestElement = function (node) {
63
+ return isOfType(node, types_1.Patterns, types_1.Patterns.RestElement) && hasArgument(node);
64
+ };
65
+ exports.isRestElement = isRestElement;
66
+ var isClassDeclaration = function (node) {
67
+ return isOfType(node, types_1.Declarations, types_1.Declarations.ClassDeclaration) && hasId(node);
68
+ };
69
+ exports.isClassDeclaration = isClassDeclaration;
70
+ //# sourceMappingURL=type-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-guard.js","sourceRoot":"","sources":["../../../src/ast/ast-walker/type-guard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import { ArrayExpression as ESTArrayExpression, ArrayPattern as ESTArrayPattern, AssignmentExpression as ESTAssignmentExpression, AssignmentPattern as ESTAssignmentPattern, AssignmentProperty as ESTAssignmentProperty, BlockStatement as ESTBlockStatement, ClassDeclaration as ESTClassDeclaration, FunctionDeclaration as ESTFunctionDeclaration, Expression as ESTExpression, ExpressionStatement as ESTExpressionStatement, Identifier as ESTIdentifier, Literal as ESTLiteral, Node, ObjectExpression as ESTObjectExpression, ObjectPattern as ESTObjectPattern, Pattern as ESTPattern, Program, Property as ESTProperty, RestElement as ESTRestElement, SequenceExpression as ESTSequenceExpression, SpreadElement as ESTSpreadElement, Statement as ESTStatement, VariableDeclaration as ESTVariableDeclaration } from 'estree';
2
+ export declare type AssignmentExpression = AddRangeRecursively<ESTAssignmentExpression>;
3
+ export declare type AssignmentPattern = AddRangeRecursively<ESTAssignmentPattern>;
4
+ export declare type AssignmentProperty = AddRangeRecursively<ESTAssignmentProperty>;
5
+ export declare type ExpressionStatement = AddRangeRecursively<ESTExpressionStatement>;
6
+ export declare type Identifier = AddRangeRecursively<ESTIdentifier>;
7
+ export declare type Literal = AddRangeRecursively<ESTLiteral>;
8
+ export declare type ObjectExpression = AddRangeRecursively<ESTObjectExpression>;
9
+ export declare type ObjectPattern = AddRangeRecursively<ESTObjectPattern>;
10
+ export declare type Pattern = AddRangeRecursively<ESTPattern>;
11
+ export declare type Property = AddRangeRecursively<ESTProperty>;
12
+ export declare type RestElement = AddRangeRecursively<ESTRestElement>;
13
+ export declare type SequenceExpression = AddRangeRecursively<ESTSequenceExpression>;
14
+ export declare type VariableDeclaration = AddRangeRecursively<ESTVariableDeclaration>;
15
+ export declare type ArrayPattern = AddRangeRecursively<ESTArrayPattern> & {
16
+ elements: Array<Pattern>;
17
+ };
18
+ export declare type ArrayExpression = AddRangeRecursively<ESTArrayExpression> & {
19
+ elements: Array<ESTExpression | ESTSpreadElement>;
20
+ };
21
+ export declare type ClassDeclaration = AddRangeRecursively<ESTClassDeclaration> & {
22
+ id: Identifier;
23
+ };
24
+ export declare type FunctionDeclaration = AddRangeRecursively<ESTFunctionDeclaration> & {
25
+ id: Identifier;
26
+ body: BlockStatement;
27
+ };
28
+ export declare type BlockStatement = AddRangeRecursively<ESTBlockStatement> & {
29
+ body: Statement[];
30
+ };
31
+ export declare type Statement = AddRangeRecursively<ESTStatement>;
32
+ export declare enum Declarations {
33
+ ClassDeclaration = "ClassDeclaration",
34
+ FunctionDeclaration = "FunctionDeclaration",
35
+ VariableDeclaration = "VariableDeclaration"
36
+ }
37
+ export declare enum Expressions {
38
+ ArrayExpression = "ArrayExpression",
39
+ AssignmentExpression = "AssignmentExpression",
40
+ ObjectExpression = "ObjectExpression",
41
+ SequenceExpression = "SequenceExpression"
42
+ }
43
+ export declare enum Patterns {
44
+ ArrayPattern = "ArrayPattern",
45
+ AssignmentPattern = "AssignmentPattern",
46
+ Identifier = "Identifier",
47
+ ObjectPattern = "ObjectPattern",
48
+ RestElement = "RestElement"
49
+ }
50
+ export declare enum Statements {
51
+ ExpressionStatement = "ExpressionStatement"
52
+ }
53
+ export declare type DeclaredVariable = {
54
+ name: string;
55
+ rawValue: string;
56
+ };
57
+ declare type AddRangeRecursively<T> = T extends object ? {
58
+ [K in keyof T]: AddRangeRecursively<T[K]>;
59
+ } & Range : T;
60
+ export declare type JSParserESTree = AddRangeRecursively<Program>;
61
+ export declare type ParserNode = AddRangeRecursively<Node>;
62
+ export declare type Range = {
63
+ start: number;
64
+ end: number;
65
+ };
66
+ export {};
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Statements = exports.Patterns = exports.Expressions = exports.Declarations = void 0;
4
+ var Declarations;
5
+ (function (Declarations) {
6
+ Declarations["ClassDeclaration"] = "ClassDeclaration";
7
+ Declarations["FunctionDeclaration"] = "FunctionDeclaration";
8
+ Declarations["VariableDeclaration"] = "VariableDeclaration";
9
+ })(Declarations = exports.Declarations || (exports.Declarations = {}));
10
+ var Expressions;
11
+ (function (Expressions) {
12
+ Expressions["ArrayExpression"] = "ArrayExpression";
13
+ Expressions["AssignmentExpression"] = "AssignmentExpression";
14
+ Expressions["ObjectExpression"] = "ObjectExpression";
15
+ Expressions["SequenceExpression"] = "SequenceExpression";
16
+ })(Expressions = exports.Expressions || (exports.Expressions = {}));
17
+ var Patterns;
18
+ (function (Patterns) {
19
+ Patterns["ArrayPattern"] = "ArrayPattern";
20
+ Patterns["AssignmentPattern"] = "AssignmentPattern";
21
+ Patterns["Identifier"] = "Identifier";
22
+ Patterns["ObjectPattern"] = "ObjectPattern";
23
+ Patterns["RestElement"] = "RestElement";
24
+ })(Patterns = exports.Patterns || (exports.Patterns = {}));
25
+ var Statements;
26
+ (function (Statements) {
27
+ Statements["ExpressionStatement"] = "ExpressionStatement";
28
+ })(Statements = exports.Statements || (exports.Statements = {}));
29
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ast/ast-walker/types.ts"],"names":[],"mappings":";;;AA+DA,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,qDAAqC,CAAA;IACrC,2DAA2C,CAAA;IAC3C,2DAA2C,CAAA;AAC7C,CAAC,EAJW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAIvB;AAED,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,kDAAmC,CAAA;IACnC,4DAA6C,CAAA;IAC7C,oDAAqC,CAAA;IACrC,wDAAyC,CAAA;AAC3C,CAAC,EALW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAKtB;AAED,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,yCAA6B,CAAA;IAC7B,mDAAuC,CAAA;IACvC,qCAAyB,CAAA;IACzB,2CAA+B,CAAA;IAC/B,uCAA2B,CAAA;AAC7B,CAAC,EANW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAMnB;AAED,IAAY,UAEX;AAFD,WAAY,UAAU;IACpB,yDAA2C,CAAA;AAC7C,CAAC,EAFW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAErB"}
@@ -0,0 +1,5 @@
1
+ import { Options } from 'acorn';
2
+ import { JSParserESTree } from '../ast-walker/types';
3
+ export declare class JSParser {
4
+ parse(script: string, options?: Options): JSParserESTree;
5
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JSParser = void 0;
4
+ var acorn_1 = require("acorn");
5
+ var JSParser = /** @class */ (function () {
6
+ function JSParser() {
7
+ }
8
+ Object.defineProperty(JSParser.prototype, "parse", {
9
+ enumerable: false,
10
+ configurable: true,
11
+ writable: true,
12
+ value: function (script, options) {
13
+ if (options === void 0) { options = { ecmaVersion: 2020 }; }
14
+ return acorn_1.parse(script, options);
15
+ }
16
+ });
17
+ return JSParser;
18
+ }());
19
+ exports.JSParser = JSParser;
20
+ //# sourceMappingURL=acorn-js-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorn-js-parser.js","sourceRoot":"","sources":["../../../src/ast/parser/acorn-js-parser.ts"],"names":[],"mappings":";;;AAAA,+BAAuC;AAGvC;IAAA;IAIA,CAAC;;;;;eAHC,UAAM,MAAc,EAAE,OAAwC;YAAxC,wBAAA,EAAA,YAAqB,WAAW,EAAE,IAAI,EAAE;YAC5D,OAAO,aAAK,CAAC,MAAM,EAAE,OAAO,CAAmB,CAAC;QAClD,CAAC;;IACH,eAAC;AAAD,CAAC,AAJD,IAIC;AAJY,4BAAQ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loadmill/universal",
3
- "version": "0.3.138",
3
+ "version": "0.3.140",
4
4
  "description": "Loadmill universal utilities",
5
5
  "main": "dist/",
6
6
  "types": "dist/index.d.ts",
@@ -11,7 +11,7 @@
11
11
  "check-types": "tsc -p tsconfig.json --noEmit",
12
12
  "prepack": "yarn build",
13
13
  "unit-test": "run-p unit-test-*",
14
- "unit-test-ts": "mocha --require ts-node/register/transpile-only --ui tdd \"test/*.spec.ts\"",
14
+ "unit-test-ts": "mocha --require ts-node/register/transpile-only --ui tdd \"test/**/*.spec.ts\"",
15
15
  "unit-test-js": "mocha --ui tdd \"test/*.spec.js\""
16
16
  },
17
17
  "engines": {
@@ -19,6 +19,7 @@
19
19
  },
20
20
  "license": "Apache-2.0",
21
21
  "devDependencies": {
22
+ "@types/estree": "^0.0.50",
22
23
  "@types/source-map-support": "^0.4.0",
23
24
  "@types/stack-trace": "^0.0.29"
24
25
  },