@forjio/storlaunch-cli 0.1.1 → 0.3.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.
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const buy: Command;
3
+ //# sourceMappingURL=buy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buy.d.ts","sourceRoot":"","sources":["../../src/commands/buy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,eAAO,MAAM,GAAG,SAA6E,CAAC"}
@@ -0,0 +1,512 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import { writeFileSync } from "node:fs";
4
+ import { spawn } from "node:child_process";
5
+ import { platform } from "node:os";
6
+ import { buyerRequest, parseSessionCookie, buyerDownload, BuyerApiError } from "../lib/buyer-api.js";
7
+ import { getBuyerSession, setBuyerSession, clearBuyerSession, listBuyerSessions, requireBuyerSession, } from "../lib/buyer-config.js";
8
+ import { prompt, promptChoice, promptConfirm, closePrompt } from "../lib/prompt.js";
9
+ import { output } from "../lib/output.js";
10
+ // ─── Top-level `buy` ─────────────────────────────────────────────────────────
11
+ export const buy = new Command("buy").description("Buyer commands — shop, pay, track orders");
12
+ // ─── auth ────────────────────────────────────────────────────────────────────
13
+ const auth = buy.command("auth").description("Manage buyer authentication (per merchant)");
14
+ auth
15
+ .command("login")
16
+ .description("Log in to a merchant via email OTP")
17
+ .requiredOption("--merchant <slug>", "Merchant slug (e.g. my-shop)")
18
+ .action(async (opts) => {
19
+ try {
20
+ const email = (await prompt("Email:")) || "";
21
+ if (!email)
22
+ throw new Error("Email is required");
23
+ await buyerRequest(null, "/checkout/verify-email", {
24
+ method: "POST",
25
+ body: { email, accountSlug: opts.merchant },
26
+ });
27
+ console.log(chalk.dim(`Code sent to ${email}. Check your inbox.`));
28
+ const code = (await prompt("6-digit code:")) || "";
29
+ if (!/^\d{6}$/.test(code))
30
+ throw new Error("Must be 6 digits");
31
+ const { setCookie } = await buyerRequest(null, "/checkout/verify-otp", {
32
+ method: "POST",
33
+ body: { email, accountSlug: opts.merchant, code },
34
+ });
35
+ const parsed = parseSessionCookie(setCookie);
36
+ if (!parsed)
37
+ throw new Error("Login succeeded but no session cookie received");
38
+ setBuyerSession({ accountSlug: opts.merchant, email, ...parsed });
39
+ console.log(chalk.green(`✓ Signed in as ${email} for ${opts.merchant}`));
40
+ }
41
+ catch (err) {
42
+ console.error(chalk.red(err.message));
43
+ process.exitCode = 1;
44
+ }
45
+ finally {
46
+ closePrompt();
47
+ }
48
+ });
49
+ auth
50
+ .command("logout")
51
+ .description("Clear the buyer session for a merchant")
52
+ .requiredOption("--merchant <slug>", "Merchant slug")
53
+ .action(async (opts) => {
54
+ const session = getBuyerSession(opts.merchant);
55
+ if (!session) {
56
+ console.log(chalk.dim(`Not signed in to ${opts.merchant}.`));
57
+ return;
58
+ }
59
+ try {
60
+ await buyerRequest(opts.merchant, "/checkout/signout", { method: "POST" });
61
+ }
62
+ catch {
63
+ // Server-side failure is non-fatal — local clear still runs.
64
+ }
65
+ clearBuyerSession(opts.merchant);
66
+ console.log(chalk.green(`✓ Signed out of ${opts.merchant}`));
67
+ });
68
+ auth
69
+ .command("whoami")
70
+ .description("Show the currently signed-in buyer for a merchant (or all)")
71
+ .option("--merchant <slug>", "Merchant slug (omit to list all)")
72
+ .action(async (opts) => {
73
+ if (opts.merchant) {
74
+ const s = getBuyerSession(opts.merchant);
75
+ if (!s) {
76
+ console.log(chalk.dim(`Not signed in to ${opts.merchant}`));
77
+ return;
78
+ }
79
+ console.log(`${chalk.bold(opts.merchant)}: ${s.email} (expires ${s.expiresAt})`);
80
+ return;
81
+ }
82
+ const all = listBuyerSessions();
83
+ if (all.length === 0) {
84
+ console.log(chalk.dim("No buyer sessions"));
85
+ return;
86
+ }
87
+ for (const s of all) {
88
+ console.log(`${chalk.bold(s.accountSlug)}: ${s.email} (expires ${s.expiresAt})`);
89
+ }
90
+ });
91
+ // ─── shop / browse ───────────────────────────────────────────────────────────
92
+ buy
93
+ .command("shop <merchant> [product]")
94
+ .description("Browse a merchant's products (or view one product)")
95
+ .action(async (merchant, productSlug) => {
96
+ try {
97
+ if (productSlug) {
98
+ const { data } = await buyerRequest(null, `/storefront/public/${merchant}/${productSlug}`);
99
+ output(data);
100
+ return;
101
+ }
102
+ const { data } = await buyerRequest(null, `/storefront/public/${merchant}`);
103
+ output(data);
104
+ }
105
+ catch (err) {
106
+ console.error(chalk.red(err.message));
107
+ process.exitCode = 1;
108
+ }
109
+ });
110
+ // ─── checkout ────────────────────────────────────────────────────────────────
111
+ buy
112
+ .command("checkout <merchant> <product>")
113
+ .description("Buy a product — interactive for physical, direct for digital; opens payment URL")
114
+ .option("--open", "Automatically open the payment URL in the browser", true)
115
+ .option("--no-open", "Print the URL instead of opening the browser")
116
+ .action(async (merchant, productSlug, opts) => {
117
+ try {
118
+ const session = requireBuyerSession(merchant);
119
+ const { data: product } = await buyerRequest(null, `/storefront/public/${merchant}/${productSlug}`);
120
+ if (!product)
121
+ throw new Error("Product not found");
122
+ const isPhysical = product.type === "physical";
123
+ const body = { email: session.email };
124
+ if (isPhysical) {
125
+ // Address picker
126
+ const { data: addresses } = await buyerRequest(merchant, `/checkout/addresses`, {
127
+ query: { accountSlug: merchant },
128
+ });
129
+ if (addresses.length === 0) {
130
+ console.log(chalk.yellow("No saved addresses. Run: storlaunch buy addresses add --merchant " + merchant));
131
+ return;
132
+ }
133
+ const picked = await promptChoice("Pick an address:", addresses.map((a) => ({
134
+ ...a,
135
+ label: `${a.label} — ${a.contactName}, ${a.address}${a.isDefault ? " [default]" : ""}`,
136
+ })));
137
+ if (!picked)
138
+ return;
139
+ // Rate quote
140
+ const { data: rates } = await buyerRequest(null, `/shipping/rates`, {
141
+ method: "POST",
142
+ body: {
143
+ accountSlug: merchant,
144
+ destination: {
145
+ contactName: picked.contactName, contactPhone: picked.contactPhone, email: session.email,
146
+ address: picked.address, note: picked.note, postalCode: picked.postalCode,
147
+ areaId: picked.areaId, lat: picked.lat, lng: picked.lng,
148
+ },
149
+ items: [{
150
+ productId: product.id, name: product.name, value: product.price,
151
+ weight: Math.max(1, product.weight ?? 1), quantity: 1,
152
+ }],
153
+ },
154
+ });
155
+ if (!rates.rates?.length) {
156
+ console.log(chalk.yellow("No couriers available for this address."));
157
+ return;
158
+ }
159
+ const rate = await promptChoice("Pick a courier:", rates.rates.map((r) => ({
160
+ ...r,
161
+ label: `${r.courier_name} · ${r.courier_service_name} — ${fmtIDR(r.price)} (${r.duration})`,
162
+ })));
163
+ if (!rate)
164
+ return;
165
+ body.shipping = {
166
+ destination: {
167
+ contactName: picked.contactName, contactPhone: picked.contactPhone, email: session.email,
168
+ address: picked.address, note: picked.note, postalCode: picked.postalCode,
169
+ areaId: picked.areaId, lat: picked.lat, lng: picked.lng,
170
+ },
171
+ courierCode: rate.courier_code,
172
+ courierService: rate.courier_service_code,
173
+ courierType: rate.service_type,
174
+ shippingCost: rate.price,
175
+ insured: false,
176
+ insuranceValue: product.price,
177
+ addressId: picked.id,
178
+ };
179
+ const total = product.price + rate.price;
180
+ const ok = await promptConfirm(`Total: ${fmtIDR(total)}. Confirm?`);
181
+ if (!ok) {
182
+ console.log(chalk.dim("Cancelled."));
183
+ return;
184
+ }
185
+ }
186
+ else {
187
+ const ok = await promptConfirm(`Buy ${product.name} for ${fmtIDR(product.price)}?`);
188
+ if (!ok) {
189
+ console.log(chalk.dim("Cancelled."));
190
+ return;
191
+ }
192
+ }
193
+ const { data: result } = await buyerRequest(null, `/storefront/public/${merchant}/${productSlug}/checkout`, {
194
+ method: "POST",
195
+ body,
196
+ });
197
+ console.log(chalk.green("\n✓ Checkout created"));
198
+ console.log(`Pay here: ${chalk.cyan(result.checkoutUrl)}`);
199
+ if (opts.open)
200
+ openBrowser(result.checkoutUrl);
201
+ }
202
+ catch (err) {
203
+ if (err instanceof BuyerApiError && err.status === 401) {
204
+ console.error(chalk.red(`Not signed in. Run: storlaunch buy auth login --merchant ${merchant}`));
205
+ }
206
+ else {
207
+ console.error(chalk.red(err.message));
208
+ }
209
+ process.exitCode = 1;
210
+ }
211
+ finally {
212
+ closePrompt();
213
+ }
214
+ });
215
+ // ─── orders ──────────────────────────────────────────────────────────────────
216
+ const orders = buy.command("orders").description("Your orders with a merchant");
217
+ orders
218
+ .command("list")
219
+ .requiredOption("--merchant <slug>", "Merchant slug")
220
+ .description("List your orders")
221
+ .action(async (opts) => {
222
+ try {
223
+ requireBuyerSession(opts.merchant);
224
+ const { data } = await buyerRequest(opts.merchant, `/checkout/orders`, {
225
+ query: { accountSlug: opts.merchant },
226
+ });
227
+ output(data);
228
+ }
229
+ catch (err) {
230
+ errExit(err);
231
+ }
232
+ });
233
+ orders
234
+ .command("get <id>")
235
+ .requiredOption("--merchant <slug>", "Merchant slug")
236
+ .description("Show a single order with shipment + deliveries + invoice")
237
+ .action(async (id, opts) => {
238
+ try {
239
+ requireBuyerSession(opts.merchant);
240
+ const { data } = await buyerRequest(opts.merchant, `/checkout/orders/${id}`, {
241
+ query: { accountSlug: opts.merchant },
242
+ });
243
+ output(data);
244
+ }
245
+ catch (err) {
246
+ errExit(err);
247
+ }
248
+ });
249
+ // ─── subscriptions ───────────────────────────────────────────────────────────
250
+ const subs = buy.command("subs").description("Your subscriptions with a merchant");
251
+ subs
252
+ .command("list")
253
+ .requiredOption("--merchant <slug>", "Merchant slug")
254
+ .action(async (opts) => {
255
+ try {
256
+ requireBuyerSession(opts.merchant);
257
+ const { data } = await buyerRequest(opts.merchant, `/checkout/subscriptions`, {
258
+ query: { accountSlug: opts.merchant },
259
+ });
260
+ output(data);
261
+ }
262
+ catch (err) {
263
+ errExit(err);
264
+ }
265
+ });
266
+ subs
267
+ .command("get <id>")
268
+ .requiredOption("--merchant <slug>", "Merchant slug")
269
+ .action(async (id, opts) => {
270
+ try {
271
+ requireBuyerSession(opts.merchant);
272
+ const { data } = await buyerRequest(opts.merchant, `/checkout/subscriptions/${id}`, {
273
+ query: { accountSlug: opts.merchant },
274
+ });
275
+ output(data);
276
+ }
277
+ catch (err) {
278
+ errExit(err);
279
+ }
280
+ });
281
+ subs
282
+ .command("cancel <id>")
283
+ .requiredOption("--merchant <slug>", "Merchant slug")
284
+ .option("--immediate", "Cancel right now instead of at period end", false)
285
+ .description("Cancel a subscription (end-of-period by default)")
286
+ .action(async (id, opts) => {
287
+ try {
288
+ requireBuyerSession(opts.merchant);
289
+ const { data } = await buyerRequest(opts.merchant, `/checkout/subscriptions/${id}/cancel`, {
290
+ method: "POST",
291
+ body: { accountSlug: opts.merchant, immediate: opts.immediate },
292
+ });
293
+ output(data);
294
+ }
295
+ catch (err) {
296
+ errExit(err);
297
+ }
298
+ });
299
+ // ─── invoices ────────────────────────────────────────────────────────────────
300
+ const invoices = buy.command("invoices").description("Your invoices from a merchant");
301
+ invoices
302
+ .command("list")
303
+ .requiredOption("--merchant <slug>", "Merchant slug")
304
+ .action(async (opts) => {
305
+ try {
306
+ requireBuyerSession(opts.merchant);
307
+ const { data } = await buyerRequest(opts.merchant, `/checkout/invoices`, {
308
+ query: { accountSlug: opts.merchant },
309
+ });
310
+ output(data);
311
+ }
312
+ catch (err) {
313
+ errExit(err);
314
+ }
315
+ });
316
+ invoices
317
+ .command("download <id>")
318
+ .requiredOption("--merchant <slug>", "Merchant slug")
319
+ .option("--out <path>", "Write to a file path (default: ./invoice-<id>.pdf)")
320
+ .description("Download an invoice PDF")
321
+ .action(async (id, opts) => {
322
+ try {
323
+ requireBuyerSession(opts.merchant);
324
+ const buf = await buyerDownload(opts.merchant, `/checkout/invoices/${id}/pdf?download=1`);
325
+ const path = opts.out ?? `./invoice-${id}.pdf`;
326
+ writeFileSync(path, buf);
327
+ console.log(chalk.green(`✓ Saved to ${path}`));
328
+ }
329
+ catch (err) {
330
+ errExit(err);
331
+ }
332
+ });
333
+ // ─── addresses ───────────────────────────────────────────────────────────────
334
+ const addresses = buy.command("addresses").description("Your saved addresses for a merchant");
335
+ addresses
336
+ .command("list")
337
+ .requiredOption("--merchant <slug>", "Merchant slug")
338
+ .action(async (opts) => {
339
+ try {
340
+ requireBuyerSession(opts.merchant);
341
+ const { data } = await buyerRequest(opts.merchant, `/checkout/addresses`, {
342
+ query: { accountSlug: opts.merchant },
343
+ });
344
+ output(data);
345
+ }
346
+ catch (err) {
347
+ errExit(err);
348
+ }
349
+ });
350
+ addresses
351
+ .command("add")
352
+ .requiredOption("--merchant <slug>", "Merchant slug")
353
+ .option("--label <label>", "Label (e.g. Home, Office)", "Home")
354
+ .requiredOption("--name <name>", "Contact name")
355
+ .requiredOption("--phone <phone>", "Contact phone")
356
+ .requiredOption("--address <address>", "Street address")
357
+ .option("--postal <code>", "Postal code")
358
+ .option("--lat <lat>", "Latitude (required for instant couriers)", parseFloat)
359
+ .option("--lng <lng>", "Longitude", parseFloat)
360
+ .option("--note <note>", "Delivery note")
361
+ .option("--default", "Mark this as the default address", false)
362
+ .description("Add a new address")
363
+ .action(async (opts) => {
364
+ try {
365
+ requireBuyerSession(opts.merchant);
366
+ const { data } = await buyerRequest(opts.merchant, `/checkout/addresses`, {
367
+ method: "POST",
368
+ body: {
369
+ accountSlug: opts.merchant,
370
+ label: opts.label, contactName: opts.name, contactPhone: opts.phone,
371
+ address: opts.address, postalCode: opts.postal, note: opts.note,
372
+ lat: opts.lat, lng: opts.lng, isDefault: opts.default ?? false,
373
+ },
374
+ });
375
+ output(data);
376
+ }
377
+ catch (err) {
378
+ errExit(err);
379
+ }
380
+ });
381
+ addresses
382
+ .command("edit <id>")
383
+ .requiredOption("--merchant <slug>", "Merchant slug")
384
+ .option("--label <label>")
385
+ .option("--name <name>")
386
+ .option("--phone <phone>")
387
+ .option("--address <address>")
388
+ .option("--postal <code>")
389
+ .option("--lat <lat>", "", parseFloat)
390
+ .option("--lng <lng>", "", parseFloat)
391
+ .option("--note <note>")
392
+ .description("Update fields on an existing address")
393
+ .action(async (id, opts) => {
394
+ try {
395
+ requireBuyerSession(opts.merchant);
396
+ const body = { accountSlug: opts.merchant };
397
+ if (opts.label !== undefined)
398
+ body.label = opts.label;
399
+ if (opts.name !== undefined)
400
+ body.contactName = opts.name;
401
+ if (opts.phone !== undefined)
402
+ body.contactPhone = opts.phone;
403
+ if (opts.address !== undefined)
404
+ body.address = opts.address;
405
+ if (opts.postal !== undefined)
406
+ body.postalCode = opts.postal;
407
+ if (opts.lat !== undefined)
408
+ body.lat = opts.lat;
409
+ if (opts.lng !== undefined)
410
+ body.lng = opts.lng;
411
+ if (opts.note !== undefined)
412
+ body.note = opts.note;
413
+ const { data } = await buyerRequest(opts.merchant, `/checkout/addresses/${id}`, {
414
+ method: "PATCH", body,
415
+ });
416
+ output(data);
417
+ }
418
+ catch (err) {
419
+ errExit(err);
420
+ }
421
+ });
422
+ addresses
423
+ .command("delete <id>")
424
+ .requiredOption("--merchant <slug>", "Merchant slug")
425
+ .action(async (id, opts) => {
426
+ try {
427
+ requireBuyerSession(opts.merchant);
428
+ await buyerRequest(opts.merchant, `/checkout/addresses/${id}`, {
429
+ method: "DELETE", query: { accountSlug: opts.merchant },
430
+ });
431
+ console.log(chalk.green("✓ Address deleted"));
432
+ }
433
+ catch (err) {
434
+ errExit(err);
435
+ }
436
+ });
437
+ addresses
438
+ .command("default <id>")
439
+ .requiredOption("--merchant <slug>", "Merchant slug")
440
+ .description("Mark an address as default")
441
+ .action(async (id, opts) => {
442
+ try {
443
+ requireBuyerSession(opts.merchant);
444
+ const { data } = await buyerRequest(opts.merchant, `/checkout/addresses/${id}/default`, {
445
+ method: "POST", body: { accountSlug: opts.merchant },
446
+ });
447
+ output(data);
448
+ }
449
+ catch (err) {
450
+ errExit(err);
451
+ }
452
+ });
453
+ // ─── profile ─────────────────────────────────────────────────────────────────
454
+ const profile = buy.command("profile").description("Your profile with a merchant");
455
+ profile
456
+ .command("show")
457
+ .requiredOption("--merchant <slug>", "Merchant slug")
458
+ .action(async (opts) => {
459
+ try {
460
+ requireBuyerSession(opts.merchant);
461
+ const { data } = await buyerRequest(opts.merchant, `/checkout/profile`, {
462
+ query: { accountSlug: opts.merchant },
463
+ });
464
+ output(data);
465
+ }
466
+ catch (err) {
467
+ errExit(err);
468
+ }
469
+ });
470
+ profile
471
+ .command("update")
472
+ .requiredOption("--merchant <slug>", "Merchant slug")
473
+ .option("--name <name>", "New display name")
474
+ .description("Update profile fields (name only; change-email is a separate OTP flow)")
475
+ .action(async (opts) => {
476
+ try {
477
+ requireBuyerSession(opts.merchant);
478
+ const { data } = await buyerRequest(opts.merchant, `/checkout/profile`, {
479
+ method: "PATCH", body: { accountSlug: opts.merchant, name: opts.name ?? null },
480
+ });
481
+ output(data);
482
+ }
483
+ catch (err) {
484
+ errExit(err);
485
+ }
486
+ });
487
+ // ─── helpers ─────────────────────────────────────────────────────────────────
488
+ function errExit(err) {
489
+ if (err instanceof BuyerApiError) {
490
+ if (err.status === 401)
491
+ console.error(chalk.red("Not signed in — run: storlaunch buy auth login --merchant <slug>"));
492
+ else
493
+ console.error(chalk.red(`${err.message} (HTTP ${err.status})`));
494
+ }
495
+ else {
496
+ console.error(chalk.red(err.message));
497
+ }
498
+ process.exitCode = 1;
499
+ }
500
+ function fmtIDR(n) {
501
+ return `Rp ${n.toLocaleString("id-ID")}`;
502
+ }
503
+ function openBrowser(url) {
504
+ const cmd = platform() === "darwin" ? "open" : platform() === "win32" ? "start" : "xdg-open";
505
+ try {
506
+ spawn(cmd, [url], { detached: true, stdio: "ignore" }).unref();
507
+ }
508
+ catch {
509
+ // Opening the browser is best-effort — user already sees the URL.
510
+ }
511
+ }
512
+ //# sourceMappingURL=buy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buy.js","sourceRoot":"","sources":["../../src/commands/buy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Command } from "commander";
2
+ declare const inventory: Command;
3
+ export { inventory };
4
+ //# sourceMappingURL=inventory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inventory.d.ts","sourceRoot":"","sources":["../../src/commands/inventory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+bpC,QAAA,MAAM,SAAS,SAA6E,CAAC;AAM7F,OAAO,EAAE,SAAS,EAAE,CAAC"}