@ollie-shop/cli 0.3.0 → 0.3.3

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 (139) hide show
  1. package/.turbo/turbo-build.log +14 -2
  2. package/CHANGELOG.md +48 -0
  3. package/__tests__/mocks/core.ts +1 -1
  4. package/dist/index.d.ts +0 -2
  5. package/dist/index.js +40631 -75
  6. package/package.json +7 -6
  7. package/src/actions/component.actions.ts +148 -204
  8. package/src/actions/function.actions.ts +78 -171
  9. package/src/actions/project.actions.ts +16 -11
  10. package/src/commands/__tests__/component.test.ts +4 -7
  11. package/src/commands/__tests__/function.test.ts +1 -1
  12. package/src/commands/__tests__/store-version.test.ts +1 -4
  13. package/src/commands/component.ts +0 -10
  14. package/src/commands/function.ts +5 -56
  15. package/src/schemas/command.schema.ts +296 -6
  16. package/src/utils/__tests__/rich-progress.test.ts +22 -11
  17. package/src/utils/cli-progress-reporter.ts +2 -2
  18. package/src/utils/command-parser.ts +0 -5
  19. package/src/utils/console.ts +33 -4
  20. package/src/utils/constants.ts +32 -0
  21. package/src/utils/deploy-helpers.ts +357 -0
  22. package/src/utils/errors.ts +133 -2
  23. package/src/utils/interactive-builder.ts +61 -7
  24. package/src/utils/rich-progress.ts +25 -14
  25. package/src/utils/validation-helpers.ts +145 -12
  26. package/tsup.config.ts +15 -0
  27. package/dist/__tests__/helpers/cli-test-helper.d.ts +0 -89
  28. package/dist/__tests__/helpers/cli-test-helper.d.ts.map +0 -1
  29. package/dist/__tests__/helpers/cli-test-helper.js +0 -220
  30. package/dist/__tests__/mocks/index.d.ts +0 -69
  31. package/dist/__tests__/mocks/index.d.ts.map +0 -1
  32. package/dist/__tests__/mocks/index.js +0 -77
  33. package/dist/actions/component.actions.d.ts +0 -14
  34. package/dist/actions/component.actions.d.ts.map +0 -1
  35. package/dist/actions/component.actions.js +0 -273
  36. package/dist/actions/function.actions.d.ts +0 -15
  37. package/dist/actions/function.actions.d.ts.map +0 -1
  38. package/dist/actions/function.actions.js +0 -254
  39. package/dist/actions/project.actions.d.ts +0 -17
  40. package/dist/actions/project.actions.d.ts.map +0 -1
  41. package/dist/actions/project.actions.js +0 -97
  42. package/dist/actions/version.actions.d.ts +0 -19
  43. package/dist/actions/version.actions.d.ts.map +0 -1
  44. package/dist/actions/version.actions.js +0 -216
  45. package/dist/commands/component.d.ts +0 -3
  46. package/dist/commands/component.d.ts.map +0 -1
  47. package/dist/commands/component.js +0 -192
  48. package/dist/commands/docs.d.ts +0 -3
  49. package/dist/commands/docs.d.ts.map +0 -1
  50. package/dist/commands/docs.js +0 -16
  51. package/dist/commands/function.d.ts +0 -3
  52. package/dist/commands/function.d.ts.map +0 -1
  53. package/dist/commands/function.js +0 -243
  54. package/dist/commands/help.d.ts +0 -3
  55. package/dist/commands/help.d.ts.map +0 -1
  56. package/dist/commands/help.js +0 -20
  57. package/dist/commands/index.d.ts +0 -3
  58. package/dist/commands/index.d.ts.map +0 -1
  59. package/dist/commands/index.js +0 -26
  60. package/dist/commands/login.d.ts +0 -3
  61. package/dist/commands/login.d.ts.map +0 -1
  62. package/dist/commands/login.js +0 -175
  63. package/dist/commands/project.d.ts +0 -3
  64. package/dist/commands/project.d.ts.map +0 -1
  65. package/dist/commands/project.js +0 -78
  66. package/dist/commands/store-version.d.ts +0 -3
  67. package/dist/commands/store-version.d.ts.map +0 -1
  68. package/dist/commands/store-version.js +0 -241
  69. package/dist/commands/version.d.ts +0 -3
  70. package/dist/commands/version.d.ts.map +0 -1
  71. package/dist/commands/version.js +0 -46
  72. package/dist/commands/whoami.d.ts +0 -3
  73. package/dist/commands/whoami.d.ts.map +0 -1
  74. package/dist/commands/whoami.js +0 -41
  75. package/dist/index.d.ts.map +0 -1
  76. package/dist/prompts/component.prompts.d.ts +0 -14
  77. package/dist/prompts/component.prompts.d.ts.map +0 -1
  78. package/dist/prompts/component.prompts.js +0 -75
  79. package/dist/prompts/function.prompts.d.ts +0 -21
  80. package/dist/prompts/function.prompts.d.ts.map +0 -1
  81. package/dist/prompts/function.prompts.js +0 -127
  82. package/dist/schemas/command.schema.d.ts +0 -516
  83. package/dist/schemas/command.schema.d.ts.map +0 -1
  84. package/dist/schemas/command.schema.js +0 -267
  85. package/dist/types/index.d.ts +0 -147
  86. package/dist/types/index.d.ts.map +0 -1
  87. package/dist/types/index.js +0 -18
  88. package/dist/utils/auth.d.ts +0 -4
  89. package/dist/utils/auth.d.ts.map +0 -1
  90. package/dist/utils/auth.js +0 -26
  91. package/dist/utils/cli-progress-reporter.d.ts +0 -12
  92. package/dist/utils/cli-progress-reporter.d.ts.map +0 -1
  93. package/dist/utils/cli-progress-reporter.js +0 -77
  94. package/dist/utils/command-builder.d.ts +0 -22
  95. package/dist/utils/command-builder.d.ts.map +0 -1
  96. package/dist/utils/command-builder.js +0 -268
  97. package/dist/utils/command-helpers.d.ts +0 -19
  98. package/dist/utils/command-helpers.d.ts.map +0 -1
  99. package/dist/utils/command-helpers.js +0 -79
  100. package/dist/utils/command-parser.d.ts +0 -146
  101. package/dist/utils/command-parser.d.ts.map +0 -1
  102. package/dist/utils/command-parser.js +0 -179
  103. package/dist/utils/command-suggestions.d.ts +0 -35
  104. package/dist/utils/command-suggestions.d.ts.map +0 -1
  105. package/dist/utils/command-suggestions.js +0 -152
  106. package/dist/utils/console.d.ts +0 -44
  107. package/dist/utils/console.d.ts.map +0 -1
  108. package/dist/utils/console.js +0 -233
  109. package/dist/utils/constants.d.ts +0 -8
  110. package/dist/utils/constants.d.ts.map +0 -1
  111. package/dist/utils/constants.js +0 -10
  112. package/dist/utils/context-detector.d.ts +0 -12
  113. package/dist/utils/context-detector.d.ts.map +0 -1
  114. package/dist/utils/context-detector.js +0 -155
  115. package/dist/utils/enhanced-error-handler.d.ts +0 -47
  116. package/dist/utils/enhanced-error-handler.d.ts.map +0 -1
  117. package/dist/utils/enhanced-error-handler.js +0 -221
  118. package/dist/utils/error-handler.d.ts +0 -3
  119. package/dist/utils/error-handler.d.ts.map +0 -1
  120. package/dist/utils/error-handler.js +0 -55
  121. package/dist/utils/errors.d.ts +0 -44
  122. package/dist/utils/errors.d.ts.map +0 -1
  123. package/dist/utils/errors.js +0 -76
  124. package/dist/utils/interactive-builder.d.ts +0 -22
  125. package/dist/utils/interactive-builder.d.ts.map +0 -1
  126. package/dist/utils/interactive-builder.js +0 -246
  127. package/dist/utils/rich-progress.d.ts +0 -59
  128. package/dist/utils/rich-progress.d.ts.map +0 -1
  129. package/dist/utils/rich-progress.js +0 -234
  130. package/dist/utils/store.d.ts +0 -11
  131. package/dist/utils/store.d.ts.map +0 -1
  132. package/dist/utils/store.js +0 -19
  133. package/dist/utils/validation-error-formatter.d.ts +0 -25
  134. package/dist/utils/validation-error-formatter.d.ts.map +0 -1
  135. package/dist/utils/validation-error-formatter.js +0 -258
  136. package/dist/utils/validation-helpers.d.ts +0 -60
  137. package/dist/utils/validation-helpers.d.ts.map +0 -1
  138. package/dist/utils/validation-helpers.js +0 -152
  139. package/src/commands/__tests__/version.test.ts +0 -71
@@ -1,175 +0,0 @@
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.configureLoginCommand = configureLoginCommand;
7
- const node_crypto_1 = require("node:crypto");
8
- const promises_1 = __importDefault(require("node:fs/promises"));
9
- const node_http_1 = require("node:http");
10
- const node_os_1 = require("node:os");
11
- const node_path_1 = __importDefault(require("node:path"));
12
- const types_1 = require("../types");
13
- const console_1 = require("../utils/console");
14
- const DEFAULT_CALLBACK_PORT = 7777;
15
- const AUTH_ENDPOINT = "https://admin.ollie.shop/auth/login";
16
- function configureLoginCommand(program) {
17
- return program
18
- .command("login")
19
- .description("Log in to your Ollie Shop account")
20
- .option("-p, --port <port>", "Port to use for the local callback server", DEFAULT_CALLBACK_PORT.toString())
21
- .option("--auth-url <url>", "Custom authorization URL", AUTH_ENDPOINT)
22
- .action(async (options) => {
23
- console_1.console.info("🔐 Initiating Ollie Shop login flow...");
24
- try {
25
- const token = await startWebAuthFlow(options);
26
- if (token) {
27
- await saveCredentials(token);
28
- console_1.console.success("✅ Successfully logged in!");
29
- return;
30
- }
31
- console_1.console.error("❌ Authentication failed. Please try again.");
32
- process.exit(1);
33
- }
34
- catch (error) {
35
- console_1.console.error(`❌ Login failed: ${error instanceof Error ? error.message : "Unknown error"}`);
36
- process.exit(1);
37
- }
38
- });
39
- }
40
- async function handleAuthCallback(req, res, state, resolve, reject) {
41
- const socket = req.socket;
42
- const url = new URL(req.url || "/", `http://localhost:${socket.localPort || 3000}`);
43
- const params = url.searchParams;
44
- const returnedState = params.get("state");
45
- if (returnedState !== state) {
46
- sendErrorResponse(res, 400, "Invalid state parameter", "Authentication failed. Please try again.");
47
- reject(new Error("Invalid state parameter"));
48
- return;
49
- }
50
- let formData = "";
51
- req.on("data", (chunk) => {
52
- formData += chunk.toString();
53
- });
54
- await new Promise((formResolve) => {
55
- req.on("end", () => {
56
- formResolve();
57
- });
58
- });
59
- const formParams = new URLSearchParams(formData);
60
- const accessToken = formParams.get("access_token");
61
- const refreshToken = formParams.get("refresh_token") || "";
62
- const expiresAt = formParams.get("expires_at") ||
63
- new Date(Date.now() + 3600000).toISOString();
64
- if (!accessToken) {
65
- sendErrorResponse(res, 400, "Missing authentication token", "Authentication failed. Please try again.");
66
- reject(new Error("Missing authentication token"));
67
- return;
68
- }
69
- try {
70
- const token = {
71
- accessToken,
72
- refreshToken,
73
- expiresAt,
74
- };
75
- sendSuccessResponse(res);
76
- resolve(token);
77
- }
78
- catch (error) {
79
- const errorMessage = error instanceof Error ? error.message : "Unknown error";
80
- sendErrorResponse(res, 500, "Authentication failed", `Error: ${errorMessage}`);
81
- reject(new Error(errorMessage));
82
- }
83
- }
84
- function sendErrorResponse(res, statusCode, title, message) {
85
- res.writeHead(statusCode, { "Content-Type": "text/html" });
86
- res.end(`<h1>${title}</h1><p>${message}</p>`);
87
- }
88
- function sendSuccessResponse(res) {
89
- res.writeHead(200, { "Content-Type": "text/html" });
90
- res.end("<h1>Authentication successful!</h1><p>You can now close this window and return to the CLI.</p>");
91
- }
92
- function sendWaitingResponse(res) {
93
- res.writeHead(200, { "Content-Type": "text/html" });
94
- res.end("<h1>Ollie Shop CLI Authentication</h1><p>Waiting for authentication response...</p>");
95
- }
96
- async function startWebAuthFlow(options) {
97
- const state = (0, node_crypto_1.randomBytes)(16).toString("hex");
98
- const port = Number.parseInt(options.port, 10);
99
- const baseUrl = options.authUrl;
100
- return new Promise((resolve, reject) => {
101
- const server = (0, node_http_1.createServer)(async (req, res) => {
102
- try {
103
- const url = new URL(req.url || "/", `http://localhost:${port}`);
104
- if (url.pathname === "/callback") {
105
- await handleAuthCallback(req, res, state, (token) => {
106
- server.close(() => {
107
- console_1.console.debug("🔐 Local authentication server closed");
108
- resolve(token);
109
- });
110
- }, (error) => {
111
- server.close(() => {
112
- console_1.console.debug("🔐 Local authentication server closed");
113
- reject(error);
114
- });
115
- });
116
- }
117
- else {
118
- sendWaitingResponse(res);
119
- }
120
- }
121
- catch (error) {
122
- const errorMessage = error instanceof Error ? error.message : "Unknown error";
123
- sendErrorResponse(res, 500, "Server Error", errorMessage);
124
- server.close(() => {
125
- console_1.console.debug("🔐 Local authentication server closed");
126
- reject(new Error(errorMessage));
127
- });
128
- }
129
- });
130
- server.listen(port, async () => {
131
- const redirectUrl = `http://localhost:${port}/callback`;
132
- const authUrl = new URL(baseUrl);
133
- authUrl.searchParams.set("flow", "cli");
134
- authUrl.searchParams.set("state", state);
135
- authUrl.searchParams.set("redirect_to", redirectUrl);
136
- console_1.console.info("\n🔒 Please authenticate in your browser...\n");
137
- console_1.console.info(`Opening: ${authUrl}\n`);
138
- const open = (await import("open")).default;
139
- open(authUrl.toString());
140
- });
141
- server.on("error", (err) => {
142
- if ((0, types_1.isNodeError)(err) && err.code === "EADDRINUSE") {
143
- reject(new Error(`Port ${port} is already in use. Please specify a different port using the --port option.`));
144
- }
145
- else {
146
- reject(err);
147
- }
148
- server.close();
149
- });
150
- const timeoutId = setTimeout(() => {
151
- server.close(() => {
152
- console_1.console.debug("🔐 Local authentication server closed due to timeout");
153
- reject(new Error("Authentication timed out. Please try again."));
154
- });
155
- }, 5 * 60 * 1000);
156
- server.on("close", () => {
157
- clearTimeout(timeoutId);
158
- });
159
- });
160
- }
161
- async function saveCredentials(token) {
162
- console_1.console.debug("Saving credentials...");
163
- const configDir = node_path_1.default.join((0, node_os_1.homedir)(), ".ollie-shop");
164
- const credentialsPath = node_path_1.default.join(configDir, "credentials.json");
165
- try {
166
- await promises_1.default.mkdir(configDir, { recursive: true });
167
- }
168
- catch (error) {
169
- if (!(error instanceof Error && "code" in error && error.code === "EEXIST")) {
170
- throw error;
171
- }
172
- }
173
- await promises_1.default.writeFile(credentialsPath, JSON.stringify(token, null, 2));
174
- return true;
175
- }
@@ -1,3 +0,0 @@
1
- import type { Command } from "@commander-js/extra-typings";
2
- export declare function registerProjectCommands(program: Command): void;
3
- //# sourceMappingURL=project.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAS3D,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiG9D"}
@@ -1,78 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerProjectCommands = registerProjectCommands;
4
- const project_actions_1 = require("../actions/project.actions");
5
- const console_1 = require("../utils/console");
6
- function registerProjectCommands(program) {
7
- const projectCommand = program
8
- .command("project")
9
- .description("Project management commands");
10
- projectCommand
11
- .command("init")
12
- .description("Initialize a new project")
13
- .option("-n, --name <name>", "Project name")
14
- .option("-t, --template <template>", "Project template")
15
- .action(async (options) => {
16
- try {
17
- await (0, project_actions_1.initProject)({
18
- name: options.name,
19
- template: options.template || "default",
20
- git: true,
21
- install: true,
22
- }, console_1.console);
23
- }
24
- catch (error) {
25
- console_1.console.error(error instanceof Error ? error.message : "An error occurred");
26
- process.exit(1);
27
- }
28
- });
29
- projectCommand
30
- .command("build")
31
- .description("Build project")
32
- .option("-p, --path <path>", "Project path")
33
- .option("--watch", "Watch for changes")
34
- .action(async (options) => {
35
- try {
36
- await (0, project_actions_1.buildProject)({
37
- path: options.path,
38
- watch: options.watch ?? false,
39
- }, console_1.console);
40
- }
41
- catch (error) {
42
- console_1.console.error(error instanceof Error ? error.message : "An error occurred");
43
- process.exit(1);
44
- }
45
- });
46
- projectCommand
47
- .command("dev")
48
- .description("Start development server")
49
- .option("-p, --port <port>", "Port number", Number.parseInt)
50
- .option("--open", "Open browser")
51
- .action(async (options) => {
52
- try {
53
- await (0, project_actions_1.startDevServer)({
54
- port: options.port ?? 3000,
55
- open: options.open ?? false,
56
- }, console_1.console);
57
- }
58
- catch (error) {
59
- console_1.console.error(error instanceof Error ? error.message : "An error occurred");
60
- process.exit(1);
61
- }
62
- });
63
- projectCommand
64
- .command("validate")
65
- .description("Validate project")
66
- .option("-p, --path <path>", "Project path")
67
- .action(async (options) => {
68
- try {
69
- await (0, project_actions_1.validateProject)({
70
- path: options.path,
71
- }, console_1.console);
72
- }
73
- catch (error) {
74
- console_1.console.error(error instanceof Error ? error.message : "An error occurred");
75
- process.exit(1);
76
- }
77
- });
78
- }
@@ -1,3 +0,0 @@
1
- import type { Command } from "@commander-js/extra-typings";
2
- export declare function registerStoreVersionCommands(program: Command): void;
3
- //# sourceMappingURL=store-version.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"store-version.d.ts","sourceRoot":"","sources":["../../src/commands/store-version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAkB3D,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+NnE"}
@@ -1,241 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.registerStoreVersionCommands = registerStoreVersionCommands;
37
- const zod_1 = require("zod");
38
- const versionActions = __importStar(require("../actions/version.actions"));
39
- const command_builder_1 = require("../utils/command-builder");
40
- const command_parser_1 = require("../utils/command-parser");
41
- const console_1 = require("../utils/console");
42
- const StoreVersionCreateOptionsSchema = zod_1.z.object({
43
- store: zod_1.z.string().uuid("Invalid store ID format"),
44
- name: zod_1.z.string().min(1, "Version name is required"),
45
- template: zod_1.z.string().optional(),
46
- active: zod_1.z.boolean().optional(),
47
- });
48
- const StoreVersionListOptionsSchema = zod_1.z.object({
49
- store: zod_1.z.string().uuid("Invalid store ID format"),
50
- });
51
- function registerStoreVersionCommands(program) {
52
- const cmd = (0, command_builder_1.buildCommandGroup)(program, "store-version", "Manage store versions", ["sv"]);
53
- // Create version command
54
- (0, command_builder_1.buildCommand)(cmd, {
55
- name: "create",
56
- description: "Create a new version for a store",
57
- options: [
58
- command_parser_1.COMMON_OPTIONS.storeId,
59
- command_parser_1.COMMON_OPTIONS.versionName,
60
- command_parser_1.COMMON_OPTIONS.template,
61
- command_parser_1.COMMON_OPTIONS.active,
62
- command_parser_1.COMMON_OPTIONS.noActive,
63
- ],
64
- schema: StoreVersionCreateOptionsSchema,
65
- examples: [
66
- {
67
- description: "Create an active version",
68
- command: "ollieshop store-version create --store 123e4567-e89b-12d3-a456-426614174000 --name v2.0.0",
69
- },
70
- {
71
- description: "Create version with grocery template",
72
- command: "ollieshop store-version create --store 123e4567-e89b-12d3-a456-426614174000 --name grocery-v1 --template grocery",
73
- },
74
- {
75
- description: "Create inactive version for testing",
76
- command: "ollieshop store-version create --store 123e4567-e89b-12d3-a456-426614174000 --name test-version --no-active",
77
- },
78
- ],
79
- handler: async (options) => {
80
- await versionActions.create(options);
81
- },
82
- });
83
- // List versions command
84
- (0, command_builder_1.buildCommand)(cmd, {
85
- name: "list",
86
- description: "List all versions for a store",
87
- options: [command_parser_1.COMMON_OPTIONS.storeId],
88
- schema: StoreVersionListOptionsSchema,
89
- examples: [
90
- {
91
- description: "List all versions for a store",
92
- command: "ollieshop store-version list --store 123e4567-e89b-12d3-a456-426614174000",
93
- },
94
- ],
95
- handler: async (options) => {
96
- await versionActions.list(options);
97
- },
98
- });
99
- // Get version command with argument parser
100
- const _getCmd = cmd
101
- .command("get <versionId>")
102
- .description("Get version details")
103
- .addHelpText("after", "\nExamples:")
104
- .addHelpText("after", " Get version details:")
105
- .addHelpText("after", " $ ollieshop store-version get 987fcdeb-51a2-43b7-9abc-123456789012")
106
- .action(async (versionId) => {
107
- try {
108
- const validated = (0, command_parser_1.parseUUID)(versionId);
109
- await versionActions.get(validated);
110
- }
111
- catch (error) {
112
- if (error instanceof Error) {
113
- console_1.console.error(`❌ ${error.message}`);
114
- if (error.message.includes("UUID")) {
115
- console_1.console.info("💡 Version IDs must be in UUID format");
116
- console_1.console.log(" Example: 123e4567-e89b-12d3-a456-426614174000");
117
- }
118
- }
119
- else {
120
- console_1.console.error(`Error: ${String(error)}`);
121
- }
122
- process.exit(1);
123
- }
124
- });
125
- // Set default version command
126
- const _setDefaultCmd = cmd
127
- .command("set-default <versionId>")
128
- .description("Set a version as the default for the store")
129
- .addHelpText("after", "\nExamples:")
130
- .addHelpText("after", " Set version as default:")
131
- .addHelpText("after", " $ ollieshop store-version set-default 987fcdeb-51a2-43b7-9abc-123456789012")
132
- .action(async (versionId) => {
133
- try {
134
- const validated = (0, command_parser_1.parseUUID)(versionId);
135
- await versionActions.setDefault(validated);
136
- }
137
- catch (error) {
138
- if (error instanceof Error) {
139
- console_1.console.error(`❌ ${error.message}`);
140
- }
141
- else {
142
- console_1.console.error(`Error: ${String(error)}`);
143
- }
144
- process.exit(1);
145
- }
146
- });
147
- // Activate version command
148
- const _activateCmd = cmd
149
- .command("activate <versionId>")
150
- .description("Activate a version")
151
- .addHelpText("after", "\nExamples:")
152
- .addHelpText("after", " Activate a version:")
153
- .addHelpText("after", " $ ollieshop store-version activate 987fcdeb-51a2-43b7-9abc-123456789012")
154
- .action(async (versionId) => {
155
- try {
156
- const validated = (0, command_parser_1.parseUUID)(versionId);
157
- await versionActions.activate(validated);
158
- }
159
- catch (error) {
160
- if (error instanceof Error) {
161
- console_1.console.error(`❌ ${error.message}`);
162
- }
163
- else {
164
- console_1.console.error(`Error: ${String(error)}`);
165
- }
166
- process.exit(1);
167
- }
168
- });
169
- // Deactivate version command
170
- const _deactivateCmd = cmd
171
- .command("deactivate <versionId>")
172
- .description("Deactivate a version")
173
- .addHelpText("after", "\nExamples:")
174
- .addHelpText("after", " Deactivate a version:")
175
- .addHelpText("after", " $ ollieshop store-version deactivate 987fcdeb-51a2-43b7-9abc-123456789012")
176
- .action(async (versionId) => {
177
- try {
178
- const validated = (0, command_parser_1.parseUUID)(versionId);
179
- await versionActions.deactivate(validated);
180
- }
181
- catch (error) {
182
- if (error instanceof Error) {
183
- console_1.console.error(`❌ ${error.message}`);
184
- }
185
- else {
186
- console_1.console.error(`Error: ${String(error)}`);
187
- }
188
- process.exit(1);
189
- }
190
- });
191
- // Clone version command
192
- const _cloneCmd = cmd
193
- .command("clone <versionId>")
194
- .description("Clone an existing version")
195
- .requiredOption("-n, --name <name>", "Name for the cloned version", command_parser_1.COMMON_OPTIONS.versionName.parser)
196
- .addHelpText("after", "\nExamples:")
197
- .addHelpText("after", " Clone a version:")
198
- .addHelpText("after", " $ ollieshop store-version clone 987fcdeb-51a2-43b7-9abc-123456789012 --name v2.1.0")
199
- .addHelpText("after", "\n Clone for A/B testing:")
200
- .addHelpText("after", " $ ollieshop store-version clone 987fcdeb-51a2-43b7-9abc-123456789012 --name experiment-checkout")
201
- .action(async (versionId, options) => {
202
- try {
203
- const validatedId = (0, command_parser_1.parseUUID)(versionId);
204
- await versionActions.clone(validatedId, options.name);
205
- }
206
- catch (error) {
207
- if (error instanceof Error) {
208
- console_1.console.error(`❌ ${error.message}`);
209
- }
210
- else {
211
- console_1.console.error(`Error: ${String(error)}`);
212
- }
213
- process.exit(1);
214
- }
215
- });
216
- // Delete version command
217
- const _deleteCmd = cmd
218
- .command("delete <versionId>")
219
- .description("Delete a version")
220
- .option("-f, --force", "Skip confirmation")
221
- .addHelpText("after", "\nExamples:")
222
- .addHelpText("after", " Delete with confirmation:")
223
- .addHelpText("after", " $ ollieshop store-version delete 987fcdeb-51a2-43b7-9abc-123456789012")
224
- .addHelpText("after", "\n Delete without confirmation:")
225
- .addHelpText("after", " $ ollieshop store-version delete 987fcdeb-51a2-43b7-9abc-123456789012 --force")
226
- .action(async (versionId, options) => {
227
- try {
228
- const validated = (0, command_parser_1.parseUUID)(versionId);
229
- await versionActions.deleteVersion(validated, options.force);
230
- }
231
- catch (error) {
232
- if (error instanceof Error) {
233
- console_1.console.error(`❌ ${error.message}`);
234
- }
235
- else {
236
- console_1.console.error(`Error: ${String(error)}`);
237
- }
238
- process.exit(1);
239
- }
240
- });
241
- }
@@ -1,3 +0,0 @@
1
- import type { Command } from "@commander-js/extra-typings";
2
- export declare function configureVersionCommand(program: Command): void;
3
- //# sourceMappingURL=version.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/commands/version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAK3D,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6C9D"}
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.configureVersionCommand = configureVersionCommand;
4
- const console_1 = require("../utils/console");
5
- const pkg = require("../../package.json");
6
- function configureVersionCommand(program) {
7
- // Simple version command
8
- program
9
- .command("version")
10
- .alias("v")
11
- .description("Display CLI version and environment information")
12
- .option("-d, --detailed", "Show detailed version information", false)
13
- .option("-j, --json", "Output version information as JSON", false)
14
- .action(async (options) => {
15
- if (options.json) {
16
- const versionInfo = {
17
- cli: pkg.version,
18
- node: process.version,
19
- platform: process.platform,
20
- arch: process.arch,
21
- };
22
- console.log(JSON.stringify(versionInfo, null, 2));
23
- return;
24
- }
25
- console_1.console.info(`Ollie Shop CLI version: ${pkg.version}`);
26
- if (options.detailed) {
27
- console_1.console.log("");
28
- console_1.console.log("Environment:");
29
- console_1.console.log(` Node.js: ${process.version}`);
30
- console_1.console.log(` Platform: ${process.platform}`);
31
- console_1.console.log(` Architecture: ${process.arch}`);
32
- // Check for core package version
33
- try {
34
- const corePkg = require("@ollie-shop/core/package.json");
35
- console_1.console.log(` Core: v${corePkg.version}`);
36
- }
37
- catch {
38
- // Core package might not be available
39
- }
40
- console_1.console.log("");
41
- console_1.console.log("For help, run: ollieshop --help");
42
- console_1.console.log("Documentation: https://docs.ollie.shop");
43
- console_1.console.log("Report issues: https://github.com/ollie-shop/cli/issues");
44
- }
45
- });
46
- }
@@ -1,3 +0,0 @@
1
- import type { Command } from "@commander-js/extra-typings";
2
- export declare function configureWhoamiCommand(program: Command): void;
3
- //# sourceMappingURL=whoami.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAwB3D,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,QAqBtD"}
@@ -1,41 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.configureWhoamiCommand = configureWhoamiCommand;
4
- const auth_1 = require("../utils/auth");
5
- const console_1 = require("../utils/console");
6
- const store_1 = require("../utils/store");
7
- async function getUserInfo() {
8
- try {
9
- const user = await (0, auth_1.getCurrentUser)();
10
- const store = await (0, store_1.getOllieConfig)();
11
- if (!user || !user.email) {
12
- console_1.console.error("No user authenticated");
13
- return {};
14
- }
15
- return {
16
- email: user.email,
17
- store: store ?? undefined,
18
- };
19
- }
20
- catch {
21
- return {};
22
- }
23
- }
24
- function configureWhoamiCommand(program) {
25
- program
26
- .command("whoami")
27
- .description("Show logged-in user and current store")
28
- .action(async () => {
29
- const { email, store } = await getUserInfo();
30
- if (!email) {
31
- console_1.console.error("You are not authenticated");
32
- return;
33
- }
34
- console_1.console.newLine();
35
- console_1.console.info(`You are logged in as: ${email}`);
36
- if (store) {
37
- console_1.console.info(`Current store: ${store.platformStoreId ?? "unknown"}`);
38
- }
39
- console_1.console.newLine();
40
- });
41
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
@@ -1,14 +0,0 @@
1
- import { type ComponentSlotType } from "@ollie-shop/core";
2
- export interface ComponentCreationAnswers {
3
- name: string;
4
- slot: ComponentSlotType;
5
- includeTests: boolean;
6
- description?: string;
7
- }
8
- export interface ComponentDeploymentAnswers {
9
- versionId: string;
10
- confirm: boolean;
11
- }
12
- export declare function promptComponentCreation(name?: string, slot?: string): Promise<ComponentCreationAnswers>;
13
- export declare function promptComponentDeployment(): Promise<ComponentDeploymentAnswers>;
14
- //# sourceMappingURL=component.prompts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"component.prompts.d.ts","sourceRoot":"","sources":["../../src/prompts/component.prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIzE,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,iBAAiB,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAQD,wBAAsB,uBAAuB,CAC3C,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,wBAAwB,CAAC,CA8CnC;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAoBrF"}