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.
- package/.DS_Store +0 -0
- package/.eslintrc.json +7 -7
- package/CHANGELOG.md +6 -0
- package/api/actors.ts +41 -37
- package/api/downloadPackageFiles.ts +75 -61
- package/api/getHighestVersion.ts +5 -5
- package/api/index.ts +4 -4
- package/api/network.ts +19 -21
- package/api/resolveVersion.ts +14 -11
- package/bin/mops.js +1 -1
- package/bundle/bench/bench-canister.mo +109 -101
- package/bundle/bench/user-bench.mo +6 -6
- package/bundle/bin/mops.js +1 -1
- package/bundle/cli.js +797 -792
- package/bundle/cli.tgz +0 -0
- package/bundle/package.json +6 -5
- package/bundle/templates/mops-publish.yml +3 -3
- package/bundle/templates/mops-test.yml +3 -3
- package/bundle/templates/src/lib.mo +13 -13
- package/bundle/templates/test/lib.test.mo +2 -2
- package/bundle-package-json.ts +8 -8
- package/cache.ts +80 -65
- package/check-requirements.ts +49 -45
- package/cli.ts +577 -376
- package/commands/add.ts +142 -129
- package/commands/available-updates.ts +55 -41
- package/commands/bench/bench-canister.mo +114 -108
- package/commands/bench/user-bench.mo +6 -6
- package/commands/bench-replica.ts +146 -118
- package/commands/bench.ts +563 -497
- package/commands/build.ts +177 -0
- package/commands/bump.ts +68 -57
- package/commands/check-candid.ts +24 -0
- package/commands/docs-coverage.ts +124 -102
- package/commands/docs.ts +118 -108
- package/commands/format.ts +171 -155
- package/commands/init.ts +301 -275
- package/commands/install/install-all.ts +75 -62
- package/commands/install/install-dep.ts +43 -28
- package/commands/install/install-deps.ts +23 -15
- package/commands/install/install-local-dep.ts +42 -34
- package/commands/install/install-mops-dep.ts +154 -123
- package/commands/install/sync-local-cache.ts +39 -35
- package/commands/maintainer.ts +109 -99
- package/commands/outdated.ts +30 -24
- package/commands/owner.ts +107 -99
- package/commands/publish.ts +534 -443
- package/commands/remove.ts +119 -89
- package/commands/replica.ts +391 -316
- package/commands/search.ts +42 -36
- package/commands/self.ts +63 -56
- package/commands/sources.ts +66 -49
- package/commands/sync.ts +92 -75
- package/commands/template.ts +145 -102
- package/commands/test/mmf1.ts +146 -119
- package/commands/test/reporters/compact-reporter.ts +87 -84
- package/commands/test/reporters/files-reporter.ts +56 -51
- package/commands/test/reporters/reporter.ts +12 -6
- package/commands/test/reporters/silent-reporter.ts +58 -59
- package/commands/test/reporters/verbose-reporter.ts +66 -54
- package/commands/test/test.ts +498 -401
- package/commands/test/utils.ts +72 -67
- package/commands/toolchain/index.ts +363 -322
- package/commands/toolchain/moc.ts +78 -50
- package/commands/toolchain/pocket-ic.ts +41 -34
- package/commands/toolchain/toolchain-utils.ts +92 -72
- package/commands/toolchain/wasmtime.ts +37 -34
- package/commands/update.ts +82 -64
- package/commands/user.ts +90 -81
- package/commands/watch/deployer.ts +188 -152
- package/commands/watch/error-checker.ts +90 -80
- package/commands/watch/formatter.ts +72 -60
- package/commands/watch/generator.ts +116 -96
- package/commands/watch/globMoFiles.ts +13 -13
- package/commands/watch/parseDfxJson.ts +63 -57
- package/commands/watch/tester.ts +83 -65
- package/commands/watch/warning-checker.ts +149 -136
- package/commands/watch/watch.ts +123 -95
- package/dist/api/actors.d.ts +4 -4
- package/dist/api/actors.js +8 -8
- package/dist/api/downloadPackageFiles.d.ts +2 -2
- package/dist/api/downloadPackageFiles.js +10 -10
- package/dist/api/getHighestVersion.js +1 -1
- package/dist/api/index.d.ts +4 -4
- package/dist/api/index.js +4 -4
- package/dist/api/network.js +9 -9
- package/dist/api/resolveVersion.js +3 -3
- package/dist/bin/mops.js +1 -1
- package/dist/bundle-package-json.js +8 -8
- package/dist/cache.js +22 -17
- package/dist/check-requirements.js +11 -11
- package/dist/cli.js +283 -186
- package/dist/commands/add.d.ts +1 -1
- package/dist/commands/add.js +40 -37
- package/dist/commands/available-updates.d.ts +1 -1
- package/dist/commands/available-updates.js +18 -12
- package/dist/commands/bench/bench-canister.mo +114 -108
- package/dist/commands/bench/user-bench.mo +6 -6
- package/dist/commands/bench-replica.d.ts +4 -4
- package/dist/commands/bench-replica.js +45 -34
- package/dist/commands/bench.d.ts +5 -5
- package/dist/commands/bench.js +134 -118
- package/dist/commands/build.d.ts +7 -0
- package/dist/commands/build.js +121 -0
- package/dist/commands/bump.js +27 -18
- package/dist/commands/check-candid.d.ts +4 -0
- package/dist/commands/check-candid.js +15 -0
- package/dist/commands/docs-coverage.d.ts +1 -1
- package/dist/commands/docs-coverage.js +45 -31
- package/dist/commands/docs.d.ts +1 -1
- package/dist/commands/docs.js +39 -38
- package/dist/commands/format.js +31 -27
- package/dist/commands/init.js +102 -92
- package/dist/commands/install/install-all.d.ts +2 -2
- package/dist/commands/install/install-all.js +23 -21
- package/dist/commands/install/install-dep.d.ts +1 -1
- package/dist/commands/install/install-dep.js +21 -8
- package/dist/commands/install/install-deps.d.ts +1 -1
- package/dist/commands/install/install-deps.js +1 -1
- package/dist/commands/install/install-local-dep.js +11 -9
- package/dist/commands/install/install-mops-dep.d.ts +1 -1
- package/dist/commands/install/install-mops-dep.js +32 -27
- package/dist/commands/install/sync-local-cache.js +10 -10
- package/dist/commands/maintainer.js +21 -21
- package/dist/commands/outdated.js +12 -8
- package/dist/commands/owner.js +21 -21
- package/dist/commands/publish.js +148 -128
- package/dist/commands/remove.d.ts +1 -1
- package/dist/commands/remove.js +42 -30
- package/dist/commands/replica.d.ts +7 -7
- package/dist/commands/replica.js +85 -57
- package/dist/commands/search.js +15 -13
- package/dist/commands/self.js +31 -28
- package/dist/commands/sources.d.ts +5 -1
- package/dist/commands/sources.js +23 -17
- package/dist/commands/sync.d.ts +1 -1
- package/dist/commands/sync.js +38 -25
- package/dist/commands/template.js +66 -56
- package/dist/commands/test/mmf1.d.ts +3 -3
- package/dist/commands/test/mmf1.js +33 -31
- package/dist/commands/test/reporters/compact-reporter.d.ts +3 -3
- package/dist/commands/test/reporters/compact-reporter.js +19 -15
- package/dist/commands/test/reporters/files-reporter.d.ts +3 -3
- package/dist/commands/test/reporters/files-reporter.js +18 -14
- package/dist/commands/test/reporters/reporter.d.ts +2 -2
- package/dist/commands/test/reporters/silent-reporter.d.ts +3 -3
- package/dist/commands/test/reporters/silent-reporter.js +4 -4
- package/dist/commands/test/reporters/verbose-reporter.d.ts +3 -3
- package/dist/commands/test/reporters/verbose-reporter.js +17 -13
- package/dist/commands/test/test.d.ts +4 -4
- package/dist/commands/test/test.js +134 -112
- package/dist/commands/test/utils.d.ts +3 -3
- package/dist/commands/test/utils.js +17 -17
- package/dist/commands/toolchain/index.d.ts +1 -1
- package/dist/commands/toolchain/index.js +81 -69
- package/dist/commands/toolchain/moc.d.ts +1 -1
- package/dist/commands/toolchain/moc.js +48 -24
- package/dist/commands/toolchain/pocket-ic.js +12 -12
- package/dist/commands/toolchain/toolchain-utils.d.ts +2 -0
- package/dist/commands/toolchain/toolchain-utils.js +32 -23
- package/dist/commands/toolchain/wasmtime.js +11 -11
- package/dist/commands/update.d.ts +1 -1
- package/dist/commands/update.js +18 -14
- package/dist/commands/user.js +31 -28
- package/dist/commands/watch/deployer.d.ts +4 -4
- package/dist/commands/watch/deployer.js +45 -36
- package/dist/commands/watch/error-checker.d.ts +2 -2
- package/dist/commands/watch/error-checker.js +27 -27
- package/dist/commands/watch/formatter.d.ts +4 -4
- package/dist/commands/watch/formatter.js +17 -17
- package/dist/commands/watch/generator.d.ts +3 -3
- package/dist/commands/watch/generator.js +28 -23
- package/dist/commands/watch/globMoFiles.js +8 -8
- package/dist/commands/watch/parseDfxJson.d.ts +2 -2
- package/dist/commands/watch/parseDfxJson.js +9 -9
- package/dist/commands/watch/tester.d.ts +4 -4
- package/dist/commands/watch/tester.js +23 -21
- package/dist/commands/watch/warning-checker.d.ts +3 -3
- package/dist/commands/watch/warning-checker.js +36 -36
- package/dist/commands/watch/watch.js +45 -32
- package/dist/environments/nodejs/cli.d.ts +1 -0
- package/dist/environments/nodejs/cli.js +4 -0
- package/dist/environments/web/cli.d.ts +1 -0
- package/dist/environments/web/cli.js +4 -0
- package/dist/error.d.ts +1 -0
- package/dist/error.js +5 -0
- package/dist/fix-dist.js +5 -5
- package/dist/helpers/find-changelog-entry.js +8 -5
- package/dist/helpers/get-dep-name.js +2 -2
- package/dist/helpers/get-dfx-version.js +4 -4
- package/dist/helpers/get-moc-path.js +8 -7
- package/dist/helpers/get-moc-version.js +10 -7
- package/dist/helpers/get-package-id.js +2 -2
- package/dist/helpers/is-candid-compatible.d.ts +1 -0
- package/dist/helpers/is-candid-compatible.js +20 -0
- package/dist/integrity.d.ts +1 -1
- package/dist/integrity.js +47 -38
- package/dist/jest.config.d.ts +11 -0
- package/dist/jest.config.js +14 -0
- package/dist/mops.d.ts +6 -6
- package/dist/mops.js +87 -80
- package/dist/notify-installs.js +4 -4
- package/dist/package.json +9 -5
- package/dist/pem.d.ts +3 -3
- package/dist/pem.js +20 -12
- package/dist/release-cli.js +20 -20
- package/dist/resolve-packages.d.ts +1 -1
- package/dist/resolve-packages.js +52 -36
- package/dist/templates/mops-publish.yml +3 -3
- package/dist/templates/mops-test.yml +3 -3
- package/dist/templates/src/lib.mo +13 -13
- package/dist/templates/test/lib.test.mo +2 -2
- package/dist/templates.js +1 -1
- package/dist/tests/cli.test.d.ts +1 -0
- package/dist/tests/cli.test.js +63 -0
- package/dist/types.d.ts +14 -4
- package/dist/vessel.d.ts +2 -2
- package/dist/vessel.js +41 -34
- package/dist/wasm/pkg/bundler/package.json +20 -0
- package/dist/wasm/pkg/bundler/wasm.d.ts +3 -0
- package/dist/wasm/pkg/bundler/wasm.js +5 -0
- package/dist/wasm/pkg/bundler/wasm_bg.js +93 -0
- package/dist/wasm/pkg/bundler/wasm_bg.wasm +0 -0
- package/dist/wasm/pkg/bundler/wasm_bg.wasm.d.ts +8 -0
- package/dist/wasm/pkg/nodejs/package.json +14 -0
- package/dist/wasm/pkg/nodejs/wasm.d.ts +3 -0
- package/dist/wasm/pkg/nodejs/wasm.js +98 -0
- package/dist/wasm/pkg/nodejs/wasm_bg.wasm +0 -0
- package/dist/wasm/pkg/nodejs/wasm_bg.wasm.d.ts +8 -0
- package/dist/wasm/pkg/web/package.json +18 -0
- package/dist/wasm/pkg/web/wasm.d.ts +35 -0
- package/dist/wasm/pkg/web/wasm.js +191 -0
- package/dist/wasm/pkg/web/wasm_bg.wasm +0 -0
- package/dist/wasm/pkg/web/wasm_bg.wasm.d.ts +8 -0
- package/dist/wasm.d.ts +5 -0
- package/dist/wasm.js +10 -0
- package/environments/nodejs/cli.ts +6 -0
- package/environments/web/cli.ts +6 -0
- package/error.ts +6 -0
- package/fix-dist.ts +5 -5
- package/global.d.ts +3 -3
- package/helpers/find-changelog-entry.ts +26 -23
- package/helpers/get-dep-name.ts +5 -5
- package/helpers/get-dfx-version.ts +8 -9
- package/helpers/get-moc-path.ts +25 -26
- package/helpers/get-moc-version.ts +21 -19
- package/helpers/get-package-id.ts +4 -4
- package/helpers/is-candid-compatible.ts +22 -0
- package/integrity.ts +270 -236
- package/jest.config.js +14 -0
- package/mops.ts +238 -215
- package/notify-installs.ts +16 -17
- package/package.json +19 -10
- package/parallel.ts +28 -24
- package/pem.ts +55 -47
- package/release-cli.ts +73 -39
- package/resolve-packages.ts +231 -189
- package/templates/mops-publish.yml +3 -3
- package/templates/mops-test.yml +3 -3
- package/templates/src/lib.mo +13 -13
- package/templates/test/lib.test.mo +2 -2
- package/templates.ts +4 -4
- package/tests/__snapshots__/cli.test.ts.snap +202 -0
- package/tests/build/error/candid/bar.did +3 -0
- package/tests/build/error/dfx.json +12 -0
- package/tests/build/error/mops.toml +9 -0
- package/tests/build/error/src/Bar.mo +5 -0
- package/tests/build/error/src/Foo.mo +5 -0
- package/tests/build/success/.dfx/local/canister_ids.json +17 -0
- package/tests/build/success/.dfx/local/canisters/bar/bar.did +3 -0
- package/tests/build/success/.dfx/local/canisters/bar/bar.most +4 -0
- package/tests/build/success/.dfx/local/canisters/bar/bar.wasm +0 -0
- package/tests/build/success/.dfx/local/canisters/bar/constructor.did +3 -0
- package/tests/build/success/.dfx/local/canisters/bar/index.js +42 -0
- package/tests/build/success/.dfx/local/canisters/bar/init_args.txt +1 -0
- package/tests/build/success/.dfx/local/canisters/bar/service.did +3 -0
- package/tests/build/success/.dfx/local/canisters/bar/service.did.d.ts +7 -0
- package/tests/build/success/.dfx/local/canisters/bar/service.did.js +4 -0
- package/tests/build/success/.dfx/local/canisters/foo/constructor.did +3 -0
- package/tests/build/success/.dfx/local/canisters/foo/foo.did +3 -0
- package/tests/build/success/.dfx/local/canisters/foo/foo.most +4 -0
- package/tests/build/success/.dfx/local/canisters/foo/foo.wasm +0 -0
- package/tests/build/success/.dfx/local/canisters/foo/index.js +42 -0
- package/tests/build/success/.dfx/local/canisters/foo/init_args.txt +1 -0
- package/tests/build/success/.dfx/local/canisters/foo/service.did +3 -0
- package/tests/build/success/.dfx/local/canisters/foo/service.did.d.ts +7 -0
- package/tests/build/success/.dfx/local/canisters/foo/service.did.js +4 -0
- package/tests/build/success/.dfx/local/lsp/ucwa4-rx777-77774-qaada-cai.did +3 -0
- package/tests/build/success/.dfx/local/lsp/ulvla-h7777-77774-qaacq-cai.did +3 -0
- package/tests/build/success/.dfx/local/network-id +4 -0
- package/tests/build/success/candid/bar.did +3 -0
- package/tests/build/success/dfx.json +12 -0
- package/tests/build/success/mops.toml +9 -0
- package/tests/build/success/src/Bar.mo +5 -0
- package/tests/build/success/src/Foo.mo +5 -0
- package/tests/check-candid/a.did +3 -0
- package/tests/check-candid/b.did +5 -0
- package/tests/check-candid/c.did +3 -0
- package/tests/cli.test.ts +82 -0
- package/tsconfig.json +26 -19
- package/types.ts +41 -31
- package/vessel.ts +219 -187
- package/wasm/Cargo.lock +1475 -0
- package/wasm/Cargo.toml +28 -0
- package/wasm/pkg/bundler/package.json +20 -0
- package/wasm/pkg/bundler/wasm.d.ts +3 -0
- package/wasm/pkg/bundler/wasm.js +5 -0
- package/wasm/pkg/bundler/wasm_bg.js +93 -0
- package/wasm/pkg/bundler/wasm_bg.wasm +0 -0
- package/wasm/pkg/bundler/wasm_bg.wasm.d.ts +8 -0
- package/wasm/pkg/nodejs/package.json +14 -0
- package/wasm/pkg/nodejs/wasm.d.ts +3 -0
- package/wasm/pkg/nodejs/wasm.js +98 -0
- package/wasm/pkg/nodejs/wasm_bg.wasm +0 -0
- package/wasm/pkg/nodejs/wasm_bg.wasm.d.ts +8 -0
- package/wasm/pkg/web/package.json +18 -0
- package/wasm/pkg/web/wasm.d.ts +35 -0
- package/wasm/pkg/web/wasm.js +191 -0
- package/wasm/pkg/web/wasm_bg.wasm +0 -0
- package/wasm/pkg/web/wasm_bg.wasm.d.ts +8 -0
- package/wasm/src/lib.rs +17 -0
- package/wasm.ts +16 -0
package/dist/commands/replica.js
CHANGED
|
@@ -1,77 +1,87 @@
|
|
|
1
|
-
import process from
|
|
2
|
-
import { execSync, spawn } from
|
|
3
|
-
import path from
|
|
4
|
-
import fs from
|
|
5
|
-
import { PassThrough } from
|
|
6
|
-
import { spawn as spawnAsync } from
|
|
7
|
-
import { Actor, HttpAgent } from
|
|
8
|
-
import { PocketIc, PocketIcServer } from
|
|
9
|
-
import { PocketIc as PocketIcMops, PocketIcServer as PocketIcServerMops } from
|
|
10
|
-
import chalk from
|
|
11
|
-
import { readConfig } from
|
|
12
|
-
import { toolchain } from
|
|
13
|
-
import { getDfxVersion } from
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import { execSync, spawn, } from "node:child_process";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import fs from "node:fs";
|
|
5
|
+
import { PassThrough } from "node:stream";
|
|
6
|
+
import { spawn as spawnAsync } from "promisify-child-process";
|
|
7
|
+
import { Actor, HttpAgent } from "@icp-sdk/core/agent";
|
|
8
|
+
import { PocketIc, PocketIcServer } from "pic-ic";
|
|
9
|
+
import { PocketIc as PocketIcMops, PocketIcServer as PocketIcServerMops, } from "pic-js-mops";
|
|
10
|
+
import chalk from "chalk";
|
|
11
|
+
import { readConfig } from "../mops.js";
|
|
12
|
+
import { toolchain } from "./toolchain/index.js";
|
|
13
|
+
import { getDfxVersion } from "../helpers/get-dfx-version.js";
|
|
14
14
|
export class Replica {
|
|
15
|
-
type =
|
|
15
|
+
type = "dfx";
|
|
16
16
|
verbose = false;
|
|
17
17
|
canisters = {};
|
|
18
18
|
pocketIcServer;
|
|
19
19
|
pocketIc;
|
|
20
20
|
dfxProcess;
|
|
21
|
-
dir =
|
|
21
|
+
dir = ""; // absolute path (/.../.mops/.test/)
|
|
22
22
|
ttl = 60;
|
|
23
23
|
async start({ type, dir, verbose, silent } = {}) {
|
|
24
24
|
this.type = type ?? this.type;
|
|
25
25
|
this.verbose = verbose ?? this.verbose;
|
|
26
26
|
this.dir = dir ?? this.dir;
|
|
27
27
|
silent || console.log(`Starting ${this.type} replica...`);
|
|
28
|
-
if (this.type ===
|
|
28
|
+
if (this.type === "dfx" || this.type === "dfx-pocket-ic") {
|
|
29
29
|
fs.mkdirSync(this.dir, { recursive: true });
|
|
30
|
-
fs.writeFileSync(path.join(this.dir,
|
|
31
|
-
fs.writeFileSync(path.join(this.dir,
|
|
30
|
+
fs.writeFileSync(path.join(this.dir, "dfx.json"), JSON.stringify(this.dfxJson(""), null, 2));
|
|
31
|
+
fs.writeFileSync(path.join(this.dir, "canister.did"), "service : { runTests: () -> (); }");
|
|
32
32
|
await this.stop();
|
|
33
|
-
this.dfxProcess = spawn(
|
|
33
|
+
this.dfxProcess = spawn("dfx", [
|
|
34
|
+
"start",
|
|
35
|
+
this.type === "dfx-pocket-ic" ? "--pocketic" : "",
|
|
36
|
+
"--clean",
|
|
37
|
+
this.verbose ? "" : "-qqqq",
|
|
38
|
+
"--artificial-delay",
|
|
39
|
+
"0",
|
|
40
|
+
]
|
|
41
|
+
.filter((x) => x)
|
|
42
|
+
.flat(), { cwd: this.dir });
|
|
34
43
|
// process canister logs
|
|
35
44
|
this._attachCanisterLogHandler(this.dfxProcess);
|
|
36
|
-
this.dfxProcess.stdout.on(
|
|
45
|
+
this.dfxProcess.stdout.on("data", (data) => {
|
|
37
46
|
if (this.verbose) {
|
|
38
|
-
console.log(
|
|
47
|
+
console.log("DFX:", data.toString());
|
|
39
48
|
}
|
|
40
49
|
});
|
|
41
|
-
this.dfxProcess.stderr.on(
|
|
50
|
+
this.dfxProcess.stderr.on("data", (data) => {
|
|
42
51
|
if (this.verbose) {
|
|
43
|
-
console.error(
|
|
52
|
+
console.error("DFX:", data.toString());
|
|
44
53
|
}
|
|
45
|
-
if (data.toString().includes(
|
|
54
|
+
if (data.toString().includes("Failed to bind socket to")) {
|
|
46
55
|
console.error(chalk.red(data.toString()));
|
|
47
|
-
console.log(
|
|
56
|
+
console.log("Please try again after some time");
|
|
48
57
|
process.exit(11);
|
|
49
58
|
}
|
|
50
59
|
});
|
|
51
60
|
// await for dfx to start
|
|
52
61
|
let ok = false;
|
|
53
62
|
while (!ok) {
|
|
54
|
-
await fetch(
|
|
55
|
-
.then(res => {
|
|
63
|
+
await fetch("http://127.0.0.1:4945/api/v2/status")
|
|
64
|
+
.then((res) => {
|
|
56
65
|
if (res.status === 200) {
|
|
57
66
|
ok = true;
|
|
58
67
|
}
|
|
59
68
|
})
|
|
60
69
|
.catch(() => { })
|
|
61
70
|
.finally(() => {
|
|
62
|
-
return new Promise(resolve => setTimeout(resolve, 1000));
|
|
71
|
+
return new Promise((resolve) => setTimeout(resolve, 1000));
|
|
63
72
|
});
|
|
64
73
|
}
|
|
65
74
|
}
|
|
66
75
|
else {
|
|
67
|
-
let pocketIcBin = await toolchain.bin(
|
|
76
|
+
let pocketIcBin = await toolchain.bin("pocket-ic");
|
|
68
77
|
let config = readConfig();
|
|
69
|
-
if (config.toolchain?.[
|
|
70
|
-
|
|
78
|
+
if (config.toolchain?.["pocket-ic"] !== "4.0.0" &&
|
|
79
|
+
!config.toolchain?.["pocket-ic"]?.startsWith("9.")) {
|
|
80
|
+
console.error("Current Mops CLI only supports pocket-ic 9.x.x and 4.0.0");
|
|
71
81
|
process.exit(1);
|
|
72
82
|
}
|
|
73
83
|
// pocket-ic 9.x.x
|
|
74
|
-
if (config.toolchain?.[
|
|
84
|
+
if (config.toolchain?.["pocket-ic"]?.startsWith("9.")) {
|
|
75
85
|
this.pocketIcServer = await PocketIcServerMops.start({
|
|
76
86
|
showRuntimeLogs: false,
|
|
77
87
|
showCanisterLogs: false,
|
|
@@ -95,31 +105,31 @@ export class Replica {
|
|
|
95
105
|
}
|
|
96
106
|
}
|
|
97
107
|
_attachCanisterLogHandler(proc) {
|
|
98
|
-
let curData =
|
|
99
|
-
proc.stderr.on(
|
|
108
|
+
let curData = "";
|
|
109
|
+
proc.stderr.on("data", (data) => {
|
|
100
110
|
curData = curData + data.toString();
|
|
101
|
-
if (curData.includes(
|
|
102
|
-
let chunk = curData.split(
|
|
111
|
+
if (curData.includes("\n")) {
|
|
112
|
+
let chunk = curData.split("\n").slice(0, -1).join("\n");
|
|
103
113
|
let matches = [...chunk.matchAll(/\[Canister ([a-z0-9-]+)\] (.*)/g)];
|
|
104
114
|
for (let match of matches) {
|
|
105
115
|
let [, canisterId, msg] = match;
|
|
106
|
-
let stream = this.getCanisterStream(canisterId ||
|
|
116
|
+
let stream = this.getCanisterStream(canisterId || "");
|
|
107
117
|
if (stream) {
|
|
108
118
|
stream.write(msg);
|
|
109
119
|
}
|
|
110
120
|
}
|
|
111
121
|
if (matches.length) {
|
|
112
|
-
curData = curData.split(
|
|
122
|
+
curData = curData.split("\n").slice(-1).join("\n");
|
|
113
123
|
}
|
|
114
124
|
}
|
|
115
125
|
});
|
|
116
126
|
}
|
|
117
127
|
async stop(sigint = false) {
|
|
118
|
-
if (this.type ===
|
|
128
|
+
if (this.type === "dfx" || this.type === "dfx-pocket-ic") {
|
|
119
129
|
if (this.dfxProcess) {
|
|
120
130
|
let killed = this.dfxProcess.kill();
|
|
121
131
|
if (!killed) {
|
|
122
|
-
this.dfxProcess.kill(
|
|
132
|
+
this.dfxProcess.kill("SIGKILL");
|
|
123
133
|
}
|
|
124
134
|
// give replica some time to stop
|
|
125
135
|
let i = 0;
|
|
@@ -148,41 +158,59 @@ export class Replica {
|
|
|
148
158
|
}
|
|
149
159
|
}
|
|
150
160
|
async deploy(name, wasm, idlFactory, cwd = process.cwd(), signal) {
|
|
151
|
-
if (this.type ===
|
|
161
|
+
if (this.type === "dfx" || this.type === "dfx-pocket-ic") {
|
|
152
162
|
// prepare dfx.json for current canister
|
|
153
|
-
let dfxJson = path.join(this.dir,
|
|
163
|
+
let dfxJson = path.join(this.dir, "dfx.json");
|
|
154
164
|
let oldDfxJsonData;
|
|
155
165
|
if (fs.existsSync(dfxJson)) {
|
|
156
166
|
oldDfxJsonData = JSON.parse(fs.readFileSync(dfxJson).toString());
|
|
157
167
|
}
|
|
158
|
-
let newDfxJsonData = this.dfxJson(name, name +
|
|
168
|
+
let newDfxJsonData = this.dfxJson(name, name + ".wasm");
|
|
159
169
|
if (oldDfxJsonData.canisters) {
|
|
160
170
|
newDfxJsonData.canisters = Object.assign(oldDfxJsonData.canisters, newDfxJsonData.canisters);
|
|
161
171
|
}
|
|
162
172
|
fs.mkdirSync(this.dir, { recursive: true });
|
|
163
173
|
fs.writeFileSync(dfxJson, JSON.stringify(newDfxJsonData, null, 2));
|
|
164
|
-
await spawnAsync(
|
|
165
|
-
|
|
166
|
-
|
|
174
|
+
await spawnAsync("dfx", [
|
|
175
|
+
"deploy",
|
|
176
|
+
name,
|
|
177
|
+
"--mode",
|
|
178
|
+
"reinstall",
|
|
179
|
+
"--yes",
|
|
180
|
+
"--identity",
|
|
181
|
+
"anonymous",
|
|
182
|
+
], {
|
|
183
|
+
cwd: this.dir,
|
|
184
|
+
signal,
|
|
185
|
+
stdio: this.verbose ? "pipe" : ["pipe", "ignore", "pipe"],
|
|
186
|
+
}).catch((error) => {
|
|
187
|
+
if (error.code === "ABORT_ERR") {
|
|
188
|
+
return { stderr: "" };
|
|
167
189
|
}
|
|
168
190
|
throw error;
|
|
169
191
|
});
|
|
170
192
|
if (signal?.aborted) {
|
|
171
193
|
return;
|
|
172
194
|
}
|
|
173
|
-
await spawnAsync(
|
|
174
|
-
|
|
175
|
-
|
|
195
|
+
await spawnAsync("dfx", ["ledger", "fabricate-cycles", "--canister", name, "--t", "100"], {
|
|
196
|
+
cwd: this.dir,
|
|
197
|
+
signal,
|
|
198
|
+
stdio: this.verbose ? "pipe" : ["pipe", "ignore", "pipe"],
|
|
199
|
+
}).catch((error) => {
|
|
200
|
+
if (error.code === "ABORT_ERR") {
|
|
201
|
+
return { stderr: "" };
|
|
176
202
|
}
|
|
177
203
|
throw error;
|
|
178
204
|
});
|
|
179
205
|
if (signal?.aborted) {
|
|
180
206
|
return;
|
|
181
207
|
}
|
|
182
|
-
let canisterId = execSync(`dfx canister id ${name}`, { cwd: this.dir })
|
|
208
|
+
let canisterId = execSync(`dfx canister id ${name}`, { cwd: this.dir })
|
|
209
|
+
.toString()
|
|
210
|
+
.trim();
|
|
183
211
|
let actor = Actor.createActor(idlFactory, {
|
|
184
212
|
agent: await HttpAgent.create({
|
|
185
|
-
host:
|
|
213
|
+
host: "http://127.0.0.1:4945",
|
|
186
214
|
shouldFetchRootKey: true,
|
|
187
215
|
}),
|
|
188
216
|
canisterId,
|
|
@@ -228,7 +256,7 @@ export class Replica {
|
|
|
228
256
|
return this.canisters[name];
|
|
229
257
|
}
|
|
230
258
|
getCanisterId(name) {
|
|
231
|
-
return this.canisters[name]?.canisterId ||
|
|
259
|
+
return this.canisters[name]?.canisterId || "";
|
|
232
260
|
}
|
|
233
261
|
getCanisterStream(canisterId) {
|
|
234
262
|
for (let canister of Object.values(this.canisters)) {
|
|
@@ -238,11 +266,11 @@ export class Replica {
|
|
|
238
266
|
}
|
|
239
267
|
return null;
|
|
240
268
|
}
|
|
241
|
-
dfxJson(canisterName, wasmPath =
|
|
269
|
+
dfxJson(canisterName, wasmPath = "canister.wasm", didPath = "canister.did") {
|
|
242
270
|
let canisters = {};
|
|
243
271
|
if (canisterName) {
|
|
244
272
|
canisters[canisterName] = {
|
|
245
|
-
type:
|
|
273
|
+
type: "custom",
|
|
246
274
|
wasm: wasmPath,
|
|
247
275
|
candid: didPath,
|
|
248
276
|
};
|
|
@@ -253,13 +281,13 @@ export class Replica {
|
|
|
253
281
|
dfx: getDfxVersion(),
|
|
254
282
|
defaults: {
|
|
255
283
|
build: {
|
|
256
|
-
packtool:
|
|
284
|
+
packtool: "mops sources",
|
|
257
285
|
},
|
|
258
286
|
},
|
|
259
287
|
networks: {
|
|
260
288
|
local: {
|
|
261
|
-
type:
|
|
262
|
-
bind:
|
|
289
|
+
type: "ephemeral",
|
|
290
|
+
bind: "127.0.0.1:4945",
|
|
263
291
|
},
|
|
264
292
|
},
|
|
265
293
|
};
|
package/dist/commands/search.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import process from
|
|
2
|
-
import asTable from
|
|
3
|
-
import chalk from
|
|
4
|
-
import { mainActor } from
|
|
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
|
export async function search(text) {
|
|
6
6
|
let actor = await mainActor();
|
|
7
7
|
let [packages, _pageCount] = await actor.search(text, [], []);
|
|
8
8
|
if (!packages.length) {
|
|
9
|
-
console.log(
|
|
9
|
+
console.log("Packages not found");
|
|
10
10
|
return;
|
|
11
11
|
}
|
|
12
12
|
let ellipsis = (text, max) => {
|
|
@@ -14,23 +14,25 @@ export async function search(text) {
|
|
|
14
14
|
return text;
|
|
15
15
|
}
|
|
16
16
|
else {
|
|
17
|
-
return text.slice(0, max) +
|
|
17
|
+
return text.slice(0, max) + "…";
|
|
18
18
|
}
|
|
19
19
|
};
|
|
20
|
-
let maxNameLength = Math.max(...packages.map(a => a.config.name.length));
|
|
20
|
+
let maxNameLength = Math.max(...packages.map((a) => a.config.name.length));
|
|
21
21
|
let table = packages.map((item) => {
|
|
22
22
|
return {
|
|
23
23
|
NAME: chalk.bold(item.config.name),
|
|
24
24
|
DESCRIPTION: ellipsis(item.config.description, process.stdout.columns - 40 - maxNameLength),
|
|
25
25
|
VERSION: item.config.version,
|
|
26
|
-
UPDATED: new Date(Number(item.publication.time / 1000000n))
|
|
26
|
+
UPDATED: new Date(Number(item.publication.time / 1000000n))
|
|
27
|
+
.toISOString()
|
|
28
|
+
.split("T")[0],
|
|
27
29
|
};
|
|
28
30
|
});
|
|
29
|
-
console.log(
|
|
31
|
+
console.log("");
|
|
30
32
|
console.log(asTable.configure({
|
|
31
|
-
delimiter: chalk.gray(
|
|
32
|
-
dash: chalk.gray(
|
|
33
|
-
title: t => chalk.gray.bold(t),
|
|
33
|
+
delimiter: chalk.gray(" | "),
|
|
34
|
+
dash: chalk.gray("─"),
|
|
35
|
+
title: (t) => chalk.gray.bold(t),
|
|
34
36
|
})(table));
|
|
35
|
-
console.log(
|
|
37
|
+
console.log("");
|
|
36
38
|
}
|
package/dist/commands/self.js
CHANGED
|
@@ -1,63 +1,66 @@
|
|
|
1
|
-
import process from
|
|
2
|
-
import child_process, { execSync } from
|
|
3
|
-
import chalk from
|
|
4
|
-
import { version, globalConfigDir } from
|
|
5
|
-
import { cleanCache } from
|
|
6
|
-
import { toolchain } from
|
|
7
|
-
let url =
|
|
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
|
+
let url = "https://x344g-ziaaa-aaaap-abl7a-cai.icp0.io";
|
|
8
8
|
function detectPackageManager() {
|
|
9
|
-
let res =
|
|
9
|
+
let res = "";
|
|
10
10
|
try {
|
|
11
|
-
res = execSync(
|
|
11
|
+
res = execSync("which mops").toString();
|
|
12
12
|
}
|
|
13
13
|
catch (e) { }
|
|
14
14
|
if (!res) {
|
|
15
|
-
console.error(chalk.red(
|
|
15
|
+
console.error(chalk.red("Couldn't detect package manager"));
|
|
16
16
|
process.exit(1);
|
|
17
17
|
}
|
|
18
|
-
if (res.includes(
|
|
19
|
-
return
|
|
18
|
+
if (res.includes("pnpm/")) {
|
|
19
|
+
return "pnpm";
|
|
20
20
|
}
|
|
21
21
|
// else if (res.includes('bun/')) {
|
|
22
22
|
// return 'bun';
|
|
23
23
|
// }
|
|
24
24
|
else {
|
|
25
|
-
return
|
|
25
|
+
return "npm";
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
export async function getLatestVersion() {
|
|
29
|
-
let res = await fetch(url +
|
|
29
|
+
let res = await fetch(url + "/tags/latest");
|
|
30
30
|
return res.text();
|
|
31
31
|
}
|
|
32
32
|
export async function update() {
|
|
33
33
|
let latest = await getLatestVersion();
|
|
34
34
|
let current = version();
|
|
35
35
|
if (latest === current) {
|
|
36
|
-
console.log(chalk.green(
|
|
36
|
+
console.log(chalk.green("You are up to date. Version: " + current));
|
|
37
37
|
}
|
|
38
38
|
else {
|
|
39
|
-
console.log(
|
|
40
|
-
console.log(
|
|
39
|
+
console.log("Current version: " + chalk.yellow(current));
|
|
40
|
+
console.log("Updating to version: " + chalk.green(latest));
|
|
41
41
|
let pm = detectPackageManager();
|
|
42
|
-
let npmArgs = pm ===
|
|
43
|
-
let proc = child_process.spawn(pm, [
|
|
44
|
-
proc.on(
|
|
42
|
+
let npmArgs = pm === "npm" ? ["--no-fund", "--silent"] : [];
|
|
43
|
+
let proc = child_process.spawn(pm, ["add", "-g", ...npmArgs, `${url}/versions/${latest}.tgz`], { stdio: "inherit", detached: false });
|
|
44
|
+
proc.on("exit", (res) => {
|
|
45
45
|
if (res !== 0) {
|
|
46
|
-
console.log(chalk.red(
|
|
46
|
+
console.log(chalk.red("Failed to update."));
|
|
47
47
|
process.exit(1);
|
|
48
48
|
}
|
|
49
|
-
console.log(chalk.green(
|
|
49
|
+
console.log(chalk.green("Success"));
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
53
|
export async function uninstall() {
|
|
54
|
-
console.log(
|
|
54
|
+
console.log("Cleaning cache...");
|
|
55
55
|
cleanCache();
|
|
56
|
-
console.log(
|
|
56
|
+
console.log("Resetting toolchain management...");
|
|
57
57
|
toolchain.init({ reset: true, silent: true });
|
|
58
|
-
console.log(
|
|
58
|
+
console.log("Uninstalling mops CLI...");
|
|
59
59
|
let pm = detectPackageManager();
|
|
60
|
-
child_process.spawn(pm, [
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
child_process.spawn(pm, ["remove", "-g", "--silent", "ic-mops"], {
|
|
61
|
+
stdio: "inherit",
|
|
62
|
+
detached: false,
|
|
63
|
+
});
|
|
64
|
+
console.log(chalk.yellow("Config directory has not been deleted: " + globalConfigDir));
|
|
65
|
+
console.log("Uninstalled");
|
|
63
66
|
}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
export declare function
|
|
1
|
+
export declare function sourcesArgs({ conflicts, cwd, }?: {
|
|
2
|
+
conflicts?: "ignore" | "error" | "warning" | undefined;
|
|
3
|
+
cwd?: string | undefined;
|
|
4
|
+
}): Promise<string[][]>;
|
|
5
|
+
export declare function sources({ conflicts, cwd, }?: {
|
|
2
6
|
conflicts?: "ignore" | "error" | "warning" | undefined;
|
|
3
7
|
cwd?: string | undefined;
|
|
4
8
|
}): Promise<string[]>;
|
package/dist/commands/sources.js
CHANGED
|
@@ -1,24 +1,25 @@
|
|
|
1
|
-
import process from
|
|
2
|
-
import path from
|
|
3
|
-
import fs from
|
|
4
|
-
import { checkConfigFile, formatDir, formatGithubDir, getDependencyType, readConfig } from
|
|
5
|
-
import { resolvePackages } from
|
|
6
|
-
export async function
|
|
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
|
+
export async function sourcesArgs({ conflicts = "ignore", cwd = process.cwd(), } = {}) {
|
|
7
7
|
if (!checkConfigFile()) {
|
|
8
8
|
return [];
|
|
9
9
|
}
|
|
10
10
|
let resolvedPackages = await resolvePackages({ conflicts });
|
|
11
11
|
// sources
|
|
12
|
-
return Object.entries(resolvedPackages)
|
|
12
|
+
return Object.entries(resolvedPackages)
|
|
13
|
+
.map(([name, version]) => {
|
|
13
14
|
let depType = getDependencyType(version);
|
|
14
15
|
let pkgDir;
|
|
15
|
-
if (depType ===
|
|
16
|
+
if (depType === "local") {
|
|
16
17
|
pkgDir = path.relative(cwd, version);
|
|
17
18
|
}
|
|
18
|
-
else if (depType ===
|
|
19
|
+
else if (depType === "github") {
|
|
19
20
|
pkgDir = path.relative(cwd, formatGithubDir(name, version));
|
|
20
21
|
}
|
|
21
|
-
else if (depType ===
|
|
22
|
+
else if (depType === "mops") {
|
|
22
23
|
pkgDir = path.relative(cwd, formatDir(name, version));
|
|
23
24
|
}
|
|
24
25
|
else {
|
|
@@ -26,17 +27,22 @@ export async function sources({ conflicts = 'ignore', cwd = process.cwd() } = {}
|
|
|
26
27
|
}
|
|
27
28
|
// append baseDir
|
|
28
29
|
let pkgBaseDir;
|
|
29
|
-
if (fs.existsSync(path.join(pkgDir,
|
|
30
|
-
let config = readConfig(path.join(pkgDir,
|
|
31
|
-
pkgBaseDir = path.join(pkgDir, config.package?.baseDir ||
|
|
30
|
+
if (fs.existsSync(path.join(pkgDir, "mops.toml"))) {
|
|
31
|
+
let config = readConfig(path.join(pkgDir, "mops.toml"));
|
|
32
|
+
pkgBaseDir = path.join(pkgDir, config.package?.baseDir || "src");
|
|
32
33
|
}
|
|
33
34
|
else {
|
|
34
|
-
pkgBaseDir = path.join(pkgDir,
|
|
35
|
+
pkgBaseDir = path.join(pkgDir, "src");
|
|
35
36
|
}
|
|
36
37
|
// use pkgDir if baseDir doesn't exist for local packages
|
|
37
|
-
if (depType ===
|
|
38
|
+
if (depType === "local" &&
|
|
39
|
+
!fs.existsSync(path.resolve(cwd, pkgBaseDir))) {
|
|
38
40
|
pkgBaseDir = pkgDir;
|
|
39
41
|
}
|
|
40
|
-
return
|
|
41
|
-
})
|
|
42
|
+
return ["--package", name, pkgBaseDir];
|
|
43
|
+
})
|
|
44
|
+
.filter((x) => x != null);
|
|
45
|
+
}
|
|
46
|
+
export async function sources({ conflicts = "ignore", cwd = process.cwd(), } = {}) {
|
|
47
|
+
return (await sourcesArgs({ conflicts, cwd })).map((args) => args.join(" "));
|
|
42
48
|
}
|
package/dist/commands/sync.d.ts
CHANGED
package/dist/commands/sync.js
CHANGED
|
@@ -1,54 +1,61 @@
|
|
|
1
|
-
import path from
|
|
2
|
-
import { execSync } from
|
|
3
|
-
import { globSync } from
|
|
4
|
-
import chalk from
|
|
5
|
-
import { checkConfigFile, getRootDir, readConfig } from
|
|
6
|
-
import { add } from
|
|
7
|
-
import { remove } from
|
|
8
|
-
import { checkIntegrity } from
|
|
9
|
-
import { getMocPath } from
|
|
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
|
export async function sync({ lock } = {}) {
|
|
11
11
|
if (!checkConfigFile()) {
|
|
12
12
|
return;
|
|
13
13
|
}
|
|
14
14
|
let missing = await getMissingPackages();
|
|
15
15
|
let unused = await getUnusedPackages();
|
|
16
|
-
missing.length &&
|
|
17
|
-
|
|
16
|
+
missing.length &&
|
|
17
|
+
console.log(`${chalk.yellow("Missing packages:")} ${missing.join(", ")}`);
|
|
18
|
+
unused.length &&
|
|
19
|
+
console.log(`${chalk.yellow("Unused packages:")} ${unused.join(", ")}`);
|
|
18
20
|
let config = readConfig();
|
|
19
21
|
let deps = new Set(Object.keys(config.dependencies || {}));
|
|
20
|
-
let devDeps = new Set(Object.keys(config[
|
|
22
|
+
let devDeps = new Set(Object.keys(config["dev-dependencies"] || {}));
|
|
21
23
|
// add missing packages
|
|
22
24
|
for (let pkg of missing) {
|
|
23
|
-
await add(pkg, { lock:
|
|
25
|
+
await add(pkg, { lock: "ignore" });
|
|
24
26
|
}
|
|
25
27
|
// remove unused packages
|
|
26
28
|
for (let pkg of unused) {
|
|
27
29
|
let dev = devDeps.has(pkg) && !deps.has(pkg);
|
|
28
|
-
await remove(pkg, { dev, lock:
|
|
30
|
+
await remove(pkg, { dev, lock: "ignore" });
|
|
29
31
|
}
|
|
30
32
|
await checkIntegrity(lock);
|
|
31
33
|
}
|
|
32
34
|
let ignore = [
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
"**/node_modules/**",
|
|
36
|
+
"**/.vessel/**",
|
|
37
|
+
"**/.git/**",
|
|
38
|
+
"**/.mops/**",
|
|
37
39
|
];
|
|
38
40
|
async function getUsedPackages() {
|
|
39
41
|
let rootDir = getRootDir();
|
|
40
42
|
let mocPath = getMocPath();
|
|
41
|
-
let files = globSync(
|
|
43
|
+
let files = globSync("**/*.mo", {
|
|
42
44
|
cwd: rootDir,
|
|
43
45
|
nocase: true,
|
|
44
46
|
ignore: ignore,
|
|
45
47
|
});
|
|
46
|
-
let packages = new Set;
|
|
48
|
+
let packages = new Set();
|
|
47
49
|
for (let file of files) {
|
|
48
|
-
let deps = execSync(`${mocPath} --print-deps ${path.join(rootDir, file)}`)
|
|
50
|
+
let deps = execSync(`${mocPath} --print-deps ${path.join(rootDir, file)}`)
|
|
51
|
+
.toString()
|
|
52
|
+
.trim()
|
|
53
|
+
.split("\n");
|
|
49
54
|
for (let dep of deps) {
|
|
50
|
-
if (dep.startsWith(
|
|
51
|
-
|
|
55
|
+
if (dep.startsWith("mo:") &&
|
|
56
|
+
!dep.startsWith("mo:prim") &&
|
|
57
|
+
!dep.startsWith("mo:⛔")) {
|
|
58
|
+
packages.add(dep.replace(/^mo:([^/]+).*$/, "$1"));
|
|
52
59
|
}
|
|
53
60
|
}
|
|
54
61
|
}
|
|
@@ -56,7 +63,10 @@ async function getUsedPackages() {
|
|
|
56
63
|
}
|
|
57
64
|
async function getMissingPackages() {
|
|
58
65
|
let config = readConfig();
|
|
59
|
-
let allDeps = [
|
|
66
|
+
let allDeps = [
|
|
67
|
+
...Object.keys(config.dependencies || {}),
|
|
68
|
+
...Object.keys(config["dev-dependencies"] || {}),
|
|
69
|
+
];
|
|
60
70
|
let missing = new Set(await getUsedPackages());
|
|
61
71
|
for (let pkg of allDeps) {
|
|
62
72
|
missing.delete(pkg);
|
|
@@ -65,7 +75,10 @@ async function getMissingPackages() {
|
|
|
65
75
|
}
|
|
66
76
|
async function getUnusedPackages() {
|
|
67
77
|
let config = readConfig();
|
|
68
|
-
let allDeps = new Set([
|
|
78
|
+
let allDeps = new Set([
|
|
79
|
+
...Object.keys(config.dependencies || {}),
|
|
80
|
+
...Object.keys(config["dev-dependencies"] || {}),
|
|
81
|
+
]);
|
|
69
82
|
let used = await getUsedPackages();
|
|
70
83
|
for (let pkg of used) {
|
|
71
84
|
allDeps.delete(pkg);
|