movehat 0.2.1 → 0.2.2

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 (134) 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/commands/__tests__/compile.toml-mutation.test.d.ts +2 -0
  18. package/dist/commands/__tests__/compile.toml-mutation.test.d.ts.map +1 -0
  19. package/dist/commands/__tests__/compile.toml-mutation.test.js +69 -0
  20. package/dist/commands/__tests__/compile.toml-mutation.test.js.map +1 -0
  21. package/dist/commands/__tests__/init.test.js +73 -11
  22. package/dist/commands/__tests__/init.test.js.map +1 -1
  23. package/dist/commands/init.d.ts +22 -0
  24. package/dist/commands/init.d.ts.map +1 -1
  25. package/dist/commands/init.js +55 -6
  26. package/dist/commands/init.js.map +1 -1
  27. package/dist/core/AccountManager.d.ts.map +1 -1
  28. package/dist/core/AccountManager.js +14 -2
  29. package/dist/core/AccountManager.js.map +1 -1
  30. package/dist/core/Publisher.d.ts.map +1 -1
  31. package/dist/core/Publisher.js +52 -68
  32. package/dist/core/Publisher.js.map +1 -1
  33. package/dist/core/__tests__/AccountManager.global-state.test.d.ts +2 -0
  34. package/dist/core/__tests__/AccountManager.global-state.test.d.ts.map +1 -0
  35. package/dist/core/__tests__/AccountManager.global-state.test.js +69 -0
  36. package/dist/core/__tests__/AccountManager.global-state.test.js.map +1 -0
  37. package/dist/core/__tests__/movementProfile.test.d.ts +2 -0
  38. package/dist/core/__tests__/movementProfile.test.d.ts.map +1 -0
  39. package/dist/core/__tests__/movementProfile.test.js +112 -0
  40. package/dist/core/__tests__/movementProfile.test.js.map +1 -0
  41. package/dist/core/config.js +6 -5
  42. package/dist/core/config.js.map +1 -1
  43. package/dist/core/movementProfile.d.ts +55 -22
  44. package/dist/core/movementProfile.d.ts.map +1 -1
  45. package/dist/core/movementProfile.js +77 -99
  46. package/dist/core/movementProfile.js.map +1 -1
  47. package/dist/fork/__tests__/server.cors.test.d.ts +2 -0
  48. package/dist/fork/__tests__/server.cors.test.d.ts.map +1 -0
  49. package/dist/fork/__tests__/server.cors.test.js +79 -0
  50. package/dist/fork/__tests__/server.cors.test.js.map +1 -0
  51. package/dist/fork/api.d.ts +9 -1
  52. package/dist/fork/api.d.ts.map +1 -1
  53. package/dist/fork/api.js +37 -7
  54. package/dist/fork/api.js.map +1 -1
  55. package/dist/fork/server.d.ts +20 -1
  56. package/dist/fork/server.d.ts.map +1 -1
  57. package/dist/fork/server.js +19 -9
  58. package/dist/fork/server.js.map +1 -1
  59. package/dist/harness/Harness.d.ts +6 -2
  60. package/dist/harness/Harness.d.ts.map +1 -1
  61. package/dist/harness/Harness.js +8 -2
  62. package/dist/harness/Harness.js.map +1 -1
  63. package/dist/harness/codeObject.d.ts.map +1 -1
  64. package/dist/harness/codeObject.js +30 -33
  65. package/dist/harness/codeObject.js.map +1 -1
  66. package/dist/harness/script.d.ts +3 -3
  67. package/dist/harness/script.d.ts.map +1 -1
  68. package/dist/harness/script.js +33 -29
  69. package/dist/harness/script.js.map +1 -1
  70. package/dist/helpers/__tests__/setupLocalTesting.fork-network.test.d.ts +2 -0
  71. package/dist/helpers/__tests__/setupLocalTesting.fork-network.test.d.ts.map +1 -0
  72. package/dist/helpers/__tests__/setupLocalTesting.fork-network.test.js +172 -0
  73. package/dist/helpers/__tests__/setupLocalTesting.fork-network.test.js.map +1 -0
  74. package/dist/helpers/setupLocalTesting.d.ts.map +1 -1
  75. package/dist/helpers/setupLocalTesting.js +28 -2
  76. package/dist/helpers/setupLocalTesting.js.map +1 -1
  77. package/dist/index.d.ts +1 -0
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/node/LocalNodeManager.d.ts +8 -0
  80. package/dist/node/LocalNodeManager.d.ts.map +1 -1
  81. package/dist/node/LocalNodeManager.js +10 -1
  82. package/dist/node/LocalNodeManager.js.map +1 -1
  83. package/dist/node/__tests__/LocalNodeManager.api-port.test.d.ts +2 -0
  84. package/dist/node/__tests__/LocalNodeManager.api-port.test.d.ts.map +1 -0
  85. package/dist/node/__tests__/LocalNodeManager.api-port.test.js +55 -0
  86. package/dist/node/__tests__/LocalNodeManager.api-port.test.js.map +1 -0
  87. package/dist/node/__tests__/LocalNodeManager.test.js +4 -3
  88. package/dist/node/__tests__/LocalNodeManager.test.js.map +1 -1
  89. package/dist/templates/move/Move.toml +1 -1
  90. package/dist/templates/move/sources/Counter.move +31 -4
  91. package/dist/templates/scripts/deploy-counter.ts +10 -0
  92. package/dist/types/config.d.ts +8 -1
  93. package/dist/types/config.d.ts.map +1 -1
  94. package/dist/utils/__tests__/childProcessAdapter.maxBuffer.test.d.ts +2 -0
  95. package/dist/utils/__tests__/childProcessAdapter.maxBuffer.test.d.ts.map +1 -0
  96. package/dist/utils/__tests__/childProcessAdapter.maxBuffer.test.js +43 -0
  97. package/dist/utils/__tests__/childProcessAdapter.maxBuffer.test.js.map +1 -0
  98. package/dist/utils/childProcessAdapter.d.ts +7 -0
  99. package/dist/utils/childProcessAdapter.d.ts.map +1 -1
  100. package/dist/utils/childProcessAdapter.js +20 -2
  101. package/dist/utils/childProcessAdapter.js.map +1 -1
  102. package/package.json +1 -1
  103. package/src/__tests__/deployContract.test.ts +59 -50
  104. package/src/__tests__/exports.test.ts +32 -0
  105. package/src/__tests__/fixtures/sigint-deploy-harness.ts +8 -7
  106. package/src/__tests__/fork/api.test.ts +5 -0
  107. package/src/__tests__/fork/api.timeout.test.ts +150 -0
  108. package/src/commands/__tests__/compile.toml-mutation.test.ts +77 -0
  109. package/src/commands/__tests__/init.test.ts +96 -11
  110. package/src/commands/init.ts +77 -6
  111. package/src/core/AccountManager.ts +18 -1
  112. package/src/core/Publisher.ts +58 -77
  113. package/src/core/__tests__/AccountManager.global-state.test.ts +83 -0
  114. package/src/core/__tests__/movementProfile.test.ts +131 -0
  115. package/src/core/config.ts +9 -5
  116. package/src/core/movementProfile.ts +75 -127
  117. package/src/fork/__tests__/server.cors.test.ts +101 -0
  118. package/src/fork/api.ts +69 -10
  119. package/src/fork/server.ts +38 -9
  120. package/src/harness/Harness.ts +11 -2
  121. package/src/harness/codeObject.ts +37 -43
  122. package/src/harness/script.ts +40 -39
  123. package/src/helpers/__tests__/setupLocalTesting.fork-network.test.ts +212 -0
  124. package/src/helpers/setupLocalTesting.ts +36 -2
  125. package/src/index.ts +9 -1
  126. package/src/node/LocalNodeManager.ts +24 -2
  127. package/src/node/__tests__/LocalNodeManager.api-port.test.ts +62 -0
  128. package/src/node/__tests__/LocalNodeManager.test.ts +4 -3
  129. package/src/templates/move/Move.toml +1 -1
  130. package/src/templates/move/sources/Counter.move +31 -4
  131. package/src/templates/scripts/deploy-counter.ts +10 -0
  132. package/src/types/config.ts +8 -1
  133. package/src/utils/__tests__/childProcessAdapter.maxBuffer.test.ts +51 -0
  134. package/src/utils/childProcessAdapter.ts +32 -2
@@ -1 +1 @@
1
- {"version":3,"file":"Publisher.js","sourceRoot":"","sources":["../../src/core/Publisher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Publisher.js","sourceRoot":"","sources":["../../src/core/Publisher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AccountManager.global-state.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountManager.global-state.test.d.ts","sourceRoot":"","sources":["../../../src/core/__tests__/AccountManager.global-state.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,69 @@
1
+ import { afterEach, beforeEach, describe, expect, it } from "vitest";
2
+ import { existsSync, mkdtempSync, rmSync } from "node:fs";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { AccountManager } from "../AccountManager.js";
6
+ /**
7
+ * F8 — Document the two known limitations of `AccountManager`:
8
+ *
9
+ * (a) State is class-static. Two harness "sessions" in the same
10
+ * process share the pool, the labelMap, and the private-key
11
+ * map. A label re-used across sessions overwrites the entry.
12
+ * This is intentional per `Harness.ts:39-42` ("Two Harness
13
+ * instances in the same process share account labels"). This
14
+ * test captures the contract so a future refactor cannot
15
+ * silently change it.
16
+ *
17
+ * (b) `defaultPoolPath = join(process.cwd(), ".movehat", "accounts")`
18
+ * is evaluated when the module is first imported, NOT lazily on
19
+ * each call. Changing `process.cwd()` after import does not move
20
+ * the save destination. Callers needing per-test isolation must
21
+ * pass an explicit `poolPath` argument.
22
+ */
23
+ describe("F8 — AccountManager static state and import-time cwd capture", () => {
24
+ let cwdBackup;
25
+ let tmpDir;
26
+ beforeEach(() => {
27
+ AccountManager.clearPool();
28
+ cwdBackup = process.cwd();
29
+ tmpDir = mkdtempSync(join(tmpdir(), "movehat-f8-"));
30
+ });
31
+ afterEach(() => {
32
+ AccountManager.clearPool();
33
+ if (process.cwd() !== cwdBackup) {
34
+ process.chdir(cwdBackup);
35
+ }
36
+ rmSync(tmpDir, { recursive: true, force: true });
37
+ });
38
+ it("(a) re-creating an account with an existing label overwrites the labelMap entry", () => {
39
+ const first = AccountManager.createAccount("alice");
40
+ const second = AccountManager.createAccount("alice");
41
+ expect(second.accountAddress.toString()).not.toBe(first.accountAddress.toString());
42
+ const lookup = AccountManager.getAccountByLabel("alice");
43
+ expect(lookup).toBeDefined();
44
+ expect(lookup.accountAddress.toString()).toBe(second.accountAddress.toString());
45
+ // The first account is still in the pool (keyed by address), only
46
+ // the label binding moved. A second harness session that creates
47
+ // its own "alice" will silently shadow the first — this is the
48
+ // documented Harness limitation. exportPrivateKeys reflects the
49
+ // current label binding (i.e. the second account).
50
+ const exportedKeys = AccountManager.exportPrivateKeys(["alice"]);
51
+ expect(exportedKeys.alice).toBeTypeOf("string");
52
+ expect(exportedKeys.alice.length).toBeGreaterThan(0);
53
+ });
54
+ it("(b) saveAccountPool ignores a process.chdir after import; defaults to the import-time cwd", () => {
55
+ AccountManager.createAccount("bob");
56
+ process.chdir(tmpDir);
57
+ // No path argument → uses defaultPoolPath, which was set at module
58
+ // load time before this chdir.
59
+ AccountManager.saveAccountPool();
60
+ // The pool file must NOT appear under the freshly-chdir'd cwd.
61
+ const expectedAtNewCwd = join(tmpDir, ".movehat", "accounts", "test-pool.json");
62
+ expect(existsSync(expectedAtNewCwd)).toBe(false);
63
+ // Sanity check: explicit poolPath does land where the caller asked.
64
+ const explicit = join(tmpDir, "explicit");
65
+ AccountManager.saveAccountPool(explicit);
66
+ expect(existsSync(join(explicit, "test-pool.json"))).toBe(true);
67
+ });
68
+ });
69
+ //# sourceMappingURL=AccountManager.global-state.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountManager.global-state.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/AccountManager.global-state.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=movementProfile.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"movementProfile.test.d.ts","sourceRoot":"","sources":["../../../src/core/__tests__/movementProfile.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,112 @@
1
+ import { describe, it, expect, beforeEach, afterEach } from "vitest";
2
+ import { chmodSync, existsSync, mkdirSync, mkdtempSync, rmSync, writeFileSync, } from "node:fs";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { removeKeyFile, removeKeyFileSyncBestEffort, writeTempKeyFile, } from "../movementProfile.js";
6
+ /**
7
+ * Unit tests for the two distinct cleanup helpers in movementProfile:
8
+ *
9
+ * - `removeKeyFileSyncBestEffort`: for SIGINT/SIGTERM handlers where
10
+ * the event loop is dead. Never throws, never logs, always returns
11
+ * void. We only test that it doesn't throw.
12
+ *
13
+ * - `removeKeyFile`: for normal `finally` cleanup paths. Returns
14
+ * `null` when the file is gone (removed OR already absent — both
15
+ * are benign), and returns an `Error` only when the file STILL
16
+ * exists on disk after the unlink attempt failed. The Error path
17
+ * is exactly the case the caller must surface as a warning,
18
+ * because a private-key temp file would otherwise persist
19
+ * silently.
20
+ */
21
+ describe("movementProfile cleanup helpers", () => {
22
+ let scratchDir;
23
+ beforeEach(() => {
24
+ scratchDir = mkdtempSync(join(tmpdir(), "movehat-profile-test-"));
25
+ });
26
+ afterEach(() => {
27
+ if (existsSync(scratchDir)) {
28
+ // Force chmod in case a test left it un-removable, then rmSync.
29
+ try {
30
+ chmodSync(scratchDir, 0o700);
31
+ }
32
+ catch {
33
+ /* best-effort */
34
+ }
35
+ rmSync(scratchDir, { recursive: true, force: true });
36
+ }
37
+ });
38
+ describe("writeTempKeyFile", () => {
39
+ it("creates a 0o600 file in os.tmpdir() with the key as contents", () => {
40
+ const path = writeTempKeyFile("ed25519-priv-0x" + "a".repeat(64));
41
+ try {
42
+ expect(path.startsWith(tmpdir())).toBe(true);
43
+ expect(path).toMatch(/movehat-key-/);
44
+ expect(existsSync(path)).toBe(true);
45
+ }
46
+ finally {
47
+ if (existsSync(path))
48
+ rmSync(path);
49
+ }
50
+ });
51
+ });
52
+ describe("removeKeyFileSyncBestEffort", () => {
53
+ it("removes an existing file", () => {
54
+ const path = join(scratchDir, "key");
55
+ writeFileSync(path, "x", { mode: 0o600 });
56
+ removeKeyFileSyncBestEffort(path);
57
+ expect(existsSync(path)).toBe(false);
58
+ });
59
+ it("does not throw when the file is already gone", () => {
60
+ const path = join(scratchDir, "never-existed");
61
+ expect(() => removeKeyFileSyncBestEffort(path)).not.toThrow();
62
+ });
63
+ it("does not throw when the path is a non-empty directory (would fail in stricter callers)", () => {
64
+ const dirPath = join(scratchDir, "i-am-a-directory");
65
+ mkdirSync(dirPath);
66
+ writeFileSync(join(dirPath, "child"), "x");
67
+ expect(() => removeKeyFileSyncBestEffort(dirPath)).not.toThrow();
68
+ // The dir still exists — best-effort doesn't fight EISDIR.
69
+ expect(existsSync(dirPath)).toBe(true);
70
+ });
71
+ });
72
+ describe("removeKeyFile", () => {
73
+ it("returns null when the file is removed cleanly", () => {
74
+ const path = join(scratchDir, "key-to-remove");
75
+ writeFileSync(path, "x", { mode: 0o600 });
76
+ const err = removeKeyFile(path);
77
+ expect(err).toBeNull();
78
+ expect(existsSync(path)).toBe(false);
79
+ });
80
+ it("returns null when the file was already gone (ENOENT is benign)", () => {
81
+ const path = join(scratchDir, "never-existed");
82
+ const err = removeKeyFile(path);
83
+ expect(err).toBeNull();
84
+ });
85
+ it("returns null when the file disappears between the unlink attempt and the existsSync check (race)", () => {
86
+ // Hard to provoke a real race deterministically. The contract is
87
+ // documented; the previous test covers the ENOENT short-circuit
88
+ // which is the common race outcome.
89
+ const path = join(scratchDir, "raced");
90
+ const err = removeKeyFile(path);
91
+ expect(err).toBeNull();
92
+ });
93
+ it("returns an Error when the path is a directory AND still exists post-attempt", () => {
94
+ // unlinkSync on a directory throws EISDIR (or EPERM on some
95
+ // platforms). existsSync afterwards still returns true, so this
96
+ // is the "preocupante" path the caller must surface as a warning
97
+ // — the file (here, a directory occupying the key-file path) is
98
+ // still on disk.
99
+ const dirPath = join(scratchDir, "key-but-actually-a-dir");
100
+ mkdirSync(dirPath);
101
+ writeFileSync(join(dirPath, "child"), "x"); // make sure it's not empty
102
+ const err = removeKeyFile(dirPath);
103
+ expect(err).not.toBeNull();
104
+ expect(err).toBeInstanceOf(Error);
105
+ // Error code is platform-dependent (EISDIR on linux, EPERM on
106
+ // macos), so just assert we got something Error-shaped.
107
+ expect(err.code).toMatch(/^E/);
108
+ expect(existsSync(dirPath)).toBe(true);
109
+ });
110
+ });
111
+ });
112
+ //# sourceMappingURL=movementProfile.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"movementProfile.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/movementProfile.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { pathToFileURL } from "url";
2
2
  import { join } from "path";
3
3
  import { existsSync, statSync } from "fs";
4
- import { Account, Ed25519PrivateKey } from "@aptos-labs/ts-sdk";
4
+ import { Account, Ed25519PrivateKey, PrivateKey, PrivateKeyVariants } from "@aptos-labs/ts-sdk";
5
5
  // Keyed by resolved absolute path. One entry per config file the process
6
6
  // has loaded. Closes #62 — the previous `?t=Date.now()` cache-bust
7
7
  // created a fresh Node loader module per call.
@@ -213,11 +213,12 @@ function deriveAccountAddress(privateKeyHex) {
213
213
  if (!privateKeyHex)
214
214
  return "";
215
215
  try {
216
- const stripped = privateKeyHex.startsWith("ed25519-priv-")
217
- ? privateKeyHex.slice("ed25519-priv-".length)
218
- : privateKeyHex;
216
+ // Format into AIP-80 shape so the SDK doesn't emit a deprecation
217
+ // warning on each derivation. `formatPrivateKey` is idempotent for
218
+ // already-prefixed inputs.
219
+ const formatted = PrivateKey.formatPrivateKey(privateKeyHex, PrivateKeyVariants.Ed25519);
219
220
  const account = Account.fromPrivateKey({
220
- privateKey: new Ed25519PrivateKey(stripped),
221
+ privateKey: new Ed25519PrivateKey(formatted),
221
222
  });
222
223
  return account.accountAddress.toString();
223
224
  }
@@ -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,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();