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
package/.DS_Store CHANGED
Binary file
package/.eslintrc.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
- "env": {
3
- "node": true
4
- },
5
- "parserOptions": {
6
- "sourceType": "module"
7
- }
8
- }
2
+ "env": {
3
+ "node": true
4
+ },
5
+ "parserOptions": {
6
+ "sourceType": "module"
7
+ }
8
+ }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Mops CLI Changelog
2
2
 
3
+ ## Next
4
+ - `mops publish` add support for subheadings in changelog (by @f0i)
5
+ - `mops toolchain` now downloads `moc.js` in addition to `moc` binary
6
+ - New `mops build` subcommand (alternative to `dfx build`)
7
+ - `core` package used in place of `base` for benchmarks
8
+
3
9
  ## 1.12.0
4
10
  - Add pinned dependencies support to `mops update` and `mops outdated` commands
5
11
  - Add support for pocket-ic v9
package/api/actors.ts CHANGED
@@ -1,53 +1,57 @@
1
- import {Actor, HttpAgent, Identity} from '@icp-sdk/core/agent';
2
- import {Principal} from '@icp-sdk/core/principal';
1
+ import { Actor, HttpAgent, Identity } from "@icp-sdk/core/agent";
2
+ import { Principal } from "@icp-sdk/core/principal";
3
3
 
4
- import {_SERVICE, idlFactory} from '../declarations/main/main.did.js';
5
- import {idlFactory as storageIdlFactory} from '../declarations/storage/storage.did.js';
6
- import {_SERVICE as _STORAGE_SERVICE} from '../declarations/storage/storage.did.js';
4
+ import { _SERVICE, idlFactory } from "../declarations/main/main.did.js";
5
+ import { idlFactory as storageIdlFactory } from "../declarations/storage/storage.did.js";
6
+ import { _SERVICE as _STORAGE_SERVICE } from "../declarations/storage/storage.did.js";
7
7
 
8
- import {getEndpoint} from './network.js';
9
- import {getNetwork} from './network.js';
8
+ import { getEndpoint } from "./network.js";
9
+ import { getNetwork } from "./network.js";
10
10
 
11
11
  let agentPromiseByPrincipal = new Map<string, Promise<HttpAgent>>();
12
12
 
13
- let getAgent = async (identity ?: Identity) : Promise<HttpAgent> => {
14
- let principal = identity ? identity?.getPrincipal().toText() : '';
15
- let agentPromise = agentPromiseByPrincipal.get(principal);
13
+ let getAgent = async (identity?: Identity): Promise<HttpAgent> => {
14
+ let principal = identity ? identity?.getPrincipal().toText() : "";
15
+ let agentPromise = agentPromiseByPrincipal.get(principal);
16
16
 
17
- if (!agentPromise) {
18
- let network = getNetwork();
19
- let host = getEndpoint(network).host;
17
+ if (!agentPromise) {
18
+ let network = getNetwork();
19
+ let host = getEndpoint(network).host;
20
20
 
21
- agentPromise = HttpAgent.create({
22
- host,
23
- identity,
24
- shouldFetchRootKey: network === 'local',
25
- verifyQuerySignatures: process.env.MOPS_VERIFY_QUERY_SIGNATURES !== 'false',
26
- shouldSyncTime: true,
27
- });
21
+ agentPromise = HttpAgent.create({
22
+ host,
23
+ identity,
24
+ shouldFetchRootKey: network === "local",
25
+ verifyQuerySignatures:
26
+ process.env.MOPS_VERIFY_QUERY_SIGNATURES !== "false",
27
+ shouldSyncTime: true,
28
+ });
28
29
 
29
- agentPromiseByPrincipal.set(principal, agentPromise);
30
- }
30
+ agentPromiseByPrincipal.set(principal, agentPromise);
31
+ }
31
32
 
32
- return agentPromise;
33
+ return agentPromise;
33
34
  };
34
35
 
35
- export let mainActor = async (identity ?: Identity) : Promise<_SERVICE> => {
36
- let agent = await getAgent(identity);
37
- let network = getNetwork();
38
- let canisterId = getEndpoint(network).canisterId;
36
+ export let mainActor = async (identity?: Identity): Promise<_SERVICE> => {
37
+ let agent = await getAgent(identity);
38
+ let network = getNetwork();
39
+ let canisterId = getEndpoint(network).canisterId;
39
40
 
40
- return Actor.createActor(idlFactory, {
41
- agent,
42
- canisterId,
43
- });
41
+ return Actor.createActor(idlFactory, {
42
+ agent,
43
+ canisterId,
44
+ });
44
45
  };
45
46
 
46
- export let storageActor = async (storageId : Principal, identity ?: Identity) : Promise<_STORAGE_SERVICE> => {
47
- let agent = await getAgent(identity);
47
+ export let storageActor = async (
48
+ storageId: Principal,
49
+ identity?: Identity,
50
+ ): Promise<_STORAGE_SERVICE> => {
51
+ let agent = await getAgent(identity);
48
52
 
49
- return Actor.createActor(storageIdlFactory, {
50
- agent,
51
- canisterId: storageId,
52
- });
53
+ return Actor.createActor(storageIdlFactory, {
54
+ agent,
55
+ canisterId: storageId,
56
+ });
53
57
  };
@@ -1,81 +1,95 @@
1
- import {Principal} from '@icp-sdk/core/principal';
2
- import {mainActor, storageActor} from './actors.js';
3
- import {resolveVersion} from './resolveVersion.js';
4
- import {parallel} from '../parallel.js';
5
- import {Storage} from '../declarations/storage/storage.did.js';
1
+ import { Principal } from "@icp-sdk/core/principal";
2
+ import { mainActor, storageActor } from "./actors.js";
3
+ import { resolveVersion } from "./resolveVersion.js";
4
+ import { parallel } from "../parallel.js";
5
+ import { Storage } from "../declarations/storage/storage.did.js";
6
6
 
7
- export async function downloadPackageFiles(pkg : string, version = '', threads = 8, onLoad = (_fileIds : string[], _fileId : string) => {}) : Promise<Map<string, Array<number>>> {
8
- version = await resolveVersion(pkg, version);
7
+ export async function downloadPackageFiles(
8
+ pkg: string,
9
+ version = "",
10
+ threads = 8,
11
+ onLoad = (_fileIds: string[], _fileId: string) => {},
12
+ ): Promise<Map<string, Array<number>>> {
13
+ version = await resolveVersion(pkg, version);
9
14
 
10
- let {storageId, fileIds} = await getPackageFilesInfo(pkg, version);
11
- let storage = await storageActor(storageId);
15
+ let { storageId, fileIds } = await getPackageFilesInfo(pkg, version);
16
+ let storage = await storageActor(storageId);
12
17
 
13
- let filesData = new Map<string, Array<number>>();
14
- await parallel(threads, fileIds, async (fileId : string) => {
15
- let {path, data} = await downloadFile(storage, fileId);
16
- filesData.set(path, data);
17
- onLoad(fileIds, fileId);
18
- });
18
+ let filesData = new Map<string, Array<number>>();
19
+ await parallel(threads, fileIds, async (fileId: string) => {
20
+ let { path, data } = await downloadFile(storage, fileId);
21
+ filesData.set(path, data);
22
+ onLoad(fileIds, fileId);
23
+ });
19
24
 
20
- return filesData;
25
+ return filesData;
21
26
  }
22
27
 
23
28
  // get package files meta
24
- export async function getPackageFilesInfo(pkg : string, version : string) : Promise<{ storageId : Principal, fileIds : string[] }> {
25
- let actor = await mainActor();
29
+ export async function getPackageFilesInfo(
30
+ pkg: string,
31
+ version: string,
32
+ ): Promise<{ storageId: Principal; fileIds: string[] }> {
33
+ let actor = await mainActor();
26
34
 
27
- let [packageDetailsRes, fileIds] = await Promise.all([
28
- actor.getPackageDetails(pkg, version),
29
- getFileIds(pkg, version),
30
- ]);
35
+ let [packageDetailsRes, fileIds] = await Promise.all([
36
+ actor.getPackageDetails(pkg, version),
37
+ getFileIds(pkg, version),
38
+ ]);
31
39
 
32
- if ('err' in packageDetailsRes) {
33
- throw packageDetailsRes.err;
34
- }
35
- let packageDetails = packageDetailsRes.ok;
40
+ if ("err" in packageDetailsRes) {
41
+ throw packageDetailsRes.err;
42
+ }
43
+ let packageDetails = packageDetailsRes.ok;
36
44
 
37
- return {
38
- storageId: packageDetails.publication.storage,
39
- fileIds,
40
- };
45
+ return {
46
+ storageId: packageDetails.publication.storage,
47
+ fileIds,
48
+ };
41
49
  }
42
50
 
43
51
  // get package files ids
44
- export async function getFileIds(pkg : string, version : string) : Promise<string[]> {
45
- let actor = await mainActor();
46
- let fileIdsRes = await actor.getFileIds(pkg, version);
52
+ export async function getFileIds(
53
+ pkg: string,
54
+ version: string,
55
+ ): Promise<string[]> {
56
+ let actor = await mainActor();
57
+ let fileIdsRes = await actor.getFileIds(pkg, version);
47
58
 
48
- if ('err' in fileIdsRes) {
49
- throw fileIdsRes.err;
50
- }
51
- let filesIds = fileIdsRes.ok;
59
+ if ("err" in fileIdsRes) {
60
+ throw fileIdsRes.err;
61
+ }
62
+ let filesIds = fileIdsRes.ok;
52
63
 
53
- return filesIds;
64
+ return filesIds;
54
65
  }
55
66
 
56
67
  // download single file
57
- export async function downloadFile(storage : Storage | string, fileId : string) : Promise<{path : string, data : Array<number>;}> {
58
- if (typeof storage === 'string') {
59
- storage = await storageActor(Principal.fromText(storage));
60
- }
61
- let fileMetaRes = await storage.getFileMeta(fileId);
62
- if ('err' in fileMetaRes) {
63
- throw fileMetaRes.err;
64
- }
65
- let fileMeta = fileMetaRes.ok;
68
+ export async function downloadFile(
69
+ storage: Storage | string,
70
+ fileId: string,
71
+ ): Promise<{ path: string; data: Array<number> }> {
72
+ if (typeof storage === "string") {
73
+ storage = await storageActor(Principal.fromText(storage));
74
+ }
75
+ let fileMetaRes = await storage.getFileMeta(fileId);
76
+ if ("err" in fileMetaRes) {
77
+ throw fileMetaRes.err;
78
+ }
79
+ let fileMeta = fileMetaRes.ok;
66
80
 
67
- let data : Array<number> = [];
68
- for (let i = 0n; i < fileMeta.chunkCount; i++) {
69
- let chunkRes = await storage.downloadChunk(fileId, i);
70
- if ('err' in chunkRes) {
71
- throw chunkRes.err;
72
- }
73
- let chunk = chunkRes.ok;
74
- data = [...data, ...chunk];
75
- }
81
+ let data: Array<number> = [];
82
+ for (let i = 0n; i < fileMeta.chunkCount; i++) {
83
+ let chunkRes = await storage.downloadChunk(fileId, i);
84
+ if ("err" in chunkRes) {
85
+ throw chunkRes.err;
86
+ }
87
+ let chunk = chunkRes.ok;
88
+ data = [...data, ...chunk];
89
+ }
76
90
 
77
- return {
78
- path: fileMeta.path,
79
- data: data,
80
- };
81
- }
91
+ return {
92
+ path: fileMeta.path,
93
+ data: data,
94
+ };
95
+ }
@@ -1,6 +1,6 @@
1
- import {mainActor} from './actors.js';
1
+ import { mainActor } from "./actors.js";
2
2
 
3
- export async function getHighestVersion(pkgName : string) {
4
- let actor = await mainActor();
5
- return actor.getHighestVersion(pkgName);
6
- }
3
+ export async function getHighestVersion(pkgName: string) {
4
+ let actor = await mainActor();
5
+ return actor.getHighestVersion(pkgName);
6
+ }
package/api/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- export {mainActor, storageActor} from './actors.js';
2
- export {downloadPackageFiles} from './downloadPackageFiles.js';
3
- export {getEndpoint, getNetwork} from './network.js';
4
- export {resolveVersion} from './resolveVersion.js';
1
+ export { mainActor, storageActor } from "./actors.js";
2
+ export { downloadPackageFiles } from "./downloadPackageFiles.js";
3
+ export { getEndpoint, getNetwork } from "./network.js";
4
+ export { resolveVersion } from "./resolveVersion.js";
package/api/network.ts CHANGED
@@ -1,24 +1,22 @@
1
1
  export function getNetwork() {
2
- return globalThis.MOPS_NETWORK || 'ic';
2
+ return globalThis.MOPS_NETWORK || "ic";
3
3
  }
4
4
 
5
- export function getEndpoint(network : string) {
6
- if (network === 'staging') {
7
- return {
8
- host: 'https://icp-api.io',
9
- canisterId: '2d2zu-vaaaa-aaaak-qb6pq-cai',
10
- };
11
- }
12
- else if (network === 'ic') {
13
- return {
14
- host: 'https://icp-api.io',
15
- canisterId: 'oknww-riaaa-aaaam-qaf6a-cai',
16
- };
17
- }
18
- else {
19
- return {
20
- host: 'http://127.0.0.1:4943',
21
- canisterId: '2d2zu-vaaaa-aaaak-qb6pq-cai',
22
- };
23
- }
24
- }
5
+ export function getEndpoint(network: string) {
6
+ if (network === "staging") {
7
+ return {
8
+ host: "https://icp-api.io",
9
+ canisterId: "2d2zu-vaaaa-aaaak-qb6pq-cai",
10
+ };
11
+ } else if (network === "ic") {
12
+ return {
13
+ host: "https://icp-api.io",
14
+ canisterId: "oknww-riaaa-aaaam-qaf6a-cai",
15
+ };
16
+ } else {
17
+ return {
18
+ host: "http://127.0.0.1:4943",
19
+ canisterId: "2d2zu-vaaaa-aaaak-qb6pq-cai",
20
+ };
21
+ }
22
+ }
@@ -1,12 +1,15 @@
1
- import {getHighestVersion} from './getHighestVersion.js';
1
+ import { getHighestVersion } from "./getHighestVersion.js";
2
2
 
3
- export async function resolveVersion(pkg : string, version = '') : Promise<string> {
4
- if (!version) {
5
- let versionRes = await getHighestVersion(pkg);
6
- if ('err' in versionRes) {
7
- throw versionRes.err;
8
- }
9
- version = versionRes.ok;
10
- }
11
- return version;
12
- }
3
+ export async function resolveVersion(
4
+ pkg: string,
5
+ version = "",
6
+ ): Promise<string> {
7
+ if (!version) {
8
+ let versionRes = await getHighestVersion(pkg);
9
+ if ("err" in versionRes) {
10
+ throw versionRes.err;
11
+ }
12
+ version = versionRes.ok;
13
+ }
14
+ return version;
15
+ }
package/bin/mops.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import '../cli.js';
3
+ import "../cli.js";
@@ -10,104 +10,112 @@ import Bench "mo:bench";
10
10
 
11
11
  import UserBench "./user-bench"; // file path will be replaced with the *.bench.mo file path
12
12
 
13
- persistent actor class() {
14
- type BenchResult = {
15
- instructions : Int;
16
- rts_mutator_instructions : Int;
17
- stable_memory_size : Int;
18
- rts_stable_memory_size : Int;
19
- rts_logical_stable_memory_size : Int;
20
- rts_collector_instructions : Int;
21
- rts_heap_size : Int;
22
- rts_memory_size : Int;
23
- rts_total_allocation : Int;
24
- rts_reclaimed : Int;
25
- };
26
-
27
- transient var benchOpt : ?Bench.Bench = null;
28
-
29
- public func init() : async Bench.BenchSchema {
30
- let bench = UserBench.init();
31
- benchOpt := ?bench;
32
- // ignore ExperimentalStableMemory.grow(1);
33
- ignore Region.grow(Region.new(), 1);
34
- bench.getSchema();
35
- };
36
-
37
- public query func getSchema() : async Bench.BenchSchema {
38
- let ?bench = benchOpt else Debug.trap("bench not initialized");
39
- bench.getSchema();
40
- };
41
-
42
- func _getStats() : BenchResult {
43
- {
44
- instructions = 0;
45
- rts_heap_size = Prim.rts_heap_size();
46
- stable_memory_size = Int64.toInt(Int64.fromNat64(ExperimentalStableMemory.size())) * 65536;
47
- rts_stable_memory_size = Prim.rts_stable_memory_size();
48
- rts_logical_stable_memory_size = Prim.rts_logical_stable_memory_size();
49
- rts_memory_size = Prim.rts_memory_size();
50
- rts_total_allocation = Prim.rts_total_allocation();
51
- rts_reclaimed = Prim.rts_reclaimed();
52
- rts_mutator_instructions = Prim.rts_mutator_instructions();
53
- rts_collector_instructions = Prim.rts_collector_instructions();
54
- }
55
- };
56
-
57
- func _diffStats(before : BenchResult, after : BenchResult) : BenchResult {
58
- {
59
- instructions = after.instructions - before.instructions;
60
- rts_heap_size = after.rts_heap_size - before.rts_heap_size;
61
- stable_memory_size = after.stable_memory_size - before.stable_memory_size;
62
- rts_stable_memory_size = after.rts_stable_memory_size - before.rts_stable_memory_size;
63
- rts_logical_stable_memory_size = after.rts_logical_stable_memory_size - before.rts_logical_stable_memory_size;
64
- rts_memory_size = after.rts_memory_size - before.rts_memory_size;
65
- rts_total_allocation = after.rts_total_allocation - before.rts_total_allocation;
66
- rts_reclaimed = after.rts_reclaimed - before.rts_reclaimed;
67
- rts_mutator_instructions = after.rts_mutator_instructions - before.rts_mutator_instructions;
68
- rts_collector_instructions = after.rts_collector_instructions - before.rts_collector_instructions;
69
- }
70
- };
71
-
72
- func _runCell(rowIndex : Nat, colIndex : Nat) : BenchResult {
73
- let ?bench = benchOpt else Debug.trap("bench not initialized");
74
- let statsBefore = _getStats();
75
-
76
- let instructions = Nat64.toNat(ExperimentalInternetComputer.countInstructions(func() {
77
- bench.runCell(rowIndex, colIndex);
78
- }));
79
-
80
- let statsAfter = _getStats();
81
- _diffStats(statsBefore, { statsAfter with instructions });
82
- };
83
-
84
- func _runCellAwait(rowIndex : Nat, colIndex : Nat) : async BenchResult {
85
- let ?bench = benchOpt else Debug.trap("bench not initialized");
86
- let statsBefore = _getStats();
87
-
88
- let instructions = Nat64.toNat(ExperimentalInternetComputer.countInstructions(func() {
89
- bench.runCell(rowIndex, colIndex);
90
- }));
91
-
92
- await (func() : async () {})();
93
-
94
- let statsAfter = _getStats();
95
- _diffStats(statsBefore, { statsAfter with instructions });
96
- };
97
-
98
- public query func getStats() : async BenchResult {
99
- _getStats();
100
- };
101
-
102
- public query func runCellQuery(rowIndex : Nat, colIndex : Nat) : async BenchResult {
103
- _runCell(rowIndex, colIndex);
104
- };
105
-
106
- public func runCellUpdate(rowIndex : Nat, colIndex : Nat) : async BenchResult {
107
- _runCell(rowIndex, colIndex);
108
- };
109
-
110
- public func runCellUpdateAwait(rowIndex : Nat, colIndex : Nat) : async BenchResult {
111
- await _runCellAwait(rowIndex, colIndex);
112
- };
113
- };
13
+ persistent actor class () {
14
+ type BenchResult = {
15
+ instructions : Int;
16
+ rts_mutator_instructions : Int;
17
+ stable_memory_size : Int;
18
+ rts_stable_memory_size : Int;
19
+ rts_logical_stable_memory_size : Int;
20
+ rts_collector_instructions : Int;
21
+ rts_heap_size : Int;
22
+ rts_memory_size : Int;
23
+ rts_total_allocation : Int;
24
+ rts_reclaimed : Int;
25
+ };
26
+
27
+ transient var benchOpt : ?Bench.Bench = null;
28
+
29
+ public func init() : async Bench.BenchSchema {
30
+ let bench = UserBench.init();
31
+ benchOpt := ?bench;
32
+ // ignore ExperimentalStableMemory.grow(1);
33
+ ignore Region.grow(Region.new(), 1);
34
+ bench.getSchema();
35
+ };
36
+
37
+ public query func getSchema() : async Bench.BenchSchema {
38
+ let ?bench = benchOpt else Debug.trap("bench not initialized");
39
+ bench.getSchema();
40
+ };
41
+
42
+ func _getStats() : BenchResult {
43
+ {
44
+ instructions = 0;
45
+ rts_heap_size = Prim.rts_heap_size();
46
+ stable_memory_size = Int64.toInt(Int64.fromNat64(ExperimentalStableMemory.size())) * 65536;
47
+ rts_stable_memory_size = Prim.rts_stable_memory_size();
48
+ rts_logical_stable_memory_size = Prim.rts_logical_stable_memory_size();
49
+ rts_memory_size = Prim.rts_memory_size();
50
+ rts_total_allocation = Prim.rts_total_allocation();
51
+ rts_reclaimed = Prim.rts_reclaimed();
52
+ rts_mutator_instructions = Prim.rts_mutator_instructions();
53
+ rts_collector_instructions = Prim.rts_collector_instructions();
54
+ };
55
+ };
56
+
57
+ func _diffStats(before : BenchResult, after : BenchResult) : BenchResult {
58
+ {
59
+ instructions = after.instructions - before.instructions;
60
+ rts_heap_size = after.rts_heap_size - before.rts_heap_size;
61
+ stable_memory_size = after.stable_memory_size - before.stable_memory_size;
62
+ rts_stable_memory_size = after.rts_stable_memory_size - before.rts_stable_memory_size;
63
+ rts_logical_stable_memory_size = after.rts_logical_stable_memory_size - before.rts_logical_stable_memory_size;
64
+ rts_memory_size = after.rts_memory_size - before.rts_memory_size;
65
+ rts_total_allocation = after.rts_total_allocation - before.rts_total_allocation;
66
+ rts_reclaimed = after.rts_reclaimed - before.rts_reclaimed;
67
+ rts_mutator_instructions = after.rts_mutator_instructions - before.rts_mutator_instructions;
68
+ rts_collector_instructions = after.rts_collector_instructions - before.rts_collector_instructions;
69
+ };
70
+ };
71
+
72
+ func _runCell(rowIndex : Nat, colIndex : Nat) : BenchResult {
73
+ let ?bench = benchOpt else Debug.trap("bench not initialized");
74
+ let statsBefore = _getStats();
75
+
76
+ let instructions = Nat64.toNat(
77
+ ExperimentalInternetComputer.countInstructions(
78
+ func() {
79
+ bench.runCell(rowIndex, colIndex);
80
+ }
81
+ )
82
+ );
83
+
84
+ let statsAfter = _getStats();
85
+ _diffStats(statsBefore, { statsAfter with instructions });
86
+ };
87
+
88
+ func _runCellAwait(rowIndex : Nat, colIndex : Nat) : async BenchResult {
89
+ let ?bench = benchOpt else Debug.trap("bench not initialized");
90
+ let statsBefore = _getStats();
91
+
92
+ let instructions = Nat64.toNat(
93
+ ExperimentalInternetComputer.countInstructions(
94
+ func() {
95
+ bench.runCell(rowIndex, colIndex);
96
+ }
97
+ )
98
+ );
99
+
100
+ await (func() : async () {})();
101
+
102
+ let statsAfter = _getStats();
103
+ _diffStats(statsBefore, { statsAfter with instructions });
104
+ };
105
+
106
+ public query func getStats() : async BenchResult {
107
+ _getStats();
108
+ };
109
+
110
+ public query func runCellQuery(rowIndex : Nat, colIndex : Nat) : async BenchResult {
111
+ _runCell(rowIndex, colIndex);
112
+ };
113
+
114
+ public func runCellUpdate(rowIndex : Nat, colIndex : Nat) : async BenchResult {
115
+ _runCell(rowIndex, colIndex);
116
+ };
117
+
118
+ public func runCellUpdateAwait(rowIndex : Nat, colIndex : Nat) : async BenchResult {
119
+ await _runCellAwait(rowIndex, colIndex);
120
+ };
121
+ };
@@ -2,9 +2,9 @@ import Bench "mo:bench";
2
2
 
3
3
  // placeholder file that will be replaced with the *.bench.mo file
4
4
  module {
5
- public func init() : Bench.Bench {
6
- let bench = Bench.Bench();
7
- // benchmark code goes here...
8
- bench;
9
- };
10
- };
5
+ public func init() : Bench.Bench {
6
+ let bench = Bench.Bench();
7
+ // benchmark code goes here...
8
+ bench;
9
+ };
10
+ };
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import '../cli.js';
3
+ import "../cli.js";