@forjio/storlaunch-cli 0.9.0 → 0.10.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.
@@ -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;AAapC;;;;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;AAcpC;;;;GAIG;AACH,eAAO,MAAM,IAAI,SAAoF,CAAC"}
@@ -10,6 +10,7 @@ import { ledger } from "./ledger.js";
10
10
  import { reports } from "./reports.js";
11
11
  import { payouts } from "./payouts.js";
12
12
  import { discountCodes } from "./discount-codes.js";
13
+ import { seo } from "./seo.js";
13
14
  /**
14
15
  * `sell` — seller-side commands. Wraps existing command modules as
15
16
  * subcommands. 0.3.0 adds inventory (variants/warehouses/stock) and
@@ -25,6 +26,7 @@ sell.addCommand(ledger);
25
26
  sell.addCommand(reports);
26
27
  sell.addCommand(payouts);
27
28
  sell.addCommand(discountCodes);
29
+ sell.addCommand(seo);
28
30
  sell.addCommand(webhook);
29
31
  sell.addCommand(config);
30
32
  //# 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;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;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,aAAa,CAAC,CAAC;AAC/B,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;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B;;;;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,aAAa,CAAC,CAAC;AAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACrB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACzB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Command } from "commander";
2
+ /**
3
+ * `sell seo` — inspect a merchant's storefront SEO on the public web.
4
+ *
5
+ * These commands are unauthenticated — they hit the live storefront HTML
6
+ * directly (default https://storlaunch.forjio.com, override with
7
+ * --base-url) and grep for the expected SEO artifacts. Useful after a
8
+ * product launch or when debugging why Google isn't picking up a listing.
9
+ */
10
+ export declare const seo: Command;
11
+ //# sourceMappingURL=seo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seo.d.ts","sourceRoot":"","sources":["../../src/commands/seo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC;;;;;;;GAOG;AAEH,eAAO,MAAM,GAAG,SAA+F,CAAC"}
@@ -0,0 +1,205 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import { output } from "../lib/output.js";
4
+ /**
5
+ * `sell seo` — inspect a merchant's storefront SEO on the public web.
6
+ *
7
+ * These commands are unauthenticated — they hit the live storefront HTML
8
+ * directly (default https://storlaunch.forjio.com, override with
9
+ * --base-url) and grep for the expected SEO artifacts. Useful after a
10
+ * product launch or when debugging why Google isn't picking up a listing.
11
+ */
12
+ export const seo = new Command("seo").description("Inspect storefront SEO (title, metadata, JSON-LD, sitemap)");
13
+ function defaultBase() {
14
+ return process.env.STORLAUNCH_PUBLIC_URL ?? "https://storlaunch.forjio.com";
15
+ }
16
+ async function fetchText(url) {
17
+ const res = await fetch(url);
18
+ if (!res.ok)
19
+ throw new Error(`${res.status} ${res.statusText} ← ${url}`);
20
+ return res.text();
21
+ }
22
+ function extractJsonLd(html) {
23
+ const re = /<script type="application\/ld\+json">([\s\S]*?)<\/script>/g;
24
+ const out = [];
25
+ let m;
26
+ while ((m = re.exec(html)) !== null) {
27
+ // Reverse the HTML-escape we do in lib/jsonld.ts.
28
+ out.push(m[1].replace(/\\u003c/g, "<").replace(/\\u2028/g, "\u2028").replace(/\\u2029/g, "\u2029"));
29
+ }
30
+ return out;
31
+ }
32
+ function pickMeta(html, attr, value) {
33
+ const re = new RegExp(`<meta\\s+${attr}=["']${value}["']\\s+content=["']([^"']*)["']`, "i");
34
+ const m = html.match(re);
35
+ return m ? m[1] : null;
36
+ }
37
+ function pickCanonical(html) {
38
+ const m = html.match(/<link\s+rel=["']canonical["']\s+href=["']([^"']*)["']/i);
39
+ return m ? m[1] : null;
40
+ }
41
+ function pickH1(html) {
42
+ const m = html.match(/<h1[^>]*>([\s\S]*?)<\/h1>/i);
43
+ return m ? m[1].replace(/<[^>]+>/g, "").trim() : null;
44
+ }
45
+ function pickTitle(html) {
46
+ const m = html.match(/<title[^>]*>([\s\S]*?)<\/title>/i);
47
+ return m ? m[1].trim() : null;
48
+ }
49
+ seo
50
+ .command("inspect")
51
+ .description("Check a merchant storefront for title, description, OG tags, and JSON-LD")
52
+ .requiredOption("--merchant <slug>", "Merchant slug")
53
+ .option("--base-url <url>", "Override the storefront base URL")
54
+ .action(async (opts, cmd) => {
55
+ const g = cmd.optsWithGlobals();
56
+ const base = opts.baseUrl ?? defaultBase();
57
+ const url = `${base}/s/${encodeURIComponent(opts.merchant)}`;
58
+ try {
59
+ const html = await fetchText(url);
60
+ const checks = [];
61
+ const title = pickTitle(html);
62
+ checks.push({ name: "<title>", ok: !!title, detail: title ?? "missing" });
63
+ const desc = pickMeta(html, "name", "description");
64
+ checks.push({ name: 'meta description', ok: !!desc, detail: desc ?? "missing" });
65
+ const ogTitle = pickMeta(html, "property", "og:title");
66
+ checks.push({ name: "og:title", ok: !!ogTitle, detail: ogTitle ?? "missing" });
67
+ const ogImage = pickMeta(html, "property", "og:image");
68
+ checks.push({ name: "og:image", ok: !!ogImage, detail: ogImage ?? "missing" });
69
+ const twitter = pickMeta(html, "name", "twitter:card");
70
+ checks.push({ name: "twitter:card", ok: !!twitter, detail: twitter ?? "missing" });
71
+ const canonical = pickCanonical(html);
72
+ checks.push({ name: "canonical", ok: !!canonical, detail: canonical ?? "missing" });
73
+ const h1 = pickH1(html);
74
+ checks.push({ name: "<h1>", ok: !!h1, detail: h1 ?? "missing" });
75
+ const ldBlobs = extractJsonLd(html);
76
+ const ldTypes = ldBlobs
77
+ .map((b) => { try {
78
+ return JSON.parse(b)["@type"] ?? "?";
79
+ }
80
+ catch {
81
+ return "invalid-json";
82
+ } });
83
+ checks.push({
84
+ name: "JSON-LD",
85
+ ok: ldBlobs.length > 0 && !ldTypes.includes("invalid-json"),
86
+ detail: ldBlobs.length === 0 ? "no <script type=\"application/ld+json\"> blocks found" : ldTypes.join(", "),
87
+ });
88
+ const failed = checks.filter((c) => !c.ok);
89
+ if (g.json) {
90
+ output({ url, checks, passed: checks.length - failed.length, failed: failed.length }, { json: true });
91
+ }
92
+ else {
93
+ console.log(chalk.dim(url));
94
+ for (const c of checks) {
95
+ const mark = c.ok ? chalk.green("✓") : chalk.red("✗");
96
+ console.log(`${mark} ${c.name}: ${chalk.dim(c.detail.slice(0, 120))}`);
97
+ }
98
+ if (failed.length > 0) {
99
+ console.log();
100
+ console.log(chalk.red(`${failed.length} check${failed.length === 1 ? "" : "s"} failed`));
101
+ }
102
+ else {
103
+ console.log();
104
+ console.log(chalk.green("All checks passed"));
105
+ }
106
+ }
107
+ if (failed.length > 0)
108
+ process.exit(1);
109
+ }
110
+ catch (err) {
111
+ const msg = err instanceof Error ? err.message : String(err);
112
+ if (g.json)
113
+ output({ error: { message: msg } }, { json: true });
114
+ else
115
+ console.error(chalk.red(`Failed: ${msg}`));
116
+ process.exit(1);
117
+ }
118
+ });
119
+ seo
120
+ .command("sitemap")
121
+ .description("Summarize a merchant sitemap: product count, oldest/newest entries")
122
+ .requiredOption("--merchant <slug>", "Merchant slug")
123
+ .option("--base-url <url>", "Override the storefront base URL")
124
+ .action(async (opts, cmd) => {
125
+ const g = cmd.optsWithGlobals();
126
+ const base = opts.baseUrl ?? defaultBase();
127
+ const url = `${base}/s/${encodeURIComponent(opts.merchant)}/sitemap.xml`;
128
+ try {
129
+ const xml = await fetchText(url);
130
+ // Lightweight parse — we don't need a full XML parser for
131
+ // <lastmod>...</lastmod> + <loc>...</loc> extraction.
132
+ const urls = [...xml.matchAll(/<loc>([^<]*)<\/loc>/g)].map((m) => m[1]);
133
+ const modifieds = [...xml.matchAll(/<lastmod>([^<]*)<\/lastmod>/g)]
134
+ .map((m) => m[1])
135
+ .filter((s) => !Number.isNaN(new Date(s).getTime()));
136
+ const sorted = [...modifieds].sort();
137
+ const result = {
138
+ url,
139
+ urlCount: urls.length,
140
+ oldest: sorted[0] ?? null,
141
+ newest: sorted[sorted.length - 1] ?? null,
142
+ };
143
+ if (g.json)
144
+ output(result, { json: true });
145
+ else {
146
+ console.log(chalk.dim(url));
147
+ console.log(`${chalk.bold(result.urlCount)} URLs`);
148
+ console.log(`Oldest: ${chalk.dim(result.oldest ?? "(none)")}`);
149
+ console.log(`Newest: ${chalk.dim(result.newest ?? "(none)")}`);
150
+ }
151
+ }
152
+ catch (err) {
153
+ const msg = err instanceof Error ? err.message : String(err);
154
+ if (g.json)
155
+ output({ error: { message: msg } }, { json: true });
156
+ else
157
+ console.error(chalk.red(`Failed: ${msg}`));
158
+ process.exit(1);
159
+ }
160
+ });
161
+ seo
162
+ .command("product-schema")
163
+ .description("Extract and pretty-print the Product JSON-LD from a product page")
164
+ .requiredOption("--merchant <slug>", "Merchant slug")
165
+ .requiredOption("--product <slug>", "Product slug")
166
+ .option("--base-url <url>", "Override the storefront base URL")
167
+ .action(async (opts, cmd) => {
168
+ const g = cmd.optsWithGlobals();
169
+ const base = opts.baseUrl ?? defaultBase();
170
+ const url = `${base}/s/${encodeURIComponent(opts.merchant)}/${encodeURIComponent(opts.product)}`;
171
+ try {
172
+ const html = await fetchText(url);
173
+ const blobs = extractJsonLd(html);
174
+ const parsed = blobs
175
+ .map((b) => { try {
176
+ return JSON.parse(b);
177
+ }
178
+ catch {
179
+ return null;
180
+ } })
181
+ .filter((p) => p !== null);
182
+ const product = parsed.find((p) => p["@type"] === "Product");
183
+ if (!product) {
184
+ if (g.json)
185
+ output({ error: { message: "No Product JSON-LD found" } }, { json: true });
186
+ else
187
+ console.error(chalk.red("No Product JSON-LD found on page"));
188
+ process.exit(1);
189
+ return;
190
+ }
191
+ if (g.json)
192
+ output(product, { json: true });
193
+ else
194
+ console.log(JSON.stringify(product, null, 2));
195
+ }
196
+ catch (err) {
197
+ const msg = err instanceof Error ? err.message : String(err);
198
+ if (g.json)
199
+ output({ error: { message: msg } }, { json: true });
200
+ else
201
+ console.error(chalk.red(`Failed: ${msg}`));
202
+ process.exit(1);
203
+ }
204
+ });
205
+ //# sourceMappingURL=seo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seo.js","sourceRoot":"","sources":["../../src/commands/seo.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forjio/storlaunch-cli",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "description": "Storlaunch CLI — seller tools (storefronts, inventory, shipping, ledger, reports, payouts, discount-codes, payments, webhooks) and buyer tools (shop, cart, orders, subs, invoices) in one CLI",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",