ic-mops 0.40.0 → 0.41.1

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 (193) hide show
  1. package/.DS_Store +0 -0
  2. package/.npmrc +2 -1
  3. package/CHANGELOG.md +8 -0
  4. package/DEVELOPMENT.md +25 -0
  5. package/bundle/bench/bench-canister.mo +87 -0
  6. package/bundle/bench/user-bench.mo +14 -0
  7. package/bundle/bin/moc-wrapper.sh +3 -0
  8. package/bundle/bin/mops.js +3 -0
  9. package/bundle/cli.js +88 -0
  10. package/bundle/cli.tgz +0 -0
  11. package/bundle/declarations/bench/bench.did +26 -0
  12. package/bundle/declarations/bench/bench.did.d.ts +29 -0
  13. package/bundle/declarations/bench/bench.did.js +26 -0
  14. package/bundle/declarations/bench/index.d.ts +50 -0
  15. package/bundle/declarations/bench/index.js +40 -0
  16. package/bundle/declarations/main/index.d.ts +50 -0
  17. package/bundle/declarations/main/index.js +40 -0
  18. package/bundle/declarations/main/main.did +433 -0
  19. package/bundle/declarations/main/main.did.d.ts +355 -0
  20. package/bundle/declarations/main/main.did.js +407 -0
  21. package/bundle/declarations/storage/index.d.ts +50 -0
  22. package/bundle/declarations/storage/index.js +30 -0
  23. package/bundle/declarations/storage/storage.did +46 -0
  24. package/bundle/declarations/storage/storage.did.d.ts +37 -0
  25. package/bundle/declarations/storage/storage.did.js +38 -0
  26. package/bundle/package.json +31 -0
  27. package/bundle/templates/README.md +13 -0
  28. package/bundle/templates/licenses/Apache-2.0 +202 -0
  29. package/bundle/templates/licenses/Apache-2.0-NOTICE +13 -0
  30. package/bundle/templates/licenses/MIT +21 -0
  31. package/bundle/templates/mops-publish.yml +17 -0
  32. package/bundle/templates/mops-test.yml +22 -0
  33. package/bundle/templates/src/lib.mo +15 -0
  34. package/bundle/templates/test/lib.test.mo +4 -0
  35. package/bundle-package-json.ts +17 -0
  36. package/check-requirements.ts +50 -0
  37. package/cli.ts +22 -19
  38. package/commands/add.ts +4 -0
  39. package/commands/install-all.ts +2 -0
  40. package/commands/publish.ts +18 -30
  41. package/commands/self.ts +75 -0
  42. package/commands/template.ts +9 -10
  43. package/commands/toolchain/index.ts +7 -0
  44. package/declarations/bench/bench.did.d.ts +1 -1
  45. package/declarations/bench/index.js +1 -2
  46. package/declarations/main/index.js +1 -2
  47. package/declarations/main/main.did +15 -8
  48. package/declarations/main/main.did.d.ts +12 -9
  49. package/declarations/main/main.did.js +11 -8
  50. package/dist/api/actors.d.ts +0 -0
  51. package/dist/api/actors.js +0 -0
  52. package/dist/api/downloadPackageFiles.d.ts +0 -0
  53. package/dist/api/downloadPackageFiles.js +0 -0
  54. package/dist/api/getHighestVersion.d.ts +0 -0
  55. package/dist/api/getHighestVersion.js +0 -0
  56. package/dist/api/index.d.ts +0 -0
  57. package/dist/api/index.js +0 -0
  58. package/dist/api/network.d.ts +0 -0
  59. package/dist/api/network.js +0 -0
  60. package/dist/api/resolveVersion.d.ts +0 -0
  61. package/dist/api/resolveVersion.js +0 -0
  62. package/dist/bin/mops.d.ts +1 -1
  63. package/dist/bin/mops.js +2 -1
  64. package/dist/bundle-package-json.d.ts +0 -0
  65. package/dist/bundle-package-json.js +2 -0
  66. package/dist/cache.d.ts +0 -0
  67. package/dist/cache.js +0 -0
  68. package/dist/check-requirements.d.ts +3 -0
  69. package/dist/check-requirements.js +44 -0
  70. package/dist/cli.d.ts +0 -0
  71. package/dist/cli.js +18 -18
  72. package/dist/commands/add.d.ts +0 -0
  73. package/dist/commands/add.js +2 -0
  74. package/dist/commands/available-updates.d.ts +0 -0
  75. package/dist/commands/available-updates.js +0 -0
  76. package/dist/commands/bench-replica.d.ts +0 -0
  77. package/dist/commands/bench-replica.js +0 -0
  78. package/dist/commands/bench.d.ts +0 -0
  79. package/dist/commands/bench.js +0 -0
  80. package/dist/commands/bump.d.ts +0 -0
  81. package/dist/commands/bump.js +0 -0
  82. package/dist/commands/docs.d.ts +0 -0
  83. package/dist/commands/docs.js +0 -0
  84. package/dist/commands/import-identity.d.ts +0 -0
  85. package/dist/commands/import-identity.js +0 -0
  86. package/dist/commands/init.d.ts +0 -0
  87. package/dist/commands/init.js +0 -0
  88. package/dist/commands/install-all.d.ts +0 -0
  89. package/dist/commands/install-all.js +2 -0
  90. package/dist/commands/install-local.d.ts +0 -0
  91. package/dist/commands/install-local.js +0 -0
  92. package/dist/commands/install.d.ts +0 -0
  93. package/dist/commands/install.js +0 -0
  94. package/dist/commands/outdated.d.ts +0 -0
  95. package/dist/commands/outdated.js +0 -0
  96. package/dist/commands/publish.d.ts +0 -0
  97. package/dist/commands/publish.js +14 -25
  98. package/dist/commands/remove.d.ts +0 -0
  99. package/dist/commands/remove.js +0 -0
  100. package/dist/commands/search.d.ts +0 -0
  101. package/dist/commands/search.js +0 -0
  102. package/dist/commands/self.js +1 -1
  103. package/dist/commands/sources.d.ts +0 -0
  104. package/dist/commands/sources.js +0 -0
  105. package/dist/commands/sync.d.ts +0 -0
  106. package/dist/commands/sync.js +0 -0
  107. package/dist/commands/template.d.ts +0 -0
  108. package/dist/commands/template.js +9 -10
  109. package/dist/commands/test/mmf1.d.ts +0 -0
  110. package/dist/commands/test/mmf1.js +0 -0
  111. package/dist/commands/test/reporters/compact-reporter.d.ts +0 -0
  112. package/dist/commands/test/reporters/compact-reporter.js +0 -0
  113. package/dist/commands/test/reporters/files-reporter.d.ts +0 -0
  114. package/dist/commands/test/reporters/files-reporter.js +0 -0
  115. package/dist/commands/test/reporters/reporter.d.ts +0 -0
  116. package/dist/commands/test/reporters/reporter.js +0 -0
  117. package/dist/commands/test/reporters/silent-reporter.d.ts +0 -0
  118. package/dist/commands/test/reporters/silent-reporter.js +0 -0
  119. package/dist/commands/test/reporters/verbose-reporter.d.ts +0 -0
  120. package/dist/commands/test/reporters/verbose-reporter.js +0 -0
  121. package/dist/commands/test/test.d.ts +0 -0
  122. package/dist/commands/test/test.js +0 -0
  123. package/dist/commands/test/utils.d.ts +0 -0
  124. package/dist/commands/test/utils.js +0 -0
  125. package/dist/commands/toolchain/index.d.ts +0 -0
  126. package/dist/commands/toolchain/index.js +5 -0
  127. package/dist/commands/toolchain/moc.d.ts +0 -0
  128. package/dist/commands/toolchain/moc.js +0 -0
  129. package/dist/commands/toolchain/pocket-ic.d.ts +0 -0
  130. package/dist/commands/toolchain/pocket-ic.js +0 -0
  131. package/dist/commands/toolchain/toolchain-utils.d.ts +0 -0
  132. package/dist/commands/toolchain/toolchain-utils.js +0 -0
  133. package/dist/commands/toolchain/wasmtime.d.ts +0 -0
  134. package/dist/commands/toolchain/wasmtime.js +0 -0
  135. package/dist/commands/transfer-ownership.d.ts +0 -0
  136. package/dist/commands/transfer-ownership.js +0 -0
  137. package/dist/commands/update.d.ts +0 -0
  138. package/dist/commands/update.js +0 -0
  139. package/dist/commands/user.d.ts +0 -0
  140. package/dist/commands/user.js +0 -0
  141. package/dist/commands/whoami.d.ts +0 -0
  142. package/dist/commands/whoami.js +0 -0
  143. package/dist/declarations/bench/bench.did +0 -0
  144. package/dist/declarations/bench/bench.did.d.ts +1 -1
  145. package/dist/declarations/bench/bench.did.js +0 -0
  146. package/dist/declarations/bench/index.d.ts +0 -0
  147. package/dist/declarations/bench/index.js +1 -2
  148. package/dist/declarations/main/index.d.ts +0 -0
  149. package/dist/declarations/main/index.js +1 -2
  150. package/dist/declarations/main/main.did +15 -8
  151. package/dist/declarations/main/main.did.d.ts +12 -9
  152. package/dist/declarations/main/main.did.js +11 -8
  153. package/dist/helpers/find-changelog-entry.d.ts +0 -0
  154. package/dist/helpers/find-changelog-entry.js +0 -0
  155. package/dist/helpers/get-dfx-version.d.ts +0 -0
  156. package/dist/helpers/get-dfx-version.js +0 -0
  157. package/dist/helpers/get-moc-path.d.ts +0 -0
  158. package/dist/helpers/get-moc-path.js +0 -0
  159. package/dist/helpers/get-moc-version.d.ts +0 -0
  160. package/dist/helpers/get-moc-version.js +0 -0
  161. package/dist/integrity.d.ts +0 -0
  162. package/dist/integrity.js +0 -0
  163. package/dist/mops.d.ts +1 -0
  164. package/dist/mops.js +12 -1
  165. package/dist/notify-installs.d.ts +0 -0
  166. package/dist/notify-installs.js +0 -0
  167. package/dist/package.json +18 -24
  168. package/dist/parallel.d.ts +0 -0
  169. package/dist/parallel.js +0 -0
  170. package/dist/pem.d.ts +0 -0
  171. package/dist/pem.js +0 -0
  172. package/dist/release-cli.d.ts +0 -0
  173. package/dist/release-cli.js +13 -7
  174. package/dist/resolve-packages.d.ts +0 -0
  175. package/dist/resolve-packages.js +0 -0
  176. package/dist/templates.d.ts +1 -0
  177. package/dist/templates.js +4 -0
  178. package/dist/types.d.ts +4 -0
  179. package/dist/types.js +0 -0
  180. package/dist/vessel.d.ts +0 -0
  181. package/dist/vessel.js +0 -0
  182. package/helpers/find-changelog-entry.ts +27 -0
  183. package/mops.ts +15 -1
  184. package/package.json +26 -17
  185. package/release-cli.ts +67 -0
  186. package/remove-scripts.ts +6 -0
  187. package/templates.ts +5 -0
  188. package/tsconfig.json +1 -1
  189. package/types.ts +7 -2
  190. package/commands/self-update.ts +0 -6
  191. package/dist/commands/self-update.d.ts +0 -3
  192. package/dist/commands/self-update.js +0 -5
  193. /package/bin/{mops.ts → mops.js} +0 -0
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/dist/integrity.js CHANGED
File without changes
package/dist/mops.d.ts CHANGED
@@ -27,4 +27,5 @@ export declare function formatDir(name: string, version: string): string;
27
27
  export declare function formatGithubDir(name: string, repo: string): string;
28
28
  export declare function readDfxJson(): any;
29
29
  export declare function checkApiCompatibility(): Promise<boolean>;
30
+ export declare function version(): any;
30
31
  export { getNetwork, mainActor, storageActor, getHighestVersion, };
package/dist/mops.js CHANGED
@@ -179,7 +179,14 @@ export function readConfig(configFile = getClosestConfigFile()) {
179
179
  };
180
180
  processDeps(toml.dependencies || {});
181
181
  processDeps(toml['dev-dependencies'] || {});
182
- return toml;
182
+ let config = { ...toml };
183
+ Object.entries(config.requirements || {}).forEach(([name, value]) => {
184
+ if (name === 'moc') {
185
+ config.requirements = config.requirements || {};
186
+ config.requirements.moc = value;
187
+ }
188
+ });
189
+ return config;
183
190
  }
184
191
  export function writeConfig(config, configFile = getClosestConfigFile()) {
185
192
  let resConfig = JSON.parse(JSON.stringify(config));
@@ -235,5 +242,9 @@ export async function checkApiCompatibility() {
235
242
  }
236
243
  return true;
237
244
  }
245
+ export function version() {
246
+ let packageJson = JSON.parse(fs.readFileSync(new URL('./package.json', import.meta.url)).toString());
247
+ return packageJson.version;
248
+ }
238
249
  // compatibility with older versions
239
250
  export { getNetwork, mainActor, storageActor, getHighestVersion, };
File without changes
File without changes
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ic-mops",
3
- "version": "0.40.0",
3
+ "version": "0.41.1",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "mops": "dist/bin/mops.js",
@@ -23,16 +23,6 @@
23
23
  "engines": {
24
24
  "node": ">=18.0.0"
25
25
  },
26
- "scripts": {
27
- "build": "tsc",
28
- "bundle": "esbuild --bundle --outfile=cli.js --platform=node --packages=external --target=node16 --format=esm ./dist/cli.js",
29
- "copy": "cp -r commands/bench dist/commands && cp -r declarations templates network.txt package.json dist | true",
30
- "save-network": "cp -r dist/network.txt . | true",
31
- "prepare": "npm run save-network && npm run build && npm run copy",
32
- "check": "tsc --project tsconfig.json --noEmit",
33
- "tsc": "tsc",
34
- "esbuild": "esbuild"
35
- },
36
26
  "dependencies": {
37
27
  "@dfinity/agent": "^0.19.3",
38
28
  "@dfinity/candid": "^0.19.3",
@@ -42,18 +32,19 @@
42
32
  "@iarna/toml": "^2.2.5",
43
33
  "@noble/hashes": "1.3.2",
44
34
  "as-table": "^1.0.55",
35
+ "buffer": "6.0.3",
45
36
  "cacheable-request": "10.2.12",
46
37
  "camelcase": "^7.0.1",
47
38
  "chalk": "^5.3.0",
48
- "chokidar": "^3.5.3",
49
- "commander": "11.1.0",
39
+ "chokidar": "3.6.0",
40
+ "commander": "12.0.0",
50
41
  "debounce": "^1.2.1",
51
42
  "decomp-tarxz": "0.1.1",
52
43
  "decompress": "^4.2.1",
53
- "del": "^7.0.0",
44
+ "del": "7.1.0",
54
45
  "dhall-to-json-cli": "^1.7.6",
55
- "eslint": "^8.45.0",
56
- "execa": "7.1.1",
46
+ "eslint": "8.57.0",
47
+ "execa": "8.0.1",
57
48
  "fs-extra": "11.2.0",
58
49
  "get-folder-size": "^4.0.0",
59
50
  "glob": "^10.3.3",
@@ -70,24 +61,27 @@
70
61
  "pem-file": "^1.0.1",
71
62
  "pic-ic": "0.3.2",
72
63
  "prompts": "^2.4.2",
64
+ "semver": "7.6.0",
73
65
  "stream-to-promise": "^3.0.0",
74
- "string-width": "7.0.0",
75
- "tar": "^6.1.15"
66
+ "string-width": "7.1.0",
67
+ "tar": "6.2.0"
76
68
  },
77
69
  "devDependencies": {
78
- "@tsconfig/strictest": "^2.0.1",
70
+ "@tsconfig/strictest": "2.0.2",
79
71
  "@types/debounce": "^1.2.1",
80
72
  "@types/decompress": "^4.2.4",
81
73
  "@types/fs-extra": "11.0.4",
82
74
  "@types/glob": "^8.1.0",
83
75
  "@types/ncp": "^2.0.5",
84
- "@types/node": "^20.4.4",
76
+ "@types/node": "20.11.24",
85
77
  "@types/prompts": "^2.4.4",
78
+ "@types/semver": "7.5.8",
86
79
  "@types/stream-to-promise": "^2.2.1",
87
80
  "@types/tar": "^6.1.5",
88
- "esbuild": "^0.18.16",
89
- "tsx": "4.6.2",
90
- "typescript": "^5.1.6"
81
+ "bun": "1.0.35",
82
+ "esbuild": "0.20.1",
83
+ "tsx": "4.7.1",
84
+ "typescript": "5.3.2"
91
85
  },
92
86
  "overrides": {
93
87
  "@dfinity/agent": "^0.19.3",
@@ -95,4 +89,4 @@
95
89
  "@dfinity/principal": "^0.19.3",
96
90
  "@dfinity/candid": "^0.19.3"
97
91
  }
98
- }
92
+ }
File without changes
package/dist/parallel.js CHANGED
File without changes
package/dist/pem.d.ts CHANGED
File without changes
package/dist/pem.js CHANGED
File without changes
File without changes
@@ -10,16 +10,20 @@ import { findChangelogEntry } from './helpers/find-changelog-entry.js';
10
10
  let __dirname = new URL('.', import.meta.url).pathname;
11
11
  execSync('npm run prepare', { stdio: 'inherit', cwd: __dirname });
12
12
  execSync('npm run bundle', { stdio: 'inherit', cwd: __dirname });
13
+ // fix package.json paths
14
+ // let packageJson = fs.readFileSync(path.resolve(__dirname, 'bundle/package.json'), 'utf8');
15
+ // packageJson = packageJson.replaceAll('dist/', '');
16
+ // fs.writeFileSync(path.resolve(__dirname, 'bundle/package.json'), packageJson);
13
17
  let version = JSON.parse(fs.readFileSync(path.resolve(__dirname, 'package.json'), 'utf8')).version;
14
18
  let major = semver.parse(version)?.major;
15
19
  let tag = semver.parse(version)?.prerelease[0] || 'latest';
16
20
  let releaseNotes = findChangelogEntry(fs.readFileSync(path.resolve(__dirname, 'CHANGELOG.md'), 'utf8'), version);
17
- let hash = bytesToHex(sha256(fs.readFileSync(path.resolve(__dirname, 'bundle/cli.tgz'))));
18
- fs.cpSync(path.resolve(__dirname, 'bundle/cli.tgz'), path.resolve(__dirname, `../cli-releases/versions/${version}/cli.tgz`), { force: false, errorOnExist: true });
19
- fs.writeFileSync(path.resolve(__dirname, `../cli-releases/versions/${version}/RELEASE_NOTES.md`), releaseNotes);
20
- fs.writeFileSync(path.resolve(__dirname, `../cli-releases/versions/${version}/cli.tgz.sha256`), hash);
21
- fs.cpSync(path.resolve(__dirname, `../cli-releases/versions/${version}`), path.resolve(__dirname, `../cli-releases/versions/${tag}`), { force: true, errorOnExist: false, recursive: true });
22
- fs.cpSync(path.resolve(__dirname, `../cli-releases/versions/${version}`), path.resolve(__dirname, `../cli-releases/versions/${major}`), { force: true, errorOnExist: false, recursive: true });
21
+ let data = fs.readFileSync(path.resolve(__dirname, 'bundle/cli.tgz'));
22
+ let hash = bytesToHex(sha256(data));
23
+ let size = data.byteLength;
24
+ fs.cpSync(path.resolve(__dirname, 'bundle/cli.tgz'), path.resolve(__dirname, `../cli-releases/versions/${version}.tgz`), { force: false, errorOnExist: true });
25
+ fs.cpSync(path.resolve(__dirname, `../cli-releases/versions/${version}.tgz`), path.resolve(__dirname, `../cli-releases/versions/${tag}.tgz`), { force: true, errorOnExist: false, recursive: true });
26
+ fs.cpSync(path.resolve(__dirname, `../cli-releases/versions/${version}.tgz`), path.resolve(__dirname, `../cli-releases/versions/${major}.tgz`), { force: true, errorOnExist: false, recursive: true });
23
27
  fs.writeFileSync(path.resolve(__dirname, `../cli-releases/tags/${tag}`), version);
24
28
  console.log(`Release '${version}' created with tag '${tag}'`);
25
29
  if (!fs.existsSync(path.resolve(__dirname, '../cli-releases/releases.json'))) {
@@ -28,8 +32,10 @@ if (!fs.existsSync(path.resolve(__dirname, '../cli-releases/releases.json'))) {
28
32
  let releases = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../cli-releases/releases.json'), 'utf8'));
29
33
  releases.tags[tag] = version;
30
34
  releases.versions[version] = {
35
+ time: new Date().getTime(),
36
+ size,
31
37
  relseaseNotes: releaseNotes,
38
+ url: `https://cli.mops.one/versions/${version}.tgz`,
32
39
  hash,
33
- url: `https://cli.mops.one/versions/${version}/cli.tgz`,
34
40
  };
35
41
  fs.writeFileSync(path.resolve(__dirname, '../cli-releases/releases.json'), JSON.stringify(releases, null, 2));
File without changes
File without changes
@@ -0,0 +1 @@
1
+ export declare function copyTemplateFileSync(file: string, dest: string): void;
@@ -0,0 +1,4 @@
1
+ import fs from 'node:fs';
2
+ export function copyTemplateFileSync(file, dest) {
3
+ fs.copyFileSync(new URL(`./templates/${file}`, import.meta.url), dest);
4
+ }
package/dist/types.d.ts CHANGED
@@ -18,6 +18,7 @@ export type Config = {
18
18
  dependencies?: Dependencies;
19
19
  'dev-dependencies'?: Dependencies;
20
20
  toolchain?: Toolchain;
21
+ requirements?: Requirements;
21
22
  };
22
23
  export type Dependencies = Record<string, Dependency>;
23
24
  export type Dependency = {
@@ -32,3 +33,6 @@ export type Toolchain = {
32
33
  'pocket-ic'?: string;
33
34
  };
34
35
  export type Tool = 'moc' | 'wasmtime' | 'pocket-ic';
36
+ export type Requirements = {
37
+ moc?: string;
38
+ };
package/dist/types.js CHANGED
File without changes
package/dist/vessel.d.ts CHANGED
File without changes
package/dist/vessel.js CHANGED
File without changes
@@ -0,0 +1,27 @@
1
+ import {fromMarkdown} from 'mdast-util-from-markdown';
2
+ import {toMarkdown} from 'mdast-util-to-markdown';
3
+
4
+ export function findChangelogEntry(changelog : string, version : string) : string {
5
+ let tree = fromMarkdown(changelog);
6
+ let found = false;
7
+ let nodes = [];
8
+
9
+ for (let node of tree.children) {
10
+ if (found) {
11
+ if (node.type === 'heading') {
12
+ break;
13
+ }
14
+ else {
15
+ nodes.push(node);
16
+ }
17
+ }
18
+ else if (node.type === 'heading' && toMarkdown(node).match(new RegExp(`\\b${version}\\b`))) {
19
+ found = true;
20
+ }
21
+ }
22
+
23
+ return toMarkdown({
24
+ type: 'root',
25
+ children: nodes,
26
+ });
27
+ }
package/mops.ts CHANGED
@@ -206,7 +206,16 @@ export function readConfig(configFile = getClosestConfigFile()) : Config {
206
206
  processDeps(toml.dependencies || {});
207
207
  processDeps(toml['dev-dependencies'] || {});
208
208
 
209
- return toml;
209
+ let config : Config = {...toml};
210
+
211
+ Object.entries(config.requirements || {}).forEach(([name, value]) => {
212
+ if (name === 'moc') {
213
+ config.requirements = config.requirements || {};
214
+ config.requirements.moc = value;
215
+ }
216
+ });
217
+
218
+ return config;
210
219
  }
211
220
 
212
221
  export function writeConfig(config : Config, configFile = getClosestConfigFile()) {
@@ -271,6 +280,11 @@ export async function checkApiCompatibility() {
271
280
  return true;
272
281
  }
273
282
 
283
+ export function version() {
284
+ let packageJson = JSON.parse(fs.readFileSync(new URL('./package.json', import.meta.url)).toString());
285
+ return packageJson.version;
286
+ }
287
+
274
288
  // compatibility with older versions
275
289
  export {
276
290
  getNetwork,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ic-mops",
3
- "version": "0.40.0",
3
+ "version": "0.41.1",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "mops": "dist/bin/mops.js",
@@ -25,10 +25,15 @@
25
25
  },
26
26
  "scripts": {
27
27
  "build": "tsc",
28
- "bundle": "esbuild --bundle --outfile=cli.js --platform=node --packages=external --target=node16 --format=esm ./dist/cli.js",
29
- "copy": "cp -r commands/bench dist/commands && cp -r declarations templates network.txt package.json dist | true",
30
- "save-network": "cp -r dist/network.txt . | true",
31
- "prepare": "npm run save-network && npm run build && npm run copy",
28
+ "bundle": "rm -rf ./bundle && bun build ./cli.ts --outdir ./bundle --target node --minify --external @napi-rs/lzma --external fsevents --format esm --define '__dirname=import.meta.dirname' && npm run bundle:fix && npm run bundle:copy && npm run bundle:package-json && npm run bundle:tar",
29
+ "bundle:fix": "npx -y rexreplace 'new URL\\(\"\\.\\./templates' 'new URL(\"./templates' bundle/cli.js",
30
+ "bundle:copy": "cp -r commands/bench bundle && cp -r bin declarations templates package.json bundle",
31
+ "bundle:package-json": "tsx bundle-package-json.ts",
32
+ "bundle:tar": "tar -czvf bundle/cli.tgz bundle",
33
+ "copy": "cp -r commands/bench dist/commands && cp -r declarations templates package.json bin dist | true",
34
+ "prepare": "npm run build && npm run copy && npm run remove-scripts",
35
+ "remove-scripts": "tsx ./remove-scripts.ts",
36
+ "release": "tsx release-cli.ts",
32
37
  "check": "tsc --project tsconfig.json --noEmit",
33
38
  "tsc": "tsc",
34
39
  "esbuild": "esbuild"
@@ -42,18 +47,19 @@
42
47
  "@iarna/toml": "^2.2.5",
43
48
  "@noble/hashes": "1.3.2",
44
49
  "as-table": "^1.0.55",
50
+ "buffer": "6.0.3",
45
51
  "cacheable-request": "10.2.12",
46
52
  "camelcase": "^7.0.1",
47
53
  "chalk": "^5.3.0",
48
- "chokidar": "^3.5.3",
49
- "commander": "11.1.0",
54
+ "chokidar": "3.6.0",
55
+ "commander": "12.0.0",
50
56
  "debounce": "^1.2.1",
51
57
  "decomp-tarxz": "0.1.1",
52
58
  "decompress": "^4.2.1",
53
- "del": "^7.0.0",
59
+ "del": "7.1.0",
54
60
  "dhall-to-json-cli": "^1.7.6",
55
- "eslint": "^8.45.0",
56
- "execa": "7.1.1",
61
+ "eslint": "8.57.0",
62
+ "execa": "8.0.1",
57
63
  "fs-extra": "11.2.0",
58
64
  "get-folder-size": "^4.0.0",
59
65
  "glob": "^10.3.3",
@@ -70,24 +76,27 @@
70
76
  "pem-file": "^1.0.1",
71
77
  "pic-ic": "0.3.2",
72
78
  "prompts": "^2.4.2",
79
+ "semver": "7.6.0",
73
80
  "stream-to-promise": "^3.0.0",
74
- "string-width": "7.0.0",
75
- "tar": "^6.1.15"
81
+ "string-width": "7.1.0",
82
+ "tar": "6.2.0"
76
83
  },
77
84
  "devDependencies": {
78
- "@tsconfig/strictest": "^2.0.1",
85
+ "@tsconfig/strictest": "2.0.2",
79
86
  "@types/debounce": "^1.2.1",
80
87
  "@types/decompress": "^4.2.4",
81
88
  "@types/fs-extra": "11.0.4",
82
89
  "@types/glob": "^8.1.0",
83
90
  "@types/ncp": "^2.0.5",
84
- "@types/node": "^20.4.4",
91
+ "@types/node": "20.11.24",
85
92
  "@types/prompts": "^2.4.4",
93
+ "@types/semver": "7.5.8",
86
94
  "@types/stream-to-promise": "^2.2.1",
87
95
  "@types/tar": "^6.1.5",
88
- "esbuild": "^0.18.16",
89
- "tsx": "4.6.2",
90
- "typescript": "^5.1.6"
96
+ "bun": "1.0.35",
97
+ "esbuild": "0.20.1",
98
+ "tsx": "4.7.1",
99
+ "typescript": "5.3.2"
91
100
  },
92
101
  "overrides": {
93
102
  "@dfinity/agent": "^0.19.3",
package/release-cli.ts ADDED
@@ -0,0 +1,67 @@
1
+ /* eslint-disable no-undef */
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+ import {URL} from 'node:url';
5
+ import {execSync} from 'node:child_process';
6
+ import semver from 'semver';
7
+ import {sha256} from '@noble/hashes/sha256';
8
+ import {bytesToHex} from '@noble/hashes/utils';
9
+
10
+ import {findChangelogEntry} from './helpers/find-changelog-entry.js';
11
+
12
+ let __dirname = new URL('.', import.meta.url).pathname;
13
+
14
+ execSync('npm run prepare', {stdio: 'inherit', cwd: __dirname});
15
+ execSync('npm run bundle', {stdio: 'inherit', cwd: __dirname});
16
+
17
+ // fix package.json paths
18
+ // let packageJson = fs.readFileSync(path.resolve(__dirname, 'bundle/package.json'), 'utf8');
19
+ // packageJson = packageJson.replaceAll('dist/', '');
20
+ // fs.writeFileSync(path.resolve(__dirname, 'bundle/package.json'), packageJson);
21
+
22
+ let version = JSON.parse(fs.readFileSync(path.resolve(__dirname, 'package.json'), 'utf8')).version;
23
+ let major = semver.parse(version)?.major;
24
+ let tag = semver.parse(version)?.prerelease[0] || 'latest';
25
+ let releaseNotes = findChangelogEntry(fs.readFileSync(path.resolve(__dirname, 'CHANGELOG.md'), 'utf8'), version);
26
+ let data = fs.readFileSync(path.resolve(__dirname, 'bundle/cli.tgz'));
27
+ let hash = bytesToHex(sha256(data));
28
+ let size = data.byteLength;
29
+
30
+ fs.cpSync(path.resolve(__dirname, 'bundle/cli.tgz'), path.resolve(__dirname, `../cli-releases/versions/${version}.tgz`), {force: false, errorOnExist: true});
31
+
32
+ fs.cpSync(path.resolve(__dirname, `../cli-releases/versions/${version}.tgz`), path.resolve(__dirname, `../cli-releases/versions/${tag}.tgz`), {force: true, errorOnExist: false, recursive: true});
33
+ fs.cpSync(path.resolve(__dirname, `../cli-releases/versions/${version}.tgz`), path.resolve(__dirname, `../cli-releases/versions/${major}.tgz`), {force: true, errorOnExist: false, recursive: true});
34
+
35
+ fs.writeFileSync(path.resolve(__dirname, `../cli-releases/tags/${tag}`), version);
36
+
37
+ console.log(`Release '${version}' created with tag '${tag}'`);
38
+
39
+
40
+ // releases.json
41
+ type Releases = {
42
+ tags : Record<string, string>;
43
+ versions : Record<string, {
44
+ time : number;
45
+ size : number;
46
+ hash : string;
47
+ url : string;
48
+ relseaseNotes : string;
49
+ }>;
50
+ };
51
+
52
+ if (!fs.existsSync(path.resolve(__dirname, '../cli-releases/releases.json'))) {
53
+ fs.writeFileSync(path.resolve(__dirname, '../cli-releases/releases.json'), JSON.stringify({tags: {}, versions: {}}, null, 2));
54
+ }
55
+
56
+ let releases : Releases = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../cli-releases/releases.json'), 'utf8'));
57
+
58
+ releases.tags[tag] = version;
59
+ releases.versions[version] = {
60
+ time: new Date().getTime(),
61
+ size,
62
+ relseaseNotes: releaseNotes,
63
+ url: `https://cli.mops.one/versions/${version}.tgz`,
64
+ hash,
65
+ };
66
+
67
+ fs.writeFileSync(path.resolve(__dirname, '../cli-releases/releases.json'), JSON.stringify(releases, null, 2));
@@ -0,0 +1,6 @@
1
+ import {readFileSync, writeFileSync} from 'node:fs';
2
+
3
+ let text = readFileSync('dist/package.json', 'utf8');
4
+ let json = JSON.parse(text);
5
+ delete json.scripts;
6
+ writeFileSync('dist/package.json', JSON.stringify(json, null, 2));
package/templates.ts ADDED
@@ -0,0 +1,5 @@
1
+ import fs from 'node:fs';
2
+
3
+ export function copyTemplateFileSync(file : string, dest : string) {
4
+ fs.copyFileSync(new URL(`./templates/${file}`, import.meta.url), dest);
5
+ }
package/tsconfig.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "extends": ["@tsconfig/strictest/tsconfig.json"],
3
3
  "include": ["**/*.ts", "**/*.js"],
4
- "exclude": ["node_modules", "dist", "dist.js", "declarations/**/*.js"],
4
+ "exclude": ["node_modules", "dist", "bundle", "dist.js", "declarations/**/*.js"],
5
5
  "compilerOptions": {
6
6
  "types": ["node"],
7
7
  "target": "ES2021",
package/types.ts CHANGED
@@ -18,6 +18,7 @@ export type Config = {
18
18
  dependencies ?: Dependencies;
19
19
  'dev-dependencies' ?: Dependencies;
20
20
  toolchain ?: Toolchain;
21
+ requirements ?: Requirements;
21
22
  };
22
23
 
23
24
  export type Dependencies = Record<string, Dependency>;
@@ -27,7 +28,7 @@ export type Dependency = {
27
28
  version ?: string; // mops package
28
29
  repo ?: string; // github package
29
30
  path ?: string; // local package
30
- }
31
+ };
31
32
 
32
33
  export type Toolchain = {
33
34
  moc ?: string;
@@ -35,4 +36,8 @@ export type Toolchain = {
35
36
  'pocket-ic' ?: string;
36
37
  };
37
38
 
38
- export type Tool = 'moc' | 'wasmtime' | 'pocket-ic';
39
+ export type Tool = 'moc' | 'wasmtime' | 'pocket-ic';
40
+
41
+ export type Requirements = {
42
+ moc ?: string;
43
+ };
@@ -1,6 +0,0 @@
1
- import child_process from 'node:child_process';
2
-
3
- export function selfUpdate({detached = false} = {}) {
4
- console.log('Updating mops CLI...');
5
- child_process.spawn('npm', ['install', 'ic-mops', '-g'], {stdio: 'inherit', detached});
6
- }
@@ -1,3 +0,0 @@
1
- export declare function selfUpdate({ detached }?: {
2
- detached?: boolean | undefined;
3
- }): void;
@@ -1,5 +0,0 @@
1
- import child_process from 'node:child_process';
2
- export function selfUpdate({ detached = false } = {}) {
3
- console.log('Updating mops CLI...');
4
- child_process.spawn('npm', ['install', 'ic-mops', '-g'], { stdio: 'inherit', detached });
5
- }
File without changes