@huloglobal/vendure-plugin-visitor-analytics 0.17.2 → 0.18.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/CHANGELOG.md +13 -0
- package/README.md +70 -2
- package/dist/abandoned-cart.controller.d.ts +70 -14
- package/dist/abandoned-cart.controller.d.ts.map +1 -1
- package/dist/abandoned-cart.controller.js +214 -13
- package/dist/abandoned-cart.controller.js.map +1 -1
- package/dist/abandoned-cart.entity.d.ts +15 -0
- package/dist/abandoned-cart.entity.d.ts.map +1 -1
- package/dist/abandoned-cart.entity.js +20 -0
- package/dist/abandoned-cart.entity.js.map +1 -1
- package/dist/abandoned-cart.service.d.ts +125 -7
- package/dist/abandoned-cart.service.d.ts.map +1 -1
- package/dist/abandoned-cart.service.js +274 -8
- package/dist/abandoned-cart.service.js.map +1 -1
- package/dist/hulo-storefront.d.ts.map +1 -1
- package/dist/hulo-storefront.js +52 -0
- package/dist/hulo-storefront.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/recovery-tokens.d.ts +56 -0
- package/dist/recovery-tokens.d.ts.map +1 -0
- package/dist/recovery-tokens.js +125 -0
- package/dist/recovery-tokens.js.map +1 -0
- package/dist/recovery-tokens.test.d.ts +2 -0
- package/dist/recovery-tokens.test.d.ts.map +1 -0
- package/dist/recovery-tokens.test.js +115 -0
- package/dist/recovery-tokens.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -15,13 +15,49 @@ const core_1 = require("@vendure/core");
|
|
|
15
15
|
const crypto_1 = require("crypto");
|
|
16
16
|
const plugin_1 = require("./plugin");
|
|
17
17
|
const vendure_licence_sdk_1 = require("@huloglobal/vendure-licence-sdk");
|
|
18
|
+
const recovery_tokens_1 = require("./recovery-tokens");
|
|
18
19
|
const loggerCtx = 'HuloAbandonedCartService';
|
|
19
20
|
let AbandonedCartService = class AbandonedCartService {
|
|
20
21
|
constructor(connection) {
|
|
21
22
|
this.connection = connection;
|
|
22
23
|
}
|
|
24
|
+
/** Add the 0.18.0 columns + the opt-out table on installs that don't
|
|
25
|
+
* run TypeORM migrations for plugins. Idempotent; never blocks boot. */
|
|
26
|
+
async onApplicationBootstrap() {
|
|
27
|
+
try {
|
|
28
|
+
await this.ensureSchema();
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
common_1.Logger.warn(`Schema check failed (will retry next boot): ${e === null || e === void 0 ? void 0 : e.message}`, loggerCtx);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async ensureSchema() {
|
|
35
|
+
const conn = (0, vendure_licence_sdk_1.adapterFor)(this.connection.rawConnection);
|
|
36
|
+
const cols = [
|
|
37
|
+
['resumeOrderCode', 'VARCHAR(32) NULL'],
|
|
38
|
+
['recoveryStep', 'VARCHAR(16) NULL'],
|
|
39
|
+
['convertedAt', 'DATETIME(3) NULL'],
|
|
40
|
+
['convertedOrderId', 'INT NULL'],
|
|
41
|
+
['convertedOrderCode', 'VARCHAR(32) NULL'],
|
|
42
|
+
];
|
|
43
|
+
for (const [name, type] of cols) {
|
|
44
|
+
await conn.query(`ALTER TABLE abandoned_cart ADD COLUMN IF NOT EXISTS ${name} ${type}`);
|
|
45
|
+
}
|
|
46
|
+
await conn.query(`
|
|
47
|
+
CREATE TABLE IF NOT EXISTS abandoned_cart_opt_out (
|
|
48
|
+
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
49
|
+
emailHash VARCHAR(64) NOT NULL,
|
|
50
|
+
email VARCHAR(255) NOT NULL,
|
|
51
|
+
channelId INT NULL,
|
|
52
|
+
source VARCHAR(32) NOT NULL DEFAULT 'link',
|
|
53
|
+
ip VARCHAR(45) NULL,
|
|
54
|
+
createdAt DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
55
|
+
UNIQUE INDEX abandoned_cart_opt_out_hash_uniq (emailHash)
|
|
56
|
+
)
|
|
57
|
+
`);
|
|
58
|
+
}
|
|
23
59
|
opts() {
|
|
24
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
60
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
25
61
|
const raw = (0, plugin_1.getOptions)().abandonment;
|
|
26
62
|
return {
|
|
27
63
|
windowMinutes: (_a = raw === null || raw === void 0 ? void 0 : raw.windowMinutes) !== null && _a !== void 0 ? _a : 30,
|
|
@@ -31,6 +67,7 @@ let AbandonedCartService = class AbandonedCartService {
|
|
|
31
67
|
recoveryLinkTtlHours: (_e = raw === null || raw === void 0 ? void 0 : raw.recoveryLinkTtlHours) !== null && _e !== void 0 ? _e : 72,
|
|
32
68
|
storefrontBaseUrl: (_f = raw === null || raw === void 0 ? void 0 : raw.storefrontBaseUrl) !== null && _f !== void 0 ? _f : (0, plugin_1.getOptions)().publicBaseUrl,
|
|
33
69
|
storefrontBaseUrls: (_g = raw === null || raw === void 0 ? void 0 : raw.storefrontBaseUrls) !== null && _g !== void 0 ? _g : {},
|
|
70
|
+
optOutSecret: (_k = (_j = (_h = raw === null || raw === void 0 ? void 0 : raw.optOutSecret) !== null && _h !== void 0 ? _h : raw === null || raw === void 0 ? void 0 : raw.recoveryLinkSecret) !== null && _j !== void 0 ? _j : (0, plugin_1.getOptions)().signingSecret) !== null && _k !== void 0 ? _k : '',
|
|
34
71
|
};
|
|
35
72
|
}
|
|
36
73
|
/**
|
|
@@ -53,7 +90,7 @@ let AbandonedCartService = class AbandonedCartService {
|
|
|
53
90
|
// 1. Auto-mark existing abandoned rows as converted when a
|
|
54
91
|
// matching checkout_completed lands afterwards.
|
|
55
92
|
const converted = await conn.query(`UPDATE abandoned_cart ac
|
|
56
|
-
SET ac.status = 'converted', ac.recoveredAt = NOW()
|
|
93
|
+
SET ac.status = 'converted', ac.recoveredAt = NOW(), ac.convertedAt = COALESCE(ac.convertedAt, NOW())
|
|
57
94
|
WHERE ac.status = 'abandoned'
|
|
58
95
|
AND EXISTS (
|
|
59
96
|
SELECT 1 FROM visitor_event ve
|
|
@@ -241,20 +278,38 @@ let AbandonedCartService = class AbandonedCartService {
|
|
|
241
278
|
* restore the cart. Returns null when the recovery-link secret is
|
|
242
279
|
* unset (feature disabled). Idempotent: reissues a fresh token so
|
|
243
280
|
* you can safely regenerate before every send.
|
|
281
|
+
*
|
|
282
|
+
* Pass `{ resumeOrderCode }` to bind the link to the visitor's open
|
|
283
|
+
* Vendure order: `findByRecoveryToken` / the resume endpoint then
|
|
284
|
+
* return that code (while the order is still `AddingItems` /
|
|
285
|
+
* `ArrangingPayment`) so the storefront can pick up the same order
|
|
286
|
+
* instead of rebuilding it. Passing `{ resumeOrderCode: null }`
|
|
287
|
+
* clears a previous binding; omitting the option keeps it.
|
|
288
|
+
*
|
|
289
|
+
* Also advances `recoveryStep` to `link_issued`.
|
|
244
290
|
*/
|
|
245
|
-
async issueRecoveryLink(cartId) {
|
|
291
|
+
async issueRecoveryLink(cartId, options = {}) {
|
|
246
292
|
const o = this.opts();
|
|
247
293
|
if (!o.recoveryLinkSecret)
|
|
248
294
|
return null;
|
|
249
295
|
const conn = (0, vendure_licence_sdk_1.adapterFor)(this.connection.rawConnection);
|
|
250
|
-
const rows = await conn.query(`SELECT ac.sessionId, ac.visitorId, ac.channelId, ch.code AS channelCode
|
|
296
|
+
const rows = await conn.query(`SELECT ac.sessionId, ac.visitorId, ac.channelId, ac.recoveryStep, ch.code AS channelCode
|
|
251
297
|
FROM abandoned_cart ac LEFT JOIN channel ch ON ch.id = ac.channelId
|
|
252
298
|
WHERE ac.id = ? LIMIT 1`, [cartId]);
|
|
253
299
|
if (!(rows === null || rows === void 0 ? void 0 : rows.length))
|
|
254
300
|
return null;
|
|
255
301
|
const token = (0, crypto_1.randomBytes)(24).toString('base64url');
|
|
256
302
|
const expiresAt = new Date(Date.now() + o.recoveryLinkTtlHours * 3600000);
|
|
257
|
-
|
|
303
|
+
const step = (0, recovery_tokens_1.advanceRecoveryStep)(rows[0].recoveryStep, 'link_issued');
|
|
304
|
+
if (options.resumeOrderCode !== undefined) {
|
|
305
|
+
const code = options.resumeOrderCode === null ? null : (0, recovery_tokens_1.sanitiseOrderCode)(options.resumeOrderCode) || null;
|
|
306
|
+
await conn.query(`UPDATE abandoned_cart
|
|
307
|
+
SET recoveryToken = ?, recoveryTokenExpiresAt = ?, resumeOrderCode = ?, recoveryStep = ?
|
|
308
|
+
WHERE id = ?`, [token, expiresAt, code, step, cartId]);
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
await conn.query(`UPDATE abandoned_cart SET recoveryToken = ?, recoveryTokenExpiresAt = ?, recoveryStep = ? WHERE id = ?`, [token, expiresAt, step, cartId]);
|
|
312
|
+
}
|
|
258
313
|
return `${this.storefrontBaseFor(rows[0].channelCode)}/cart/restore?t=${token}`;
|
|
259
314
|
}
|
|
260
315
|
/** Storefront origin for a channel: the per-channel map first, then
|
|
@@ -270,11 +325,18 @@ let AbandonedCartService = class AbandonedCartService {
|
|
|
270
325
|
* the token is unknown, expired, or the cart is already recovered.
|
|
271
326
|
* Storefront calls this via `/ees/recover-cart?t=...` to rebuild the
|
|
272
327
|
* cart from the persisted itemsJson.
|
|
328
|
+
*
|
|
329
|
+
* Since 0.18.0 the result also carries `orderCode` / `orderState` /
|
|
330
|
+
* `resumable` when the link was bound to an order, and the call
|
|
331
|
+
* advances `recoveryStep` to `link_opened`.
|
|
273
332
|
*/
|
|
274
333
|
async findByRecoveryToken(token) {
|
|
275
334
|
const conn = (0, vendure_licence_sdk_1.adapterFor)(this.connection.rawConnection);
|
|
276
|
-
const
|
|
277
|
-
|
|
335
|
+
const t = String(token || '').trim();
|
|
336
|
+
if (!t || t.length > 128)
|
|
337
|
+
return null;
|
|
338
|
+
const rows = await conn.query(`SELECT id, currency, itemsJson, email, recoveryTokenExpiresAt, status, resumeOrderCode, recoveryStep, channelId
|
|
339
|
+
FROM abandoned_cart WHERE recoveryToken = ? LIMIT 1`, [t]);
|
|
278
340
|
if (!(rows === null || rows === void 0 ? void 0 : rows.length))
|
|
279
341
|
return null;
|
|
280
342
|
const r = rows[0];
|
|
@@ -284,12 +346,216 @@ let AbandonedCartService = class AbandonedCartService {
|
|
|
284
346
|
await conn.query(`UPDATE abandoned_cart SET status = 'expired' WHERE id = ?`, [r.id]);
|
|
285
347
|
return null;
|
|
286
348
|
}
|
|
349
|
+
const step = (0, recovery_tokens_1.advanceRecoveryStep)(r.recoveryStep, 'link_opened');
|
|
350
|
+
if (step !== r.recoveryStep) {
|
|
351
|
+
await conn.query(`UPDATE abandoned_cart SET recoveryStep = ? WHERE id = ?`, [step, r.id]);
|
|
352
|
+
}
|
|
353
|
+
return this.buildRecoveredCart(r);
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Token-bound "resume" — the storefront calls this (via
|
|
357
|
+
* `POST /ees/recover-cart/resume?t=…`) when it would rather pick up
|
|
358
|
+
* the exact order the visitor left than rebuild a cart. Returns the
|
|
359
|
+
* same payload as `findByRecoveryToken` plus `resumeOrderCode`, which
|
|
360
|
+
* is set only while the bound order is still open. Advances
|
|
361
|
+
* `recoveryStep` to `resumed` (only when there is an order to resume,
|
|
362
|
+
* so the funnel column stays honest).
|
|
363
|
+
*/
|
|
364
|
+
async resumeByRecoveryToken(token) {
|
|
365
|
+
const cart = await this.findByRecoveryToken(token);
|
|
366
|
+
if (!cart)
|
|
367
|
+
return null;
|
|
368
|
+
const resumeOrderCode = cart.resumable ? cart.orderCode : null;
|
|
369
|
+
if (resumeOrderCode) {
|
|
370
|
+
const conn = (0, vendure_licence_sdk_1.adapterFor)(this.connection.rawConnection);
|
|
371
|
+
await conn.query(`UPDATE abandoned_cart SET recoveryStep = ? WHERE id = ? AND (recoveryStep IS NULL OR recoveryStep IN ('link_issued','link_opened'))`, ['resumed', cart.id]);
|
|
372
|
+
}
|
|
373
|
+
return { ...cart, resumeOrderCode };
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Attribution: the restored cart checked out. Called by the storefront
|
|
377
|
+
* (`POST /ees/recover-cart/converted { t, orderCode }`) from the
|
|
378
|
+
* confirmation page. Token-bound so nobody can mark a stranger's cart
|
|
379
|
+
* converted; the order must exist and be past `AddingItems`.
|
|
380
|
+
*
|
|
381
|
+
* Deliberately ignores token expiry and the row's status — a visitor
|
|
382
|
+
* who opens the link at hour 71 and pays at hour 73 still converted.
|
|
383
|
+
* Idempotent.
|
|
384
|
+
*/
|
|
385
|
+
async markConvertedByToken(token, orderCode) {
|
|
386
|
+
const conn = (0, vendure_licence_sdk_1.adapterFor)(this.connection.rawConnection);
|
|
387
|
+
const t = String(token || '').trim();
|
|
388
|
+
const code = (0, recovery_tokens_1.sanitiseOrderCode)(orderCode);
|
|
389
|
+
if (!t || t.length > 128 || !code)
|
|
390
|
+
return { ok: false, error: 'invalid-token' };
|
|
391
|
+
const rows = await conn.query(`SELECT id, status, convertedOrderCode FROM abandoned_cart WHERE recoveryToken = ? LIMIT 1`, [t]);
|
|
392
|
+
if (!(rows === null || rows === void 0 ? void 0 : rows.length))
|
|
393
|
+
return { ok: false, error: 'invalid-token' };
|
|
394
|
+
const cart = rows[0];
|
|
395
|
+
if (cart.status === 'converted' && cart.convertedOrderCode === code) {
|
|
396
|
+
return { ok: true, cartId: Number(cart.id), orderCode: code, alreadyConverted: true };
|
|
397
|
+
}
|
|
398
|
+
const order = await this.lookupOrder(code);
|
|
399
|
+
if (!order)
|
|
400
|
+
return { ok: false, error: 'order-not-found' };
|
|
401
|
+
if (order.state === 'AddingItems' || order.state === 'Cancelled' || order.state === 'Draft') {
|
|
402
|
+
return { ok: false, error: 'order-not-placed' };
|
|
403
|
+
}
|
|
404
|
+
await conn.query(`UPDATE abandoned_cart
|
|
405
|
+
SET status = 'converted',
|
|
406
|
+
recoveredAt = COALESCE(recoveredAt, NOW(3)),
|
|
407
|
+
convertedAt = COALESCE(convertedAt, NOW(3)),
|
|
408
|
+
convertedOrderId = ?,
|
|
409
|
+
convertedOrderCode = ?,
|
|
410
|
+
recoveryOrderId = COALESCE(recoveryOrderId, ?),
|
|
411
|
+
recoveryStep = 'converted'
|
|
412
|
+
WHERE id = ?`, [order.id, order.code, order.id, cart.id]);
|
|
413
|
+
common_1.Logger.log(`Recovery link converted: cart=${cart.id} order=${order.code}`, loggerCtx);
|
|
414
|
+
return { ok: true, cartId: Number(cart.id), orderCode: order.code, alreadyConverted: false };
|
|
415
|
+
}
|
|
416
|
+
// ── opt-out ─────────────────────────────────────────────────────
|
|
417
|
+
optOutSecret() {
|
|
418
|
+
return this.opts().optOutSecret;
|
|
419
|
+
}
|
|
420
|
+
/** True when the address has asked not to receive recovery emails.
|
|
421
|
+
* Hosts MUST check this before every send. Fail-open on DB errors
|
|
422
|
+
* would mean emailing someone who opted out, so this fails closed. */
|
|
423
|
+
async isOptedOut(email) {
|
|
424
|
+
const e = (0, recovery_tokens_1.normaliseEmail)(email);
|
|
425
|
+
if (!e)
|
|
426
|
+
return false;
|
|
427
|
+
try {
|
|
428
|
+
const conn = (0, vendure_licence_sdk_1.adapterFor)(this.connection.rawConnection);
|
|
429
|
+
const rows = await conn.query(`SELECT 1 AS x FROM abandoned_cart_opt_out WHERE emailHash = ? LIMIT 1`, [(0, recovery_tokens_1.hashEmail)(e)]);
|
|
430
|
+
return !!(rows === null || rows === void 0 ? void 0 : rows.length);
|
|
431
|
+
}
|
|
432
|
+
catch (err) {
|
|
433
|
+
common_1.Logger.warn(`isOptedOut(${e}) failed — treating as opted out: ${err === null || err === void 0 ? void 0 : err.message}`, loggerCtx);
|
|
434
|
+
return true;
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
/** Record an opt-out. Idempotent. Returns false for a malformed email. */
|
|
438
|
+
async optOut(email, meta = {}) {
|
|
439
|
+
var _a;
|
|
440
|
+
const e = (0, recovery_tokens_1.normaliseEmail)(email);
|
|
441
|
+
if (!e)
|
|
442
|
+
return false;
|
|
443
|
+
const conn = (0, vendure_licence_sdk_1.adapterFor)(this.connection.rawConnection);
|
|
444
|
+
await conn.query(`INSERT INTO abandoned_cart_opt_out (emailHash, email, channelId, source, ip, createdAt)
|
|
445
|
+
VALUES (?, ?, ?, ?, ?, NOW(3))
|
|
446
|
+
ON DUPLICATE KEY UPDATE email = VALUES(email)`, [(0, recovery_tokens_1.hashEmail)(e), e, (_a = meta.channelId) !== null && _a !== void 0 ? _a : null, String(meta.source || 'link').slice(0, 32), meta.ip ? String(meta.ip).slice(0, 45) : null], { conflictColumns: ['emailHash'] });
|
|
447
|
+
return true;
|
|
448
|
+
}
|
|
449
|
+
/** Remove an opt-out (admin action after an explicit customer request). */
|
|
450
|
+
async optIn(email) {
|
|
451
|
+
var _a;
|
|
452
|
+
const e = (0, recovery_tokens_1.normaliseEmail)(email);
|
|
453
|
+
if (!e)
|
|
454
|
+
return false;
|
|
455
|
+
const conn = (0, vendure_licence_sdk_1.adapterFor)(this.connection.rawConnection);
|
|
456
|
+
const res = await conn.query(`DELETE FROM abandoned_cart_opt_out WHERE emailHash = ?`, [(0, recovery_tokens_1.hashEmail)(e)], { needAffected: true });
|
|
457
|
+
return Number((_a = res === null || res === void 0 ? void 0 : res.affectedRows) !== null && _a !== void 0 ? _a : 0) > 0;
|
|
458
|
+
}
|
|
459
|
+
async listOptOuts(take = 50, skip = 0) {
|
|
460
|
+
var _a;
|
|
461
|
+
const conn = (0, vendure_licence_sdk_1.adapterFor)(this.connection.rawConnection);
|
|
462
|
+
const [rows, totalRow] = await Promise.all([
|
|
463
|
+
conn.query(`SELECT id, email, channelId, source, createdAt FROM abandoned_cart_opt_out
|
|
464
|
+
ORDER BY createdAt DESC LIMIT ? OFFSET ?`, [take, skip]),
|
|
465
|
+
conn.query(`SELECT COUNT(*) AS c FROM abandoned_cart_opt_out`),
|
|
466
|
+
]);
|
|
467
|
+
return { items: rows, total: Number(((_a = totalRow === null || totalRow === void 0 ? void 0 : totalRow[0]) === null || _a === void 0 ? void 0 : _a.c) || 0) };
|
|
468
|
+
}
|
|
469
|
+
/** Absolute opt-out URL for an email, on the Vendure server's public
|
|
470
|
+
* origin. Null when no secret is configured. */
|
|
471
|
+
buildOptOutLink(email) {
|
|
472
|
+
return (0, recovery_tokens_1.buildOptOutUrl)((0, plugin_1.getOptions)().publicBaseUrl, email, this.optOutSecret());
|
|
473
|
+
}
|
|
474
|
+
/** `List-Unsubscribe` + `List-Unsubscribe-Post` headers for a recovery
|
|
475
|
+
* email to `email`. Null when opt-out links are disabled. */
|
|
476
|
+
buildListUnsubscribeHeaders(email) {
|
|
477
|
+
return (0, recovery_tokens_1.buildListUnsubscribeHeaders)((0, plugin_1.getOptions)().publicBaseUrl, email, this.optOutSecret());
|
|
478
|
+
}
|
|
479
|
+
/** Exposed for the controller — verifies an `e=` token. */
|
|
480
|
+
getOptOutSecret() {
|
|
481
|
+
return this.optOutSecret();
|
|
482
|
+
}
|
|
483
|
+
// ── attribution ─────────────────────────────────────────────────
|
|
484
|
+
/** Recovery-link funnel for the admin summary: how many carts got a
|
|
485
|
+
* link, how many opened it, resumed, converted — and the value of
|
|
486
|
+
* the carts the link brought back. */
|
|
487
|
+
async attributionSummary(since) {
|
|
488
|
+
var _a;
|
|
489
|
+
const conn = (0, vendure_licence_sdk_1.adapterFor)(this.connection.rawConnection);
|
|
490
|
+
const rows = await conn.query(`SELECT
|
|
491
|
+
SUM(CASE WHEN recoveryStep IS NOT NULL THEN 1 ELSE 0 END) AS linkIssued,
|
|
492
|
+
SUM(CASE WHEN recoveryStep IN ('link_opened','resumed','converted') THEN 1 ELSE 0 END) AS linkOpened,
|
|
493
|
+
SUM(CASE WHEN recoveryStep IN ('resumed','converted') THEN 1 ELSE 0 END) AS resumed,
|
|
494
|
+
SUM(CASE WHEN recoveryStep = 'converted' THEN 1 ELSE 0 END) AS convertedViaLink,
|
|
495
|
+
SUM(CASE WHEN recoveryStep = 'converted' THEN totalMinor ELSE 0 END) AS convertedViaLinkValueMinor,
|
|
496
|
+
SUM(CASE WHEN status = 'converted' THEN 1 ELSE 0 END) AS convertedTotal
|
|
497
|
+
FROM abandoned_cart
|
|
498
|
+
WHERE abandonedAt >= ?`, [since]);
|
|
499
|
+
let optOuts = 0;
|
|
500
|
+
try {
|
|
501
|
+
const o = await conn.query(`SELECT COUNT(*) AS c FROM abandoned_cart_opt_out WHERE createdAt >= ?`, [since]);
|
|
502
|
+
optOuts = Number(((_a = o === null || o === void 0 ? void 0 : o[0]) === null || _a === void 0 ? void 0 : _a.c) || 0);
|
|
503
|
+
}
|
|
504
|
+
catch { /* table missing on a very old install — reported as 0 */ }
|
|
505
|
+
const s = (rows === null || rows === void 0 ? void 0 : rows[0]) || {};
|
|
506
|
+
return {
|
|
507
|
+
linkIssued: Number(s.linkIssued || 0),
|
|
508
|
+
linkOpened: Number(s.linkOpened || 0),
|
|
509
|
+
resumed: Number(s.resumed || 0),
|
|
510
|
+
convertedViaLink: Number(s.convertedViaLink || 0),
|
|
511
|
+
convertedViaLinkValueMinor: Number(s.convertedViaLinkValueMinor || 0),
|
|
512
|
+
convertedTotal: Number(s.convertedTotal || 0),
|
|
513
|
+
optOuts,
|
|
514
|
+
};
|
|
515
|
+
}
|
|
516
|
+
// ── order lookup ────────────────────────────────────────────────
|
|
517
|
+
async lookupOrder(code) {
|
|
518
|
+
const c = (0, recovery_tokens_1.sanitiseOrderCode)(code);
|
|
519
|
+
if (!c)
|
|
520
|
+
return null;
|
|
521
|
+
const conn = (0, vendure_licence_sdk_1.adapterFor)(this.connection.rawConnection);
|
|
522
|
+
try {
|
|
523
|
+
const rows = await conn.query('SELECT o.id, o.code, o.state, oc.channelId AS channelId\n' +
|
|
524
|
+
'FROM `order` o LEFT JOIN order_channels_channel oc ON oc.orderId = o.id\n' +
|
|
525
|
+
'WHERE o.code = ? LIMIT 1', [c]);
|
|
526
|
+
if (!(rows === null || rows === void 0 ? void 0 : rows.length))
|
|
527
|
+
return null;
|
|
528
|
+
const r = rows[0];
|
|
529
|
+
return { id: Number(r.id), code: String(r.code), state: String(r.state), channelId: r.channelId == null ? null : Number(r.channelId) };
|
|
530
|
+
}
|
|
531
|
+
catch (e) {
|
|
532
|
+
common_1.Logger.warn(`Order lookup for ${c} failed: ${e === null || e === void 0 ? void 0 : e.message}`, loggerCtx);
|
|
533
|
+
return null;
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
async buildRecoveredCart(r) {
|
|
537
|
+
var _a, _b;
|
|
287
538
|
let items = [];
|
|
288
539
|
try {
|
|
289
540
|
items = JSON.parse(r.itemsJson || '[]');
|
|
290
541
|
}
|
|
291
542
|
catch { }
|
|
292
|
-
|
|
543
|
+
const orderCode = (0, recovery_tokens_1.sanitiseOrderCode)(r.resumeOrderCode) || null;
|
|
544
|
+
let orderState = null;
|
|
545
|
+
if (orderCode) {
|
|
546
|
+
const order = await this.lookupOrder(orderCode);
|
|
547
|
+
orderState = (_a = order === null || order === void 0 ? void 0 : order.state) !== null && _a !== void 0 ? _a : null;
|
|
548
|
+
}
|
|
549
|
+
return {
|
|
550
|
+
id: Number(r.id),
|
|
551
|
+
currency: String(r.currency || 'GBP'),
|
|
552
|
+
items,
|
|
553
|
+
email: (_b = r.email) !== null && _b !== void 0 ? _b : null,
|
|
554
|
+
orderCode,
|
|
555
|
+
orderState,
|
|
556
|
+
resumable: !!orderCode && (0, recovery_tokens_1.isResumableOrderState)(orderState),
|
|
557
|
+
channelId: Number(r.channelId || 1),
|
|
558
|
+
};
|
|
293
559
|
}
|
|
294
560
|
async markStatus(cartId, status) {
|
|
295
561
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abandoned-cart.service.js","sourceRoot":"","sources":["../src/abandoned-cart.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"abandoned-cart.service.js","sourceRoot":"","sources":["../src/abandoned-cart.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hulo-storefront.d.ts","sourceRoot":"","sources":["../src/hulo-storefront.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,GAAI,gBAAgB,MAAM,EAAE,yBAAoB,KAAG,
|
|
1
|
+
{"version":3,"file":"hulo-storefront.d.ts","sourceRoot":"","sources":["../src/hulo-storefront.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,GAAI,gBAAgB,MAAM,EAAE,yBAAoB,KAAG,MAgUjF,CAAC"}
|
package/dist/hulo-storefront.js
CHANGED
|
@@ -23,6 +23,7 @@ const HULO_STOREFRONT_JS = (backendBaseUrl, defaultChannelId = 1) => `
|
|
|
23
23
|
var CONFIG = {
|
|
24
24
|
endpoint: ${JSON.stringify(backendBaseUrl.replace(/\/$/, '') + '/ees/track')},
|
|
25
25
|
recoverEndpoint: ${JSON.stringify(backendBaseUrl.replace(/\/$/, '') + '/ees/recover-cart')},
|
|
26
|
+
recoveryTokenKey: 'hulo_recovery_token',
|
|
26
27
|
channelId: ${defaultChannelId},
|
|
27
28
|
debug: false,
|
|
28
29
|
autoRageClick: true,
|
|
@@ -202,12 +203,63 @@ const HULO_STOREFRONT_JS = (backendBaseUrl, defaultChannelId = 1) => `
|
|
|
202
203
|
restoreCart: function (token) {
|
|
203
204
|
var t = String(token || '').trim();
|
|
204
205
|
if (!t) return Promise.reject(new Error('missing-token'));
|
|
206
|
+
rememberRecoveryToken(t);
|
|
205
207
|
return fetch(CONFIG.recoverEndpoint + '?t=' + encodeURIComponent(t), {
|
|
206
208
|
credentials: 'include',
|
|
207
209
|
}).then(function (r) { return r.json(); });
|
|
208
210
|
},
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Like restoreCart, but asks the backend to resume the exact order
|
|
214
|
+
* the link was bound to. The response carries resumeOrderCode
|
|
215
|
+
* (non-null only while that order is still open) alongside the usual
|
|
216
|
+
* items — fall back to re-adding the items when it is null.
|
|
217
|
+
*/
|
|
218
|
+
resumeCart: function (token) {
|
|
219
|
+
var t = String(token || '').trim();
|
|
220
|
+
if (!t) return Promise.reject(new Error('missing-token'));
|
|
221
|
+
rememberRecoveryToken(t);
|
|
222
|
+
return fetch(CONFIG.recoverEndpoint + '/resume?t=' + encodeURIComponent(t), {
|
|
223
|
+
method: 'POST',
|
|
224
|
+
credentials: 'include',
|
|
225
|
+
headers: { 'content-type': 'application/json' },
|
|
226
|
+
body: '{}',
|
|
227
|
+
}).then(function (r) { return r.json(); });
|
|
228
|
+
},
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Attribution: call from the thank-you page with the placed order's
|
|
232
|
+
* code. Uses the recovery token remembered by restoreCart /
|
|
233
|
+
* resumeCart (sessionStorage), so it is a no-op for visitors who did
|
|
234
|
+
* not arrive through a recovery link. Resolves to null in that case.
|
|
235
|
+
*/
|
|
236
|
+
recoveryConverted: function (orderCode, token) {
|
|
237
|
+
var t = String(token || readRecoveryToken() || '').trim();
|
|
238
|
+
var code = String(orderCode || '').trim();
|
|
239
|
+
if (!t || !code) return Promise.resolve(null);
|
|
240
|
+
return fetch(CONFIG.recoverEndpoint + '/converted', {
|
|
241
|
+
method: 'POST',
|
|
242
|
+
credentials: 'include',
|
|
243
|
+
keepalive: true,
|
|
244
|
+
headers: { 'content-type': 'application/json' },
|
|
245
|
+
body: JSON.stringify({ t: t, orderCode: code }),
|
|
246
|
+
}).then(function (r) { return r.json(); }).then(function (j) {
|
|
247
|
+
if (j && j.ok) forgetRecoveryToken();
|
|
248
|
+
return j;
|
|
249
|
+
}).catch(function () { return null; });
|
|
250
|
+
},
|
|
209
251
|
};
|
|
210
252
|
|
|
253
|
+
function rememberRecoveryToken(t) {
|
|
254
|
+
try { sessionStorage.setItem(CONFIG.recoveryTokenKey, t); } catch (_e) {}
|
|
255
|
+
}
|
|
256
|
+
function readRecoveryToken() {
|
|
257
|
+
try { return sessionStorage.getItem(CONFIG.recoveryTokenKey); } catch (_e) { return null; }
|
|
258
|
+
}
|
|
259
|
+
function forgetRecoveryToken() {
|
|
260
|
+
try { sessionStorage.removeItem(CONFIG.recoveryTokenKey); } catch (_e) {}
|
|
261
|
+
}
|
|
262
|
+
|
|
211
263
|
// ── auto rage-click detector ─────────────────────────────────────
|
|
212
264
|
// Any pointerdown ≥ 3 within 500ms in a 20x20px zone counts.
|
|
213
265
|
if (CONFIG.autoRageClick) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hulo-storefront.js","sourceRoot":"","sources":["../src/hulo-storefront.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACI,MAAM,kBAAkB,GAAG,CAAC,cAAsB,EAAE,gBAAgB,GAAG,CAAC,EAAU,EAAE,CAAC;;;;;gBAK5E,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC;uBACzD,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,mBAAmB,CAAC
|
|
1
|
+
{"version":3,"file":"hulo-storefront.js","sourceRoot":"","sources":["../src/hulo-storefront.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;GAcG;AACI,MAAM,kBAAkB,GAAG,CAAC,cAAsB,EAAE,gBAAgB,GAAG,CAAC,EAAU,EAAE,CAAC;;;;;gBAK5E,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,YAAY,CAAC;uBACzD,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,mBAAmB,CAAC;;iBAE7E,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwThC,CAAC;AAhUW,QAAA,kBAAkB,sBAgU7B"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,8 @@ export { VisitorTrackingService } from './visitor-tracking.service';
|
|
|
6
6
|
export { VisitorEvent } from './visitor-event.entity';
|
|
7
7
|
export { AbandonedCart, AbandonedCartStatus } from './abandoned-cart.entity';
|
|
8
8
|
export { ProductCoView } from './product-co-view.entity';
|
|
9
|
-
export { AbandonedCartService, CartSnapshotMeta, AbandonmentOptions, } from './abandoned-cart.service';
|
|
9
|
+
export { AbandonedCartService, CartSnapshotMeta, AbandonmentOptions, IssueRecoveryLinkOptions, RecoveredCart, ResumedCart, } from './abandoned-cart.service';
|
|
10
|
+
export { RecoveryStep, RESUMABLE_ORDER_STATES, isResumableOrderState, advanceRecoveryStep, normaliseEmail, hashEmail, buildOptOutToken, verifyOptOutToken, buildOptOutUrl, buildListUnsubscribeHeaders, } from './recovery-tokens';
|
|
10
11
|
export { RecommendationsService, RecommendedProduct } from './recommendations.service';
|
|
11
12
|
export { SearchAnalyticsService } from './search-analytics.service';
|
|
12
13
|
export { JourneyBuffsService } from './journey-buffs.service';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACH,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACH,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACxB,aAAa,EACb,WAAW,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACH,YAAY,EACZ,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,2BAA2B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* `@huloglobal/vendure-plugin-visitor-analytics` — public exports.
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.JourneyBuffsService = exports.SearchAnalyticsService = exports.RecommendationsService = exports.AbandonedCartService = exports.ProductCoView = exports.AbandonedCart = exports.VisitorEvent = exports.VisitorTrackingService = exports.VisitorAnalyticsPlugin = void 0;
|
|
6
|
+
exports.JourneyBuffsService = exports.SearchAnalyticsService = exports.RecommendationsService = exports.buildListUnsubscribeHeaders = exports.buildOptOutUrl = exports.verifyOptOutToken = exports.buildOptOutToken = exports.hashEmail = exports.normaliseEmail = exports.advanceRecoveryStep = exports.isResumableOrderState = exports.RESUMABLE_ORDER_STATES = exports.AbandonedCartService = exports.ProductCoView = exports.AbandonedCart = exports.VisitorEvent = exports.VisitorTrackingService = exports.VisitorAnalyticsPlugin = void 0;
|
|
7
7
|
var plugin_1 = require("./plugin");
|
|
8
8
|
Object.defineProperty(exports, "VisitorAnalyticsPlugin", { enumerable: true, get: function () { return plugin_1.VisitorAnalyticsPlugin; } });
|
|
9
9
|
var visitor_tracking_service_1 = require("./visitor-tracking.service");
|
|
@@ -16,6 +16,16 @@ var product_co_view_entity_1 = require("./product-co-view.entity");
|
|
|
16
16
|
Object.defineProperty(exports, "ProductCoView", { enumerable: true, get: function () { return product_co_view_entity_1.ProductCoView; } });
|
|
17
17
|
var abandoned_cart_service_1 = require("./abandoned-cart.service");
|
|
18
18
|
Object.defineProperty(exports, "AbandonedCartService", { enumerable: true, get: function () { return abandoned_cart_service_1.AbandonedCartService; } });
|
|
19
|
+
var recovery_tokens_1 = require("./recovery-tokens");
|
|
20
|
+
Object.defineProperty(exports, "RESUMABLE_ORDER_STATES", { enumerable: true, get: function () { return recovery_tokens_1.RESUMABLE_ORDER_STATES; } });
|
|
21
|
+
Object.defineProperty(exports, "isResumableOrderState", { enumerable: true, get: function () { return recovery_tokens_1.isResumableOrderState; } });
|
|
22
|
+
Object.defineProperty(exports, "advanceRecoveryStep", { enumerable: true, get: function () { return recovery_tokens_1.advanceRecoveryStep; } });
|
|
23
|
+
Object.defineProperty(exports, "normaliseEmail", { enumerable: true, get: function () { return recovery_tokens_1.normaliseEmail; } });
|
|
24
|
+
Object.defineProperty(exports, "hashEmail", { enumerable: true, get: function () { return recovery_tokens_1.hashEmail; } });
|
|
25
|
+
Object.defineProperty(exports, "buildOptOutToken", { enumerable: true, get: function () { return recovery_tokens_1.buildOptOutToken; } });
|
|
26
|
+
Object.defineProperty(exports, "verifyOptOutToken", { enumerable: true, get: function () { return recovery_tokens_1.verifyOptOutToken; } });
|
|
27
|
+
Object.defineProperty(exports, "buildOptOutUrl", { enumerable: true, get: function () { return recovery_tokens_1.buildOptOutUrl; } });
|
|
28
|
+
Object.defineProperty(exports, "buildListUnsubscribeHeaders", { enumerable: true, get: function () { return recovery_tokens_1.buildListUnsubscribeHeaders; } });
|
|
19
29
|
var recommendations_service_1 = require("./recommendations.service");
|
|
20
30
|
Object.defineProperty(exports, "RecommendationsService", { enumerable: true, get: function () { return recommendations_service_1.RecommendationsService; } });
|
|
21
31
|
var search_analytics_service_1 = require("./search-analytics.service");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,mCAAiF;AAAxE,gHAAA,sBAAsB,OAAA;AAC/B,uEAAoE;AAA3D,kIAAA,sBAAsB,OAAA;AAC/B,+DAAsD;AAA7C,oHAAA,YAAY,OAAA;AACrB,iEAA6E;AAApE,sHAAA,aAAa,OAAA;AACtB,mEAAyD;AAAhD,uHAAA,aAAa,OAAA;AACtB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,mCAAiF;AAAxE,gHAAA,sBAAsB,OAAA;AAC/B,uEAAoE;AAA3D,kIAAA,sBAAsB,OAAA;AAC/B,+DAAsD;AAA7C,oHAAA,YAAY,OAAA;AACrB,iEAA6E;AAApE,sHAAA,aAAa,OAAA;AACtB,mEAAyD;AAAhD,uHAAA,aAAa,OAAA;AACtB,mEAOkC;AAN9B,8HAAA,oBAAoB,OAAA;AAOxB,qDAW2B;AATvB,yHAAA,sBAAsB,OAAA;AACtB,wHAAA,qBAAqB,OAAA;AACrB,sHAAA,mBAAmB,OAAA;AACnB,iHAAA,cAAc,OAAA;AACd,4GAAA,SAAS,OAAA;AACT,mHAAA,gBAAgB,OAAA;AAChB,oHAAA,iBAAiB,OAAA;AACjB,iHAAA,cAAc,OAAA;AACd,8HAAA,2BAA2B,OAAA;AAE/B,qEAAuF;AAA9E,iIAAA,sBAAsB,OAAA;AAC/B,uEAAoE;AAA3D,kIAAA,sBAAsB,OAAA;AAC/B,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure helpers behind the cart-recovery attribution + opt-out features
|
|
3
|
+
* (0.18.0). No I/O — everything here is unit-tested in isolation.
|
|
4
|
+
*/
|
|
5
|
+
/** Vendure order states from which a customer can still pick up the same
|
|
6
|
+
* order (the storefront can add items / arrange payment). Anything later —
|
|
7
|
+
* `PaymentAuthorized`, `PaymentSettled`, `Cancelled`, … — is a finished or
|
|
8
|
+
* dead order and the storefront should rebuild a fresh cart instead. */
|
|
9
|
+
export declare const RESUMABLE_ORDER_STATES: ReadonlyArray<string>;
|
|
10
|
+
export declare function isResumableOrderState(state: string | null | undefined): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Where a recovery link got to. Monotonic — a step never moves backwards,
|
|
13
|
+
* so the admin can read a funnel straight off the column:
|
|
14
|
+
*
|
|
15
|
+
* link_issued → link_opened → resumed → converted
|
|
16
|
+
*/
|
|
17
|
+
export type RecoveryStep = 'link_issued' | 'link_opened' | 'resumed' | 'converted';
|
|
18
|
+
export declare function recoveryStepRank(step: string | null | undefined): number;
|
|
19
|
+
/** Returns the later of `current` and `target`; never regresses. Unknown
|
|
20
|
+
* values in `current` (legacy rows, hand edits) are treated as "no step". */
|
|
21
|
+
export declare function advanceRecoveryStep(current: string | null | undefined, target: RecoveryStep): RecoveryStep;
|
|
22
|
+
/** Lower-cased, trimmed. Returns '' for anything that is not an email. */
|
|
23
|
+
export declare function normaliseEmail(raw: string | null | undefined): string;
|
|
24
|
+
/** SHA-256 hex of the normalised email — the same hash `abandoned_cart.emailHash`
|
|
25
|
+
* stores, so opt-outs can be matched without keeping the raw address. */
|
|
26
|
+
export declare function hashEmail(email: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Opt-out token: `<base64url(email)>.<base64url(hmac-sha256(secret, email))>`.
|
|
29
|
+
* Self-describing so the endpoint needs no DB lookup to know *who* is opting
|
|
30
|
+
* out, and unforgeable so a third party cannot unsubscribe someone else.
|
|
31
|
+
* Returns null when there is no secret (feature disabled) or the email is
|
|
32
|
+
* malformed.
|
|
33
|
+
*/
|
|
34
|
+
export declare function buildOptOutToken(email: string, secret: string): string | null;
|
|
35
|
+
/** Inverse of `buildOptOutToken`. Returns the normalised email on success,
|
|
36
|
+
* null on any failure (bad shape, bad MAC, wrong secret). Constant-time
|
|
37
|
+
* MAC comparison. */
|
|
38
|
+
export declare function verifyOptOutToken(token: string | null | undefined, secret: string): string | null;
|
|
39
|
+
/** Build the absolute opt-out URL for an email. `backendBaseUrl` is the
|
|
40
|
+
* Vendure server's public origin (the endpoint lives on the API, not the
|
|
41
|
+
* storefront). */
|
|
42
|
+
export declare function buildOptOutUrl(backendBaseUrl: string, email: string, secret: string): string | null;
|
|
43
|
+
/**
|
|
44
|
+
* Headers a mailer should add to every abandoned-cart email so Gmail /
|
|
45
|
+
* Outlook / Yahoo render their native "Unsubscribe" affordance
|
|
46
|
+
* (RFC 2369 + RFC 8058 one-click). Returns null when opt-out links are
|
|
47
|
+
* disabled.
|
|
48
|
+
*/
|
|
49
|
+
export declare function buildListUnsubscribeHeaders(backendBaseUrl: string, email: string, secret: string): {
|
|
50
|
+
'List-Unsubscribe': string;
|
|
51
|
+
'List-Unsubscribe-Post': string;
|
|
52
|
+
} | null;
|
|
53
|
+
/** Order codes are Vendure-generated (16 upper-case alphanumerics by default)
|
|
54
|
+
* but hosts can override the generator, so accept a generous safe subset. */
|
|
55
|
+
export declare function sanitiseOrderCode(raw: string | null | undefined): string;
|
|
56
|
+
//# sourceMappingURL=recovery-tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recovery-tokens.d.ts","sourceRoot":"","sources":["../src/recovery-tokens.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH;;;yEAGyE;AACzE,eAAO,MAAM,sBAAsB,EAAE,aAAa,CAAC,MAAM,CAAuC,CAAC;AAEjG,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE/E;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,aAAa,GAAG,SAAS,GAAG,WAAW,CAAC;AAInF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGxE;AAED;8EAC8E;AAC9E,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAClC,MAAM,EAAE,YAAY,GACrB,YAAY,CAId;AAED,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAIrE;AAED;0EAC0E;AAC1E,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAUD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI7E;AAED;;sBAEsB;AACtB,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgBjG;AAED;;mBAEmB;AACnB,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAInG;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACvC,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACf;IAAE,kBAAkB,EAAE,MAAM,CAAC;IAAC,uBAAuB,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOxE;AAED;8EAC8E;AAC9E,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGxE"}
|