as-test 0.4.0 → 0.4.2

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 (49) hide show
  1. package/CHANGELOG.md +10 -1
  2. package/README.md +12 -12
  3. package/as-test.config.json +1 -1
  4. package/assembly/__tests__/array.spec.ts +3 -3
  5. package/assembly/src/expectation.ts +29 -16
  6. package/assembly/src/suite.ts +2 -0
  7. package/assembly/src/tests.ts +1 -0
  8. package/bin/build.js +65 -77
  9. package/bin/index.js +130 -160
  10. package/bin/init.js +96 -109
  11. package/bin/reporter.js +1 -1
  12. package/bin/run.js +210 -236
  13. package/bin/types.js +25 -25
  14. package/bin/util.js +35 -42
  15. package/cli/run.ts +13 -15
  16. package/cli/tsconfig.json +2 -1
  17. package/package.json +12 -9
  18. package/transform/lib/builder.js +1361 -0
  19. package/transform/lib/builder.js.map +1 -0
  20. package/transform/lib/coverage.js +6 -6
  21. package/transform/lib/coverage.js.map +1 -1
  22. package/transform/lib/index.js +1 -1
  23. package/transform/lib/index.js.map +1 -1
  24. package/transform/lib/linker.js +19 -0
  25. package/transform/lib/linker.js.map +1 -0
  26. package/transform/lib/mock.js +9 -9
  27. package/transform/lib/mock.js.map +1 -1
  28. package/transform/lib/range.js +13 -0
  29. package/transform/lib/range.js.map +1 -0
  30. package/transform/lib/types.js +26 -0
  31. package/transform/lib/types.js.map +1 -0
  32. package/transform/lib/util.js +47 -0
  33. package/transform/lib/util.js.map +1 -0
  34. package/transform/lib/visitor.js +532 -0
  35. package/transform/lib/visitor.js.map +1 -0
  36. package/transform/src/builder.ts +1474 -0
  37. package/transform/src/coverage.ts +6 -7
  38. package/transform/src/index.ts +1 -2
  39. package/transform/src/linker.ts +41 -0
  40. package/transform/src/mock.ts +9 -10
  41. package/transform/src/range.ts +12 -0
  42. package/transform/src/types.ts +35 -0
  43. package/transform/src/util.ts +81 -0
  44. package/transform/src/visitor.ts +744 -0
  45. package/.trunk/configs/.markdownlint.yaml +0 -2
  46. package/.trunk/configs/.yamllint.yaml +0 -7
  47. package/.trunk/trunk.yaml +0 -34
  48. package/bin/about.js +0 -135
  49. package/bin/package.json +0 -3
@@ -0,0 +1,532 @@
1
+ export class Visitor {
2
+ currentSource = null;
3
+ visit(node, ref = null) {
4
+ if (node == null)
5
+ return;
6
+ if (node instanceof Array) {
7
+ for (const n of node) {
8
+ this._visit(n, ref);
9
+ }
10
+ }
11
+ else {
12
+ this._visit(node, ref);
13
+ }
14
+ }
15
+ _visit(node, ref) {
16
+ switch (node.kind) {
17
+ case 0:
18
+ this.visitSource(node, ref);
19
+ break;
20
+ case 1:
21
+ this.visitNamedTypeNode(node, ref);
22
+ break;
23
+ case 2:
24
+ this.visitFunctionTypeNode(node, ref);
25
+ break;
26
+ case 3:
27
+ this.visitTypeName(node, ref);
28
+ break;
29
+ case 4:
30
+ this.visitTypeParameter(node, ref);
31
+ break;
32
+ case 6:
33
+ this.visitIdentifierExpression(node, ref);
34
+ break;
35
+ case 7:
36
+ this.visitAssertionExpression(node, ref);
37
+ break;
38
+ case 8:
39
+ this.visitBinaryExpression(node, ref);
40
+ break;
41
+ case 9:
42
+ this.visitCallExpression(node, ref);
43
+ break;
44
+ case 10:
45
+ this.visitClassExpression(node, ref);
46
+ break;
47
+ case 11:
48
+ this.visitCommaExpression(node, ref);
49
+ break;
50
+ case 12:
51
+ this.visitElementAccessExpression(node, ref);
52
+ break;
53
+ case 14:
54
+ this.visitFunctionExpression(node, ref);
55
+ break;
56
+ case 15:
57
+ this.visitInstanceOfExpression(node, ref);
58
+ break;
59
+ case 16:
60
+ this.visitLiteralExpression(node, ref);
61
+ break;
62
+ case 17:
63
+ this.visitNewExpression(node, ref);
64
+ break;
65
+ case 20:
66
+ this.visitParenthesizedExpression(node, ref);
67
+ break;
68
+ case 21:
69
+ this.visitPropertyAccessExpression(node, ref);
70
+ break;
71
+ case 22:
72
+ this.visitTernaryExpression(node, ref);
73
+ break;
74
+ case 27:
75
+ this.visitUnaryPostfixExpression(node, ref);
76
+ break;
77
+ case 28:
78
+ this.visitUnaryPrefixExpression(node, ref);
79
+ break;
80
+ case 30:
81
+ this.visitBlockStatement(node, ref);
82
+ break;
83
+ case 31:
84
+ this.visitBreakStatement(node, ref);
85
+ break;
86
+ case 32:
87
+ this.visitContinueStatement(node, ref);
88
+ break;
89
+ case 33:
90
+ this.visitDoStatement(node, ref);
91
+ break;
92
+ case 34:
93
+ this.visitEmptyStatement(node, ref);
94
+ break;
95
+ case 35:
96
+ this.visitExportStatement(node, ref);
97
+ break;
98
+ case 36:
99
+ this.visitExportDefaultStatement(node, ref);
100
+ break;
101
+ case 37:
102
+ this.visitExportImportStatement(node, ref);
103
+ break;
104
+ case 38:
105
+ this.visitExpressionStatement(node, ref);
106
+ break;
107
+ case 39:
108
+ this.visitForStatement(node, ref);
109
+ break;
110
+ case 41:
111
+ this.visitIfStatement(node, ref);
112
+ break;
113
+ case 42:
114
+ this.visitImportStatement(node, ref);
115
+ break;
116
+ case 43:
117
+ this.visitReturnStatement(node, ref);
118
+ break;
119
+ case 44:
120
+ this.visitSwitchStatement(node, ref);
121
+ break;
122
+ case 45:
123
+ this.visitThrowStatement(node, ref);
124
+ break;
125
+ case 46:
126
+ this.visitTryStatement(node, ref);
127
+ break;
128
+ case 47:
129
+ this.visitVariableStatement(node, ref);
130
+ break;
131
+ case 49:
132
+ this.visitWhileStatement(node, ref);
133
+ break;
134
+ case 51:
135
+ this.visitClassDeclaration(node, false, ref);
136
+ break;
137
+ case 52:
138
+ this.visitEnumDeclaration(node, false, ref);
139
+ break;
140
+ case 53:
141
+ this.visitEnumValueDeclaration(node, ref);
142
+ break;
143
+ case 54:
144
+ this.visitFieldDeclaration(node, ref);
145
+ break;
146
+ case 55:
147
+ this.visitFunctionDeclaration(node, false, ref);
148
+ break;
149
+ case 56:
150
+ this.visitImportDeclaration(node, ref);
151
+ break;
152
+ case 57:
153
+ this.visitInterfaceDeclaration(node, false, ref);
154
+ break;
155
+ case 58:
156
+ this.visitMethodDeclaration(node, ref);
157
+ break;
158
+ case 59:
159
+ this.visitNamespaceDeclaration(node, false, ref);
160
+ break;
161
+ case 60:
162
+ this.visitTypeDeclaration(node, ref);
163
+ break;
164
+ case 61:
165
+ this.visitVariableDeclaration(node, ref);
166
+ break;
167
+ case 62:
168
+ this.visitDecoratorNode(node, ref);
169
+ break;
170
+ case 63:
171
+ this.visitExportMember(node, ref);
172
+ break;
173
+ case 64:
174
+ this.visitSwitchCase(node, ref);
175
+ break;
176
+ case 65:
177
+ this.visitIndexSignature(node, ref);
178
+ break;
179
+ case 18:
180
+ this.visitNullExpression(node, ref);
181
+ break;
182
+ case 25: {
183
+ this.visitTrueExpression(node, ref);
184
+ break;
185
+ }
186
+ case 13: {
187
+ this.visitFalseExpression(node, ref);
188
+ break;
189
+ }
190
+ case 29: {
191
+ this.visitCompiledExpression(node, ref);
192
+ break;
193
+ }
194
+ case 26: {
195
+ this.visitConstructorExpression(node, ref);
196
+ break;
197
+ }
198
+ case 66: {
199
+ this.visitComment(node, ref);
200
+ break;
201
+ }
202
+ case 40: {
203
+ this.visitForOfStatement(node, ref);
204
+ break;
205
+ }
206
+ case 50: {
207
+ this.visitModuleDeclaration(node, ref);
208
+ break;
209
+ }
210
+ case 19: {
211
+ this.visitOmittedExpression(node, ref);
212
+ break;
213
+ }
214
+ case 5: {
215
+ this.visitParameter(node, ref);
216
+ break;
217
+ }
218
+ case 23: {
219
+ this.visitSuperExpression(node, ref);
220
+ break;
221
+ }
222
+ case 24: {
223
+ this.visitThisExpression(node, ref);
224
+ break;
225
+ }
226
+ case 48: {
227
+ this.visitVoidStatement(node, ref);
228
+ break;
229
+ }
230
+ default:
231
+ throw new Error("Could not visit invalid type!");
232
+ }
233
+ }
234
+ visitSource(node, ref = null) {
235
+ this.currentSource = node;
236
+ this.visit(node.statements, node);
237
+ this.currentSource = null;
238
+ }
239
+ visitTypeNode(node, ref = null) { }
240
+ visitTypeName(node, ref = null) {
241
+ this.visit(node.identifier, node);
242
+ this.visit(node.next, node);
243
+ }
244
+ visitNamedTypeNode(node, ref = null) {
245
+ this.visit(node.name, node);
246
+ this.visit(node.typeArguments, node);
247
+ }
248
+ visitFunctionTypeNode(node, ref = null) {
249
+ this.visit(node.parameters, node);
250
+ this.visit(node.returnType, node);
251
+ this.visit(node.explicitThisType, node);
252
+ }
253
+ visitTypeParameter(node, ref = null) {
254
+ this.visit(node.name, node);
255
+ this.visit(node.extendsType, node);
256
+ this.visit(node.defaultType, node);
257
+ }
258
+ visitIdentifierExpression(node, ref = null) { }
259
+ visitArrayLiteralExpression(node, ref = null) {
260
+ this.visit(node.elementExpressions, node);
261
+ }
262
+ visitObjectLiteralExpression(node, ref = null) {
263
+ this.visit(node.names, node);
264
+ this.visit(node.values, node);
265
+ }
266
+ visitAssertionExpression(node, ref = null) {
267
+ this.visit(node.toType, node);
268
+ this.visit(node.expression, node);
269
+ }
270
+ visitBinaryExpression(node, ref = null) {
271
+ this.visit(node.left, node);
272
+ this.visit(node.right, node);
273
+ }
274
+ visitCallExpression(node, ref = null) {
275
+ this.visit(node.expression, node);
276
+ this.visit(node.typeArguments, node);
277
+ this.visit(node.args, node);
278
+ }
279
+ visitClassExpression(node, ref = null) {
280
+ this.visit(node.declaration, node);
281
+ }
282
+ visitCommaExpression(node, ref = null) {
283
+ this.visit(node.expressions, node);
284
+ }
285
+ visitElementAccessExpression(node, ref = null) {
286
+ this.visit(node.elementExpression, node);
287
+ this.visit(node.expression, node);
288
+ }
289
+ visitFunctionExpression(node, ref = null) {
290
+ this.visit(node.declaration, node);
291
+ }
292
+ visitLiteralExpression(node, ref = null) {
293
+ switch (node.literalKind) {
294
+ case 0:
295
+ this.visitFloatLiteralExpression(node);
296
+ break;
297
+ case 1:
298
+ this.visitIntegerLiteralExpression(node);
299
+ break;
300
+ case 2:
301
+ this.visitStringLiteralExpression(node);
302
+ break;
303
+ case 3:
304
+ this.visitTemplateLiteralExpression(node);
305
+ break;
306
+ case 4:
307
+ this.visitRegexpLiteralExpression(node);
308
+ break;
309
+ case 5:
310
+ this.visitArrayLiteralExpression(node);
311
+ break;
312
+ case 6:
313
+ this.visitObjectLiteralExpression(node);
314
+ break;
315
+ default:
316
+ throw new Error("Invalid LiteralKind at visitLiteralExpression(): " +
317
+ node.literalKind);
318
+ }
319
+ }
320
+ visitFloatLiteralExpression(node, ref = null) { }
321
+ visitInstanceOfExpression(node, ref = null) {
322
+ this.visit(node.expression, node);
323
+ this.visit(node.isType, node);
324
+ }
325
+ visitIntegerLiteralExpression(node, ref = null) { }
326
+ visitStringLiteralExpression(node, ref = null) { }
327
+ visitTemplateLiteralExpression(node, ref = null) { }
328
+ visitRegexpLiteralExpression(node, ref = null) { }
329
+ visitNewExpression(node, ref = null) {
330
+ this.visit(node.typeName, node);
331
+ this.visit(node.typeArguments, node);
332
+ this.visit(node.args, node);
333
+ }
334
+ visitParenthesizedExpression(node, ref = null) {
335
+ this.visit(node.expression, node);
336
+ }
337
+ visitPropertyAccessExpression(node, ref = null) {
338
+ this.visit(node.property, node);
339
+ this.visit(node.expression, node);
340
+ }
341
+ visitTernaryExpression(node, ref = null) {
342
+ this.visit(node.condition, node);
343
+ this.visit(node.ifThen, node);
344
+ this.visit(node.ifElse, node);
345
+ }
346
+ visitUnaryExpression(node, ref = null) {
347
+ this.visit(node.operand, node);
348
+ }
349
+ visitUnaryPostfixExpression(node, ref = null) {
350
+ this.visit(node.operand, node);
351
+ }
352
+ visitUnaryPrefixExpression(node, ref = null) {
353
+ this.visit(node.operand, node);
354
+ }
355
+ visitSuperExpression(node, ref = null) { }
356
+ visitFalseExpression(node, ref = null) { }
357
+ visitTrueExpression(node, ref = null) { }
358
+ visitThisExpression(node, ref = null) { }
359
+ visitNullExpression(node, ref = null) { }
360
+ visitConstructorExpression(node, ref = null) { }
361
+ visitNodeAndTerminate(statement, ref = null) { }
362
+ visitBlockStatement(node, ref = null) {
363
+ this.visit(node.statements, node);
364
+ }
365
+ visitBreakStatement(node, ref = null) {
366
+ this.visit(node.label, node);
367
+ }
368
+ visitContinueStatement(node, ref = null) {
369
+ this.visit(node.label, node);
370
+ }
371
+ visitClassDeclaration(node, isDefault = false, ref = null) {
372
+ this.visit(node.name, node);
373
+ this.visit(node.decorators, node);
374
+ if (node.isGeneric ? node.typeParameters != null : node.typeParameters == null) {
375
+ this.visit(node.typeParameters, node);
376
+ this.visit(node.extendsType, node);
377
+ this.visit(node.implementsTypes, node);
378
+ this.visit(node.members, node);
379
+ }
380
+ else {
381
+ throw new Error("Expected to type parameters to match class declaration, but found type mismatch instead!");
382
+ }
383
+ }
384
+ visitDoStatement(node, ref = null) {
385
+ this.visit(node.condition, node);
386
+ this.visit(node.body, node);
387
+ }
388
+ visitEmptyStatement(node, ref = null) { }
389
+ visitEnumDeclaration(node, isDefault = false, ref = null) {
390
+ this.visit(node.name, node);
391
+ this.visit(node.decorators, node);
392
+ this.visit(node.values, node);
393
+ }
394
+ visitEnumValueDeclaration(node, ref = null) {
395
+ this.visit(node.name, node);
396
+ this.visit(node.initializer, node);
397
+ }
398
+ visitExportImportStatement(node, ref = null) {
399
+ this.visit(node.name, node);
400
+ this.visit(node.externalName, node);
401
+ }
402
+ visitExportMember(node, ref = null) {
403
+ this.visit(node.localName, node);
404
+ this.visit(node.exportedName, node);
405
+ }
406
+ visitExportStatement(node, ref = null) {
407
+ this.visit(node.path, node);
408
+ this.visit(node.members, node);
409
+ }
410
+ visitExportDefaultStatement(node, ref = null) {
411
+ this.visit(node.declaration, node);
412
+ }
413
+ visitExpressionStatement(node, ref = null) {
414
+ this.visit(node.expression, ref);
415
+ }
416
+ visitFieldDeclaration(node, ref = null) {
417
+ this.visit(node.name, node);
418
+ this.visit(node.type, node);
419
+ this.visit(node.initializer, node);
420
+ this.visit(node.decorators, node);
421
+ }
422
+ visitForStatement(node, ref = null) {
423
+ this.visit(node.initializer, node);
424
+ this.visit(node.condition, node);
425
+ this.visit(node.incrementor, node);
426
+ this.visit(node.body, node);
427
+ }
428
+ visitFunctionDeclaration(node, isDefault = false, ref = null) {
429
+ this.visit(node.name, node);
430
+ this.visit(node.decorators, node);
431
+ this.visit(node.typeParameters, node);
432
+ this.visit(node.signature, node);
433
+ this.visit(node.body, node);
434
+ }
435
+ visitIfStatement(node, ref = null) {
436
+ this.visit(node.condition, node);
437
+ this.visit(node.ifTrue, node);
438
+ this.visit(node.ifFalse, node);
439
+ }
440
+ visitImportDeclaration(node, ref = null) {
441
+ this.visit(node.foreignName, node);
442
+ this.visit(node.name, node);
443
+ this.visit(node.decorators, node);
444
+ }
445
+ visitImportStatement(node, ref = null) {
446
+ this.visit(node.namespaceName, node);
447
+ this.visit(node.declarations, node);
448
+ }
449
+ visitIndexSignature(node, ref = null) {
450
+ this.visit(node.keyType, node);
451
+ this.visit(node.valueType, node);
452
+ }
453
+ visitInterfaceDeclaration(node, isDefault = false, ref = null) {
454
+ this.visit(node.name, node);
455
+ this.visit(node.typeParameters, node);
456
+ this.visit(node.implementsTypes, node);
457
+ this.visit(node.extendsType, node);
458
+ this.visit(node.members, node);
459
+ }
460
+ visitMethodDeclaration(node, ref = null) {
461
+ this.visit(node.name, node);
462
+ this.visit(node.typeParameters, node);
463
+ this.visit(node.signature, node);
464
+ this.visit(node.decorators, node);
465
+ this.visit(node.body, node);
466
+ }
467
+ visitNamespaceDeclaration(node, isDefault = false, ref = null) {
468
+ this.visit(node.name, node);
469
+ this.visit(node.decorators, node);
470
+ this.visit(node.members, node);
471
+ }
472
+ visitReturnStatement(node, ref = null) {
473
+ this.visit(node.value, node);
474
+ }
475
+ visitSwitchCase(node, ref = null) {
476
+ this.visit(node.label, node);
477
+ this.visit(node.statements, node);
478
+ }
479
+ visitSwitchStatement(node, ref = null) {
480
+ this.visit(node.condition, node);
481
+ this.visit(node.cases, node);
482
+ }
483
+ visitThrowStatement(node, ref = null) {
484
+ this.visit(node.value, node);
485
+ }
486
+ visitTryStatement(node, ref = null) {
487
+ this.visit(node.bodyStatements, node);
488
+ this.visit(node.catchVariable, node);
489
+ this.visit(node.catchStatements, node);
490
+ this.visit(node.finallyStatements, node);
491
+ }
492
+ visitTypeDeclaration(node, ref = null) {
493
+ this.visit(node.name, node);
494
+ this.visit(node.decorators, node);
495
+ this.visit(node.type, node);
496
+ this.visit(node.typeParameters, node);
497
+ }
498
+ visitVariableDeclaration(node, ref = null) {
499
+ this.visit(node.name, node);
500
+ this.visit(node.type, node);
501
+ this.visit(node.initializer, node);
502
+ }
503
+ visitVariableStatement(node, ref = null) {
504
+ this.visit(node.decorators, node);
505
+ this.visit(node.declarations, node);
506
+ }
507
+ visitWhileStatement(node, ref = null) {
508
+ this.visit(node.condition, node);
509
+ this.visit(node.body, node);
510
+ }
511
+ visitVoidStatement(node, ref = null) { }
512
+ visitComment(node, ref = null) { }
513
+ visitDecoratorNode(node, ref = null) {
514
+ this.visit(node.name, node);
515
+ this.visit(node.args, node);
516
+ }
517
+ visitParameter(node, ref = null) {
518
+ this.visit(node.name, node);
519
+ this.visit(node.implicitFieldDeclaration, node);
520
+ this.visit(node.initializer, node);
521
+ this.visit(node.type, node);
522
+ }
523
+ visitCompiledExpression(node, ref = null) { }
524
+ visitForOfStatement(node, ref = null) {
525
+ this.visit(node.body, node);
526
+ this.visit(node.variable, node);
527
+ this.visit(node.iterable, node);
528
+ }
529
+ visitModuleDeclaration(node, ref = null) { }
530
+ visitOmittedExpression(node, ref = null) { }
531
+ }
532
+ //# sourceMappingURL=visitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visitor.js","sourceRoot":"","sources":["../src/visitor.ts"],"names":[],"mappings":"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"}