@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.
- package/.turbo/turbo-build.log +14 -2
- package/CHANGELOG.md +48 -0
- package/__tests__/mocks/core.ts +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js +40631 -75
- package/package.json +7 -6
- package/src/actions/component.actions.ts +148 -204
- package/src/actions/function.actions.ts +78 -171
- package/src/actions/project.actions.ts +16 -11
- package/src/commands/__tests__/component.test.ts +4 -7
- package/src/commands/__tests__/function.test.ts +1 -1
- package/src/commands/__tests__/store-version.test.ts +1 -4
- package/src/commands/component.ts +0 -10
- package/src/commands/function.ts +5 -56
- package/src/schemas/command.schema.ts +296 -6
- package/src/utils/__tests__/rich-progress.test.ts +22 -11
- package/src/utils/cli-progress-reporter.ts +2 -2
- package/src/utils/command-parser.ts +0 -5
- package/src/utils/console.ts +33 -4
- package/src/utils/constants.ts +32 -0
- package/src/utils/deploy-helpers.ts +357 -0
- package/src/utils/errors.ts +133 -2
- package/src/utils/interactive-builder.ts +61 -7
- package/src/utils/rich-progress.ts +25 -14
- package/src/utils/validation-helpers.ts +145 -12
- package/tsup.config.ts +15 -0
- package/dist/__tests__/helpers/cli-test-helper.d.ts +0 -89
- package/dist/__tests__/helpers/cli-test-helper.d.ts.map +0 -1
- package/dist/__tests__/helpers/cli-test-helper.js +0 -220
- package/dist/__tests__/mocks/index.d.ts +0 -69
- package/dist/__tests__/mocks/index.d.ts.map +0 -1
- package/dist/__tests__/mocks/index.js +0 -77
- package/dist/actions/component.actions.d.ts +0 -14
- package/dist/actions/component.actions.d.ts.map +0 -1
- package/dist/actions/component.actions.js +0 -273
- package/dist/actions/function.actions.d.ts +0 -15
- package/dist/actions/function.actions.d.ts.map +0 -1
- package/dist/actions/function.actions.js +0 -254
- package/dist/actions/project.actions.d.ts +0 -17
- package/dist/actions/project.actions.d.ts.map +0 -1
- package/dist/actions/project.actions.js +0 -97
- package/dist/actions/version.actions.d.ts +0 -19
- package/dist/actions/version.actions.d.ts.map +0 -1
- package/dist/actions/version.actions.js +0 -216
- package/dist/commands/component.d.ts +0 -3
- package/dist/commands/component.d.ts.map +0 -1
- package/dist/commands/component.js +0 -192
- package/dist/commands/docs.d.ts +0 -3
- package/dist/commands/docs.d.ts.map +0 -1
- package/dist/commands/docs.js +0 -16
- package/dist/commands/function.d.ts +0 -3
- package/dist/commands/function.d.ts.map +0 -1
- package/dist/commands/function.js +0 -243
- package/dist/commands/help.d.ts +0 -3
- package/dist/commands/help.d.ts.map +0 -1
- package/dist/commands/help.js +0 -20
- package/dist/commands/index.d.ts +0 -3
- package/dist/commands/index.d.ts.map +0 -1
- package/dist/commands/index.js +0 -26
- package/dist/commands/login.d.ts +0 -3
- package/dist/commands/login.d.ts.map +0 -1
- package/dist/commands/login.js +0 -175
- package/dist/commands/project.d.ts +0 -3
- package/dist/commands/project.d.ts.map +0 -1
- package/dist/commands/project.js +0 -78
- package/dist/commands/store-version.d.ts +0 -3
- package/dist/commands/store-version.d.ts.map +0 -1
- package/dist/commands/store-version.js +0 -241
- package/dist/commands/version.d.ts +0 -3
- package/dist/commands/version.d.ts.map +0 -1
- package/dist/commands/version.js +0 -46
- package/dist/commands/whoami.d.ts +0 -3
- package/dist/commands/whoami.d.ts.map +0 -1
- package/dist/commands/whoami.js +0 -41
- package/dist/index.d.ts.map +0 -1
- package/dist/prompts/component.prompts.d.ts +0 -14
- package/dist/prompts/component.prompts.d.ts.map +0 -1
- package/dist/prompts/component.prompts.js +0 -75
- package/dist/prompts/function.prompts.d.ts +0 -21
- package/dist/prompts/function.prompts.d.ts.map +0 -1
- package/dist/prompts/function.prompts.js +0 -127
- package/dist/schemas/command.schema.d.ts +0 -516
- package/dist/schemas/command.schema.d.ts.map +0 -1
- package/dist/schemas/command.schema.js +0 -267
- package/dist/types/index.d.ts +0 -147
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -18
- package/dist/utils/auth.d.ts +0 -4
- package/dist/utils/auth.d.ts.map +0 -1
- package/dist/utils/auth.js +0 -26
- package/dist/utils/cli-progress-reporter.d.ts +0 -12
- package/dist/utils/cli-progress-reporter.d.ts.map +0 -1
- package/dist/utils/cli-progress-reporter.js +0 -77
- package/dist/utils/command-builder.d.ts +0 -22
- package/dist/utils/command-builder.d.ts.map +0 -1
- package/dist/utils/command-builder.js +0 -268
- package/dist/utils/command-helpers.d.ts +0 -19
- package/dist/utils/command-helpers.d.ts.map +0 -1
- package/dist/utils/command-helpers.js +0 -79
- package/dist/utils/command-parser.d.ts +0 -146
- package/dist/utils/command-parser.d.ts.map +0 -1
- package/dist/utils/command-parser.js +0 -179
- package/dist/utils/command-suggestions.d.ts +0 -35
- package/dist/utils/command-suggestions.d.ts.map +0 -1
- package/dist/utils/command-suggestions.js +0 -152
- package/dist/utils/console.d.ts +0 -44
- package/dist/utils/console.d.ts.map +0 -1
- package/dist/utils/console.js +0 -233
- package/dist/utils/constants.d.ts +0 -8
- package/dist/utils/constants.d.ts.map +0 -1
- package/dist/utils/constants.js +0 -10
- package/dist/utils/context-detector.d.ts +0 -12
- package/dist/utils/context-detector.d.ts.map +0 -1
- package/dist/utils/context-detector.js +0 -155
- package/dist/utils/enhanced-error-handler.d.ts +0 -47
- package/dist/utils/enhanced-error-handler.d.ts.map +0 -1
- package/dist/utils/enhanced-error-handler.js +0 -221
- package/dist/utils/error-handler.d.ts +0 -3
- package/dist/utils/error-handler.d.ts.map +0 -1
- package/dist/utils/error-handler.js +0 -55
- package/dist/utils/errors.d.ts +0 -44
- package/dist/utils/errors.d.ts.map +0 -1
- package/dist/utils/errors.js +0 -76
- package/dist/utils/interactive-builder.d.ts +0 -22
- package/dist/utils/interactive-builder.d.ts.map +0 -1
- package/dist/utils/interactive-builder.js +0 -246
- package/dist/utils/rich-progress.d.ts +0 -59
- package/dist/utils/rich-progress.d.ts.map +0 -1
- package/dist/utils/rich-progress.js +0 -234
- package/dist/utils/store.d.ts +0 -11
- package/dist/utils/store.d.ts.map +0 -1
- package/dist/utils/store.js +0 -19
- package/dist/utils/validation-error-formatter.d.ts +0 -25
- package/dist/utils/validation-error-formatter.d.ts.map +0 -1
- package/dist/utils/validation-error-formatter.js +0 -258
- package/dist/utils/validation-helpers.d.ts +0 -60
- package/dist/utils/validation-helpers.d.ts.map +0 -1
- package/dist/utils/validation-helpers.js +0 -152
- package/src/commands/__tests__/version.test.ts +0 -71
package/dist/commands/login.js
DELETED
|
@@ -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 +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"}
|
package/dist/commands/project.js
DELETED
|
@@ -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 +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 +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"}
|
package/dist/commands/version.js
DELETED
|
@@ -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 +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"}
|
package/dist/commands/whoami.js
DELETED
|
@@ -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
|
-
}
|
package/dist/index.d.ts.map
DELETED
|
@@ -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"}
|