@tagadapay/node-sdk 1.0.0 → 1.1.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/Tagada.d.ts CHANGED
@@ -19,9 +19,11 @@ import { Plugins } from './resources/Plugins.js';
19
19
  import { Offers } from './resources/Offers.js';
20
20
  import { CheckoutOffers } from './resources/CheckoutOffers.js';
21
21
  import { EmailTemplates } from './resources/EmailTemplates.js';
22
+ import { ShippingRates } from './resources/ShippingRates.js';
22
23
  import { Partners } from './resources/Partners.js';
23
24
  import { PaymentSetup } from './resources/PaymentSetup.js';
24
25
  import { Threeds } from './resources/Threeds.js';
26
+ import { OnboardingClient, type OnboardingClientOptions } from './onboarding/OnboardingClient.js';
25
27
  /**
26
28
  * The Tagada Node.js SDK client.
27
29
  *
@@ -93,6 +95,15 @@ export declare class Tagada {
93
95
  readonly offers: Offers;
94
96
  readonly checkoutOffers: CheckoutOffers;
95
97
  readonly emailTemplates: EmailTemplates;
98
+ /**
99
+ * Shipping rates control which delivery options Tagada surfaces at
100
+ * checkout. Without at least one matching rate, checkout still works
101
+ * but the customer sees no delivery section. Required for stores that
102
+ * ship physical goods.
103
+ *
104
+ * @see {@link ShippingRates}
105
+ */
106
+ readonly shippingRates: ShippingRates;
96
107
  /**
97
108
  * Partner platform namespace. Used by partners (PSPs, marketplaces,
98
109
  * embedded-payments platforms) to provision and manage sub-merchants.
@@ -121,5 +132,37 @@ export declare class Tagada {
121
132
  */
122
133
  readonly threeds: Threeds;
123
134
  constructor(apiKeyOrOptions: string | TagadaClientOptions);
135
+ /**
136
+ * Returns a public, no-auth client for the **Tagada onboarding** flow.
137
+ * Use this to provision a fresh sandbox Tagada account from a CLI script
138
+ * *without* an API key — the verify call returns a key you can plug
139
+ * into `new Tagada(...)`.
140
+ *
141
+ * For an interactive experience, ship `tagada-init` (the bin shipped
142
+ * with this package) instead of writing your own prompt loop.
143
+ *
144
+ * Naming: the package is `@tagadapay/node-sdk` (the SDK for the
145
+ * TagadaPay payment processor), but the *account* you provision here
146
+ * is a **Tagada** account — the CRM / control-plane that hosts your
147
+ * stores, products, and processor configuration. The processor is
148
+ * one of several products available inside that account.
149
+ *
150
+ * @example
151
+ * ```ts
152
+ * import Tagada from '@tagadapay/node-sdk';
153
+ *
154
+ * const onb = Tagada.public();
155
+ * await onb.start({ email: 'me@example.com', source: 'cli' });
156
+ * const { apiKey } = await onb.verify({
157
+ * email: 'me@example.com',
158
+ * code: '384921',
159
+ * });
160
+ *
161
+ * const tagada = new Tagada(apiKey);
162
+ * ```
163
+ *
164
+ * @see {@link OnboardingClient}
165
+ */
166
+ static public(opts?: OnboardingClientOptions): OnboardingClient;
124
167
  }
125
168
  //# sourceMappingURL=Tagada.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tagada.d.ts","sourceRoot":"","sources":["../src/Tagada.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,qBAAa,MAAM;IACjB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAExC;;;;;;;;;OASG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAE5B;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAEpC;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;gBAEd,eAAe,EAAE,MAAM,GAAG,mBAAmB;CAiC1D"}
1
+ {"version":3,"file":"Tagada.d.ts","sourceRoot":"","sources":["../src/Tagada.ts"],"names":[],"mappings":"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"}
package/dist/Tagada.js CHANGED
@@ -19,9 +19,11 @@ import { Plugins } from './resources/Plugins.js';
19
19
  import { Offers } from './resources/Offers.js';
20
20
  import { CheckoutOffers } from './resources/CheckoutOffers.js';
21
21
  import { EmailTemplates } from './resources/EmailTemplates.js';
22
+ import { ShippingRates } from './resources/ShippingRates.js';
22
23
  import { Partners } from './resources/Partners.js';
23
24
  import { PaymentSetup } from './resources/PaymentSetup.js';
24
25
  import { Threeds } from './resources/Threeds.js';
26
+ import { OnboardingClient, } from './onboarding/OnboardingClient.js';
25
27
  /**
26
28
  * The Tagada Node.js SDK client.
27
29
  *
@@ -98,9 +100,44 @@ export class Tagada {
98
100
  this.offers = new Offers(client);
99
101
  this.checkoutOffers = new CheckoutOffers(client);
100
102
  this.emailTemplates = new EmailTemplates(client);
103
+ this.shippingRates = new ShippingRates(client);
101
104
  this.partners = new Partners(client);
102
105
  this.paymentSetup = new PaymentSetup(client);
103
106
  this.threeds = new Threeds(client);
104
107
  }
108
+ /**
109
+ * Returns a public, no-auth client for the **Tagada onboarding** flow.
110
+ * Use this to provision a fresh sandbox Tagada account from a CLI script
111
+ * *without* an API key — the verify call returns a key you can plug
112
+ * into `new Tagada(...)`.
113
+ *
114
+ * For an interactive experience, ship `tagada-init` (the bin shipped
115
+ * with this package) instead of writing your own prompt loop.
116
+ *
117
+ * Naming: the package is `@tagadapay/node-sdk` (the SDK for the
118
+ * TagadaPay payment processor), but the *account* you provision here
119
+ * is a **Tagada** account — the CRM / control-plane that hosts your
120
+ * stores, products, and processor configuration. The processor is
121
+ * one of several products available inside that account.
122
+ *
123
+ * @example
124
+ * ```ts
125
+ * import Tagada from '@tagadapay/node-sdk';
126
+ *
127
+ * const onb = Tagada.public();
128
+ * await onb.start({ email: 'me@example.com', source: 'cli' });
129
+ * const { apiKey } = await onb.verify({
130
+ * email: 'me@example.com',
131
+ * code: '384921',
132
+ * });
133
+ *
134
+ * const tagada = new Tagada(apiKey);
135
+ * ```
136
+ *
137
+ * @see {@link OnboardingClient}
138
+ */
139
+ static public(opts = {}) {
140
+ return new OnboardingClient(opts);
141
+ }
105
142
  }
106
143
  //# sourceMappingURL=Tagada.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tagada.js","sourceRoot":"","sources":["../src/Tagada.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Tagada.js","sourceRoot":"","sources":["../src/Tagada.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * `tagada-init [email]`
4
+ *
5
+ * Reachable as:
6
+ * - `npx -p @tagadapay/node-sdk tagada-init` (one-shot, no install)
7
+ * - `npx tagada-init` (after `npm i -D @tagadapay/node-sdk`)
8
+ * - `tagada-init` (after a global install)
9
+ *
10
+ * Interactive CLI that walks a developer through provisioning a fresh
11
+ * sandbox Tagada account in ~30 seconds:
12
+ *
13
+ * 1. Asks for an email (or accepts it as the first positional arg).
14
+ * 2. POSTs `/api/public/onboarding/start` to mail a 6-digit code.
15
+ * 3. Prompts the user to paste the code from their inbox.
16
+ * 4. POSTs `/api/public/onboarding/verify` to provision the account.
17
+ * 5. Writes the returned `apiKey` / `storeId` / `accountId` to a `.env`
18
+ * file in the current working directory (creating it if missing,
19
+ * appending non-conflicting keys if it exists).
20
+ * 6. Prints next steps.
21
+ *
22
+ * Flags:
23
+ * --base-url=<url> Override the API host (default https://api.tagada.io)
24
+ * --no-env Print the values instead of writing `.env`
25
+ * --env-file=<path> Custom path for the env file (default ./.env)
26
+ * --source=<tag> Acquisition source override (default 'cli')
27
+ *
28
+ * UTM forwarding: any `--utm-foo=bar` flag, plus matching `UTM_FOO` env
29
+ * vars, are bundled into the `utm` payload so attribution survives the
30
+ * jump from a docs link → terminal command.
31
+ *
32
+ * Naming note: the package is `@tagadapay/node-sdk` (the SDK to talk to
33
+ * the TagadaPay payment processor), but the *account* this command
34
+ * creates is a **Tagada** account (the CRM / control plane). Hence
35
+ * `tagada-init`, not `tagadapay-init`.
36
+ */
37
+ export {};
38
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG"}
@@ -0,0 +1,392 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * `tagada-init [email]`
4
+ *
5
+ * Reachable as:
6
+ * - `npx -p @tagadapay/node-sdk tagada-init` (one-shot, no install)
7
+ * - `npx tagada-init` (after `npm i -D @tagadapay/node-sdk`)
8
+ * - `tagada-init` (after a global install)
9
+ *
10
+ * Interactive CLI that walks a developer through provisioning a fresh
11
+ * sandbox Tagada account in ~30 seconds:
12
+ *
13
+ * 1. Asks for an email (or accepts it as the first positional arg).
14
+ * 2. POSTs `/api/public/onboarding/start` to mail a 6-digit code.
15
+ * 3. Prompts the user to paste the code from their inbox.
16
+ * 4. POSTs `/api/public/onboarding/verify` to provision the account.
17
+ * 5. Writes the returned `apiKey` / `storeId` / `accountId` to a `.env`
18
+ * file in the current working directory (creating it if missing,
19
+ * appending non-conflicting keys if it exists).
20
+ * 6. Prints next steps.
21
+ *
22
+ * Flags:
23
+ * --base-url=<url> Override the API host (default https://api.tagada.io)
24
+ * --no-env Print the values instead of writing `.env`
25
+ * --env-file=<path> Custom path for the env file (default ./.env)
26
+ * --source=<tag> Acquisition source override (default 'cli')
27
+ *
28
+ * UTM forwarding: any `--utm-foo=bar` flag, plus matching `UTM_FOO` env
29
+ * vars, are bundled into the `utm` payload so attribution survives the
30
+ * jump from a docs link → terminal command.
31
+ *
32
+ * Naming note: the package is `@tagadapay/node-sdk` (the SDK to talk to
33
+ * the TagadaPay payment processor), but the *account* this command
34
+ * creates is a **Tagada** account (the CRM / control plane). Hence
35
+ * `tagada-init`, not `tagadapay-init`.
36
+ */
37
+ import { promises as fs } from 'node:fs';
38
+ import { existsSync } from 'node:fs';
39
+ import path from 'node:path';
40
+ import readline from 'node:readline/promises';
41
+ import { stdin as input, stdout as output } from 'node:process';
42
+ import { OnboardingClient, OnboardingError, } from '../onboarding/OnboardingClient.js';
43
+ function parseArgs(argv) {
44
+ const out = {
45
+ envFile: '.env',
46
+ writeEnv: true,
47
+ source: 'cli',
48
+ utm: {},
49
+ help: false,
50
+ };
51
+ for (const raw of argv) {
52
+ if (raw === '--help' || raw === '-h') {
53
+ out.help = true;
54
+ continue;
55
+ }
56
+ if (raw === '--no-env') {
57
+ out.writeEnv = false;
58
+ continue;
59
+ }
60
+ const eq = raw.indexOf('=');
61
+ if (raw.startsWith('--')) {
62
+ const key = eq === -1 ? raw.slice(2) : raw.slice(2, eq);
63
+ const value = eq === -1 ? 'true' : raw.slice(eq + 1);
64
+ if (key === 'base-url')
65
+ out.baseUrl = value;
66
+ else if (key === 'env-file')
67
+ out.envFile = value;
68
+ else if (key === 'source')
69
+ out.source = value;
70
+ else if (key.startsWith('utm-')) {
71
+ // --utm-source=docs → utm.utm_source = 'docs'
72
+ out.utm[`utm_${key.slice(4).replace(/-/g, '_')}`] = value;
73
+ }
74
+ continue;
75
+ }
76
+ // First positional = email.
77
+ if (!out.email)
78
+ out.email = raw;
79
+ }
80
+ // Pull UTMs from env vars too (so wrapper scripts can set them once).
81
+ for (const [k, v] of Object.entries(process.env)) {
82
+ if (k.startsWith('UTM_') && typeof v === 'string' && v.length > 0) {
83
+ const key = k.toLowerCase();
84
+ if (!(key in out.utm))
85
+ out.utm[key] = v;
86
+ }
87
+ }
88
+ return out;
89
+ }
90
+ function printHelp() {
91
+ console.log(`
92
+ tagada-init — provision a fresh sandbox Tagada account from your terminal.
93
+
94
+ Verifies your email with a 6-digit code, creates a Tagada account
95
+ (Clerk user + org), provisions a demo-seeded store with sandbox
96
+ processor + payment flow + funnel, and writes the API key to \`.env\`.
97
+
98
+ Usage:
99
+ npx -p @tagadapay/node-sdk tagada-init [email] [flags]
100
+ npx tagada-init [email] [flags] # after npm i @tagadapay/node-sdk
101
+
102
+ Examples:
103
+ npx -p @tagadapay/node-sdk tagada-init you@example.com
104
+ npx tagada-init you@example.com --utm-source=docs --utm-campaign=cli
105
+ npx tagada-init --base-url=http://localhost:3000 # local dev
106
+
107
+ Flags:
108
+ --base-url=<url> API host (default https://api.tagada.io)
109
+ --env-file=<path> Where to write the API key (default ./.env)
110
+ --no-env Print credentials instead of writing them
111
+ --source=<tag> Acquisition source (default cli)
112
+ --utm-<name>=<val> Forward UTM params (e.g. --utm-source=docs)
113
+ --help, -h Show this message
114
+ `.trim());
115
+ }
116
+ async function prompt(rl, message) {
117
+ const answer = await rl.question(message);
118
+ return answer.trim();
119
+ }
120
+ function isLikelyEmail(s) {
121
+ return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(s);
122
+ }
123
+ async function readExistingEnv(filePath) {
124
+ const map = new Map();
125
+ if (!existsSync(filePath))
126
+ return map;
127
+ const content = await fs.readFile(filePath, 'utf8');
128
+ for (const line of content.split('\n')) {
129
+ const trimmed = line.trim();
130
+ if (!trimmed || trimmed.startsWith('#'))
131
+ continue;
132
+ const eq = trimmed.indexOf('=');
133
+ if (eq === -1)
134
+ continue;
135
+ map.set(trimmed.slice(0, eq).trim(), trimmed.slice(eq + 1));
136
+ }
137
+ return map;
138
+ }
139
+ /**
140
+ * Append `additions` to `filePath`, preserving anything already there.
141
+ * Existing keys with the same name are commented out (not overwritten),
142
+ * so users can see what changed without losing their previous values.
143
+ */
144
+ async function writeEnvFile(filePath, additions) {
145
+ const existing = await readExistingEnv(filePath);
146
+ const conflicts = [];
147
+ for (const k of Object.keys(additions)) {
148
+ if (existing.has(k))
149
+ conflicts.push(k);
150
+ }
151
+ let prior = '';
152
+ if (existsSync(filePath)) {
153
+ prior = await fs.readFile(filePath, 'utf8');
154
+ if (!prior.endsWith('\n'))
155
+ prior += '\n';
156
+ // Comment out any conflicting keys so we don't shadow them silently.
157
+ for (const k of conflicts) {
158
+ prior = prior.replace(new RegExp(`^${escapeRegex(k)}=.*$`, 'm'), `# ${k}= (replaced by tagadapay init on ${new Date().toISOString()})`);
159
+ }
160
+ }
161
+ const block = [
162
+ '',
163
+ '# Provisioned by `npx @tagadapay/node-sdk init`',
164
+ `# ${new Date().toISOString()}`,
165
+ ...Object.entries(additions).map(([k, v]) => `${k}=${v}`),
166
+ '',
167
+ ].join('\n');
168
+ await fs.writeFile(filePath, prior + block, 'utf8');
169
+ }
170
+ function escapeRegex(s) {
171
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
172
+ }
173
+ /**
174
+ * Look at the cwd and decide which frameworks the user is targeting so we
175
+ * can mirror the canonical `TAGADA_*` env vars under the prefix that
176
+ * framework actually exposes to the browser. We do this purely from
177
+ * filesystem signals (config files + dependency manifests) — no
178
+ * `require()` of user code.
179
+ *
180
+ * Multiple matches are possible (e.g. an Astro site that uses Vite under
181
+ * the hood). We return all of them; the caller writes one prefix per
182
+ * framework.
183
+ */
184
+ async function detectFrameworks(cwd) {
185
+ const found = new Set();
186
+ const has = (rel) => existsSync(path.join(cwd, rel));
187
+ if (has('vite.config.ts') ||
188
+ has('vite.config.js') ||
189
+ has('vite.config.mjs') ||
190
+ has('vite.config.cjs')) {
191
+ found.add('vite');
192
+ }
193
+ if (has('next.config.ts') ||
194
+ has('next.config.js') ||
195
+ has('next.config.mjs') ||
196
+ has('next.config.cjs')) {
197
+ found.add('next');
198
+ }
199
+ if (has('astro.config.ts') ||
200
+ has('astro.config.js') ||
201
+ has('astro.config.mjs')) {
202
+ found.add('astro');
203
+ }
204
+ // Fallback to package.json sniffing for projects that omit a config file.
205
+ if (found.size === 0 && has('package.json')) {
206
+ try {
207
+ const pkg = JSON.parse(await fs.readFile(path.join(cwd, 'package.json'), 'utf8'));
208
+ const deps = {
209
+ ...(pkg.dependencies ?? {}),
210
+ ...(pkg.devDependencies ?? {}),
211
+ };
212
+ if (deps.vite)
213
+ found.add('vite');
214
+ if (deps.next)
215
+ found.add('next');
216
+ if (deps.astro)
217
+ found.add('astro');
218
+ }
219
+ catch {
220
+ /* ignore unreadable package.json */
221
+ }
222
+ }
223
+ return [...found];
224
+ }
225
+ async function main() {
226
+ const args = parseArgs(process.argv.slice(2));
227
+ if (args.help) {
228
+ printHelp();
229
+ return 0;
230
+ }
231
+ const rl = readline.createInterface({ input, output });
232
+ try {
233
+ // ─── Step 1: collect email ────────────────────────────────────────
234
+ let email = args.email;
235
+ while (!email || !isLikelyEmail(email)) {
236
+ if (email) {
237
+ console.error(`✗ '${email}' doesn't look like a valid email.`);
238
+ }
239
+ email = await prompt(rl, 'Email: ');
240
+ }
241
+ email = email.toLowerCase();
242
+ const client = new OnboardingClient({ baseUrl: args.baseUrl });
243
+ // ─── Step 2: send the code ────────────────────────────────────────
244
+ process.stdout.write(`→ Sending verification code to ${email}... `);
245
+ try {
246
+ await client.start({
247
+ email,
248
+ source: args.source,
249
+ utm: Object.keys(args.utm).length > 0 ? args.utm : undefined,
250
+ });
251
+ }
252
+ catch (err) {
253
+ process.stdout.write('\n');
254
+ return handleOnboardingError(err);
255
+ }
256
+ console.log('✓');
257
+ // ─── Step 3: prompt for code ──────────────────────────────────────
258
+ let code = '';
259
+ let verifyResult;
260
+ for (let attempt = 0; attempt < 5; attempt++) {
261
+ code = await prompt(rl, 'Code (6 digits): ');
262
+ if (!/^\d{6}$/.test(code)) {
263
+ console.error('✗ The code must be exactly 6 digits.');
264
+ continue;
265
+ }
266
+ try {
267
+ process.stdout.write('→ Provisioning account... ');
268
+ verifyResult = await client.verify({
269
+ email,
270
+ code,
271
+ source: args.source,
272
+ utm: Object.keys(args.utm).length > 0 ? args.utm : undefined,
273
+ });
274
+ console.log('✓');
275
+ break;
276
+ }
277
+ catch (err) {
278
+ process.stdout.write('\n');
279
+ if (err instanceof OnboardingError && err.code === 'invalid_code') {
280
+ console.error('✗ Wrong code. Try again.');
281
+ continue;
282
+ }
283
+ return handleOnboardingError(err);
284
+ }
285
+ }
286
+ if (!verifyResult) {
287
+ console.error('✗ Too many failed attempts. Run `tagada-init` again to get a fresh code.');
288
+ return 1;
289
+ }
290
+ // ─── Step 4: persist credentials ──────────────────────────────────
291
+ // Always write canonical TAGADA_* (used by Node/server scripts), and
292
+ // additionally mirror to framework-prefixed vars so the frontend can
293
+ // read them without a config rename. We only mirror the storeId +
294
+ // environment (browser-safe); the apiKey stays server-only.
295
+ const additions = {
296
+ TAGADA_API_KEY: verifyResult.apiKey,
297
+ TAGADA_STORE_ID: verifyResult.storeId,
298
+ TAGADA_ACCOUNT_ID: verifyResult.accountId,
299
+ };
300
+ const frameworks = await detectFrameworks(process.cwd());
301
+ if (frameworks.includes('vite')) {
302
+ additions.VITE_STORE_ID = verifyResult.storeId;
303
+ additions.VITE_ENVIRONMENT = 'production';
304
+ }
305
+ if (frameworks.includes('next')) {
306
+ additions.NEXT_PUBLIC_TAGADA_STORE_ID = verifyResult.storeId;
307
+ additions.NEXT_PUBLIC_TAGADA_ENVIRONMENT = 'production';
308
+ }
309
+ if (frameworks.includes('astro')) {
310
+ additions.PUBLIC_TAGADA_STORE_ID = verifyResult.storeId;
311
+ additions.PUBLIC_TAGADA_ENVIRONMENT = 'production';
312
+ }
313
+ if (args.writeEnv) {
314
+ const fullPath = path.resolve(process.cwd(), args.envFile);
315
+ await writeEnvFile(fullPath, additions);
316
+ const frameworksHint = frameworks.length
317
+ ? ` (with ${frameworks.join(' + ')} mirrored vars)`
318
+ : '';
319
+ console.log(`✓ Wrote credentials to ${path.relative(process.cwd(), fullPath) || args.envFile}${frameworksHint}`);
320
+ }
321
+ else {
322
+ console.log('\nCredentials (copy into your environment):');
323
+ for (const [k, v] of Object.entries(additions)) {
324
+ console.log(` ${k}=${v}`);
325
+ }
326
+ }
327
+ // ─── Step 5: next steps ───────────────────────────────────────────
328
+ console.log(`
329
+ Done. Your sandbox account is ready.
330
+
331
+ Account: ${verifyResult.accountId}
332
+ Store: ${verifyResult.storeId}
333
+ Org: ${verifyResult.orgSlug ?? verifyResult.clerkOrgId}
334
+
335
+ Demo products, payment flow, and funnel are seeding in the background
336
+ (typically <30s). You can already run your dev server — the catalog will
337
+ populate as the seed completes.
338
+
339
+ Next:
340
+ 1. cd into your TagadaPay app (e.g. examples/headless-react-store)
341
+ 2. pnpm install
342
+ 3. pnpm dev
343
+ `);
344
+ return 0;
345
+ }
346
+ finally {
347
+ rl.close();
348
+ }
349
+ }
350
+ function handleOnboardingError(err) {
351
+ if (err instanceof OnboardingError) {
352
+ switch (err.code) {
353
+ case 'rate_limited':
354
+ console.error(`✗ Rate limited. ${err.message}`);
355
+ if (err.resetAt) {
356
+ console.error(` Try again after ${err.resetAt.toLocaleTimeString()}.`);
357
+ }
358
+ return 2;
359
+ case 'email_send_failed':
360
+ console.error(`✗ Could not send the verification email. ${err.message}`);
361
+ console.error(' Try a different email or retry in a few minutes.');
362
+ return 3;
363
+ case 'expired':
364
+ case 'no_pending_code':
365
+ console.error(`✗ ${err.message}`);
366
+ return 4;
367
+ case 'too_many_attempts':
368
+ console.error(`✗ ${err.message}`);
369
+ return 5;
370
+ case 'invalid_request':
371
+ console.error(`✗ Invalid request: ${err.message}`);
372
+ return 6;
373
+ case 'provisioning_failed':
374
+ console.error(`✗ Provisioning failed: ${err.message}`);
375
+ console.error(' This usually clears up after a retry. Run `tagada-init` again.');
376
+ return 7;
377
+ case 'network_error':
378
+ console.error(`✗ Network error: ${err.message}`);
379
+ return 8;
380
+ default:
381
+ console.error(`✗ ${err.message}`);
382
+ return 9;
383
+ }
384
+ }
385
+ console.error('✗ Unexpected error:', err);
386
+ return 99;
387
+ }
388
+ main().then((code) => process.exit(code), (err) => {
389
+ console.error('✗ Fatal error:', err);
390
+ process.exit(99);
391
+ });
392
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}