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,20 +1,20 @@
1
- import process from 'node:process';
2
- import fs from 'node:fs';
3
- import path from 'node:path';
4
- import chalk from 'chalk';
5
- import logUpdate from 'log-update';
6
- import { globbySync } from 'globby';
7
- import { minimatch } from 'minimatch';
8
- import prompts from 'prompts';
9
- import { checkConfigFile, getIdentity, getRootDir, progressBar, readConfig } from '../mops.js';
10
- import { mainActor } from '../api/actors.js';
11
- import { parallel } from '../parallel.js';
12
- import { docs } from './docs.js';
13
- import { testWithReporter } from './test/test.js';
14
- import { SilentReporter } from './test/reporters/silent-reporter.js';
15
- import { findChangelogEntry } from '../helpers/find-changelog-entry.js';
16
- import { bench } from './bench.js';
17
- import { docsCoverage } from './docs-coverage.js';
1
+ import process from "node:process";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import chalk from "chalk";
5
+ import logUpdate from "log-update";
6
+ import { globbySync } from "globby";
7
+ import { minimatch } from "minimatch";
8
+ import prompts from "prompts";
9
+ import { checkConfigFile, getIdentity, getRootDir, progressBar, readConfig, } from "../mops.js";
10
+ import { mainActor } from "../api/actors.js";
11
+ import { parallel } from "../parallel.js";
12
+ import { docs } from "./docs.js";
13
+ import { testWithReporter } from "./test/test.js";
14
+ import { SilentReporter } from "./test/reporters/silent-reporter.js";
15
+ import { findChangelogEntry } from "../helpers/find-changelog-entry.js";
16
+ import { bench } from "./bench.js";
17
+ import { docsCoverage } from "./docs-coverage.js";
18
18
  export async function publish(options = {}) {
19
19
  if (!checkConfigFile()) {
20
20
  return;
@@ -24,30 +24,38 @@ export async function publish(options = {}) {
24
24
  console.log(`Publishing ${config.package?.name}@${config.package?.version}`);
25
25
  // validate
26
26
  for (let key of Object.keys(config)) {
27
- if (!['package', 'dependencies', 'dev-dependencies', 'toolchain', 'requirements'].includes(key)) {
28
- console.log(chalk.red('Error: ') + `Unknown config section [${key}]`);
27
+ if (![
28
+ "package",
29
+ "dependencies",
30
+ "dev-dependencies",
31
+ "toolchain",
32
+ "requirements",
33
+ ].includes(key)) {
34
+ console.log(chalk.red("Error: ") + `Unknown config section [${key}]`);
29
35
  process.exit(1);
30
36
  }
31
37
  }
32
38
  // required fields
33
39
  if (!config.package) {
34
- console.log(chalk.red('Error: ') + 'Please specify [package] section in your mops.toml');
40
+ console.log(chalk.red("Error: ") +
41
+ "Please specify [package] section in your mops.toml");
35
42
  process.exit(1);
36
43
  }
37
- for (let key of ['name', 'version']) {
44
+ for (let key of ["name", "version"]) {
38
45
  // @ts-ignore
39
46
  if (!config.package[key]) {
40
- console.log(chalk.red('Error: ') + `Please specify "${key}" in [package] section in your mops.toml`);
47
+ console.log(chalk.red("Error: ") +
48
+ `Please specify "${key}" in [package] section in your mops.toml`);
41
49
  process.exit(1);
42
50
  }
43
51
  }
44
52
  // desired fields
45
- for (let key of ['description', 'repository']) {
53
+ for (let key of ["description", "repository"]) {
46
54
  // @ts-ignore
47
55
  if (!config.package[key] && !process.env.CI) {
48
56
  let res = await prompts({
49
- type: 'confirm',
50
- name: 'ok',
57
+ type: "confirm",
58
+ name: "ok",
51
59
  message: `Missing recommended config key "${key}", publish anyway?`,
52
60
  });
53
61
  if (!res.ok) {
@@ -56,24 +64,24 @@ export async function publish(options = {}) {
56
64
  }
57
65
  }
58
66
  let packageKeys = [
59
- 'name',
60
- 'version',
61
- 'keywords',
62
- 'description',
63
- 'repository',
64
- 'documentation',
65
- 'homepage',
66
- 'baseDir',
67
- 'readme',
68
- 'license',
69
- 'files',
70
- 'dfx',
71
- 'moc',
72
- 'donation',
67
+ "name",
68
+ "version",
69
+ "keywords",
70
+ "description",
71
+ "repository",
72
+ "documentation",
73
+ "homepage",
74
+ "baseDir",
75
+ "readme",
76
+ "license",
77
+ "files",
78
+ "dfx",
79
+ "moc",
80
+ "donation",
73
81
  ];
74
82
  for (let key of Object.keys(config.package)) {
75
83
  if (!packageKeys.includes(key)) {
76
- console.log(chalk.red('Error: ') + `Unknown config key 'package.${key}'`);
84
+ console.log(chalk.red("Error: ") + `Unknown config key 'package.${key}'`);
77
85
  process.exit(1);
78
86
  }
79
87
  }
@@ -97,18 +105,19 @@ export async function publish(options = {}) {
97
105
  for (let [key, max] of Object.entries(keysMax)) {
98
106
  // @ts-ignore
99
107
  if (config.package[key] && config.package[key].length > max) {
100
- console.log(chalk.red('Error: ') + `package.${key} value max length is ${max}`);
108
+ console.log(chalk.red("Error: ") + `package.${key} value max length is ${max}`);
101
109
  process.exit(1);
102
110
  }
103
111
  }
104
112
  if (config.dependencies) {
105
113
  if (Object.keys(config.dependencies).length > 100) {
106
- console.log(chalk.red('Error: ') + 'max dependencies is 100');
114
+ console.log(chalk.red("Error: ") + "max dependencies is 100");
107
115
  process.exit(1);
108
116
  }
109
117
  for (let dep of Object.values(config.dependencies)) {
110
118
  if (dep.path) {
111
- console.log(chalk.red('Error: ') + 'you can\'t publish packages with local dependencies');
119
+ console.log(chalk.red("Error: ") +
120
+ "you can't publish packages with local dependencies");
112
121
  process.exit(1);
113
122
  }
114
123
  delete dep.path;
@@ -116,9 +125,9 @@ export async function publish(options = {}) {
116
125
  for (let dep of Object.values(config.dependencies)) {
117
126
  if (dep.repo && !process.env.CI) {
118
127
  let res = await prompts({
119
- type: 'confirm',
120
- name: 'ok',
121
- message: chalk.yellow('GitHub dependencies make the registry less reliable and limit its capabilities.\nIf you are the owner of the dependency, please consider publishing it to the Mops registry.') + '\n\nPublish anyway?',
128
+ type: "confirm",
129
+ name: "ok",
130
+ message: chalk.yellow("GitHub dependencies make the registry less reliable and limit its capabilities.\nIf you are the owner of the dependency, please consider publishing it to the Mops registry.") + "\n\nPublish anyway?",
122
131
  });
123
132
  if (!res.ok) {
124
133
  return;
@@ -126,14 +135,15 @@ export async function publish(options = {}) {
126
135
  }
127
136
  }
128
137
  }
129
- if (config['dev-dependencies']) {
130
- if (Object.keys(config['dev-dependencies']).length > 100) {
131
- console.log(chalk.red('Error: ') + 'max dev-dependencies is 100');
138
+ if (config["dev-dependencies"]) {
139
+ if (Object.keys(config["dev-dependencies"]).length > 100) {
140
+ console.log(chalk.red("Error: ") + "max dev-dependencies is 100");
132
141
  process.exit(1);
133
142
  }
134
- for (let dep of Object.values(config['dev-dependencies'])) {
143
+ for (let dep of Object.values(config["dev-dependencies"])) {
135
144
  if (dep.path) {
136
- console.log(chalk.red('Error: ') + 'you can\'t publish packages with local dev-dependencies');
145
+ console.log(chalk.red("Error: ") +
146
+ "you can't publish packages with local dev-dependencies");
137
147
  process.exit(1);
138
148
  }
139
149
  delete dep.path;
@@ -142,23 +152,23 @@ export async function publish(options = {}) {
142
152
  if (config.package.keywords) {
143
153
  for (let keyword of config.package.keywords) {
144
154
  if (keyword.length > 20) {
145
- console.log(chalk.red('Error: ') + 'max keyword length is 20');
155
+ console.log(chalk.red("Error: ") + "max keyword length is 20");
146
156
  return;
147
157
  }
148
158
  }
149
159
  }
150
160
  if (config.package.files) {
151
161
  for (let file of config.package.files) {
152
- if (file.startsWith('/') || file.startsWith('../')) {
153
- console.log(chalk.red('Error: ') + 'file path cannot start with \'/\' or \'../\'');
162
+ if (file.startsWith("/") || file.startsWith("../")) {
163
+ console.log(chalk.red("Error: ") + "file path cannot start with '/' or '../'");
154
164
  return;
155
165
  }
156
166
  }
157
167
  }
158
168
  if (config.requirements) {
159
169
  Object.keys(config.requirements).forEach((name) => {
160
- if (name !== 'moc') {
161
- console.log(chalk.red('Error: ') + `Unknown requirement "${name}"`);
170
+ if (name !== "moc") {
171
+ console.log(chalk.red("Error: ") + `Unknown requirement "${name}"`);
162
172
  return;
163
173
  }
164
174
  });
@@ -166,8 +176,8 @@ export async function publish(options = {}) {
166
176
  let toBackendDep = (dep) => {
167
177
  return {
168
178
  ...dep,
169
- version: dep.version || '',
170
- repo: dep.repo || '',
179
+ version: dep.version || "",
180
+ repo: dep.repo || "",
171
181
  };
172
182
  };
173
183
  let toBackendReq = ([name, value]) => {
@@ -178,51 +188,53 @@ export async function publish(options = {}) {
178
188
  name: config.package.name,
179
189
  version: config.package.version,
180
190
  keywords: config.package.keywords || [],
181
- description: config.package.description || '',
182
- repository: config.package.repository || '',
183
- homepage: config.package.homepage || '',
184
- documentation: config.package.documentation || '',
185
- baseDir: 'src',
186
- readme: 'README.md',
187
- license: config.package.license || '',
188
- dfx: config.package.dfx || '',
189
- moc: config.package.moc || '',
190
- donation: config.package.donation || '',
191
+ description: config.package.description || "",
192
+ repository: config.package.repository || "",
193
+ homepage: config.package.homepage || "",
194
+ documentation: config.package.documentation || "",
195
+ baseDir: "src",
196
+ readme: "README.md",
197
+ license: config.package.license || "",
198
+ dfx: config.package.dfx || "",
199
+ moc: config.package.moc || "",
200
+ donation: config.package.donation || "",
191
201
  dependencies: Object.values(config.dependencies || {}).map(toBackendDep),
192
- devDependencies: Object.values(config['dev-dependencies'] || {}).map(toBackendDep),
202
+ devDependencies: Object.values(config["dev-dependencies"] || {}).map(toBackendDep),
193
203
  scripts: [],
194
- requirements: [Object.entries(config.requirements || {}).map((req) => toBackendReq(req))],
204
+ requirements: [
205
+ Object.entries(config.requirements || {}).map((req) => toBackendReq(req)),
206
+ ],
195
207
  };
196
208
  let defaultFiles = [
197
- 'mops.toml',
198
- 'README.md',
199
- 'LICENSE',
200
- 'NOTICE',
201
- '!.mops/**',
202
- '!test/**',
203
- '!tests/**',
204
- '!**/*.test.mo',
205
- '!**/*.Test.mo',
206
- '!bench/**',
207
- '!benchmark/**',
208
- '!**/*.bench.mo',
209
- '!**/*.Bench.mo',
210
- '!**/node_modules/**',
209
+ "mops.toml",
210
+ "README.md",
211
+ "LICENSE",
212
+ "NOTICE",
213
+ "!.mops/**",
214
+ "!test/**",
215
+ "!tests/**",
216
+ "!**/*.test.mo",
217
+ "!**/*.Test.mo",
218
+ "!bench/**",
219
+ "!benchmark/**",
220
+ "!**/*.bench.mo",
221
+ "!**/*.Bench.mo",
222
+ "!**/node_modules/**",
211
223
  ];
212
- let files = config.package.files || ['**/*.mo'];
224
+ let files = config.package.files || ["**/*.mo"];
213
225
  files = [...files, ...defaultFiles];
214
226
  files = globbySync([...files, ...defaultFiles]);
215
227
  if (options.verbose) {
216
- console.log('Files:');
217
- console.log(files.map((file) => ' ' + file).join('\n'));
228
+ console.log("Files:");
229
+ console.log(files.map((file) => " " + file).join("\n"));
218
230
  }
219
231
  // generate docs
220
- let docsFile = path.join(rootDir, '.mops/.docs/docs.tgz');
232
+ let docsFile = path.join(rootDir, ".mops/.docs/docs.tgz");
221
233
  let docsCov = 0;
222
234
  if (options.docs) {
223
- console.log('Generating documentation...');
235
+ console.log("Generating documentation...");
224
236
  docsCov = await docsCoverage({
225
- reporter: 'silent',
237
+ reporter: "silent",
226
238
  });
227
239
  await docs({ silent: true, archive: true });
228
240
  if (fs.existsSync(docsFile)) {
@@ -230,57 +242,61 @@ export async function publish(options = {}) {
230
242
  }
231
243
  }
232
244
  // check required files
233
- if (!files.includes('mops.toml')) {
234
- console.log(chalk.red('Error: ') + ' please add mops.toml file');
245
+ if (!files.includes("mops.toml")) {
246
+ console.log(chalk.red("Error: ") + " please add mops.toml file");
235
247
  process.exit(1);
236
248
  }
237
- if (!files.includes('README.md')) {
238
- console.log(chalk.red('Error: ') + ' please add README.md file');
249
+ if (!files.includes("README.md")) {
250
+ console.log(chalk.red("Error: ") + " please add README.md file");
239
251
  process.exit(1);
240
252
  }
241
253
  // check allowed exts
242
254
  for (let file of files) {
243
- if (!minimatch(file, '**/*.{mo,did,md,toml}') && !file.toLowerCase().endsWith('license') && !file.toLowerCase().endsWith('notice') && file !== docsFile) {
244
- console.log(chalk.red('Error: ') + `file ${file} has unsupported extension. Allowed: .mo, .did, .md, .toml`);
255
+ if (!minimatch(file, "**/*.{mo,did,md,toml}") &&
256
+ !file.toLowerCase().endsWith("license") &&
257
+ !file.toLowerCase().endsWith("notice") &&
258
+ file !== docsFile) {
259
+ console.log(chalk.red("Error: ") +
260
+ `file ${file} has unsupported extension. Allowed: .mo, .did, .md, .toml`);
245
261
  process.exit(1);
246
262
  }
247
263
  }
248
264
  // parse changelog
249
- console.log('Parsing CHANGELOG.md...');
265
+ console.log("Parsing CHANGELOG.md...");
250
266
  let changelog = parseChangelog(config.package.version);
251
267
  if (!changelog && config.package.repository) {
252
- console.log('Fetching release notes from GitHub...');
268
+ console.log("Fetching release notes from GitHub...");
253
269
  changelog = await fetchGitHubReleaseNotes(config.package.repository, config.package.version);
254
270
  }
255
271
  if (changelog) {
256
- console.log('Changelog:');
272
+ console.log("Changelog:");
257
273
  console.log(chalk.gray(changelog));
258
274
  }
259
275
  // test
260
- let reporter = new SilentReporter;
276
+ let reporter = new SilentReporter();
261
277
  if (options.test) {
262
- console.log('Running tests...');
263
- await testWithReporter(reporter, '', 'interpreter', config.toolchain?.['pocket-ic'] ? 'pocket-ic' : 'dfx');
278
+ console.log("Running tests...");
279
+ await testWithReporter(reporter, "", "interpreter", config.toolchain?.["pocket-ic"] ? "pocket-ic" : "dfx");
264
280
  if (reporter.failed > 0) {
265
- console.log(chalk.red('Error: ') + 'tests failed');
281
+ console.log(chalk.red("Error: ") + "tests failed");
266
282
  process.exit(1);
267
283
  }
268
284
  }
269
285
  // bench
270
286
  let benchmarks = [];
271
287
  if (options.bench) {
272
- console.log('Running benchmarks...');
288
+ console.log("Running benchmarks...");
273
289
  try {
274
- benchmarks = await bench('', {
275
- replica: config.toolchain?.['pocket-ic'] ? 'pocket-ic' : 'dfx',
276
- gc: 'copying',
290
+ benchmarks = await bench("", {
291
+ replica: config.toolchain?.["pocket-ic"] ? "pocket-ic" : "dfx",
292
+ gc: "copying",
277
293
  forceGc: true,
278
294
  silent: true,
279
295
  });
280
296
  }
281
297
  catch (err) {
282
298
  console.error(err);
283
- console.log(chalk.red('Error: ') + 'benchmarks failed');
299
+ console.log(chalk.red("Error: ") + "benchmarks failed");
284
300
  process.exit(1);
285
301
  }
286
302
  }
@@ -296,8 +312,8 @@ export async function publish(options = {}) {
296
312
  let actor = await mainActor(identity);
297
313
  progress();
298
314
  let publishing = await actor.startPublish(backendPkgConfig);
299
- if ('err' in publishing) {
300
- console.log(chalk.red('Error: ') + publishing.err);
315
+ if ("err" in publishing) {
316
+ console.log(chalk.red("Error: ") + publishing.err);
301
317
  process.exit(1);
302
318
  }
303
319
  let puiblishingId = publishing.ok;
@@ -332,8 +348,8 @@ export async function publish(options = {}) {
332
348
  file = path.basename(file);
333
349
  }
334
350
  let res = await actor.startFileUpload(puiblishingId, file, BigInt(chunkCount), firstChunk);
335
- if ('err' in res) {
336
- console.log(chalk.red('Error: ') + res.err);
351
+ if ("err" in res) {
352
+ console.log(chalk.red("Error: ") + res.err);
337
353
  process.exit(1);
338
354
  }
339
355
  let fileId = res.ok;
@@ -341,27 +357,31 @@ export async function publish(options = {}) {
341
357
  let start = i * chunkSize;
342
358
  let chunk = Array.from(content.slice(start, start + chunkSize));
343
359
  let res = await actor.uploadFileChunk(puiblishingId, fileId, BigInt(i), chunk);
344
- if ('err' in res) {
345
- console.log(chalk.red('Error: ') + res.err);
360
+ if ("err" in res) {
361
+ console.log(chalk.red("Error: ") + res.err);
346
362
  process.exit(1);
347
363
  }
348
364
  }
349
365
  });
350
- fs.rmSync(path.join(rootDir, '.mops/.docs'), { force: true, recursive: true });
366
+ fs.rmSync(path.join(rootDir, ".mops/.docs"), {
367
+ force: true,
368
+ recursive: true,
369
+ });
351
370
  // finish
352
371
  progress();
353
372
  logUpdate.done();
354
373
  let res = await actor.finishPublish(puiblishingId);
355
- if ('err' in res) {
356
- console.log(chalk.red('Error: ') + res.err);
374
+ if ("err" in res) {
375
+ console.log(chalk.red("Error: ") + res.err);
357
376
  process.exit(1);
358
377
  }
359
- console.log(chalk.green('Published ') + `${config.package.name}@${config.package.version}`);
378
+ console.log(chalk.green("Published ") +
379
+ `${config.package.name}@${config.package.version}`);
360
380
  }
361
381
  function parseChangelog(version) {
362
382
  let rootDir = getRootDir();
363
- let changelogFile = '';
364
- let files = ['CHANGELOG.md', 'Changelog.md', 'changelog.md'];
383
+ let changelogFile = "";
384
+ let files = ["CHANGELOG.md", "Changelog.md", "changelog.md"];
365
385
  for (let file of files) {
366
386
  if (fs.existsSync(path.join(rootDir, file))) {
367
387
  changelogFile = path.join(rootDir, file);
@@ -369,26 +389,26 @@ function parseChangelog(version) {
369
389
  }
370
390
  }
371
391
  if (!changelogFile) {
372
- console.log(chalk.yellow('CHANGELOG.md not found'));
373
- return '';
392
+ console.log(chalk.yellow("CHANGELOG.md not found"));
393
+ return "";
374
394
  }
375
- let str = fs.readFileSync(changelogFile, 'utf-8');
395
+ let str = fs.readFileSync(changelogFile, "utf-8");
376
396
  let changelog = findChangelogEntry(str, version);
377
397
  if (!changelog) {
378
- console.log(chalk.yellow('No changelog entry found'));
398
+ console.log(chalk.yellow("No changelog entry found"));
379
399
  }
380
- return changelog || '';
400
+ return changelog || "";
381
401
  }
382
402
  async function fetchGitHubReleaseNotes(repo, version) {
383
403
  let repoPath = new URL(repo).pathname;
384
404
  let res = await fetch(`https://api.github.com/repos${repoPath}/releases/tags/${version}`);
385
405
  let release = await res.json();
386
- if (release.message === 'Not Found') {
406
+ if (release.message === "Not Found") {
387
407
  res = await fetch(`https://api.github.com/repos${repoPath}/releases/tags/v${version}`);
388
408
  release = await res.json();
389
- if (release.message === 'Not Found') {
409
+ if (release.message === "Not Found") {
390
410
  console.log(chalk.yellow(`No GitHub release found with name ${version} or v${version}`));
391
- return '';
411
+ return "";
392
412
  }
393
413
  }
394
414
  return release.body;
@@ -2,7 +2,7 @@ type RemoveOptions = {
2
2
  verbose?: boolean;
3
3
  dev?: boolean;
4
4
  dryRun?: boolean;
5
- lock?: 'update' | 'ignore';
5
+ lock?: "update" | "ignore";
6
6
  };
7
7
  export declare function remove(name: string, { dev, verbose, dryRun, lock }?: RemoveOptions): Promise<void>;
8
8
  export {};
@@ -1,26 +1,31 @@
1
- import fs from 'node:fs';
2
- import { deleteSync } from 'del';
3
- import chalk from 'chalk';
4
- import { checkConfigFile, getRootDir, readConfig, writeConfig } from '../mops.js';
5
- import { checkIntegrity } from '../integrity.js';
6
- import { getDepCacheDir, getDepCacheName } from '../cache.js';
7
- import path from 'node:path';
8
- import { syncLocalCache } from './install/sync-local-cache.js';
9
- import { getPackageId } from '../helpers/get-package-id.js';
1
+ import fs from "node:fs";
2
+ import { deleteSync } from "del";
3
+ import chalk from "chalk";
4
+ import { checkConfigFile, getRootDir, readConfig, writeConfig, } from "../mops.js";
5
+ import { checkIntegrity } from "../integrity.js";
6
+ import { getDepCacheDir, getDepCacheName } from "../cache.js";
7
+ import path from "node:path";
8
+ import { syncLocalCache } from "./install/sync-local-cache.js";
9
+ import { getPackageId } from "../helpers/get-package-id.js";
10
10
  export async function remove(name, { dev = false, verbose = false, dryRun = false, lock } = {}) {
11
11
  if (!checkConfigFile()) {
12
12
  return;
13
13
  }
14
14
  function getTransitiveDependencies(config, exceptPkgId) {
15
15
  let deps = Object.values(config.dependencies || {});
16
- let devDeps = Object.values(config['dev-dependencies'] || {});
16
+ let devDeps = Object.values(config["dev-dependencies"] || {});
17
17
  return [...deps, ...devDeps]
18
18
  .filter((dep) => {
19
- let depId = getPackageId(dep.name, dep.version || '');
19
+ let depId = getPackageId(dep.name, dep.version || "");
20
20
  return depId !== exceptPkgId;
21
- }).map((dep) => {
22
- return [dep, ...getTransitiveDependenciesOf(dep.name, dep.version, dep.repo)];
23
- }).flat();
21
+ })
22
+ .map((dep) => {
23
+ return [
24
+ dep,
25
+ ...getTransitiveDependenciesOf(dep.name, dep.version, dep.repo),
26
+ ];
27
+ })
28
+ .flat();
24
29
  }
25
30
  function getTransitiveDependenciesOf(name, version, repo) {
26
31
  let value = version || repo;
@@ -29,42 +34,49 @@ export async function remove(name, { dev = false, verbose = false, dryRun = fals
29
34
  }
30
35
  let cacheName = getDepCacheName(name, value);
31
36
  let pkgDir = getDepCacheDir(cacheName);
32
- let configFile = pkgDir + '/mops.toml';
37
+ let configFile = pkgDir + "/mops.toml";
33
38
  if (!fs.existsSync(configFile)) {
34
- verbose && console.log('no config', configFile);
39
+ verbose && console.log("no config", configFile);
35
40
  return [];
36
41
  }
37
42
  let config = readConfig(configFile);
38
- let deps = Object.values(config.dependencies || {}).map((dep) => {
43
+ let deps = Object.values(config.dependencies || {})
44
+ .map((dep) => {
39
45
  return [dep, ...getTransitiveDependenciesOf(dep.name, dep.version)];
40
- }).flat();
46
+ })
47
+ .flat();
41
48
  return deps;
42
49
  }
43
50
  let config = readConfig();
44
- let deps = dev ? config['dev-dependencies'] : config.dependencies;
51
+ let deps = dev ? config["dev-dependencies"] : config.dependencies;
45
52
  deps = deps || {};
46
53
  let pkgDetails = deps[name];
47
54
  if (!pkgDetails) {
48
- return console.log(chalk.red('Error: ') + `No ${dev ? 'dev ' : ''}dependency to remove "${name}"`);
55
+ return console.log(chalk.red("Error: ") +
56
+ `No ${dev ? "dev " : ""}dependency to remove "${name}"`);
49
57
  }
50
58
  let version = pkgDetails.version;
51
- let packageId = getPackageId(name, version || '');
59
+ let packageId = getPackageId(name, version || "");
52
60
  // transitive deps ignoring deps of this package
53
61
  let transitiveDeps = getTransitiveDependencies(config, packageId);
54
62
  let transitiveDepIds = new Set(transitiveDeps.map((dep) => {
55
- return getPackageId(dep.name, dep.version || '');
63
+ return getPackageId(dep.name, dep.version || "");
56
64
  }));
57
65
  // transitive deps of this package (including itself)
58
- let transitiveDepsOfPackage = [pkgDetails, ...getTransitiveDependenciesOf(name, version)];
66
+ let transitiveDepsOfPackage = [
67
+ pkgDetails,
68
+ ...getTransitiveDependenciesOf(name, version),
69
+ ];
59
70
  // remove local cache
60
71
  for (let dep of transitiveDepsOfPackage) {
61
- let depId = getPackageId(dep.name, dep.version || '');
72
+ let depId = getPackageId(dep.name, dep.version || "");
62
73
  if (transitiveDepIds.has(depId)) {
63
- verbose && console.log(`Ignored transitive dependency ${depId} (other deps depend on it)`);
74
+ verbose &&
75
+ console.log(`Ignored transitive dependency ${depId} (other deps depend on it)`);
64
76
  continue;
65
77
  }
66
- let cacheName = getDepCacheName(dep.name, dep.version || dep.repo || '');
67
- let localCacheDir = path.join(getRootDir(), '.mops', cacheName);
78
+ let cacheName = getDepCacheName(dep.name, dep.version || dep.repo || "");
79
+ let localCacheDir = path.join(getRootDir(), ".mops", cacheName);
68
80
  if (localCacheDir && fs.existsSync(localCacheDir)) {
69
81
  dryRun || deleteSync([localCacheDir], { force: true });
70
82
  verbose && console.log(`Removed local cache ${localCacheDir}`);
@@ -74,11 +86,11 @@ export async function remove(name, { dev = false, verbose = false, dryRun = fals
74
86
  if (!dev && config.dependencies) {
75
87
  delete config.dependencies[name];
76
88
  }
77
- if (dev && config['dev-dependencies']) {
78
- delete config['dev-dependencies'][name];
89
+ if (dev && config["dev-dependencies"]) {
90
+ delete config["dev-dependencies"][name];
79
91
  }
80
92
  dryRun || writeConfig(config);
81
93
  await syncLocalCache();
82
94
  await checkIntegrity(lock);
83
- console.log(chalk.green('Package removed ') + `${name} = "${version}"`);
95
+ console.log(chalk.green("Package removed ") + `${name} = "${version}"`);
84
96
  }