ic-mops 1.12.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. package/.DS_Store +0 -0
  2. package/.eslintrc.json +7 -7
  3. package/CHANGELOG.md +6 -0
  4. package/api/actors.ts +41 -37
  5. package/api/downloadPackageFiles.ts +75 -61
  6. package/api/getHighestVersion.ts +5 -5
  7. package/api/index.ts +4 -4
  8. package/api/network.ts +19 -21
  9. package/api/resolveVersion.ts +14 -11
  10. package/bin/mops.js +1 -1
  11. package/bundle/bench/bench-canister.mo +109 -101
  12. package/bundle/bench/user-bench.mo +6 -6
  13. package/bundle/bin/mops.js +1 -1
  14. package/bundle/cli.js +797 -792
  15. package/bundle/cli.tgz +0 -0
  16. package/bundle/package.json +6 -5
  17. package/bundle/templates/mops-publish.yml +3 -3
  18. package/bundle/templates/mops-test.yml +3 -3
  19. package/bundle/templates/src/lib.mo +13 -13
  20. package/bundle/templates/test/lib.test.mo +2 -2
  21. package/bundle-package-json.ts +8 -8
  22. package/cache.ts +80 -65
  23. package/check-requirements.ts +49 -45
  24. package/cli.ts +577 -376
  25. package/commands/add.ts +142 -129
  26. package/commands/available-updates.ts +55 -41
  27. package/commands/bench/bench-canister.mo +114 -108
  28. package/commands/bench/user-bench.mo +6 -6
  29. package/commands/bench-replica.ts +146 -118
  30. package/commands/bench.ts +563 -497
  31. package/commands/build.ts +177 -0
  32. package/commands/bump.ts +68 -57
  33. package/commands/check-candid.ts +24 -0
  34. package/commands/docs-coverage.ts +124 -102
  35. package/commands/docs.ts +118 -108
  36. package/commands/format.ts +171 -155
  37. package/commands/init.ts +301 -275
  38. package/commands/install/install-all.ts +75 -62
  39. package/commands/install/install-dep.ts +43 -28
  40. package/commands/install/install-deps.ts +23 -15
  41. package/commands/install/install-local-dep.ts +42 -34
  42. package/commands/install/install-mops-dep.ts +154 -123
  43. package/commands/install/sync-local-cache.ts +39 -35
  44. package/commands/maintainer.ts +109 -99
  45. package/commands/outdated.ts +30 -24
  46. package/commands/owner.ts +107 -99
  47. package/commands/publish.ts +534 -443
  48. package/commands/remove.ts +119 -89
  49. package/commands/replica.ts +391 -316
  50. package/commands/search.ts +42 -36
  51. package/commands/self.ts +63 -56
  52. package/commands/sources.ts +66 -49
  53. package/commands/sync.ts +92 -75
  54. package/commands/template.ts +145 -102
  55. package/commands/test/mmf1.ts +146 -119
  56. package/commands/test/reporters/compact-reporter.ts +87 -84
  57. package/commands/test/reporters/files-reporter.ts +56 -51
  58. package/commands/test/reporters/reporter.ts +12 -6
  59. package/commands/test/reporters/silent-reporter.ts +58 -59
  60. package/commands/test/reporters/verbose-reporter.ts +66 -54
  61. package/commands/test/test.ts +498 -401
  62. package/commands/test/utils.ts +72 -67
  63. package/commands/toolchain/index.ts +363 -322
  64. package/commands/toolchain/moc.ts +78 -50
  65. package/commands/toolchain/pocket-ic.ts +41 -34
  66. package/commands/toolchain/toolchain-utils.ts +92 -72
  67. package/commands/toolchain/wasmtime.ts +37 -34
  68. package/commands/update.ts +82 -64
  69. package/commands/user.ts +90 -81
  70. package/commands/watch/deployer.ts +188 -152
  71. package/commands/watch/error-checker.ts +90 -80
  72. package/commands/watch/formatter.ts +72 -60
  73. package/commands/watch/generator.ts +116 -96
  74. package/commands/watch/globMoFiles.ts +13 -13
  75. package/commands/watch/parseDfxJson.ts +63 -57
  76. package/commands/watch/tester.ts +83 -65
  77. package/commands/watch/warning-checker.ts +149 -136
  78. package/commands/watch/watch.ts +123 -95
  79. package/dist/api/actors.d.ts +4 -4
  80. package/dist/api/actors.js +8 -8
  81. package/dist/api/downloadPackageFiles.d.ts +2 -2
  82. package/dist/api/downloadPackageFiles.js +10 -10
  83. package/dist/api/getHighestVersion.js +1 -1
  84. package/dist/api/index.d.ts +4 -4
  85. package/dist/api/index.js +4 -4
  86. package/dist/api/network.js +9 -9
  87. package/dist/api/resolveVersion.js +3 -3
  88. package/dist/bin/mops.js +1 -1
  89. package/dist/bundle-package-json.js +8 -8
  90. package/dist/cache.js +22 -17
  91. package/dist/check-requirements.js +11 -11
  92. package/dist/cli.js +283 -186
  93. package/dist/commands/add.d.ts +1 -1
  94. package/dist/commands/add.js +40 -37
  95. package/dist/commands/available-updates.d.ts +1 -1
  96. package/dist/commands/available-updates.js +18 -12
  97. package/dist/commands/bench/bench-canister.mo +114 -108
  98. package/dist/commands/bench/user-bench.mo +6 -6
  99. package/dist/commands/bench-replica.d.ts +4 -4
  100. package/dist/commands/bench-replica.js +45 -34
  101. package/dist/commands/bench.d.ts +5 -5
  102. package/dist/commands/bench.js +134 -118
  103. package/dist/commands/build.d.ts +7 -0
  104. package/dist/commands/build.js +121 -0
  105. package/dist/commands/bump.js +27 -18
  106. package/dist/commands/check-candid.d.ts +4 -0
  107. package/dist/commands/check-candid.js +15 -0
  108. package/dist/commands/docs-coverage.d.ts +1 -1
  109. package/dist/commands/docs-coverage.js +45 -31
  110. package/dist/commands/docs.d.ts +1 -1
  111. package/dist/commands/docs.js +39 -38
  112. package/dist/commands/format.js +31 -27
  113. package/dist/commands/init.js +102 -92
  114. package/dist/commands/install/install-all.d.ts +2 -2
  115. package/dist/commands/install/install-all.js +23 -21
  116. package/dist/commands/install/install-dep.d.ts +1 -1
  117. package/dist/commands/install/install-dep.js +21 -8
  118. package/dist/commands/install/install-deps.d.ts +1 -1
  119. package/dist/commands/install/install-deps.js +1 -1
  120. package/dist/commands/install/install-local-dep.js +11 -9
  121. package/dist/commands/install/install-mops-dep.d.ts +1 -1
  122. package/dist/commands/install/install-mops-dep.js +32 -27
  123. package/dist/commands/install/sync-local-cache.js +10 -10
  124. package/dist/commands/maintainer.js +21 -21
  125. package/dist/commands/outdated.js +12 -8
  126. package/dist/commands/owner.js +21 -21
  127. package/dist/commands/publish.js +148 -128
  128. package/dist/commands/remove.d.ts +1 -1
  129. package/dist/commands/remove.js +42 -30
  130. package/dist/commands/replica.d.ts +7 -7
  131. package/dist/commands/replica.js +85 -57
  132. package/dist/commands/search.js +15 -13
  133. package/dist/commands/self.js +31 -28
  134. package/dist/commands/sources.d.ts +5 -1
  135. package/dist/commands/sources.js +23 -17
  136. package/dist/commands/sync.d.ts +1 -1
  137. package/dist/commands/sync.js +38 -25
  138. package/dist/commands/template.js +66 -56
  139. package/dist/commands/test/mmf1.d.ts +3 -3
  140. package/dist/commands/test/mmf1.js +33 -31
  141. package/dist/commands/test/reporters/compact-reporter.d.ts +3 -3
  142. package/dist/commands/test/reporters/compact-reporter.js +19 -15
  143. package/dist/commands/test/reporters/files-reporter.d.ts +3 -3
  144. package/dist/commands/test/reporters/files-reporter.js +18 -14
  145. package/dist/commands/test/reporters/reporter.d.ts +2 -2
  146. package/dist/commands/test/reporters/silent-reporter.d.ts +3 -3
  147. package/dist/commands/test/reporters/silent-reporter.js +4 -4
  148. package/dist/commands/test/reporters/verbose-reporter.d.ts +3 -3
  149. package/dist/commands/test/reporters/verbose-reporter.js +17 -13
  150. package/dist/commands/test/test.d.ts +4 -4
  151. package/dist/commands/test/test.js +134 -112
  152. package/dist/commands/test/utils.d.ts +3 -3
  153. package/dist/commands/test/utils.js +17 -17
  154. package/dist/commands/toolchain/index.d.ts +1 -1
  155. package/dist/commands/toolchain/index.js +81 -69
  156. package/dist/commands/toolchain/moc.d.ts +1 -1
  157. package/dist/commands/toolchain/moc.js +48 -24
  158. package/dist/commands/toolchain/pocket-ic.js +12 -12
  159. package/dist/commands/toolchain/toolchain-utils.d.ts +2 -0
  160. package/dist/commands/toolchain/toolchain-utils.js +32 -23
  161. package/dist/commands/toolchain/wasmtime.js +11 -11
  162. package/dist/commands/update.d.ts +1 -1
  163. package/dist/commands/update.js +18 -14
  164. package/dist/commands/user.js +31 -28
  165. package/dist/commands/watch/deployer.d.ts +4 -4
  166. package/dist/commands/watch/deployer.js +45 -36
  167. package/dist/commands/watch/error-checker.d.ts +2 -2
  168. package/dist/commands/watch/error-checker.js +27 -27
  169. package/dist/commands/watch/formatter.d.ts +4 -4
  170. package/dist/commands/watch/formatter.js +17 -17
  171. package/dist/commands/watch/generator.d.ts +3 -3
  172. package/dist/commands/watch/generator.js +28 -23
  173. package/dist/commands/watch/globMoFiles.js +8 -8
  174. package/dist/commands/watch/parseDfxJson.d.ts +2 -2
  175. package/dist/commands/watch/parseDfxJson.js +9 -9
  176. package/dist/commands/watch/tester.d.ts +4 -4
  177. package/dist/commands/watch/tester.js +23 -21
  178. package/dist/commands/watch/warning-checker.d.ts +3 -3
  179. package/dist/commands/watch/warning-checker.js +36 -36
  180. package/dist/commands/watch/watch.js +45 -32
  181. package/dist/environments/nodejs/cli.d.ts +1 -0
  182. package/dist/environments/nodejs/cli.js +4 -0
  183. package/dist/environments/web/cli.d.ts +1 -0
  184. package/dist/environments/web/cli.js +4 -0
  185. package/dist/error.d.ts +1 -0
  186. package/dist/error.js +5 -0
  187. package/dist/fix-dist.js +5 -5
  188. package/dist/helpers/find-changelog-entry.js +8 -5
  189. package/dist/helpers/get-dep-name.js +2 -2
  190. package/dist/helpers/get-dfx-version.js +4 -4
  191. package/dist/helpers/get-moc-path.js +8 -7
  192. package/dist/helpers/get-moc-version.js +10 -7
  193. package/dist/helpers/get-package-id.js +2 -2
  194. package/dist/helpers/is-candid-compatible.d.ts +1 -0
  195. package/dist/helpers/is-candid-compatible.js +20 -0
  196. package/dist/integrity.d.ts +1 -1
  197. package/dist/integrity.js +47 -38
  198. package/dist/jest.config.d.ts +11 -0
  199. package/dist/jest.config.js +14 -0
  200. package/dist/mops.d.ts +6 -6
  201. package/dist/mops.js +87 -80
  202. package/dist/notify-installs.js +4 -4
  203. package/dist/package.json +9 -5
  204. package/dist/pem.d.ts +3 -3
  205. package/dist/pem.js +20 -12
  206. package/dist/release-cli.js +20 -20
  207. package/dist/resolve-packages.d.ts +1 -1
  208. package/dist/resolve-packages.js +52 -36
  209. package/dist/templates/mops-publish.yml +3 -3
  210. package/dist/templates/mops-test.yml +3 -3
  211. package/dist/templates/src/lib.mo +13 -13
  212. package/dist/templates/test/lib.test.mo +2 -2
  213. package/dist/templates.js +1 -1
  214. package/dist/tests/cli.test.d.ts +1 -0
  215. package/dist/tests/cli.test.js +63 -0
  216. package/dist/types.d.ts +14 -4
  217. package/dist/vessel.d.ts +2 -2
  218. package/dist/vessel.js +41 -34
  219. package/dist/wasm/pkg/bundler/package.json +20 -0
  220. package/dist/wasm/pkg/bundler/wasm.d.ts +3 -0
  221. package/dist/wasm/pkg/bundler/wasm.js +5 -0
  222. package/dist/wasm/pkg/bundler/wasm_bg.js +93 -0
  223. package/dist/wasm/pkg/bundler/wasm_bg.wasm +0 -0
  224. package/dist/wasm/pkg/bundler/wasm_bg.wasm.d.ts +8 -0
  225. package/dist/wasm/pkg/nodejs/package.json +14 -0
  226. package/dist/wasm/pkg/nodejs/wasm.d.ts +3 -0
  227. package/dist/wasm/pkg/nodejs/wasm.js +98 -0
  228. package/dist/wasm/pkg/nodejs/wasm_bg.wasm +0 -0
  229. package/dist/wasm/pkg/nodejs/wasm_bg.wasm.d.ts +8 -0
  230. package/dist/wasm/pkg/web/package.json +18 -0
  231. package/dist/wasm/pkg/web/wasm.d.ts +35 -0
  232. package/dist/wasm/pkg/web/wasm.js +191 -0
  233. package/dist/wasm/pkg/web/wasm_bg.wasm +0 -0
  234. package/dist/wasm/pkg/web/wasm_bg.wasm.d.ts +8 -0
  235. package/dist/wasm.d.ts +5 -0
  236. package/dist/wasm.js +10 -0
  237. package/environments/nodejs/cli.ts +6 -0
  238. package/environments/web/cli.ts +6 -0
  239. package/error.ts +6 -0
  240. package/fix-dist.ts +5 -5
  241. package/global.d.ts +3 -3
  242. package/helpers/find-changelog-entry.ts +26 -23
  243. package/helpers/get-dep-name.ts +5 -5
  244. package/helpers/get-dfx-version.ts +8 -9
  245. package/helpers/get-moc-path.ts +25 -26
  246. package/helpers/get-moc-version.ts +21 -19
  247. package/helpers/get-package-id.ts +4 -4
  248. package/helpers/is-candid-compatible.ts +22 -0
  249. package/integrity.ts +270 -236
  250. package/jest.config.js +14 -0
  251. package/mops.ts +238 -215
  252. package/notify-installs.ts +16 -17
  253. package/package.json +19 -10
  254. package/parallel.ts +28 -24
  255. package/pem.ts +55 -47
  256. package/release-cli.ts +73 -39
  257. package/resolve-packages.ts +231 -189
  258. package/templates/mops-publish.yml +3 -3
  259. package/templates/mops-test.yml +3 -3
  260. package/templates/src/lib.mo +13 -13
  261. package/templates/test/lib.test.mo +2 -2
  262. package/templates.ts +4 -4
  263. package/tests/__snapshots__/cli.test.ts.snap +202 -0
  264. package/tests/build/error/candid/bar.did +3 -0
  265. package/tests/build/error/dfx.json +12 -0
  266. package/tests/build/error/mops.toml +9 -0
  267. package/tests/build/error/src/Bar.mo +5 -0
  268. package/tests/build/error/src/Foo.mo +5 -0
  269. package/tests/build/success/.dfx/local/canister_ids.json +17 -0
  270. package/tests/build/success/.dfx/local/canisters/bar/bar.did +3 -0
  271. package/tests/build/success/.dfx/local/canisters/bar/bar.most +4 -0
  272. package/tests/build/success/.dfx/local/canisters/bar/bar.wasm +0 -0
  273. package/tests/build/success/.dfx/local/canisters/bar/constructor.did +3 -0
  274. package/tests/build/success/.dfx/local/canisters/bar/index.js +42 -0
  275. package/tests/build/success/.dfx/local/canisters/bar/init_args.txt +1 -0
  276. package/tests/build/success/.dfx/local/canisters/bar/service.did +3 -0
  277. package/tests/build/success/.dfx/local/canisters/bar/service.did.d.ts +7 -0
  278. package/tests/build/success/.dfx/local/canisters/bar/service.did.js +4 -0
  279. package/tests/build/success/.dfx/local/canisters/foo/constructor.did +3 -0
  280. package/tests/build/success/.dfx/local/canisters/foo/foo.did +3 -0
  281. package/tests/build/success/.dfx/local/canisters/foo/foo.most +4 -0
  282. package/tests/build/success/.dfx/local/canisters/foo/foo.wasm +0 -0
  283. package/tests/build/success/.dfx/local/canisters/foo/index.js +42 -0
  284. package/tests/build/success/.dfx/local/canisters/foo/init_args.txt +1 -0
  285. package/tests/build/success/.dfx/local/canisters/foo/service.did +3 -0
  286. package/tests/build/success/.dfx/local/canisters/foo/service.did.d.ts +7 -0
  287. package/tests/build/success/.dfx/local/canisters/foo/service.did.js +4 -0
  288. package/tests/build/success/.dfx/local/lsp/ucwa4-rx777-77774-qaada-cai.did +3 -0
  289. package/tests/build/success/.dfx/local/lsp/ulvla-h7777-77774-qaacq-cai.did +3 -0
  290. package/tests/build/success/.dfx/local/network-id +4 -0
  291. package/tests/build/success/candid/bar.did +3 -0
  292. package/tests/build/success/dfx.json +12 -0
  293. package/tests/build/success/mops.toml +9 -0
  294. package/tests/build/success/src/Bar.mo +5 -0
  295. package/tests/build/success/src/Foo.mo +5 -0
  296. package/tests/check-candid/a.did +3 -0
  297. package/tests/check-candid/b.did +5 -0
  298. package/tests/check-candid/c.did +3 -0
  299. package/tests/cli.test.ts +82 -0
  300. package/tsconfig.json +26 -19
  301. package/types.ts +41 -31
  302. package/vessel.ts +219 -187
  303. package/wasm/Cargo.lock +1475 -0
  304. package/wasm/Cargo.toml +28 -0
  305. package/wasm/pkg/bundler/package.json +20 -0
  306. package/wasm/pkg/bundler/wasm.d.ts +3 -0
  307. package/wasm/pkg/bundler/wasm.js +5 -0
  308. package/wasm/pkg/bundler/wasm_bg.js +93 -0
  309. package/wasm/pkg/bundler/wasm_bg.wasm +0 -0
  310. package/wasm/pkg/bundler/wasm_bg.wasm.d.ts +8 -0
  311. package/wasm/pkg/nodejs/package.json +14 -0
  312. package/wasm/pkg/nodejs/wasm.d.ts +3 -0
  313. package/wasm/pkg/nodejs/wasm.js +98 -0
  314. package/wasm/pkg/nodejs/wasm_bg.wasm +0 -0
  315. package/wasm/pkg/nodejs/wasm_bg.wasm.d.ts +8 -0
  316. package/wasm/pkg/web/package.json +18 -0
  317. package/wasm/pkg/web/wasm.d.ts +35 -0
  318. package/wasm/pkg/web/wasm.js +191 -0
  319. package/wasm/pkg/web/wasm_bg.wasm +0 -0
  320. package/wasm/pkg/web/wasm_bg.wasm.d.ts +8 -0
  321. package/wasm/src/lib.rs +17 -0
  322. package/wasm.ts +16 -0
package/parallel.ts CHANGED
@@ -1,25 +1,29 @@
1
- export async function parallel<T>(threads : number, items : T[], fn : (item : T) => Promise<void>) {
2
- return new Promise<void>((resolve) => {
3
- let busyThreads = 0;
4
- items = items.slice();
1
+ export async function parallel<T>(
2
+ threads: number,
3
+ items: T[],
4
+ fn: (item: T) => Promise<void>,
5
+ ) {
6
+ return new Promise<void>((resolve) => {
7
+ let busyThreads = 0;
8
+ items = items.slice();
5
9
 
6
- let loop = () => {
7
- if (!items.length) {
8
- if (busyThreads === 0) {
9
- resolve();
10
- }
11
- return;
12
- }
13
- if (busyThreads >= threads) {
14
- return;
15
- }
16
- busyThreads++;
17
- fn(items.shift() as T).then(() => {
18
- busyThreads--;
19
- loop();
20
- });
21
- loop();
22
- };
23
- loop();
24
- });
25
- }
10
+ let loop = () => {
11
+ if (!items.length) {
12
+ if (busyThreads === 0) {
13
+ resolve();
14
+ }
15
+ return;
16
+ }
17
+ if (busyThreads >= threads) {
18
+ return;
19
+ }
20
+ busyThreads++;
21
+ fn(items.shift() as T).then(() => {
22
+ busyThreads--;
23
+ loop();
24
+ });
25
+ loop();
26
+ };
27
+ loop();
28
+ });
29
+ }
package/pem.ts CHANGED
@@ -1,55 +1,63 @@
1
- import fs from 'node:fs';
2
- import {Buffer} from 'node:buffer';
3
- import crypto from 'node:crypto';
4
- import {Ed25519KeyIdentity} from '@icp-sdk/core/identity';
5
- import {Secp256k1KeyIdentity} from '@icp-sdk/core/identity/secp256k1';
6
- import pemfile from 'pem-file';
1
+ import fs from "node:fs";
2
+ import { Buffer } from "node:buffer";
3
+ import crypto from "node:crypto";
4
+ import { Ed25519KeyIdentity } from "@icp-sdk/core/identity";
5
+ import { Secp256k1KeyIdentity } from "@icp-sdk/core/identity/secp256k1";
6
+ import pemfile from "pem-file";
7
7
 
8
- export function decodeFile(file : string, password ?: string) {
9
- let rawKey = fs.readFileSync(file);
10
- if (password) {
11
- return decode(decrypt(rawKey, password));
12
- }
13
- return decode(rawKey);
8
+ export function decodeFile(file: string, password?: string) {
9
+ let rawKey = fs.readFileSync(file);
10
+ if (password) {
11
+ return decode(decrypt(rawKey, password));
12
+ }
13
+ return decode(rawKey);
14
14
  }
15
15
 
16
- function decode(rawKey : Buffer) {
17
- let buf : Buffer = pemfile.decode(rawKey);
18
- if (rawKey.includes('EC PRIVATE KEY')) {
19
- if (buf.length != 118) {
20
- throw 'expecting byte length 118 but got ' + buf.length;
21
- }
22
- return Secp256k1KeyIdentity.fromSecretKey(buf.subarray(7, 39));
23
- }
24
- if (buf.length != 85) {
25
- throw 'expecting byte length 85 but got ' + buf.length;
26
- }
27
- let secretKey = Buffer.concat([buf.subarray(16, 48)]);
28
- return Ed25519KeyIdentity.fromSecretKey(secretKey);
16
+ function decode(rawKey: Buffer) {
17
+ let buf: Buffer = pemfile.decode(rawKey);
18
+ if (rawKey.includes("EC PRIVATE KEY")) {
19
+ if (buf.length != 118) {
20
+ throw "expecting byte length 118 but got " + buf.length;
21
+ }
22
+ return Secp256k1KeyIdentity.fromSecretKey(buf.subarray(7, 39));
23
+ }
24
+ if (buf.length != 85) {
25
+ throw "expecting byte length 85 but got " + buf.length;
26
+ }
27
+ let secretKey = Buffer.concat([buf.subarray(16, 48)]);
28
+ return Ed25519KeyIdentity.fromSecretKey(secretKey);
29
29
  }
30
30
 
31
- let algorithm = 'aes-256-ctr';
31
+ let algorithm = "aes-256-ctr";
32
32
 
33
- export function encrypt(buffer : Buffer, password : string) {
34
- let key = crypto.createHash('sha256').update(password).digest('base64').slice(0, 32);
35
- // Create an initialization vector
36
- let iv = crypto.randomBytes(16);
37
- // Create a new cipher using the algorithm, key, and iv
38
- let cipher = crypto.createCipheriv(algorithm, key, iv);
39
- // Create the new (encrypted) buffer
40
- let result = Buffer.concat([iv, cipher.update(buffer), cipher.final()]);
41
- return result;
33
+ export function encrypt(buffer: Buffer, password: string) {
34
+ let key = crypto
35
+ .createHash("sha256")
36
+ .update(password)
37
+ .digest("base64")
38
+ .slice(0, 32);
39
+ // Create an initialization vector
40
+ let iv = crypto.randomBytes(16);
41
+ // Create a new cipher using the algorithm, key, and iv
42
+ let cipher = crypto.createCipheriv(algorithm, key, iv);
43
+ // Create the new (encrypted) buffer
44
+ let result = Buffer.concat([iv, cipher.update(buffer), cipher.final()]);
45
+ return result;
42
46
  }
43
47
 
44
- function decrypt(encrypted : Buffer, password : string) {
45
- let key = crypto.createHash('sha256').update(password).digest('base64').slice(0, 32);
46
- // Get the iv: the first 16 bytes
47
- let iv = encrypted.subarray(0, 16);
48
- // Get the rest
49
- encrypted = encrypted.subarray(16);
50
- // Create a decipher
51
- let decipher = crypto.createDecipheriv(algorithm, key, iv);
52
- // Actually decrypt it
53
- let result = Buffer.concat([decipher.update(encrypted), decipher.final()]);
54
- return result;
55
- }
48
+ function decrypt(encrypted: Buffer, password: string) {
49
+ let key = crypto
50
+ .createHash("sha256")
51
+ .update(password)
52
+ .digest("base64")
53
+ .slice(0, 32);
54
+ // Get the iv: the first 16 bytes
55
+ let iv = encrypted.subarray(0, 16);
56
+ // Get the rest
57
+ encrypted = encrypted.subarray(16);
58
+ // Create a decipher
59
+ let decipher = crypto.createDecipheriv(algorithm, key, iv);
60
+ // Actually decrypt it
61
+ let result = Buffer.concat([decipher.update(encrypted), decipher.final()]);
62
+ return result;
63
+ }
package/release-cli.ts CHANGED
@@ -1,67 +1,101 @@
1
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';
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
9
 
10
- import {findChangelogEntry} from './helpers/find-changelog-entry.js';
10
+ import { findChangelogEntry } from "./helpers/find-changelog-entry.js";
11
11
 
12
- let __dirname = new URL('.', import.meta.url).pathname;
12
+ let __dirname = new URL(".", import.meta.url).pathname;
13
13
 
14
14
  // build using Docker
15
- execSync('./build.sh', {stdio: 'inherit', cwd: __dirname});
15
+ execSync("./build.sh", { stdio: "inherit", cwd: __dirname });
16
16
 
17
- let commitHash = process.env.COMMIT_HASH || execSync('git rev-parse HEAD').toString().trim();
18
- let version = JSON.parse(fs.readFileSync(path.resolve(__dirname, 'package.json'), 'utf8')).version;
17
+ let commitHash =
18
+ process.env.COMMIT_HASH || execSync("git rev-parse HEAD").toString().trim();
19
+ let version = JSON.parse(
20
+ fs.readFileSync(path.resolve(__dirname, "package.json"), "utf8"),
21
+ ).version;
19
22
  let major = semver.parse(version)?.major;
20
- let tag = semver.parse(version)?.prerelease[0] || 'latest';
21
- let releaseNotes = findChangelogEntry(fs.readFileSync(path.resolve(__dirname, 'CHANGELOG.md'), 'utf8'), version);
22
- let data = fs.readFileSync(path.resolve(__dirname, 'bundle/cli.tgz'));
23
+ let tag = semver.parse(version)?.prerelease[0] || "latest";
24
+ let releaseNotes = findChangelogEntry(
25
+ fs.readFileSync(path.resolve(__dirname, "CHANGELOG.md"), "utf8"),
26
+ version,
27
+ );
28
+ let data = fs.readFileSync(path.resolve(__dirname, "bundle/cli.tgz"));
23
29
  let hash = bytesToHex(sha256(data));
24
30
  let size = data.byteLength;
25
31
 
26
32
  console.log(`Commit hash of release: ${commitHash}`);
27
33
 
28
- fs.cpSync(path.resolve(__dirname, 'bundle/cli.tgz'), path.resolve(__dirname, `../cli-releases/versions/${version}.tgz`), {force: false, errorOnExist: true});
34
+ fs.cpSync(
35
+ path.resolve(__dirname, "bundle/cli.tgz"),
36
+ path.resolve(__dirname, `../cli-releases/versions/${version}.tgz`),
37
+ { force: false, errorOnExist: true },
38
+ );
29
39
 
30
- fs.cpSync(path.resolve(__dirname, `../cli-releases/versions/${version}.tgz`), path.resolve(__dirname, `../cli-releases/versions/${tag}.tgz`), {force: true, errorOnExist: false, recursive: true});
31
- fs.cpSync(path.resolve(__dirname, `../cli-releases/versions/${version}.tgz`), path.resolve(__dirname, `../cli-releases/versions/${major}.tgz`), {force: true, errorOnExist: false, recursive: true});
40
+ fs.cpSync(
41
+ path.resolve(__dirname, `../cli-releases/versions/${version}.tgz`),
42
+ path.resolve(__dirname, `../cli-releases/versions/${tag}.tgz`),
43
+ { force: true, errorOnExist: false, recursive: true },
44
+ );
45
+ fs.cpSync(
46
+ path.resolve(__dirname, `../cli-releases/versions/${version}.tgz`),
47
+ path.resolve(__dirname, `../cli-releases/versions/${major}.tgz`),
48
+ { force: true, errorOnExist: false, recursive: true },
49
+ );
32
50
 
33
- fs.writeFileSync(path.resolve(__dirname, `../cli-releases/tags/${tag}`), version);
51
+ fs.writeFileSync(
52
+ path.resolve(__dirname, `../cli-releases/tags/${tag}`),
53
+ version,
54
+ );
34
55
 
35
56
  console.log(`Release '${version}' created with tag '${tag}'`);
36
57
 
37
-
38
58
  // releases.json
39
59
  type Releases = {
40
- tags : Record<string, string>;
41
- versions : Record<string, {
42
- time : number;
43
- size : number;
44
- hash : string;
45
- commitHash ?: string;
46
- url : string;
47
- relseaseNotes : string;
48
- }>;
60
+ tags: Record<string, string>;
61
+ versions: Record<
62
+ string,
63
+ {
64
+ time: number;
65
+ size: number;
66
+ hash: string;
67
+ commitHash?: string;
68
+ url: string;
69
+ relseaseNotes: string;
70
+ }
71
+ >;
49
72
  };
50
73
 
51
- if (!fs.existsSync(path.resolve(__dirname, '../cli-releases/releases.json'))) {
52
- fs.writeFileSync(path.resolve(__dirname, '../cli-releases/releases.json'), JSON.stringify({tags: {}, versions: {}}, null, 2));
74
+ if (!fs.existsSync(path.resolve(__dirname, "../cli-releases/releases.json"))) {
75
+ fs.writeFileSync(
76
+ path.resolve(__dirname, "../cli-releases/releases.json"),
77
+ JSON.stringify({ tags: {}, versions: {} }, null, 2),
78
+ );
53
79
  }
54
80
 
55
- let releases : Releases = JSON.parse(fs.readFileSync(path.resolve(__dirname, '../cli-releases/releases.json'), 'utf8'));
81
+ let releases: Releases = JSON.parse(
82
+ fs.readFileSync(
83
+ path.resolve(__dirname, "../cli-releases/releases.json"),
84
+ "utf8",
85
+ ),
86
+ );
56
87
 
57
88
  releases.tags[tag] = version;
58
89
  releases.versions[version] = {
59
- time: new Date().getTime(),
60
- size,
61
- relseaseNotes: releaseNotes,
62
- commitHash: commitHash,
63
- url: `https://cli.mops.one/versions/${version}.tgz`,
64
- hash,
90
+ time: new Date().getTime(),
91
+ size,
92
+ relseaseNotes: releaseNotes,
93
+ commitHash: commitHash,
94
+ url: `https://cli.mops.one/versions/${version}.tgz`,
95
+ hash,
65
96
  };
66
97
 
67
- fs.writeFileSync(path.resolve(__dirname, '../cli-releases/releases.json'), JSON.stringify(releases, null, 2));
98
+ fs.writeFileSync(
99
+ path.resolve(__dirname, "../cli-releases/releases.json"),
100
+ JSON.stringify(releases, null, 2),
101
+ );