movehat 0.1.1 → 0.1.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 (71) hide show
  1. package/dist/commands/compile.d.ts +13 -0
  2. package/dist/commands/compile.d.ts.map +1 -1
  3. package/dist/commands/compile.js +31 -11
  4. package/dist/commands/compile.js.map +1 -1
  5. package/dist/commands/fork/create.d.ts +20 -1
  6. package/dist/commands/fork/create.d.ts.map +1 -1
  7. package/dist/commands/fork/create.js +54 -20
  8. package/dist/commands/fork/create.js.map +1 -1
  9. package/dist/commands/fork/list.d.ts +12 -1
  10. package/dist/commands/fork/list.d.ts.map +1 -1
  11. package/dist/commands/fork/list.js +50 -22
  12. package/dist/commands/fork/list.js.map +1 -1
  13. package/dist/commands/init.d.ts +19 -0
  14. package/dist/commands/init.d.ts.map +1 -1
  15. package/dist/commands/init.js +64 -29
  16. package/dist/commands/init.js.map +1 -1
  17. package/dist/commands/update.d.ts +11 -1
  18. package/dist/commands/update.d.ts.map +1 -1
  19. package/dist/commands/update.js +44 -18
  20. package/dist/commands/update.js.map +1 -1
  21. package/dist/helpers/banner.d.ts +17 -0
  22. package/dist/helpers/banner.d.ts.map +1 -1
  23. package/dist/helpers/banner.js +38 -23
  24. package/dist/helpers/banner.js.map +1 -1
  25. package/dist/helpers/version-check.d.ts +12 -1
  26. package/dist/helpers/version-check.d.ts.map +1 -1
  27. package/dist/helpers/version-check.js +17 -7
  28. package/dist/helpers/version-check.js.map +1 -1
  29. package/dist/ui/colors.d.ts +77 -0
  30. package/dist/ui/colors.d.ts.map +1 -0
  31. package/dist/ui/colors.js +121 -0
  32. package/dist/ui/colors.js.map +1 -0
  33. package/dist/ui/formatters.d.ts +171 -0
  34. package/dist/ui/formatters.d.ts.map +1 -0
  35. package/dist/ui/formatters.js +186 -0
  36. package/dist/ui/formatters.js.map +1 -0
  37. package/dist/ui/index.d.ts +58 -0
  38. package/dist/ui/index.d.ts.map +1 -0
  39. package/dist/ui/index.js +60 -0
  40. package/dist/ui/index.js.map +1 -0
  41. package/dist/ui/logger.d.ts +160 -0
  42. package/dist/ui/logger.d.ts.map +1 -0
  43. package/dist/ui/logger.js +206 -0
  44. package/dist/ui/logger.js.map +1 -0
  45. package/dist/ui/spinner.d.ts +106 -0
  46. package/dist/ui/spinner.d.ts.map +1 -0
  47. package/dist/ui/spinner.js +120 -0
  48. package/dist/ui/spinner.js.map +1 -0
  49. package/dist/ui/symbols.d.ts +50 -0
  50. package/dist/ui/symbols.d.ts.map +1 -0
  51. package/dist/ui/symbols.js +64 -0
  52. package/dist/ui/symbols.js.map +1 -0
  53. package/dist/ui/table.d.ts +67 -0
  54. package/dist/ui/table.d.ts.map +1 -0
  55. package/dist/ui/table.js +143 -0
  56. package/dist/ui/table.js.map +1 -0
  57. package/package.json +8 -1
  58. package/src/commands/compile.ts +32 -11
  59. package/src/commands/fork/create.ts +59 -20
  60. package/src/commands/fork/list.ts +52 -22
  61. package/src/commands/init.ts +111 -74
  62. package/src/commands/update.ts +52 -19
  63. package/src/helpers/banner.ts +45 -29
  64. package/src/helpers/version-check.ts +20 -8
  65. package/src/ui/colors.ts +141 -0
  66. package/src/ui/formatters.ts +246 -0
  67. package/src/ui/index.ts +62 -0
  68. package/src/ui/logger.ts +226 -0
  69. package/src/ui/spinner.ts +171 -0
  70. package/src/ui/symbols.ts +74 -0
  71. package/src/ui/table.ts +191 -0
@@ -1,5 +1,15 @@
1
1
  /**
2
- * Update command - checks for updates and installs the latest version
2
+ * Update Movehat CLI to the latest version from npm
3
+ *
4
+ * This command:
5
+ * - Fetches the latest version from npm registry
6
+ * - Compares with currently installed version
7
+ * - Auto-detects package manager (npm/yarn/pnpm)
8
+ * - Installs the update if a newer version is available
9
+ *
10
+ * @example
11
+ * // Update to latest version
12
+ * await updateCommand();
3
13
  */
4
14
  export default function updateCommand(): Promise<void>;
5
15
  //# sourceMappingURL=update.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AA8DA;;GAEG;AACH,wBAA8B,aAAa,kBAkF1C"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AA+DA;;;;;;;;;;;;GAYG;AACH,wBAA8B,aAAa,kBAwG1C"}
@@ -5,6 +5,7 @@ import { fileURLToPath } from "url";
5
5
  import { homedir } from "os";
6
6
  import { isNewerVersion } from "../helpers/semver-utils.js";
7
7
  import { fetchLatestVersion } from "../helpers/npm-registry.js";
8
+ import { logger, withSpinner, box, colors } from "../ui/index.js";
8
9
  const __filename = fileURLToPath(import.meta.url);
9
10
  const __dirname = dirname(__filename);
10
11
  /**
@@ -46,33 +47,50 @@ function detectPackageManager() {
46
47
  return "npm";
47
48
  }
48
49
  /**
49
- * Update command - checks for updates and installs the latest version
50
+ * Update Movehat CLI to the latest version from npm
51
+ *
52
+ * This command:
53
+ * - Fetches the latest version from npm registry
54
+ * - Compares with currently installed version
55
+ * - Auto-detects package manager (npm/yarn/pnpm)
56
+ * - Installs the update if a newer version is available
57
+ *
58
+ * @example
59
+ * // Update to latest version
60
+ * await updateCommand();
50
61
  */
51
62
  export default async function updateCommand() {
52
63
  try {
53
- console.log("Checking for updates...\n");
54
64
  // Read current version from package.json
55
65
  const packageJsonPath = join(__dirname, "../../package.json");
56
66
  const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
57
67
  const currentVersion = packageJson.version;
58
68
  const packageName = packageJson.name;
59
- console.log(`Current version: ${currentVersion}`);
60
- // Fetch latest version from npm
61
- const latestVersion = await fetchLatestVersion(packageName, {
62
- throwOnError: true,
63
- });
69
+ logger.newline();
70
+ logger.info(`Current version: ${currentVersion}`);
71
+ // Fetch latest version from npm with spinner
72
+ const latestVersion = await withSpinner('Checking for updates...', async () => await fetchLatestVersion(packageName, { throwOnError: true }), 'Update check complete');
64
73
  if (!latestVersion) {
65
- console.error("Failed to fetch latest version from npm registry");
74
+ logger.error("Failed to fetch latest version from npm registry");
75
+ logger.newline();
66
76
  process.exit(1);
67
77
  }
68
- console.log(`Latest version: ${latestVersion}\n`);
78
+ logger.info(`Latest version: ${latestVersion}`);
79
+ logger.newline();
69
80
  // Compare versions
70
81
  if (!isNewerVersion(currentVersion, latestVersion)) {
71
- console.log("✓ You are already using the latest version!");
82
+ logger.success('You are already using the latest version!');
83
+ logger.newline();
72
84
  return;
73
85
  }
74
- console.log(`New version available: ${currentVersion} -> ${latestVersion}`);
75
- console.log("\nUpdating movehat...\n");
86
+ // Show update available box
87
+ const updateBox = box(`${colors.brandBright('Update Available!')}\n\n` +
88
+ `Current: ${currentVersion}\n` +
89
+ `Latest: ${colors.success(latestVersion)}`, { borderColor: 'warning', padding: 1 });
90
+ console.log(updateBox);
91
+ logger.newline();
92
+ logger.info('Updating movehat...');
93
+ logger.newline();
76
94
  // Detect package manager
77
95
  const packageManager = detectPackageManager();
78
96
  // Build update command based on package manager
@@ -97,24 +115,32 @@ export default async function updateCommand() {
97
115
  });
98
116
  child.on("exit", (code) => {
99
117
  if (code === 0) {
100
- console.log(`\n✓ Successfully updated to version ${latestVersion}!`);
118
+ logger.newline();
119
+ logger.success(`Successfully updated to version ${latestVersion}!`);
120
+ logger.newline();
101
121
  process.exit(0);
102
122
  }
103
123
  else {
104
- console.error("\n✗ Update failed");
105
- console.error(` Try manually: ${packageManager} ${updateArgs.join(" ")}`);
124
+ logger.newline();
125
+ logger.error('Update failed');
126
+ logger.plain(` Try manually: ${packageManager} ${updateArgs.join(" ")}`);
127
+ logger.newline();
106
128
  process.exit(1);
107
129
  }
108
130
  });
109
131
  child.on("error", (error) => {
110
- console.error(`Failed to update: ${error.message}`);
111
- console.error(` Try manually: ${packageManager} ${updateArgs.join(" ")}`);
132
+ logger.newline();
133
+ logger.error(`Failed to update: ${error.message}`);
134
+ logger.plain(` Try manually: ${packageManager} ${updateArgs.join(" ")}`);
135
+ logger.newline();
112
136
  process.exit(1);
113
137
  });
114
138
  }
115
139
  catch (error) {
116
140
  const message = error instanceof Error ? error.message : String(error);
117
- console.error(`Error: ${message}`);
141
+ logger.newline();
142
+ logger.error(`Error: ${message}`);
143
+ logger.newline();
118
144
  process.exit(1);
119
145
  }
120
146
  }
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAElE,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAOtC;;;GAGG;AACH,SAAS,oBAAoB;IAC3B,0DAA0D;IAC1D,IAAI,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAE1B,OAAO,UAAU,KAAK,IAAI,EAAE,CAAC;QAC3B,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;YACnD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IACE,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;YACjD,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC,EACnD,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,SAAS,KAAK,UAAU;YAAE,MAAM,CAAC,eAAe;QACpD,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC;IAED,4DAA4D;IAC5D,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;IAEtE,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,8CAA8C;IAC9C,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,aAAa;IACzC,IAAI,CAAC;QACH,yCAAyC;QACzC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAC9D,MAAM,WAAW,GAAgB,IAAI,CAAC,KAAK,CACzC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CACvC,CAAC;QAEF,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC;QAC3C,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC;QAErC,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,oBAAoB,cAAc,EAAE,CAAC,CAAC;QAElD,6CAA6C;QAC7C,MAAM,aAAa,GAAG,MAAM,WAAW,CACrC,yBAAyB,EACzB,KAAK,IAAI,EAAE,CAAC,MAAM,kBAAkB,CAAC,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,EACzE,uBAAuB,CACxB,CAAC;QAEF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACjE,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,mBAAmB,aAAa,EAAE,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,EAAE,CAAC;QAEjB,mBAAmB;QACnB,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,aAAa,CAAC,EAAE,CAAC;YACnD,MAAM,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC;YAC5D,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,4BAA4B;QAC5B,MAAM,SAAS,GAAG,GAAG,CACnB,GAAG,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,MAAM;YAChD,YAAY,cAAc,IAAI;YAC9B,YAAY,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,EAC3C,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CACvC,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,CAAC,OAAO,EAAE,CAAC;QAEjB,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACnC,MAAM,CAAC,OAAO,EAAE,CAAC;QAEjB,yBAAyB;QACzB,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;QAE9C,gDAAgD;QAChD,IAAI,UAAoB,CAAC;QACzB,QAAQ,cAAc,EAAE,CAAC;YACvB,KAAK,MAAM;gBACT,UAAU,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;gBAChD,MAAM;YACR,KAAK,MAAM;gBACT,UAAU,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,WAAW,SAAS,CAAC,CAAC;gBACpD,MAAM;YACR,KAAK,KAAK,CAAC;YACX;gBACE,UAAU,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;gBAC3C,MAAM;QACV,CAAC;QAED,iBAAiB;QACjB,sFAAsF;QACtF,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,UAAU,EAAE;YAC9C,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,OAAO,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE;SAChC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,CAAC,OAAO,CAAC,mCAAmC,aAAa,GAAG,CAAC,CAAC;gBACpE,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBAC9B,MAAM,CAAC,KAAK,CAAC,oBAAoB,cAAc,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC3E,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,CAAC,KAAK,CAAC,qBAAqB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,oBAAoB,cAAc,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3E,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;QAClC,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -1,3 +1,20 @@
1
+ /**
2
+ * Render the Movehat banner with gradient colors
3
+ * Uses the UI module's gradient system for consistency
4
+ *
5
+ * @returns Formatted banner string ready for console output
6
+ *
7
+ * @example
8
+ * const banner = renderMovehatBanner();
9
+ * console.log(banner);
10
+ */
1
11
  export declare const renderMovehatBanner: () => string;
12
+ /**
13
+ * Print the Movehat banner to console
14
+ * Convenience function that renders and logs the banner
15
+ *
16
+ * @example
17
+ * printMovehatBanner();
18
+ */
2
19
  export declare const printMovehatBanner: () => void;
3
20
  //# sourceMappingURL=banner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/helpers/banner.ts"],"names":[],"mappings":"AAmCA,eAAO,MAAM,mBAAmB,cAO/B,CAAC;AAEF,eAAO,MAAM,kBAAkB,YAE9B,CAAC"}
1
+ {"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/helpers/banner.ts"],"names":[],"mappings":"AAwBA;;;;;;;;;GASG;AACH,eAAO,MAAM,mBAAmB,QAAO,MAiBtC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,QAAO,IAErC,CAAC"}
@@ -1,11 +1,7 @@
1
- // Warm yellow-to-amber palette for a subtle gradient.
2
- const gradientPalette = [
3
- [255, 239, 150],
4
- [255, 223, 88],
5
- [255, 207, 64],
6
- [255, 181, 45],
7
- [255, 160, 30],
8
- ];
1
+ import { applyGradient, gradients, shouldUseColor, colors } from '../ui/index.js';
2
+ /**
3
+ * MOVEHAT ASCII art banner lines
4
+ */
9
5
  const bannerLines = [
10
6
  " ███╗ ███╗ ██████╗ ██╗ ██╗███████╗██╗ ██╗ █████╗ ████████╗",
11
7
  " ████╗ ████║██╔═══██╗██║ ██║██╔════╝██║ ██║██╔══██╗╚══██╔══╝",
@@ -14,24 +10,43 @@ const bannerLines = [
14
10
  " ██║ ╚═╝ ██║╚██████╔╝ ╚████╔╝ ███████╗██║ ██║██║ ██║ ██║ ",
15
11
  " ╚═╝ ╚═╝ ╚═════╝ ╚═══╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝ ",
16
12
  ];
17
- const reset = "\x1b[0m";
18
- const shouldColorize = () => process.env.NO_COLOR === undefined && Boolean(process.stdout.isTTY);
19
- const toAnsi = ([r, g, b]) => `\x1b[38;2;${r};${g};${b}m`;
20
- const applyGradient = (line, offset) => {
21
- let painted = "";
22
- for (let i = 0; i < line.length; i++) {
23
- const color = gradientPalette[(i + offset) % gradientPalette.length];
24
- painted += `${toAnsi(color)}${line[i]}`;
25
- }
26
- return painted;
27
- };
13
+ /**
14
+ * Divider line below the banner
15
+ */
16
+ const dividerLine = "━".repeat(68);
17
+ /**
18
+ * Tagline describing Movehat
19
+ */
20
+ const tagline = " A powerful testing framework for Move smart contracts";
21
+ /**
22
+ * Render the Movehat banner with gradient colors
23
+ * Uses the UI module's gradient system for consistency
24
+ *
25
+ * @returns Formatted banner string ready for console output
26
+ *
27
+ * @example
28
+ * const banner = renderMovehatBanner();
29
+ * console.log(banner);
30
+ */
28
31
  export const renderMovehatBanner = () => {
29
- if (!shouldColorize()) {
30
- return bannerLines.join("\n");
32
+ if (!shouldUseColor()) {
33
+ return `${bannerLines.join("\n")}\n${dividerLine}\n${tagline}`;
31
34
  }
32
- const coloredLines = bannerLines.map((line, idx) => applyGradient(line, idx * 2));
33
- return `${coloredLines.join("\n")}${reset}`;
35
+ // Apply Movehat brand gradient to each line with varying offsets
36
+ const coloredLines = bannerLines.map((line, idx) => applyGradient(line, gradients.movehat, idx * 2));
37
+ // Apply gradient to divider line
38
+ const coloredDivider = applyGradient(dividerLine, gradients.movehat, 0);
39
+ // Dim the tagline for subtle appearance
40
+ const coloredTagline = colors.dim(tagline);
41
+ return `${coloredLines.join("\n")}\n${coloredDivider}\n${coloredTagline}`;
34
42
  };
43
+ /**
44
+ * Print the Movehat banner to console
45
+ * Convenience function that renders and logs the banner
46
+ *
47
+ * @example
48
+ * printMovehatBanner();
49
+ */
35
50
  export const printMovehatBanner = () => {
36
51
  console.log(renderMovehatBanner());
37
52
  };
@@ -1 +1 @@
1
- {"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/helpers/banner.ts"],"names":[],"mappings":"AAEA,sDAAsD;AACtD,MAAM,eAAe,GAAU;IAC7B,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACf,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;IACd,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;IACd,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;IACd,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC;CACf,CAAC;AAEF,MAAM,WAAW,GAAG;IAClB,iEAAiE;IACjE,iEAAiE;IACjE,iEAAiE;IACjE,iEAAiE;IACjE,iEAAiE;IACjE,iEAAiE;CAClE,CAAC;AAEF,MAAM,KAAK,GAAG,SAAS,CAAC;AAExB,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAEjG,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAE/D,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE;IACrD,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACrE,OAAO,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,EAAE;IACtC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QACtB,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IAClF,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC;AACrC,CAAC,CAAC"}
1
+ {"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/helpers/banner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAElF;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,iEAAiE;IACjE,iEAAiE;IACjE,iEAAiE;IACjE,iEAAiE;IACjE,iEAAiE;IACjE,iEAAiE;CAClE,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAEnC;;GAEG;AACH,MAAM,OAAO,GAAG,yDAAyD,CAAC;AAE1E;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAW,EAAE;IAC9C,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QACtB,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,WAAW,KAAK,OAAO,EAAE,CAAC;IACjE,CAAC;IAED,iEAAiE;IACjE,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CACjD,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC,CAChD,CAAC;IAEF,iCAAiC;IACjC,MAAM,cAAc,GAAG,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAExE,wCAAwC;IACxC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAE3C,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,cAAc,KAAK,cAAc,EAAE,CAAC;AAC5E,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAS,EAAE;IAC3C,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC;AACrC,CAAC,CAAC"}
@@ -1,6 +1,17 @@
1
1
  /**
2
2
  * Check if a newer version is available and notify the user
3
- * This runs synchronously using cache, and updates cache in background
3
+ *
4
+ * This function:
5
+ * - Runs synchronously using cached version data
6
+ * - Displays update notification immediately if cache indicates newer version
7
+ * - Asynchronously updates cache in background (non-blocking)
8
+ * - Respects 24-hour cache duration to avoid excessive network requests
9
+ *
10
+ * @param currentVersion - Currently installed version (e.g., '1.0.0')
11
+ * @param packageName - npm package name to check (e.g., 'movehat')
12
+ *
13
+ * @example
14
+ * checkForUpdates('1.0.0', 'movehat');
4
15
  */
5
16
  export declare function checkForUpdates(currentVersion: string, packageName: string): void;
6
17
  //# sourceMappingURL=version-check.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../src/helpers/version-check.ts"],"names":[],"mappings":"AAmDA;;;GAGG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAyCjF"}
1
+ {"version":3,"file":"version-check.d.ts","sourceRoot":"","sources":["../../src/helpers/version-check.ts"],"names":[],"mappings":"AAoDA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAyCjF"}
@@ -3,6 +3,7 @@ import { join } from "path";
3
3
  import { homedir } from "os";
4
4
  import { isNewerVersion } from "./semver-utils.js";
5
5
  import { fetchLatestVersion } from "./npm-registry.js";
6
+ import { box, colors, formatCommand } from "../ui/index.js";
6
7
  const CACHE_DURATION = 24 * 60 * 60 * 1000; // 24 hours in milliseconds
7
8
  const CACHE_DIR = join(homedir(), ".movehat");
8
9
  const CACHE_FILE = join(CACHE_DIR, "version-cache.json");
@@ -41,7 +42,18 @@ function writeCache(latestVersion) {
41
42
  }
42
43
  /**
43
44
  * Check if a newer version is available and notify the user
44
- * This runs synchronously using cache, and updates cache in background
45
+ *
46
+ * This function:
47
+ * - Runs synchronously using cached version data
48
+ * - Displays update notification immediately if cache indicates newer version
49
+ * - Asynchronously updates cache in background (non-blocking)
50
+ * - Respects 24-hour cache duration to avoid excessive network requests
51
+ *
52
+ * @param currentVersion - Currently installed version (e.g., '1.0.0')
53
+ * @param packageName - npm package name to check (e.g., 'movehat')
54
+ *
55
+ * @example
56
+ * checkForUpdates('1.0.0', 'movehat');
45
57
  */
46
58
  export function checkForUpdates(currentVersion, packageName) {
47
59
  try {
@@ -53,12 +65,10 @@ export function checkForUpdates(currentVersion, packageName) {
53
65
  }
54
66
  // Display notification immediately if cache says there's an update
55
67
  if (shouldNotify && cache) {
56
- const updateMessage = "\n" +
57
- "┌" + "─".repeat(60) + "┐\n" +
58
- `│ Update available: ${currentVersion} ${cache.latestVersion}`.padEnd(61) + "│\n" +
59
- `│ Run: movehat update`.padEnd(61) + "│\n" +
60
- "└" + "─".repeat(60) + "┘\n";
61
- console.error(updateMessage);
68
+ const updateMessage = box(`${colors.brandBright('Update Available!')}\n\n` +
69
+ `${currentVersion} ${colors.dim('→')} ${colors.success(cache.latestVersion)}\n\n` +
70
+ `${formatCommand('movehat update')}`, { borderColor: 'warning', padding: 1 });
71
+ console.error('\n' + updateMessage + '\n');
62
72
  }
63
73
  // Update cache in background if needed (doesn't block)
64
74
  if (!cache || Date.now() - cache.lastChecked > CACHE_DURATION) {
@@ -1 +1 @@
1
- {"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/helpers/version-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../src/helpers/version-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * RGB type for gradient functions
3
+ */
4
+ export type Rgb = [number, number, number];
5
+ /**
6
+ * Detect if colors should be used
7
+ * Respects NO_COLOR env var and TTY detection
8
+ */
9
+ export declare const shouldUseColor: () => boolean;
10
+ /**
11
+ * Semantic color palette
12
+ * Maps intent to colors consistently across the CLI
13
+ */
14
+ export declare const colors: {
15
+ success: (str: string) => string;
16
+ error: (str: string) => string;
17
+ warning: (str: string) => string;
18
+ info: (str: string) => string;
19
+ primary: (str: string) => string;
20
+ secondary: (str: string) => string;
21
+ muted: (str: string) => string;
22
+ dim: (str: string) => string;
23
+ bold: (str: string) => string;
24
+ brand: (str: string) => string;
25
+ brandBright: (str: string) => string;
26
+ raw: import("picocolors/types.js").Colors & {
27
+ createColors: (enabled?: boolean) => import("picocolors/types.js").Colors;
28
+ };
29
+ };
30
+ /**
31
+ * Convert RGB to ANSI 24-bit color code
32
+ *
33
+ * @param r - Red value (0-255)
34
+ * @param g - Green value (0-255)
35
+ * @param b - Blue value (0-255)
36
+ * @returns ANSI escape code for RGB color
37
+ *
38
+ * @example
39
+ * const red = rgbToAnsi(255, 0, 0);
40
+ * console.log(`${red}This is red text\x1b[0m`);
41
+ */
42
+ export declare const rgbToAnsi: (r: number, g: number, b: number) => string;
43
+ /**
44
+ * Apply gradient to text using RGB palette
45
+ * Migrated from banner.ts for reuse across the application
46
+ *
47
+ * @param text - Text to colorize with gradient
48
+ * @param palette - Array of RGB color values
49
+ * @param offset - Starting offset in palette (useful for animation)
50
+ * @returns Colored text with gradient applied
51
+ *
52
+ * @example
53
+ * const gradient = applyGradient('MOVEHAT', gradients.movehat);
54
+ * console.log(gradient);
55
+ */
56
+ export declare const applyGradient: (text: string, palette: Rgb[], offset?: number) => string;
57
+ /**
58
+ * Preset gradient palettes for consistent branding
59
+ */
60
+ export declare const gradients: {
61
+ /**
62
+ * Movehat brand gradient (warm yellow/amber)
63
+ * Used for the banner and brand-related UI elements
64
+ */
65
+ movehat: Rgb[];
66
+ /**
67
+ * Success gradient (green tones)
68
+ * For positive feedback and success states
69
+ */
70
+ success: Rgb[];
71
+ /**
72
+ * Error gradient (red tones)
73
+ * For errors and warnings
74
+ */
75
+ error: Rgb[];
76
+ };
77
+ //# sourceMappingURL=colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/ui/colors.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAO,OAEjC,CAAC;AAUF;;;GAGG;AACH,eAAO,MAAM,MAAM;mBARM,MAAM,KAAK,MAAM;iBAAjB,MAAM,KAAK,MAAM;mBAAjB,MAAM,KAAK,MAAM;gBAAjB,MAAM,KAAK,MAAM;mBAAjB,MAAM,KAAK,MAAM;qBAAjB,MAAM,KAAK,MAAM;iBAAjB,MAAM,KAAK,MAAM;eAAjB,MAAM,KAAK,MAAM;gBAAjB,MAAM,KAAK,MAAM;iBAAjB,MAAM,KAAK,MAAM;uBAAjB,MAAM,KAAK,MAAM;;8BAdtB,CAAC;;CA0CpB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,GAAI,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,KAAG,MAE3D,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,GACxB,MAAM,MAAM,EACZ,SAAS,GAAG,EAAE,EACd,SAAQ,MAAU,KACjB,MAUF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS;IACpB;;;OAGG;aAOE,GAAG,EAAE;IAEV;;;OAGG;aAKE,GAAG,EAAE;IAEV;;;OAGG;WAKE,GAAG,EAAE;CACX,CAAC"}
@@ -0,0 +1,121 @@
1
+ import pc from 'picocolors';
2
+ /**
3
+ * Detect if colors should be used
4
+ * Respects NO_COLOR env var and TTY detection
5
+ */
6
+ export const shouldUseColor = () => {
7
+ return process.env.NO_COLOR === undefined && Boolean(process.stdout.isTTY);
8
+ };
9
+ /**
10
+ * Conditional color wrapper
11
+ * Returns identity function if colors disabled
12
+ */
13
+ const color = (fn) => {
14
+ return shouldUseColor() ? fn : (str) => str;
15
+ };
16
+ /**
17
+ * Semantic color palette
18
+ * Maps intent to colors consistently across the CLI
19
+ */
20
+ export const colors = {
21
+ // Status colors
22
+ success: color(pc.green),
23
+ error: color(pc.red),
24
+ warning: color(pc.yellow),
25
+ info: color(pc.cyan),
26
+ // UI element colors
27
+ primary: color(pc.magenta),
28
+ secondary: color(pc.blue),
29
+ muted: color(pc.gray),
30
+ dim: color(pc.dim),
31
+ bold: color(pc.bold),
32
+ // Movehat brand colors (amber/yellow gradient)
33
+ brand: color(pc.yellow),
34
+ brandBright: color((str) => pc.yellow(pc.bold(str))),
35
+ // Direct access for advanced use
36
+ raw: shouldUseColor() ? pc : createNoopColors(),
37
+ };
38
+ /**
39
+ * Convert RGB to ANSI 24-bit color code
40
+ *
41
+ * @param r - Red value (0-255)
42
+ * @param g - Green value (0-255)
43
+ * @param b - Blue value (0-255)
44
+ * @returns ANSI escape code for RGB color
45
+ *
46
+ * @example
47
+ * const red = rgbToAnsi(255, 0, 0);
48
+ * console.log(`${red}This is red text\x1b[0m`);
49
+ */
50
+ export const rgbToAnsi = (r, g, b) => {
51
+ return `\x1b[38;2;${r};${g};${b}m`;
52
+ };
53
+ /**
54
+ * Apply gradient to text using RGB palette
55
+ * Migrated from banner.ts for reuse across the application
56
+ *
57
+ * @param text - Text to colorize with gradient
58
+ * @param palette - Array of RGB color values
59
+ * @param offset - Starting offset in palette (useful for animation)
60
+ * @returns Colored text with gradient applied
61
+ *
62
+ * @example
63
+ * const gradient = applyGradient('MOVEHAT', gradients.movehat);
64
+ * console.log(gradient);
65
+ */
66
+ export const applyGradient = (text, palette, offset = 0) => {
67
+ if (!shouldUseColor())
68
+ return text;
69
+ let result = '';
70
+ for (let i = 0; i < text.length; i++) {
71
+ const colorIndex = (i + offset) % palette.length;
72
+ const [r, g, b] = palette[colorIndex];
73
+ result += `${rgbToAnsi(r, g, b)}${text[i]}`;
74
+ }
75
+ return result + '\x1b[0m';
76
+ };
77
+ /**
78
+ * Preset gradient palettes for consistent branding
79
+ */
80
+ export const gradients = {
81
+ /**
82
+ * Movehat brand gradient (warm yellow/amber)
83
+ * Used for the banner and brand-related UI elements
84
+ */
85
+ movehat: [
86
+ [255, 239, 150],
87
+ [255, 223, 88],
88
+ [255, 207, 64],
89
+ [255, 181, 45],
90
+ [255, 160, 30],
91
+ ],
92
+ /**
93
+ * Success gradient (green tones)
94
+ * For positive feedback and success states
95
+ */
96
+ success: [
97
+ [144, 238, 144],
98
+ [60, 179, 113],
99
+ [46, 139, 87],
100
+ ],
101
+ /**
102
+ * Error gradient (red tones)
103
+ * For errors and warnings
104
+ */
105
+ error: [
106
+ [255, 182, 193],
107
+ [220, 20, 60],
108
+ [178, 34, 34],
109
+ ],
110
+ };
111
+ /**
112
+ * No-op color functions for when colors are disabled
113
+ * Uses a Proxy to return identity function for any property access
114
+ */
115
+ function createNoopColors() {
116
+ const noop = (str) => str;
117
+ return new Proxy({}, {
118
+ get: () => noop,
119
+ });
120
+ }
121
+ //# sourceMappingURL=colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/ui/colors.ts"],"names":[],"mappings":"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"}