@loadmill/universal 0.3.138 → 0.3.139

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,20 @@
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 addIdentifier;
20
+ }
@@ -0,0 +1,253 @@
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
+ }
51
+ return _this.detected;
52
+ }
53
+ });
54
+ Object.defineProperty(this, "addDeclaredFunction", {
55
+ enumerable: true,
56
+ configurable: true,
57
+ writable: true,
58
+ value: function (node) {
59
+ _this.addIdentifier(node.id, node);
60
+ }
61
+ });
62
+ Object.defineProperty(this, "getIdentifierName", {
63
+ enumerable: true,
64
+ configurable: true,
65
+ writable: true,
66
+ value: function (id) { return id.name; }
67
+ });
68
+ Object.defineProperty(this, "addNestedDeclaredProps", {
69
+ enumerable: true,
70
+ configurable: true,
71
+ writable: true,
72
+ value: function (_a, initValue) {
73
+ var _b;
74
+ var properties = _a.properties;
75
+ var isInitValueObject = initValue && type_guard_1.isObjectExpression(initValue);
76
+ var values = isInitValueObject ? initValue.properties : [];
77
+ var initObj = initValue;
78
+ var _loop_1 = function (i) {
79
+ var prop = properties[i];
80
+ if (type_guard_1.isRestElement(prop)) {
81
+ _this.addRestElement(prop, values.slice(i));
82
+ }
83
+ else {
84
+ var key = prop.key;
85
+ var keyName_1 = key.name;
86
+ var matchingInitProp = (_b = initObj === null || initObj === void 0 ? void 0 : initObj.properties) === null || _b === void 0 ? void 0 : _b.find(function (p) {
87
+ return p.key.name === keyName_1 ||
88
+ p.key.value === keyName_1;
89
+ });
90
+ _this.addAssignmentProperty(prop, matchingInitProp === null || matchingInitProp === void 0 ? void 0 : matchingInitProp.value);
91
+ }
92
+ };
93
+ for (var i = 0; i < properties.length; i++) {
94
+ _loop_1(i);
95
+ }
96
+ }
97
+ });
98
+ Object.defineProperty(this, "addAssignmentProperty", {
99
+ enumerable: true,
100
+ configurable: true,
101
+ writable: true,
102
+ value: function (_a, initValue) {
103
+ var value = _a.value;
104
+ if (type_guard_1.isIdentifier(value)) {
105
+ _this.addIdentifier(value, initValue);
106
+ }
107
+ else if (type_guard_1.isObjectPattern(value)) {
108
+ _this.addNestedDeclaredProps(value, initValue);
109
+ }
110
+ else if (type_guard_1.isArrayPattern(value)) {
111
+ _this.addDestructuredArrayElements(value, initValue);
112
+ }
113
+ }
114
+ });
115
+ Object.defineProperty(this, "addRestElement", {
116
+ enumerable: true,
117
+ configurable: true,
118
+ writable: true,
119
+ value: function (_a, values) {
120
+ var argument = _a.argument;
121
+ if (type_guard_1.isIdentifier(argument)) {
122
+ var valueRange = values ?
123
+ {
124
+ start: values[0].start,
125
+ end: values[values.length - 1].end,
126
+ }
127
+ : {
128
+ start: argument.start,
129
+ end: argument.end,
130
+ };
131
+ _this.addIdentifier(argument, valueRange);
132
+ }
133
+ else if (type_guard_1.isObjectPattern(argument)) {
134
+ _this.addNestedDeclaredProps(argument);
135
+ }
136
+ }
137
+ });
138
+ Object.defineProperty(this, "addDestructuredArrayElements", {
139
+ enumerable: true,
140
+ configurable: true,
141
+ writable: true,
142
+ value: function (_a, initValue) {
143
+ var elements = _a.elements;
144
+ var isInitValueArray = initValue && type_guard_1.isArrayExpression(initValue);
145
+ var values = isInitValueArray
146
+ ? initValue.elements
147
+ : [];
148
+ for (var i = 0; i < elements.length; i++) {
149
+ var element = elements[i];
150
+ var value = values[i];
151
+ if (type_guard_1.isIdentifier(element)) {
152
+ _this.addIdentifier(element, value);
153
+ }
154
+ else if (type_guard_1.isRestElement(element)) {
155
+ _this.addRestElement(element, values.slice(i));
156
+ }
157
+ else if (type_guard_1.isObjectPattern(element)) {
158
+ _this.addNestedDeclaredProps(element);
159
+ }
160
+ else if (type_guard_1.isArrayPattern(element)) {
161
+ _this.addDestructuredArrayElements(element);
162
+ }
163
+ }
164
+ }
165
+ });
166
+ Object.defineProperty(this, "addDeclaredVariables", {
167
+ enumerable: true,
168
+ configurable: true,
169
+ writable: true,
170
+ value: function (node) {
171
+ for (var _i = 0, _a = node.declarations; _i < _a.length; _i++) {
172
+ var declaration = _a[_i];
173
+ var pattern = declaration.id;
174
+ var initValue = declaration.init;
175
+ if (type_guard_1.isIdentifier(pattern)) {
176
+ _this.addIdentifier(pattern, initValue);
177
+ }
178
+ else if (type_guard_1.isObjectPattern(pattern)) {
179
+ _this.addNestedDeclaredProps(pattern, initValue);
180
+ }
181
+ else if (type_guard_1.isArrayPattern(pattern)) {
182
+ _this.addDestructuredArrayElements(pattern, initValue);
183
+ }
184
+ }
185
+ }
186
+ });
187
+ Object.defineProperty(this, "addImplicitDeclarations", {
188
+ enumerable: true,
189
+ configurable: true,
190
+ writable: true,
191
+ value: function (_a) {
192
+ var expression = _a.expression;
193
+ if (type_guard_1.isAssignmentExpression(expression)) {
194
+ _this.addSingleImplicitVar(expression);
195
+ }
196
+ else if (type_guard_1.isSequenceExpression(expression)) {
197
+ _this.addMultipleImplicitVar(expression);
198
+ }
199
+ }
200
+ });
201
+ Object.defineProperty(this, "addSingleImplicitVar", {
202
+ enumerable: true,
203
+ configurable: true,
204
+ writable: true,
205
+ value: function (expression) {
206
+ var value = expression.right;
207
+ if (type_guard_1.isIdentifier(expression.left)) {
208
+ var assignedName = _this.getIdentifierName(expression.left);
209
+ if (!_this.untouchables.includes(assignedName)) {
210
+ _this.addIdentifier(expression.left, value);
211
+ }
212
+ }
213
+ else if (type_guard_1.isObjectPattern(expression.left)) {
214
+ _this.addNestedDeclaredProps(expression.left);
215
+ }
216
+ else if (type_guard_1.isArrayPattern(expression.left)) {
217
+ _this.addDestructuredArrayElements(expression.left, value);
218
+ }
219
+ }
220
+ });
221
+ Object.defineProperty(this, "addMultipleImplicitVar", {
222
+ enumerable: true,
223
+ configurable: true,
224
+ writable: true,
225
+ value: function (_a) {
226
+ var expressions = _a.expressions;
227
+ for (var _i = 0, expressions_1 = expressions; _i < expressions_1.length; _i++) {
228
+ var expression = expressions_1[_i];
229
+ if (type_guard_1.isAssignmentExpression(expression)) {
230
+ _this.addSingleImplicitVar(expression);
231
+ }
232
+ }
233
+ }
234
+ });
235
+ this.ast = new acorn_js_parser_1.JSParser().parse(this.script);
236
+ this.untouchables = [];
237
+ this.detected = [];
238
+ }
239
+ Object.defineProperty(ASTWalker.prototype, "addIdentifier", {
240
+ enumerable: false,
241
+ configurable: true,
242
+ writable: true,
243
+ value: function (id, value) {
244
+ this.detected.push({
245
+ name: this.getIdentifierName(id),
246
+ rawValue: value ? this.script.slice(value.start, value.end) : '',
247
+ });
248
+ }
249
+ });
250
+ return ASTWalker;
251
+ }());
252
+ exports.ASTWalker = ASTWalker;
253
+ //# 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,12 @@
1
+ import { ParserNode } from './types';
2
+ export declare const isFunctionDeclaration: (node: ParserNode) => boolean;
3
+ export declare const isVariableDeclaration: (node: ParserNode) => boolean;
4
+ export declare const isExpressionStatement: (node: ParserNode) => boolean;
5
+ export declare const isAssignmentExpression: (node: ParserNode) => boolean;
6
+ export declare const isSequenceExpression: (node: ParserNode) => boolean;
7
+ export declare const isIdentifier: (node: ParserNode) => boolean;
8
+ export declare const isArrayPattern: (node: ParserNode) => boolean;
9
+ export declare const isArrayExpression: (node: ParserNode) => boolean;
10
+ export declare const isObjectPattern: (node: ParserNode) => boolean;
11
+ export declare const isObjectExpression: (node: ParserNode) => boolean;
12
+ export declare const isRestElement: (node: ParserNode) => boolean;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isRestElement = exports.isObjectExpression = exports.isObjectPattern = exports.isArrayExpression = exports.isArrayPattern = exports.isIdentifier = exports.isSequenceExpression = 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 isFunctionDeclaration = function (node) {
7
+ return isOfType(node, types_1.Declarations, types_1.Declarations.FunctionDeclaration) && hasId(node);
8
+ };
9
+ exports.isFunctionDeclaration = isFunctionDeclaration;
10
+ var hasId = function (node) { return !!node.id; };
11
+ var isVariableDeclaration = function (node) {
12
+ return isOfType(node, types_1.Declarations, types_1.Declarations.VariableDeclaration) && hasDeclarations(node);
13
+ };
14
+ exports.isVariableDeclaration = isVariableDeclaration;
15
+ var hasDeclarations = function (node) { return Array.isArray(node.declarations); };
16
+ var isExpressionStatement = function (node) {
17
+ return isOfType(node, types_1.Statements, types_1.Statements.ExpressionStatement) && hasExpression(node);
18
+ };
19
+ exports.isExpressionStatement = isExpressionStatement;
20
+ var hasExpression = function (node) { return !!node.expression; };
21
+ var isAssignmentExpression = function (node) {
22
+ return isOfType(node, types_1.Expressions, types_1.Expressions.AssignmentExpression) && hasLeft(node);
23
+ };
24
+ exports.isAssignmentExpression = isAssignmentExpression;
25
+ var hasLeft = function (node) { return !!node.left; };
26
+ var isSequenceExpression = function (node) {
27
+ return isOfType(node, types_1.Expressions, types_1.Expressions.SequenceExpression) && hasExpressions(node);
28
+ };
29
+ exports.isSequenceExpression = isSequenceExpression;
30
+ var hasExpressions = function (node) { return Array.isArray(node.expressions); };
31
+ var isIdentifier = function (node) {
32
+ return isOfType(node, types_1.Patterns, types_1.Patterns.Identifier) && hasName(node);
33
+ };
34
+ exports.isIdentifier = isIdentifier;
35
+ var hasName = function (id) { return string_utils_1.isNonEmptyString(id.name); };
36
+ var isArrayPattern = function (node) {
37
+ return isOfType(node, types_1.Patterns, types_1.Patterns.ArrayPattern) && hasElements(node);
38
+ };
39
+ exports.isArrayPattern = isArrayPattern;
40
+ var hasElements = function (node) { return Array.isArray(node.elements); };
41
+ var isArrayExpression = function (node) {
42
+ return isOfType(node, types_1.Expressions, types_1.Expressions.ArrayExpression) && hasElements(node);
43
+ };
44
+ exports.isArrayExpression = isArrayExpression;
45
+ var isObjectPattern = function (node) {
46
+ return isOfType(node, types_1.Patterns, types_1.Patterns.ObjectPattern) && hasProperties(node);
47
+ };
48
+ exports.isObjectPattern = isObjectPattern;
49
+ var hasProperties = function (node) { return Array.isArray(node.properties); };
50
+ var isObjectExpression = function (node) {
51
+ return isOfType(node, types_1.Expressions, types_1.Expressions.ObjectExpression) && hasProperties(node);
52
+ };
53
+ exports.isObjectExpression = isObjectExpression;
54
+ var isRestElement = function (node) {
55
+ return isOfType(node, types_1.Patterns, types_1.Patterns.RestElement) && hasArgument(node);
56
+ };
57
+ exports.isRestElement = isRestElement;
58
+ var hasArgument = function (rest) { return !!rest.argument; };
59
+ var isOfType = function (node, enumerator, // can't type an enum for some reason
60
+ type) {
61
+ return node.type === enumerator[type];
62
+ };
63
+ //# 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,58 @@
1
+ import { ArrayExpression as ESTArrayExpression, ArrayPattern as ESTArrayPattern, AssignmentExpression as ESTAssignmentExpression, AssignmentProperty as ESTAssignmentProperty, BlockStatement as ESTBlockStatement, FunctionDeclaration as ESTFunctionDeclaration, 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, Statement as ESTStatement, VariableDeclaration as ESTVariableDeclaration } from 'estree';
2
+ export declare type AssignmentExpression = AddRangeRecursively<ESTAssignmentExpression>;
3
+ export declare type AssignmentProperty = AddRangeRecursively<ESTAssignmentProperty>;
4
+ export declare type ExpressionStatement = AddRangeRecursively<ESTExpressionStatement>;
5
+ export declare type Identifier = AddRangeRecursively<ESTIdentifier>;
6
+ export declare type Literal = AddRangeRecursively<ESTLiteral>;
7
+ export declare type ObjectExpression = AddRangeRecursively<ESTObjectExpression>;
8
+ export declare type ObjectPattern = AddRangeRecursively<ESTObjectPattern>;
9
+ export declare type Pattern = AddRangeRecursively<ESTPattern>;
10
+ export declare type Property = AddRangeRecursively<ESTProperty>;
11
+ export declare type RestElement = AddRangeRecursively<ESTRestElement>;
12
+ export declare type SequenceExpression = AddRangeRecursively<ESTSequenceExpression>;
13
+ export declare type VariableDeclaration = AddRangeRecursively<ESTVariableDeclaration>;
14
+ export declare type ArrayPattern = ESTArrayPattern & {
15
+ elements: Array<Pattern>;
16
+ };
17
+ export declare type ArrayExpression = AddRangeRecursively<ESTArrayExpression>;
18
+ export declare type FunctionDeclaration = AddRangeRecursively<ESTFunctionDeclaration> & {
19
+ id: Identifier;
20
+ body: BlockStatement;
21
+ };
22
+ export declare type BlockStatement = AddRangeRecursively<ESTBlockStatement> & {
23
+ body: Statement[];
24
+ };
25
+ export declare type Statement = AddRangeRecursively<ESTStatement>;
26
+ export declare enum Declarations {
27
+ FunctionDeclaration = "FunctionDeclaration",
28
+ VariableDeclaration = "VariableDeclaration"
29
+ }
30
+ export declare enum Expressions {
31
+ ArrayExpression = "ArrayExpression",
32
+ AssignmentExpression = "AssignmentExpression",
33
+ ObjectExpression = "ObjectExpression",
34
+ SequenceExpression = "SequenceExpression"
35
+ }
36
+ export declare enum Patterns {
37
+ ObjectPattern = "ObjectPattern",
38
+ ArrayPattern = "ArrayPattern",
39
+ RestElement = "RestElement",
40
+ Identifier = "Identifier"
41
+ }
42
+ export declare enum Statements {
43
+ ExpressionStatement = "ExpressionStatement"
44
+ }
45
+ export declare type DeclaredVariable = {
46
+ name: string;
47
+ rawValue: string;
48
+ };
49
+ declare type AddRangeRecursively<T> = T extends object ? {
50
+ [K in keyof T]: AddRangeRecursively<T[K]>;
51
+ } & Range : T;
52
+ export declare type JSParserESTree = AddRangeRecursively<Program>;
53
+ export declare type ParserNode = AddRangeRecursively<Node>;
54
+ export declare type Range = {
55
+ start: number;
56
+ end: number;
57
+ };
58
+ export {};
@@ -0,0 +1,27 @@
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["FunctionDeclaration"] = "FunctionDeclaration";
7
+ Declarations["VariableDeclaration"] = "VariableDeclaration";
8
+ })(Declarations = exports.Declarations || (exports.Declarations = {}));
9
+ var Expressions;
10
+ (function (Expressions) {
11
+ Expressions["ArrayExpression"] = "ArrayExpression";
12
+ Expressions["AssignmentExpression"] = "AssignmentExpression";
13
+ Expressions["ObjectExpression"] = "ObjectExpression";
14
+ Expressions["SequenceExpression"] = "SequenceExpression";
15
+ })(Expressions = exports.Expressions || (exports.Expressions = {}));
16
+ var Patterns;
17
+ (function (Patterns) {
18
+ Patterns["ObjectPattern"] = "ObjectPattern";
19
+ Patterns["ArrayPattern"] = "ArrayPattern";
20
+ Patterns["RestElement"] = "RestElement";
21
+ Patterns["Identifier"] = "Identifier";
22
+ })(Patterns = exports.Patterns || (exports.Patterns = {}));
23
+ var Statements;
24
+ (function (Statements) {
25
+ Statements["ExpressionStatement"] = "ExpressionStatement";
26
+ })(Statements = exports.Statements || (exports.Statements = {}));
27
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/ast/ast-walker/types.ts"],"names":[],"mappings":";;;AAoDA,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,2DAA2C,CAAA;IAC3C,2DAA2C,CAAA;AAC7C,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB;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,QAKX;AALD,WAAY,QAAQ;IAClB,2CAA+B,CAAA;IAC/B,yCAA6B,CAAA;IAC7B,uCAA2B,CAAA;IAC3B,qCAAyB,CAAA;AAC3B,CAAC,EALW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAKnB;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.139",
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": {