@huloglobal/vendure-plugin-visitor-analytics 0.8.2 → 0.8.4
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 +49 -0
- package/dist/abandoned-cart.controller.d.ts +11 -0
- package/dist/abandoned-cart.controller.d.ts.map +1 -1
- package/dist/abandoned-cart.controller.js +133 -3
- package/dist/abandoned-cart.controller.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/recommendations.controller.d.ts +3 -12
- package/dist/recommendations.controller.d.ts.map +1 -1
- package/dist/recommendations.service.d.ts +38 -15
- package/dist/recommendations.service.d.ts.map +1 -1
- package/dist/recommendations.service.js +80 -6
- package/dist/recommendations.service.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,52 @@ documented here. The format follows
|
|
|
5
5
|
[Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project
|
|
6
6
|
adheres to [semantic versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.8.3] — 2026-07-04
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Recommendation endpoints (`trending`, `also-viewed`, `personal`)
|
|
12
|
+
now enrich every row with `productName` and `productSlug` via a
|
|
13
|
+
single bulk lookup against `product_translation`. English
|
|
14
|
+
translation preferred for multi-locale stores; single-locale
|
|
15
|
+
installs land on their only translation. Soft-deleted products
|
|
16
|
+
are excluded.
|
|
17
|
+
- New exported type: `RecommendedProduct`.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
- Response row shape is now
|
|
21
|
+
`{ productId, productName, productSlug, score, views }` — the
|
|
22
|
+
addition is backwards-compatible for consumers that only read
|
|
23
|
+
`productId`, but callers that render the row can now show the
|
|
24
|
+
name without a second round-trip. Admin UI updated in the
|
|
25
|
+
parallel `ee.software` commit to render "Windows Server 2022
|
|
26
|
+
Datacenter #42" instead of just "#42".
|
|
27
|
+
|
|
28
|
+
## [0.8.2] — 2026-07-04
|
|
29
|
+
|
|
30
|
+
### Documentation
|
|
31
|
+
- README rewritten to cover every 0.8.x feature: the drop-in
|
|
32
|
+
`/ees/hulo.js` storefront helper, cart-abandonment configuration
|
|
33
|
+
and lifecycle, recommendation endpoints, search analytics,
|
|
34
|
+
journey drawer buffs. Includes a walkthrough of the
|
|
35
|
+
storefront-side `/cart/restore` route customers implement to
|
|
36
|
+
consume recovery links.
|
|
37
|
+
- Endpoints table split into Public (browser-safe, CORS-permissive)
|
|
38
|
+
vs Admin, with every 0.8.0-introduced endpoint marked inline.
|
|
39
|
+
- No runtime changes — bumped to ship the new README with the npm
|
|
40
|
+
tarball.
|
|
41
|
+
|
|
42
|
+
## [0.8.1] — 2026-07-04
|
|
43
|
+
|
|
44
|
+
### Added
|
|
45
|
+
- `/ees/hulo.js` — the plugin now serves a drop-in typed storefront
|
|
46
|
+
helper at this path. One `<script src>` tag and every event API
|
|
47
|
+
(`hulo.cartSnapshot`, `hulo.productView`, `hulo.search`,
|
|
48
|
+
`hulo.checkoutCompleted`, `hulo.restoreCart`) is available on
|
|
49
|
+
`window.hulo`. Handles batching, `sendBeacon` on unload, and
|
|
50
|
+
installs auto rage-click + dead-click detectors. Served with a
|
|
51
|
+
10-minute browser TTL + 24-hour stale-while-revalidate and
|
|
52
|
+
permissive CORS so it works cross-origin from any storefront.
|
|
53
|
+
|
|
8
54
|
## [0.8.0] — 2026-07-04
|
|
9
55
|
|
|
10
56
|
### Added
|
|
@@ -230,6 +276,9 @@ adheres to [semantic versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
230
276
|
- Licence verification via `@huloglobal/vendure-licence-sdk` with
|
|
231
277
|
revocation polling.
|
|
232
278
|
|
|
279
|
+
[0.8.3]: https://github.com/exceeded/vendure-plugin-visitor-analytics/releases/tag/v0.8.3
|
|
280
|
+
[0.8.2]: https://github.com/exceeded/vendure-plugin-visitor-analytics/releases/tag/v0.8.2
|
|
281
|
+
[0.8.1]: https://github.com/exceeded/vendure-plugin-visitor-analytics/releases/tag/v0.8.1
|
|
233
282
|
[0.8.0]: https://github.com/exceeded/vendure-plugin-visitor-analytics/releases/tag/v0.8.0
|
|
234
283
|
[0.7.0]: https://github.com/exceeded/vendure-plugin-visitor-analytics/releases/tag/v0.7.0
|
|
235
284
|
[0.6.0]: https://github.com/exceeded/vendure-plugin-visitor-analytics/releases/tag/v0.6.0
|
|
@@ -24,6 +24,8 @@ export declare class AbandonedCartController {
|
|
|
24
24
|
take: number;
|
|
25
25
|
skip: number;
|
|
26
26
|
}>;
|
|
27
|
+
/** Short human summary of a parsed itemsJson array. */
|
|
28
|
+
private buildItemsPreview;
|
|
27
29
|
summary(ctx: RequestContext, daysRaw?: string): Promise<{
|
|
28
30
|
windowDays: number;
|
|
29
31
|
total: number;
|
|
@@ -39,6 +41,15 @@ export declare class AbandonedCartController {
|
|
|
39
41
|
}>;
|
|
40
42
|
exportCsv(ctx: RequestContext, res: Response, daysRaw?: string): Promise<void>;
|
|
41
43
|
detail(ctx: RequestContext, idRaw: string): Promise<any>;
|
|
44
|
+
/**
|
|
45
|
+
* Fill in missing `name` (and, when possible, `productId`) on each
|
|
46
|
+
* cart item by looking up the variant / product from Vendure.
|
|
47
|
+
* Untouched if the item already has a name — the storefront's
|
|
48
|
+
* snapshot at cart time is usually more accurate than a live
|
|
49
|
+
* catalog lookup (a name in Vendure may have changed since the
|
|
50
|
+
* cart was abandoned).
|
|
51
|
+
*/
|
|
52
|
+
private enrichItemsWithNames;
|
|
42
53
|
issueRecoveryLink(ctx: RequestContext, idRaw: string): Promise<{
|
|
43
54
|
error: string;
|
|
44
55
|
hint: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abandoned-cart.controller.d.ts","sourceRoot":"","sources":["../src/abandoned-cart.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,cAAc,EAAqB,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;;;;;;;;;;;;GAaG;AACH,qBACa,uBAAuB;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,oBAAoB;IAIpD,IAAI,CACC,GAAG,EAAE,cAAc,EACX,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACvB,KAAK,CAAC,EAAE,MAAM;;;;;;
|
|
1
|
+
{"version":3,"file":"abandoned-cart.controller.d.ts","sourceRoot":"","sources":["../src/abandoned-cart.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,cAAc,EAAqB,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE;;;;;;;;;;;;;GAaG;AACH,qBACa,uBAAuB;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,oBAAoB;IAIpD,IAAI,CACC,GAAG,EAAE,cAAc,EACX,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACvB,KAAK,CAAC,EAAE,MAAM;;;;;;IAwDlC,uDAAuD;IACvD,OAAO,CAAC,iBAAiB;IAiBnB,OAAO,CAAQ,GAAG,EAAE,cAAc,EAAiB,OAAO,CAAC,EAAE,MAAM;;;;;;;;;;;;;IAuCnE,SAAS,CAAQ,GAAG,EAAE,cAAc,EAAS,GAAG,EAAE,QAAQ,EAAiB,OAAO,CAAC,EAAE,MAAM;IA+B3F,MAAM,CAAQ,GAAG,EAAE,cAAc,EAAe,KAAK,EAAE,MAAM;IAwBnE;;;;;;;OAOG;YACW,oBAAoB;IAyE5B,iBAAiB,CAAQ,GAAG,EAAE,cAAc,EAAe,KAAK,EAAE,MAAM;;;;;;;;;;;IASxE,SAAS,CACJ,GAAG,EAAE,cAAc,EACb,KAAK,EAAE,MAAM,EAClB,IAAI,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;IAWrC;;;;OAIG;IAEG,OAAO,CAAQ,GAAG,EAAE,OAAO,EAAc,KAAK,CAAC,EAAE,MAAM;;;;;;;;;;CAOhE"}
|
|
@@ -58,8 +58,13 @@ let AbandonedCartController = class AbandonedCartController {
|
|
|
58
58
|
const clause = where.length ? `WHERE ${where.join(' AND ')}` : '';
|
|
59
59
|
const conn = this.service.connection.rawConnection;
|
|
60
60
|
const [rows, totalRow] = await Promise.all([
|
|
61
|
-
conn.query(
|
|
62
|
-
|
|
61
|
+
conn.query(
|
|
62
|
+
// itemsJson included so the list can render a preview of the
|
|
63
|
+
// first few item names alongside the count. Slightly heavier
|
|
64
|
+
// than the previous SELECT but capped by LIMIT and paginated,
|
|
65
|
+
// so the payload growth stays proportional to the page size.
|
|
66
|
+
`SELECT id, sessionId, visitorId, customerId, currency, totalMinor, itemCount,
|
|
67
|
+
itemsJson, email, status, abandonedAt, recoveredAt, notificationSent,
|
|
63
68
|
utmSource, utmMedium, countryCode
|
|
64
69
|
FROM abandoned_cart
|
|
65
70
|
${clause}
|
|
@@ -67,12 +72,45 @@ let AbandonedCartController = class AbandonedCartController {
|
|
|
67
72
|
LIMIT ? OFFSET ?`, [...params, take, skip]),
|
|
68
73
|
conn.query(`SELECT COUNT(*) AS c FROM abandoned_cart ${clause}`, params),
|
|
69
74
|
]);
|
|
75
|
+
// Enrich each row with:
|
|
76
|
+
// - items: parsed array (never null; empty array if malformed)
|
|
77
|
+
// - itemsPreview: short human-readable summary
|
|
78
|
+
// ("Windows 11 Pro, Office 2021 +1 more")
|
|
79
|
+
// The preview is a rendering aid — sorted by qty desc so the
|
|
80
|
+
// biggest lines lead, truncated at 3 names + "+N more".
|
|
81
|
+
for (const r of rows) {
|
|
82
|
+
let items = [];
|
|
83
|
+
try {
|
|
84
|
+
items = JSON.parse(r.itemsJson || '[]');
|
|
85
|
+
}
|
|
86
|
+
catch { }
|
|
87
|
+
r.items = items;
|
|
88
|
+
r.itemsPreview = this.buildItemsPreview(items);
|
|
89
|
+
// Drop the raw JSON blob from the list response so the payload
|
|
90
|
+
// stays lean — clients that need it can hit the detail endpoint.
|
|
91
|
+
delete r.itemsJson;
|
|
92
|
+
}
|
|
70
93
|
return {
|
|
71
94
|
items: rows,
|
|
72
95
|
total: Number(((_a = totalRow === null || totalRow === void 0 ? void 0 : totalRow[0]) === null || _a === void 0 ? void 0 : _a.c) || 0),
|
|
73
96
|
take, skip,
|
|
74
97
|
};
|
|
75
98
|
}
|
|
99
|
+
/** Short human summary of a parsed itemsJson array. */
|
|
100
|
+
buildItemsPreview(items) {
|
|
101
|
+
if (!Array.isArray(items) || !items.length)
|
|
102
|
+
return '';
|
|
103
|
+
// Sort a shallow copy so we don't mutate the response body.
|
|
104
|
+
const sorted = [...items].sort((a, b) => Number((b === null || b === void 0 ? void 0 : b.qty) || 0) - Number((a === null || a === void 0 ? void 0 : a.qty) || 0));
|
|
105
|
+
const named = sorted
|
|
106
|
+
.map(i => String((i === null || i === void 0 ? void 0 : i.name) || '').trim())
|
|
107
|
+
.filter(Boolean);
|
|
108
|
+
if (!named.length)
|
|
109
|
+
return `${items.length} item(s)`;
|
|
110
|
+
const head = named.slice(0, 3).join(', ');
|
|
111
|
+
const remaining = named.length - 3;
|
|
112
|
+
return remaining > 0 ? `${head} +${remaining} more` : head;
|
|
113
|
+
}
|
|
76
114
|
async summary(ctx, daysRaw) {
|
|
77
115
|
const days = Math.min(Math.max(1, parseInt(daysRaw || '30', 10) || 30), 365);
|
|
78
116
|
const since = new Date(Date.now() - days * 86400000);
|
|
@@ -142,7 +180,99 @@ let AbandonedCartController = class AbandonedCartController {
|
|
|
142
180
|
items = JSON.parse(r.itemsJson || '[]');
|
|
143
181
|
}
|
|
144
182
|
catch { }
|
|
145
|
-
|
|
183
|
+
// Fill in missing product/variant names by looking them up in
|
|
184
|
+
// Vendure. The storefront snapshot usually captures `name`
|
|
185
|
+
// already; this is a fallback for older data, snapshots taken
|
|
186
|
+
// before the product had a translation, or third-party
|
|
187
|
+
// integrations that fire cart_snapshot without a name field.
|
|
188
|
+
const enrichedItems = await this.enrichItemsWithNames(items);
|
|
189
|
+
return {
|
|
190
|
+
...r,
|
|
191
|
+
items: enrichedItems,
|
|
192
|
+
itemsPreview: this.buildItemsPreview(enrichedItems),
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Fill in missing `name` (and, when possible, `productId`) on each
|
|
197
|
+
* cart item by looking up the variant / product from Vendure.
|
|
198
|
+
* Untouched if the item already has a name — the storefront's
|
|
199
|
+
* snapshot at cart time is usually more accurate than a live
|
|
200
|
+
* catalog lookup (a name in Vendure may have changed since the
|
|
201
|
+
* cart was abandoned).
|
|
202
|
+
*/
|
|
203
|
+
async enrichItemsWithNames(items) {
|
|
204
|
+
if (!Array.isArray(items) || !items.length)
|
|
205
|
+
return items || [];
|
|
206
|
+
const conn = this.service.connection.rawConnection;
|
|
207
|
+
const variantIds = new Set();
|
|
208
|
+
const productIds = new Set();
|
|
209
|
+
for (const it of items) {
|
|
210
|
+
if (it === null || it === void 0 ? void 0 : it.name)
|
|
211
|
+
continue;
|
|
212
|
+
const vid = Number(it === null || it === void 0 ? void 0 : it.variantId);
|
|
213
|
+
const pid = Number(it === null || it === void 0 ? void 0 : it.productId);
|
|
214
|
+
if (Number.isFinite(vid) && vid > 0)
|
|
215
|
+
variantIds.add(vid);
|
|
216
|
+
if (Number.isFinite(pid) && pid > 0)
|
|
217
|
+
productIds.add(pid);
|
|
218
|
+
}
|
|
219
|
+
const variantNames = new Map();
|
|
220
|
+
const productNames = new Map();
|
|
221
|
+
if (variantIds.size) {
|
|
222
|
+
try {
|
|
223
|
+
const vids = Array.from(variantIds);
|
|
224
|
+
const ph = vids.map(() => '?').join(',');
|
|
225
|
+
const rows = await conn.query(`SELECT pv.id AS variantId, pv.productId AS productId, pvt.name AS name
|
|
226
|
+
FROM product_variant pv
|
|
227
|
+
LEFT JOIN product_variant_translation pvt ON pvt.baseId = pv.id
|
|
228
|
+
WHERE pv.id IN (${ph})
|
|
229
|
+
ORDER BY pv.id, pvt.languageCode = 'en' DESC`, vids);
|
|
230
|
+
for (const row of rows) {
|
|
231
|
+
const vid = Number(row.variantId);
|
|
232
|
+
if (variantNames.has(vid))
|
|
233
|
+
continue;
|
|
234
|
+
variantNames.set(vid, {
|
|
235
|
+
name: String(row.name || ''),
|
|
236
|
+
productId: Number(row.productId),
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
catch { /* fail-open */ }
|
|
241
|
+
}
|
|
242
|
+
if (productIds.size) {
|
|
243
|
+
try {
|
|
244
|
+
const pids = Array.from(productIds);
|
|
245
|
+
const ph = pids.map(() => '?').join(',');
|
|
246
|
+
const rows = await conn.query(`SELECT baseId AS productId, name FROM product_translation
|
|
247
|
+
WHERE baseId IN (${ph})
|
|
248
|
+
ORDER BY baseId, languageCode = 'en' DESC`, pids);
|
|
249
|
+
for (const row of rows) {
|
|
250
|
+
const pid = Number(row.productId);
|
|
251
|
+
if (productNames.has(pid))
|
|
252
|
+
continue;
|
|
253
|
+
productNames.set(pid, String(row.name || ''));
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
catch { /* fail-open */ }
|
|
257
|
+
}
|
|
258
|
+
return items.map(it => {
|
|
259
|
+
if (it === null || it === void 0 ? void 0 : it.name)
|
|
260
|
+
return it;
|
|
261
|
+
const vid = Number(it === null || it === void 0 ? void 0 : it.variantId);
|
|
262
|
+
const vinfo = variantNames.get(vid);
|
|
263
|
+
if (vinfo === null || vinfo === void 0 ? void 0 : vinfo.name) {
|
|
264
|
+
return {
|
|
265
|
+
...it,
|
|
266
|
+
name: vinfo.name,
|
|
267
|
+
productId: it.productId || vinfo.productId,
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
const pid = Number(it === null || it === void 0 ? void 0 : it.productId);
|
|
271
|
+
const pname = productNames.get(pid);
|
|
272
|
+
if (pname)
|
|
273
|
+
return { ...it, name: pname };
|
|
274
|
+
return it;
|
|
275
|
+
});
|
|
146
276
|
}
|
|
147
277
|
async issueRecoveryLink(ctx, idRaw) {
|
|
148
278
|
const id = parseInt(idRaw, 10);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abandoned-cart.controller.js","sourceRoot":"","sources":["../src/abandoned-cart.controller.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"abandoned-cart.controller.js","sourceRoot":"","sources":["../src/abandoned-cart.controller.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ 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
9
|
export { AbandonedCartService, CartSnapshotMeta, AbandonmentOptions, } from './abandoned-cart.service';
|
|
10
|
-
export { RecommendationsService } from './recommendations.service';
|
|
10
|
+
export { RecommendationsService, RecommendedProduct } from './recommendations.service';
|
|
11
11
|
export { SearchAnalyticsService } from './search-analytics.service';
|
|
12
12
|
export { JourneyBuffsService } from './journey-buffs.service';
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|
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,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;
|
|
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,GACrB,MAAM,0BAA0B,CAAC;AAClC,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.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,mEAIkC;AAH9B,8HAAA,oBAAoB,OAAA;AAIxB,
|
|
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,mEAIkC;AAH9B,8HAAA,oBAAoB,OAAA;AAIxB,qEAAuF;AAA9E,iIAAA,sBAAsB,OAAA;AAC/B,uEAAoE;AAA3D,kIAAA,sBAAsB,OAAA;AAC/B,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA"}
|
|
@@ -21,10 +21,7 @@ export declare class RecommendationsController {
|
|
|
21
21
|
items?: undefined;
|
|
22
22
|
} | {
|
|
23
23
|
productId: number;
|
|
24
|
-
items:
|
|
25
|
-
productId: number;
|
|
26
|
-
score: number;
|
|
27
|
-
}[];
|
|
24
|
+
items: import("./recommendations.service").RecommendedProduct[];
|
|
28
25
|
error?: undefined;
|
|
29
26
|
}>;
|
|
30
27
|
/**
|
|
@@ -40,10 +37,7 @@ export declare class RecommendationsController {
|
|
|
40
37
|
items?: undefined;
|
|
41
38
|
} | {
|
|
42
39
|
visitorId: string;
|
|
43
|
-
items:
|
|
44
|
-
productId: number;
|
|
45
|
-
score: number;
|
|
46
|
-
}[];
|
|
40
|
+
items: import("./recommendations.service").RecommendedProduct[];
|
|
47
41
|
error?: undefined;
|
|
48
42
|
}>;
|
|
49
43
|
/**
|
|
@@ -53,10 +47,7 @@ export declare class RecommendationsController {
|
|
|
53
47
|
trending(chRaw?: string, hRaw?: string, lRaw?: string): Promise<{
|
|
54
48
|
channelId: number;
|
|
55
49
|
hours: number;
|
|
56
|
-
items:
|
|
57
|
-
productId: number;
|
|
58
|
-
views: number;
|
|
59
|
-
}[];
|
|
50
|
+
items: import("./recommendations.service").RecommendedProduct[];
|
|
60
51
|
}>;
|
|
61
52
|
/**
|
|
62
53
|
* Admin-only: manually kick the aggregation cron. Normally runs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recommendations.controller.d.ts","sourceRoot":"","sources":["../src/recommendations.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,cAAc,EAAqB,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE;;;;;;;GAOG;AACH,qBACa,yBAAyB;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,sBAAsB;IAE5D;;;OAGG;IAEG,UAAU,CACQ,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"recommendations.controller.d.ts","sourceRoot":"","sources":["../src/recommendations.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,cAAc,EAAqB,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE;;;;;;;GAOG;AACH,qBACa,yBAAyB;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,sBAAsB;IAE5D;;;OAGG;IAEG,UAAU,CACQ,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM;;;;;;;;;IAUrC;;;;;;OAMG;IAEG,QAAQ,CACU,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM;;;;;;;;;IAUrC;;;OAGG;IAEG,QAAQ,CACU,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM;;;;;IASrC;;;;OAIG;IAGG,YAAY,CAAQ,GAAG,EAAE,cAAc,EAAkB,IAAI,CAAC,EAAE,MAAM;;;;;CAK/E"}
|
|
@@ -1,4 +1,19 @@
|
|
|
1
1
|
import { TransactionalConnection } from '@vendure/core';
|
|
2
|
+
/** Row shape returned by every read-side endpoint. `productName` and
|
|
3
|
+
* `productSlug` are best-effort enrichments — they'll be null when
|
|
4
|
+
* the product has been deleted or when the `product_translation`
|
|
5
|
+
* table doesn't have a row for it in any language. */
|
|
6
|
+
export interface RecommendedProduct {
|
|
7
|
+
productId: number;
|
|
8
|
+
productName: string | null;
|
|
9
|
+
productSlug: string | null;
|
|
10
|
+
/** Numeric score returned by whichever endpoint produced this row.
|
|
11
|
+
* Callers should read `score` for co-view based responses and
|
|
12
|
+
* `views` for the raw trending endpoint — both are populated
|
|
13
|
+
* here so a UI can render one column regardless. */
|
|
14
|
+
score: number;
|
|
15
|
+
views: number;
|
|
16
|
+
}
|
|
2
17
|
/**
|
|
3
18
|
* Product recommendations driven by observed co-viewing behaviour.
|
|
4
19
|
*
|
|
@@ -12,6 +27,13 @@ import { TransactionalConnection } from '@vendure/core';
|
|
|
12
27
|
* data for the latter, and small stores don't have enough of it for
|
|
13
28
|
* useful signals. Co-views come from every browsing session, so a
|
|
14
29
|
* store with 1k daily visitors gets useful recs from day one.
|
|
30
|
+
*
|
|
31
|
+
* Every read-side response is enriched with the product NAME and
|
|
32
|
+
* SLUG (via a single bulk lookup against `product_translation`) so
|
|
33
|
+
* the admin UI + a first-party storefront can render "Windows Server
|
|
34
|
+
* 2022 Datacenter #42" without a second round-trip. Bare product ids
|
|
35
|
+
* are still returned so storefronts that prefer their own hydration
|
|
36
|
+
* path can ignore the extra fields.
|
|
15
37
|
*/
|
|
16
38
|
export declare class RecommendationsService {
|
|
17
39
|
private connection;
|
|
@@ -31,32 +53,33 @@ export declare class RecommendationsService {
|
|
|
31
53
|
}>;
|
|
32
54
|
/**
|
|
33
55
|
* Read side: "customers who viewed X also viewed Y" for one
|
|
34
|
-
* product, ordered by co-view score, capped at `limit`.
|
|
35
|
-
* bare product ids so the storefront can hydrate names / images
|
|
36
|
-
* from its usual product-fetch path.
|
|
56
|
+
* product, ordered by co-view score, capped at `limit`.
|
|
37
57
|
*/
|
|
38
|
-
alsoViewed(productId: number, channelId?: number, limit?: number): Promise<
|
|
39
|
-
productId: number;
|
|
40
|
-
score: number;
|
|
41
|
-
}>>;
|
|
58
|
+
alsoViewed(productId: number, channelId?: number, limit?: number): Promise<RecommendedProduct[]>;
|
|
42
59
|
/**
|
|
43
60
|
* Personalised recommendations for a returning visitor: look at
|
|
44
61
|
* the last N products they viewed, and rank co-viewed products by
|
|
45
62
|
* combined score across those seed products (excluding the seeds
|
|
46
63
|
* themselves).
|
|
47
64
|
*/
|
|
48
|
-
personalRecommendations(visitorId: string, channelId?: number, limit?: number): Promise<
|
|
49
|
-
productId: number;
|
|
50
|
-
score: number;
|
|
51
|
-
}>>;
|
|
65
|
+
personalRecommendations(visitorId: string, channelId?: number, limit?: number): Promise<RecommendedProduct[]>;
|
|
52
66
|
/**
|
|
53
67
|
* "Trending now" — most-viewed products in the last N hours.
|
|
54
68
|
* Useful for a homepage rail; uses `product_view` events, so it
|
|
55
69
|
* reflects real interest, not just search-console clicks.
|
|
56
70
|
*/
|
|
57
|
-
trending(channelId?: number, sinceHours?: number, limit?: number): Promise<
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
71
|
+
trending(channelId?: number, sinceHours?: number, limit?: number): Promise<RecommendedProduct[]>;
|
|
72
|
+
/**
|
|
73
|
+
* Bulk-fetch product names + slugs for a list of product ids in
|
|
74
|
+
* one round-trip. Prefers the English translation when a product
|
|
75
|
+
* has more than one, then falls back to whichever translation
|
|
76
|
+
* MariaDB returns first. Returns two maps keyed by productId; keys
|
|
77
|
+
* absent from the maps mean the product either doesn't exist any
|
|
78
|
+
* more or has no translation row at all (unusual — Vendure
|
|
79
|
+
* always creates one on product create).
|
|
80
|
+
*/
|
|
81
|
+
private fetchProductInfo;
|
|
82
|
+
/** Apply the bulk name lookup to a set of raw rec rows. */
|
|
83
|
+
private enrichWithNames;
|
|
61
84
|
}
|
|
62
85
|
//# sourceMappingURL=recommendations.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recommendations.service.d.ts","sourceRoot":"","sources":["../src/recommendations.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAIxD
|
|
1
|
+
{"version":3,"file":"recommendations.service.d.ts","sourceRoot":"","sources":["../src/recommendations.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAIxD;;;uDAGuD;AACvD,MAAM,WAAW,kBAAkB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;yDAGqD;IACrD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBACa,sBAAsB;IACnB,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,uBAAuB;IAEvD;;;;;;;;;OASG;IACG,gBAAgB,CAAC,UAAU,SAAK,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAyDnE;;;OAGG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,SAAI,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAgB7F;;;;;OAKG;IACG,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,SAAI,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAmC1G;;;;OAIG;IACG,QAAQ,CAAC,SAAS,SAAI,EAAE,UAAU,SAAK,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAwBzF;;;;;;;;OAQG;YACW,gBAAgB;IAuC9B,2DAA2D;YAC7C,eAAe;CAehC"}
|
|
@@ -26,6 +26,13 @@ const loggerCtx = 'HuloRecommendationsService';
|
|
|
26
26
|
* data for the latter, and small stores don't have enough of it for
|
|
27
27
|
* useful signals. Co-views come from every browsing session, so a
|
|
28
28
|
* store with 1k daily visitors gets useful recs from day one.
|
|
29
|
+
*
|
|
30
|
+
* Every read-side response is enriched with the product NAME and
|
|
31
|
+
* SLUG (via a single bulk lookup against `product_translation`) so
|
|
32
|
+
* the admin UI + a first-party storefront can render "Windows Server
|
|
33
|
+
* 2022 Datacenter #42" without a second round-trip. Bare product ids
|
|
34
|
+
* are still returned so storefronts that prefer their own hydration
|
|
35
|
+
* path can ignore the extra fields.
|
|
29
36
|
*/
|
|
30
37
|
let RecommendationsService = class RecommendationsService {
|
|
31
38
|
constructor(connection) {
|
|
@@ -94,9 +101,7 @@ let RecommendationsService = class RecommendationsService {
|
|
|
94
101
|
}
|
|
95
102
|
/**
|
|
96
103
|
* Read side: "customers who viewed X also viewed Y" for one
|
|
97
|
-
* product, ordered by co-view score, capped at `limit`.
|
|
98
|
-
* bare product ids so the storefront can hydrate names / images
|
|
99
|
-
* from its usual product-fetch path.
|
|
104
|
+
* product, ordered by co-view score, capped at `limit`.
|
|
100
105
|
*/
|
|
101
106
|
async alsoViewed(productId, channelId = 1, limit = 10) {
|
|
102
107
|
const rows = await this.connection.rawConnection.query(`SELECT productIdB AS productId, viewsTogether AS score
|
|
@@ -104,7 +109,11 @@ let RecommendationsService = class RecommendationsService {
|
|
|
104
109
|
WHERE productIdA = ? AND channelId = ?
|
|
105
110
|
ORDER BY viewsTogether DESC, lastUpdated DESC
|
|
106
111
|
LIMIT ?`, [productId, channelId, Math.min(Math.max(1, limit), 50)]);
|
|
107
|
-
return rows.map(r => ({
|
|
112
|
+
return this.enrichWithNames(rows.map(r => ({
|
|
113
|
+
productId: Number(r.productId),
|
|
114
|
+
score: Number(r.score),
|
|
115
|
+
views: Number(r.score),
|
|
116
|
+
})));
|
|
108
117
|
}
|
|
109
118
|
/**
|
|
110
119
|
* Personalised recommendations for a returning visitor: look at
|
|
@@ -135,7 +144,11 @@ let RecommendationsService = class RecommendationsService {
|
|
|
135
144
|
GROUP BY productIdB
|
|
136
145
|
ORDER BY score DESC
|
|
137
146
|
LIMIT ?`, [...seedIds, channelId, ...seedIds, Math.min(Math.max(1, limit), 50)]);
|
|
138
|
-
return rows.map(r => ({
|
|
147
|
+
return this.enrichWithNames(rows.map(r => ({
|
|
148
|
+
productId: Number(r.productId),
|
|
149
|
+
score: Number(r.score),
|
|
150
|
+
views: Number(r.score),
|
|
151
|
+
})));
|
|
139
152
|
}
|
|
140
153
|
/**
|
|
141
154
|
* "Trending now" — most-viewed products in the last N hours.
|
|
@@ -156,7 +169,68 @@ let RecommendationsService = class RecommendationsService {
|
|
|
156
169
|
HAVING productId > 0
|
|
157
170
|
ORDER BY views DESC
|
|
158
171
|
LIMIT ?`, [channelId, since, Math.min(Math.max(1, limit), 50)]);
|
|
159
|
-
return rows.map(r => ({
|
|
172
|
+
return this.enrichWithNames(rows.map(r => ({
|
|
173
|
+
productId: Number(r.productId),
|
|
174
|
+
score: Number(r.views),
|
|
175
|
+
views: Number(r.views),
|
|
176
|
+
})));
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Bulk-fetch product names + slugs for a list of product ids in
|
|
180
|
+
* one round-trip. Prefers the English translation when a product
|
|
181
|
+
* has more than one, then falls back to whichever translation
|
|
182
|
+
* MariaDB returns first. Returns two maps keyed by productId; keys
|
|
183
|
+
* absent from the maps mean the product either doesn't exist any
|
|
184
|
+
* more or has no translation row at all (unusual — Vendure
|
|
185
|
+
* always creates one on product create).
|
|
186
|
+
*/
|
|
187
|
+
async fetchProductInfo(ids) {
|
|
188
|
+
const names = new Map();
|
|
189
|
+
const slugs = new Map();
|
|
190
|
+
if (!ids.length)
|
|
191
|
+
return { names, slugs };
|
|
192
|
+
const placeholders = ids.map(() => '?').join(',');
|
|
193
|
+
try {
|
|
194
|
+
// `deletedAt IS NULL` on product so we don't surface
|
|
195
|
+
// soft-deleted products in the admin UI. Order by
|
|
196
|
+
// languageCode = 'en' DESC so English wins the tie for
|
|
197
|
+
// multi-locale stores; single-locale installs will
|
|
198
|
+
// naturally land on their only translation.
|
|
199
|
+
const rows = await this.connection.rawConnection.query(`SELECT pt.baseId AS productId, pt.name, pt.slug
|
|
200
|
+
FROM product_translation pt
|
|
201
|
+
JOIN product p ON p.id = pt.baseId AND p.deletedAt IS NULL
|
|
202
|
+
WHERE pt.baseId IN (${placeholders})
|
|
203
|
+
ORDER BY pt.baseId, pt.languageCode = 'en' DESC`, ids);
|
|
204
|
+
for (const r of rows) {
|
|
205
|
+
const id = Number(r.productId);
|
|
206
|
+
// First-write wins — the ORDER BY puts English first
|
|
207
|
+
// for each baseId, so we keep that one and skip
|
|
208
|
+
// subsequent translations.
|
|
209
|
+
if (!names.has(id))
|
|
210
|
+
names.set(id, String(r.name || ''));
|
|
211
|
+
if (!slugs.has(id))
|
|
212
|
+
slugs.set(id, String(r.slug || ''));
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
catch (e) {
|
|
216
|
+
// Never break the recs endpoint on a name-lookup failure —
|
|
217
|
+
// an admin can still see the id and click through to the
|
|
218
|
+
// Vendure catalog page manually.
|
|
219
|
+
common_1.Logger.warn(`Product info lookup failed: ${e === null || e === void 0 ? void 0 : e.message}`, loggerCtx);
|
|
220
|
+
}
|
|
221
|
+
return { names, slugs };
|
|
222
|
+
}
|
|
223
|
+
/** Apply the bulk name lookup to a set of raw rec rows. */
|
|
224
|
+
async enrichWithNames(rows) {
|
|
225
|
+
const ids = rows.map(r => r.productId);
|
|
226
|
+
const { names, slugs } = await this.fetchProductInfo(ids);
|
|
227
|
+
return rows.map(r => ({
|
|
228
|
+
productId: r.productId,
|
|
229
|
+
productName: names.get(r.productId) || null,
|
|
230
|
+
productSlug: slugs.get(r.productId) || null,
|
|
231
|
+
score: r.score,
|
|
232
|
+
views: r.views,
|
|
233
|
+
}));
|
|
160
234
|
}
|
|
161
235
|
};
|
|
162
236
|
exports.RecommendationsService = RecommendationsService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recommendations.service.js","sourceRoot":"","sources":["../src/recommendations.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAoD;AACpD,wCAAwD;AAExD,MAAM,SAAS,GAAG,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"recommendations.service.js","sourceRoot":"","sources":["../src/recommendations.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@huloglobal/vendure-plugin-visitor-analytics",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.4",
|
|
4
4
|
"description": "Full-funnel visitor analytics for Vendure storefronts \u2014 pageviews, time-on-page, session journey, exit pages, funnel drop-off, and per-visitor profile drawer with parsed user-agent + MaxMind GeoLite2 enrichment. Auto-issues visitor + session cookies on first request; logs guest and signed-in events against the same visitor id so the journey survives login.",
|
|
5
5
|
"license": "AGPL-3.0-or-later",
|
|
6
6
|
"author": "Wayne Garrison <wayne@garrison.me.uk>",
|