movehat 0.2.1 → 0.2.3

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 (176) hide show
  1. package/dist/__tests__/deployContract.test.js +56 -47
  2. package/dist/__tests__/deployContract.test.js.map +1 -1
  3. package/dist/__tests__/exports.test.d.ts +2 -0
  4. package/dist/__tests__/exports.test.d.ts.map +1 -0
  5. package/dist/__tests__/exports.test.js +30 -0
  6. package/dist/__tests__/exports.test.js.map +1 -0
  7. package/dist/__tests__/fixtures/sigint-deploy-harness.d.ts +4 -3
  8. package/dist/__tests__/fixtures/sigint-deploy-harness.d.ts.map +1 -1
  9. package/dist/__tests__/fixtures/sigint-deploy-harness.js +8 -7
  10. package/dist/__tests__/fixtures/sigint-deploy-harness.js.map +1 -1
  11. package/dist/__tests__/fork/api.test.js +5 -0
  12. package/dist/__tests__/fork/api.test.js.map +1 -1
  13. package/dist/__tests__/fork/api.timeout.test.d.ts +2 -0
  14. package/dist/__tests__/fork/api.timeout.test.d.ts.map +1 -0
  15. package/dist/__tests__/fork/api.timeout.test.js +98 -0
  16. package/dist/__tests__/fork/api.timeout.test.js.map +1 -0
  17. package/dist/cli.js +4 -0
  18. package/dist/cli.js.map +1 -1
  19. package/dist/commands/__tests__/compile.toml-mutation.test.d.ts +2 -0
  20. package/dist/commands/__tests__/compile.toml-mutation.test.d.ts.map +1 -0
  21. package/dist/commands/__tests__/compile.toml-mutation.test.js +69 -0
  22. package/dist/commands/__tests__/compile.toml-mutation.test.js.map +1 -0
  23. package/dist/commands/__tests__/init.test.js +73 -11
  24. package/dist/commands/__tests__/init.test.js.map +1 -1
  25. package/dist/commands/compile.d.ts.map +1 -1
  26. package/dist/commands/compile.js +19 -10
  27. package/dist/commands/compile.js.map +1 -1
  28. package/dist/commands/init.d.ts +22 -0
  29. package/dist/commands/init.d.ts.map +1 -1
  30. package/dist/commands/init.js +55 -6
  31. package/dist/commands/init.js.map +1 -1
  32. package/dist/commands/test.js +12 -19
  33. package/dist/commands/test.js.map +1 -1
  34. package/dist/core/AccountManager.d.ts.map +1 -1
  35. package/dist/core/AccountManager.js +14 -2
  36. package/dist/core/AccountManager.js.map +1 -1
  37. package/dist/core/Publisher.d.ts.map +1 -1
  38. package/dist/core/Publisher.js +72 -82
  39. package/dist/core/Publisher.js.map +1 -1
  40. package/dist/core/__tests__/AccountManager.global-state.test.d.ts +2 -0
  41. package/dist/core/__tests__/AccountManager.global-state.test.d.ts.map +1 -0
  42. package/dist/core/__tests__/AccountManager.global-state.test.js +69 -0
  43. package/dist/core/__tests__/AccountManager.global-state.test.js.map +1 -0
  44. package/dist/core/__tests__/movementProfile.test.d.ts +2 -0
  45. package/dist/core/__tests__/movementProfile.test.d.ts.map +1 -0
  46. package/dist/core/__tests__/movementProfile.test.js +112 -0
  47. package/dist/core/__tests__/movementProfile.test.js.map +1 -0
  48. package/dist/core/config.d.ts.map +1 -1
  49. package/dist/core/config.js +14 -10
  50. package/dist/core/config.js.map +1 -1
  51. package/dist/core/deployments.d.ts.map +1 -1
  52. package/dist/core/deployments.js +4 -2
  53. package/dist/core/deployments.js.map +1 -1
  54. package/dist/core/movementProfile.d.ts +55 -22
  55. package/dist/core/movementProfile.d.ts.map +1 -1
  56. package/dist/core/movementProfile.js +77 -99
  57. package/dist/core/movementProfile.js.map +1 -1
  58. package/dist/fork/__tests__/server.cors.test.d.ts +2 -0
  59. package/dist/fork/__tests__/server.cors.test.d.ts.map +1 -0
  60. package/dist/fork/__tests__/server.cors.test.js +79 -0
  61. package/dist/fork/__tests__/server.cors.test.js.map +1 -0
  62. package/dist/fork/api.d.ts +9 -1
  63. package/dist/fork/api.d.ts.map +1 -1
  64. package/dist/fork/api.js +37 -7
  65. package/dist/fork/api.js.map +1 -1
  66. package/dist/fork/manager.js +10 -10
  67. package/dist/fork/manager.js.map +1 -1
  68. package/dist/fork/server.d.ts +20 -1
  69. package/dist/fork/server.d.ts.map +1 -1
  70. package/dist/fork/server.js +40 -24
  71. package/dist/fork/server.js.map +1 -1
  72. package/dist/fork/test.d.ts.map +1 -1
  73. package/dist/fork/test.js +3 -2
  74. package/dist/fork/test.js.map +1 -1
  75. package/dist/harness/Harness.d.ts +6 -2
  76. package/dist/harness/Harness.d.ts.map +1 -1
  77. package/dist/harness/Harness.js +8 -2
  78. package/dist/harness/Harness.js.map +1 -1
  79. package/dist/harness/codeObject.d.ts.map +1 -1
  80. package/dist/harness/codeObject.js +41 -41
  81. package/dist/harness/codeObject.js.map +1 -1
  82. package/dist/harness/script.d.ts +3 -3
  83. package/dist/harness/script.d.ts.map +1 -1
  84. package/dist/harness/script.js +42 -35
  85. package/dist/harness/script.js.map +1 -1
  86. package/dist/helpers/__tests__/setupLocalTesting.fork-network.test.d.ts +2 -0
  87. package/dist/helpers/__tests__/setupLocalTesting.fork-network.test.d.ts.map +1 -0
  88. package/dist/helpers/__tests__/setupLocalTesting.fork-network.test.js +172 -0
  89. package/dist/helpers/__tests__/setupLocalTesting.fork-network.test.js.map +1 -0
  90. package/dist/helpers/setupLocalTesting.d.ts.map +1 -1
  91. package/dist/helpers/setupLocalTesting.js +31 -5
  92. package/dist/helpers/setupLocalTesting.js.map +1 -1
  93. package/dist/index.d.ts +1 -0
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/node/LocalNodeManager.d.ts +8 -0
  96. package/dist/node/LocalNodeManager.d.ts.map +1 -1
  97. package/dist/node/LocalNodeManager.js +70 -23
  98. package/dist/node/LocalNodeManager.js.map +1 -1
  99. package/dist/node/__tests__/LocalNodeManager.api-port.test.d.ts +2 -0
  100. package/dist/node/__tests__/LocalNodeManager.api-port.test.d.ts.map +1 -0
  101. package/dist/node/__tests__/LocalNodeManager.api-port.test.js +55 -0
  102. package/dist/node/__tests__/LocalNodeManager.api-port.test.js.map +1 -0
  103. package/dist/node/__tests__/LocalNodeManager.test.js +114 -14
  104. package/dist/node/__tests__/LocalNodeManager.test.js.map +1 -1
  105. package/dist/templates/move/Move.toml +1 -1
  106. package/dist/templates/move/sources/Counter.move +31 -4
  107. package/dist/templates/scripts/deploy-counter.ts +10 -0
  108. package/dist/types/config.d.ts +8 -1
  109. package/dist/types/config.d.ts.map +1 -1
  110. package/dist/ui/__tests__/logger.test.d.ts +2 -0
  111. package/dist/ui/__tests__/logger.test.d.ts.map +1 -0
  112. package/dist/ui/__tests__/logger.test.js +75 -0
  113. package/dist/ui/__tests__/logger.test.js.map +1 -0
  114. package/dist/ui/formatters.d.ts +0 -16
  115. package/dist/ui/formatters.d.ts.map +1 -1
  116. package/dist/ui/formatters.js +1 -1
  117. package/dist/ui/formatters.js.map +1 -1
  118. package/dist/ui/logger.d.ts +41 -0
  119. package/dist/ui/logger.d.ts.map +1 -1
  120. package/dist/ui/logger.js +49 -0
  121. package/dist/ui/logger.js.map +1 -1
  122. package/dist/ui/spinner.d.ts +25 -0
  123. package/dist/ui/spinner.d.ts.map +1 -1
  124. package/dist/ui/spinner.js +44 -0
  125. package/dist/ui/spinner.js.map +1 -1
  126. package/dist/utils/__tests__/childProcessAdapter.maxBuffer.test.d.ts +2 -0
  127. package/dist/utils/__tests__/childProcessAdapter.maxBuffer.test.d.ts.map +1 -0
  128. package/dist/utils/__tests__/childProcessAdapter.maxBuffer.test.js +43 -0
  129. package/dist/utils/__tests__/childProcessAdapter.maxBuffer.test.js.map +1 -0
  130. package/dist/utils/childProcessAdapter.d.ts +7 -0
  131. package/dist/utils/childProcessAdapter.d.ts.map +1 -1
  132. package/dist/utils/childProcessAdapter.js +20 -2
  133. package/dist/utils/childProcessAdapter.js.map +1 -1
  134. package/package.json +1 -1
  135. package/src/__tests__/deployContract.test.ts +59 -50
  136. package/src/__tests__/exports.test.ts +32 -0
  137. package/src/__tests__/fixtures/sigint-deploy-harness.ts +8 -7
  138. package/src/__tests__/fork/api.test.ts +5 -0
  139. package/src/__tests__/fork/api.timeout.test.ts +150 -0
  140. package/src/cli.ts +4 -0
  141. package/src/commands/__tests__/compile.toml-mutation.test.ts +77 -0
  142. package/src/commands/__tests__/init.test.ts +96 -11
  143. package/src/commands/compile.ts +24 -15
  144. package/src/commands/init.ts +77 -6
  145. package/src/commands/test.ts +12 -19
  146. package/src/core/AccountManager.ts +18 -1
  147. package/src/core/Publisher.ts +103 -107
  148. package/src/core/__tests__/AccountManager.global-state.test.ts +83 -0
  149. package/src/core/__tests__/movementProfile.test.ts +131 -0
  150. package/src/core/config.ts +18 -11
  151. package/src/core/deployments.ts +5 -4
  152. package/src/core/movementProfile.ts +75 -127
  153. package/src/fork/__tests__/server.cors.test.ts +101 -0
  154. package/src/fork/api.ts +69 -10
  155. package/src/fork/manager.ts +10 -10
  156. package/src/fork/server.ts +59 -24
  157. package/src/fork/test.ts +3 -2
  158. package/src/harness/Harness.ts +11 -2
  159. package/src/harness/codeObject.ts +45 -48
  160. package/src/harness/script.ts +47 -43
  161. package/src/helpers/__tests__/setupLocalTesting.fork-network.test.ts +212 -0
  162. package/src/helpers/setupLocalTesting.ts +39 -5
  163. package/src/index.ts +9 -1
  164. package/src/node/LocalNodeManager.ts +87 -26
  165. package/src/node/__tests__/LocalNodeManager.api-port.test.ts +62 -0
  166. package/src/node/__tests__/LocalNodeManager.test.ts +144 -17
  167. package/src/templates/move/Move.toml +1 -1
  168. package/src/templates/move/sources/Counter.move +31 -4
  169. package/src/templates/scripts/deploy-counter.ts +10 -0
  170. package/src/types/config.ts +8 -1
  171. package/src/ui/__tests__/logger.test.ts +89 -0
  172. package/src/ui/formatters.ts +1 -1
  173. package/src/ui/logger.ts +62 -0
  174. package/src/ui/spinner.ts +47 -0
  175. package/src/utils/__tests__/childProcessAdapter.maxBuffer.test.ts +51 -0
  176. package/src/utils/childProcessAdapter.ts +32 -2
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../../src/core/deployments.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI,CA+B/E;AAwBD,wBAAgB,cAAc,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI,CAoB/D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAmBzF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAwBjF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIrF"}
1
+ {"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../../src/core/deployments.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI,CA+B/E;AAwBD,wBAAgB,cAAc,CAAC,UAAU,EAAE,cAAc,GAAG,IAAI,CAoB/D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAoBzF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAwBjF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIrF"}
@@ -57,7 +57,8 @@ export function saveDeployment(deployment) {
57
57
  logger.success(`Deployment saved: deployments/${deployment.network}/${deployment.moduleName}.json`);
58
58
  }
59
59
  catch (error) {
60
- console.error(`Failed to save deployment for ${deployment.moduleName} on ${deployment.network} at ${filePath}:`, error);
60
+ const msg = error instanceof Error ? error.message : String(error);
61
+ logger.error(`Failed to save deployment for ${deployment.moduleName} on ${deployment.network} at ${filePath}: ${msg}`);
61
62
  throw error;
62
63
  }
63
64
  }
@@ -75,7 +76,8 @@ export function loadDeployment(network, moduleName) {
75
76
  return JSON.parse(content);
76
77
  }
77
78
  catch (error) {
78
- console.error(`Failed to load deployment for ${moduleName} on ${network}:`, error);
79
+ const msg = error instanceof Error ? error.message : String(error);
80
+ logger.error(`Failed to load deployment for ${moduleName} on ${network}: ${msg}`);
79
81
  return null;
80
82
  }
81
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"deployments.js","sourceRoot":"","sources":["../../src/core/deployments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deployments.js","sourceRoot":"","sources":["../../src/core/deployments.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,64 @@
1
- export declare function withYamlLock<T>(fn: () => Promise<T>): Promise<T>;
2
- export interface ProfileData {
3
- private_key: string;
4
- public_key: string;
5
- account: string;
6
- rest_url: string;
7
- }
8
- /** Add the deploy's profile to ~/.aptos/config.yaml. Creates the file if absent. */
9
- export declare function addProfile(configPath: string, name: string, data: ProfileData): Promise<void>;
10
1
  /**
11
- * Remove the deploy's profile from ~/.aptos/config.yaml. Idempotent —
12
- * a missing file or missing profile is a no-op. If removal leaves the
13
- * yaml with only an empty `profiles:` block, the whole file is unlinked
14
- * to preserve the "didn't exist before" semantic for the first-ever deploy.
2
+ * Per-deploy private-key file management and SIGINT/SIGTERM cleanup
3
+ * infrastructure shared across the Movement CLI invocations (`move
4
+ * publish`, `move deploy-object`, `move upgrade-object`, `move
5
+ * run-script`).
6
+ *
7
+ * **Why a temp key file rather than the CLI's profile yaml?** The
8
+ * Movement CLI's `--profile <name>` flag requires a config.yaml to
9
+ * exist in the working directory (older Movement CLI variants look
10
+ * for `<cwd>/.aptos/config.yaml`; newer variants look for
11
+ * `<cwd>/.movement/config.yaml`). On fresh user installs neither
12
+ * directory exists, and the CLI errors out before it would otherwise
13
+ * fall back to `~/.aptos/config.yaml`. Writing to a temp file and
14
+ * passing `--private-key-file <path> --sender-account <addr>`
15
+ * directly avoids the entire profile-yaml lookup chain — no CWD
16
+ * dependency, no CLI-variant dependency.
17
+ *
18
+ * The same SIGINT-safe cleanup pattern applies as the old profile
19
+ * flow: the temp key file persists private key material on disk and
20
+ * MUST be removed before process exit even on abnormal termination.
21
+ *
22
+ * @internal — not exported from `src/index.ts`.
15
23
  */
16
- export declare function removeProfile(configPath: string, name: string): Promise<void>;
17
24
  /**
18
- * Synchronous twin of `removeProfile` for the SIGINT/SIGTERM handler.
19
- * The event loop is dead by the time the handler runs we cannot
20
- * await. Bypasses the async mutex because signal handlers are
21
- * sequential by construction; the operation is idempotent so a
22
- * benign double-delete (handler then finally, or vice versa) is fine.
25
+ * Write the private key to a `mode 0o600` file in the system temp
26
+ * directory and return the path. The filename is UUID-suffixed so
27
+ * concurrent deploys don't collide.
28
+ *
29
+ * The key string is written verbatim callers should format to
30
+ * AIP-80 before calling (see `PrivateKey.formatPrivateKey` from
31
+ * `@aptos-labs/ts-sdk`).
23
32
  */
24
- export declare function removeProfileSync(configPath: string, name: string): void;
33
+ export declare function writeTempKeyFile(privateKey: string): string;
34
+ /**
35
+ * Sync unlink for SIGINT/SIGTERM handlers — never throws, never logs.
36
+ * The event loop is dead by the time this runs; observability isn't
37
+ * possible. Worst case: a stale 0o600 temp file in `os.tmpdir()`
38
+ * that the OS reaps eventually.
39
+ *
40
+ * **Do not use this from a normal `finally` cleanup path** — failures
41
+ * become invisible there, hiding the case where a private-key temp
42
+ * file persists on disk after a deploy. Use {@link removeKeyFile}
43
+ * instead for those paths.
44
+ */
45
+ export declare function removeKeyFileSyncBestEffort(path: string): void;
46
+ /**
47
+ * Sync unlink for the normal cleanup path (a `finally` block after the
48
+ * Movement CLI invocation returns). Returns `null` on success — either
49
+ * the file was removed, or it was already gone (ENOENT is treated as
50
+ * benign success). Returns an `Error` only when the file **still
51
+ * exists on disk** after the unlink attempt failed (EPERM, EACCES,
52
+ * EBUSY, EISDIR if the path collided with a directory, etc.).
53
+ *
54
+ * Callers SHOULD `logger.warning` when a non-null Error is returned —
55
+ * a private-key temp file would otherwise persist silently.
56
+ */
57
+ export declare function removeKeyFile(path: string): Error | null;
25
58
  /**
26
59
  * Process-level signal handling. A single registered handler iterates
27
- * the per-deploy cleanup callbacks. Install-once because multiple
28
- * concurrent deploys share the same parent process — installing per
60
+ * the per-deploy cleanup callbacks. Installed once per process because
61
+ * multiple concurrent deploys share the same parent — installing per
29
62
  * deploy would re-add the listener and exceed Node's max-listeners
30
63
  * warning threshold under heavy parallelism.
31
64
  */
@@ -1 +1 @@
1
- {"version":3,"file":"movementProfile.d.ts","sourceRoot":"","sources":["../../src/core/movementProfile.ts"],"names":[],"mappings":"AAgCA,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAUhE;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAoBD,oFAAoF;AACpF,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBnF;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAqBxE;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,YAAiB,IAAI,CAAG,CAAC;AAGtD,wBAAgB,mBAAmB,IAAI,IAAI,CAqB1C"}
1
+ {"version":3,"file":"movementProfile.d.ts","sourceRoot":"","sources":["../../src/core/movementProfile.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAS3D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAM9D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAcxD;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,YAAiB,IAAI,CAAG,CAAC;AAGtD,wBAAgB,mBAAmB,IAAI,IAAI,CAqB1C"}
@@ -1,123 +1,101 @@
1
- import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSync, } from "fs";
2
- import { readFile } from "fs/promises";
3
- import { dirname } from "path";
1
+ import { chmodSync, existsSync, unlinkSync, writeFileSync } from "fs";
2
+ import { tmpdir } from "os";
3
+ import { join } from "path";
4
4
  import { randomUUID } from "crypto";
5
- import * as yaml from "js-yaml";
6
5
  /**
7
- * Shared helpers for working with the Movement CLI's `~/.aptos/config.yaml`
8
- * profile file and the SIGINT/SIGTERM cleanup pipeline.
6
+ * Per-deploy private-key file management and SIGINT/SIGTERM cleanup
7
+ * infrastructure shared across the Movement CLI invocations (`move
8
+ * publish`, `move deploy-object`, `move upgrade-object`, `move
9
+ * run-script`).
9
10
  *
10
- * Extracted from `core/Publisher.ts` so both the existing `move publish`
11
- * flow (`Publisher`) and the new `move deploy-object` / `upgrade-object`
12
- * flows (`harness/codeObject.ts`) can share the bug #36 / #37 / #43
13
- * hardening without duplicating it.
11
+ * **Why a temp key file rather than the CLI's profile yaml?** The
12
+ * Movement CLI's `--profile <name>` flag requires a config.yaml to
13
+ * exist in the working directory (older Movement CLI variants look
14
+ * for `<cwd>/.aptos/config.yaml`; newer variants look for
15
+ * `<cwd>/.movement/config.yaml`). On fresh user installs neither
16
+ * directory exists, and the CLI errors out before it would otherwise
17
+ * fall back to `~/.aptos/config.yaml`. Writing to a temp file and
18
+ * passing `--private-key-file <path> --sender-account <addr>`
19
+ * directly avoids the entire profile-yaml lookup chain — no CWD
20
+ * dependency, no CLI-variant dependency.
21
+ *
22
+ * The same SIGINT-safe cleanup pattern applies as the old profile
23
+ * flow: the temp key file persists private key material on disk and
24
+ * MUST be removed before process exit even on abnormal termination.
14
25
  *
15
26
  * @internal — not exported from `src/index.ts`.
16
27
  */
17
28
  /**
18
- * In-process serializer for `~/.aptos/config.yaml` mutations. Without it,
19
- * two concurrent profile writes would race in the read-modify-write cycle
20
- * and the second writer would silently drop the first's profile. See #37.
29
+ * Write the private key to a `mode 0o600` file in the system temp
30
+ * directory and return the path. The filename is UUID-suffixed so
31
+ * concurrent deploys don't collide.
32
+ *
33
+ * The key string is written verbatim — callers should format to
34
+ * AIP-80 before calling (see `PrivateKey.formatPrivateKey` from
35
+ * `@aptos-labs/ts-sdk`).
21
36
  */
22
- let yamlLock = Promise.resolve();
23
- export function withYamlLock(fn) {
24
- const prev = yamlLock;
25
- // .then(success, failure) continue even if the previous holder rejected,
26
- // so a failure in one deploy doesn't poison the lock for the others.
27
- const next = prev.then(() => fn(), () => fn());
28
- yamlLock = next.catch(() => { }); // swallow on the shared chain; caller still gets the original
29
- return next;
37
+ export function writeTempKeyFile(privateKey) {
38
+ const path = join(tmpdir(), `movehat-key-${randomUUID()}`);
39
+ // mode in the open() call may be filtered by the process umask
40
+ // (typically 0o022 resulting perms 0o644). chmod after write
41
+ // is defense in depth so the file can never be observable as
42
+ // group-/world-readable while it carries the private key.
43
+ writeFileSync(path, privateKey, { mode: 0o600 });
44
+ chmodSync(path, 0o600);
45
+ return path;
30
46
  }
31
47
  /**
32
- * Atomic write: write payload to a temp sibling chmod the temp to 0o600
33
- * rename over the target. The chmod-before-rename order eliminates a
34
- * window where the target file could be observable with default umask
35
- * perms (typically 0o644) while carrying the private key.
48
+ * Sync unlink for SIGINT/SIGTERM handlers never throws, never logs.
49
+ * The event loop is dead by the time this runs; observability isn't
50
+ * possible. Worst case: a stale 0o600 temp file in `os.tmpdir()`
51
+ * that the OS reaps eventually.
52
+ *
53
+ * **Do not use this from a normal `finally` cleanup path** — failures
54
+ * become invisible there, hiding the case where a private-key temp
55
+ * file persists on disk after a deploy. Use {@link removeKeyFile}
56
+ * instead for those paths.
36
57
  */
37
- function atomicWriteYaml(path, content) {
38
- const tmpPath = `${path}.tmp.${randomUUID().slice(0, 8)}`;
39
- writeFileSync(tmpPath, content, { mode: 0o600 });
40
- chmodSync(tmpPath, 0o600); // defense in depth in case umask filtered the open mode
41
- renameSync(tmpPath, path);
42
- }
43
- /** Add the deploy's profile to ~/.aptos/config.yaml. Creates the file if absent. */
44
- export async function addProfile(configPath, name, data) {
45
- const configDir = dirname(configPath);
46
- if (!existsSync(configDir)) {
47
- mkdirSync(configDir, { recursive: true, mode: 0o700 });
48
- }
49
- let yamlObj = {};
50
- if (existsSync(configPath)) {
51
- const raw = await readFile(configPath, "utf-8");
52
- yamlObj = yaml.load(raw) || {};
58
+ export function removeKeyFileSyncBestEffort(path) {
59
+ try {
60
+ unlinkSync(path);
53
61
  }
54
- if (!yamlObj.profiles)
55
- yamlObj.profiles = {};
56
- yamlObj.profiles[name] = data;
57
- atomicWriteYaml(configPath, yaml.dump(yamlObj));
58
- }
59
- /**
60
- * Remove the deploy's profile from ~/.aptos/config.yaml. Idempotent —
61
- * a missing file or missing profile is a no-op. If removal leaves the
62
- * yaml with only an empty `profiles:` block, the whole file is unlinked
63
- * to preserve the "didn't exist before" semantic for the first-ever deploy.
64
- */
65
- export async function removeProfile(configPath, name) {
66
- if (!existsSync(configPath))
67
- return;
68
- const raw = await readFile(configPath, "utf-8");
69
- const yamlObj = yaml.load(raw) || {};
70
- if (!yamlObj.profiles || !(name in yamlObj.profiles))
71
- return;
72
- delete yamlObj.profiles[name];
73
- const profilesEmpty = Object.keys(yamlObj.profiles).length === 0;
74
- const onlyProfilesKey = Object.keys(yamlObj).length === 1 && "profiles" in yamlObj;
75
- if (profilesEmpty && onlyProfilesKey) {
76
- // We created this file fresh; remove it.
77
- try {
78
- unlinkSync(configPath);
79
- }
80
- catch {
81
- // best-effort
82
- }
83
- return;
62
+ catch {
63
+ // event loop dead — best-effort
84
64
  }
85
- atomicWriteYaml(configPath, yaml.dump(yamlObj));
86
65
  }
87
66
  /**
88
- * Synchronous twin of `removeProfile` for the SIGINT/SIGTERM handler.
89
- * The event loop is dead by the time the handler runs we cannot
90
- * await. Bypasses the async mutex because signal handlers are
91
- * sequential by construction; the operation is idempotent so a
92
- * benign double-delete (handler then finally, or vice versa) is fine.
67
+ * Sync unlink for the normal cleanup path (a `finally` block after the
68
+ * Movement CLI invocation returns). Returns `null` on successeither
69
+ * the file was removed, or it was already gone (ENOENT is treated as
70
+ * benign success). Returns an `Error` only when the file **still
71
+ * exists on disk** after the unlink attempt failed (EPERM, EACCES,
72
+ * EBUSY, EISDIR if the path collided with a directory, etc.).
73
+ *
74
+ * Callers SHOULD `logger.warning` when a non-null Error is returned —
75
+ * a private-key temp file would otherwise persist silently.
93
76
  */
94
- export function removeProfileSync(configPath, name) {
77
+ export function removeKeyFile(path) {
95
78
  try {
96
- if (!existsSync(configPath))
97
- return;
98
- const raw = readFileSync(configPath, "utf-8");
99
- const yamlObj = yaml.load(raw) || {};
100
- if (!yamlObj.profiles || !(name in yamlObj.profiles))
101
- return;
102
- delete yamlObj.profiles[name];
103
- const profilesEmpty = Object.keys(yamlObj.profiles).length === 0;
104
- const onlyProfilesKey = Object.keys(yamlObj).length === 1 && "profiles" in yamlObj;
105
- if (profilesEmpty && onlyProfilesKey) {
106
- unlinkSync(configPath);
107
- return;
108
- }
109
- atomicWriteYaml(configPath, yaml.dump(yamlObj));
79
+ unlinkSync(path);
80
+ return null;
110
81
  }
111
- catch {
112
- // Signal handlers should never throw — swallow and exit. Better to
113
- // leave a stale profile (recoverable by re-running the deploy) than
114
- // to crash the parent process mid-shutdown.
82
+ catch (err) {
83
+ const code = err.code;
84
+ if (code === "ENOENT")
85
+ return null;
86
+ // The unlink call failed but verify the file actually still exists
87
+ // before declaring this preocupante — some races (parallel cleanup,
88
+ // tmpdir reaper) can race with us and the file may already be gone
89
+ // despite the syscall reporting an unexpected error.
90
+ if (!existsSync(path))
91
+ return null;
92
+ return err instanceof Error ? err : new Error(String(err));
115
93
  }
116
94
  }
117
95
  /**
118
96
  * Process-level signal handling. A single registered handler iterates
119
- * the per-deploy cleanup callbacks. Install-once because multiple
120
- * concurrent deploys share the same parent process — installing per
97
+ * the per-deploy cleanup callbacks. Installed once per process because
98
+ * multiple concurrent deploys share the same parent — installing per
121
99
  * deploy would re-add the listener and exceed Node's max-listeners
122
100
  * warning threshold under heavy parallelism.
123
101
  */
@@ -128,7 +106,7 @@ export function ensureSignalHandler() {
128
106
  return;
129
107
  signalHandlerInstalled = true;
130
108
  const handler = (sig) => {
131
- // Synchronous cleanup of every active deploy's profile entry.
109
+ // Synchronous cleanup of every active deploy's resources.
132
110
  for (const cb of [...cleanupCallbacks]) {
133
111
  try {
134
112
  cb();
@@ -1 +1 @@
1
- {"version":3,"file":"movementProfile.js","sourceRoot":"","sources":["../../src/core/movementProfile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"movementProfile.js","sourceRoot":"","sources":["../../src/core/movementProfile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3D,+DAA+D;IAC/D,+DAA+D;IAC/D,6DAA6D;IAC7D,0DAA0D;IAC1D,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAAY;IACtD,IAAI,CAAC;QACH,UAAU,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,gCAAgC;IAClC,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,CAAC;QACH,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAC;QACjD,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACnC,mEAAmE;QACnE,oEAAoE;QACpE,mEAAmE;QACnE,qDAAqD;QACrD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAc,CAAC;AACtD,IAAI,sBAAsB,GAAG,KAAK,CAAC;AAEnC,MAAM,UAAU,mBAAmB;IACjC,IAAI,sBAAsB;QAAE,OAAO;IACnC,sBAAsB,GAAG,IAAI,CAAC;IAC9B,MAAM,OAAO,GAAG,CAAC,GAAmB,EAAE,EAAE;QACtC,0DAA0D;QAC1D,KAAK,MAAM,EAAE,IAAI,CAAC,GAAG,gBAAgB,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,EAAE,EAAE,CAAC;YACP,CAAC;YAAC,MAAM,CAAC;gBACP,sBAAsB;YACxB,CAAC;QACH,CAAC;QACD,kEAAkE;QAClE,8DAA8D;QAC9D,kEAAkE;QAClE,wBAAwB;QACxB,MAAM,IAAI,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3C,YAAY,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=server.cors.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.cors.test.d.ts","sourceRoot":"","sources":["../../../src/fork/__tests__/server.cors.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,79 @@
1
+ import { afterEach, beforeEach, describe, expect, it } from "vitest";
2
+ import { mkdtempSync, rmSync, mkdirSync, writeFileSync } from "node:fs";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { ForkServer } from "../server.js";
6
+ /**
7
+ * F2 — ForkServer must not advertise `Access-Control-Allow-Origin: *`
8
+ * by default. Cached fork state may include account resources fetched
9
+ * from authenticated upstream nodes; any web page open in the dev's
10
+ * browser should not be able to read it through the loopback listener.
11
+ *
12
+ * Default contract:
13
+ * - No CORS header emitted unless the caller opts in via
14
+ * `corsAllowOrigins`.
15
+ * - When opted in, only requests whose `Origin` is in the allowlist
16
+ * receive a matching `Access-Control-Allow-Origin` (echo of origin,
17
+ * not `*`).
18
+ */
19
+ function makeForkDir() {
20
+ const dir = mkdtempSync(join(tmpdir(), "movehat-fork-cors-"));
21
+ mkdirSync(join(dir, "resources"), { recursive: true });
22
+ writeFileSync(join(dir, "metadata.json"), JSON.stringify({
23
+ network: "test",
24
+ nodeUrl: "http://example.invalid/v1",
25
+ chainId: 0,
26
+ ledgerVersion: "0",
27
+ timestamp: "0",
28
+ epoch: "0",
29
+ blockHeight: "0",
30
+ createdAt: new Date().toISOString(),
31
+ }));
32
+ writeFileSync(join(dir, "accounts.json"), "{}");
33
+ return dir;
34
+ }
35
+ function boundPort(server) {
36
+ const internal = server.server;
37
+ const addr = internal.address();
38
+ return addr.port;
39
+ }
40
+ async function fetchFromServer(port, origin) {
41
+ const headers = {};
42
+ if (origin !== undefined)
43
+ headers.Origin = origin;
44
+ return fetch(`http://127.0.0.1:${port}/v1/`, { headers });
45
+ }
46
+ describe("F2 — ForkServer CORS is closed by default", () => {
47
+ let forkDir;
48
+ let server = null;
49
+ beforeEach(() => {
50
+ forkDir = makeForkDir();
51
+ });
52
+ afterEach(async () => {
53
+ if (server) {
54
+ await server.stop();
55
+ server = null;
56
+ }
57
+ rmSync(forkDir, { recursive: true, force: true });
58
+ });
59
+ it("does not emit Access-Control-Allow-Origin by default", async () => {
60
+ server = new ForkServer(forkDir, 0);
61
+ await server.start();
62
+ const port = boundPort(server);
63
+ const res = await fetchFromServer(port, "https://evil.example");
64
+ expect(res.status).toBe(200);
65
+ expect(res.headers.get("access-control-allow-origin")).toBeNull();
66
+ });
67
+ it("echoes only allow-listed origins when corsAllowOrigins is set", async () => {
68
+ server = new ForkServer(forkDir, 0, "127.0.0.1", {
69
+ corsAllowOrigins: ["https://trusted.example"],
70
+ });
71
+ await server.start();
72
+ const port = boundPort(server);
73
+ const allowed = await fetchFromServer(port, "https://trusted.example");
74
+ expect(allowed.headers.get("access-control-allow-origin")).toBe("https://trusted.example");
75
+ const denied = await fetchFromServer(port, "https://evil.example");
76
+ expect(denied.headers.get("access-control-allow-origin")).toBeNull();
77
+ });
78
+ });
79
+ //# sourceMappingURL=server.cors.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.cors.test.js","sourceRoot":"","sources":["../../../src/fork/__tests__/server.cors.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,10 @@
1
1
  import type { LedgerInfo, AccountData, AccountResource } from '../types/fork.js';
2
+ export interface MovementApiClientOptions {
3
+ /** Abort the request after this many ms (default: 30_000). */
4
+ timeoutMs?: number;
5
+ /** Reject responses larger than this many bytes (default: 16 MiB). */
6
+ maxBytes?: number;
7
+ }
2
8
  /**
3
9
  * Client for interacting with Movement L1 JSON API.
4
10
  *
@@ -10,7 +16,9 @@ import type { LedgerInfo, AccountData, AccountResource } from '../types/fork.js'
10
16
  export declare class MovementApiClient {
11
17
  private nodeUrl;
12
18
  private readonly apiKey?;
13
- constructor(nodeUrl: string, apiKey?: string);
19
+ private readonly timeoutMs;
20
+ private readonly maxBytes;
21
+ constructor(nodeUrl: string, apiKey?: string, options?: MovementApiClientOptions);
14
22
  /**
15
23
  * Make a GET request to the API.
16
24
  *
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/fork/api.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGjF;;;;;;;GAOG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;gBAErB,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAc5C;;;;;;;OAOG;YACW,GAAG;IA6CjB;;OAEG;IACH,OAAO,CAAC,OAAO;IAMf;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAMvD;;OAEG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAS7E;;OAEG;IACG,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAKvE"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/fork/api.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGjF,MAAM,WAAW,wBAAwB;IACvC,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD;;;;;;;GAOG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;gBAGhC,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,GAAE,wBAA6B;IAiBxC;;;;;;;OAOG;YACW,GAAG;IAsFjB;;OAEG;IACH,OAAO,CAAC,OAAO;IAMf;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAI1C;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAMvD;;OAEG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAS7E;;OAEG;IACG,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAKvE"}
package/dist/fork/api.js CHANGED
@@ -2,6 +2,8 @@ import https from 'https';
2
2
  import http from 'http';
3
3
  import { URL } from 'url';
4
4
  import { normalizeAddressShort } from '../utils/address.js';
5
+ const DEFAULT_TIMEOUT_MS = 30_000;
6
+ const DEFAULT_MAX_BYTES = 16 * 1024 * 1024;
5
7
  /**
6
8
  * Client for interacting with Movement L1 JSON API.
7
9
  *
@@ -13,7 +15,9 @@ import { normalizeAddressShort } from '../utils/address.js';
13
15
  export class MovementApiClient {
14
16
  nodeUrl;
15
17
  apiKey;
16
- constructor(nodeUrl, apiKey) {
18
+ timeoutMs;
19
+ maxBytes;
20
+ constructor(nodeUrl, apiKey, options = {}) {
17
21
  // Remove trailing slash
18
22
  let normalized = nodeUrl.replace(/\/$/, '');
19
23
  // If URL already ends with /v1, use as is
@@ -24,6 +28,8 @@ export class MovementApiClient {
24
28
  this.nodeUrl = normalized;
25
29
  if (apiKey !== undefined)
26
30
  this.apiKey = apiKey;
31
+ this.timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
32
+ this.maxBytes = options.maxBytes ?? DEFAULT_MAX_BYTES;
27
33
  }
28
34
  /**
29
35
  * Make a GET request to the API.
@@ -42,28 +48,52 @@ export class MovementApiClient {
42
48
  if (this.apiKey !== undefined) {
43
49
  requestOptions.headers = { Authorization: `Bearer ${this.apiKey}` };
44
50
  }
51
+ const timeoutMs = this.timeoutMs;
52
+ const maxBytes = this.maxBytes;
45
53
  return new Promise((resolve, reject) => {
54
+ let settled = false;
55
+ const settle = (fn) => {
56
+ if (settled)
57
+ return;
58
+ settled = true;
59
+ fn();
60
+ };
46
61
  const req = client.get(fullUrl, requestOptions, (res) => {
47
- let data = '';
62
+ const chunks = [];
63
+ let totalBytes = 0;
48
64
  res.on('data', (chunk) => {
49
- data += chunk;
65
+ const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
66
+ totalBytes += buf.length;
67
+ if (totalBytes > maxBytes) {
68
+ req.destroy();
69
+ settle(() => reject(new Error(`Response exceeded maxBytes (${maxBytes}); ${totalBytes} bytes received before abort`)));
70
+ return;
71
+ }
72
+ chunks.push(buf);
50
73
  });
51
74
  res.on('end', () => {
75
+ if (settled)
76
+ return;
77
+ const data = Buffer.concat(chunks).toString('utf8');
52
78
  if (res.statusCode !== 200) {
53
- reject(new Error(`API request failed with status ${res.statusCode}: ${data}`));
79
+ settle(() => reject(new Error(`API request failed with status ${res.statusCode}: ${data}`)));
54
80
  return;
55
81
  }
56
82
  try {
57
83
  const parsed = JSON.parse(data);
58
- resolve(parsed);
84
+ settle(() => resolve(parsed));
59
85
  }
60
86
  catch (err) {
61
- reject(new Error(`Failed to parse JSON response: ${err}`));
87
+ settle(() => reject(new Error(`Failed to parse JSON response: ${err}`)));
62
88
  }
63
89
  });
64
90
  });
91
+ req.setTimeout(timeoutMs, () => {
92
+ req.destroy();
93
+ settle(() => reject(new Error(`API request timed out after ${timeoutMs}ms`)));
94
+ });
65
95
  req.on('error', (err) => {
66
- reject(new Error(`API request failed: ${err.message}`));
96
+ settle(() => reject(new Error(`API request failed: ${err.message}`)));
67
97
  });
68
98
  req.end();
69
99
  });