movehat 0.2.2 → 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 (71) hide show
  1. package/dist/cli.js +4 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/compile.d.ts.map +1 -1
  4. package/dist/commands/compile.js +19 -10
  5. package/dist/commands/compile.js.map +1 -1
  6. package/dist/commands/test.js +12 -19
  7. package/dist/commands/test.js.map +1 -1
  8. package/dist/core/Publisher.d.ts.map +1 -1
  9. package/dist/core/Publisher.js +20 -14
  10. package/dist/core/Publisher.js.map +1 -1
  11. package/dist/core/config.d.ts.map +1 -1
  12. package/dist/core/config.js +8 -5
  13. package/dist/core/config.js.map +1 -1
  14. package/dist/core/deployments.d.ts.map +1 -1
  15. package/dist/core/deployments.js +4 -2
  16. package/dist/core/deployments.js.map +1 -1
  17. package/dist/fork/manager.js +10 -10
  18. package/dist/fork/manager.js.map +1 -1
  19. package/dist/fork/server.d.ts.map +1 -1
  20. package/dist/fork/server.js +21 -15
  21. package/dist/fork/server.js.map +1 -1
  22. package/dist/fork/test.d.ts.map +1 -1
  23. package/dist/fork/test.js +3 -2
  24. package/dist/fork/test.js.map +1 -1
  25. package/dist/harness/codeObject.js +11 -8
  26. package/dist/harness/codeObject.js.map +1 -1
  27. package/dist/harness/script.d.ts.map +1 -1
  28. package/dist/harness/script.js +9 -6
  29. package/dist/harness/script.js.map +1 -1
  30. package/dist/helpers/setupLocalTesting.js +3 -3
  31. package/dist/helpers/setupLocalTesting.js.map +1 -1
  32. package/dist/node/LocalNodeManager.d.ts.map +1 -1
  33. package/dist/node/LocalNodeManager.js +60 -22
  34. package/dist/node/LocalNodeManager.js.map +1 -1
  35. package/dist/node/__tests__/LocalNodeManager.test.js +110 -11
  36. package/dist/node/__tests__/LocalNodeManager.test.js.map +1 -1
  37. package/dist/ui/__tests__/logger.test.d.ts +2 -0
  38. package/dist/ui/__tests__/logger.test.d.ts.map +1 -0
  39. package/dist/ui/__tests__/logger.test.js +75 -0
  40. package/dist/ui/__tests__/logger.test.js.map +1 -0
  41. package/dist/ui/formatters.d.ts +0 -16
  42. package/dist/ui/formatters.d.ts.map +1 -1
  43. package/dist/ui/formatters.js +1 -1
  44. package/dist/ui/formatters.js.map +1 -1
  45. package/dist/ui/logger.d.ts +41 -0
  46. package/dist/ui/logger.d.ts.map +1 -1
  47. package/dist/ui/logger.js +49 -0
  48. package/dist/ui/logger.js.map +1 -1
  49. package/dist/ui/spinner.d.ts +25 -0
  50. package/dist/ui/spinner.d.ts.map +1 -1
  51. package/dist/ui/spinner.js +44 -0
  52. package/dist/ui/spinner.js.map +1 -1
  53. package/package.json +1 -1
  54. package/src/cli.ts +4 -0
  55. package/src/commands/compile.ts +24 -15
  56. package/src/commands/test.ts +12 -19
  57. package/src/core/Publisher.ts +49 -34
  58. package/src/core/config.ts +9 -6
  59. package/src/core/deployments.ts +5 -4
  60. package/src/fork/manager.ts +10 -10
  61. package/src/fork/server.ts +21 -15
  62. package/src/fork/test.ts +3 -2
  63. package/src/harness/codeObject.ts +8 -5
  64. package/src/harness/script.ts +7 -4
  65. package/src/helpers/setupLocalTesting.ts +3 -3
  66. package/src/node/LocalNodeManager.ts +63 -24
  67. package/src/node/__tests__/LocalNodeManager.test.ts +140 -14
  68. package/src/ui/__tests__/logger.test.ts +89 -0
  69. package/src/ui/formatters.ts +1 -1
  70. package/src/ui/logger.ts +62 -0
  71. package/src/ui/spinner.ts +47 -0
package/src/ui/spinner.ts CHANGED
@@ -103,6 +103,53 @@ export const withSpinner = async <T>(
103
103
  }
104
104
  };
105
105
 
106
+ /**
107
+ * Execute async task with a spinner that updates its label with
108
+ * elapsed seconds while the task runs. Use for long-running phases
109
+ * (local node startup, publish + tx wait) where the user wants
110
+ * visible progress feedback in lieu of subprocess chatter.
111
+ *
112
+ * Pairs with the `§9` console-UX convention: any phase that
113
+ * empirically takes ≥3s in normal use should wrap its body in
114
+ * `withTimedSpinner` so the terminal never goes silent while work
115
+ * happens.
116
+ *
117
+ * @param label - Stable label shown next to the spinner (e.g. "Starting node")
118
+ * @param task - Async function to execute
119
+ * @param indent - Number of spaces to indent (default: 0)
120
+ * @returns Promise resolving to task result
121
+ *
122
+ * @example
123
+ * await withTimedSpinner('Starting local node', async () => {
124
+ * await this.waitForReady(60_000);
125
+ * });
126
+ * // Renders: ⠋ Starting local node — 0.0s ... ⠼ Starting local node — 14.2s
127
+ * // On success: ✔ Starting local node (14.2s)
128
+ * // On error: ✖ <error.message>
129
+ */
130
+ export const withTimedSpinner = async <T>(
131
+ label: string,
132
+ task: () => Promise<T>,
133
+ indent: number = 0
134
+ ): Promise<T> => {
135
+ const start = Date.now();
136
+ const spin = spinner({ text: `${label} — 0.0s`, indent });
137
+ const timer = setInterval(() => {
138
+ spin.text = `${label} — ${((Date.now() - start) / 1000).toFixed(1)}s`;
139
+ }, 500);
140
+ try {
141
+ const result = await task();
142
+ spin.succeed(`${label} (${((Date.now() - start) / 1000).toFixed(1)}s)`);
143
+ return result;
144
+ } catch (error) {
145
+ const errMsg = error instanceof Error ? error.message : String(error);
146
+ spin.fail(errMsg);
147
+ throw error;
148
+ } finally {
149
+ clearInterval(timer);
150
+ }
151
+ };
152
+
106
153
  /**
107
154
  * Spinner chain for sequential operations
108
155
  * Manages multiple spinners in sequence