@ecomweb/cli 0.6.1 → 0.7.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 (121) hide show
  1. package/README.md +181 -10
  2. package/dist/commands/deploy.js +16 -3
  3. package/dist/commands/deploy.js.map +1 -1
  4. package/dist/commands/deployments/promote.js +1 -1
  5. package/dist/commands/deployments/promote.js.map +1 -1
  6. package/dist/commands/deployments/rollback.js +1 -1
  7. package/dist/commands/deployments/rollback.js.map +1 -1
  8. package/dist/commands/deployments/unpublish.js +1 -1
  9. package/dist/commands/deployments/unpublish.js.map +1 -1
  10. package/dist/commands/describe.d.ts +1 -1
  11. package/dist/commands/describe.js +4 -4
  12. package/dist/commands/describe.js.map +1 -1
  13. package/dist/commands/metafield-definitions/create.d.ts +20 -0
  14. package/dist/commands/metafield-definitions/create.js +34 -0
  15. package/dist/commands/metafield-definitions/create.js.map +1 -0
  16. package/dist/commands/metafield-definitions/delete.d.ts +21 -0
  17. package/dist/commands/metafield-definitions/delete.js +32 -0
  18. package/dist/commands/metafield-definitions/delete.js.map +1 -0
  19. package/dist/commands/metafield-definitions/get.d.ts +21 -0
  20. package/dist/commands/metafield-definitions/get.js +30 -0
  21. package/dist/commands/metafield-definitions/get.js.map +1 -0
  22. package/dist/commands/metafield-definitions/list.d.ts +19 -0
  23. package/dist/commands/metafield-definitions/list.js +35 -0
  24. package/dist/commands/metafield-definitions/list.js.map +1 -0
  25. package/dist/commands/metafield-definitions/update.d.ts +23 -0
  26. package/dist/commands/metafield-definitions/update.js +39 -0
  27. package/dist/commands/metafield-definitions/update.js.map +1 -0
  28. package/dist/commands/metafields/get.d.ts +19 -0
  29. package/dist/commands/metafields/get.js +32 -0
  30. package/dist/commands/metafields/get.js.map +1 -0
  31. package/dist/commands/metafields/set.d.ts +24 -0
  32. package/dist/commands/metafields/set.js +83 -0
  33. package/dist/commands/metafields/set.js.map +1 -0
  34. package/dist/commands/metaobject-definitions/create.d.ts +20 -0
  35. package/dist/commands/metaobject-definitions/create.js +33 -0
  36. package/dist/commands/metaobject-definitions/create.js.map +1 -0
  37. package/dist/commands/metaobject-definitions/delete.d.ts +21 -0
  38. package/dist/commands/metaobject-definitions/delete.js +32 -0
  39. package/dist/commands/metaobject-definitions/delete.js.map +1 -0
  40. package/dist/commands/metaobject-definitions/get.d.ts +21 -0
  41. package/dist/commands/metaobject-definitions/get.js +31 -0
  42. package/dist/commands/metaobject-definitions/get.js.map +1 -0
  43. package/dist/commands/metaobject-definitions/list.d.ts +20 -0
  44. package/dist/commands/metaobject-definitions/list.js +41 -0
  45. package/dist/commands/metaobject-definitions/list.js.map +1 -0
  46. package/dist/commands/metaobject-definitions/update.d.ts +23 -0
  47. package/dist/commands/metaobject-definitions/update.js +38 -0
  48. package/dist/commands/metaobject-definitions/update.js.map +1 -0
  49. package/dist/commands/metaobjects/create.d.ts +24 -0
  50. package/dist/commands/metaobjects/create.js +40 -0
  51. package/dist/commands/metaobjects/create.js.map +1 -0
  52. package/dist/commands/metaobjects/delete.d.ts +22 -0
  53. package/dist/commands/metaobjects/delete.js +34 -0
  54. package/dist/commands/metaobjects/delete.js.map +1 -0
  55. package/dist/commands/metaobjects/get.d.ts +22 -0
  56. package/dist/commands/metaobjects/get.js +32 -0
  57. package/dist/commands/metaobjects/get.js.map +1 -0
  58. package/dist/commands/metaobjects/list.d.ts +24 -0
  59. package/dist/commands/metaobjects/list.js +56 -0
  60. package/dist/commands/metaobjects/list.js.map +1 -0
  61. package/dist/commands/metaobjects/update.d.ts +27 -0
  62. package/dist/commands/metaobjects/update.js +45 -0
  63. package/dist/commands/metaobjects/update.js.map +1 -0
  64. package/dist/commands/storefront/init.d.ts +3 -1
  65. package/dist/commands/storefront/init.js +23 -2
  66. package/dist/commands/storefront/init.js.map +1 -1
  67. package/dist/commands/theme/create.d.ts +20 -0
  68. package/dist/commands/theme/create.js +40 -0
  69. package/dist/commands/theme/create.js.map +1 -0
  70. package/dist/commands/theme/duplicate.d.ts +22 -0
  71. package/dist/commands/theme/duplicate.js +34 -0
  72. package/dist/commands/theme/duplicate.js.map +1 -0
  73. package/dist/commands/theme/link.d.ts +24 -0
  74. package/dist/commands/theme/link.js +60 -0
  75. package/dist/commands/theme/link.js.map +1 -0
  76. package/dist/commands/theme/list.d.ts +18 -0
  77. package/dist/commands/theme/list.js +32 -0
  78. package/dist/commands/theme/list.js.map +1 -0
  79. package/dist/commands/theme/publish.d.ts +22 -0
  80. package/dist/commands/theme/publish.js +68 -0
  81. package/dist/commands/theme/publish.js.map +1 -0
  82. package/dist/commands/theme/schema/push.d.ts +20 -0
  83. package/dist/commands/theme/schema/push.js +61 -0
  84. package/dist/commands/theme/schema/push.js.map +1 -0
  85. package/dist/commands/theme/update.d.ts +23 -0
  86. package/dist/commands/theme/update.js +62 -0
  87. package/dist/commands/theme/update.js.map +1 -0
  88. package/dist/commands/theme/use.d.ts +23 -0
  89. package/dist/commands/theme/use.js +71 -0
  90. package/dist/commands/theme/use.js.map +1 -0
  91. package/dist/commands/theme/versions.d.ts +21 -0
  92. package/dist/commands/theme/versions.js +33 -0
  93. package/dist/commands/theme/versions.js.map +1 -0
  94. package/dist/lib/custom-data.d.ts +42 -0
  95. package/dist/lib/custom-data.js +167 -0
  96. package/dist/lib/custom-data.js.map +1 -0
  97. package/dist/lib/deployments.d.ts +8 -1
  98. package/dist/lib/deployments.js +58 -11
  99. package/dist/lib/deployments.js.map +1 -1
  100. package/dist/lib/describe-metafields.d.ts +9 -0
  101. package/dist/lib/describe-metafields.js +213 -0
  102. package/dist/lib/describe-metafields.js.map +1 -0
  103. package/dist/lib/live-confirm.d.ts +11 -0
  104. package/dist/lib/live-confirm.js +34 -0
  105. package/dist/lib/live-confirm.js.map +1 -0
  106. package/dist/lib/project-setup.d.ts +1 -0
  107. package/dist/lib/project-setup.js +20 -0
  108. package/dist/lib/project-setup.js.map +1 -1
  109. package/dist/lib/template-scaffold.d.ts +1 -0
  110. package/dist/lib/template-scaffold.js +5 -2
  111. package/dist/lib/template-scaffold.js.map +1 -1
  112. package/dist/lib/theme-schema-export.d.ts +1 -1
  113. package/dist/lib/theme-schema-export.js +4 -5
  114. package/dist/lib/theme-schema-export.js.map +1 -1
  115. package/dist/lib/themes.d.ts +143 -0
  116. package/dist/lib/themes.js +277 -0
  117. package/dist/lib/themes.js.map +1 -0
  118. package/dist/lib/validators.js +16 -0
  119. package/dist/lib/validators.js.map +1 -1
  120. package/oclif.manifest.json +7965 -4834
  121. package/package.json +1 -1
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.METAFIELD_TYPES = void 0;
4
+ exports.describeMetafieldDefinitionCreate = describeMetafieldDefinitionCreate;
5
+ exports.describeMetafieldDefinitionUpdate = describeMetafieldDefinitionUpdate;
6
+ exports.describeMetaobjectDefinitionCreate = describeMetaobjectDefinitionCreate;
7
+ exports.describeMetaobjectDefinitionUpdate = describeMetaobjectDefinitionUpdate;
8
+ exports.describeMetaobjectEntryCreate = describeMetaobjectEntryCreate;
9
+ exports.describeMetaobjectEntryUpdate = describeMetaobjectEntryUpdate;
10
+ exports.describeMetafieldsSet = describeMetafieldsSet;
11
+ const custom_data_1 = require("./custom-data");
12
+ exports.METAFIELD_TYPES = [
13
+ "single_line_text",
14
+ "multi_line_text",
15
+ "rich_text",
16
+ "email",
17
+ "integer",
18
+ "decimal",
19
+ "date",
20
+ "date_time",
21
+ "url",
22
+ "link",
23
+ "weight",
24
+ "volume",
25
+ "dimension",
26
+ "boolean",
27
+ "color",
28
+ "rating",
29
+ "money",
30
+ "language",
31
+ "json",
32
+ "file",
33
+ "image",
34
+ "video",
35
+ "product",
36
+ "variant",
37
+ "collection",
38
+ "page",
39
+ "blog_post",
40
+ "customer",
41
+ "order",
42
+ "metaobject_reference",
43
+ "mixed_reference",
44
+ ];
45
+ const TYPE_DESCRIPTION = `One of: ${exports.METAFIELD_TYPES.join(", ")}. Prefix list. for a list of that type ` +
46
+ "(e.g. list.single_line_text). Immutable after create.";
47
+ const VALIDATIONS_DESCRIPTION = [
48
+ "Keys allowed per type; unknown keys are rejected.",
49
+ "single_line_text: min_length, max_length, regex (single_line_text only; full match (implicitly ^(?:...)$); max 200 chars; no backreferences or lookaround; no repetition after a group; at most 2 quantifiers and 4 alternatives; max_length defaults to 500 and may not exceed 500), choices (max 128 strings);",
50
+ "multi_line_text: min_length, max_length;",
51
+ "rich_text: max_length (text characters);",
52
+ "integer, decimal: min, max; decimal also max_precision (0 to 9);",
53
+ "date, date_time: min, max;",
54
+ "url, link: allowed_domains (max 20);",
55
+ "weight, volume, dimension: min, max, each {value, unit};",
56
+ "rating: scale_min, scale_max (both required);",
57
+ "file: file_types, a subset of image, video, document;",
58
+ "metaobject_reference: metaobject_definition_id (required);",
59
+ "mixed_reference: metaobject_definition_ids (2 to 10, required);",
60
+ "list.*: the item type's keys plus list_min, list_max (max 128).",
61
+ ].join(" ");
62
+ const VALUE_DESCRIPTION = [
63
+ "Value JSON per type:",
64
+ "single_line_text, multi_line_text, email, url, language: string;",
65
+ "integer: number; decimal: string such as \"10.50\";",
66
+ "date: \"YYYY-MM-DD\"; date_time: \"YYYY-MM-DDTHH:mm:ssZ\";",
67
+ "boolean: true or false; color: \"#rrggbb\";",
68
+ "link: {url, text}; weight, volume, dimension: {value, unit} with value a decimal string;",
69
+ "rating: {value, scale_min, scale_max}; money: {amount, currency_code} in the store currency;",
70
+ "rich_text: {type: \"root\", children: [...]} with paragraph, heading (level 1 to 6), list and list-item nodes, inline text (bold, italic) and link (http, https or mailto);",
71
+ "file, image, video: asset id; product, variant, collection, page, blog_post, customer, order, metaobject_reference, mixed_reference: the target id as a string;",
72
+ "list.*: an array of item values; json: any JSON.",
73
+ ].join(" ");
74
+ const KEY_CONSTRAINT = "2-64 chars: a-z, 0-9, _";
75
+ const METAFIELD_DEFINITION_FIELDS = [
76
+ { name: "owner_type", type: "enum", required: true, values: [...custom_data_1.METAFIELD_OWNER_TYPES], description: "The resource the values attach to. Immutable." },
77
+ { name: "namespace", type: "string", required: false, default: "custom", constraints: KEY_CONSTRAINT, description: "Immutable." },
78
+ { name: "key", type: "string", required: true, constraints: KEY_CONSTRAINT, description: "Read as namespace.key, e.g. custom.care_guide. Immutable." },
79
+ { name: "name", type: "string", required: true, constraints: "max 255 chars" },
80
+ { name: "description", type: "string", required: false },
81
+ { name: "type", type: "string", required: true, description: TYPE_DESCRIPTION },
82
+ { name: "validations", type: "object", required: false, default: {}, description: VALIDATIONS_DESCRIPTION },
83
+ { name: "storefront_access", type: "boolean", required: false, default: false, description: "Expose values on public storefront responses. Not available for customer, order and location owners." },
84
+ { name: "customer_access", type: "enum", required: false, values: ["none", "read", "read_write"], default: "none", description: "read: customer and order owners only. read_write: customer owners only." },
85
+ { name: "pinned", type: "boolean", required: false, description: "Show first on the owner's edit page (max 20 pinned per owner type)." },
86
+ ];
87
+ const METAFIELD_IMMUTABLE = ["owner_type", "namespace", "key", "type"];
88
+ function describeMetafieldDefinitionCreate() {
89
+ return {
90
+ resource: "metafield-definitions",
91
+ operation: "create",
92
+ fields: METAFIELD_DEFINITION_FIELDS,
93
+ example: {
94
+ owner_type: "product",
95
+ namespace: "custom",
96
+ key: "care_guide",
97
+ name: "Care guide",
98
+ type: "rich_text",
99
+ storefront_access: true,
100
+ },
101
+ hint: [
102
+ `Create: ecomweb metafield-definitions create --stdin <<< '{"owner_type":"product","key":"care_guide","name":"Care guide","type":"rich_text","storefront_access":true}'`,
103
+ "Then: ecomweb metafields set --owner product:<id> --key custom.care_guide --value '<json>'",
104
+ ].join("\n"),
105
+ };
106
+ }
107
+ function describeMetafieldDefinitionUpdate() {
108
+ return {
109
+ resource: "metafield-definitions",
110
+ operation: "update",
111
+ fields: METAFIELD_DEFINITION_FIELDS.filter((f) => !METAFIELD_IMMUTABLE.includes(f.name)).map((f) => ({ ...f, required: false })),
112
+ example: { validations: { max_length: 500 }, pinned: true },
113
+ hint: "ecomweb metafield-definitions update <id> --stdin <<< '{\"pinned\":true}' (owner_type, namespace, key and type cannot change)",
114
+ };
115
+ }
116
+ const METAOBJECT_DEFINITION_FIELDS = [
117
+ { name: "name", type: "string", required: true, constraints: "max 255 chars", description: "e.g. Feedbacks" },
118
+ { name: "type", type: "string", required: false, constraints: "2-64 chars: a-z, 0-9, _, -", description: "Derived from name when left out (Feedbacks -> feedbacks). Immutable." },
119
+ { name: "description", type: "string", required: false },
120
+ {
121
+ name: "fields",
122
+ type: "object[]",
123
+ required: true,
124
+ constraints: "1 to 40 fields",
125
+ description: "Ordered list of {key?, name, description?, type, required?, validations?}. key (" + KEY_CONSTRAINT + ") is derived from name when left out. " +
126
+ "type and validations as for metafield definitions (ecomweb describe metafield-definitions). key and type are immutable. " +
127
+ "On update the list replaces the stored one: a removed field's values are deleted from every entry.",
128
+ },
129
+ { name: "display_name_key", type: "string", required: false, description: "Key of a single_line_text field shown as the entry's name. Defaults to the first one." },
130
+ { name: "filter_keys", type: "string[]", required: false, default: [], constraints: "max 5", description: "Field keys usable as list filters (single_line_text, boolean, integer or date fields)." },
131
+ { name: "has_status", type: "boolean", required: false, default: true, description: "Entries have active or draft status. Turning it off makes every entry active." },
132
+ { name: "storefront_access", type: "boolean", required: false, default: false, description: "Serve active entries on the public storefront routes." },
133
+ { name: "customer_access", type: "enum", required: false, values: ["none", "read"], default: "none", description: "read: signed-in customers can read the entries." },
134
+ ];
135
+ function describeMetaobjectDefinitionCreate() {
136
+ return {
137
+ resource: "metaobject-definitions",
138
+ operation: "create",
139
+ fields: METAOBJECT_DEFINITION_FIELDS,
140
+ example: {
141
+ name: "Feedbacks",
142
+ storefront_access: true,
143
+ fields: [
144
+ { name: "Name", type: "single_line_text", required: true },
145
+ { name: "Content", type: "multi_line_text" },
146
+ { name: "Rating", type: "integer", validations: { min: 1, max: 5 } },
147
+ ],
148
+ filter_keys: ["rating"],
149
+ },
150
+ hint: "ecomweb metaobject-definitions create --file feedbacks.json; then ecomweb metaobjects create --type feedbacks --data '{\"name\":\"Lan Anh\"}'",
151
+ };
152
+ }
153
+ function describeMetaobjectDefinitionUpdate() {
154
+ return {
155
+ resource: "metaobject-definitions",
156
+ operation: "update",
157
+ fields: METAOBJECT_DEFINITION_FIELDS.filter((f) => f.name !== "type").map((f) => ({ ...f, required: false })),
158
+ example: { storefront_access: true, filter_keys: ["rating"] },
159
+ hint: "ecomweb metaobject-definitions update <id> --stdin <<< '{\"storefront_access\":true}' (send the full fields list to add or remove a field)",
160
+ };
161
+ }
162
+ const ENTRY_FIELDS = [
163
+ { name: "handle", type: "string", required: false, constraints: "1-255 chars: a-z, 0-9, -", description: "Derived from the display name when left out, de-duplicated with -2, -3." },
164
+ { name: "status", type: "enum", required: false, values: ["active", "draft"], default: "active", description: "Always active when the definition has no status." },
165
+ { name: "fields", type: "object", required: true, description: `{"<field key>": <value>}. Required fields must be present; unknown keys are rejected. ${VALUE_DESCRIPTION}` },
166
+ ];
167
+ function describeMetaobjectEntryCreate() {
168
+ return {
169
+ resource: "metaobjects",
170
+ operation: "create",
171
+ fields: ENTRY_FIELDS,
172
+ example: { fields: { name: "Lan Anh", content: "Great quality", rating: 5 } },
173
+ hint: "ecomweb metaobjects create --type feedbacks --data '{\"name\":\"Lan Anh\",\"rating\":5}' (field keys: ecomweb metaobject-definitions get <id>)",
174
+ };
175
+ }
176
+ function describeMetaobjectEntryUpdate() {
177
+ return {
178
+ resource: "metaobjects",
179
+ operation: "update",
180
+ fields: ENTRY_FIELDS.map((f) => f.name === "fields"
181
+ ? { ...f, required: false, description: `Merged per key into the stored fields; null clears a field. ${VALUE_DESCRIPTION}` }
182
+ : { ...f, required: false }),
183
+ example: { fields: { content: "Updated" }, status: "active" },
184
+ hint: "ecomweb metaobjects update <id> --type feedbacks --data '{\"content\":null}'",
185
+ };
186
+ }
187
+ function describeMetafieldsSet() {
188
+ return {
189
+ resource: "metafields",
190
+ operation: "set",
191
+ fields: [
192
+ {
193
+ name: "values",
194
+ type: "object[]",
195
+ required: true,
196
+ description: "[{namespace, key, value}], one per metafield of a definition for this owner type. All are validated first and written together, or none are. " +
197
+ `value null deletes. ${VALUE_DESCRIPTION}`,
198
+ },
199
+ ],
200
+ example: {
201
+ values: [
202
+ { namespace: "custom", key: "care_guide", value: { type: "root", children: [{ type: "paragraph", children: [{ type: "text", value: "Wash cold" }] }] } },
203
+ { namespace: "custom", key: "featured_feedback", value: "41" },
204
+ ],
205
+ },
206
+ hint: [
207
+ "One value: ecomweb metafields set --owner product:12 --key custom.care_guide --value '\"Wash cold\"'",
208
+ "Many: ecomweb metafields set --owner product:12 --file values.json",
209
+ "Owners: product:<id>, variant:<product id>/<variant id>, collection:<id>, customer:<id>, order:<id>, page:<id>, blog_post:<id>, location:<id>, shop",
210
+ ].join("\n"),
211
+ };
212
+ }
213
+ //# sourceMappingURL=describe-metafields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"describe-metafields.js","sourceRoot":"","sources":["../../src/lib/describe-metafields.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { CliError } from "./errors";
2
+ export declare function isInteractive(): boolean;
3
+ export declare const promptCancelled: (error: unknown) => boolean;
4
+ export interface LiveConfirm {
5
+ yes: boolean;
6
+ question: string;
7
+ required: string;
8
+ retry: string;
9
+ }
10
+ export declare function confirmationRequired(message: string, retry: string): CliError;
11
+ export declare function confirmLiveChange(opts: LiveConfirm): Promise<void>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.promptCancelled = void 0;
4
+ exports.isInteractive = isInteractive;
5
+ exports.confirmationRequired = confirmationRequired;
6
+ exports.confirmLiveChange = confirmLiveChange;
7
+ const prompts_1 = require("@inquirer/prompts");
8
+ const errors_1 = require("./errors");
9
+ function isInteractive() {
10
+ return Boolean(process.stdin.isTTY && process.stderr.isTTY) && !process.env.CI;
11
+ }
12
+ const promptCancelled = (error) => error instanceof Error && (error.name === "ExitPromptError" || error.name === "AbortPromptError");
13
+ exports.promptCancelled = promptCancelled;
14
+ function confirmationRequired(message, retry) {
15
+ return new errors_1.CliError("CONFIRMATION_REQUIRED", message, errors_1.ExitCode.VALIDATION, { hint: retry });
16
+ }
17
+ async function confirmLiveChange(opts) {
18
+ if (opts.yes)
19
+ return;
20
+ if (!isInteractive())
21
+ throw confirmationRequired(opts.required, opts.retry);
22
+ let ok = false;
23
+ try {
24
+ ok = await (0, prompts_1.confirm)({ message: opts.question, default: false }, { output: process.stderr });
25
+ }
26
+ catch (error) {
27
+ if (!(0, exports.promptCancelled)(error))
28
+ throw error;
29
+ }
30
+ if (!ok) {
31
+ throw new errors_1.CliError("CANCELLED", "Nothing changed: the shop is as it was.", errors_1.ExitCode.ERROR, { hint: opts.retry });
32
+ }
33
+ }
34
+ //# sourceMappingURL=live-confirm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-confirm.js","sourceRoot":"","sources":["../../src/lib/live-confirm.ts"],"names":[],"mappings":";;;AAIA,sCAEC;AAkBD,oDAEC;AAOD,8CAaC;AA9CD,+CAA4C;AAC5C,qCAA8C;AAG9C,SAAgB,aAAa;IAC3B,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACjF,CAAC;AAGM,MAAM,eAAe,GAAG,CAAC,KAAc,EAAE,EAAE,CAChD,KAAK,YAAY,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,iBAAiB,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC;AADvF,QAAA,eAAe,mBACwE;AAcpG,SAAgB,oBAAoB,CAAC,OAAe,EAAE,KAAa;IACjE,OAAO,IAAI,iBAAQ,CAAC,uBAAuB,EAAE,OAAO,EAAE,iBAAQ,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9F,CAAC;AAOM,KAAK,UAAU,iBAAiB,CAAC,IAAiB;IACvD,IAAI,IAAI,CAAC,GAAG;QAAE,OAAO;IACrB,IAAI,CAAC,aAAa,EAAE;QAAE,MAAM,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5E,IAAI,EAAE,GAAG,KAAK,CAAC;IACf,IAAI,CAAC;QAEH,EAAE,GAAG,MAAM,IAAA,iBAAO,EAAC,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,IAAA,uBAAe,EAAC,KAAK,CAAC;YAAE,MAAM,KAAK,CAAC;IAC3C,CAAC;IACD,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,iBAAQ,CAAC,WAAW,EAAE,yCAAyC,EAAE,iBAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IACnH,CAAC;AACH,CAAC"}
@@ -2,6 +2,7 @@ import { type StdioOptions } from "node:child_process";
2
2
  export declare const CHILD_STDIO: StdioOptions;
3
3
  export declare function projectStoreRef(dir: string): string | undefined;
4
4
  export declare function projectStoreThemeId(dir: string): string | undefined;
5
+ export declare function writeProjectStoreThemeId(dir: string, id: string, storeRef?: string): void;
5
6
  export type RunCommand = (cmd: string, args: string[], cwd: string) => {
6
7
  status: number | null;
7
8
  error?: Error;
@@ -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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"}
@@ -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>;