ic-mops 1.11.1 → 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 (352) hide show
  1. package/.DS_Store +0 -0
  2. package/.eslintrc.json +7 -7
  3. package/CHANGELOG.md +15 -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/bun.lock +234 -198
  12. package/bundle/bench/bench-canister.mo +2 -2
  13. package/bundle/bench/user-bench.mo +0 -4
  14. package/bundle/bin/mops.js +1 -1
  15. package/bundle/cli.js +1000 -924
  16. package/bundle/cli.tgz +0 -0
  17. package/bundle/declarations/bench/bench.did +3 -3
  18. package/bundle/declarations/bench/bench.did.d.ts +3 -3
  19. package/bundle/declarations/bench/index.d.ts +3 -3
  20. package/bundle/declarations/bench/index.js +1 -1
  21. package/bundle/declarations/main/index.d.ts +3 -3
  22. package/bundle/declarations/main/index.js +1 -1
  23. package/bundle/declarations/main/main.did +78 -121
  24. package/bundle/declarations/main/main.did.d.ts +48 -98
  25. package/bundle/declarations/main/main.did.js +53 -107
  26. package/bundle/declarations/storage/index.d.ts +3 -3
  27. package/bundle/declarations/storage/index.js +4 -4
  28. package/bundle/declarations/storage/storage.did.d.ts +3 -3
  29. package/bundle/package.json +6 -5
  30. package/bundle/templates/mops-publish.yml +3 -3
  31. package/bundle/templates/mops-test.yml +3 -3
  32. package/bundle-package-json.ts +8 -8
  33. package/cache.ts +80 -65
  34. package/check-requirements.ts +49 -45
  35. package/cli.ts +577 -376
  36. package/commands/add.ts +142 -129
  37. package/commands/available-updates.ts +55 -28
  38. package/commands/bench/bench-canister.mo +114 -108
  39. package/commands/bench/user-bench.mo +6 -6
  40. package/commands/bench-replica.ts +146 -106
  41. package/commands/bench.ts +563 -497
  42. package/commands/build.ts +177 -0
  43. package/commands/bump.ts +68 -57
  44. package/commands/check-candid.ts +24 -0
  45. package/commands/docs-coverage.ts +124 -102
  46. package/commands/docs.ts +118 -108
  47. package/commands/format.ts +171 -155
  48. package/commands/init.ts +301 -275
  49. package/commands/install/install-all.ts +75 -62
  50. package/commands/install/install-dep.ts +43 -28
  51. package/commands/install/install-deps.ts +23 -15
  52. package/commands/install/install-local-dep.ts +42 -34
  53. package/commands/install/install-mops-dep.ts +154 -123
  54. package/commands/install/sync-local-cache.ts +39 -35
  55. package/commands/maintainer.ts +109 -99
  56. package/commands/outdated.ts +31 -18
  57. package/commands/owner.ts +107 -99
  58. package/commands/publish.ts +534 -443
  59. package/commands/remove.ts +119 -89
  60. package/commands/replica.ts +391 -303
  61. package/commands/search.ts +42 -36
  62. package/commands/self.ts +63 -56
  63. package/commands/sources.ts +66 -49
  64. package/commands/sync.ts +92 -75
  65. package/commands/template.ts +145 -102
  66. package/commands/test/mmf1.ts +146 -119
  67. package/commands/test/reporters/compact-reporter.ts +87 -84
  68. package/commands/test/reporters/files-reporter.ts +56 -51
  69. package/commands/test/reporters/reporter.ts +12 -6
  70. package/commands/test/reporters/silent-reporter.ts +58 -59
  71. package/commands/test/reporters/verbose-reporter.ts +66 -54
  72. package/commands/test/test.ts +497 -460
  73. package/commands/test/utils.ts +85 -6
  74. package/commands/toolchain/index.ts +363 -322
  75. package/commands/toolchain/moc.ts +78 -50
  76. package/commands/toolchain/pocket-ic.ts +41 -34
  77. package/commands/toolchain/toolchain-utils.ts +92 -72
  78. package/commands/toolchain/wasmtime.ts +37 -34
  79. package/commands/update.ts +91 -56
  80. package/commands/user.ts +90 -81
  81. package/commands/watch/deployer.ts +188 -152
  82. package/commands/watch/error-checker.ts +90 -80
  83. package/commands/watch/formatter.ts +72 -60
  84. package/commands/watch/generator.ts +116 -96
  85. package/commands/watch/globMoFiles.ts +13 -13
  86. package/commands/watch/parseDfxJson.ts +63 -57
  87. package/commands/watch/tester.ts +83 -65
  88. package/commands/watch/warning-checker.ts +149 -136
  89. package/commands/watch/watch.ts +123 -95
  90. package/declarations/bench/bench.did.d.ts +3 -3
  91. package/declarations/bench/index.d.ts +3 -3
  92. package/declarations/bench/index.js +1 -1
  93. package/declarations/main/index.d.ts +3 -3
  94. package/declarations/main/index.js +1 -1
  95. package/declarations/main/main.did.d.ts +3 -3
  96. package/declarations/storage/index.d.ts +3 -3
  97. package/declarations/storage/index.js +4 -4
  98. package/declarations/storage/storage.did.d.ts +3 -3
  99. package/dist/api/actors.d.ts +4 -4
  100. package/dist/api/actors.js +8 -8
  101. package/dist/api/downloadPackageFiles.d.ts +2 -2
  102. package/dist/api/downloadPackageFiles.js +10 -10
  103. package/dist/api/getHighestVersion.js +1 -1
  104. package/dist/api/index.d.ts +4 -4
  105. package/dist/api/index.js +4 -4
  106. package/dist/api/network.js +9 -9
  107. package/dist/api/resolveVersion.js +3 -3
  108. package/dist/bin/mops.js +1 -1
  109. package/dist/bundle-package-json.js +8 -8
  110. package/dist/cache.js +22 -17
  111. package/dist/check-requirements.js +11 -11
  112. package/dist/cli.js +283 -186
  113. package/dist/commands/add.d.ts +1 -1
  114. package/dist/commands/add.js +41 -38
  115. package/dist/commands/available-updates.d.ts +1 -1
  116. package/dist/commands/available-updates.js +32 -14
  117. package/dist/commands/bench/bench-canister.mo +114 -108
  118. package/dist/commands/bench/user-bench.mo +6 -6
  119. package/dist/commands/bench-replica.d.ts +6 -5
  120. package/dist/commands/bench-replica.js +58 -36
  121. package/dist/commands/bench.d.ts +5 -5
  122. package/dist/commands/bench.js +134 -118
  123. package/dist/commands/build.d.ts +7 -0
  124. package/dist/commands/build.js +121 -0
  125. package/dist/commands/bump.js +27 -18
  126. package/dist/commands/check-candid.d.ts +4 -0
  127. package/dist/commands/check-candid.js +15 -0
  128. package/dist/commands/docs-coverage.d.ts +1 -1
  129. package/dist/commands/docs-coverage.js +45 -31
  130. package/dist/commands/docs.d.ts +1 -1
  131. package/dist/commands/docs.js +39 -38
  132. package/dist/commands/format.js +31 -27
  133. package/dist/commands/init.js +102 -92
  134. package/dist/commands/install/install-all.d.ts +2 -2
  135. package/dist/commands/install/install-all.js +23 -21
  136. package/dist/commands/install/install-dep.d.ts +1 -1
  137. package/dist/commands/install/install-dep.js +21 -8
  138. package/dist/commands/install/install-deps.d.ts +1 -1
  139. package/dist/commands/install/install-deps.js +1 -1
  140. package/dist/commands/install/install-local-dep.js +11 -9
  141. package/dist/commands/install/install-mops-dep.d.ts +1 -1
  142. package/dist/commands/install/install-mops-dep.js +32 -27
  143. package/dist/commands/install/sync-local-cache.js +10 -10
  144. package/dist/commands/maintainer.js +21 -21
  145. package/dist/commands/outdated.js +16 -6
  146. package/dist/commands/owner.js +21 -21
  147. package/dist/commands/publish.js +148 -128
  148. package/dist/commands/remove.d.ts +1 -1
  149. package/dist/commands/remove.js +42 -30
  150. package/dist/commands/replica.d.ts +9 -8
  151. package/dist/commands/replica.js +105 -65
  152. package/dist/commands/search.js +15 -13
  153. package/dist/commands/self.js +31 -28
  154. package/dist/commands/sources.d.ts +5 -1
  155. package/dist/commands/sources.js +23 -17
  156. package/dist/commands/sync.d.ts +1 -1
  157. package/dist/commands/sync.js +38 -25
  158. package/dist/commands/template.js +66 -56
  159. package/dist/commands/test/mmf1.d.ts +3 -3
  160. package/dist/commands/test/mmf1.js +33 -31
  161. package/dist/commands/test/reporters/compact-reporter.d.ts +3 -3
  162. package/dist/commands/test/reporters/compact-reporter.js +19 -15
  163. package/dist/commands/test/reporters/files-reporter.d.ts +3 -3
  164. package/dist/commands/test/reporters/files-reporter.js +18 -14
  165. package/dist/commands/test/reporters/reporter.d.ts +2 -2
  166. package/dist/commands/test/reporters/silent-reporter.d.ts +3 -3
  167. package/dist/commands/test/reporters/silent-reporter.js +4 -4
  168. package/dist/commands/test/reporters/verbose-reporter.d.ts +3 -3
  169. package/dist/commands/test/reporters/verbose-reporter.js +17 -13
  170. package/dist/commands/test/test.d.ts +4 -4
  171. package/dist/commands/test/test.js +151 -181
  172. package/dist/commands/test/utils.d.ts +6 -0
  173. package/dist/commands/test/utils.js +63 -2
  174. package/dist/commands/toolchain/index.d.ts +1 -1
  175. package/dist/commands/toolchain/index.js +81 -69
  176. package/dist/commands/toolchain/moc.d.ts +1 -1
  177. package/dist/commands/toolchain/moc.js +48 -24
  178. package/dist/commands/toolchain/pocket-ic.js +12 -12
  179. package/dist/commands/toolchain/toolchain-utils.d.ts +2 -0
  180. package/dist/commands/toolchain/toolchain-utils.js +32 -23
  181. package/dist/commands/toolchain/wasmtime.js +11 -11
  182. package/dist/commands/update.d.ts +1 -1
  183. package/dist/commands/update.js +30 -12
  184. package/dist/commands/user.js +31 -28
  185. package/dist/commands/watch/deployer.d.ts +4 -4
  186. package/dist/commands/watch/deployer.js +45 -36
  187. package/dist/commands/watch/error-checker.d.ts +2 -2
  188. package/dist/commands/watch/error-checker.js +27 -27
  189. package/dist/commands/watch/formatter.d.ts +4 -4
  190. package/dist/commands/watch/formatter.js +17 -17
  191. package/dist/commands/watch/generator.d.ts +3 -3
  192. package/dist/commands/watch/generator.js +28 -23
  193. package/dist/commands/watch/globMoFiles.js +8 -8
  194. package/dist/commands/watch/parseDfxJson.d.ts +2 -2
  195. package/dist/commands/watch/parseDfxJson.js +9 -9
  196. package/dist/commands/watch/tester.d.ts +4 -4
  197. package/dist/commands/watch/tester.js +23 -21
  198. package/dist/commands/watch/warning-checker.d.ts +3 -3
  199. package/dist/commands/watch/warning-checker.js +36 -36
  200. package/dist/commands/watch/watch.js +45 -32
  201. package/dist/declarations/bench/bench.did.d.ts +3 -3
  202. package/dist/declarations/bench/index.d.ts +3 -3
  203. package/dist/declarations/bench/index.js +1 -1
  204. package/dist/declarations/main/index.d.ts +3 -3
  205. package/dist/declarations/main/index.js +1 -1
  206. package/dist/declarations/main/main.did.d.ts +3 -3
  207. package/dist/declarations/storage/index.d.ts +3 -3
  208. package/dist/declarations/storage/index.js +4 -4
  209. package/dist/declarations/storage/storage.did.d.ts +3 -3
  210. package/dist/environments/nodejs/cli.d.ts +1 -0
  211. package/dist/environments/nodejs/cli.js +4 -0
  212. package/dist/environments/web/cli.d.ts +1 -0
  213. package/dist/environments/web/cli.js +4 -0
  214. package/dist/error.d.ts +1 -0
  215. package/dist/error.js +5 -0
  216. package/dist/fix-dist.js +5 -5
  217. package/dist/helpers/find-changelog-entry.js +8 -5
  218. package/dist/helpers/get-dep-name.d.ts +1 -0
  219. package/dist/helpers/get-dep-name.js +4 -1
  220. package/dist/helpers/get-dfx-version.js +4 -4
  221. package/dist/helpers/get-moc-path.js +8 -7
  222. package/dist/helpers/get-moc-version.js +10 -7
  223. package/dist/helpers/get-package-id.js +2 -2
  224. package/dist/helpers/is-candid-compatible.d.ts +1 -0
  225. package/dist/helpers/is-candid-compatible.js +20 -0
  226. package/dist/integrity.d.ts +1 -1
  227. package/dist/integrity.js +47 -38
  228. package/dist/jest.config.d.ts +11 -0
  229. package/dist/jest.config.js +14 -0
  230. package/dist/mops.d.ts +6 -6
  231. package/dist/mops.js +87 -80
  232. package/dist/notify-installs.js +4 -4
  233. package/dist/package.json +11 -10
  234. package/dist/pem.d.ts +3 -3
  235. package/dist/pem.js +20 -12
  236. package/dist/release-cli.js +20 -20
  237. package/dist/resolve-packages.d.ts +1 -1
  238. package/dist/resolve-packages.js +52 -36
  239. package/dist/templates/mops-publish.yml +3 -3
  240. package/dist/templates/mops-test.yml +3 -3
  241. package/dist/templates/src/lib.mo +13 -13
  242. package/dist/templates/test/lib.test.mo +2 -2
  243. package/dist/templates.js +1 -1
  244. package/dist/tests/cli.test.d.ts +1 -0
  245. package/dist/tests/cli.test.js +63 -0
  246. package/dist/types.d.ts +14 -4
  247. package/dist/vessel.d.ts +2 -2
  248. package/dist/vessel.js +41 -34
  249. package/dist/wasm/pkg/bundler/package.json +20 -0
  250. package/dist/wasm/pkg/bundler/wasm.d.ts +3 -0
  251. package/dist/wasm/pkg/bundler/wasm.js +5 -0
  252. package/dist/wasm/pkg/bundler/wasm_bg.js +93 -0
  253. package/dist/wasm/pkg/bundler/wasm_bg.wasm +0 -0
  254. package/dist/wasm/pkg/bundler/wasm_bg.wasm.d.ts +8 -0
  255. package/dist/wasm/pkg/nodejs/package.json +14 -0
  256. package/dist/wasm/pkg/nodejs/wasm.d.ts +3 -0
  257. package/dist/wasm/pkg/nodejs/wasm.js +98 -0
  258. package/dist/wasm/pkg/nodejs/wasm_bg.wasm +0 -0
  259. package/dist/wasm/pkg/nodejs/wasm_bg.wasm.d.ts +8 -0
  260. package/dist/wasm/pkg/web/package.json +18 -0
  261. package/dist/wasm/pkg/web/wasm.d.ts +35 -0
  262. package/dist/wasm/pkg/web/wasm.js +191 -0
  263. package/dist/wasm/pkg/web/wasm_bg.wasm +0 -0
  264. package/dist/wasm/pkg/web/wasm_bg.wasm.d.ts +8 -0
  265. package/dist/wasm.d.ts +5 -0
  266. package/dist/wasm.js +10 -0
  267. package/environments/nodejs/cli.ts +6 -0
  268. package/environments/web/cli.ts +6 -0
  269. package/error.ts +6 -0
  270. package/fix-dist.ts +5 -5
  271. package/global.d.ts +3 -3
  272. package/helpers/find-changelog-entry.ts +26 -23
  273. package/helpers/get-dep-name.ts +7 -3
  274. package/helpers/get-dfx-version.ts +8 -9
  275. package/helpers/get-moc-path.ts +25 -26
  276. package/helpers/get-moc-version.ts +21 -19
  277. package/helpers/get-package-id.ts +4 -4
  278. package/helpers/is-candid-compatible.ts +22 -0
  279. package/integrity.ts +270 -236
  280. package/jest.config.js +14 -0
  281. package/mops.ts +238 -215
  282. package/notify-installs.ts +16 -17
  283. package/package.json +21 -15
  284. package/parallel.ts +28 -24
  285. package/pem.ts +55 -47
  286. package/release-cli.ts +73 -39
  287. package/resolve-packages.ts +231 -189
  288. package/templates/mops-publish.yml +3 -3
  289. package/templates/mops-test.yml +3 -3
  290. package/templates/src/lib.mo +13 -13
  291. package/templates/test/lib.test.mo +2 -2
  292. package/templates.ts +4 -4
  293. package/tests/__snapshots__/cli.test.ts.snap +202 -0
  294. package/tests/build/error/candid/bar.did +3 -0
  295. package/tests/build/error/dfx.json +12 -0
  296. package/tests/build/error/mops.toml +9 -0
  297. package/tests/build/error/src/Bar.mo +5 -0
  298. package/tests/build/error/src/Foo.mo +5 -0
  299. package/tests/build/success/.dfx/local/canister_ids.json +17 -0
  300. package/tests/build/success/.dfx/local/canisters/bar/bar.did +3 -0
  301. package/tests/build/success/.dfx/local/canisters/bar/bar.most +4 -0
  302. package/tests/build/success/.dfx/local/canisters/bar/bar.wasm +0 -0
  303. package/tests/build/success/.dfx/local/canisters/bar/constructor.did +3 -0
  304. package/tests/build/success/.dfx/local/canisters/bar/index.js +42 -0
  305. package/tests/build/success/.dfx/local/canisters/bar/init_args.txt +1 -0
  306. package/tests/build/success/.dfx/local/canisters/bar/service.did +3 -0
  307. package/tests/build/success/.dfx/local/canisters/bar/service.did.d.ts +7 -0
  308. package/tests/build/success/.dfx/local/canisters/bar/service.did.js +4 -0
  309. package/tests/build/success/.dfx/local/canisters/foo/constructor.did +3 -0
  310. package/tests/build/success/.dfx/local/canisters/foo/foo.did +3 -0
  311. package/tests/build/success/.dfx/local/canisters/foo/foo.most +4 -0
  312. package/tests/build/success/.dfx/local/canisters/foo/foo.wasm +0 -0
  313. package/tests/build/success/.dfx/local/canisters/foo/index.js +42 -0
  314. package/tests/build/success/.dfx/local/canisters/foo/init_args.txt +1 -0
  315. package/tests/build/success/.dfx/local/canisters/foo/service.did +3 -0
  316. package/tests/build/success/.dfx/local/canisters/foo/service.did.d.ts +7 -0
  317. package/tests/build/success/.dfx/local/canisters/foo/service.did.js +4 -0
  318. package/tests/build/success/.dfx/local/lsp/ucwa4-rx777-77774-qaada-cai.did +3 -0
  319. package/tests/build/success/.dfx/local/lsp/ulvla-h7777-77774-qaacq-cai.did +3 -0
  320. package/tests/build/success/.dfx/local/network-id +4 -0
  321. package/tests/build/success/candid/bar.did +3 -0
  322. package/tests/build/success/dfx.json +12 -0
  323. package/tests/build/success/mops.toml +9 -0
  324. package/tests/build/success/src/Bar.mo +5 -0
  325. package/tests/build/success/src/Foo.mo +5 -0
  326. package/tests/check-candid/a.did +3 -0
  327. package/tests/check-candid/b.did +5 -0
  328. package/tests/check-candid/c.did +3 -0
  329. package/tests/cli.test.ts +82 -0
  330. package/tsconfig.json +26 -19
  331. package/types.ts +41 -31
  332. package/vessel.ts +219 -187
  333. package/wasm/Cargo.lock +1475 -0
  334. package/wasm/Cargo.toml +28 -0
  335. package/wasm/pkg/bundler/package.json +20 -0
  336. package/wasm/pkg/bundler/wasm.d.ts +3 -0
  337. package/wasm/pkg/bundler/wasm.js +5 -0
  338. package/wasm/pkg/bundler/wasm_bg.js +93 -0
  339. package/wasm/pkg/bundler/wasm_bg.wasm +0 -0
  340. package/wasm/pkg/bundler/wasm_bg.wasm.d.ts +8 -0
  341. package/wasm/pkg/nodejs/package.json +14 -0
  342. package/wasm/pkg/nodejs/wasm.d.ts +3 -0
  343. package/wasm/pkg/nodejs/wasm.js +98 -0
  344. package/wasm/pkg/nodejs/wasm_bg.wasm +0 -0
  345. package/wasm/pkg/nodejs/wasm_bg.wasm.d.ts +8 -0
  346. package/wasm/pkg/web/package.json +18 -0
  347. package/wasm/pkg/web/wasm.d.ts +35 -0
  348. package/wasm/pkg/web/wasm.js +191 -0
  349. package/wasm/pkg/web/wasm_bg.wasm +0 -0
  350. package/wasm/pkg/web/wasm_bg.wasm.d.ts +8 -0
  351. package/wasm/src/lib.rs +17 -0
  352. package/wasm.ts +16 -0
@@ -1,42 +1,48 @@
1
- import process from 'node:process';
2
- import asTable from 'as-table';
3
- import chalk from 'chalk';
4
- import {mainActor} from '../api/actors.js';
1
+ import process from "node:process";
2
+ import asTable from "as-table";
3
+ import chalk from "chalk";
4
+ import { mainActor } from "../api/actors.js";
5
5
 
6
- export async function search(text : string) {
7
- let actor = await mainActor();
8
- let [packages, _pageCount] = await actor.search(text, [], []);
6
+ export async function search(text: string) {
7
+ let actor = await mainActor();
8
+ let [packages, _pageCount] = await actor.search(text, [], []);
9
9
 
10
- if (!packages.length) {
11
- console.log('Packages not found');
12
- return;
13
- }
10
+ if (!packages.length) {
11
+ console.log("Packages not found");
12
+ return;
13
+ }
14
14
 
15
- let ellipsis = (text : string, max : number) => {
16
- if (text.length <= max) {
17
- return text;
18
- }
19
- else {
20
- return text.slice(0, max) + '…';
21
- }
22
- };
15
+ let ellipsis = (text: string, max: number) => {
16
+ if (text.length <= max) {
17
+ return text;
18
+ } else {
19
+ return text.slice(0, max) + "…";
20
+ }
21
+ };
23
22
 
24
- let maxNameLength = Math.max(...packages.map(a => a.config.name.length));
23
+ let maxNameLength = Math.max(...packages.map((a) => a.config.name.length));
25
24
 
26
- let table = packages.map((item) => {
27
- return {
28
- NAME: chalk.bold(item.config.name),
29
- DESCRIPTION: ellipsis(item.config.description, process.stdout.columns - 40 - maxNameLength),
30
- VERSION: item.config.version,
31
- UPDATED: new Date(Number(item.publication.time / 1_000_000n)).toISOString().split('T')[0],
32
- };
33
- });
25
+ let table = packages.map((item) => {
26
+ return {
27
+ NAME: chalk.bold(item.config.name),
28
+ DESCRIPTION: ellipsis(
29
+ item.config.description,
30
+ process.stdout.columns - 40 - maxNameLength,
31
+ ),
32
+ VERSION: item.config.version,
33
+ UPDATED: new Date(Number(item.publication.time / 1_000_000n))
34
+ .toISOString()
35
+ .split("T")[0],
36
+ };
37
+ });
34
38
 
35
- console.log('');
36
- console.log(asTable.configure({
37
- delimiter: chalk.gray(' | '),
38
- dash: chalk.gray('─'),
39
- title: t => chalk.gray.bold(t),
40
- })(table));
41
- console.log('');
42
- }
39
+ console.log("");
40
+ console.log(
41
+ asTable.configure({
42
+ delimiter: chalk.gray(" | "),
43
+ dash: chalk.gray("─"),
44
+ title: (t) => chalk.gray.bold(t),
45
+ })(table),
46
+ );
47
+ console.log("");
48
+ }
package/commands/self.ts CHANGED
@@ -1,76 +1,83 @@
1
- import process from 'node:process';
2
- import child_process, {execSync} from 'node:child_process';
3
- import chalk from 'chalk';
4
- import {version, globalConfigDir} from '../mops.js';
5
- import {cleanCache} from '../cache.js';
6
- import {toolchain} from './toolchain/index.js';
1
+ import process from "node:process";
2
+ import child_process, { execSync } from "node:child_process";
3
+ import chalk from "chalk";
4
+ import { version, globalConfigDir } from "../mops.js";
5
+ import { cleanCache } from "../cache.js";
6
+ import { toolchain } from "./toolchain/index.js";
7
7
 
8
- let url = 'https://x344g-ziaaa-aaaap-abl7a-cai.icp0.io';
8
+ let url = "https://x344g-ziaaa-aaaap-abl7a-cai.icp0.io";
9
9
 
10
10
  function detectPackageManager() {
11
- let res = '';
12
- try {
13
- res = execSync('which mops').toString();
14
- }
15
- catch (e) {}
16
- if (!res) {
17
- console.error(chalk.red('Couldn\'t detect package manager'));
18
- process.exit(1);
19
- }
20
- if (res.includes('pnpm/')) {
21
- return 'pnpm';
22
- }
23
- // else if (res.includes('bun/')) {
24
- // return 'bun';
25
- // }
26
- else {
27
- return 'npm';
28
- }
11
+ let res = "";
12
+ try {
13
+ res = execSync("which mops").toString();
14
+ } catch (e) {}
15
+ if (!res) {
16
+ console.error(chalk.red("Couldn't detect package manager"));
17
+ process.exit(1);
18
+ }
19
+ if (res.includes("pnpm/")) {
20
+ return "pnpm";
21
+ }
22
+ // else if (res.includes('bun/')) {
23
+ // return 'bun';
24
+ // }
25
+ else {
26
+ return "npm";
27
+ }
29
28
  }
30
29
 
31
30
  export async function getLatestVersion() {
32
- let res = await fetch(url + '/tags/latest');
33
- return res.text();
31
+ let res = await fetch(url + "/tags/latest");
32
+ return res.text();
34
33
  }
35
34
 
36
35
  export async function update() {
37
- let latest = await getLatestVersion();
38
- let current = version();
36
+ let latest = await getLatestVersion();
37
+ let current = version();
39
38
 
40
- if (latest === current) {
41
- console.log(chalk.green('You are up to date. Version: ' + current));
42
- }
43
- else {
44
- console.log('Current version: ' + chalk.yellow(current));
45
- console.log('Updating to version: ' + chalk.green(latest));
39
+ if (latest === current) {
40
+ console.log(chalk.green("You are up to date. Version: " + current));
41
+ } else {
42
+ console.log("Current version: " + chalk.yellow(current));
43
+ console.log("Updating to version: " + chalk.green(latest));
46
44
 
47
- let pm = detectPackageManager();
48
- let npmArgs = pm === 'npm' ? ['--no-fund', '--silent'] : [];
45
+ let pm = detectPackageManager();
46
+ let npmArgs = pm === "npm" ? ["--no-fund", "--silent"] : [];
49
47
 
50
- let proc = child_process.spawn(pm, ['add', '-g', ...npmArgs, `${url}/versions/${latest}.tgz`], {stdio: 'inherit', detached: false});
48
+ let proc = child_process.spawn(
49
+ pm,
50
+ ["add", "-g", ...npmArgs, `${url}/versions/${latest}.tgz`],
51
+ { stdio: "inherit", detached: false },
52
+ );
51
53
 
52
- proc.on('exit', (res) => {
53
- if (res !== 0) {
54
- console.log(chalk.red('Failed to update.'));
55
- process.exit(1);
56
- }
57
- console.log(chalk.green('Success'));
58
- });
59
- }
54
+ proc.on("exit", (res) => {
55
+ if (res !== 0) {
56
+ console.log(chalk.red("Failed to update."));
57
+ process.exit(1);
58
+ }
59
+ console.log(chalk.green("Success"));
60
+ });
61
+ }
60
62
  }
61
63
 
62
64
  export async function uninstall() {
63
- console.log('Cleaning cache...');
64
- cleanCache();
65
+ console.log("Cleaning cache...");
66
+ cleanCache();
65
67
 
66
- console.log('Resetting toolchain management...');
67
- toolchain.init({reset: true, silent: true});
68
+ console.log("Resetting toolchain management...");
69
+ toolchain.init({ reset: true, silent: true });
68
70
 
69
- console.log('Uninstalling mops CLI...');
70
- let pm = detectPackageManager();
71
- child_process.spawn(pm, ['remove', '-g', '--silent', 'ic-mops'], {stdio: 'inherit', detached: false});
71
+ console.log("Uninstalling mops CLI...");
72
+ let pm = detectPackageManager();
73
+ child_process.spawn(pm, ["remove", "-g", "--silent", "ic-mops"], {
74
+ stdio: "inherit",
75
+ detached: false,
76
+ });
72
77
 
73
- console.log(chalk.yellow('Config directory has not been deleted: ' + globalConfigDir));
78
+ console.log(
79
+ chalk.yellow("Config directory has not been deleted: " + globalConfigDir),
80
+ );
74
81
 
75
- console.log('Uninstalled');
76
- }
82
+ console.log("Uninstalled");
83
+ }
@@ -1,49 +1,66 @@
1
- import process from 'node:process';
2
- import path from 'node:path';
3
- import fs from 'node:fs';
4
- import {checkConfigFile, formatDir, formatGithubDir, getDependencyType, readConfig} from '../mops.js';
5
- import {resolvePackages} from '../resolve-packages.js';
6
-
7
- export async function sources({conflicts = 'ignore' as 'warning' | 'error' | 'ignore', cwd = process.cwd()} = {}) {
8
- if (!checkConfigFile()) {
9
- return [];
10
- }
11
-
12
- let resolvedPackages = await resolvePackages({conflicts});
13
-
14
- // sources
15
- return Object.entries(resolvedPackages).map(([name, version]) => {
16
- let depType = getDependencyType(version);
17
-
18
- let pkgDir;
19
- if (depType === 'local') {
20
- pkgDir = path.relative(cwd, version);
21
- }
22
- else if (depType === 'github') {
23
- pkgDir = path.relative(cwd, formatGithubDir(name, version));
24
- }
25
- else if (depType === 'mops') {
26
- pkgDir = path.relative(cwd, formatDir(name, version));
27
- }
28
- else {
29
- return;
30
- }
31
-
32
- // append baseDir
33
- let pkgBaseDir;
34
- if (fs.existsSync(path.join(pkgDir, 'mops.toml'))) {
35
- let config = readConfig(path.join(pkgDir, 'mops.toml'));
36
- pkgBaseDir = path.join(pkgDir, config.package?.baseDir || 'src');
37
- }
38
- else {
39
- pkgBaseDir = path.join(pkgDir, 'src');
40
- }
41
-
42
- // use pkgDir if baseDir doesn't exist for local packages
43
- if (depType === 'local' && !fs.existsSync(path.resolve(cwd, pkgBaseDir))) {
44
- pkgBaseDir = pkgDir;
45
- }
46
-
47
- return `--package ${name} ${pkgBaseDir}`;
48
- }).filter(x => x != null);
49
- }
1
+ import process from "node:process";
2
+ import path from "node:path";
3
+ import fs from "node:fs";
4
+ import {
5
+ checkConfigFile,
6
+ formatDir,
7
+ formatGithubDir,
8
+ getDependencyType,
9
+ readConfig,
10
+ } from "../mops.js";
11
+ import { resolvePackages } from "../resolve-packages.js";
12
+
13
+ export async function sourcesArgs({
14
+ conflicts = "ignore" as "warning" | "error" | "ignore",
15
+ cwd = process.cwd(),
16
+ } = {}): Promise<string[][]> {
17
+ if (!checkConfigFile()) {
18
+ return [];
19
+ }
20
+
21
+ let resolvedPackages = await resolvePackages({ conflicts });
22
+
23
+ // sources
24
+ return Object.entries(resolvedPackages)
25
+ .map(([name, version]) => {
26
+ let depType = getDependencyType(version);
27
+
28
+ let pkgDir;
29
+ if (depType === "local") {
30
+ pkgDir = path.relative(cwd, version);
31
+ } else if (depType === "github") {
32
+ pkgDir = path.relative(cwd, formatGithubDir(name, version));
33
+ } else if (depType === "mops") {
34
+ pkgDir = path.relative(cwd, formatDir(name, version));
35
+ } else {
36
+ return;
37
+ }
38
+
39
+ // append baseDir
40
+ let pkgBaseDir;
41
+ if (fs.existsSync(path.join(pkgDir, "mops.toml"))) {
42
+ let config = readConfig(path.join(pkgDir, "mops.toml"));
43
+ pkgBaseDir = path.join(pkgDir, config.package?.baseDir || "src");
44
+ } else {
45
+ pkgBaseDir = path.join(pkgDir, "src");
46
+ }
47
+
48
+ // use pkgDir if baseDir doesn't exist for local packages
49
+ if (
50
+ depType === "local" &&
51
+ !fs.existsSync(path.resolve(cwd, pkgBaseDir))
52
+ ) {
53
+ pkgBaseDir = pkgDir;
54
+ }
55
+
56
+ return ["--package", name, pkgBaseDir];
57
+ })
58
+ .filter((x) => x != null);
59
+ }
60
+
61
+ export async function sources({
62
+ conflicts = "ignore" as "warning" | "error" | "ignore",
63
+ cwd = process.cwd(),
64
+ } = {}): Promise<string[]> {
65
+ return (await sourcesArgs({ conflicts, cwd })).map((args) => args.join(" "));
66
+ }
package/commands/sync.ts CHANGED
@@ -1,94 +1,111 @@
1
- import path from 'node:path';
2
- import {execSync} from 'node:child_process';
3
- import {globSync} from 'glob';
4
- import chalk from 'chalk';
5
- import {checkConfigFile, getRootDir, readConfig} from '../mops.js';
6
- import {add} from './add.js';
7
- import {remove} from './remove.js';
8
- import {checkIntegrity} from '../integrity.js';
9
- import {getMocPath} from '../helpers/get-moc-path.js';
1
+ import path from "node:path";
2
+ import { execSync } from "node:child_process";
3
+ import { globSync } from "glob";
4
+ import chalk from "chalk";
5
+ import { checkConfigFile, getRootDir, readConfig } from "../mops.js";
6
+ import { add } from "./add.js";
7
+ import { remove } from "./remove.js";
8
+ import { checkIntegrity } from "../integrity.js";
9
+ import { getMocPath } from "../helpers/get-moc-path.js";
10
10
 
11
11
  type SyncOptions = {
12
- lock ?: 'update' | 'ignore';
12
+ lock?: "update" | "ignore";
13
13
  };
14
14
 
15
- export async function sync({lock} : SyncOptions = {}) {
16
- if (!checkConfigFile()) {
17
- return;
18
- }
15
+ export async function sync({ lock }: SyncOptions = {}) {
16
+ if (!checkConfigFile()) {
17
+ return;
18
+ }
19
19
 
20
- let missing = await getMissingPackages();
21
- let unused = await getUnusedPackages();
20
+ let missing = await getMissingPackages();
21
+ let unused = await getUnusedPackages();
22
22
 
23
- missing.length && console.log(`${chalk.yellow('Missing packages:')} ${missing.join(', ')}`);
24
- unused.length && console.log(`${chalk.yellow('Unused packages:')} ${unused.join(', ')}`);
23
+ missing.length &&
24
+ console.log(`${chalk.yellow("Missing packages:")} ${missing.join(", ")}`);
25
+ unused.length &&
26
+ console.log(`${chalk.yellow("Unused packages:")} ${unused.join(", ")}`);
25
27
 
26
- let config = readConfig();
27
- let deps = new Set(Object.keys(config.dependencies || {}));
28
- let devDeps = new Set(Object.keys(config['dev-dependencies'] || {}));
28
+ let config = readConfig();
29
+ let deps = new Set(Object.keys(config.dependencies || {}));
30
+ let devDeps = new Set(Object.keys(config["dev-dependencies"] || {}));
29
31
 
30
- // add missing packages
31
- for (let pkg of missing) {
32
- await add(pkg, {lock: 'ignore'});
33
- }
32
+ // add missing packages
33
+ for (let pkg of missing) {
34
+ await add(pkg, { lock: "ignore" });
35
+ }
34
36
 
35
- // remove unused packages
36
- for (let pkg of unused) {
37
- let dev = devDeps.has(pkg) && !deps.has(pkg);
38
- await remove(pkg, {dev, lock: 'ignore'});
39
- }
37
+ // remove unused packages
38
+ for (let pkg of unused) {
39
+ let dev = devDeps.has(pkg) && !deps.has(pkg);
40
+ await remove(pkg, { dev, lock: "ignore" });
41
+ }
40
42
 
41
- await checkIntegrity(lock);
43
+ await checkIntegrity(lock);
42
44
  }
43
45
 
44
46
  let ignore = [
45
- '**/node_modules/**',
46
- '**/.vessel/**',
47
- '**/.git/**',
48
- '**/.mops/**',
47
+ "**/node_modules/**",
48
+ "**/.vessel/**",
49
+ "**/.git/**",
50
+ "**/.mops/**",
49
51
  ];
50
52
 
51
- async function getUsedPackages() : Promise<string[]> {
52
- let rootDir = getRootDir();
53
- let mocPath = getMocPath();
54
-
55
- let files = globSync('**/*.mo', {
56
- cwd: rootDir,
57
- nocase: true,
58
- ignore: ignore,
59
- });
60
-
61
- let packages : Set<string> = new Set;
62
-
63
- for (let file of files) {
64
- let deps : string[] = execSync(`${mocPath} --print-deps ${path.join(rootDir, file)}`).toString().trim().split('\n');
65
-
66
- for (let dep of deps) {
67
- if (dep.startsWith('mo:') && !dep.startsWith('mo:prim') && !dep.startsWith('mo:⛔')) {
68
- packages.add(dep.replace(/^mo:([^/]+).*$/, '$1'));
69
- }
70
- }
71
- }
72
-
73
- return [...packages];
53
+ async function getUsedPackages(): Promise<string[]> {
54
+ let rootDir = getRootDir();
55
+ let mocPath = getMocPath();
56
+
57
+ let files = globSync("**/*.mo", {
58
+ cwd: rootDir,
59
+ nocase: true,
60
+ ignore: ignore,
61
+ });
62
+
63
+ let packages: Set<string> = new Set();
64
+
65
+ for (let file of files) {
66
+ let deps: string[] = execSync(
67
+ `${mocPath} --print-deps ${path.join(rootDir, file)}`,
68
+ )
69
+ .toString()
70
+ .trim()
71
+ .split("\n");
72
+
73
+ for (let dep of deps) {
74
+ if (
75
+ dep.startsWith("mo:") &&
76
+ !dep.startsWith("mo:prim") &&
77
+ !dep.startsWith("mo:⛔")
78
+ ) {
79
+ packages.add(dep.replace(/^mo:([^/]+).*$/, "$1"));
80
+ }
81
+ }
82
+ }
83
+
84
+ return [...packages];
74
85
  }
75
86
 
76
- async function getMissingPackages() : Promise<string[]> {
77
- let config = readConfig();
78
- let allDeps = [...Object.keys(config.dependencies || {}), ...Object.keys(config['dev-dependencies'] || {})];
79
- let missing = new Set(await getUsedPackages());
80
- for (let pkg of allDeps) {
81
- missing.delete(pkg);
82
- }
83
- return [...missing];
87
+ async function getMissingPackages(): Promise<string[]> {
88
+ let config = readConfig();
89
+ let allDeps = [
90
+ ...Object.keys(config.dependencies || {}),
91
+ ...Object.keys(config["dev-dependencies"] || {}),
92
+ ];
93
+ let missing = new Set(await getUsedPackages());
94
+ for (let pkg of allDeps) {
95
+ missing.delete(pkg);
96
+ }
97
+ return [...missing];
84
98
  }
85
99
 
86
- async function getUnusedPackages() : Promise<string[]> {
87
- let config = readConfig();
88
- let allDeps = new Set([...Object.keys(config.dependencies || {}), ...Object.keys(config['dev-dependencies'] || {})]);
89
- let used = await getUsedPackages();
90
- for (let pkg of used) {
91
- allDeps.delete(pkg);
92
- }
93
- return [...allDeps];
94
- }
100
+ async function getUnusedPackages(): Promise<string[]> {
101
+ let config = readConfig();
102
+ let allDeps = new Set([
103
+ ...Object.keys(config.dependencies || {}),
104
+ ...Object.keys(config["dev-dependencies"] || {}),
105
+ ]);
106
+ let used = await getUsedPackages();
107
+ for (let pkg of used) {
108
+ allDeps.delete(pkg);
109
+ }
110
+ return [...allDeps];
111
+ }