as-test 1.0.11 → 1.0.13

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "as-test",
3
- "version": "1.0.11",
3
+ "version": "1.0.13",
4
4
  "author": "Jairus Tanaka",
5
5
  "repository": {
6
6
  "type": "git",
@@ -10,22 +10,22 @@
10
10
  "as-rainbow": "^0.1.0",
11
11
  "as-console": "^7.0.0",
12
12
  "chalk": "^5.6.2",
13
- "glob": "^13.0.3",
13
+ "glob": "^13.0.6",
14
14
  "typer-diff": "^1.1.1",
15
15
  "wipc-js": "^0.1.1"
16
16
  },
17
17
  "devDependencies": {
18
18
  "@assemblyscript/wasi-shim": "^0.1.0",
19
19
  "@eslint/js": "^10.0.1",
20
- "@types/node": "^25.2.3",
20
+ "@types/node": "^25.6.0",
21
21
  "as-sleep": "^0.0.2",
22
22
  "as-test": "./",
23
- "assemblyscript": "^0.28.9",
23
+ "assemblyscript": "^0.28.17",
24
24
  "assemblyscript-prettier": "^3.0.4",
25
- "prettier": "3.8.1",
26
- "try-as": "^0.2.5",
27
- "typescript": "^5.9.3",
28
- "typescript-eslint": "^8.55.0",
25
+ "prettier": "3.8.3",
26
+ "try-as": "^1.0.1",
27
+ "typescript": "^6.0.3",
28
+ "typescript-eslint": "^8.59.1",
29
29
  "vitepress": "^1.6.4"
30
30
  },
31
31
  "bin": {
@@ -68,6 +68,8 @@
68
68
  "test": "node ./bin/index.js test --parallel",
69
69
  "test:ci": "node ./bin/index.js test --parallel --tap --config ./as-test.ci.config.json",
70
70
  "fuzz": "node ./bin/index.js fuzz",
71
+ "bench:seed": "node ./bin/index.js fuzz --config ./as-test.bench.config.json --clean",
72
+ "bench:seed:compare": "bash ./tools/bench-seed-compare.sh 7",
71
73
  "test:examples": "npm --prefix ./examples run test",
72
74
  "ci:act": "bash ./tools/act.sh push",
73
75
  "ci:act:pr": "bash ./tools/act.sh pull_request",
@@ -488,11 +488,11 @@ export class ASTBuilder extends Visitor {
488
488
  }
489
489
  visitUnaryExpression(node) {
490
490
  switch (node.kind) {
491
- case 27: {
491
+ case 28: {
492
492
  this.visitUnaryPostfixExpression(node);
493
493
  break;
494
494
  }
495
- case 28: {
495
+ case 29: {
496
496
  this.visitUnaryPrefixExpression(node);
497
497
  break;
498
498
  }
@@ -512,8 +512,8 @@ export class ASTBuilder extends Visitor {
512
512
  this.visitNode(node);
513
513
  const sb = this.sb;
514
514
  if (!sb.length ||
515
- node.kind == 47 ||
516
- node.kind == 38) {
515
+ node.kind == 48 ||
516
+ node.kind == 39) {
517
517
  sb.push(";\n");
518
518
  }
519
519
  else {
@@ -629,7 +629,7 @@ export class ASTBuilder extends Visitor {
629
629
  }
630
630
  for (let i = 0, k = members.length; i < k; ++i) {
631
631
  const member = members[i];
632
- if (member.kind != 54 ||
632
+ if (member.kind != 55 ||
633
633
  member.parameterIndex < 0) {
634
634
  util.indent(sb, indentLevel);
635
635
  this.visitNodeAndTerminate(member);
@@ -646,7 +646,7 @@ export class ASTBuilder extends Visitor {
646
646
  const sb = this.sb;
647
647
  sb.push("do ");
648
648
  this.visitNode(node.body);
649
- if (node.body.kind == 30) {
649
+ if (node.body.kind == 31) {
650
650
  sb.push(" while (");
651
651
  }
652
652
  else {
@@ -748,23 +748,23 @@ export class ASTBuilder extends Visitor {
748
748
  visitExportDefaultStatement(node) {
749
749
  const declaration = node.declaration;
750
750
  switch (declaration.kind) {
751
- case 52: {
751
+ case 53: {
752
752
  this.visitEnumDeclaration(declaration, true);
753
753
  break;
754
754
  }
755
- case 55: {
755
+ case 56: {
756
756
  this.visitFunctionDeclaration(declaration, true);
757
757
  break;
758
758
  }
759
- case 51: {
759
+ case 52: {
760
760
  this.visitClassDeclaration(declaration, true);
761
761
  break;
762
762
  }
763
- case 57: {
763
+ case 58: {
764
764
  this.visitInterfaceDeclaration(declaration, true);
765
765
  break;
766
766
  }
767
- case 59: {
767
+ case 60: {
768
768
  this.visitNamespaceDeclaration(declaration, true);
769
769
  break;
770
770
  }
@@ -946,12 +946,12 @@ export class ASTBuilder extends Visitor {
946
946
  sb.push(") ");
947
947
  const ifTrue = node.ifTrue;
948
948
  this.visitNode(ifTrue);
949
- if (ifTrue.kind != 30) {
949
+ if (ifTrue.kind != 31) {
950
950
  sb.push(";\n");
951
951
  }
952
952
  const ifFalse = node.ifFalse;
953
953
  if (ifFalse) {
954
- if (ifTrue.kind == 30) {
954
+ if (ifTrue.kind == 31) {
955
955
  sb.push(" else ");
956
956
  }
957
957
  else {
@@ -1263,7 +1263,7 @@ export class ASTBuilder extends Visitor {
1263
1263
  sb.push("while (");
1264
1264
  this.visitNode(node.condition);
1265
1265
  const statement = node.body;
1266
- if (statement.kind == 34) {
1266
+ if (statement.kind == 35) {
1267
1267
  sb.push(")");
1268
1268
  }
1269
1269
  else {
@@ -1358,4 +1358,3 @@ export class ASTBuilder extends Visitor {
1358
1358
  return ret;
1359
1359
  }
1360
1360
  }
1361
- //# sourceMappingURL=builder.js.map
@@ -63,7 +63,7 @@ export class CoverageTransform extends Visitor {
63
63
  this.visit(node.expression, node);
64
64
  this.visit(node.typeArguments, node);
65
65
  for (const arg of node.args) {
66
- if (arg.kind == 14)
66
+ if (arg.kind == 15)
67
67
  continue;
68
68
  this.visit(arg, node);
69
69
  }
@@ -178,7 +178,7 @@ export class CoverageTransform extends Visitor {
178
178
  const registerStmt = createRegisterStatement(point);
179
179
  replacer.visit(registerStmt);
180
180
  this.globalStatements.push(registerStmt);
181
- if (node.body.kind === 35) {
181
+ if (node.body.kind === 36) {
182
182
  const coverStmt = SimpleParser.parseStatement(`{
183
183
  __COVER("${point.hash}")
184
184
  return $$REPLACE_ME
@@ -214,7 +214,7 @@ export class CoverageTransform extends Visitor {
214
214
  const ifTrue = node.ifTrue;
215
215
  const ifFalse = node.ifFalse;
216
216
  const path = node.range.source.normalizedPath;
217
- if (ifTrue.kind !== 30 && !isBuiltinStatement(ifTrue)) {
217
+ if (ifTrue.kind !== 31 && !isBuiltinStatement(ifTrue)) {
218
218
  const trueLc = getLineCol(ifTrue);
219
219
  const point = new CoverPoint();
220
220
  point.line = trueLc?.line;
@@ -234,7 +234,7 @@ export class CoverageTransform extends Visitor {
234
234
  visitIfFalse = !!ifFalse;
235
235
  }
236
236
  if (ifFalse &&
237
- ifFalse.kind !== 30 &&
237
+ ifFalse.kind !== 31 &&
238
238
  !isBuiltinStatement(ifFalse)) {
239
239
  const falseLc = getLineCol(ifFalse);
240
240
  const point = new CoverPoint();
@@ -377,35 +377,35 @@ function getCallName(node) {
377
377
  return getExpressionName(node.expression);
378
378
  }
379
379
  function isBuiltinStatement(node) {
380
- if (node.kind !== 38)
380
+ if (node.kind !== 39)
381
381
  return false;
382
382
  return isBuiltinCallExpression(node.expression);
383
383
  }
384
384
  function isBuiltinCallExpression(node) {
385
385
  const unwrapped = unwrapParenthesized(node);
386
- if (unwrapped.kind !== 9)
386
+ if (unwrapped.kind !== 10)
387
387
  return false;
388
388
  const call = unwrapped;
389
389
  const expression = unwrapParenthesized(call.expression);
390
- if (expression.kind !== 6)
390
+ if (expression.kind !== 7)
391
391
  return false;
392
392
  const name = expression.text;
393
393
  return COVERAGE_IGNORED_BUILTINS.has(name);
394
394
  }
395
395
  function unwrapParenthesized(node) {
396
396
  let current = node;
397
- while (current.kind === 20) {
397
+ while (current.kind === 21) {
398
398
  current = current.expression;
399
399
  }
400
400
  return current;
401
401
  }
402
402
  function getExpressionName(node) {
403
403
  switch (node.kind) {
404
- case 6:
404
+ case 7:
405
405
  return node.text;
406
- case 21:
406
+ case 22:
407
407
  return node.property.text;
408
- case 20:
408
+ case 21:
409
409
  return getExpressionName(node.expression);
410
410
  default:
411
411
  return null;
@@ -473,4 +473,3 @@ function isConcreteSourceBlock(node) {
473
473
  return false;
474
474
  return source.text.charCodeAt(start) == 123;
475
475
  }
476
- //# sourceMappingURL=coverage.js.map
@@ -146,4 +146,3 @@ function escapeRegex(value) {
146
146
  function isCoverageEnabled() {
147
147
  return process.env.AS_TEST_COVERAGE_ENABLED !== "0";
148
148
  }
149
- //# sourceMappingURL=index.js.map
@@ -1,12 +1,12 @@
1
1
  export function getImports(source) {
2
- return source.statements.filter((v) => v.kind === 42);
2
+ return source.statements.filter((v) => v.kind === 43);
3
3
  }
4
4
  export function getImportedClass(name, source, parser) {
5
5
  for (const stmt of getImports(source)) {
6
6
  const externalSource = parser.sources.find((src) => src.internalPath === stmt.internalPath);
7
7
  if (!externalSource)
8
8
  continue;
9
- const classDeclaration = externalSource.statements.find((s) => s.kind === 51 &&
9
+ const classDeclaration = externalSource.statements.find((s) => s.kind === 52 &&
10
10
  s.name.text === name);
11
11
  if (classDeclaration)
12
12
  return classDeclaration;
@@ -14,6 +14,5 @@ export function getImportedClass(name, source, parser) {
14
14
  return null;
15
15
  }
16
16
  export function getClasses(source) {
17
- return source.statements.filter((v) => v.kind === 51);
17
+ return source.statements.filter((v) => v.kind === 52);
18
18
  }
19
- //# sourceMappingURL=linker.js.map
@@ -17,4 +17,3 @@ export class LocationTransform extends Visitor {
17
17
  node.args.push(Node.createStringLiteralExpression(location, node.range));
18
18
  }
19
19
  }
20
- //# sourceMappingURL=location.js.map
@@ -78,4 +78,3 @@ function looksLikeAsTestImport(specifiers, modulePath) {
78
78
  function stripComments(sourceText) {
79
79
  return sourceText.replace(/\/\*[\s\S]*?\*\//g, "").replace(/\/\/.*$/gm, "");
80
80
  }
81
- //# sourceMappingURL=log.js.map
@@ -37,7 +37,10 @@ export class MockTransform extends Visitor {
37
37
  const cb = node.args[1];
38
38
  const newName = normalizeName(ov);
39
39
  const newFn = Node.createFunctionDeclaration(Node.createIdentifierExpression(newName + "_mock", cb.range), cb.declaration.decorators, 0, cb.declaration.typeParameters, cb.declaration.signature, cb.declaration.body, cb.declaration.arrowKind, cb.range);
40
- const stmts = this.srcCurrent.statements;
40
+ const currentSource = this.srcCurrent;
41
+ if (!currentSource)
42
+ return;
43
+ const stmts = currentSource.statements;
41
44
  let index = -1;
42
45
  for (let i = 0; i < stmts.length; i++) {
43
46
  const stmt = stmts[i];
@@ -63,22 +66,26 @@ export class MockTransform extends Visitor {
63
66
  super.visitSource(node);
64
67
  for (const node of this.importFns) {
65
68
  let path;
69
+ const currentSource = this.srcCurrent;
70
+ if (!currentSource)
71
+ continue;
66
72
  const dec = node.decorators?.find((v) => v.name.text == "external");
73
+ const decArgs = dec?.args ?? [];
67
74
  if (!dec) {
68
75
  path = "env." + node.name.text;
69
76
  }
70
- else if (dec.args[0] && dec.args[1])
71
- path = dec.args
77
+ else if (decArgs[0] && decArgs[1])
78
+ path = decArgs
72
79
  .map((v) => v.value)
73
80
  .join(".");
74
- else if (dec.args[0])
81
+ else if (decArgs[0])
75
82
  path =
76
- this.srcCurrent.simplePath +
83
+ currentSource.simplePath +
77
84
  "." +
78
- dec.args[0].value;
85
+ decArgs[0].value;
79
86
  else
80
- path = this.srcCurrent.simplePath + "." + node.name.text;
81
- const stmts = this.srcCurrent.statements;
87
+ path = currentSource.simplePath + "." + node.name.text;
88
+ const stmts = currentSource.statements;
82
89
  let index = -1;
83
90
  for (let i = 0; i < stmts.length; i++) {
84
91
  const stmt = stmts[i];
@@ -118,4 +125,3 @@ function normalizeName(value) {
118
125
  .replaceAll("]", "_")
119
126
  .replace(/[^A-Za-z0-9_]/g, "_");
120
127
  }
121
- //# sourceMappingURL=mock.js.map
@@ -10,4 +10,3 @@ export class RangeTransform extends Visitor {
10
10
  return super._visit(node, ref);
11
11
  }
12
12
  }
13
- //# sourceMappingURL=range.js.map
@@ -23,4 +23,3 @@ export class Schema {
23
23
  byteSize = 0;
24
24
  deps = [];
25
25
  }
26
- //# sourceMappingURL=types.js.map
@@ -44,4 +44,3 @@ export function isStdlib(s) {
44
44
  export function toString(node) {
45
45
  return ASTBuilder.build(node);
46
46
  }
47
- //# sourceMappingURL=util.js.map
@@ -23,207 +23,207 @@ export class Visitor {
23
23
  case 2:
24
24
  this.visitFunctionTypeNode(node, ref);
25
25
  break;
26
- case 3:
26
+ case 4:
27
27
  this.visitTypeName(node, ref);
28
28
  break;
29
- case 4:
29
+ case 5:
30
30
  this.visitTypeParameter(node, ref);
31
31
  break;
32
- case 6:
32
+ case 7:
33
33
  this.visitIdentifierExpression(node, ref);
34
34
  break;
35
- case 7:
35
+ case 8:
36
36
  this.visitAssertionExpression(node, ref);
37
37
  break;
38
- case 8:
38
+ case 9:
39
39
  this.visitBinaryExpression(node, ref);
40
40
  break;
41
- case 9:
41
+ case 10:
42
42
  this.visitCallExpression(node, ref);
43
43
  break;
44
- case 10:
44
+ case 11:
45
45
  this.visitClassExpression(node, ref);
46
46
  break;
47
- case 11:
47
+ case 12:
48
48
  this.visitCommaExpression(node, ref);
49
49
  break;
50
- case 12:
50
+ case 13:
51
51
  this.visitElementAccessExpression(node, ref);
52
52
  break;
53
- case 14:
53
+ case 15:
54
54
  this.visitFunctionExpression(node, ref);
55
55
  break;
56
- case 15:
56
+ case 16:
57
57
  this.visitInstanceOfExpression(node, ref);
58
58
  break;
59
- case 16:
59
+ case 17:
60
60
  this.visitLiteralExpression(node, ref);
61
61
  break;
62
- case 17:
62
+ case 18:
63
63
  this.visitNewExpression(node, ref);
64
64
  break;
65
- case 20:
65
+ case 21:
66
66
  this.visitParenthesizedExpression(node, ref);
67
67
  break;
68
- case 21:
68
+ case 22:
69
69
  this.visitPropertyAccessExpression(node, ref);
70
70
  break;
71
- case 22:
71
+ case 23:
72
72
  this.visitTernaryExpression(node, ref);
73
73
  break;
74
- case 27:
74
+ case 28:
75
75
  this.visitUnaryPostfixExpression(node, ref);
76
76
  break;
77
- case 28:
77
+ case 29:
78
78
  this.visitUnaryPrefixExpression(node, ref);
79
79
  break;
80
- case 30:
80
+ case 31:
81
81
  this.visitBlockStatement(node, ref);
82
82
  break;
83
- case 31:
83
+ case 32:
84
84
  this.visitBreakStatement(node, ref);
85
85
  break;
86
- case 32:
86
+ case 33:
87
87
  this.visitContinueStatement(node, ref);
88
88
  break;
89
- case 33:
89
+ case 34:
90
90
  this.visitDoStatement(node, ref);
91
91
  break;
92
- case 34:
92
+ case 35:
93
93
  this.visitEmptyStatement(node, ref);
94
94
  break;
95
- case 35:
95
+ case 36:
96
96
  this.visitExportStatement(node, ref);
97
97
  break;
98
- case 36:
98
+ case 37:
99
99
  this.visitExportDefaultStatement(node, ref);
100
100
  break;
101
- case 37:
101
+ case 38:
102
102
  this.visitExportImportStatement(node, ref);
103
103
  break;
104
- case 38:
104
+ case 39:
105
105
  this.visitExpressionStatement(node, ref);
106
106
  break;
107
- case 39:
107
+ case 40:
108
108
  this.visitForStatement(node, ref);
109
109
  break;
110
- case 41:
110
+ case 42:
111
111
  this.visitIfStatement(node, ref);
112
112
  break;
113
- case 42:
113
+ case 43:
114
114
  this.visitImportStatement(node, ref);
115
115
  break;
116
- case 43:
116
+ case 44:
117
117
  this.visitReturnStatement(node, ref);
118
118
  break;
119
- case 44:
119
+ case 45:
120
120
  this.visitSwitchStatement(node, ref);
121
121
  break;
122
- case 45:
122
+ case 46:
123
123
  this.visitThrowStatement(node, ref);
124
124
  break;
125
- case 46:
125
+ case 47:
126
126
  this.visitTryStatement(node, ref);
127
127
  break;
128
- case 47:
128
+ case 48:
129
129
  this.visitVariableStatement(node, ref);
130
130
  break;
131
- case 49:
131
+ case 50:
132
132
  this.visitWhileStatement(node, ref);
133
133
  break;
134
- case 51:
134
+ case 52:
135
135
  this.visitClassDeclaration(node, false, ref);
136
136
  break;
137
- case 52:
137
+ case 53:
138
138
  this.visitEnumDeclaration(node, false, ref);
139
139
  break;
140
- case 53:
140
+ case 54:
141
141
  this.visitEnumValueDeclaration(node, ref);
142
142
  break;
143
- case 54:
143
+ case 55:
144
144
  this.visitFieldDeclaration(node, ref);
145
145
  break;
146
- case 55:
146
+ case 56:
147
147
  this.visitFunctionDeclaration(node, false, ref);
148
148
  break;
149
- case 56:
149
+ case 57:
150
150
  this.visitImportDeclaration(node, ref);
151
151
  break;
152
- case 57:
152
+ case 58:
153
153
  this.visitInterfaceDeclaration(node, false, ref);
154
154
  break;
155
- case 58:
155
+ case 59:
156
156
  this.visitMethodDeclaration(node, ref);
157
157
  break;
158
- case 59:
158
+ case 60:
159
159
  this.visitNamespaceDeclaration(node, false, ref);
160
160
  break;
161
- case 60:
161
+ case 61:
162
162
  this.visitTypeDeclaration(node, ref);
163
163
  break;
164
- case 61:
164
+ case 62:
165
165
  this.visitVariableDeclaration(node, ref);
166
166
  break;
167
- case 62:
167
+ case 63:
168
168
  this.visitDecoratorNode(node, ref);
169
169
  break;
170
- case 63:
170
+ case 64:
171
171
  this.visitExportMember(node, ref);
172
172
  break;
173
- case 64:
173
+ case 65:
174
174
  this.visitSwitchCase(node, ref);
175
175
  break;
176
- case 65:
176
+ case 66:
177
177
  this.visitIndexSignature(node, ref);
178
178
  break;
179
- case 18:
179
+ case 19:
180
180
  this.visitNullExpression(node, ref);
181
181
  break;
182
- case 25: {
182
+ case 26: {
183
183
  this.visitTrueExpression(node, ref);
184
184
  break;
185
185
  }
186
- case 13: {
186
+ case 14: {
187
187
  this.visitFalseExpression(node, ref);
188
188
  break;
189
189
  }
190
- case 29: {
190
+ case 30: {
191
191
  this.visitCompiledExpression(node, ref);
192
192
  break;
193
193
  }
194
- case 26: {
194
+ case 27: {
195
195
  this.visitConstructorExpression(node, ref);
196
196
  break;
197
197
  }
198
- case 66: {
198
+ case 67: {
199
199
  this.visitComment(node, ref);
200
200
  break;
201
201
  }
202
- case 40: {
202
+ case 41: {
203
203
  this.visitForOfStatement(node, ref);
204
204
  break;
205
205
  }
206
- case 50: {
206
+ case 51: {
207
207
  this.visitModuleDeclaration(node, ref);
208
208
  break;
209
209
  }
210
- case 19: {
210
+ case 20: {
211
211
  this.visitOmittedExpression(node, ref);
212
212
  break;
213
213
  }
214
- case 5: {
214
+ case 6: {
215
215
  this.visitParameter(node, ref);
216
216
  break;
217
217
  }
218
- case 23: {
218
+ case 24: {
219
219
  this.visitSuperExpression(node, ref);
220
220
  break;
221
221
  }
222
- case 24: {
222
+ case 25: {
223
223
  this.visitThisExpression(node, ref);
224
224
  break;
225
225
  }
226
- case 48: {
226
+ case 49: {
227
227
  this.visitVoidStatement(node, ref);
228
228
  break;
229
229
  }
@@ -529,4 +529,3 @@ export class Visitor {
529
529
  visitModuleDeclaration(node, ref = null) { }
530
530
  visitOmittedExpression(node, ref = null) { }
531
531
  }
532
- //# sourceMappingURL=visitor.js.map