@madebyseed/seed-cli-tools 3.0.2 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/__fixtures__/legacy-js-min/baseline/theme.dev.js +13 -0
  3. package/__fixtures__/legacy-js-min/baseline/theme.prod.js +1 -0
  4. package/__fixtures__/legacy-js-min/dist/assets/theme.js +13 -0
  5. package/__fixtures__/legacy-js-min/package.json +9 -0
  6. package/__fixtures__/legacy-js-min/src/scripts/components/sample.js +4 -0
  7. package/__fixtures__/legacy-js-min/src/scripts/theme.js +9 -0
  8. package/__fixtures__/legacy-js-min/src/scripts/vendor/lib.js +7 -0
  9. package/__fixtures__/legacy-js-min/src/scripts/vendor.js +3 -0
  10. package/__fixtures__/legacy-js-min/verify.sh +34 -0
  11. package/__fixtures__/module-js-min/dist/assets/components-greeter.js +6 -0
  12. package/__fixtures__/module-js-min/dist/assets/components-greeter.js.map +1 -0
  13. package/__fixtures__/module-js-min/dist/assets/components-items.js +5 -0
  14. package/__fixtures__/module-js-min/dist/assets/components-items.js.map +1 -0
  15. package/__fixtures__/module-js-min/dist/assets/header.js +20 -0
  16. package/__fixtures__/module-js-min/dist/assets/header.js.map +1 -0
  17. package/__fixtures__/module-js-min/dist/assets/sections-cart-items.js +8 -0
  18. package/__fixtures__/module-js-min/dist/assets/sections-cart-items.js.map +1 -0
  19. package/__fixtures__/module-js-min/dist/assets/vendor-lib.js +4 -0
  20. package/__fixtures__/module-js-min/dist/assets/vendor-lib.js.map +1 -0
  21. package/__fixtures__/module-js-min/package.json +9 -0
  22. package/__fixtures__/module-js-min/seed.project.json +15 -0
  23. package/__fixtures__/module-js-min/src/scripts/components/greeter.js +4 -0
  24. package/__fixtures__/module-js-min/src/scripts/components/items.js +3 -0
  25. package/__fixtures__/module-js-min/src/scripts/header.js +18 -0
  26. package/__fixtures__/module-js-min/src/scripts/sections/cart/items.js +6 -0
  27. package/__fixtures__/module-js-min/src/scripts/vendor/lib.js +2 -0
  28. package/__fixtures__/module-js-min/verify.sh +58 -0
  29. package/lib/commands/watch.js +55 -7
  30. package/lib/commands/watch.js.map +1 -1
  31. package/lib/shopify-bin.d.ts +14 -0
  32. package/lib/shopify-bin.js +18 -0
  33. package/lib/shopify-bin.js.map +1 -0
  34. package/lib/tasks/build-js-module.d.ts +2 -0
  35. package/lib/tasks/build-js-module.js +93 -0
  36. package/lib/tasks/build-js-module.js.map +1 -0
  37. package/lib/tasks/build-js.js +13 -1
  38. package/lib/tasks/build-js.js.map +1 -1
  39. package/lib/tasks/includes/config.d.ts +2 -0
  40. package/lib/tasks/includes/config.js +3 -0
  41. package/lib/tasks/includes/config.js.map +1 -1
  42. package/lib/tasks/includes/js-mode.d.ts +12 -0
  43. package/lib/tasks/includes/js-mode.js +42 -0
  44. package/lib/tasks/includes/js-mode.js.map +1 -0
  45. package/lib/tasks/watch-tui/App.d.ts +8 -0
  46. package/lib/tasks/watch-tui/App.js +337 -0
  47. package/lib/tasks/watch-tui/App.js.map +1 -0
  48. package/lib/tasks/watch-tui/classify.d.ts +39 -0
  49. package/lib/tasks/watch-tui/classify.js +84 -0
  50. package/lib/tasks/watch-tui/classify.js.map +1 -0
  51. package/lib/tasks/watch-tui/index.d.ts +30 -0
  52. package/lib/tasks/watch-tui/index.js +299 -0
  53. package/lib/tasks/watch-tui/index.js.map +1 -0
  54. package/lib/tasks/watch-tui/shopify-parse.d.ts +24 -0
  55. package/lib/tasks/watch-tui/shopify-parse.js +87 -0
  56. package/lib/tasks/watch-tui/shopify-parse.js.map +1 -0
  57. package/lib/tasks/watch-tui/state.d.ts +68 -0
  58. package/lib/tasks/watch-tui/state.js +61 -0
  59. package/lib/tasks/watch-tui/state.js.map +1 -0
  60. package/lib/tasks/watch-tui/theme-info.d.ts +10 -0
  61. package/lib/tasks/watch-tui/theme-info.js +79 -0
  62. package/lib/tasks/watch-tui/theme-info.js.map +1 -0
  63. package/lib/utils.js +63 -87
  64. package/lib/utils.js.map +1 -1
  65. package/package.json +11 -2
  66. package/src/commands/watch.ts +70 -20
  67. package/src/shopify-bin.ts +21 -0
  68. package/src/tasks/build-js-module.ts +92 -0
  69. package/src/tasks/build-js.ts +13 -1
  70. package/src/tasks/includes/config.ts +5 -0
  71. package/src/tasks/includes/js-mode.ts +48 -0
  72. package/src/tasks/watch-tui/App.tsx +486 -0
  73. package/src/tasks/watch-tui/classify.ts +120 -0
  74. package/src/tasks/watch-tui/index.ts +342 -0
  75. package/src/tasks/watch-tui/shopify-parse.ts +103 -0
  76. package/src/tasks/watch-tui/state.ts +113 -0
  77. package/src/tasks/watch-tui/theme-info.ts +109 -0
  78. package/src/types/declarations.d.ts +19 -1
  79. package/src/utils.ts +64 -93
  80. package/tsconfig.json +3 -2
  81. package/tsconfig.tsbuildinfo +1 -1
@@ -15,7 +15,11 @@ const fs_1 = require("fs");
15
15
  const utilities_1 = __importDefault(require("./includes/utilities"));
16
16
  const config_1 = __importDefault(require("./includes/config"));
17
17
  const messages_1 = __importDefault(require("./includes/messages"));
18
+ const build_js_module_1 = require("./build-js-module");
18
19
  const minify = (0, composer_1.default)(uglify_js_1.default, console);
20
+ // Surface the active JS pipeline mode once at task wire-up so it shows up in
21
+ // `seed build` / `seed watch` output without every task spamming it.
22
+ messages_1.default.logProcessFiles(`js mode: ${config_1.default.jsMode}`);
19
23
  function processThemeJs() {
20
24
  messages_1.default.logProcessFiles("build:js");
21
25
  return gulp_1.default
@@ -56,9 +60,16 @@ function touchJsFiles() {
56
60
  }
57
61
  }
58
62
  gulp_1.default.task("build:js", () => {
63
+ if (config_1.default.jsMode === "module")
64
+ return (0, build_js_module_1.moduleBuildTask)();
59
65
  return processThemeJs();
60
66
  });
61
- gulp_1.default.task("watch:js", () => {
67
+ gulp_1.default.task("watch:js", (done) => {
68
+ if (config_1.default.jsMode === "module") {
69
+ (0, build_js_module_1.moduleWatchTask)();
70
+ done();
71
+ return;
72
+ }
62
73
  chokidar_1.default
63
74
  .watch([config_1.default.src.js, `!${config_1.default.roots.vendorJs}`, `!${config_1.default.src.vendorJs}`], {
64
75
  ignoreInitial: true,
@@ -70,6 +81,7 @@ gulp_1.default.task("watch:js", () => {
70
81
  touchJsFiles();
71
82
  }, 500);
72
83
  });
84
+ done();
73
85
  });
74
86
  gulp_1.default.task("build:vendor-js", () => {
75
87
  return processVendorJs();
@@ -1 +1 @@
1
- {"version":3,"file":"build-js.js","sourceRoot":"","sources":["../../src/tasks/build-js.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-js.js","sourceRoot":"","sources":["../../src/tasks/build-js.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type JsMode } from "./js-mode";
1
2
  interface PackageJson {
2
3
  "bundle-js"?: boolean;
3
4
  [key: string]: unknown;
@@ -58,6 +59,7 @@ interface BuildConfig {
58
59
  tailwindConfig: string;
59
60
  usesTailwind: boolean;
60
61
  usesModuleBundler: boolean;
62
+ jsMode: JsMode;
61
63
  seedConfig: string;
62
64
  shopifyIgnore: string;
63
65
  src: PathConfig;
@@ -14,6 +14,7 @@ const minimist_1 = __importDefault(require("minimist"));
14
14
  const fs_1 = require("fs");
15
15
  const autoprefixer_1 = __importDefault(require("autoprefixer"));
16
16
  const postcss_import_1 = __importDefault(require("postcss-import"));
17
+ const js_mode_1 = require("./js-mode");
17
18
  const logger = (0, debug_1.default)("seed-tools");
18
19
  const argv = (0, minimist_1.default)(process.argv.slice(2));
19
20
  const themeRoot = (0, find_root_1.default)(process.cwd());
@@ -25,6 +26,7 @@ try {
25
26
  catch (err) {
26
27
  logger(err);
27
28
  }
29
+ const jsMode = (0, js_mode_1.resolveJsMode)(themeRoot);
28
30
  const config = {
29
31
  environment: argv.environment === "undefined" || !argv.environment
30
32
  ? "development"
@@ -41,6 +43,7 @@ const config = {
41
43
  tailwindConfig,
42
44
  usesTailwind: (0, fs_1.existsSync)((0, path_1.join)(themeRoot, tailwindConfig)),
43
45
  usesModuleBundler: !!pkg["bundle-js"],
46
+ jsMode,
44
47
  seedConfig: "seed.config.js",
45
48
  shopifyIgnore: (0, path_1.join)(themeRoot, ".shopifyignore"),
46
49
  src: {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/tasks/includes/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/tasks/includes/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export type JsMode = "legacy" | "module";
2
+ /**
3
+ * Resolve the active JS pipeline mode from `seed.project.json` → `build.js.type`.
4
+ *
5
+ * Defaults to `legacy` for: missing file, missing field, unknown value. This is
6
+ * intentional — backwards compatibility means an existing theme with no
7
+ * `build.js` config keeps the gulp-include + uglify pipeline it had before.
8
+ *
9
+ * `bundle` is reserved for a future bundled mode and throws here so the field
10
+ * remains forward-compatible without silently falling back to legacy.
11
+ */
12
+ export declare function resolveJsMode(themeRoot: string): JsMode;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resolveJsMode = resolveJsMode;
7
+ const fs_1 = require("fs");
8
+ const path_1 = require("path");
9
+ const debug_1 = __importDefault(require("debug"));
10
+ const logger = (0, debug_1.default)("seed-tools:js-mode");
11
+ /**
12
+ * Resolve the active JS pipeline mode from `seed.project.json` → `build.js.type`.
13
+ *
14
+ * Defaults to `legacy` for: missing file, missing field, unknown value. This is
15
+ * intentional — backwards compatibility means an existing theme with no
16
+ * `build.js` config keeps the gulp-include + uglify pipeline it had before.
17
+ *
18
+ * `bundle` is reserved for a future bundled mode and throws here so the field
19
+ * remains forward-compatible without silently falling back to legacy.
20
+ */
21
+ function resolveJsMode(themeRoot) {
22
+ const file = (0, path_1.join)(themeRoot, "seed.project.json");
23
+ if (!(0, fs_1.existsSync)(file))
24
+ return "legacy";
25
+ let parsed = {};
26
+ try {
27
+ parsed = JSON.parse((0, fs_1.readFileSync)(file, "utf-8"));
28
+ }
29
+ catch (err) {
30
+ logger("failed to parse seed.project.json:", err);
31
+ return "legacy";
32
+ }
33
+ const type = parsed.build?.js?.type;
34
+ if (type === "module")
35
+ return "module";
36
+ if (type === "bundle") {
37
+ throw new Error('seed.project.json: build.js.type="bundle" is reserved for a future ' +
38
+ 'bundled mode and not yet implemented. Use "legacy" or "module".');
39
+ }
40
+ return "legacy";
41
+ }
42
+ //# sourceMappingURL=js-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js-mode.js","sourceRoot":"","sources":["../../../src/tasks/includes/js-mode.ts"],"names":[],"mappings":";;;;;AA0BA,sCAqBC;AA/CD,2BAA8C;AAC9C,+BAA4B;AAC5B,kDAA0B;AAE1B,MAAM,MAAM,GAAG,IAAA,eAAK,EAAC,oBAAoB,CAAC,CAAC;AAY3C;;;;;;;;;GASG;AACH,SAAgB,aAAa,CAAC,SAAiB;IAC7C,MAAM,IAAI,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAClD,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAEvC,IAAI,MAAM,GAAqB,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;QAClD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC;IACpC,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC;IACvC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,qEAAqE;YACnE,iEAAiE,CACpE,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ import type { TuiStore } from "./state";
3
+ interface AppProps {
4
+ store: TuiStore;
5
+ onQuit: () => void;
6
+ }
7
+ export declare function App({ store, onQuit }: AppProps): React.ReactElement;
8
+ export {};
@@ -0,0 +1,337 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.App = App;
37
+ const react_1 = __importStar(require("react"));
38
+ const ink_1 = require("ink");
39
+ function useStoreTick(store) {
40
+ const [tick, setTick] = (0, react_1.useState)(0);
41
+ (0, react_1.useEffect)(() => {
42
+ const h = () => setTick((t) => t + 1);
43
+ store.on("change", h);
44
+ const interval = setInterval(h, 1000);
45
+ return () => {
46
+ store.off("change", h);
47
+ clearInterval(interval);
48
+ };
49
+ }, [store]);
50
+ return tick;
51
+ }
52
+ function App({ store, onQuit }) {
53
+ useStoreTick(store);
54
+ const [tab, setTab] = (0, react_1.useState)("dashboard");
55
+ const [logOffset, setLogOffset] = (0, react_1.useState)(0); // 0 = tail
56
+ const { stdout } = (0, ink_1.useStdout)();
57
+ const rows = stdout?.rows ?? 24;
58
+ const cols = stdout?.columns ?? 80;
59
+ (0, ink_1.useInput)((input, key) => {
60
+ // Ink swallows Ctrl+C while in raw mode (we set exitOnCtrlC: false so we
61
+ // can run our own teardown), so handle it explicitly here.
62
+ if (input === "q" || (key.ctrl && input === "c")) {
63
+ onQuit();
64
+ return;
65
+ }
66
+ if (input === "d") {
67
+ setTab("dashboard");
68
+ return;
69
+ }
70
+ if (input === "l") {
71
+ setTab("logs");
72
+ setLogOffset(0);
73
+ return;
74
+ }
75
+ if (input === "e") {
76
+ setTab("errors");
77
+ return;
78
+ }
79
+ if (tab === "logs") {
80
+ if (key.upArrow || input === "k") {
81
+ setLogOffset((o) => o + 1);
82
+ }
83
+ else if (key.downArrow || input === "j") {
84
+ setLogOffset((o) => Math.max(0, o - 1));
85
+ }
86
+ else if (key.pageUp) {
87
+ setLogOffset((o) => o + 10);
88
+ }
89
+ else if (key.pageDown) {
90
+ setLogOffset((o) => Math.max(0, o - 10));
91
+ }
92
+ else if (input === "g") {
93
+ setLogOffset(store.logs.length);
94
+ }
95
+ else if (input === "G") {
96
+ setLogOffset(0);
97
+ }
98
+ }
99
+ });
100
+ return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", width: cols },
101
+ react_1.default.createElement(Header, { store: store }),
102
+ react_1.default.createElement(ink_1.Box, { flexDirection: "column", flexGrow: 1, paddingX: 1, paddingY: 1 },
103
+ tab === "dashboard" && react_1.default.createElement(Dashboard, { store: store }),
104
+ tab === "logs" && (react_1.default.createElement(Logs, { store: store, rows: rows - 6, offset: logOffset, cols: cols })),
105
+ tab === "errors" && react_1.default.createElement(Errors, { store: store, cols: cols })),
106
+ react_1.default.createElement(Footer, { tab: tab, store: store })));
107
+ }
108
+ function Header({ store }) {
109
+ const info = store.themeInfo;
110
+ const subtitle = [
111
+ info?.contextName,
112
+ info?.storeDomain || store.sourceLabel,
113
+ info?.branch,
114
+ ]
115
+ .filter(Boolean)
116
+ .join(" · ");
117
+ return (react_1.default.createElement(ink_1.Box, { borderStyle: "round", borderColor: "gray", paddingX: 1, flexDirection: "column" },
118
+ react_1.default.createElement(ink_1.Box, { justifyContent: "space-between" },
119
+ react_1.default.createElement(ink_1.Box, null,
120
+ react_1.default.createElement(ink_1.Text, { bold: true, color: "cyan" }, "seed watch"),
121
+ subtitle && react_1.default.createElement(ink_1.Text, { color: "gray" }, " " + subtitle)),
122
+ react_1.default.createElement(Outcome, { store: store }))));
123
+ }
124
+ /**
125
+ * Single status line — direct translation of (state, lastBuild, lastError).
126
+ * Same flag-based state model as the original draft, just rendered as an
127
+ * outcome line instead of a colored badge:
128
+ * ⏳ building… state=building
129
+ * ✗ build failed · time [e] state=error (lastError set)
130
+ * ✓ task · ms · time state=watching with lastBuild
131
+ * ● watching state=watching, no lastBuild yet
132
+ * ◌ starting… state=starting
133
+ */
134
+ function Outcome({ store }) {
135
+ if (store.state === "building") {
136
+ return (react_1.default.createElement(ink_1.Text, { color: "cyan" },
137
+ "\u23F3 ",
138
+ react_1.default.createElement(ink_1.Text, { color: "gray" }, "building\u2026")));
139
+ }
140
+ if (store.state === "error" && store.lastError) {
141
+ const time = new Date(store.lastError.at).toTimeString().slice(0, 8);
142
+ return (react_1.default.createElement(ink_1.Text, null,
143
+ react_1.default.createElement(ink_1.Text, { color: "red", bold: true }, "\u2717 build failed"),
144
+ react_1.default.createElement(ink_1.Text, { color: "gray" }, " · " + time + " "),
145
+ react_1.default.createElement(ink_1.Text, { color: "gray" }, "["),
146
+ react_1.default.createElement(ink_1.Text, { color: "yellow" }, "e"),
147
+ react_1.default.createElement(ink_1.Text, { color: "gray" }, "]")));
148
+ }
149
+ if (store.state === "watching" && store.lastBuild) {
150
+ const time = new Date(store.lastBuild.at).toTimeString().slice(0, 8);
151
+ return (react_1.default.createElement(ink_1.Text, null,
152
+ react_1.default.createElement(ink_1.Text, { color: "green" }, "\u2713 "),
153
+ react_1.default.createElement(ink_1.Text, null, store.lastBuild.task),
154
+ react_1.default.createElement(ink_1.Text, { color: "gray" }, " · " + fmtMs(store.lastBuild.ms)),
155
+ react_1.default.createElement(ink_1.Text, { color: "gray" }, " · " + time)));
156
+ }
157
+ if (store.state === "watching") {
158
+ return (react_1.default.createElement(ink_1.Text, { color: "green" },
159
+ "\u25CF ",
160
+ react_1.default.createElement(ink_1.Text, { color: "gray" }, "watching")));
161
+ }
162
+ return (react_1.default.createElement(ink_1.Text, { color: "yellow" },
163
+ "\u25CC ",
164
+ react_1.default.createElement(ink_1.Text, { color: "gray" }, "starting\u2026")));
165
+ }
166
+ function Dashboard({ store }) {
167
+ const info = store.themeInfo;
168
+ const shopify = store.shopify;
169
+ // Prefer live shopify-cli URLs over cached context URLs when available.
170
+ const previewUrl = shopify.previewUrl || info?.previewUrl;
171
+ const editorUrl = shopify.editorUrl || info?.customizerUrl;
172
+ // Every row is always rendered. Shopify URLs show "loading…" until the
173
+ // dev server prints them; context fields show "N/A" when not configured.
174
+ const rows = [
175
+ [
176
+ "Context",
177
+ info?.contextName ? (react_1.default.createElement(ink_1.Text, null,
178
+ info.contextName,
179
+ info.contextStatus && (react_1.default.createElement(ink_1.Text, { color: "gray" }, " (" + info.contextStatus + ")")))) : (react_1.default.createElement(NA, null)),
180
+ ],
181
+ [
182
+ "Branch",
183
+ info?.branch ? (react_1.default.createElement(ink_1.Text, null,
184
+ info.branch,
185
+ info.baseBranch && (react_1.default.createElement(ink_1.Text, { color: "gray" }, " → " + info.baseBranch)))) : (react_1.default.createElement(NA, null)),
186
+ ],
187
+ [
188
+ "Store",
189
+ info?.storeDomain || store.sourceLabel ? (react_1.default.createElement(ink_1.Text, null, info?.storeDomain || store.sourceLabel)) : (react_1.default.createElement(NA, null)),
190
+ ],
191
+ [
192
+ "Theme",
193
+ info?.previewThemeName || info?.previewThemeId ? (react_1.default.createElement(ink_1.Text, null,
194
+ info.previewThemeName ?? String(info.previewThemeId),
195
+ info.previewThemeName && info.previewThemeId && (react_1.default.createElement(ink_1.Text, { color: "gray" }, " (" + info.previewThemeId + ")")))) : (react_1.default.createElement(NA, null)),
196
+ ],
197
+ ["Local", shopify.localUrl ? react_1.default.createElement(Url, { value: shopify.localUrl }) : react_1.default.createElement(Loading, null)],
198
+ ["Preview", previewUrl ? react_1.default.createElement(Url, { value: previewUrl }) : react_1.default.createElement(Loading, null)],
199
+ ["Editor", editorUrl ? react_1.default.createElement(Url, { value: editorUrl }) : react_1.default.createElement(Loading, null)],
200
+ [
201
+ "Task",
202
+ info?.asanaTaskUrl ? react_1.default.createElement(Url, { value: info.asanaTaskUrl }) : react_1.default.createElement(NA, null),
203
+ ],
204
+ ["PR", info?.prUrl ? react_1.default.createElement(Url, { value: info.prUrl }) : react_1.default.createElement(NA, null)],
205
+ ];
206
+ return (react_1.default.createElement(ink_1.Box, { flexDirection: "column" },
207
+ shopify.authUrl && react_1.default.createElement(AuthBanner, { store: store }),
208
+ rows.map(([label, value], i) => (react_1.default.createElement(ink_1.Box, { key: i },
209
+ react_1.default.createElement(ink_1.Box, { width: 10 },
210
+ react_1.default.createElement(ink_1.Text, { color: "gray" }, label)),
211
+ value)))));
212
+ }
213
+ function AuthBanner({ store }) {
214
+ const { authUrl, authUserCode } = store.shopify;
215
+ return (react_1.default.createElement(ink_1.Box, { borderStyle: "round", borderColor: "yellow", paddingX: 1, flexDirection: "column", marginBottom: 1 },
216
+ react_1.default.createElement(ink_1.Text, { color: "yellow", bold: true }, "\u26A0 Shopify CLI needs you to log in"),
217
+ react_1.default.createElement(ink_1.Box, { marginTop: 1, flexDirection: "column" },
218
+ react_1.default.createElement(ink_1.Text, null,
219
+ react_1.default.createElement(ink_1.Text, { color: "gray" }, "Open: "),
220
+ react_1.default.createElement(ink_1.Text, { color: "blue" }, authUrl)),
221
+ authUserCode && (react_1.default.createElement(ink_1.Text, null,
222
+ react_1.default.createElement(ink_1.Text, { color: "gray" }, "Verify code: "),
223
+ react_1.default.createElement(ink_1.Text, { color: "yellow", bold: true }, authUserCode))))));
224
+ }
225
+ function Url({ value }) {
226
+ return react_1.default.createElement(ink_1.Text, { color: "blue" }, value);
227
+ }
228
+ function Loading() {
229
+ return react_1.default.createElement(ink_1.Text, { color: "yellow" }, "loading\u2026");
230
+ }
231
+ function NA() {
232
+ return react_1.default.createElement(ink_1.Text, { color: "gray" }, "N/A");
233
+ }
234
+ function Logs({ store, rows, offset, cols, }) {
235
+ const visibleRows = Math.max(3, rows);
236
+ const logs = store.logs;
237
+ const total = logs.length;
238
+ const end = Math.max(0, total - offset);
239
+ const start = Math.max(0, end - visibleRows);
240
+ const slice = logs.slice(start, end);
241
+ const following = offset === 0;
242
+ const scrollHint = following
243
+ ? `following (${total} lines)`
244
+ : `${start + 1}-${end} of ${total} · [j/k] scroll · [G] bottom`;
245
+ return (react_1.default.createElement(ink_1.Box, { flexDirection: "column" },
246
+ react_1.default.createElement(ink_1.Text, { color: "gray" }, scrollHint),
247
+ react_1.default.createElement(ink_1.Box, { flexDirection: "column", marginTop: 1 }, slice.length === 0 ? (react_1.default.createElement(ink_1.Text, { color: "gray" }, "No output yet.")) : (slice.map((entry) => react_1.default.createElement(LogLine, { key: entry.id, entry: entry, cols: cols }))))));
248
+ }
249
+ function LogLine({ entry, cols, }) {
250
+ const color = colorForKind(entry.kind);
251
+ const time = new Date(entry.ts).toTimeString().slice(0, 8);
252
+ const budget = Math.max(20, cols - time.length - 3);
253
+ const text = truncate(entry.text, budget);
254
+ return (react_1.default.createElement(ink_1.Text, null,
255
+ react_1.default.createElement(ink_1.Text, { color: "gray" }, time + " "),
256
+ react_1.default.createElement(ink_1.Text, { color: color }, text)));
257
+ }
258
+ function Errors({ store, cols, }) {
259
+ const err = store.lastError;
260
+ if (!err) {
261
+ return react_1.default.createElement(ink_1.Text, { color: "gray" }, "No errors recorded.");
262
+ }
263
+ const ago = fmtAgo(Date.now() - err.at);
264
+ return (react_1.default.createElement(ink_1.Box, { flexDirection: "column" },
265
+ react_1.default.createElement(ink_1.Text, { color: "red", bold: true },
266
+ "\u26A0 Last error ",
267
+ react_1.default.createElement(ink_1.Text, { color: "gray" },
268
+ "(",
269
+ ago,
270
+ " ago)")),
271
+ react_1.default.createElement(ink_1.Box, { marginTop: 1, flexDirection: "column" }, err.lines.map((line, i) => (react_1.default.createElement(ink_1.Text, { key: i, color: "red" }, truncate(line, Math.max(20, cols - 2))))))));
272
+ }
273
+ function Footer({ tab, store, }) {
274
+ const hasError = Boolean(store.lastError);
275
+ return (react_1.default.createElement(ink_1.Box, { borderStyle: "round", borderColor: "gray", paddingX: 1, justifyContent: "space-between" },
276
+ react_1.default.createElement(ink_1.Box, null,
277
+ react_1.default.createElement(TabLabel, { active: tab === "dashboard", key_: "d", label: "dashboard" }),
278
+ react_1.default.createElement(ink_1.Text, { color: "gray" }, " "),
279
+ react_1.default.createElement(TabLabel, { active: tab === "logs", key_: "l", label: `logs (${store.logs.length})` }),
280
+ react_1.default.createElement(ink_1.Text, { color: "gray" }, " "),
281
+ react_1.default.createElement(TabLabel, { active: tab === "errors", key_: "e", label: "errors", marker: hasError ? "!" : undefined })),
282
+ react_1.default.createElement(ink_1.Text, { color: "gray" },
283
+ "[",
284
+ react_1.default.createElement(ink_1.Text, { color: "yellow" }, "q"),
285
+ "] quit")));
286
+ }
287
+ function TabLabel({ active, key_, label, marker, }) {
288
+ return (react_1.default.createElement(ink_1.Text, null,
289
+ react_1.default.createElement(ink_1.Text, { color: "gray" }, "["),
290
+ react_1.default.createElement(ink_1.Text, { color: "yellow" }, key_),
291
+ react_1.default.createElement(ink_1.Text, { color: "gray" }, "] "),
292
+ react_1.default.createElement(ink_1.Text, { color: active ? "cyan" : "white", bold: active }, label),
293
+ marker && react_1.default.createElement(ink_1.Text, { color: "red" }, " " + marker)));
294
+ }
295
+ function colorForKind(kind) {
296
+ switch (kind) {
297
+ case "error":
298
+ case "build-error":
299
+ return "red";
300
+ case "warn":
301
+ return "yellow";
302
+ case "build-start":
303
+ case "build-done":
304
+ return "cyan";
305
+ case "file-change":
306
+ return "magenta";
307
+ case "upload":
308
+ return "blue";
309
+ case "verbose":
310
+ return "gray";
311
+ default:
312
+ return "white";
313
+ }
314
+ }
315
+ function fmtMs(ms) {
316
+ if (ms < 1000)
317
+ return `${Math.round(ms)}ms`;
318
+ return `${(ms / 1000).toFixed(1)}s`;
319
+ }
320
+ function fmtAgo(ms) {
321
+ if (ms < 1000)
322
+ return "just now";
323
+ if (ms < 60 * 1000)
324
+ return `${Math.round(ms / 1000)}s`;
325
+ if (ms < 60 * 60 * 1000) {
326
+ const m = Math.floor(ms / 60000);
327
+ const s = Math.round((ms % 60000) / 1000);
328
+ return s > 0 && m < 10 ? `${m}m ${s}s` : `${m}m`;
329
+ }
330
+ return `${Math.round(ms / 3600000)}h`;
331
+ }
332
+ function truncate(s, max) {
333
+ if (s.length <= max)
334
+ return s;
335
+ return s.slice(0, Math.max(0, max - 1)) + "…";
336
+ }
337
+ //# sourceMappingURL=App.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../../../src/tasks/watch-tui/App.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ export declare const stripAnsi: (s: string) => string;
2
+ export type EventKind = "build-start" | "build-done" | "build-error" | "file-change" | "upload" | "error" | "warn" | "info" | "verbose";
3
+ export type Event = {
4
+ kind: "build-start";
5
+ task: string;
6
+ } | {
7
+ kind: "build-done";
8
+ task: string;
9
+ ms: number;
10
+ } | {
11
+ kind: "build-error";
12
+ task: string;
13
+ } | {
14
+ kind: "file-change";
15
+ root: "src" | "dist";
16
+ dir: string;
17
+ file: string;
18
+ event: string;
19
+ } | {
20
+ kind: "upload";
21
+ message: string;
22
+ } | {
23
+ kind: "error";
24
+ message: string;
25
+ } | {
26
+ kind: "warn";
27
+ message: string;
28
+ } | {
29
+ kind: "info";
30
+ message: string;
31
+ } | {
32
+ kind: "verbose";
33
+ message: string;
34
+ };
35
+ export declare function classify(raw: string): Event | null;
36
+ /**
37
+ * Pick the most useful one-line summary from a multi-line error block.
38
+ */
39
+ export declare function pickErrorSummary(lines: string[]): string;