@forjio/storlaunch-cli 0.4.0 → 0.5.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,4 @@
1
+ import { Command } from "commander";
2
+ declare const reports: Command;
3
+ export { reports };
4
+ //# sourceMappingURL=reports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reports.d.ts","sourceRoot":"","sources":["../../src/commands/reports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6BpC,QAAA,MAAM,OAAO,SAAuF,CAAC;AAsIrG,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,170 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import { writeFileSync } from "node:fs";
4
+ import { apiRequest, ApiClientError } from "../lib/api.js";
5
+ import { resolveApiKey, resolveApiUrl } from "../lib/config.js";
6
+ import { output } from "../lib/output.js";
7
+ /**
8
+ * `sell reports` — P&L, cash flow, and CSV ledger export. Reads from the
9
+ * Phase B ledger; no writes.
10
+ */
11
+ function getExitCode(err) {
12
+ if (err instanceof ApiClientError) {
13
+ if (err.status === 401 || err.status === 403)
14
+ return 2;
15
+ if (err.status === 429)
16
+ return 3;
17
+ }
18
+ return 1;
19
+ }
20
+ function handleError(err, json) {
21
+ if (json && err instanceof ApiClientError) {
22
+ console.error(JSON.stringify({ data: null, error: { code: err.code, message: err.message } }, null, 2));
23
+ }
24
+ else {
25
+ console.error(chalk.red(`Error: ${err instanceof Error ? err.message : String(err)}`));
26
+ }
27
+ process.exit(getExitCode(err));
28
+ }
29
+ const reports = new Command("reports").description("Financial reports — P&L, cash flow, CSV export");
30
+ reports
31
+ .command("pnl")
32
+ .description("Profit & loss for a period")
33
+ .requiredOption("--from <iso>", "Period start (ISO-8601)")
34
+ .requiredOption("--to <iso>", "Period end (ISO-8601)")
35
+ .option("--currency <code>", "Filter by currency (e.g. IDR, USD)")
36
+ .action(async (opts, cmd) => {
37
+ const g = cmd.optsWithGlobals();
38
+ try {
39
+ const result = await apiRequest("/reports/pnl", {
40
+ query: { from: opts.from, to: opts.to, currency: opts.currency },
41
+ sandbox: g.sandbox,
42
+ });
43
+ if (g.json) {
44
+ output(result, { json: true });
45
+ }
46
+ else {
47
+ const d = (result["data"] ?? result);
48
+ const rev = d["revenue"];
49
+ const exp = d["expenses"];
50
+ console.log(chalk.bold(`P&L ${opts.from} → ${opts.to}`));
51
+ console.log(chalk.dim(`Currency: ${d["currency"] ?? "—"} · ${d["entryCount"] ?? 0} entries`));
52
+ console.log();
53
+ console.log(chalk.bold("Revenue"));
54
+ console.log(` Sales ${String(rev.sales).padStart(14)}`);
55
+ console.log(` Refunds − ${String(rev.refunds).padStart(14)}`);
56
+ console.log(` Net revenue ${chalk.bold(String(rev.net).padStart(14))}`);
57
+ console.log();
58
+ console.log(chalk.bold("Expenses"));
59
+ console.log(` Platform fees ${String(exp.platformFees).padStart(14)}`);
60
+ console.log(` Channel fees ${String(exp.channelFees).padStart(14)}`);
61
+ console.log(` Shipping costs ${String(exp.shippingCosts).padStart(14)}`);
62
+ if (exp.shippingRefunds > 0) {
63
+ console.log(` Shipping refunds − ${String(exp.shippingRefunds).padStart(14)}`);
64
+ }
65
+ console.log(` Total expenses ${chalk.bold(String(exp.total).padStart(14))}`);
66
+ console.log();
67
+ const netProfit = Number(d["netProfit"]);
68
+ const profitColor = netProfit >= 0 ? chalk.green : chalk.red;
69
+ console.log(chalk.bold(`Net profit: ${profitColor(String(netProfit))}`));
70
+ }
71
+ }
72
+ catch (err) {
73
+ handleError(err, g.json);
74
+ }
75
+ });
76
+ reports
77
+ .command("cash-flow")
78
+ .description("Cash flow (opening + closing balance, category breakdown)")
79
+ .requiredOption("--from <iso>", "Period start (ISO-8601)")
80
+ .requiredOption("--to <iso>", "Period end (ISO-8601)")
81
+ .option("--currency <code>", "Filter by currency")
82
+ .action(async (opts, cmd) => {
83
+ const g = cmd.optsWithGlobals();
84
+ try {
85
+ const result = await apiRequest("/reports/cash-flow", {
86
+ query: { from: opts.from, to: opts.to, currency: opts.currency },
87
+ sandbox: g.sandbox,
88
+ });
89
+ if (g.json) {
90
+ output(result, { json: true });
91
+ }
92
+ else {
93
+ const d = (result["data"] ?? result);
94
+ const inflows = d["inflows"];
95
+ const outflows = d["outflows"];
96
+ console.log(chalk.bold(`Cash Flow ${opts.from} → ${opts.to}`));
97
+ console.log(chalk.dim(`Currency: ${d["currency"] ?? "—"} · ${d["entryCount"] ?? 0} entries`));
98
+ console.log();
99
+ console.log(`Opening balance ${String(d["openingBalance"]).padStart(14)}`);
100
+ console.log(`Net change ${chalk.bold(String(d["netChange"]).padStart(14))}`);
101
+ console.log(`Closing balance ${String(d["closingBalance"]).padStart(14)}`);
102
+ console.log();
103
+ console.log(chalk.green.bold(`Inflows (total: ${d["totalIn"]})`));
104
+ for (const [k, v] of Object.entries(inflows))
105
+ console.log(` ${k.padEnd(20)} ${String(v).padStart(12)}`);
106
+ console.log();
107
+ console.log(chalk.red.bold(`Outflows (total: ${d["totalOut"]})`));
108
+ for (const [k, v] of Object.entries(outflows))
109
+ console.log(` ${k.padEnd(20)} ${String(v).padStart(12)}`);
110
+ }
111
+ }
112
+ catch (err) {
113
+ handleError(err, g.json);
114
+ }
115
+ });
116
+ reports
117
+ .command("export-ledger")
118
+ .description("Download ledger entries as CSV for a period")
119
+ .requiredOption("--from <iso>", "Period start (ISO-8601)")
120
+ .requiredOption("--to <iso>", "Period end (ISO-8601)")
121
+ .option("--currency <code>", "Filter by currency")
122
+ .option("--out <path>", "Write CSV to this path (default: stdout)")
123
+ .action(async (opts, cmd) => {
124
+ const g = cmd.optsWithGlobals();
125
+ try {
126
+ const token = resolveApiKey({ sandbox: g.sandbox });
127
+ if (!token) {
128
+ throw new ApiClientError({
129
+ status: 401,
130
+ message: "Not authenticated. Run `storlaunch sell auth login --key <api-key>` first.",
131
+ code: "AUTH_REQUIRED",
132
+ });
133
+ }
134
+ const baseUrl = resolveApiUrl();
135
+ const url = new URL("/reports/ledger.csv", baseUrl.endsWith("/") ? baseUrl : baseUrl + "/");
136
+ url.searchParams.set("from", opts.from);
137
+ url.searchParams.set("to", opts.to);
138
+ if (opts.currency)
139
+ url.searchParams.set("currency", opts.currency);
140
+ const response = await fetch(url.toString(), {
141
+ headers: { Authorization: `Bearer ${token}`, Accept: "text/csv" },
142
+ });
143
+ if (!response.ok) {
144
+ let errorBody = {};
145
+ try {
146
+ errorBody = (await response.json());
147
+ }
148
+ catch { /* ignore */ }
149
+ throw new ApiClientError({
150
+ status: response.status,
151
+ message: errorBody.message ?? `CSV download failed with status ${response.status}`,
152
+ code: errorBody.code,
153
+ });
154
+ }
155
+ const csv = await response.text();
156
+ if (opts.out) {
157
+ writeFileSync(opts.out, csv, "utf8");
158
+ if (!g.json)
159
+ console.log(chalk.green(`CSV written to ${opts.out} (${csv.length} bytes)`));
160
+ }
161
+ else {
162
+ process.stdout.write(csv);
163
+ }
164
+ }
165
+ catch (err) {
166
+ handleError(err, g.json);
167
+ }
168
+ });
169
+ export { reports };
170
+ //# sourceMappingURL=reports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reports.js","sourceRoot":"","sources":["../../src/commands/reports.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"sell.d.ts","sourceRoot":"","sources":["../../src/commands/sell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;;;GAIG;AACH,eAAO,MAAM,IAAI,SAAoF,CAAC"}
1
+ {"version":3,"file":"sell.d.ts","sourceRoot":"","sources":["../../src/commands/sell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC;;;;GAIG;AACH,eAAO,MAAM,IAAI,SAAoF,CAAC"}
@@ -7,6 +7,7 @@ import { config } from "./config.js";
7
7
  import { inventory } from "./inventory.js";
8
8
  import { shipping } from "./shipping.js";
9
9
  import { ledger } from "./ledger.js";
10
+ import { reports } from "./reports.js";
10
11
  /**
11
12
  * `sell` — seller-side commands. Wraps existing command modules as
12
13
  * subcommands. 0.3.0 adds inventory (variants/warehouses/stock) and
@@ -19,6 +20,7 @@ sell.addCommand(storefront);
19
20
  sell.addCommand(inventory);
20
21
  sell.addCommand(shipping);
21
22
  sell.addCommand(ledger);
23
+ sell.addCommand(reports);
22
24
  sell.addCommand(webhook);
23
25
  sell.addCommand(config);
24
26
  //# sourceMappingURL=sell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sell.js","sourceRoot":"","sources":["../../src/commands/sell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,gDAAgD,CAAC,CAAC;AAEtG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACtB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACzB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC5B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC3B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACxB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACzB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"sell.js","sourceRoot":"","sources":["../../src/commands/sell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,gDAAgD,CAAC,CAAC;AAEtG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACtB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACzB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC5B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAC3B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACxB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACzB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACzB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@forjio/storlaunch-cli",
3
- "version": "0.4.0",
4
- "description": "Storlaunch CLI — seller tools (storefronts, inventory, shipping, ledger, payments, webhooks) and buyer tools (shop, orders, subs, invoices) in one CLI",
3
+ "version": "0.5.0",
4
+ "description": "Storlaunch CLI — seller tools (storefronts, inventory, shipping, ledger, reports, payments, webhooks) and buyer tools (shop, orders, subs, invoices) in one CLI",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "bin": {