@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
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const output_1 = require("../../lib/output");
6
+ const custom_data_1 = require("../../lib/custom-data");
7
+ const HINT = "ecomweb describe metaobjects --operation update";
8
+ class MetaobjectsUpdate extends base_command_1.BaseCommand {
9
+ async run() {
10
+ const storeRef = this.requireStore();
11
+ const { args } = await this.parse(MetaobjectsUpdate);
12
+ const id = (0, custom_data_1.routeIdArg)(args.id, "id");
13
+ const type = this.getFlag("type");
14
+ const body = await (0, custom_data_1.readEntryBody)({
15
+ stdin: this.getFlag("stdin"),
16
+ file: this.getFlag("file"),
17
+ handle: this.getFlag("handle"),
18
+ status: this.getFlag("status"),
19
+ data: this.getFlag("data"),
20
+ }, HINT);
21
+ if (this.isDryRun) {
22
+ this.outputResult((0, output_1.mutationEnvelope)("metaobjects", "update (dry-run)", storeRef, { id: id, type, ...body }));
23
+ return;
24
+ }
25
+ const result = await (0, custom_data_1.callApi)(() => this.apiClient.storePatch(`${(0, custom_data_1.entriesPath)(type)}/${id}`, body));
26
+ this.outputResult((0, output_1.mutationEnvelope)("metaobjects", "update", storeRef, result, {
27
+ get: `ecomweb metaobjects get ${id} --type ${type}`,
28
+ }));
29
+ }
30
+ }
31
+ MetaobjectsUpdate.description = "Update a metaobject entry. Fields merge per key; a null value clears that field.";
32
+ MetaobjectsUpdate.examples = [
33
+ `ecomweb metaobjects update 41 --type feedbacks --data '{"content":"Updated"}'`,
34
+ "ecomweb metaobjects update 41 --type feedbacks --status active",
35
+ ];
36
+ MetaobjectsUpdate.args = {
37
+ id: core_1.Args.string({ description: "Entry ID", required: true }),
38
+ };
39
+ MetaobjectsUpdate.flags = {
40
+ ...base_command_1.BaseCommand.baseFlags,
41
+ type: core_1.Flags.string({ description: "Metaobject type, e.g. feedbacks", required: true }),
42
+ ...custom_data_1.entryFlags,
43
+ };
44
+ exports.default = MetaobjectsUpdate;
45
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/metaobjects/update.ts"],"names":[],"mappings":";;AAAA,sCAA0C;AAC1C,qDAAiD;AACjD,6CAAoD;AACpD,uDAAoG;AAEpG,MAAM,IAAI,GAAG,iDAAiD,CAAC;AAE/D,MAAqB,iBAAkB,SAAQ,0BAAW;IAkBxD,KAAK,CAAC,GAAG;QACP,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACrC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrD,MAAM,EAAE,GAAG,IAAA,wBAAU,EAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAS,MAAM,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,MAAM,IAAA,2BAAa,EAC9B;YACE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YAC5B,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YAC1B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC9B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC9B,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;SAC3B,EACD,IAAI,CACL,CAAC;QAEF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,CAAC,IAAA,yBAAgB,EAAC,aAAa,EAAE,kBAAkB,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5G,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAO,EAAC,GAAG,EAAE,CAChC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,IAAA,yBAAW,EAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAC9D,CAAC;QAEF,IAAI,CAAC,YAAY,CACf,IAAA,yBAAgB,EAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE;YAC1D,GAAG,EAAE,2BAA2B,EAAE,WAAW,IAAI,EAAE;SACpD,CAAC,CACH,CAAC;IACJ,CAAC;;AA/CM,6BAAW,GAAG,kFAAkF,CAAC;AAEjG,0BAAQ,GAAG;IAChB,+EAA+E;IAC/E,gEAAgE;CACjE,CAAC;AAEK,sBAAI,GAAG;IACZ,EAAE,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAC7D,CAAC;AAEK,uBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,IAAI,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,iCAAiC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACtF,GAAG,wBAAU;CACd,CAAC;kBAhBiB,iBAAiB"}
@@ -20,6 +20,7 @@ export default class StorefrontInit extends BaseCommand {
20
20
  };
21
21
  static flags: {
22
22
  github: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
23
+ theme: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
23
24
  "repo-name": import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
24
25
  public: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
25
26
  install: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
@@ -36,8 +37,9 @@ export default class StorefrontInit extends BaseCommand {
36
37
  exclude: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
37
38
  };
38
39
  run(): Promise<void>;
40
+ protected checkTheme(id: string | undefined): Promise<string | undefined>;
39
41
  protected installStep(dir: string): "installed" | "failed" | "skipped";
40
42
  protected finish(dir: string, install: "installed" | "failed" | "skipped"): Promise<void>;
41
- protected runGitHub(storeRef: string, dir: string, status: RepoStatus): Promise<void>;
43
+ protected runGitHub(storeRef: string, dir: string, status: RepoStatus, storeThemeId?: string): Promise<void>;
42
44
  }
43
45
  export {};
@@ -13,6 +13,7 @@ const publishable_key_1 = require("../../lib/publishable-key");
13
13
  const project_setup_1 = require("../../lib/project-setup");
14
14
  const template_download_1 = require("../../lib/template-download");
15
15
  const github_flow_1 = require("../../lib/github-flow");
16
+ const themes_1 = require("../../lib/themes");
16
17
  const template_scaffold_1 = require("../../lib/template-scaffold");
17
18
  class StorefrontInit extends base_command_1.BaseCommand {
18
19
  async run() {
@@ -20,12 +21,13 @@ class StorefrontInit extends base_command_1.BaseCommand {
20
21
  const storeRef = this.requireStore();
21
22
  const dir = node_path_1.default.resolve(args.dir ?? `${storeRef}-storefront`);
22
23
  (0, template_scaffold_1.assertEmptyDir)(dir);
24
+ const storeThemeId = await this.checkTheme(this.getFlag("theme")?.trim() || undefined);
23
25
  const status = await this.apiClient.storeGet("/storefront/repo");
24
26
  if (!status.enabled) {
25
27
  throw new errors_1.CliError("NOT_ENABLED", "Storefront code delivery is not enabled on this ecomweb server yet", errors_1.ExitCode.ERROR);
26
28
  }
27
29
  if (this.getFlag("github")) {
28
- await this.runGitHub(storeRef, dir, status);
30
+ await this.runGitHub(storeRef, dir, status, storeThemeId);
29
31
  return;
30
32
  }
31
33
  const template = await (0, template_download_1.downloadTemplate)(this.apiClient);
@@ -38,6 +40,7 @@ class StorefrontInit extends base_command_1.BaseCommand {
38
40
  publishableKey: key.key,
39
41
  siteUrl: status.site_url,
40
42
  templateVersion: template.version,
43
+ storeThemeId,
41
44
  });
42
45
  (0, template_scaffold_1.gitInitialCommit)(dir, `Initial storefront from ecomweb template ${template.version}`);
43
46
  const install = this.installStep(dir);
@@ -45,11 +48,23 @@ class StorefrontInit extends base_command_1.BaseCommand {
45
48
  dir,
46
49
  files,
47
50
  template_version: template.version,
51
+ ...(storeThemeId && { store_theme_id: storeThemeId }),
48
52
  install,
49
53
  next_steps: [`cd ${node_path_1.default.relative(process.cwd(), dir) || "."}`, "pnpm install", "pnpm dev"],
50
54
  });
51
55
  await this.finish(dir, install);
52
56
  }
57
+ async checkTheme(id) {
58
+ if (id === undefined)
59
+ return undefined;
60
+ if (!/^\d{1,18}$/.test(id)) {
61
+ throw new errors_1.CliError("INVALID_INPUT", `--theme takes a theme id, not "${id}".`, errors_1.ExitCode.VALIDATION, {
62
+ hint: "List the store's themes with: ecomweb theme list",
63
+ });
64
+ }
65
+ await (0, themes_1.getTheme)(this.apiClient, id);
66
+ return id;
67
+ }
53
68
  installStep(dir) {
54
69
  if (!this.getFlag("install"))
55
70
  return "skipped";
@@ -74,7 +89,7 @@ class StorefrontInit extends base_command_1.BaseCommand {
74
89
  if (start)
75
90
  (0, node_child_process_1.spawnSync)("pnpm", ["dev"], { cwd: dir, stdio: ["inherit", 2, 2] });
76
91
  }
77
- async runGitHub(storeRef, dir, status) {
92
+ async runGitHub(storeRef, dir, status, storeThemeId) {
78
93
  if (!status.github.connected) {
79
94
  const { url } = await this.apiClient.storePost("/integrations/github/install-url");
80
95
  this.logToStderr(`Install the ecomweb GitHub App to continue:\n ${url}`);
@@ -84,6 +99,7 @@ class StorefrontInit extends base_command_1.BaseCommand {
84
99
  await this.apiClient.storePost("/storefront/repo", {
85
100
  name: this.getFlag("repo-name") ?? `${storeRef}-storefront`,
86
101
  private: !this.getFlag("public"),
102
+ ...(storeThemeId && { store_theme_id: storeThemeId }),
87
103
  });
88
104
  const done = await (0, github_flow_1.waitFor)(() => this.apiClient.storeGet("/storefront/repo"), (s) => s.repo?.status === "ready" || s.repo?.status === "failed", { intervalMs: 3000, timeoutMs: 5 * 60 * 1000 });
89
105
  if (done.repo?.status !== "ready" || !done.repo.html_url) {
@@ -97,6 +113,7 @@ class StorefrontInit extends base_command_1.BaseCommand {
97
113
  this.outputJson({
98
114
  dir,
99
115
  repository: done.repo.html_url,
116
+ ...(storeThemeId && { store_theme_id: storeThemeId }),
100
117
  install,
101
118
  ...(warning && { warning }),
102
119
  next_steps: [`cd ${node_path_1.default.relative(process.cwd(), dir) || "."}`, "pnpm install", "pnpm dev"],
@@ -108,6 +125,7 @@ StorefrontInit.description = "Get the current store's storefront as code you own
108
125
  StorefrontInit.examples = [
109
126
  "ecomweb storefront init",
110
127
  "ecomweb storefront init ./my-shop",
128
+ "ecomweb storefront init --theme 12",
111
129
  ];
112
130
  StorefrontInit.args = {
113
131
  dir: core_1.Args.string({
@@ -121,6 +139,9 @@ StorefrontInit.flags = {
121
139
  description: "Create the repository in your GitHub account through the ecomweb GitHub App",
122
140
  default: false,
123
141
  }),
142
+ theme: core_1.Flags.string({
143
+ description: "The theme this project is for (any theme: a deploy adds a build to its versions): saved as storeThemeId in .ecomweb.json, so deploys go to it",
144
+ }),
124
145
  "repo-name": core_1.Flags.string({ description: "Repository name for --github" }),
125
146
  public: core_1.Flags.boolean({ description: "Make the --github repository public", default: false }),
126
147
  install: core_1.Flags.boolean({
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/storefront/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/storefront/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { BaseCommand } from "../../base-command";
2
+ export default class StoresCreate extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ name: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
7
+ description: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
8
+ "store-ref": import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ "api-key": import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ "api-url": import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ output: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
+ "dry-run": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
15
+ full: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
16
+ fields: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
17
+ exclude: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
18
+ };
19
+ run(): Promise<void>;
20
+ private waitUntilReachable;
21
+ }
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const errors_1 = require("../../lib/errors");
6
+ const MEMBERSHIP_WAIT_MS = 5_000;
7
+ class StoresCreate extends base_command_1.BaseCommand {
8
+ async run() {
9
+ const name = this.getFlag("name");
10
+ const description = this.getFlag("description");
11
+ let store;
12
+ try {
13
+ store = await this.apiClient.post("/stores", { name, ...(description && { description }) });
14
+ }
15
+ catch (error) {
16
+ if ((0, errors_1.apiErrorCode)(error) === "ACCESS_DENIED") {
17
+ throw new errors_1.CliError("ACCESS_DENIED", "API keys cannot create stores. Sign in to create a store.", errors_1.ExitCode.AUTH_FAILURE, {
18
+ hint: "Run: ecomweb auth login",
19
+ });
20
+ }
21
+ throw error;
22
+ }
23
+ try {
24
+ await this.waitUntilReachable(store.ref);
25
+ }
26
+ catch (error) {
27
+ if (error instanceof errors_1.CliError && error.payload.code === "STORE_NOT_READY")
28
+ throw error;
29
+ const { json } = (0, errors_1.formatError)(error);
30
+ throw new errors_1.CliError("STORE_CREATED_UNCONFIRMED", `The store was created (ref ${store.ref}), but checking it failed: ${json.error.message}`, errors_1.ExitCode.ERROR, {
31
+ hint: `Do not create it again. Run: ecomweb stores switch ${store.ref}`,
32
+ details: { ref: store.ref, name: store.name, created: true, cause: json.error.code },
33
+ });
34
+ }
35
+ this.configManager.setStoreRef(store.ref, store.name);
36
+ this.outputJson({ status: "created", store: { ref: store.ref, name: store.name }, profile: this.profileName });
37
+ }
38
+ async waitUntilReachable(ref) {
39
+ const deadline = this.now() + MEMBERSHIP_WAIT_MS;
40
+ for (;;) {
41
+ try {
42
+ await this.apiClient.getStore(ref);
43
+ return;
44
+ }
45
+ catch (error) {
46
+ const status = error.response?.status;
47
+ if (status !== 403 && status !== 404)
48
+ throw error;
49
+ if (this.now() >= deadline) {
50
+ throw new errors_1.CliError("STORE_NOT_READY", "The store was created but is not reachable yet", errors_1.ExitCode.ERROR, {
51
+ hint: `Try again in a moment: ecomweb stores switch ${ref}`,
52
+ details: { ref },
53
+ });
54
+ }
55
+ await this.sleep(500);
56
+ }
57
+ }
58
+ }
59
+ }
60
+ StoresCreate.description = "Create a store (you become its owner) and make it the current store";
61
+ StoresCreate.examples = ['ecomweb stores create --name "My Store"', 'ecomweb stores create --name "My Store" --description "Shoes"'];
62
+ StoresCreate.flags = {
63
+ ...base_command_1.BaseCommand.baseFlags,
64
+ name: core_1.Flags.string({ description: "Store name (2 to 100 characters)", required: true }),
65
+ description: core_1.Flags.string({ description: "Store description" }),
66
+ };
67
+ exports.default = StoresCreate;
68
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/stores/create.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,7 @@ class StoresCurrent extends base_command_1.BaseCommand {
33
33
  store_ref: storeRef,
34
34
  store_name: storeName || null,
35
35
  store_name_source: storeName ? source : null,
36
- profile: this.configManager.getActiveProfileName(),
36
+ profile: this.profileName,
37
37
  });
38
38
  }
39
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"current.js","sourceRoot":"","sources":["../../../src/commands/stores/current.ts"],"names":[],"mappings":";;AAAA,qDAAiD;AAEjD,MAAqB,aAAc,SAAQ,0BAAW;IASpD,KAAK,CAAC,GAAG;QACP,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QAE/E,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,UAAU,CAAC;gBACd,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,oBAAoB;gBAC7B,IAAI,EAAE,kCAAkC;aACzC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAID,MAAM,cAAc,GAAG,QAAQ,KAAK,OAAO,CAAC,SAAS,CAAC;QACtD,IAAI,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,IAAI,MAAM,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,UAAU,CAAC;YAClD,IAAI,QAAQ,EAAE,CAAC;gBACb,SAAS,GAAG,QAAQ,CAAC;gBACrB,MAAM,GAAG,KAAK,CAAC;gBACf,IAAI,cAAc,IAAI,QAAQ,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC;oBACtD,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;QAED,IAAI,CAAC,UAAU,CAAC;YACd,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,SAAS,IAAI,IAAI;YAC7B,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;YAC5C,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE;SACnD,CAAC,CAAC;IACL,CAAC;;AA9CM,yBAAW,GAAG,4EAA4E,CAAC;AAE3F,sBAAQ,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAEtC,mBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;CACzB,CAAC;kBAPiB,aAAa"}
1
+ {"version":3,"file":"current.js","sourceRoot":"","sources":["../../../src/commands/stores/current.ts"],"names":[],"mappings":";;AAAA,qDAAiD;AAEjD,MAAqB,aAAc,SAAQ,0BAAW;IASpD,KAAK,CAAC,GAAG;QACP,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QAE/E,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,UAAU,CAAC;gBACd,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,oBAAoB;gBAC7B,IAAI,EAAE,kCAAkC;aACzC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAID,MAAM,cAAc,GAAG,QAAQ,KAAK,OAAO,CAAC,SAAS,CAAC;QACtD,IAAI,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,IAAI,MAAM,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,UAAU,CAAC;YAClD,IAAI,QAAQ,EAAE,CAAC;gBACb,SAAS,GAAG,QAAQ,CAAC;gBACrB,MAAM,GAAG,KAAK,CAAC;gBACf,IAAI,cAAc,IAAI,QAAQ,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC;oBACtD,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;QAED,IAAI,CAAC,UAAU,CAAC;YACd,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,SAAS,IAAI,IAAI;YAC7B,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;YAC5C,OAAO,EAAE,IAAI,CAAC,WAAW;SAC1B,CAAC,CAAC;IACL,CAAC;;AA9CM,yBAAW,GAAG,4EAA4E,CAAC;AAE3F,sBAAQ,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAEtC,mBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;CACzB,CAAC;kBAPiB,aAAa"}
@@ -10,13 +10,13 @@ class StoresList extends base_command_1.BaseCommand {
10
10
  data: stores,
11
11
  available_actions: ["switch", "info"],
12
12
  hints: {
13
- switch: "ecomweb stores switch <id>",
14
- info: "ecomweb stores info <id>",
13
+ switch: "ecomweb stores switch <ref>",
14
+ info: "ecomweb stores info <ref>",
15
15
  },
16
16
  });
17
17
  }
18
18
  }
19
- StoresList.description = "List all stores accessible with current API key";
19
+ StoresList.description = "List the stores you can open";
20
20
  StoresList.examples = ["ecomweb stores list"];
21
21
  StoresList.flags = {
22
22
  ...base_command_1.BaseCommand.baseFlags,
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/stores/list.ts"],"names":[],"mappings":";;AAAA,qDAAiD;AAEjD,MAAqB,UAAW,SAAQ,0BAAW;IASjD,KAAK,CAAC,GAAG;QACP,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAEjD,IAAI,CAAC,YAAY,CAAC;YAChB,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;YACrC,KAAK,EAAE;gBACL,MAAM,EAAE,4BAA4B;gBACpC,IAAI,EAAE,0BAA0B;aACjC;SACF,CAAC,CAAC;IACL,CAAC;;AArBM,sBAAW,GAAG,iDAAiD,CAAC;AAEhE,mBAAQ,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAEnC,gBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;CACzB,CAAC;kBAPiB,UAAU"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/stores/list.ts"],"names":[],"mappings":";;AAAA,qDAAiD;AAEjD,MAAqB,UAAW,SAAQ,0BAAW;IASjD,KAAK,CAAC,GAAG;QACP,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAEjD,IAAI,CAAC,YAAY,CAAC;YAChB,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM;YACZ,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;YACrC,KAAK,EAAE;gBACL,MAAM,EAAE,6BAA6B;gBACrC,IAAI,EAAE,2BAA2B;aAClC;SACF,CAAC,CAAC;IACL,CAAC;;AArBM,sBAAW,GAAG,8BAA8B,CAAC;AAE7C,mBAAQ,GAAG,CAAC,qBAAqB,CAAC,CAAC;AAEnC,gBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;CACzB,CAAC;kBAPiB,UAAU"}
@@ -2,27 +2,35 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const core_1 = require("@oclif/core");
4
4
  const base_command_1 = require("../../base-command");
5
+ const errors_1 = require("../../lib/errors");
5
6
  class StoresSwitch extends base_command_1.BaseCommand {
6
7
  async run() {
7
8
  const { args } = await this.parse(StoresSwitch);
8
9
  const storeRef = args.ref;
9
- let storeName;
10
+ let store;
10
11
  try {
11
- const store = await this.apiClient.getStore(storeRef);
12
- storeName = store.name || store.store_name;
12
+ store = await this.apiClient.getStore(storeRef);
13
13
  }
14
- catch {
14
+ catch (error) {
15
+ const status = error.response?.status;
16
+ if (status === 403 || status === 404) {
17
+ throw new errors_1.CliError("STORE_NOT_FOUND", `You have no access to store "${storeRef}"`, errors_1.ExitCode.NOT_FOUND, {
18
+ hint: "List your stores: ecomweb stores list",
19
+ });
20
+ }
21
+ throw error;
15
22
  }
23
+ const storeName = store?.name || store?.store_name;
16
24
  this.configManager.setStoreRef(storeRef, storeName);
17
25
  this.outputJson({
18
26
  store_ref: storeRef,
19
27
  store_name: storeName || null,
20
28
  message: `Switched to store ${storeRef}`,
21
- profile: this.configManager.getActiveProfileName(),
29
+ profile: this.profileName,
22
30
  });
23
31
  }
24
32
  }
25
- StoresSwitch.description = "Switch the active store (persists to profile)";
33
+ StoresSwitch.description = "Switch the current store (checks you can open it; persists to the profile)";
26
34
  StoresSwitch.examples = [
27
35
  "ecomweb stores switch abc123def456",
28
36
  "ecomweb stores switch abc123def456 --profile production",
@@ -1 +1 @@
1
- {"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../src/commands/stores/switch.ts"],"names":[],"mappings":";;AAAA,sCAAmC;AACnC,qDAAiD;AAEjD,MAAqB,YAAa,SAAQ,0BAAW;IAgBnD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;QAE1B,IAAI,SAA6B,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACtD,SAAS,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;QAET,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAEpD,IAAI,CAAC,UAAU,CAAC;YACd,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,SAAS,IAAI,IAAI;YAC7B,OAAO,EAAE,qBAAqB,QAAQ,EAAE;YACxC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE;SACnD,CAAC,CAAC;IACL,CAAC;;AAnCM,wBAAW,GAAG,+CAA+C,CAAC;AAE9D,qBAAQ,GAAG;IAChB,oCAAoC;IACpC,yDAAyD;CAC1D,CAAC;AAEK,iBAAI,GAAG;IACZ,GAAG,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAC5E,CAAC;AAEK,kBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;CACzB,CAAC;kBAdiB,YAAY"}
1
+ {"version":3,"file":"switch.js","sourceRoot":"","sources":["../../../src/commands/stores/switch.ts"],"names":[],"mappings":";;AAAA,sCAAmC;AACnC,qDAAiD;AACjD,6CAAsD;AAEtD,MAAqB,YAAa,SAAQ,0BAAW;IAgBnD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;QAE1B,IAAI,KAAoD,CAAC;QACzD,IAAI,CAAC;YACH,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAI,KAA4C,CAAC,QAAQ,EAAE,MAAM,CAAC;YAC9E,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;gBACrC,MAAM,IAAI,iBAAQ,CAAC,iBAAiB,EAAE,gCAAgC,QAAQ,GAAG,EAAE,iBAAQ,CAAC,SAAS,EAAE;oBACrG,IAAI,EAAE,uCAAuC;iBAC9C,CAAC,CAAC;YACL,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,UAAU,CAAC;QACnD,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAEpD,IAAI,CAAC,UAAU,CAAC;YACd,SAAS,EAAE,QAAQ;YACnB,UAAU,EAAE,SAAS,IAAI,IAAI;YAC7B,OAAO,EAAE,qBAAqB,QAAQ,EAAE;YACxC,OAAO,EAAE,IAAI,CAAC,WAAW;SAC1B,CAAC,CAAC;IACL,CAAC;;AAxCM,wBAAW,GAAG,4EAA4E,CAAC;AAE3F,qBAAQ,GAAG;IAChB,oCAAoC;IACpC,yDAAyD;CAC1D,CAAC;AAEK,iBAAI,GAAG;IACZ,GAAG,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAC5E,CAAC;AAEK,kBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;CACzB,CAAC;kBAdiB,YAAY"}
@@ -0,0 +1,20 @@
1
+ import { BaseCommand } from "../../base-command";
2
+ export default class ThemeCreate extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ from: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
7
+ name: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
8
+ "store-ref": import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ "api-key": import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ "api-url": import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ output: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
+ "dry-run": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
14
+ profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
15
+ full: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
16
+ fields: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
17
+ exclude: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
18
+ };
19
+ run(): Promise<void>;
20
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const output_1 = require("../../lib/output");
6
+ const themes_1 = require("../../lib/themes");
7
+ const DEFAULT_NOTE = "Note: theme create adds the Default catalog theme (pick another with --from). For your own code, get it with ecomweb storefront init --theme <id>, then ecomweb deploy";
8
+ class ThemeCreate extends base_command_1.BaseCommand {
9
+ async run() {
10
+ const storeRef = this.requireStore();
11
+ const name = this.getFlag("name")?.trim() || undefined;
12
+ const from = this.getFlag("from")?.trim() || undefined;
13
+ if (name && !from && !this.getFlag("quiet")) {
14
+ process.stderr.write(`${DEFAULT_NOTE}\n`);
15
+ }
16
+ const input = { name, from };
17
+ if (this.isDryRun) {
18
+ this.outputResult((0, output_1.mutationEnvelope)("theme", "create (dry-run)", storeRef, (0, themes_1.createThemeBody)(input)));
19
+ return;
20
+ }
21
+ const row = (0, themes_1.themeRow)(await (0, themes_1.createTheme)(this.apiClient, input));
22
+ this.outputResult((0, output_1.mutationEnvelope)("theme", "create", storeRef, row, {
23
+ next: `ecomweb storefront init --theme ${row.id}`,
24
+ link: `ecomweb theme link ${row.id} --url <https url>`,
25
+ publish: `ecomweb theme publish ${row.id}`,
26
+ }));
27
+ }
28
+ }
29
+ ThemeCreate.description = "Add a theme from the theme store (--from, default: the Default theme), using its newest release. Put your own code on it with `ecomweb deploy --theme <id>`, or your own site with `ecomweb theme link`";
30
+ ThemeCreate.examples = [
31
+ "ecomweb theme create",
32
+ 'ecomweb theme create --from default --name "My code"',
33
+ ];
34
+ ThemeCreate.flags = {
35
+ ...base_command_1.BaseCommand.baseFlags,
36
+ from: core_1.Flags.string({ description: `The theme store's theme to add (default: ${themes_1.DEFAULT_CATALOG_THEME})` }),
37
+ name: core_1.Flags.string({ description: "The theme's name (default: the catalog theme's)" }),
38
+ };
39
+ exports.default = ThemeCreate;
40
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/theme/create.ts"],"names":[],"mappings":";;AAAA,sCAAoC;AACpC,qDAAiD;AACjD,6CAAoD;AACpD,6CAAiG;AAEjG,MAAM,YAAY,GAChB,wKAAwK,CAAC;AAE3K,MAAqB,WAAY,SAAQ,0BAAW;IAelD,KAAK,CAAC,GAAG;QACP,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAqB,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;QAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAqB,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;QAC3E,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAU,OAAO,CAAC,EAAE,CAAC;YACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAE7B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,CAAC,IAAA,yBAAgB,EAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAA,wBAAe,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnG,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,IAAA,iBAAQ,EAAC,MAAM,IAAA,oBAAW,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,YAAY,CACf,IAAA,yBAAgB,EAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE;YACjD,IAAI,EAAE,mCAAmC,GAAG,CAAC,EAAE,EAAE;YACjD,IAAI,EAAE,sBAAsB,GAAG,CAAC,EAAE,oBAAoB;YACtD,OAAO,EAAE,yBAAyB,GAAG,CAAC,EAAE,EAAE;SAC3C,CAAC,CACH,CAAC;IACJ,CAAC;;AApCM,uBAAW,GAChB,yMAAyM,CAAC;AAErM,oBAAQ,GAAG;IAChB,sBAAsB;IACtB,sDAAsD;CACvD,CAAC;AAEK,iBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,IAAI,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,4CAA4C,8BAAqB,GAAG,EAAE,CAAC;IACzG,IAAI,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,iDAAiD,EAAE,CAAC;CACvF,CAAC;kBAbiB,WAAW"}
@@ -1,9 +1,11 @@
1
1
  import { BaseCommand } from "../../base-command";
2
- export default class AuthRegister extends BaseCommand {
2
+ export default class ThemeDuplicate extends BaseCommand {
3
3
  static description: string;
4
4
  static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
5
8
  static flags: {
6
- email: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
7
9
  name: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
8
10
  "store-ref": import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
11
  "api-key": import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const output_1 = require("../../lib/output");
6
+ const themes_1 = require("../../lib/themes");
7
+ class ThemeDuplicate extends base_command_1.BaseCommand {
8
+ async run() {
9
+ const storeRef = this.requireStore();
10
+ const { args } = await this.parse(ThemeDuplicate);
11
+ const name = this.getFlag("name")?.trim() || undefined;
12
+ if (this.isDryRun) {
13
+ this.outputResult((0, output_1.mutationEnvelope)("theme", "duplicate (dry-run)", storeRef, { theme: args.id, ...(name && { name }) }));
14
+ return;
15
+ }
16
+ const row = (0, themes_1.themeRow)(await (0, themes_1.duplicateTheme)(this.apiClient, args.id, name));
17
+ this.outputResult((0, output_1.mutationEnvelope)("theme", "duplicate", storeRef, row, {
18
+ next: `ecomweb storefront init --theme ${row.id}`,
19
+ deploy: `ecomweb deploy --theme ${row.id}`,
20
+ publish: `ecomweb theme publish ${row.id}`,
21
+ }));
22
+ }
23
+ }
24
+ ThemeDuplicate.description = "Copy a theme: its settings, starting with the same version in use. Copy the live theme to change it (e.g. put your code on it) without touching your shop";
25
+ ThemeDuplicate.examples = ["ecomweb theme duplicate 1", 'ecomweb theme duplicate 1 --name "My code"'];
26
+ ThemeDuplicate.args = {
27
+ id: core_1.Args.string({ description: "The theme to copy (see ecomweb theme list)", required: true }),
28
+ };
29
+ ThemeDuplicate.flags = {
30
+ ...base_command_1.BaseCommand.baseFlags,
31
+ name: core_1.Flags.string({ description: 'The copy\'s name (default: "<name> (bản sao)")' }),
32
+ };
33
+ exports.default = ThemeDuplicate;
34
+ //# sourceMappingURL=duplicate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duplicate.js","sourceRoot":"","sources":["../../../src/commands/theme/duplicate.ts"],"names":[],"mappings":";;AAAA,sCAA0C;AAC1C,qDAAiD;AACjD,6CAAoD;AACpD,6CAA4D;AAE5D,MAAqB,cAAe,SAAQ,0BAAW;IAerD,KAAK,CAAC,GAAG;QACP,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACrC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAqB,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;QAC3E,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,CAAC,IAAA,yBAAgB,EAAC,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACzH,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,IAAA,iBAAQ,EAAC,MAAM,IAAA,uBAAc,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,YAAY,CACf,IAAA,yBAAgB,EAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE;YACpD,IAAI,EAAE,mCAAmC,GAAG,CAAC,EAAE,EAAE;YACjD,MAAM,EAAE,0BAA0B,GAAG,CAAC,EAAE,EAAE;YAC1C,OAAO,EAAE,yBAAyB,GAAG,CAAC,EAAE,EAAE;SAC3C,CAAC,CACH,CAAC;IACJ,CAAC;;AA9BM,0BAAW,GAChB,2JAA2J,CAAC;AAEvJ,uBAAQ,GAAG,CAAC,2BAA2B,EAAE,4CAA4C,CAAC,CAAC;AAEvF,mBAAI,GAAG;IACZ,EAAE,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,4CAA4C,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CAC/F,CAAC;AAEK,oBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,SAAS;IACxB,IAAI,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gDAAgD,EAAE,CAAC;CACtF,CAAC;kBAbiB,cAAc"}
@@ -0,0 +1,24 @@
1
+ import { BaseCommand } from "../../base-command";
2
+ export default class ThemeLink extends BaseCommand {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ id: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static flags: {
9
+ url: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ "allowed-origin": import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ yes: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ "store-ref": import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ "api-key": import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
14
+ "api-url": import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
15
+ output: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
16
+ quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
17
+ "dry-run": import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
18
+ profile: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
19
+ full: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
20
+ fields: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
21
+ exclude: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
22
+ };
23
+ run(): Promise<void>;
24
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const core_1 = require("@oclif/core");
4
+ const base_command_1 = require("../../base-command");
5
+ const live_confirm_1 = require("../../lib/live-confirm");
6
+ const output_1 = require("../../lib/output");
7
+ const themes_1 = require("../../lib/themes");
8
+ class ThemeLink extends base_command_1.BaseCommand {
9
+ async run() {
10
+ const storeRef = this.requireStore();
11
+ const { args } = await this.parse(ThemeLink);
12
+ const id = args.id;
13
+ const url = this.getFlag("url").trim();
14
+ const allowedOrigins = this.getFlag("allowed-origin") ?? [];
15
+ const input = { url, allowedOrigins };
16
+ if (this.isDryRun) {
17
+ this.outputResult((0, output_1.mutationEnvelope)("theme", "link (dry-run)", storeRef, { theme: id, ...(0, themes_1.linkVersionBody)(input) }));
18
+ return;
19
+ }
20
+ const yes = this.getFlag("yes");
21
+ const origins = allowedOrigins.map((o) => ` --allowed-origin "${o}"`).join("");
22
+ const retry = `ecomweb theme link ${id} --url ${url}${origins} --yes`;
23
+ const theme = await (0, themes_1.getThemeForChange)(this.apiClient, id, { yes, retry });
24
+ const before = theme?.current_version?.id !== undefined ? String(theme.current_version.id) : undefined;
25
+ if (theme?.is_published) {
26
+ await (0, live_confirm_1.confirmLiveChange)({
27
+ yes,
28
+ question: `${theme.name} (${id}) is live: shoppers will see ${(0, themes_1.describeVersion)({ kind: "link", label: url, url })}, right away. Check that it opens your shop first. Link it?`,
29
+ required: `${theme.name} (${id}) is live: linking it sends shoppers to ${url} right away. Confirm it with --yes.`,
30
+ retry,
31
+ });
32
+ }
33
+ const added = await (0, themes_1.addLinkVersion)(this.apiClient, id, input);
34
+ const row = (0, themes_1.themeRow)(added.theme);
35
+ this.outputResult((0, output_1.mutationEnvelope)("theme", "link", storeRef, { ...row, version_id: String(added.version.id), url: added.version.link?.url ?? added.version.url ?? url }, {
36
+ next: `ecomweb theme schema push --theme ${id}`,
37
+ ...(before !== undefined && { undo: `ecomweb theme use ${id} ${before}` }),
38
+ ...(!row.live && { publish: `ecomweb theme publish ${id}` }),
39
+ }));
40
+ }
41
+ }
42
+ ThemeLink.description = "Connect a theme to your own site (headless): adds a link version and uses it, so the store's address sends shoppers there. ecomweb keeps managing its settings (push the schema with ecomweb theme schema push). On the live theme it asks first on a terminal; --yes skips that and is required in CI or without a terminal";
43
+ ThemeLink.examples = [
44
+ "ecomweb theme link 12 --url https://shop.example.com",
45
+ 'ecomweb theme link 12 --url https://shop.example.com --allowed-origin "https://shop-*-team.vercel.app"',
46
+ ];
47
+ ThemeLink.args = {
48
+ id: core_1.Args.string({ description: "The theme (see ecomweb theme list)", required: true }),
49
+ };
50
+ ThemeLink.flags = {
51
+ ...base_command_1.BaseCommand.baseFlags,
52
+ url: core_1.Flags.string({ description: "The https address of the site running the theme's code", required: true }),
53
+ "allowed-origin": core_1.Flags.string({
54
+ description: "Another origin the site runs on (e.g. previews: https://shop-*-team.vercel.app). Repeat for several",
55
+ multiple: true,
56
+ }),
57
+ yes: core_1.Flags.boolean({ char: "y", description: "On the live theme: link it without asking", default: false }),
58
+ };
59
+ exports.default = ThemeLink;
60
+ //# sourceMappingURL=link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../../src/commands/theme/link.ts"],"names":[],"mappings":"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"}