@madebyseed/seed-cli-tools 3.0.0 → 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.
- package/CHANGELOG.md +57 -0
- package/__fixtures__/legacy-js-min/baseline/theme.dev.js +13 -0
- package/__fixtures__/legacy-js-min/baseline/theme.prod.js +1 -0
- package/__fixtures__/legacy-js-min/dist/assets/theme.js +13 -0
- package/__fixtures__/legacy-js-min/package.json +9 -0
- package/__fixtures__/legacy-js-min/src/scripts/components/sample.js +4 -0
- package/__fixtures__/legacy-js-min/src/scripts/theme.js +9 -0
- package/__fixtures__/legacy-js-min/src/scripts/vendor/lib.js +7 -0
- package/__fixtures__/legacy-js-min/src/scripts/vendor.js +3 -0
- package/__fixtures__/legacy-js-min/verify.sh +34 -0
- package/__fixtures__/module-js-min/dist/assets/components-greeter.js +6 -0
- package/__fixtures__/module-js-min/dist/assets/components-greeter.js.map +1 -0
- package/__fixtures__/module-js-min/dist/assets/components-items.js +5 -0
- package/__fixtures__/module-js-min/dist/assets/components-items.js.map +1 -0
- package/__fixtures__/module-js-min/dist/assets/header.js +20 -0
- package/__fixtures__/module-js-min/dist/assets/header.js.map +1 -0
- package/__fixtures__/module-js-min/dist/assets/sections-cart-items.js +8 -0
- package/__fixtures__/module-js-min/dist/assets/sections-cart-items.js.map +1 -0
- package/__fixtures__/module-js-min/dist/assets/vendor-lib.js +4 -0
- package/__fixtures__/module-js-min/dist/assets/vendor-lib.js.map +1 -0
- package/__fixtures__/module-js-min/package.json +9 -0
- package/__fixtures__/module-js-min/seed.project.json +15 -0
- package/__fixtures__/module-js-min/src/scripts/components/greeter.js +4 -0
- package/__fixtures__/module-js-min/src/scripts/components/items.js +3 -0
- package/__fixtures__/module-js-min/src/scripts/header.js +18 -0
- package/__fixtures__/module-js-min/src/scripts/sections/cart/items.js +6 -0
- package/__fixtures__/module-js-min/src/scripts/vendor/lib.js +2 -0
- package/__fixtures__/module-js-min/verify.sh +58 -0
- package/lib/commands/watch.js +55 -7
- package/lib/commands/watch.js.map +1 -1
- package/lib/shopify-bin.d.ts +14 -0
- package/lib/shopify-bin.js +18 -0
- package/lib/shopify-bin.js.map +1 -0
- package/lib/tasks/build-js-module.d.ts +2 -0
- package/lib/tasks/build-js-module.js +93 -0
- package/lib/tasks/build-js-module.js.map +1 -0
- package/lib/tasks/build-js.js +13 -1
- package/lib/tasks/build-js.js.map +1 -1
- package/lib/tasks/includes/config.d.ts +2 -0
- package/lib/tasks/includes/config.js +3 -0
- package/lib/tasks/includes/config.js.map +1 -1
- package/lib/tasks/includes/js-mode.d.ts +12 -0
- package/lib/tasks/includes/js-mode.js +42 -0
- package/lib/tasks/includes/js-mode.js.map +1 -0
- package/lib/tasks/watch-tui/App.d.ts +8 -0
- package/lib/tasks/watch-tui/App.js +337 -0
- package/lib/tasks/watch-tui/App.js.map +1 -0
- package/lib/tasks/watch-tui/classify.d.ts +39 -0
- package/lib/tasks/watch-tui/classify.js +84 -0
- package/lib/tasks/watch-tui/classify.js.map +1 -0
- package/lib/tasks/watch-tui/index.d.ts +30 -0
- package/lib/tasks/watch-tui/index.js +299 -0
- package/lib/tasks/watch-tui/index.js.map +1 -0
- package/lib/tasks/watch-tui/shopify-parse.d.ts +24 -0
- package/lib/tasks/watch-tui/shopify-parse.js +87 -0
- package/lib/tasks/watch-tui/shopify-parse.js.map +1 -0
- package/lib/tasks/watch-tui/state.d.ts +68 -0
- package/lib/tasks/watch-tui/state.js +61 -0
- package/lib/tasks/watch-tui/state.js.map +1 -0
- package/lib/tasks/watch-tui/theme-info.d.ts +10 -0
- package/lib/tasks/watch-tui/theme-info.js +79 -0
- package/lib/tasks/watch-tui/theme-info.js.map +1 -0
- package/lib/utils.js +63 -88
- package/lib/utils.js.map +1 -1
- package/package.json +11 -2
- package/src/commands/watch.ts +70 -20
- package/src/shopify-bin.ts +21 -0
- package/src/tasks/build-js-module.ts +92 -0
- package/src/tasks/build-js.ts +13 -1
- package/src/tasks/includes/config.ts +5 -0
- package/src/tasks/includes/js-mode.ts +48 -0
- package/src/tasks/watch-tui/App.tsx +486 -0
- package/src/tasks/watch-tui/classify.ts +120 -0
- package/src/tasks/watch-tui/index.ts +342 -0
- package/src/tasks/watch-tui/shopify-parse.ts +103 -0
- package/src/tasks/watch-tui/state.ts +113 -0
- package/src/tasks/watch-tui/theme-info.ts +109 -0
- package/src/types/declarations.d.ts +19 -1
- package/src/utils.ts +64 -94
- package/tsconfig.json +3 -2
- package/tsconfig.tsbuildinfo +1 -1
package/lib/tasks/build-js.js
CHANGED
|
@@ -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":";;;;;AAAA,gDAAwB;AACxB,sDAA6B;AAC7B,0DAAiC;AACjC,oEAA4C;AAC5C,gEAAmC;AACnC,gEAAmC;AACnC,wDAAgC;AAChC,+BAA4B;AAC5B,2BAAgC;AAChC,qEAAyC;AACzC,+DAAuC;AACvC,mEAA2C;
|
|
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":";;;;;AAAA,+BAA4B;AAC5B,kDAA0B;AAC1B,0DAAiC;AACjC,8DAAsC;AACtC,sDAA8B;AAC9B,sEAAsC;AACtC,wEAAwC;AACxC,wDAAgC;AAChC,2BAAgC;AAChC,gEAAwC;AACxC,oEAA2C;
|
|
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,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;
|