@ecomweb/cli 0.6.1 → 0.8.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 (191) hide show
  1. package/README.md +235 -40
  2. package/dist/base-command.d.ts +8 -0
  3. package/dist/base-command.js +43 -4
  4. package/dist/base-command.js.map +1 -1
  5. package/dist/commands/auth/login.d.ts +6 -4
  6. package/dist/commands/auth/login.js +117 -89
  7. package/dist/commands/auth/login.js.map +1 -1
  8. package/dist/commands/auth/logout.js +28 -9
  9. package/dist/commands/auth/logout.js.map +1 -1
  10. package/dist/commands/auth/profiles/delete.js +11 -0
  11. package/dist/commands/auth/profiles/delete.js.map +1 -1
  12. package/dist/commands/auth/profiles/list.js +2 -2
  13. package/dist/commands/auth/profiles/list.js.map +1 -1
  14. package/dist/commands/auth/status.js +17 -9
  15. package/dist/commands/auth/status.js.map +1 -1
  16. package/dist/commands/deploy.js +16 -3
  17. package/dist/commands/deploy.js.map +1 -1
  18. package/dist/commands/deployments/promote.js +1 -1
  19. package/dist/commands/deployments/promote.js.map +1 -1
  20. package/dist/commands/deployments/rollback.js +1 -1
  21. package/dist/commands/deployments/rollback.js.map +1 -1
  22. package/dist/commands/deployments/unpublish.js +1 -1
  23. package/dist/commands/deployments/unpublish.js.map +1 -1
  24. package/dist/commands/describe.d.ts +1 -1
  25. package/dist/commands/describe.js +4 -4
  26. package/dist/commands/describe.js.map +1 -1
  27. package/dist/commands/{init.d.ts → metafield-definitions/create.d.ts} +4 -6
  28. package/dist/commands/metafield-definitions/create.js +34 -0
  29. package/dist/commands/metafield-definitions/create.js.map +1 -0
  30. package/dist/commands/metafield-definitions/delete.d.ts +21 -0
  31. package/dist/commands/metafield-definitions/delete.js +32 -0
  32. package/dist/commands/metafield-definitions/delete.js.map +1 -0
  33. package/dist/commands/metafield-definitions/get.d.ts +21 -0
  34. package/dist/commands/metafield-definitions/get.js +30 -0
  35. package/dist/commands/metafield-definitions/get.js.map +1 -0
  36. package/dist/commands/metafield-definitions/list.d.ts +19 -0
  37. package/dist/commands/metafield-definitions/list.js +35 -0
  38. package/dist/commands/metafield-definitions/list.js.map +1 -0
  39. package/dist/commands/metafield-definitions/update.d.ts +23 -0
  40. package/dist/commands/metafield-definitions/update.js +39 -0
  41. package/dist/commands/metafield-definitions/update.js.map +1 -0
  42. package/dist/commands/{auth/verify.d.ts → metafields/get.d.ts} +2 -3
  43. package/dist/commands/metafields/get.js +32 -0
  44. package/dist/commands/metafields/get.js.map +1 -0
  45. package/dist/commands/metafields/set.d.ts +24 -0
  46. package/dist/commands/metafields/set.js +83 -0
  47. package/dist/commands/metafields/set.js.map +1 -0
  48. package/dist/commands/metaobject-definitions/create.d.ts +20 -0
  49. package/dist/commands/metaobject-definitions/create.js +33 -0
  50. package/dist/commands/metaobject-definitions/create.js.map +1 -0
  51. package/dist/commands/metaobject-definitions/delete.d.ts +21 -0
  52. package/dist/commands/metaobject-definitions/delete.js +32 -0
  53. package/dist/commands/metaobject-definitions/delete.js.map +1 -0
  54. package/dist/commands/metaobject-definitions/get.d.ts +21 -0
  55. package/dist/commands/metaobject-definitions/get.js +31 -0
  56. package/dist/commands/metaobject-definitions/get.js.map +1 -0
  57. package/dist/commands/metaobject-definitions/list.d.ts +20 -0
  58. package/dist/commands/metaobject-definitions/list.js +41 -0
  59. package/dist/commands/metaobject-definitions/list.js.map +1 -0
  60. package/dist/commands/metaobject-definitions/update.d.ts +23 -0
  61. package/dist/commands/metaobject-definitions/update.js +38 -0
  62. package/dist/commands/metaobject-definitions/update.js.map +1 -0
  63. package/dist/commands/metaobjects/create.d.ts +24 -0
  64. package/dist/commands/metaobjects/create.js +40 -0
  65. package/dist/commands/metaobjects/create.js.map +1 -0
  66. package/dist/commands/metaobjects/delete.d.ts +22 -0
  67. package/dist/commands/metaobjects/delete.js +34 -0
  68. package/dist/commands/metaobjects/delete.js.map +1 -0
  69. package/dist/commands/metaobjects/get.d.ts +22 -0
  70. package/dist/commands/metaobjects/get.js +32 -0
  71. package/dist/commands/metaobjects/get.js.map +1 -0
  72. package/dist/commands/metaobjects/list.d.ts +24 -0
  73. package/dist/commands/metaobjects/list.js +56 -0
  74. package/dist/commands/metaobjects/list.js.map +1 -0
  75. package/dist/commands/metaobjects/update.d.ts +27 -0
  76. package/dist/commands/metaobjects/update.js +45 -0
  77. package/dist/commands/metaobjects/update.js.map +1 -0
  78. package/dist/commands/storefront/init.d.ts +3 -1
  79. package/dist/commands/storefront/init.js +23 -2
  80. package/dist/commands/storefront/init.js.map +1 -1
  81. package/dist/commands/stores/create.d.ts +21 -0
  82. package/dist/commands/stores/create.js +68 -0
  83. package/dist/commands/stores/create.js.map +1 -0
  84. package/dist/commands/stores/current.js +1 -1
  85. package/dist/commands/stores/current.js.map +1 -1
  86. package/dist/commands/stores/list.js +3 -3
  87. package/dist/commands/stores/list.js.map +1 -1
  88. package/dist/commands/stores/switch.js +14 -6
  89. package/dist/commands/stores/switch.js.map +1 -1
  90. package/dist/commands/theme/create.d.ts +20 -0
  91. package/dist/commands/theme/create.js +40 -0
  92. package/dist/commands/theme/create.js.map +1 -0
  93. package/dist/commands/{auth/register.d.ts → theme/duplicate.d.ts} +4 -2
  94. package/dist/commands/theme/duplicate.js +34 -0
  95. package/dist/commands/theme/duplicate.js.map +1 -0
  96. package/dist/commands/theme/link.d.ts +24 -0
  97. package/dist/commands/theme/link.js +60 -0
  98. package/dist/commands/theme/link.js.map +1 -0
  99. package/dist/commands/{setup.d.ts → theme/list.d.ts} +2 -3
  100. package/dist/commands/theme/list.js +32 -0
  101. package/dist/commands/theme/list.js.map +1 -0
  102. package/dist/commands/theme/publish.d.ts +22 -0
  103. package/dist/commands/theme/publish.js +68 -0
  104. package/dist/commands/theme/publish.js.map +1 -0
  105. package/dist/commands/theme/schema/push.d.ts +20 -0
  106. package/dist/commands/theme/schema/push.js +61 -0
  107. package/dist/commands/theme/schema/push.js.map +1 -0
  108. package/dist/commands/theme/update.d.ts +23 -0
  109. package/dist/commands/theme/update.js +62 -0
  110. package/dist/commands/theme/update.js.map +1 -0
  111. package/dist/commands/theme/use.d.ts +23 -0
  112. package/dist/commands/theme/use.js +71 -0
  113. package/dist/commands/theme/use.js.map +1 -0
  114. package/dist/commands/theme/versions.d.ts +21 -0
  115. package/dist/commands/theme/versions.js +33 -0
  116. package/dist/commands/theme/versions.js.map +1 -0
  117. package/dist/lib/api-client.d.ts +5 -4
  118. package/dist/lib/api-client.js +32 -16
  119. package/dist/lib/api-client.js.map +1 -1
  120. package/dist/lib/codex-skill.d.ts +1 -1
  121. package/dist/lib/codex-skill.js +12 -8
  122. package/dist/lib/codex-skill.js.map +1 -1
  123. package/dist/lib/config.d.ts +6 -18
  124. package/dist/lib/config.js +35 -64
  125. package/dist/lib/config.js.map +1 -1
  126. package/dist/lib/credential-store.d.ts +44 -0
  127. package/dist/lib/credential-store.js +137 -0
  128. package/dist/lib/credential-store.js.map +1 -0
  129. package/dist/lib/custom-data.d.ts +42 -0
  130. package/dist/lib/custom-data.js +167 -0
  131. package/dist/lib/custom-data.js.map +1 -0
  132. package/dist/lib/deployments.d.ts +8 -1
  133. package/dist/lib/deployments.js +58 -11
  134. package/dist/lib/deployments.js.map +1 -1
  135. package/dist/lib/describe-metafields.d.ts +9 -0
  136. package/dist/lib/describe-metafields.js +213 -0
  137. package/dist/lib/describe-metafields.js.map +1 -0
  138. package/dist/lib/device-login.d.ts +22 -0
  139. package/dist/lib/device-login.js +66 -0
  140. package/dist/lib/device-login.js.map +1 -0
  141. package/dist/lib/errors.d.ts +1 -0
  142. package/dist/lib/errors.js +6 -1
  143. package/dist/lib/errors.js.map +1 -1
  144. package/dist/lib/file-lock.d.ts +6 -0
  145. package/dist/lib/file-lock.js +66 -0
  146. package/dist/lib/file-lock.js.map +1 -0
  147. package/dist/lib/live-confirm.d.ts +11 -0
  148. package/dist/lib/live-confirm.js +34 -0
  149. package/dist/lib/live-confirm.js.map +1 -0
  150. package/dist/lib/open-browser.d.ts +13 -0
  151. package/dist/lib/open-browser.js +38 -0
  152. package/dist/lib/open-browser.js.map +1 -0
  153. package/dist/lib/pending-login.d.ts +5 -0
  154. package/dist/lib/pending-login.js +39 -0
  155. package/dist/lib/pending-login.js.map +1 -0
  156. package/dist/lib/project-setup.d.ts +1 -0
  157. package/dist/lib/project-setup.js +20 -0
  158. package/dist/lib/project-setup.js.map +1 -1
  159. package/dist/lib/secure-file.d.ts +1 -0
  160. package/dist/lib/secure-file.js +15 -0
  161. package/dist/lib/secure-file.js.map +1 -0
  162. package/dist/lib/session.d.ts +40 -0
  163. package/dist/lib/session.js +80 -0
  164. package/dist/lib/session.js.map +1 -0
  165. package/dist/lib/store-selection.d.ts +19 -0
  166. package/dist/lib/store-selection.js +23 -0
  167. package/dist/lib/store-selection.js.map +1 -0
  168. package/dist/lib/template-scaffold.d.ts +1 -0
  169. package/dist/lib/template-scaffold.js +5 -2
  170. package/dist/lib/template-scaffold.js.map +1 -1
  171. package/dist/lib/theme-schema-export.d.ts +1 -1
  172. package/dist/lib/theme-schema-export.js +4 -5
  173. package/dist/lib/theme-schema-export.js.map +1 -1
  174. package/dist/lib/themes.d.ts +143 -0
  175. package/dist/lib/themes.js +277 -0
  176. package/dist/lib/themes.js.map +1 -0
  177. package/dist/lib/validators.js +16 -0
  178. package/dist/lib/validators.js.map +1 -1
  179. package/oclif.manifest.json +8168 -5388
  180. package/package.json +2 -1
  181. package/dist/commands/auth/register.js +0 -35
  182. package/dist/commands/auth/register.js.map +0 -1
  183. package/dist/commands/auth/verify.js +0 -43
  184. package/dist/commands/auth/verify.js.map +0 -1
  185. package/dist/commands/init.js +0 -84
  186. package/dist/commands/init.js.map +0 -1
  187. package/dist/commands/setup.js +0 -186
  188. package/dist/commands/setup.js.map +0 -1
  189. package/dist/lib/email-login.d.ts +0 -35
  190. package/dist/lib/email-login.js +0 -86
  191. package/dist/lib/email-login.js.map +0 -1
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.CHILD_STDIO = void 0;
7
7
  exports.projectStoreRef = projectStoreRef;
8
8
  exports.projectStoreThemeId = projectStoreThemeId;
9
+ exports.writeProjectStoreThemeId = writeProjectStoreThemeId;
9
10
  exports.installDependencies = installDependencies;
10
11
  exports.nextSteps = nextSteps;
11
12
  exports.writeCloneDevSettings = writeCloneDevSettings;
@@ -39,6 +40,25 @@ function projectStoreThemeId(dir) {
39
40
  return undefined;
40
41
  }
41
42
  }
43
+ function writeProjectStoreThemeId(dir, id, storeRef) {
44
+ const file = node_path_1.default.join(dir, ".ecomweb.json");
45
+ let current = {};
46
+ if ((0, node_fs_1.existsSync)(file)) {
47
+ let parsed;
48
+ try {
49
+ parsed = JSON.parse((0, node_fs_1.readFileSync)(file, "utf8"));
50
+ }
51
+ catch {
52
+ parsed = undefined;
53
+ }
54
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
55
+ throw new Error(`${file} is not a JSON object; add "storeThemeId": "${id}" to it yourself`);
56
+ }
57
+ current = parsed;
58
+ }
59
+ const ref = typeof current.storeRef === "string" && current.storeRef ? undefined : storeRef;
60
+ (0, node_fs_1.writeFileSync)(file, JSON.stringify({ ...current, ...(ref && { storeRef: ref }), storeThemeId: id }, null, 2) + "\n");
61
+ }
42
62
  const spawnRun = (cmd, args, cwd) => {
43
63
  const r = (0, node_child_process_1.spawnSync)(cmd, args, { cwd, stdio: exports.CHILD_STDIO });
44
64
  return { status: r.status, error: r.error };
@@ -1 +1 @@
1
- {"version":3,"file":"project-setup.js","sourceRoot":"","sources":["../../src/lib/project-setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-setup.js","sourceRoot":"","sources":["../../src/lib/project-setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function writePrivateFile(file: string, contents: string): void;
@@ -0,0 +1,15 @@
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.writePrivateFile = writePrivateFile;
7
+ const node_fs_1 = require("node:fs");
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ function writePrivateFile(file, contents) {
10
+ (0, node_fs_1.mkdirSync)(node_path_1.default.dirname(file), { recursive: true, mode: 0o700 });
11
+ const tmp = `${file}.${process.pid}.${Date.now()}.tmp`;
12
+ (0, node_fs_1.writeFileSync)(tmp, contents, { mode: 0o600 });
13
+ (0, node_fs_1.renameSync)(tmp, file);
14
+ }
15
+ //# sourceMappingURL=secure-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secure-file.js","sourceRoot":"","sources":["../../src/lib/secure-file.ts"],"names":[],"mappings":";;;;;AAQA,4CAKC;AAbD,qCAA+D;AAC/D,0DAA6B;AAO7B,SAAgB,gBAAgB,CAAC,IAAY,EAAE,QAAgB;IAC7D,IAAA,mBAAS,EAAC,mBAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAChE,MAAM,GAAG,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;IACvD,IAAA,uBAAa,EAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9C,IAAA,oBAAU,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACxB,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { CredentialStore, StoredSession } from "./credential-store";
2
+ import { CliError } from "./errors";
3
+ export interface TokenResponse {
4
+ access_token: string;
5
+ refresh_token: string;
6
+ expires_at: number;
7
+ expires_in: number;
8
+ user: {
9
+ id: string;
10
+ email: string | null;
11
+ name: string | null;
12
+ };
13
+ }
14
+ export interface SessionProvider {
15
+ hasSession(): boolean;
16
+ accessToken(opts?: {
17
+ force?: boolean;
18
+ }): Promise<string>;
19
+ }
20
+ export declare const REFRESH_MARGIN_SECONDS = 60;
21
+ export declare function sessionFromTokens(t: TokenResponse, apiUrl: string): StoredSession;
22
+ export declare function assertSessionForApi(session: StoredSession, apiUrl: string): void;
23
+ export declare function notLoggedIn(): CliError;
24
+ export interface SessionManagerOptions {
25
+ store: CredentialStore;
26
+ profile: string;
27
+ lockPath: string;
28
+ apiUrl: string;
29
+ refresh: (refreshToken: string) => Promise<TokenResponse>;
30
+ now?: () => number;
31
+ }
32
+ export declare class SessionManager implements SessionProvider {
33
+ private readonly opts;
34
+ constructor(opts: SessionManagerOptions);
35
+ hasSession(): boolean;
36
+ accessToken({ force }?: {
37
+ force?: boolean;
38
+ }): Promise<string>;
39
+ private expiringSoon;
40
+ }
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SessionManager = exports.REFRESH_MARGIN_SECONDS = void 0;
4
+ exports.sessionFromTokens = sessionFromTokens;
5
+ exports.assertSessionForApi = assertSessionForApi;
6
+ exports.notLoggedIn = notLoggedIn;
7
+ const errors_1 = require("./errors");
8
+ const file_lock_1 = require("./file-lock");
9
+ exports.REFRESH_MARGIN_SECONDS = 60;
10
+ function sessionFromTokens(t, apiUrl) {
11
+ return {
12
+ access_token: t.access_token,
13
+ refresh_token: t.refresh_token,
14
+ expires_at: t.expires_at,
15
+ email: t.user.email,
16
+ user_id: t.user.id,
17
+ api_url: apiUrl,
18
+ };
19
+ }
20
+ function assertSessionForApi(session, apiUrl) {
21
+ if (session.api_url === undefined || session.api_url === apiUrl)
22
+ return;
23
+ throw new errors_1.CliError("SESSION_FOR_OTHER_API", `This profile is signed in to ${session.api_url}, but this command would talk to ${apiUrl}`, errors_1.ExitCode.AUTH_FAILURE, {
24
+ hint: `Use --api-url ${session.api_url} to work with that session, or run: ecomweb auth login --api-url ${apiUrl} (ideally with its own --profile) to sign in to the other API`,
25
+ details: { session_api_url: session.api_url, api_url: apiUrl },
26
+ });
27
+ }
28
+ function notLoggedIn() {
29
+ return new errors_1.CliError("NOT_LOGGED_IN", "Not logged in", errors_1.ExitCode.AUTH_FAILURE, { hint: "Run: ecomweb auth login" });
30
+ }
31
+ function isDeadSession(error) {
32
+ const response = error?.response;
33
+ return response?.status === 401 || response?.data?.code === "AUTH_SESSION_EXPIRED";
34
+ }
35
+ class SessionManager {
36
+ constructor(opts) {
37
+ this.opts = opts;
38
+ }
39
+ hasSession() {
40
+ return this.opts.store.get(this.opts.profile) !== undefined;
41
+ }
42
+ async accessToken({ force = false } = {}) {
43
+ const seen = this.opts.store.get(this.opts.profile);
44
+ if (!seen)
45
+ throw notLoggedIn();
46
+ assertSessionForApi(seen, this.opts.apiUrl);
47
+ if (!force && !this.expiringSoon(seen))
48
+ return seen.access_token;
49
+ return (0, file_lock_1.withFileLock)(this.opts.lockPath, async () => {
50
+ const latest = this.opts.store.get(this.opts.profile);
51
+ if (!latest)
52
+ throw notLoggedIn();
53
+ assertSessionForApi(latest, this.opts.apiUrl);
54
+ if (latest.access_token !== seen.access_token && !this.expiringSoon(latest))
55
+ return latest.access_token;
56
+ if (!force && !this.expiringSoon(latest))
57
+ return latest.access_token;
58
+ let tokens;
59
+ try {
60
+ tokens = await this.opts.refresh(latest.refresh_token);
61
+ }
62
+ catch (error) {
63
+ if (isDeadSession(error)) {
64
+ this.opts.store.delete(this.opts.profile);
65
+ throw notLoggedIn();
66
+ }
67
+ throw error;
68
+ }
69
+ const next = sessionFromTokens(tokens, this.opts.apiUrl);
70
+ this.opts.store.set(this.opts.profile, next);
71
+ return next.access_token;
72
+ });
73
+ }
74
+ expiringSoon(session) {
75
+ const nowSeconds = (this.opts.now ?? Date.now)() / 1000;
76
+ return session.expires_at - exports.REFRESH_MARGIN_SECONDS <= nowSeconds;
77
+ }
78
+ }
79
+ exports.SessionManager = SessionManager;
80
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export interface StoreSummary {
2
+ ref: string;
3
+ name: string;
4
+ }
5
+ export type StoreChoice = {
6
+ kind: "selected";
7
+ store: StoreSummary;
8
+ } | {
9
+ kind: "choose";
10
+ stores: StoreSummary[];
11
+ } | {
12
+ kind: "none";
13
+ };
14
+ export declare function chooseStore(opts: {
15
+ stores: StoreSummary[];
16
+ storeRef?: string;
17
+ currentRef?: string;
18
+ prompt?: (stores: StoreSummary[], currentRef?: string) => Promise<StoreSummary>;
19
+ }): Promise<StoreChoice>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.chooseStore = chooseStore;
4
+ const errors_1 = require("./errors");
5
+ async function chooseStore(opts) {
6
+ const { stores } = opts;
7
+ if (opts.storeRef) {
8
+ const store = stores.find((s) => s.ref === opts.storeRef);
9
+ if (!store) {
10
+ throw new errors_1.CliError("STORE_NOT_FOUND", `You have no store "${opts.storeRef}"`, errors_1.ExitCode.NOT_FOUND, { details: { stores } });
11
+ }
12
+ return { kind: "selected", store };
13
+ }
14
+ if (stores.length === 0)
15
+ return { kind: "none" };
16
+ if (stores.length === 1)
17
+ return { kind: "selected", store: stores[0] };
18
+ if (opts.prompt)
19
+ return { kind: "selected", store: await opts.prompt(stores, opts.currentRef) };
20
+ const current = stores.find((s) => s.ref === opts.currentRef);
21
+ return current ? { kind: "selected", store: current } : { kind: "choose", stores };
22
+ }
23
+ //# sourceMappingURL=store-selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-selection.js","sourceRoot":"","sources":["../../src/lib/store-selection.ts"],"names":[],"mappings":";;AAaA,kCAoBC;AAjCD,qCAA8C;AAavC,KAAK,UAAU,WAAW,CAAC,IAMjC;IACC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,iBAAQ,CAAC,iBAAiB,EAAE,sBAAsB,IAAI,CAAC,QAAQ,GAAG,EAAE,iBAAQ,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC7H,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACrC,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACjD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;IAChG,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;IAC9D,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AACrF,CAAC"}
@@ -3,6 +3,7 @@ export interface StoreRepoConfig {
3
3
  publishableKey: string;
4
4
  siteUrl: string;
5
5
  templateVersion: string;
6
+ storeThemeId?: string;
6
7
  }
7
8
  export declare function envProduction(cfg: StoreRepoConfig): string;
8
9
  export declare function envDevelopment(cfg: StoreRepoConfig): string;
@@ -28,8 +28,11 @@ function envDevelopment(cfg) {
28
28
  return envProduction({ ...cfg, siteUrl: "http://localhost:3002" });
29
29
  }
30
30
  function ecomwebJson(cfg) {
31
- return (JSON.stringify({ storeRef: cfg.storeRef, templateVersion: cfg.templateVersion }, null, 2) +
32
- "\n");
31
+ return (JSON.stringify({
32
+ storeRef: cfg.storeRef,
33
+ ...(cfg.storeThemeId && { storeThemeId: cfg.storeThemeId }),
34
+ templateVersion: cfg.templateVersion,
35
+ }, null, 2) + "\n");
33
36
  }
34
37
  function assertEmptyDir(dir) {
35
38
  if ((0, node_fs_1.existsSync)(dir) && (0, node_fs_1.readdirSync)(dir).length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"template-scaffold.js","sourceRoot":"","sources":["../../src/lib/template-scaffold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"template-scaffold.js","sourceRoot":"","sources":["../../src/lib/template-scaffold.ts"],"names":[],"mappings":"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"}
@@ -4,4 +4,4 @@ export type RunCapture = (cmd: string, args: string[], cwd: string) => {
4
4
  stderr: string;
5
5
  error?: string;
6
6
  };
7
- export declare function exportThemeSchema(dir: string, run?: RunCapture): Promise<unknown>;
7
+ export declare function exportThemeSchema(dir: string, run?: RunCapture, again?: string): Promise<unknown>;
@@ -13,8 +13,7 @@ const spawnCapture = (cmd, args, cwd) => {
13
13
  const error = r.error?.code;
14
14
  return { status: r.status, stdout: r.stdout ?? "", stderr: r.stderr || r.error?.message || "", error };
15
15
  };
16
- const SCHEMA_HINT = "Fix the theme's settings schema (themes/*/schema.ts), then deploy again.";
17
- async function exportThemeSchema(dir, run = spawnCapture) {
16
+ async function exportThemeSchema(dir, run = spawnCapture, again = "deploy again") {
18
17
  const pkgFile = node_path_1.default.join(dir, "package.json");
19
18
  if (!(0, node_fs_1.existsSync)(pkgFile))
20
19
  return undefined;
@@ -27,13 +26,13 @@ async function exportThemeSchema(dir, run = spawnCapture) {
27
26
  }
28
27
  if (typeof scripts["theme:export"] !== "string")
29
28
  return undefined;
30
- const fail = (detail, hint = SCHEMA_HINT) => new errors_1.CliError("THEME_EXPORT_FAILED", `pnpm run theme:export failed: ${detail}`, errors_1.ExitCode.VALIDATION, { hint });
29
+ const fail = (detail, hint = `Fix the theme's settings schema (themes/*/schema.ts), then ${again}.`) => new errors_1.CliError("THEME_EXPORT_FAILED", `pnpm run theme:export failed: ${detail}`, errors_1.ExitCode.VALIDATION, { hint });
31
30
  if (!(0, node_fs_1.existsSync)(node_path_1.default.join(dir, "node_modules"))) {
32
- throw fail("the project's dependencies are not installed", "Run pnpm install, then deploy again.");
31
+ throw fail("the project's dependencies are not installed", `Run pnpm install, then ${again}.`);
33
32
  }
34
33
  const r = run("pnpm", ["run", "--silent", "theme:export"], dir);
35
34
  if (r.error === "ENOENT")
36
- throw fail("pnpm was not found", "Install pnpm (corepack enable), then deploy again.");
35
+ throw fail("pnpm was not found", `Install pnpm (corepack enable), then ${again}.`);
37
36
  if (r.status !== 0)
38
37
  throw fail(r.stderr.trim() || `exit ${r.status}`);
39
38
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"theme-schema-export.js","sourceRoot":"","sources":["../../src/lib/theme-schema-export.ts"],"names":[],"mappings":";;;;;AAyBA,8CA2BC;AApDD,2DAA+C;AAC/C,qCAAmD;AACnD,0DAA6B;AAC7B,qCAA8C;AAQ9C,MAAM,YAAY,GAAe,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IAElD,MAAM,CAAC,GAAG,IAAA,8BAAS,EAAC,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC;IAC/F,MAAM,KAAK,GAAI,CAAC,CAAC,KAA2C,EAAE,IAAI,CAAC;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC;AACzG,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,0EAA0E,CAAC;AAOxF,KAAK,UAAU,iBAAiB,CAAC,GAAW,EAAE,MAAkB,YAAY;IACjF,MAAM,OAAO,GAAG,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC/C,IAAI,CAAC,IAAA,oBAAU,EAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,OAAO,GAA4B,EAAE,CAAC;IAC1C,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,cAAc,CAAC,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAElE,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,IAAI,GAAG,WAAW,EAAE,EAAE,CAClD,IAAI,iBAAQ,CAAC,qBAAqB,EAAE,iCAAiC,MAAM,EAAE,EAAE,iBAAQ,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhH,IAAI,CAAC,IAAA,oBAAU,EAAC,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,CAAC,8CAA8C,EAAE,sCAAsC,CAAC,CAAC;IACrG,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC;IAChE,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ;QAAE,MAAM,IAAI,CAAC,oBAAoB,EAAE,oDAAoD,CAAC,CAAC;IACjH,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACtE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC/F,OAAO,OAAO,CAAC,eAAe,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,CAAC,6CAA8C,KAAe,CAAC,OAAO,GAAG,CAAC,CAAC;IACvF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"theme-schema-export.js","sourceRoot":"","sources":["../../src/lib/theme-schema-export.ts"],"names":[],"mappings":";;;;;AAwBA,8CA+BC;AAvDD,2DAA+C;AAC/C,qCAAmD;AACnD,0DAA6B;AAC7B,qCAA8C;AAQ9C,MAAM,YAAY,GAAe,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;IAElD,MAAM,CAAC,GAAG,IAAA,8BAAS,EAAC,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC;IAC/F,MAAM,KAAK,GAAI,CAAC,CAAC,KAA2C,EAAE,IAAI,CAAC;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC;AACzG,CAAC,CAAC;AAQK,KAAK,UAAU,iBAAiB,CACrC,GAAW,EACX,MAAkB,YAAY,EAC9B,KAAK,GAAG,cAAc;IAEtB,MAAM,OAAO,GAAG,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC/C,IAAI,CAAC,IAAA,oBAAU,EAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,OAAO,GAA4B,EAAE,CAAC;IAC1C,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,cAAc,CAAC,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAElE,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,IAAI,GAAG,8DAA8D,KAAK,GAAG,EAAE,EAAE,CAC7G,IAAI,iBAAQ,CAAC,qBAAqB,EAAE,iCAAiC,MAAM,EAAE,EAAE,iBAAQ,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhH,IAAI,CAAC,IAAA,oBAAU,EAAC,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,CAAC,8CAA8C,EAAE,0BAA0B,KAAK,GAAG,CAAC,CAAC;IACjG,CAAC;IACD,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC;IAChE,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ;QAAE,MAAM,IAAI,CAAC,oBAAoB,EAAE,wCAAwC,KAAK,GAAG,CAAC,CAAC;IAC7G,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACtE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC/F,OAAO,OAAO,CAAC,eAAe,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,CAAC,6CAA8C,KAAe,CAAC,OAAO,GAAG,CAAC,CAAC;IACvF,CAAC;AACH,CAAC"}
@@ -0,0 +1,143 @@
1
+ import { CliError } from "./errors";
2
+ export type ThemeMode = "theme" | "custom" | "headless";
3
+ export type VersionKind = "release" | "build" | "link";
4
+ export interface CurrentVersion {
5
+ id: string;
6
+ kind: VersionKind;
7
+ label: string;
8
+ created_at?: string;
9
+ deployment_id?: string | null;
10
+ url?: string | null;
11
+ release_version?: string | null;
12
+ }
13
+ export interface ThemeView {
14
+ id: string;
15
+ name: string;
16
+ is_published: boolean;
17
+ mode?: ThemeMode;
18
+ current_version?: CurrentVersion | null;
19
+ latest_release?: {
20
+ version: string;
21
+ } | null;
22
+ versions_count?: number;
23
+ kind?: string;
24
+ [key: string]: unknown;
25
+ }
26
+ export interface ThemeRow {
27
+ id: string;
28
+ name: string;
29
+ mode: ThemeMode;
30
+ version: string | null;
31
+ live: boolean;
32
+ update: string | null;
33
+ }
34
+ export interface ThemeVersion {
35
+ id: string;
36
+ kind: VersionKind;
37
+ label: string;
38
+ created_at: string;
39
+ current: boolean;
40
+ serving: boolean;
41
+ usable: boolean;
42
+ unusable_reason?: string | null;
43
+ release?: {
44
+ version?: string;
45
+ [key: string]: unknown;
46
+ } | null;
47
+ build?: {
48
+ deployment_id: string;
49
+ status: string;
50
+ error: string | null;
51
+ } | null;
52
+ link?: {
53
+ url: string;
54
+ allowed_origins: string[];
55
+ } | null;
56
+ url?: string | null;
57
+ }
58
+ export interface VersionRow {
59
+ id: string;
60
+ kind: VersionKind;
61
+ label: string;
62
+ current: boolean;
63
+ serving: boolean;
64
+ usable: string;
65
+ created: string;
66
+ }
67
+ export interface ThemesClient {
68
+ storeGet<T = any>(path: string): Promise<T>;
69
+ storePost<T = any>(path: string, body?: unknown): Promise<T>;
70
+ storePut<T = any>(path: string, body?: unknown): Promise<T>;
71
+ storePatch<T = any>(path: string, body?: unknown): Promise<T>;
72
+ }
73
+ export declare function themeMode(t: Pick<ThemeView, "mode" | "current_version" | "kind">): ThemeMode;
74
+ export declare function newerRelease(t: Pick<ThemeView, "current_version" | "latest_release">): string | null;
75
+ export declare function themeRow(t: ThemeView): ThemeRow;
76
+ export declare function versionRow(v: ThemeVersion): VersionRow;
77
+ export declare function describeVersion(v: Pick<ThemeVersion, "kind" | "label"> & Partial<Pick<ThemeVersion, "link" | "url">>): string;
78
+ export declare function listThemes(client: ThemesClient): Promise<ThemeView[]>;
79
+ export declare function getTheme(client: ThemesClient, id: string): Promise<ThemeView>;
80
+ export declare function getThemeForChange(client: ThemesClient, id: string, opts: {
81
+ yes: boolean;
82
+ retry: string;
83
+ }): Promise<ThemeView | undefined>;
84
+ export declare const DEFAULT_CATALOG_THEME = "default";
85
+ export interface CreateThemeInput {
86
+ name?: string;
87
+ from?: string;
88
+ }
89
+ export declare function createThemeBody(input: CreateThemeInput): Record<string, unknown>;
90
+ export declare function createTheme(client: ThemesClient, input: CreateThemeInput): Promise<ThemeView>;
91
+ export declare function duplicateTheme(client: ThemesClient, id: string, name?: string): Promise<ThemeView>;
92
+ export declare function listVersions(client: ThemesClient, id: string): Promise<ThemeVersion[]>;
93
+ export declare function useVersion(client: ThemesClient, id: string, versionId: string): Promise<ThemeView>;
94
+ export interface AddedVersion {
95
+ theme: ThemeView;
96
+ version: ThemeVersion;
97
+ }
98
+ export interface LinkInput {
99
+ url: string;
100
+ allowedOrigins?: string[];
101
+ }
102
+ export declare function linkVersionBody(input: LinkInput): Record<string, unknown>;
103
+ export declare function addLinkVersion(client: ThemesClient, id: string, input: LinkInput): Promise<AddedVersion>;
104
+ export declare function releaseVersionBody(version?: string): Record<string, unknown>;
105
+ export declare function addReleaseVersion(client: ThemesClient, id: string, version?: string): Promise<AddedVersion>;
106
+ export declare function publishTheme(client: ThemesClient, id: string): Promise<ThemeView>;
107
+ export declare function pushThemeSchema(client: ThemesClient, themeId: string, settingsSchema: unknown): Promise<ThemeView>;
108
+ export interface ErrorContext {
109
+ themeId?: string;
110
+ catalogId?: string;
111
+ releaseVersion?: string;
112
+ }
113
+ export declare function unusableHint(reason: string | null | undefined, ctx?: ErrorContext): string;
114
+ export declare function hostingNotInPlan(versionId: string): CliError;
115
+ export declare function themeError(error: unknown, ctx?: ErrorContext): unknown;
116
+ export interface ThemeOption {
117
+ id: string;
118
+ name: string;
119
+ is_published: boolean;
120
+ }
121
+ export declare function themeOptions(details: unknown): ThemeOption[];
122
+ export interface ThemePromptIO {
123
+ select: (config: {
124
+ message: string;
125
+ choices: {
126
+ name: string;
127
+ value: string;
128
+ }[];
129
+ }) => Promise<string>;
130
+ confirm: (config: {
131
+ message: string;
132
+ default: boolean;
133
+ }) => Promise<boolean>;
134
+ save?: (id: string) => void;
135
+ stderr: (text: string) => void;
136
+ }
137
+ export interface ThemeChoice {
138
+ id: string;
139
+ allowLive: boolean;
140
+ }
141
+ export declare function promptForTheme(options: ThemeOption[], io: ThemePromptIO, opts?: {
142
+ allowLive?: boolean;
143
+ }): Promise<ThemeChoice | undefined>;