affitor 0.3.0 → 0.4.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.
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/onboard.d.ts +21 -0
- package/dist/commands/onboard.d.ts.map +1 -0
- package/dist/commands/onboard.js +401 -0
- package/dist/commands/onboard.js.map +1 -0
- package/dist/lib/api-client.d.ts +25 -1
- package/dist/lib/api-client.d.ts.map +1 -1
- package/dist/lib/api-client.js +69 -2
- package/dist/lib/api-client.js.map +1 -1
- package/dist/lib/config.js +2 -2
- package/dist/lib/inject.d.ts +44 -0
- package/dist/lib/inject.d.ts.map +1 -1
- package/dist/lib/inject.js +115 -3
- package/dist/lib/inject.js.map +1 -1
- package/dist/lib/server-tracking.d.ts +6 -2
- package/dist/lib/server-tracking.d.ts.map +1 -1
- package/dist/lib/server-tracking.js +20 -38
- package/dist/lib/server-tracking.js.map +1 -1
- package/dist/lib/stack-detect.d.ts +12 -4
- package/dist/lib/stack-detect.d.ts.map +1 -1
- package/dist/lib/stack-detect.js +67 -2
- package/dist/lib/stack-detect.js.map +1 -1
- package/dist/lib/webhook-detect.d.ts +21 -0
- package/dist/lib/webhook-detect.d.ts.map +1 -0
- package/dist/lib/webhook-detect.js +111 -0
- package/dist/lib/webhook-detect.js.map +1 -0
- package/dist/lib/wizard.d.ts +1 -1
- package/dist/lib/wizard.d.ts.map +1 -1
- package/dist/lib/wizard.js +37 -13
- package/dist/lib/wizard.js.map +1 -1
- package/dist/types.d.ts +77 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +4 -3
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Framework } from "./stack-detect.js";
|
|
2
|
+
export interface StripeWebhookLocation {
|
|
3
|
+
/** Path to the file containing the call, relative to projectRoot. */
|
|
4
|
+
file: string;
|
|
5
|
+
/** 1-based line number of the `constructEvent` call. */
|
|
6
|
+
line: number;
|
|
7
|
+
/** Framework the hint is tailored for (falls back to "unknown"). */
|
|
8
|
+
framework: Framework | "unknown";
|
|
9
|
+
/** Human-readable description of where to inject the trackSale call. */
|
|
10
|
+
handlerHint: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Scan the project source for the canonical Stripe webhook-verification call and
|
|
14
|
+
* return its location + a framework-tailored injection hint. Returns null when
|
|
15
|
+
* no match is found (caller falls back to printing a generic snippet).
|
|
16
|
+
*
|
|
17
|
+
* @param projectRoot Absolute path to the project to scan.
|
|
18
|
+
* @param framework Detected framework, used to tailor the hint (default "unknown").
|
|
19
|
+
*/
|
|
20
|
+
export declare function detectStripeWebhook(projectRoot: string, framework?: Framework | "unknown"): StripeWebhookLocation | null;
|
|
21
|
+
//# sourceMappingURL=webhook-detect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-detect.d.ts","sourceRoot":"","sources":["../../src/lib/webhook-detect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AA8BnD,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IACjC,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;CACrB;AAoDD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,SAAS,GAAG,SAAqB,GAC3C,qBAAqB,GAAG,IAAI,CAyB9B"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { readdirSync, readFileSync, statSync } from "node:fs";
|
|
2
|
+
import { join, relative } from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Webhook-locator: finds where an advertiser already verifies Stripe webhooks
|
|
5
|
+
* so the wizard can point the agent at the exact injection site for trackSale.
|
|
6
|
+
*
|
|
7
|
+
* The canonical Stripe webhook-verification call is `stripe.webhooks.constructEvent`
|
|
8
|
+
* (Node SDK). When we find it, the conversion-tracking call belongs right after
|
|
9
|
+
* it — the event has been verified and parsed at that point. Dependency-light: a
|
|
10
|
+
* plain fs walk, no globbing libs. Returns null when not found so the caller
|
|
11
|
+
* falls back to printing a snippet.
|
|
12
|
+
*/
|
|
13
|
+
/** The canonical Stripe webhook signature-verification call (Node SDK). */
|
|
14
|
+
const STRIPE_WEBHOOK_NEEDLE = "stripe.webhooks.constructEvent";
|
|
15
|
+
const IGNORED_DIRS = new Set([
|
|
16
|
+
"node_modules",
|
|
17
|
+
".git",
|
|
18
|
+
"dist",
|
|
19
|
+
".next",
|
|
20
|
+
"build",
|
|
21
|
+
"coverage",
|
|
22
|
+
".turbo",
|
|
23
|
+
".vercel",
|
|
24
|
+
]);
|
|
25
|
+
/** Source extensions worth scanning (skip binaries, maps, lockfiles, etc.). */
|
|
26
|
+
const SOURCE_EXTENSIONS = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"];
|
|
27
|
+
function isSourceFile(name) {
|
|
28
|
+
return SOURCE_EXTENSIONS.some((ext) => name.endsWith(ext));
|
|
29
|
+
}
|
|
30
|
+
/** Collect candidate source files under `dir`, skipping vendored/build dirs. */
|
|
31
|
+
function collectSourceFiles(dir, out) {
|
|
32
|
+
let entries;
|
|
33
|
+
try {
|
|
34
|
+
entries = readdirSync(dir, { withFileTypes: false });
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return; // unreadable dir — skip
|
|
38
|
+
}
|
|
39
|
+
for (const name of entries) {
|
|
40
|
+
const full = join(dir, name);
|
|
41
|
+
let stat;
|
|
42
|
+
try {
|
|
43
|
+
stat = statSync(full);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
continue; // broken symlink, etc.
|
|
47
|
+
}
|
|
48
|
+
if (stat.isDirectory()) {
|
|
49
|
+
if (IGNORED_DIRS.has(name) || name.startsWith("."))
|
|
50
|
+
continue;
|
|
51
|
+
collectSourceFiles(full, out);
|
|
52
|
+
}
|
|
53
|
+
else if (stat.isFile() && isSourceFile(name)) {
|
|
54
|
+
out.push(full);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Tailor the injection-point hint to the detected framework. The trackSale call
|
|
60
|
+
* always goes *after* constructEvent (the event is verified + parsed there).
|
|
61
|
+
*/
|
|
62
|
+
function handlerHintFor(framework) {
|
|
63
|
+
switch (framework) {
|
|
64
|
+
case "fastify":
|
|
65
|
+
return "inside the fastify.post('/webhooks/stripe', …) handler, right after constructEvent verifies the event";
|
|
66
|
+
case "express":
|
|
67
|
+
return "after constructEvent in the app.post('/webhooks/stripe', …) Express handler";
|
|
68
|
+
case "next-app":
|
|
69
|
+
return "in app/api/webhooks/stripe/route.ts, in the POST handler after constructEvent";
|
|
70
|
+
case "next-pages":
|
|
71
|
+
return "in pages/api/webhooks/stripe.ts, after constructEvent in the API route handler";
|
|
72
|
+
case "node":
|
|
73
|
+
return "after constructEvent in your Stripe webhook HTTP handler";
|
|
74
|
+
default:
|
|
75
|
+
return "after constructEvent, where you handle the verified Stripe webhook event";
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Scan the project source for the canonical Stripe webhook-verification call and
|
|
80
|
+
* return its location + a framework-tailored injection hint. Returns null when
|
|
81
|
+
* no match is found (caller falls back to printing a generic snippet).
|
|
82
|
+
*
|
|
83
|
+
* @param projectRoot Absolute path to the project to scan.
|
|
84
|
+
* @param framework Detected framework, used to tailor the hint (default "unknown").
|
|
85
|
+
*/
|
|
86
|
+
export function detectStripeWebhook(projectRoot, framework = "unknown") {
|
|
87
|
+
const files = [];
|
|
88
|
+
collectSourceFiles(projectRoot, files);
|
|
89
|
+
for (const file of files) {
|
|
90
|
+
let content;
|
|
91
|
+
try {
|
|
92
|
+
content = readFileSync(file, "utf8");
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
continue; // unreadable file — skip
|
|
96
|
+
}
|
|
97
|
+
const idx = content.indexOf(STRIPE_WEBHOOK_NEEDLE);
|
|
98
|
+
if (idx === -1)
|
|
99
|
+
continue;
|
|
100
|
+
// 1-based line number of the first occurrence.
|
|
101
|
+
const line = content.slice(0, idx).split("\n").length;
|
|
102
|
+
return {
|
|
103
|
+
file: relative(projectRoot, file),
|
|
104
|
+
line,
|
|
105
|
+
framework,
|
|
106
|
+
handlerHint: handlerHintFor(framework),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=webhook-detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook-detect.js","sourceRoot":"","sources":["../../src/lib/webhook-detect.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/wizard.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export interface WizardOptions {
|
|
|
5
5
|
autoConfirm: boolean;
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
|
-
* Auto-install wizard: detect the stack, install affitor
|
|
8
|
+
* Auto-install wizard: detect the stack, install @affitor/sdk, create the
|
|
9
9
|
* tracker component, and wire it into the app entry — with a diff preview and
|
|
10
10
|
* confirmation. Never edits auth/checkout code (signup() is printed as a
|
|
11
11
|
* snippet). Any failure degrades gracefully to printed instructions.
|
package/dist/lib/wizard.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../src/lib/wizard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../src/lib/wizard.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;CACtB;AAiBD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DzE"}
|
package/dist/lib/wizard.js
CHANGED
|
@@ -7,8 +7,11 @@ import { confirmAction } from "./prompts.js";
|
|
|
7
7
|
import { detectStack } from "./stack-detect.js";
|
|
8
8
|
import { injectAppLayout, injectPagesApp, trackerComponentSource } from "./inject.js";
|
|
9
9
|
import { affitorClientSource, detectPaymentProvider, serverTrackingSnippets, } from "./server-tracking.js";
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
import { detectStripeWebhook } from "./webhook-detect.js";
|
|
11
|
+
// One consolidated package covers browser + server via subpaths:
|
|
12
|
+
// `@affitor/sdk` (init/signup), `@affitor/sdk/react` (AffitorProvider),
|
|
13
|
+
// `@affitor/sdk/server` (Affitor class). Install it once.
|
|
14
|
+
const SDK_PACKAGE = "@affitor/sdk";
|
|
12
15
|
function rel(cwd, p) {
|
|
13
16
|
return relative(cwd, p) || basename(p);
|
|
14
17
|
}
|
|
@@ -23,7 +26,7 @@ function installCommand(pm, pkg) {
|
|
|
23
26
|
}
|
|
24
27
|
}
|
|
25
28
|
/**
|
|
26
|
-
* Auto-install wizard: detect the stack, install affitor
|
|
29
|
+
* Auto-install wizard: detect the stack, install @affitor/sdk, create the
|
|
27
30
|
* tracker component, and wire it into the app entry — with a diff preview and
|
|
28
31
|
* confirmation. Never edits auth/checkout code (signup() is printed as a
|
|
29
32
|
* snippet). Any failure degrades gracefully to printed instructions.
|
|
@@ -36,12 +39,15 @@ export async function runInstallWizard(opts) {
|
|
|
36
39
|
` Installer: ${format.cyan(stack.packageManager)}`,
|
|
37
40
|
"",
|
|
38
41
|
]);
|
|
39
|
-
// ── Browser tracking (affitor
|
|
42
|
+
// ── Browser tracking (@affitor/sdk) — click capture ──
|
|
43
|
+
// `@affitor/sdk` is one package covering browser + server (via the /server
|
|
44
|
+
// subpath); installing it here also satisfies the server-side step below.
|
|
45
|
+
let sdkInstalled = false;
|
|
40
46
|
if (stack.framework === "unknown" || !stack.entryFile || !stack.componentDir) {
|
|
41
47
|
logger.step("Framework not auto-detectable — add the browser tracker manually:");
|
|
42
48
|
printScriptTagInstructions(opts);
|
|
43
49
|
}
|
|
44
|
-
else if (!(await installPackage(stack.packageManager, opts.cwd, SDK_PACKAGE, opts.autoConfirm))) {
|
|
50
|
+
else if (!(sdkInstalled = await installPackage(stack.packageManager, opts.cwd, SDK_PACKAGE, opts.autoConfirm))) {
|
|
45
51
|
logger.warn(`Skipped/failed installing ${SDK_PACKAGE} — use the script tag instead:`);
|
|
46
52
|
printScriptTagInstructions(opts);
|
|
47
53
|
}
|
|
@@ -81,18 +87,22 @@ export async function runInstallWizard(opts) {
|
|
|
81
87
|
}
|
|
82
88
|
}
|
|
83
89
|
}
|
|
84
|
-
// ── Server-side conversion (affitor
|
|
85
|
-
//
|
|
86
|
-
|
|
90
|
+
// ── Server-side conversion (@affitor/sdk/server) — lead binding + sale ──
|
|
91
|
+
// Scaffold the client + print guided snippets. The Affitor class ships in the
|
|
92
|
+
// same `@affitor/sdk` package (via /server), so reuse the browser install
|
|
93
|
+
// above — never run a second `npm install`. Never edits auth/payment code.
|
|
94
|
+
await setupServerTracking(opts, stack.packageManager, sdkInstalled, stack.framework);
|
|
87
95
|
}
|
|
88
|
-
async function setupServerTracking(opts, pm) {
|
|
96
|
+
async function setupServerTracking(opts, pm, sdkInstalled, framework) {
|
|
89
97
|
const provider = detectPaymentProvider(opts.cwd);
|
|
90
|
-
logger.titledBox("Server-side conversion (affitor
|
|
98
|
+
logger.titledBox("Server-side conversion (@affitor/sdk/server)", [
|
|
91
99
|
"",
|
|
92
100
|
` Payment provider: ${provider === "unknown" ? format.yellow("not detected") : format.green(provider)}`,
|
|
93
101
|
"",
|
|
94
102
|
]);
|
|
95
|
-
|
|
103
|
+
// `@affitor/sdk` is one package (browser + server). Install it only if the
|
|
104
|
+
// browser step didn't already — otherwise dedupe and reuse it.
|
|
105
|
+
const installed = sdkInstalled || (await installPackage(pm, opts.cwd, SDK_PACKAGE, opts.autoConfirm));
|
|
96
106
|
if (installed) {
|
|
97
107
|
const clientDir = existsSync(join(opts.cwd, "src")) ? join(opts.cwd, "src", "lib") : join(opts.cwd, "lib");
|
|
98
108
|
const clientPath = join(clientDir, "affitor.ts");
|
|
@@ -106,8 +116,22 @@ async function setupServerTracking(opts, pm) {
|
|
|
106
116
|
}
|
|
107
117
|
}
|
|
108
118
|
else {
|
|
109
|
-
const { cmd, args } = installCommand(pm,
|
|
110
|
-
logger.warn(`Skipped/failed installing ${
|
|
119
|
+
const { cmd, args } = installCommand(pm, SDK_PACKAGE);
|
|
120
|
+
logger.warn(`Skipped/failed installing ${SDK_PACKAGE} — install it when ready: ${cmd} ${args.join(" ")}`);
|
|
121
|
+
}
|
|
122
|
+
// If they already verify Stripe webhooks somewhere, point at the exact site
|
|
123
|
+
// (the trackSale call belongs right after constructEvent). Best-effort hint —
|
|
124
|
+
// we still print the full snippets below as the canonical reference.
|
|
125
|
+
if (provider === "stripe") {
|
|
126
|
+
const hook = detectStripeWebhook(opts.cwd, framework);
|
|
127
|
+
if (hook) {
|
|
128
|
+
logger.titledBox("Found your Stripe webhook handler", [
|
|
129
|
+
"",
|
|
130
|
+
` ${format.green(`${hook.file}:${hook.line}`)} ${format.dim("(stripe.webhooks.constructEvent)")}`,
|
|
131
|
+
` ${format.dim(`→ add trackSale ${hook.handlerHint}`)}`,
|
|
132
|
+
"",
|
|
133
|
+
]);
|
|
134
|
+
}
|
|
111
135
|
}
|
|
112
136
|
printServerSnippets(serverTrackingSnippets(provider));
|
|
113
137
|
}
|
package/dist/lib/wizard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../src/lib/wizard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAuC,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../src/lib/wizard.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -85,6 +85,83 @@ export interface TestEventResult {
|
|
|
85
85
|
attributed: boolean;
|
|
86
86
|
message: string;
|
|
87
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Per-step status of the synthetic click→lead→sale chain, as returned by the CMS
|
|
90
|
+
* (`TestChainStatus`). A step is "passing" ONLY when it equals `'attributed'`;
|
|
91
|
+
* every other value (`unattributed`/`wrong_partner`/`pending`) is a failure or
|
|
92
|
+
* not-yet-resolved state and must NOT be rendered as success.
|
|
93
|
+
*/
|
|
94
|
+
export type TestChainStatus = "attributed" | "unattributed" | "wrong_partner" | "pending";
|
|
95
|
+
/** The keyed gate id set returned by readiness (the CMS `ReadinessResult.gates`). */
|
|
96
|
+
export type ReadinessGateId = "profile" | "economics" | "payout" | "tracking" | "live";
|
|
97
|
+
/** The mode the payout gate reports. */
|
|
98
|
+
export type PayoutMode = "stripe" | "s2s" | "manual";
|
|
99
|
+
/**
|
|
100
|
+
* A single readiness gate verdict from GET /api/v1/programs/me/readiness.
|
|
101
|
+
* `status` is the tri-state the CMS returns; `next_action` (when present) tells
|
|
102
|
+
* the caller what to fix to move the gate to `'pass'`.
|
|
103
|
+
*/
|
|
104
|
+
export interface ReadinessGate {
|
|
105
|
+
status: "pass" | "fail" | "unknown";
|
|
106
|
+
next_action?: string;
|
|
107
|
+
/** payout gate only. */
|
|
108
|
+
mode?: PayoutMode;
|
|
109
|
+
endpoint?: string;
|
|
110
|
+
/** tracking gate only. */
|
|
111
|
+
detail?: string;
|
|
112
|
+
checked_at?: string;
|
|
113
|
+
/** live gate only — per-step verdict of the last synthetic chain. */
|
|
114
|
+
test_chain?: {
|
|
115
|
+
click: TestChainStatus;
|
|
116
|
+
lead: TestChainStatus;
|
|
117
|
+
sale: TestChainStatus;
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* GET /api/v1/programs/me/readiness verdict. `gates` is a KEYED OBJECT (NOT an
|
|
122
|
+
* array): each gate has a tri-state `status`. `integration_verified` flips true
|
|
123
|
+
* once every gate passes; `blocker` is the id of the FIRST failing gate (or
|
|
124
|
+
* `null`), so the CLI reads `gates[blocker].next_action` to tell the user what
|
|
125
|
+
* to fix. Mirrors the CMS `ReadinessResult` shape exactly.
|
|
126
|
+
*/
|
|
127
|
+
export interface ReadinessResult {
|
|
128
|
+
integration_verified: boolean;
|
|
129
|
+
state?: string;
|
|
130
|
+
gates?: Partial<Record<ReadinessGateId, ReadinessGate>>;
|
|
131
|
+
blocker?: ReadinessGateId | null;
|
|
132
|
+
poll?: {
|
|
133
|
+
retry_after_seconds: number;
|
|
134
|
+
};
|
|
135
|
+
[key: string]: unknown;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Result of the synthetic verification chain (POST /api/v1/cli/test-event
|
|
139
|
+
* {type:'chain'}). On a 2xx the server returns `{ data: { type:'chain',
|
|
140
|
+
* short_code, customer_key, verdict, attributed } }`. Each verdict value is a
|
|
141
|
+
* `TestChainStatus` STRING (not a boolean); `attributed === (verdict.sale ===
|
|
142
|
+
* 'attributed')`. On a 429 the client returns the parsed rate-limit body instead
|
|
143
|
+
* of throwing, so the caller can read `retry_after_seconds` and back off.
|
|
144
|
+
*/
|
|
145
|
+
export interface VerificationVerdict {
|
|
146
|
+
click?: TestChainStatus;
|
|
147
|
+
lead?: TestChainStatus;
|
|
148
|
+
sale?: TestChainStatus;
|
|
149
|
+
}
|
|
150
|
+
export interface VerificationChainResult {
|
|
151
|
+
type?: "chain";
|
|
152
|
+
short_code?: string;
|
|
153
|
+
customer_key?: string;
|
|
154
|
+
verdict?: VerificationVerdict;
|
|
155
|
+
attributed?: boolean;
|
|
156
|
+
rate_limited?: boolean;
|
|
157
|
+
retry_after_seconds?: number;
|
|
158
|
+
error?: {
|
|
159
|
+
code?: string;
|
|
160
|
+
retry_after_seconds?: number;
|
|
161
|
+
message?: string;
|
|
162
|
+
};
|
|
163
|
+
[key: string]: unknown;
|
|
164
|
+
}
|
|
88
165
|
export interface CLIFlags {
|
|
89
166
|
json: boolean;
|
|
90
167
|
noInteractive: boolean;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA0LA,MAAM,CAAC,MAAM,YAAY,GAAG,yBAAyB,CAAC;AACtD,MAAM,CAAC,MAAM,WAAW,GAAG,yCAAyC,CAAC;AACrE,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC;AAC5C,MAAM,CAAC,MAAM,UAAU,GAAG,UAAU,CAAC;AACrC,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC;AACzC,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC;AACnC,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AACnD,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAC9C,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAExC,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,kBAAkB;IAClB,4BAA4B;IAC5B,cAAc;IACd,wBAAwB;IACxB,iBAAiB;IACjB,+BAA+B;CACvB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "affitor",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "CLI-native affiliate tracking. Connect Stripe, track commissions, manage partners — all from your terminal.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"license": "MIT",
|
|
31
31
|
"repository": {
|
|
32
32
|
"type": "git",
|
|
33
|
-
"url": "https://github.com/Affitor/
|
|
33
|
+
"url": "https://github.com/Affitor/cli"
|
|
34
34
|
},
|
|
35
35
|
"homepage": "https://affitor.com",
|
|
36
36
|
"engines": {
|
|
@@ -44,7 +44,8 @@
|
|
|
44
44
|
"@inquirer/prompts": "^7.5.0",
|
|
45
45
|
"picocolors": "^1.1.1",
|
|
46
46
|
"open": "^10.1.0",
|
|
47
|
-
"stripe": "^17.7.0"
|
|
47
|
+
"stripe": "^17.7.0",
|
|
48
|
+
"@affitor/recipes": "^0.1.0"
|
|
48
49
|
},
|
|
49
50
|
"devDependencies": {
|
|
50
51
|
"typescript": "^5.7.0",
|