ic-mops 1.12.0 → 2.0.0

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 (322) hide show
  1. package/.DS_Store +0 -0
  2. package/.eslintrc.json +7 -7
  3. package/CHANGELOG.md +6 -0
  4. package/api/actors.ts +41 -37
  5. package/api/downloadPackageFiles.ts +75 -61
  6. package/api/getHighestVersion.ts +5 -5
  7. package/api/index.ts +4 -4
  8. package/api/network.ts +19 -21
  9. package/api/resolveVersion.ts +14 -11
  10. package/bin/mops.js +1 -1
  11. package/bundle/bench/bench-canister.mo +109 -101
  12. package/bundle/bench/user-bench.mo +6 -6
  13. package/bundle/bin/mops.js +1 -1
  14. package/bundle/cli.js +797 -792
  15. package/bundle/cli.tgz +0 -0
  16. package/bundle/package.json +6 -5
  17. package/bundle/templates/mops-publish.yml +3 -3
  18. package/bundle/templates/mops-test.yml +3 -3
  19. package/bundle/templates/src/lib.mo +13 -13
  20. package/bundle/templates/test/lib.test.mo +2 -2
  21. package/bundle-package-json.ts +8 -8
  22. package/cache.ts +80 -65
  23. package/check-requirements.ts +49 -45
  24. package/cli.ts +577 -376
  25. package/commands/add.ts +142 -129
  26. package/commands/available-updates.ts +55 -41
  27. package/commands/bench/bench-canister.mo +114 -108
  28. package/commands/bench/user-bench.mo +6 -6
  29. package/commands/bench-replica.ts +146 -118
  30. package/commands/bench.ts +563 -497
  31. package/commands/build.ts +177 -0
  32. package/commands/bump.ts +68 -57
  33. package/commands/check-candid.ts +24 -0
  34. package/commands/docs-coverage.ts +124 -102
  35. package/commands/docs.ts +118 -108
  36. package/commands/format.ts +171 -155
  37. package/commands/init.ts +301 -275
  38. package/commands/install/install-all.ts +75 -62
  39. package/commands/install/install-dep.ts +43 -28
  40. package/commands/install/install-deps.ts +23 -15
  41. package/commands/install/install-local-dep.ts +42 -34
  42. package/commands/install/install-mops-dep.ts +154 -123
  43. package/commands/install/sync-local-cache.ts +39 -35
  44. package/commands/maintainer.ts +109 -99
  45. package/commands/outdated.ts +30 -24
  46. package/commands/owner.ts +107 -99
  47. package/commands/publish.ts +534 -443
  48. package/commands/remove.ts +119 -89
  49. package/commands/replica.ts +391 -316
  50. package/commands/search.ts +42 -36
  51. package/commands/self.ts +63 -56
  52. package/commands/sources.ts +66 -49
  53. package/commands/sync.ts +92 -75
  54. package/commands/template.ts +145 -102
  55. package/commands/test/mmf1.ts +146 -119
  56. package/commands/test/reporters/compact-reporter.ts +87 -84
  57. package/commands/test/reporters/files-reporter.ts +56 -51
  58. package/commands/test/reporters/reporter.ts +12 -6
  59. package/commands/test/reporters/silent-reporter.ts +58 -59
  60. package/commands/test/reporters/verbose-reporter.ts +66 -54
  61. package/commands/test/test.ts +498 -401
  62. package/commands/test/utils.ts +72 -67
  63. package/commands/toolchain/index.ts +363 -322
  64. package/commands/toolchain/moc.ts +78 -50
  65. package/commands/toolchain/pocket-ic.ts +41 -34
  66. package/commands/toolchain/toolchain-utils.ts +92 -72
  67. package/commands/toolchain/wasmtime.ts +37 -34
  68. package/commands/update.ts +82 -64
  69. package/commands/user.ts +90 -81
  70. package/commands/watch/deployer.ts +188 -152
  71. package/commands/watch/error-checker.ts +90 -80
  72. package/commands/watch/formatter.ts +72 -60
  73. package/commands/watch/generator.ts +116 -96
  74. package/commands/watch/globMoFiles.ts +13 -13
  75. package/commands/watch/parseDfxJson.ts +63 -57
  76. package/commands/watch/tester.ts +83 -65
  77. package/commands/watch/warning-checker.ts +149 -136
  78. package/commands/watch/watch.ts +123 -95
  79. package/dist/api/actors.d.ts +4 -4
  80. package/dist/api/actors.js +8 -8
  81. package/dist/api/downloadPackageFiles.d.ts +2 -2
  82. package/dist/api/downloadPackageFiles.js +10 -10
  83. package/dist/api/getHighestVersion.js +1 -1
  84. package/dist/api/index.d.ts +4 -4
  85. package/dist/api/index.js +4 -4
  86. package/dist/api/network.js +9 -9
  87. package/dist/api/resolveVersion.js +3 -3
  88. package/dist/bin/mops.js +1 -1
  89. package/dist/bundle-package-json.js +8 -8
  90. package/dist/cache.js +22 -17
  91. package/dist/check-requirements.js +11 -11
  92. package/dist/cli.js +283 -186
  93. package/dist/commands/add.d.ts +1 -1
  94. package/dist/commands/add.js +40 -37
  95. package/dist/commands/available-updates.d.ts +1 -1
  96. package/dist/commands/available-updates.js +18 -12
  97. package/dist/commands/bench/bench-canister.mo +114 -108
  98. package/dist/commands/bench/user-bench.mo +6 -6
  99. package/dist/commands/bench-replica.d.ts +4 -4
  100. package/dist/commands/bench-replica.js +45 -34
  101. package/dist/commands/bench.d.ts +5 -5
  102. package/dist/commands/bench.js +134 -118
  103. package/dist/commands/build.d.ts +7 -0
  104. package/dist/commands/build.js +121 -0
  105. package/dist/commands/bump.js +27 -18
  106. package/dist/commands/check-candid.d.ts +4 -0
  107. package/dist/commands/check-candid.js +15 -0
  108. package/dist/commands/docs-coverage.d.ts +1 -1
  109. package/dist/commands/docs-coverage.js +45 -31
  110. package/dist/commands/docs.d.ts +1 -1
  111. package/dist/commands/docs.js +39 -38
  112. package/dist/commands/format.js +31 -27
  113. package/dist/commands/init.js +102 -92
  114. package/dist/commands/install/install-all.d.ts +2 -2
  115. package/dist/commands/install/install-all.js +23 -21
  116. package/dist/commands/install/install-dep.d.ts +1 -1
  117. package/dist/commands/install/install-dep.js +21 -8
  118. package/dist/commands/install/install-deps.d.ts +1 -1
  119. package/dist/commands/install/install-deps.js +1 -1
  120. package/dist/commands/install/install-local-dep.js +11 -9
  121. package/dist/commands/install/install-mops-dep.d.ts +1 -1
  122. package/dist/commands/install/install-mops-dep.js +32 -27
  123. package/dist/commands/install/sync-local-cache.js +10 -10
  124. package/dist/commands/maintainer.js +21 -21
  125. package/dist/commands/outdated.js +12 -8
  126. package/dist/commands/owner.js +21 -21
  127. package/dist/commands/publish.js +148 -128
  128. package/dist/commands/remove.d.ts +1 -1
  129. package/dist/commands/remove.js +42 -30
  130. package/dist/commands/replica.d.ts +7 -7
  131. package/dist/commands/replica.js +85 -57
  132. package/dist/commands/search.js +15 -13
  133. package/dist/commands/self.js +31 -28
  134. package/dist/commands/sources.d.ts +5 -1
  135. package/dist/commands/sources.js +23 -17
  136. package/dist/commands/sync.d.ts +1 -1
  137. package/dist/commands/sync.js +38 -25
  138. package/dist/commands/template.js +66 -56
  139. package/dist/commands/test/mmf1.d.ts +3 -3
  140. package/dist/commands/test/mmf1.js +33 -31
  141. package/dist/commands/test/reporters/compact-reporter.d.ts +3 -3
  142. package/dist/commands/test/reporters/compact-reporter.js +19 -15
  143. package/dist/commands/test/reporters/files-reporter.d.ts +3 -3
  144. package/dist/commands/test/reporters/files-reporter.js +18 -14
  145. package/dist/commands/test/reporters/reporter.d.ts +2 -2
  146. package/dist/commands/test/reporters/silent-reporter.d.ts +3 -3
  147. package/dist/commands/test/reporters/silent-reporter.js +4 -4
  148. package/dist/commands/test/reporters/verbose-reporter.d.ts +3 -3
  149. package/dist/commands/test/reporters/verbose-reporter.js +17 -13
  150. package/dist/commands/test/test.d.ts +4 -4
  151. package/dist/commands/test/test.js +134 -112
  152. package/dist/commands/test/utils.d.ts +3 -3
  153. package/dist/commands/test/utils.js +17 -17
  154. package/dist/commands/toolchain/index.d.ts +1 -1
  155. package/dist/commands/toolchain/index.js +81 -69
  156. package/dist/commands/toolchain/moc.d.ts +1 -1
  157. package/dist/commands/toolchain/moc.js +48 -24
  158. package/dist/commands/toolchain/pocket-ic.js +12 -12
  159. package/dist/commands/toolchain/toolchain-utils.d.ts +2 -0
  160. package/dist/commands/toolchain/toolchain-utils.js +32 -23
  161. package/dist/commands/toolchain/wasmtime.js +11 -11
  162. package/dist/commands/update.d.ts +1 -1
  163. package/dist/commands/update.js +18 -14
  164. package/dist/commands/user.js +31 -28
  165. package/dist/commands/watch/deployer.d.ts +4 -4
  166. package/dist/commands/watch/deployer.js +45 -36
  167. package/dist/commands/watch/error-checker.d.ts +2 -2
  168. package/dist/commands/watch/error-checker.js +27 -27
  169. package/dist/commands/watch/formatter.d.ts +4 -4
  170. package/dist/commands/watch/formatter.js +17 -17
  171. package/dist/commands/watch/generator.d.ts +3 -3
  172. package/dist/commands/watch/generator.js +28 -23
  173. package/dist/commands/watch/globMoFiles.js +8 -8
  174. package/dist/commands/watch/parseDfxJson.d.ts +2 -2
  175. package/dist/commands/watch/parseDfxJson.js +9 -9
  176. package/dist/commands/watch/tester.d.ts +4 -4
  177. package/dist/commands/watch/tester.js +23 -21
  178. package/dist/commands/watch/warning-checker.d.ts +3 -3
  179. package/dist/commands/watch/warning-checker.js +36 -36
  180. package/dist/commands/watch/watch.js +45 -32
  181. package/dist/environments/nodejs/cli.d.ts +1 -0
  182. package/dist/environments/nodejs/cli.js +4 -0
  183. package/dist/environments/web/cli.d.ts +1 -0
  184. package/dist/environments/web/cli.js +4 -0
  185. package/dist/error.d.ts +1 -0
  186. package/dist/error.js +5 -0
  187. package/dist/fix-dist.js +5 -5
  188. package/dist/helpers/find-changelog-entry.js +8 -5
  189. package/dist/helpers/get-dep-name.js +2 -2
  190. package/dist/helpers/get-dfx-version.js +4 -4
  191. package/dist/helpers/get-moc-path.js +8 -7
  192. package/dist/helpers/get-moc-version.js +10 -7
  193. package/dist/helpers/get-package-id.js +2 -2
  194. package/dist/helpers/is-candid-compatible.d.ts +1 -0
  195. package/dist/helpers/is-candid-compatible.js +20 -0
  196. package/dist/integrity.d.ts +1 -1
  197. package/dist/integrity.js +47 -38
  198. package/dist/jest.config.d.ts +11 -0
  199. package/dist/jest.config.js +14 -0
  200. package/dist/mops.d.ts +6 -6
  201. package/dist/mops.js +87 -80
  202. package/dist/notify-installs.js +4 -4
  203. package/dist/package.json +9 -5
  204. package/dist/pem.d.ts +3 -3
  205. package/dist/pem.js +20 -12
  206. package/dist/release-cli.js +20 -20
  207. package/dist/resolve-packages.d.ts +1 -1
  208. package/dist/resolve-packages.js +52 -36
  209. package/dist/templates/mops-publish.yml +3 -3
  210. package/dist/templates/mops-test.yml +3 -3
  211. package/dist/templates/src/lib.mo +13 -13
  212. package/dist/templates/test/lib.test.mo +2 -2
  213. package/dist/templates.js +1 -1
  214. package/dist/tests/cli.test.d.ts +1 -0
  215. package/dist/tests/cli.test.js +63 -0
  216. package/dist/types.d.ts +14 -4
  217. package/dist/vessel.d.ts +2 -2
  218. package/dist/vessel.js +41 -34
  219. package/dist/wasm/pkg/bundler/package.json +20 -0
  220. package/dist/wasm/pkg/bundler/wasm.d.ts +3 -0
  221. package/dist/wasm/pkg/bundler/wasm.js +5 -0
  222. package/dist/wasm/pkg/bundler/wasm_bg.js +93 -0
  223. package/dist/wasm/pkg/bundler/wasm_bg.wasm +0 -0
  224. package/dist/wasm/pkg/bundler/wasm_bg.wasm.d.ts +8 -0
  225. package/dist/wasm/pkg/nodejs/package.json +14 -0
  226. package/dist/wasm/pkg/nodejs/wasm.d.ts +3 -0
  227. package/dist/wasm/pkg/nodejs/wasm.js +98 -0
  228. package/dist/wasm/pkg/nodejs/wasm_bg.wasm +0 -0
  229. package/dist/wasm/pkg/nodejs/wasm_bg.wasm.d.ts +8 -0
  230. package/dist/wasm/pkg/web/package.json +18 -0
  231. package/dist/wasm/pkg/web/wasm.d.ts +35 -0
  232. package/dist/wasm/pkg/web/wasm.js +191 -0
  233. package/dist/wasm/pkg/web/wasm_bg.wasm +0 -0
  234. package/dist/wasm/pkg/web/wasm_bg.wasm.d.ts +8 -0
  235. package/dist/wasm.d.ts +5 -0
  236. package/dist/wasm.js +10 -0
  237. package/environments/nodejs/cli.ts +6 -0
  238. package/environments/web/cli.ts +6 -0
  239. package/error.ts +6 -0
  240. package/fix-dist.ts +5 -5
  241. package/global.d.ts +3 -3
  242. package/helpers/find-changelog-entry.ts +26 -23
  243. package/helpers/get-dep-name.ts +5 -5
  244. package/helpers/get-dfx-version.ts +8 -9
  245. package/helpers/get-moc-path.ts +25 -26
  246. package/helpers/get-moc-version.ts +21 -19
  247. package/helpers/get-package-id.ts +4 -4
  248. package/helpers/is-candid-compatible.ts +22 -0
  249. package/integrity.ts +270 -236
  250. package/jest.config.js +14 -0
  251. package/mops.ts +238 -215
  252. package/notify-installs.ts +16 -17
  253. package/package.json +19 -10
  254. package/parallel.ts +28 -24
  255. package/pem.ts +55 -47
  256. package/release-cli.ts +73 -39
  257. package/resolve-packages.ts +231 -189
  258. package/templates/mops-publish.yml +3 -3
  259. package/templates/mops-test.yml +3 -3
  260. package/templates/src/lib.mo +13 -13
  261. package/templates/test/lib.test.mo +2 -2
  262. package/templates.ts +4 -4
  263. package/tests/__snapshots__/cli.test.ts.snap +202 -0
  264. package/tests/build/error/candid/bar.did +3 -0
  265. package/tests/build/error/dfx.json +12 -0
  266. package/tests/build/error/mops.toml +9 -0
  267. package/tests/build/error/src/Bar.mo +5 -0
  268. package/tests/build/error/src/Foo.mo +5 -0
  269. package/tests/build/success/.dfx/local/canister_ids.json +17 -0
  270. package/tests/build/success/.dfx/local/canisters/bar/bar.did +3 -0
  271. package/tests/build/success/.dfx/local/canisters/bar/bar.most +4 -0
  272. package/tests/build/success/.dfx/local/canisters/bar/bar.wasm +0 -0
  273. package/tests/build/success/.dfx/local/canisters/bar/constructor.did +3 -0
  274. package/tests/build/success/.dfx/local/canisters/bar/index.js +42 -0
  275. package/tests/build/success/.dfx/local/canisters/bar/init_args.txt +1 -0
  276. package/tests/build/success/.dfx/local/canisters/bar/service.did +3 -0
  277. package/tests/build/success/.dfx/local/canisters/bar/service.did.d.ts +7 -0
  278. package/tests/build/success/.dfx/local/canisters/bar/service.did.js +4 -0
  279. package/tests/build/success/.dfx/local/canisters/foo/constructor.did +3 -0
  280. package/tests/build/success/.dfx/local/canisters/foo/foo.did +3 -0
  281. package/tests/build/success/.dfx/local/canisters/foo/foo.most +4 -0
  282. package/tests/build/success/.dfx/local/canisters/foo/foo.wasm +0 -0
  283. package/tests/build/success/.dfx/local/canisters/foo/index.js +42 -0
  284. package/tests/build/success/.dfx/local/canisters/foo/init_args.txt +1 -0
  285. package/tests/build/success/.dfx/local/canisters/foo/service.did +3 -0
  286. package/tests/build/success/.dfx/local/canisters/foo/service.did.d.ts +7 -0
  287. package/tests/build/success/.dfx/local/canisters/foo/service.did.js +4 -0
  288. package/tests/build/success/.dfx/local/lsp/ucwa4-rx777-77774-qaada-cai.did +3 -0
  289. package/tests/build/success/.dfx/local/lsp/ulvla-h7777-77774-qaacq-cai.did +3 -0
  290. package/tests/build/success/.dfx/local/network-id +4 -0
  291. package/tests/build/success/candid/bar.did +3 -0
  292. package/tests/build/success/dfx.json +12 -0
  293. package/tests/build/success/mops.toml +9 -0
  294. package/tests/build/success/src/Bar.mo +5 -0
  295. package/tests/build/success/src/Foo.mo +5 -0
  296. package/tests/check-candid/a.did +3 -0
  297. package/tests/check-candid/b.did +5 -0
  298. package/tests/check-candid/c.did +3 -0
  299. package/tests/cli.test.ts +82 -0
  300. package/tsconfig.json +26 -19
  301. package/types.ts +41 -31
  302. package/vessel.ts +219 -187
  303. package/wasm/Cargo.lock +1475 -0
  304. package/wasm/Cargo.toml +28 -0
  305. package/wasm/pkg/bundler/package.json +20 -0
  306. package/wasm/pkg/bundler/wasm.d.ts +3 -0
  307. package/wasm/pkg/bundler/wasm.js +5 -0
  308. package/wasm/pkg/bundler/wasm_bg.js +93 -0
  309. package/wasm/pkg/bundler/wasm_bg.wasm +0 -0
  310. package/wasm/pkg/bundler/wasm_bg.wasm.d.ts +8 -0
  311. package/wasm/pkg/nodejs/package.json +14 -0
  312. package/wasm/pkg/nodejs/wasm.d.ts +3 -0
  313. package/wasm/pkg/nodejs/wasm.js +98 -0
  314. package/wasm/pkg/nodejs/wasm_bg.wasm +0 -0
  315. package/wasm/pkg/nodejs/wasm_bg.wasm.d.ts +8 -0
  316. package/wasm/pkg/web/package.json +18 -0
  317. package/wasm/pkg/web/wasm.d.ts +35 -0
  318. package/wasm/pkg/web/wasm.js +191 -0
  319. package/wasm/pkg/web/wasm_bg.wasm +0 -0
  320. package/wasm/pkg/web/wasm_bg.wasm.d.ts +8 -0
  321. package/wasm/src/lib.rs +17 -0
  322. package/wasm.ts +16 -0
@@ -1,100 +1,103 @@
1
- import chalk from 'chalk';
2
- import logUpdate from 'log-update';
3
- import {absToRel} from '../utils.js';
4
- import {MMF1} from '../mmf1.js';
5
- import {Reporter} from './reporter.js';
6
- import {TestMode} from '../../../types.js';
1
+ import chalk from "chalk";
2
+ import logUpdate from "log-update";
3
+ import { absToRel } from "../utils.js";
4
+ import { MMF1 } from "../mmf1.js";
5
+ import { Reporter } from "./reporter.js";
6
+ import { TestMode } from "../../../types.js";
7
7
 
8
8
  export class CompactReporter implements Reporter {
9
- passed = 0;
10
- failed = 0;
11
- skipped = 0;
12
- passedFiles = 0;
13
- failedFiles = 0;
9
+ passed = 0;
10
+ failed = 0;
11
+ skipped = 0;
12
+ passedFiles = 0;
13
+ failedFiles = 0;
14
14
 
15
- #allFiles = new Set<string>();
16
- #runningFiles = new Set<string>();
17
- #failedFiles = new Set<string>();
18
- #finishedFiles = new Set<string>();
19
- #startTime = Date.now();
15
+ #allFiles = new Set<string>();
16
+ #runningFiles = new Set<string>();
17
+ #failedFiles = new Set<string>();
18
+ #finishedFiles = new Set<string>();
19
+ #startTime = Date.now();
20
20
 
21
- addFiles(files : string[]) {
22
- this.#allFiles = new Set(files);
23
- this.#log();
24
- this.#startTimer();
25
- }
21
+ addFiles(files: string[]) {
22
+ this.#allFiles = new Set(files);
23
+ this.#log();
24
+ this.#startTimer();
25
+ }
26
26
 
27
- addRun(file : string, mmf : MMF1, state : Promise<void>, _mode : TestMode) {
28
- this.#runningFiles.add(file);
29
- this.#log();
27
+ addRun(file: string, mmf: MMF1, state: Promise<void>, _mode: TestMode) {
28
+ this.#runningFiles.add(file);
29
+ this.#log();
30
30
 
31
- state.then(() => {
32
- this.passed += mmf.passed;
33
- this.failed += mmf.failed;
34
- this.skipped += mmf.skipped;
31
+ state.then(() => {
32
+ this.passed += mmf.passed;
33
+ this.failed += mmf.failed;
34
+ this.skipped += mmf.skipped;
35
35
 
36
- if (mmf.passed === 0 && mmf.failed === 0) {
37
- this.passed++;
38
- }
36
+ if (mmf.passed === 0 && mmf.failed === 0) {
37
+ this.passed++;
38
+ }
39
39
 
40
- this.passedFiles += Number(mmf.failed === 0);
41
- this.failedFiles += Number(mmf.failed !== 0);
40
+ this.passedFiles += Number(mmf.failed === 0);
41
+ this.failedFiles += Number(mmf.failed !== 0);
42
42
 
43
- if (mmf.failed) {
44
- this.#failedFiles.add(file);
45
- logUpdate.clear();
46
- console.log(chalk.red(''), absToRel(file));
47
- mmf.flush('fail');
48
- console.log('-'.repeat(50));
49
- }
43
+ if (mmf.failed) {
44
+ this.#failedFiles.add(file);
45
+ logUpdate.clear();
46
+ console.log(chalk.red(""), absToRel(file));
47
+ mmf.flush("fail");
48
+ console.log("-".repeat(50));
49
+ }
50
50
 
51
- this.#runningFiles.delete(file);
52
- this.#finishedFiles.add(file);
53
- this.#log();
54
- });
55
- }
51
+ this.#runningFiles.delete(file);
52
+ this.#finishedFiles.add(file);
53
+ this.#log();
54
+ });
55
+ }
56
56
 
57
- done() : boolean {
58
- this.#log();
59
- logUpdate.done();
60
- this.#clearTimer();
61
- return this.failed === 0;
62
- }
57
+ done(): boolean {
58
+ this.#log();
59
+ logUpdate.done();
60
+ this.#clearTimer();
61
+ return this.failed === 0;
62
+ }
63
63
 
64
- #timerId : NodeJS.Timeout | null = null;
65
- #startTimer() {
66
- this.#timerId = setInterval(() => this.#log(), 55);
67
- }
64
+ #timerId: NodeJS.Timeout | null = null;
65
+ #startTimer() {
66
+ this.#timerId = setInterval(() => this.#log(), 55);
67
+ }
68
68
 
69
- #clearTimer() {
70
- if (this.#timerId) {
71
- clearInterval(this.#timerId);
72
- }
73
- }
69
+ #clearTimer() {
70
+ if (this.#timerId) {
71
+ clearInterval(this.#timerId);
72
+ }
73
+ }
74
74
 
75
- #log() {
76
- let res : string[] = [];
77
- let i = 0;
78
- for (let file of this.#allFiles) {
79
- if (this.#runningFiles.has(file)) {
80
- res[Number(i)] = '.';
81
- }
82
- else if (this.#finishedFiles.has(file)) {
83
- res[Number(i)] = this.#failedFiles.has(file) ? chalk.red(':') : ':';
84
- }
85
- else {
86
- res[Number(i)] = ' ';
87
- }
88
- i++;
89
- }
75
+ #log() {
76
+ let res: string[] = [];
77
+ let i = 0;
78
+ for (let file of this.#allFiles) {
79
+ if (this.#runningFiles.has(file)) {
80
+ res[Number(i)] = ".";
81
+ } else if (this.#finishedFiles.has(file)) {
82
+ res[Number(i)] = this.#failedFiles.has(file) ? chalk.red(":") : ":";
83
+ } else {
84
+ res[Number(i)] = " ";
85
+ }
86
+ i++;
87
+ }
90
88
 
91
- let output = `[${res.join('')}]\n`
92
- + `${chalk.gray(((Date.now() - this.#startTime) / 1000).toFixed(2) + 's')}`
93
- + `, total ${this.#allFiles.size} files`
94
- + `, passed ${chalk.greenBright(this.passedFiles)} files`
95
- + (this.skipped ? `, skipped ${chalk[this.skipped ? 'yellowBright' : 'gray'](this.skipped)} cases` : '')
96
- + (this.failed ? `, failed ${chalk[this.failed ? 'redBright' : 'gray'](this.failed)} cases` : '');
89
+ let output =
90
+ `[${res.join("")}]\n` +
91
+ `${chalk.gray(((Date.now() - this.#startTime) / 1000).toFixed(2) + "s")}` +
92
+ `, total ${this.#allFiles.size} files` +
93
+ `, passed ${chalk.greenBright(this.passedFiles)} files` +
94
+ (this.skipped
95
+ ? `, skipped ${chalk[this.skipped ? "yellowBright" : "gray"](this.skipped)} cases`
96
+ : "") +
97
+ (this.failed
98
+ ? `, failed ${chalk[this.failed ? "redBright" : "gray"](this.failed)} cases`
99
+ : "");
97
100
 
98
- logUpdate(output);
99
- }
100
- }
101
+ logUpdate(output);
102
+ }
103
+ }
@@ -1,53 +1,58 @@
1
- import chalk from 'chalk';
2
- import {absToRel} from '../utils.js';
3
- import {MMF1} from '../mmf1.js';
4
- import {Reporter} from './reporter.js';
5
- import {TestMode} from '../../../types.js';
1
+ import chalk from "chalk";
2
+ import { absToRel } from "../utils.js";
3
+ import { MMF1 } from "../mmf1.js";
4
+ import { Reporter } from "./reporter.js";
5
+ import { TestMode } from "../../../types.js";
6
6
 
7
7
  export class FilesReporter implements Reporter {
8
- passed = 0;
9
- failed = 0;
10
- skipped = 0;
11
-
12
- #startTime = Date.now();
13
-
14
- addFiles(files : string[]) {
15
- console.log(`Test files: ${files.length}`);
16
- console.log('='.repeat(50));
17
- }
18
-
19
- addRun(file : string, mmf : MMF1, state : Promise<void>, mode : TestMode) {
20
- state.then(() => {
21
- this.passed += Number(mmf.failed === 0);
22
- this.failed += Number(mmf.failed !== 0);
23
- this.skipped += mmf.skipped;
24
-
25
- if (mmf.failed) {
26
- console.log(chalk.red(''), absToRel(file));
27
- mmf.flush('fail');
28
- console.log('-'.repeat(50));
29
- }
30
- else {
31
- console.log(`${chalk.green('')} ${absToRel(file)} ${mode === 'interpreter' ? '' : chalk.gray(`(${mode})`)}`);
32
- }
33
- });
34
- }
35
-
36
- done() : boolean {
37
- console.log('='.repeat(50));
38
- if (this.failed) {
39
- console.log(chalk.redBright('Tests failed'));
40
- }
41
- else {
42
- console.log(chalk.greenBright('Tests passed'));
43
- }
44
-
45
- console.log(`Done in ${chalk.gray(((Date.now() - this.#startTime) / 1000).toFixed(2) + 's')}`
46
- + `, passed ${chalk.greenBright(this.passed)} files`
47
- + (this.skipped ? `, skipped ${chalk[this.skipped ? 'yellowBright' : 'gray'](this.skipped)} cases` : '')
48
- + (this.failed ? `, failed ${chalk[this.failed ? 'redBright' : 'gray'](this.failed)} files` : '')
49
- );
50
-
51
- return this.failed === 0;
52
- }
53
- }
8
+ passed = 0;
9
+ failed = 0;
10
+ skipped = 0;
11
+
12
+ #startTime = Date.now();
13
+
14
+ addFiles(files: string[]) {
15
+ console.log(`Test files: ${files.length}`);
16
+ console.log("=".repeat(50));
17
+ }
18
+
19
+ addRun(file: string, mmf: MMF1, state: Promise<void>, mode: TestMode) {
20
+ state.then(() => {
21
+ this.passed += Number(mmf.failed === 0);
22
+ this.failed += Number(mmf.failed !== 0);
23
+ this.skipped += mmf.skipped;
24
+
25
+ if (mmf.failed) {
26
+ console.log(chalk.red(""), absToRel(file));
27
+ mmf.flush("fail");
28
+ console.log("-".repeat(50));
29
+ } else {
30
+ console.log(
31
+ `${chalk.green("")} ${absToRel(file)} ${mode === "interpreter" ? "" : chalk.gray(`(${mode})`)}`,
32
+ );
33
+ }
34
+ });
35
+ }
36
+
37
+ done(): boolean {
38
+ console.log("=".repeat(50));
39
+ if (this.failed) {
40
+ console.log(chalk.redBright("Tests failed"));
41
+ } else {
42
+ console.log(chalk.greenBright("Tests passed"));
43
+ }
44
+
45
+ console.log(
46
+ `Done in ${chalk.gray(((Date.now() - this.#startTime) / 1000).toFixed(2) + "s")}` +
47
+ `, passed ${chalk.greenBright(this.passed)} files` +
48
+ (this.skipped
49
+ ? `, skipped ${chalk[this.skipped ? "yellowBright" : "gray"](this.skipped)} cases`
50
+ : "") +
51
+ (this.failed
52
+ ? `, failed ${chalk[this.failed ? "redBright" : "gray"](this.failed)} files`
53
+ : ""),
54
+ );
55
+
56
+ return this.failed === 0;
57
+ }
58
+ }
@@ -1,8 +1,14 @@
1
- import {TestMode} from '../../../types.js';
2
- import {MMF1} from '../mmf1.js';
1
+ import { TestMode } from "../../../types.js";
2
+ import { MMF1 } from "../mmf1.js";
3
3
 
4
4
  export interface Reporter {
5
- addFiles(files : string[]) : void;
6
- addRun(file : string, mmf : MMF1, state : Promise<void>, mode : TestMode, progressive ?: boolean) : void;
7
- done() : boolean;
8
- }
5
+ addFiles(files: string[]): void;
6
+ addRun(
7
+ file: string,
8
+ mmf: MMF1,
9
+ state: Promise<void>,
10
+ mode: TestMode,
11
+ progressive?: boolean,
12
+ ): void;
13
+ done(): boolean;
14
+ }
@@ -1,61 +1,60 @@
1
- import chalk from 'chalk';
2
- import {absToRel} from '../utils.js';
3
- import {MMF1} from '../mmf1.js';
4
- import {Reporter} from './reporter.js';
5
- import {TestMode} from '../../../types.js';
1
+ import chalk from "chalk";
2
+ import { absToRel } from "../utils.js";
3
+ import { MMF1 } from "../mmf1.js";
4
+ import { Reporter } from "./reporter.js";
5
+ import { TestMode } from "../../../types.js";
6
6
 
7
7
  export class SilentReporter implements Reporter {
8
- total = 0;
9
- passed = 0;
10
- failed = 0;
11
- skipped = 0;
12
- passedFiles = 0;
13
- failedFiles = 0;
14
- passedNamesFlat : string[] = [];
15
- flushOnError = true;
16
- errorOutput = '';
17
- onProgress = () => {};
18
-
19
- constructor(flushOnError = true, onProgress = () => {}) {
20
- this.flushOnError = flushOnError;
21
- this.onProgress = onProgress;
22
- }
23
-
24
- addFiles(files : string[]) {
25
- this.total = files.length;
26
- }
27
-
28
- addRun(file : string, mmf : MMF1, state : Promise<void>, _mode : TestMode) {
29
- state.then(() => {
30
- this.passed += mmf.passed;
31
- this.failed += mmf.failed;
32
- this.skipped += mmf.skipped;
33
- this.passedNamesFlat = [...this.passedNamesFlat, ...mmf.passedNamesFlat];
34
-
35
- if (mmf.passed === 0 && mmf.failed === 0) {
36
- this.passed++;
37
- this.passedNamesFlat.push(absToRel(file));
38
- }
39
-
40
- this.passedFiles += Number(mmf.failed === 0);
41
- this.failedFiles += Number(mmf.failed !== 0);
42
-
43
- if (mmf.failed) {
44
- let output = `${chalk.red('')} ${absToRel(file)}\n${mmf.getErrorMessages().join('\n')}\n${'-'.repeat(50)}`;
45
-
46
- if (this.flushOnError) {
47
- console.log(output);
48
- }
49
- else {
50
- this.errorOutput = `${this.errorOutput}\n${output}`.trim();
51
- }
52
- }
53
-
54
- this.onProgress();
55
- });
56
- }
57
-
58
- done() : boolean {
59
- return this.failed === 0;
60
- }
61
- }
8
+ total = 0;
9
+ passed = 0;
10
+ failed = 0;
11
+ skipped = 0;
12
+ passedFiles = 0;
13
+ failedFiles = 0;
14
+ passedNamesFlat: string[] = [];
15
+ flushOnError = true;
16
+ errorOutput = "";
17
+ onProgress = () => {};
18
+
19
+ constructor(flushOnError = true, onProgress = () => {}) {
20
+ this.flushOnError = flushOnError;
21
+ this.onProgress = onProgress;
22
+ }
23
+
24
+ addFiles(files: string[]) {
25
+ this.total = files.length;
26
+ }
27
+
28
+ addRun(file: string, mmf: MMF1, state: Promise<void>, _mode: TestMode) {
29
+ state.then(() => {
30
+ this.passed += mmf.passed;
31
+ this.failed += mmf.failed;
32
+ this.skipped += mmf.skipped;
33
+ this.passedNamesFlat = [...this.passedNamesFlat, ...mmf.passedNamesFlat];
34
+
35
+ if (mmf.passed === 0 && mmf.failed === 0) {
36
+ this.passed++;
37
+ this.passedNamesFlat.push(absToRel(file));
38
+ }
39
+
40
+ this.passedFiles += Number(mmf.failed === 0);
41
+ this.failedFiles += Number(mmf.failed !== 0);
42
+
43
+ if (mmf.failed) {
44
+ let output = `${chalk.red("")} ${absToRel(file)}\n${mmf.getErrorMessages().join("\n")}\n${"-".repeat(50)}`;
45
+
46
+ if (this.flushOnError) {
47
+ console.log(output);
48
+ } else {
49
+ this.errorOutput = `${this.errorOutput}\n${output}`.trim();
50
+ }
51
+ }
52
+
53
+ this.onProgress();
54
+ });
55
+ }
56
+
57
+ done(): boolean {
58
+ return this.failed === 0;
59
+ }
60
+ }
@@ -1,65 +1,77 @@
1
- import chalk from 'chalk';
2
- import {absToRel} from '../utils.js';
3
- import {MMF1} from '../mmf1.js';
4
- import {Reporter} from './reporter.js';
5
- import {TestMode} from '../../../types.js';
1
+ import chalk from "chalk";
2
+ import { absToRel } from "../utils.js";
3
+ import { MMF1 } from "../mmf1.js";
4
+ import { Reporter } from "./reporter.js";
5
+ import { TestMode } from "../../../types.js";
6
6
 
7
7
  export class VerboseReporter implements Reporter {
8
- passed = 0;
9
- failed = 0;
10
- skipped = 0;
8
+ passed = 0;
9
+ failed = 0;
10
+ skipped = 0;
11
11
 
12
- #startTime = Date.now();
13
- #curFileIndex = 0;
12
+ #startTime = Date.now();
13
+ #curFileIndex = 0;
14
14
 
15
- addFiles(files : string[]) {
16
- console.log('Test files:');
17
- for (let file of files) {
18
- console.log(chalk.gray(`• ${absToRel(file)}`));
19
- }
20
- console.log('='.repeat(50));
21
- }
15
+ addFiles(files: string[]) {
16
+ console.log("Test files:");
17
+ for (let file of files) {
18
+ console.log(chalk.gray(`• ${absToRel(file)}`));
19
+ }
20
+ console.log("=".repeat(50));
21
+ }
22
22
 
23
- addRun(file : string, mmf : MMF1, state : Promise<void>, mode : TestMode, progressive = false) {
24
- if (progressive) {
25
- this._printStart(file, mode);
26
- }
23
+ addRun(
24
+ file: string,
25
+ mmf: MMF1,
26
+ state: Promise<void>,
27
+ mode: TestMode,
28
+ progressive = false,
29
+ ) {
30
+ if (progressive) {
31
+ this._printStart(file, mode);
32
+ }
27
33
 
28
- state.then(() => {
29
- this.passed += mmf.passed;
30
- this.failed += mmf.failed;
31
- this.skipped += mmf.skipped;
34
+ state.then(() => {
35
+ this.passed += mmf.passed;
36
+ this.failed += mmf.failed;
37
+ this.skipped += mmf.skipped;
32
38
 
33
- if (mmf.passed === 0 && mmf.failed === 0) {
34
- this.passed++;
35
- }
36
- if (!progressive) {
37
- this._printStart(file, mode);
38
- }
39
- mmf.flush();
40
- });
41
- }
39
+ if (mmf.passed === 0 && mmf.failed === 0) {
40
+ this.passed++;
41
+ }
42
+ if (!progressive) {
43
+ this._printStart(file, mode);
44
+ }
45
+ mmf.flush();
46
+ });
47
+ }
42
48
 
43
- done() : boolean {
44
- console.log('='.repeat(50));
45
- if (this.failed) {
46
- console.log(chalk.redBright('Tests failed'));
47
- }
48
- else {
49
- console.log(chalk.greenBright('Tests passed'));
50
- }
49
+ done(): boolean {
50
+ console.log("=".repeat(50));
51
+ if (this.failed) {
52
+ console.log(chalk.redBright("Tests failed"));
53
+ } else {
54
+ console.log(chalk.greenBright("Tests passed"));
55
+ }
51
56
 
52
- console.log(`Done in ${chalk.gray(((Date.now() - this.#startTime) / 1000).toFixed(2) + 's')}`
53
- + `, passed ${chalk.greenBright(this.passed)}`
54
- + (this.skipped ? `, skipped ${chalk[this.skipped ? 'yellowBright' : 'gray'](this.skipped)}` : '')
55
- + (this.failed ? `, failed ${chalk[this.failed ? 'redBright' : 'gray'](this.failed)}` : '')
56
- );
57
+ console.log(
58
+ `Done in ${chalk.gray(((Date.now() - this.#startTime) / 1000).toFixed(2) + "s")}` +
59
+ `, passed ${chalk.greenBright(this.passed)}` +
60
+ (this.skipped
61
+ ? `, skipped ${chalk[this.skipped ? "yellowBright" : "gray"](this.skipped)}`
62
+ : "") +
63
+ (this.failed
64
+ ? `, failed ${chalk[this.failed ? "redBright" : "gray"](this.failed)}`
65
+ : ""),
66
+ );
57
67
 
58
- return this.failed === 0;
59
- }
68
+ return this.failed === 0;
69
+ }
60
70
 
61
- _printStart(file : string, mode : TestMode) {
62
- this.#curFileIndex++ && console.log('-'.repeat(50));
63
- console.log(`Running ${chalk.gray(absToRel(file))} ${mode === 'interpreter' ? '' : chalk.gray(`(${mode})`)}`);
64
- }
65
- }
71
+ _printStart(file: string, mode: TestMode) {
72
+ this.#curFileIndex++ && console.log("-".repeat(50));
73
+ console.log(
74
+ `Running ${chalk.gray(absToRel(file))} ${mode === "interpreter" ? "" : chalk.gray(`(${mode})`)}`,
75
+ );
76
+ }
77
+ }