@huloglobal/vendure-plugin-visitor-analytics 0.9.0 → 0.9.1

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.
@@ -56,6 +56,17 @@ export declare class VisitorTrackingController implements OnApplicationBootstrap
56
56
  * Each event payload:
57
57
  * data: { ts, activeCount, recent: [{ visitorId, url, country, secondsAgo }] }
58
58
  */
59
+ /**
60
+ * List channels the current admin can see, for the Visitor Journey
61
+ * channel picker. Cheap read — one row per channel with just the
62
+ * id + code + token. Reflects the union of channels visible under
63
+ * `Permission.ReadChannel`.
64
+ *
65
+ * Kept in this plugin (rather than requiring the admin UI to talk
66
+ * to the Vendure /admin-api directly) so a stripped-down install
67
+ * still gets the picker working with zero extra wiring.
68
+ */
69
+ channelList(ctx: RequestContext, res: Response): Promise<Response<any, Record<string, any>> | undefined>;
59
70
  live(ctx: RequestContext, req: Request, res: Response): Promise<Response<any, Record<string, any>> | undefined>;
60
71
  /** Journey timeline for one visitor — every event in order. */
61
72
  journey(ctx: RequestContext, visitorId: string, res: Response): Promise<Response<any, Record<string, any>> | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"visitor-tracking.controller.d.ts","sourceRoot":"","sources":["../src/visitor-tracking.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"visitor-tracking.controller.d.ts","sourceRoot":"","sources":["../src/visitor-tracking.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,sBAAsB,EAAE,eAAe,EAA8B,MAAM,gBAAgB,CAAC;AAUpI,OAAO,EAAmB,cAAc,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAI5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AA2FpE,qBACa,yBAA0B,YAAW,sBAAsB,EAAE,eAAe;IAKjF,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,QAAQ;IALpB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,aAAa,CAA6B;gBAGtC,UAAU,EAAE,uBAAuB,EACnC,QAAQ,EAAE,sBAAsB;IAG5C,sBAAsB,IAAI,IAAI;IAc9B,eAAe,IAAI,IAAI;IAKvB,OAAO,CAAC,WAAW;IAWnB;;;;;;;;;;;;;;;;;OAiBG;IAEG,KAAK,CAAS,IAAI,EAAE,GAAG,EAAS,GAAG,EAAE,OAAO,EAAS,GAAG,EAAE,QAAQ;IAqGxE,iEAAiE;IAE3D,OAAO,CAAQ,GAAG,EAAE,cAAc,EAAS,GAAG,EAAE,OAAO,EAAS,GAAG,EAAE,QAAQ;IA4CnF;;wCAEoC;IAE9B,OAAO,CAAQ,GAAG,EAAE,cAAc,EAAS,GAAG,EAAE,OAAO,EAAS,GAAG,EAAE,QAAQ;IAyDnF,0DAA0D;IAEpD,QAAQ,CAAQ,GAAG,EAAE,cAAc,EAAS,GAAG,EAAE,OAAO,EAAS,GAAG,EAAE,QAAQ;IAsCpF,oEAAoE;IAE9D,MAAM,CAAQ,GAAG,EAAE,cAAc,EAAS,GAAG,EAAE,OAAO,EAAS,GAAG,EAAE,QAAQ;IAwBlF;+CAC2C;IAErC,SAAS,CAAQ,GAAG,EAAE,cAAc,EAAS,GAAG,EAAE,OAAO,EAAS,GAAG,EAAE,QAAQ;IA0CrF;;uCAEmC;IAE7B,SAAS,CAAQ,GAAG,EAAE,cAAc,EAAS,GAAG,EAAE,OAAO,EAAS,GAAG,EAAE,QAAQ;IAqCrF;;;;;;;;OAQG;IACH;;;;;;;;;OASG;IAEG,WAAW,CAAQ,GAAG,EAAE,cAAc,EAAS,GAAG,EAAE,QAAQ;IAe5D,IAAI,CAAQ,GAAG,EAAE,cAAc,EAAS,GAAG,EAAE,OAAO,EAAS,GAAG,EAAE,QAAQ;IAqDhF,+DAA+D;IAEzD,OAAO,CAAQ,GAAG,EAAE,cAAc,EAAsB,SAAS,EAAE,MAAM,EAAS,GAAG,EAAE,QAAQ;IAUrG,mDAAmD;IAE7C,MAAM,CAAQ,GAAG,EAAE,cAAc,EAAS,GAAG,EAAE,OAAO,EAAS,GAAG,EAAE,QAAQ;IAkDlF;;;yCAGqC;IAE/B,OAAO,CAAQ,GAAG,EAAE,cAAc,EAAsB,YAAY,EAAE,MAAM,EAAS,GAAG,EAAE,QAAQ;IAyGxG,OAAO,CAAC,SAAS;IAgBjB;;qEAEiE;IACjE,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,YAAY;IAapB;mEAC+D;IAEzD,MAAM,CAAQ,GAAG,EAAE,cAAc,EAAS,GAAG,EAAE,QAAQ;IAc7D,uCAAuC;IAEjC,SAAS,CAAQ,GAAG,EAAE,cAAc,EAAS,GAAG,EAAE,OAAO,EAAS,GAAG,EAAE,QAAQ;IAQrF,4BAA4B;IAEtB,UAAU,CAAQ,GAAG,EAAE,cAAc,EAAU,IAAI,EAAE,GAAG,EAAS,GAAG,EAAE,QAAQ;IAqBpF,4BAA4B;IAEtB,UAAU,CAAQ,GAAG,EAAE,cAAc,EAAe,OAAO,EAAE,MAAM,EAAU,IAAI,EAAE,GAAG,EAAS,GAAG,EAAE,QAAQ;IAelH,4BAA4B;IAEtB,UAAU,CAAQ,GAAG,EAAE,cAAc,EAAe,OAAO,EAAE,MAAM,EAAS,GAAG,EAAE,QAAQ;IAS/F,+DAA+D;IAEzD,UAAU,CAAQ,GAAG,EAAE,cAAc,EAAS,GAAG,EAAE,OAAO,EAAS,GAAG,EAAE,QAAQ;IAuBtF,sEAAsE;IAEhE,SAAS,CAAQ,GAAG,EAAE,cAAc,EAAS,GAAG,EAAE,OAAO,EAAS,GAAG,EAAE,QAAQ;CAuCxF"}
@@ -70,6 +70,45 @@ function clampInt(raw, fallback, min, max) {
70
70
  return fallback;
71
71
  return Math.max(min, Math.min(max, n));
72
72
  }
73
+ /**
74
+ * Parse a `?channelId=` query param.
75
+ *
76
+ * Returns:
77
+ * - `null` when omitted / empty / `0` / `all` → do NOT filter by channel
78
+ * (aggregate across every channel)
79
+ * - a positive integer otherwise → filter to that channel
80
+ *
81
+ * Anything unparseable falls back to `null` so a bad param never
82
+ * silently narrows the result set to channel 1.
83
+ */
84
+ function parseChannelId(raw) {
85
+ const s = String(raw !== null && raw !== void 0 ? raw : '').trim().toLowerCase();
86
+ if (!s || s === '0' || s === 'all')
87
+ return null;
88
+ const n = parseInt(s, 10);
89
+ if (!Number.isFinite(n) || n <= 0)
90
+ return null;
91
+ return n;
92
+ }
93
+ /**
94
+ * Build a `WHERE`/`AND` fragment + params array for the channel
95
+ * filter. Returns `{ sql: '', params: [] }` when `channelId` is
96
+ * null, so callers can always append `${w.sql}` and spread
97
+ * `w.params` unconditionally.
98
+ *
99
+ * Usage:
100
+ * const w = channelWhere(channelId, 've');
101
+ * const rows = await conn.query(
102
+ * `SELECT ... FROM visitor_event ve
103
+ * WHERE createdAt >= ? ${w.sql}`,
104
+ * [cutoff, ...w.params]);
105
+ */
106
+ function channelWhere(channelId, alias) {
107
+ if (channelId == null)
108
+ return { sql: '', params: [] };
109
+ const col = alias ? `${alias}.channelId` : 'channelId';
110
+ return { sql: `AND ${col} = ?`, params: [channelId] };
111
+ }
73
112
  const proxy_headers_1 = require("./proxy-headers");
74
113
  function realIp(req) { return (0, proxy_headers_1.getRealIp)(req); }
75
114
  let VisitorTrackingController = class VisitorTrackingController {
@@ -221,23 +260,25 @@ let VisitorTrackingController = class VisitorTrackingController {
221
260
  if (!requireAdmin(ctx, res))
222
261
  return;
223
262
  const days = Math.min(Math.max(parseInt(String(req.query.days || '30'), 10) || 30, 1), 365);
263
+ const channelId = parseChannelId(req.query.channelId);
264
+ const w = channelWhere(channelId);
224
265
  const rows = await this.connection.rawConnection.query(`SELECT DATE(createdAt) AS day,
225
266
  COUNT(DISTINCT visitorId) AS visitors,
226
267
  COUNT(DISTINCT sessionId) AS sessions,
227
268
  COUNT(*) AS events,
228
269
  SUM(type='pageview') AS pageviews
229
270
  FROM visitor_event
230
- WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY)
271
+ WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY) ${w.sql}
231
272
  GROUP BY DATE(createdAt)
232
- ORDER BY day`, [days]);
273
+ ORDER BY day`, [days, ...w.params]);
233
274
  const [{ totalVisitors, totalSessions, totalPageviews, avgTimeMs }] = await this.connection.rawConnection.query(`SELECT COUNT(DISTINCT visitorId) AS totalVisitors,
234
275
  COUNT(DISTINCT sessionId) AS totalSessions,
235
276
  SUM(type='pageview') AS totalPageviews,
236
277
  AVG(CASE WHEN type='unload' AND timeOnPageMs > 0 THEN timeOnPageMs END) AS avgTimeMs
237
278
  FROM visitor_event
238
- WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY)`, [days]);
279
+ WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY) ${w.sql}`, [days, ...w.params]);
239
280
  return res.json({
240
- days,
281
+ days, channelId,
241
282
  totals: {
242
283
  visitors: Number(totalVisitors) || 0,
243
284
  sessions: Number(totalSessions) || 0,
@@ -262,6 +303,8 @@ let VisitorTrackingController = class VisitorTrackingController {
262
303
  const days = clampInt(req.query.days, 30, 1, 365);
263
304
  const take = clampInt(req.query.take, 25, 1, 500);
264
305
  const skip = clampInt(req.query.skip, 0, 0, 1000000);
306
+ const channelId = parseChannelId(req.query.channelId);
307
+ const w = channelWhere(channelId);
265
308
  const rows = await this.connection.rawConnection.query(`SELECT source, medium, COALESCE(MAX(campaign), '') AS campaign,
266
309
  COUNT(DISTINCT visitorId) AS visitors,
267
310
  COUNT(DISTINCT sessionId) AS sessions,
@@ -275,22 +318,22 @@ let VisitorTrackingController = class VisitorTrackingController {
275
318
  MAX(CASE WHEN url LIKE '/products/%' AND type='pageview' THEN 1 ELSE 0 END) AS reached_product,
276
319
  MAX(CASE WHEN (url LIKE '%/checkout%' OR url LIKE '%cart%') AND type='pageview' THEN 1 ELSE 0 END) AS reached_checkout
277
320
  FROM visitor_event
278
- WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY)
279
- GROUP BY visitorId, sessionId,
321
+ WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY) ${w.sql}
322
+ GROUP BY visitorId, sessionId,
280
323
  COALESCE(utmSource, referrerDomain, '(direct)'),
281
324
  COALESCE(utmMedium, IF(referrerDomain IS NOT NULL, 'referral', 'none')),
282
325
  utmCampaign
283
326
  ) by_session
284
327
  GROUP BY source, medium
285
328
  ORDER BY visitors DESC
286
- LIMIT ? OFFSET ?`, [days, take, skip]);
329
+ LIMIT ? OFFSET ?`, [days, take, skip, ...w.params]);
287
330
  const [{ total }] = await this.connection.rawConnection.query(`SELECT COUNT(*) AS total FROM (
288
331
  SELECT DISTINCT
289
332
  COALESCE(utmSource, referrerDomain, '(direct)') AS source,
290
333
  COALESCE(utmMedium, IF(referrerDomain IS NOT NULL, 'referral', 'none')) AS medium
291
334
  FROM visitor_event
292
- WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY)
293
- ) sources`, [days]);
335
+ WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY) ${w.sql}
336
+ ) sources`, [days, ...w.params]);
294
337
  return res.json({
295
338
  sources: rows.map((r) => ({
296
339
  source: r.source,
@@ -311,20 +354,22 @@ let VisitorTrackingController = class VisitorTrackingController {
311
354
  const days = clampInt(req.query.days, 30, 1, 365);
312
355
  const take = clampInt(req.query.take, 25, 1, 500);
313
356
  const skip = clampInt(req.query.skip, 0, 0, 1000000);
357
+ const channelId = parseChannelId(req.query.channelId);
358
+ const w = channelWhere(channelId);
314
359
  const rows = await this.connection.rawConnection.query(`SELECT url,
315
360
  MAX(title) AS title,
316
361
  COUNT(*) AS views,
317
362
  COUNT(DISTINCT visitorId) AS uniqueVisitors,
318
363
  AVG(NULLIF(timeOnPageMs, 0)) AS avgTimeMs
319
364
  FROM visitor_event
320
- WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY)
321
- AND type IN ('pageview', 'unload')
365
+ WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY) ${w.sql}
366
+ AND type IN ('pageview', 'unload')
322
367
  GROUP BY url
323
368
  ORDER BY views DESC
324
- LIMIT ? OFFSET ?`, [days, take, skip]);
369
+ LIMIT ? OFFSET ?`, [days, take, skip, ...w.params]);
325
370
  const [{ total }] = await this.connection.rawConnection.query(`SELECT COUNT(DISTINCT url) AS total FROM visitor_event
326
- WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY)
327
- AND type IN ('pageview', 'unload')`, [days]);
371
+ WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY) ${w.sql}
372
+ AND type IN ('pageview', 'unload')`, [days, ...w.params]);
328
373
  return res.json({
329
374
  pages: rows.map((r) => ({
330
375
  url: r.url, title: r.title,
@@ -340,6 +385,8 @@ let VisitorTrackingController = class VisitorTrackingController {
340
385
  if (!requireAdmin(ctx, res))
341
386
  return;
342
387
  const days = Math.min(Math.max(parseInt(String(req.query.days || '30'), 10) || 30, 1), 365);
388
+ const channelId = parseChannelId(req.query.channelId);
389
+ const w = channelWhere(channelId);
343
390
  const stages = [
344
391
  { key: 'visited', label: 'Any page', where: `1=1` },
345
392
  { key: 'viewed', label: 'Viewed a product', where: `url LIKE '/products/%'` },
@@ -349,8 +396,8 @@ let VisitorTrackingController = class VisitorTrackingController {
349
396
  const result = [];
350
397
  for (const s of stages) {
351
398
  const [{ n }] = await this.connection.rawConnection.query(`SELECT COUNT(DISTINCT visitorId) AS n FROM visitor_event
352
- WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY)
353
- AND type='pageview' AND (${s.where})`, [days]);
399
+ WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY) ${w.sql}
400
+ AND type='pageview' AND (${s.where})`, [days, ...w.params]);
354
401
  result.push({ key: s.key, label: s.label, visitors: Number(n) || 0 });
355
402
  }
356
403
  return res.json({ days, stages: result });
@@ -363,6 +410,8 @@ let VisitorTrackingController = class VisitorTrackingController {
363
410
  const days = clampInt(req.query.days, 30, 1, 365);
364
411
  const take = clampInt(req.query.take, 25, 1, 500);
365
412
  const skip = clampInt(req.query.skip, 0, 0, 1000000);
413
+ const channelId = parseChannelId(req.query.channelId);
414
+ const w = channelWhere(channelId);
366
415
  const rows = await this.connection.rawConnection.query(`SELECT url,
367
416
  MAX(title) AS title,
368
417
  COUNT(*) AS exits
@@ -370,19 +419,20 @@ let VisitorTrackingController = class VisitorTrackingController {
370
419
  SELECT sessionId, url, title, createdAt,
371
420
  ROW_NUMBER() OVER (PARTITION BY sessionId ORDER BY createdAt DESC) AS rn
372
421
  FROM visitor_event
373
- WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY)
422
+ WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY) ${w.sql}
374
423
  AND type='pageview'
375
424
  ) last_pages
376
425
  WHERE rn = 1
377
426
  GROUP BY url
378
427
  ORDER BY exits DESC
379
- LIMIT ? OFFSET ?`, [days, take, skip]);
428
+ LIMIT ? OFFSET ?`, [days, take, skip, ...w.params]);
380
429
  const [{ total }] = await this.connection.rawConnection.query(`SELECT COUNT(DISTINCT url) AS total FROM (
381
430
  SELECT sessionId, url,
382
431
  ROW_NUMBER() OVER (PARTITION BY sessionId ORDER BY createdAt DESC) AS rn
383
432
  FROM visitor_event
384
- WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY) AND type='pageview'
385
- ) lp WHERE rn = 1`, [days]);
433
+ WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY) ${w.sql}
434
+ AND type='pageview'
435
+ ) lp WHERE rn = 1`, [days, ...w.params]);
386
436
  return res.json({
387
437
  exitPages: rows.map((r) => ({
388
438
  url: r.url, title: r.title, exits: Number(r.exits) || 0,
@@ -399,19 +449,21 @@ let VisitorTrackingController = class VisitorTrackingController {
399
449
  const days = clampInt(req.query.days, 30, 1, 365);
400
450
  const take = clampInt(req.query.take, 25, 1, 500);
401
451
  const skip = clampInt(req.query.skip, 0, 0, 1000000);
452
+ const channelId = parseChannelId(req.query.channelId);
453
+ const w = channelWhere(channelId);
402
454
  const rows = await this.connection.rawConnection.query(`SELECT type,
403
455
  COUNT(*) AS count,
404
456
  COUNT(DISTINCT visitorId) AS uniqueVisitors,
405
457
  COUNT(DISTINCT sessionId) AS sessions
406
458
  FROM visitor_event
407
- WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY)
408
- AND type NOT IN ('pageview', 'unload')
459
+ WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY) ${w.sql}
460
+ AND type NOT IN ('pageview', 'unload')
409
461
  GROUP BY type
410
462
  ORDER BY count DESC
411
- LIMIT ? OFFSET ?`, [days, take, skip]);
463
+ LIMIT ? OFFSET ?`, [days, take, skip, ...w.params]);
412
464
  const [{ total }] = await this.connection.rawConnection.query(`SELECT COUNT(DISTINCT type) AS total FROM visitor_event
413
- WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY)
414
- AND type NOT IN ('pageview', 'unload')`, [days]);
465
+ WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY) ${w.sql}
466
+ AND type NOT IN ('pageview', 'unload')`, [days, ...w.params]);
415
467
  return res.json({
416
468
  events: rows.map((r) => ({
417
469
  type: r.type,
@@ -431,10 +483,34 @@ let VisitorTrackingController = class VisitorTrackingController {
431
483
  * Each event payload:
432
484
  * data: { ts, activeCount, recent: [{ visitorId, url, country, secondsAgo }] }
433
485
  */
486
+ /**
487
+ * List channels the current admin can see, for the Visitor Journey
488
+ * channel picker. Cheap read — one row per channel with just the
489
+ * id + code + token. Reflects the union of channels visible under
490
+ * `Permission.ReadChannel`.
491
+ *
492
+ * Kept in this plugin (rather than requiring the admin UI to talk
493
+ * to the Vendure /admin-api directly) so a stripped-down install
494
+ * still gets the picker working with zero extra wiring.
495
+ */
496
+ async channelList(ctx, res) {
497
+ if (!requireAdmin(ctx, res))
498
+ return;
499
+ const rows = await this.connection.rawConnection.query(`SELECT id, code, token FROM channel ORDER BY id ASC LIMIT 200`);
500
+ return res.json({
501
+ channels: rows.map((r) => ({
502
+ id: Number(r.id),
503
+ code: String(r.code),
504
+ token: String(r.token),
505
+ })),
506
+ });
507
+ }
434
508
  async live(ctx, req, res) {
435
509
  var _a;
436
510
  if (!requireAdmin(ctx, res))
437
511
  return;
512
+ const channelId = parseChannelId(req.query.channelId);
513
+ const w = channelWhere(channelId);
438
514
  if (!(0, vendure_licence_sdk_1.isLicensed)(plugin_1.VisitorAnalyticsPlugin.getLicenceStatus())) {
439
515
  return res.status(402).json((0, vendure_licence_sdk_1.premiumFeatureError)('vendure-plugin-visitor-analytics'));
440
516
  }
@@ -450,7 +526,7 @@ let VisitorTrackingController = class VisitorTrackingController {
450
526
  MAX(country) AS country,
451
527
  TIMESTAMPDIFF(SECOND, MAX(createdAt), NOW()) AS secondsAgo
452
528
  FROM visitor_event
453
- WHERE createdAt >= DATE_SUB(NOW(), INTERVAL 5 MINUTE)
529
+ WHERE createdAt >= DATE_SUB(NOW(), INTERVAL 5 MINUTE) ${w.sql}
454
530
  AND type = 'pageview'
455
531
  GROUP BY visitorId
456
532
  ORDER BY MAX(createdAt) DESC
@@ -497,6 +573,8 @@ let VisitorTrackingController = class VisitorTrackingController {
497
573
  const days = clampInt(req.query.days, 7, 1, 365);
498
574
  const take = clampInt(req.query.take, 25, 1, 500);
499
575
  const skip = clampInt(req.query.skip, 0, 0, 1000000);
576
+ const channelId = parseChannelId(req.query.channelId);
577
+ const w = channelWhere(channelId);
500
578
  const rows = await this.connection.rawConnection.query(`SELECT visitorId,
501
579
  MAX(customerId) AS customerId,
502
580
  MIN(createdAt) AS firstSeenAt,
@@ -509,12 +587,13 @@ let VisitorTrackingController = class VisitorTrackingController {
509
587
  MAX(os) AS os,
510
588
  MAX(device) AS device
511
589
  FROM visitor_event
512
- WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY)
513
- GROUP BY visitorId
590
+ WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY) ${w.sql}
591
+ GROUP BY visitorId
514
592
  ORDER BY MAX(createdAt) DESC
515
- LIMIT ? OFFSET ?`, [days, take, skip]);
593
+ LIMIT ? OFFSET ?`, [days, take, skip, ...w.params]);
516
594
  const [{ total }] = await this.connection.rawConnection.query(`SELECT COUNT(DISTINCT visitorId) AS total
517
- FROM visitor_event WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY)`, [days]);
595
+ FROM visitor_event WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY) ${w.sql}
596
+ `, [days, ...w.params]);
518
597
  return res.json({
519
598
  visitors: rows.map((r) => ({
520
599
  visitorId: r.visitorId,
@@ -775,14 +854,16 @@ let VisitorTrackingController = class VisitorTrackingController {
775
854
  return res.status(402).json((0, vendure_licence_sdk_1.premiumFeatureError)('vendure-plugin-visitor-analytics'));
776
855
  }
777
856
  const days = Math.min(Math.max(parseInt(String(req.query.days || '7'), 10) || 7, 1), 90);
857
+ const channelId = parseChannelId(req.query.channelId);
858
+ const w = channelWhere(channelId);
778
859
  const rows = await this.connection.rawConnection.query(`SELECT createdAt, visitorId, sessionId, customerId, channelId,
779
860
  type, url, title, referrerDomain,
780
861
  country, region, city, browser, os, device,
781
862
  isBot, goalId, utmSource, utmMedium, utmCampaign
782
863
  FROM visitor_event
783
- WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY)
784
- ORDER BY createdAt DESC
785
- LIMIT 200000`, [days]);
864
+ WHERE createdAt >= DATE_SUB(NOW(), INTERVAL ? DAY) ${w.sql}
865
+ ORDER BY createdAt DESC
866
+ LIMIT 200000`, [days, ...w.params]);
786
867
  res.setHeader('Content-Type', 'text/csv; charset=utf-8');
787
868
  res.setHeader('Content-Disposition', `attachment; filename="visitors-${new Date().toISOString().slice(0, 10)}.csv"`);
788
869
  const esc = (v) => {
@@ -869,6 +950,14 @@ __decorate([
869
950
  __metadata("design:paramtypes", [core_1.RequestContext, Object, Object]),
870
951
  __metadata("design:returntype", Promise)
871
952
  ], VisitorTrackingController.prototype, "topEvents", null);
953
+ __decorate([
954
+ (0, common_1.Get)('visitors/channels'),
955
+ __param(0, (0, core_1.Ctx)()),
956
+ __param(1, (0, common_1.Res)()),
957
+ __metadata("design:type", Function),
958
+ __metadata("design:paramtypes", [core_1.RequestContext, Object]),
959
+ __metadata("design:returntype", Promise)
960
+ ], VisitorTrackingController.prototype, "channelList", null);
872
961
  __decorate([
873
962
  (0, common_1.Get)('visitors/live'),
874
963
  __param(0, (0, core_1.Ctx)()),
@@ -1 +1 @@
1
- {"version":3,"file":"visitor-tracking.controller.js","sourceRoot":"","sources":["../src/visitor-tracking.controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"visitor-tracking.controller.js","sourceRoot":"","sources":["../src/visitor-tracking.controller.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.9.0",
3
+ "version": "0.9.1",
4
4
  "description": "Full-funnel visitor analytics for Vendure storefronts — 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>",
@@ -60,6 +60,17 @@ interface VisitorProfile {
60
60
  <p class="hulo-hero-sub">Live visitor count plus the funnel from landing → product → cart → checkout → order. Change the date range on the right.</p>
61
61
  </div>
62
62
  <div class="hulo-hero-actions">
63
+ <!-- Channel picker. Empty value = All channels
64
+ (aggregate). Sits before the date range so the
65
+ narrower filter comes first, matching Vendure
66
+ convention on other admin filters. -->
67
+ <select class="hulo-hero-select"
68
+ [ngModel]="channelId ?? ''"
69
+ (ngModelChange)="setChannel($event)"
70
+ aria-label="Channel">
71
+ <option [ngValue]="''">All channels</option>
72
+ <option *ngFor="let c of channels" [ngValue]="c.id">{{ c.code }}</option>
73
+ </select>
63
74
  <span class="range">
64
75
  <button class="btn btn-sm btn-link" *ngFor="let d of [7, 30, 90, 365]"
65
76
  (click)="setDays(d)" [class.active]="days === d">{{ d }}d</button>
@@ -496,6 +507,16 @@ interface VisitorProfile {
496
507
  :host button, :host .btn { min-height: 40px; }
497
508
  :host vdr-action-bar { flex-wrap: wrap; gap: 6px; }
498
509
  :host vdr-action-bar button { min-height: 40px; padding: 6px 12px; }
510
+ /* Channel picker inside the HULO hero — dark chrome so it
511
+ sits on the navy gradient without clashing. */
512
+ .hulo-hero-select {
513
+ background: rgba(255,255,255,0.08); color: #fff;
514
+ border: 1px solid rgba(255,255,255,0.15); border-radius: 6px;
515
+ padding: 6px 10px; font-size: 13px; min-height: 34px; max-width: 200px;
516
+ }
517
+ .hulo-hero-select option { background: #0f172a; color: #fff; }
518
+ .hulo-hero-select:focus { outline: none; border-color: #f59e0b;
519
+ box-shadow: 0 0 0 3px rgba(245,158,11,0.25); }
499
520
  .range { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; margin: 8px 0; }
500
521
  .range .btn { min-height: 40px; min-width: 48px; padding: 6px 12px; font-size: 13px; }
501
522
  .summary-row { gap: 8px; }
@@ -637,6 +658,12 @@ export class VisitorsComponent implements OnInit, OnDestroy {
637
658
  loading = false;
638
659
  days = 30;
639
660
 
661
+ /** Channel filter — null = All channels (aggregate). Populated by
662
+ * `loadChannels()` on init. Every API call carries `channelId`
663
+ * when set. */
664
+ channelId: number | null = null;
665
+ channels: Array<{ id: number; code: string }> = [];
666
+
640
667
  summary = { visitors: 0, sessions: 0, pageviews: 0, avgTimeMs: 0 };
641
668
  funnel: FunnelStage[] = [];
642
669
 
@@ -681,6 +708,7 @@ export class VisitorsComponent implements OnInit, OnDestroy {
681
708
  ) {}
682
709
 
683
710
  ngOnInit() {
711
+ this.loadChannels();
684
712
  this.loadAll();
685
713
  this.connectLive();
686
714
  this.loadStatus();
@@ -717,7 +745,7 @@ export class VisitorsComponent implements OnInit, OnDestroy {
717
745
  private connectLive(): void {
718
746
  if (typeof EventSource === 'undefined') return;
719
747
  try {
720
- this.liveSource = new EventSource('/ees/visitors/live', { withCredentials: true } as any);
748
+ this.liveSource = new EventSource('/ees/visitors/live' + (this.channelId != null ? `?channelId=${this.channelId}` : ''), { withCredentials: true } as any);
721
749
  } catch {
722
750
  return;
723
751
  }
@@ -756,11 +784,42 @@ export class VisitorsComponent implements OnInit, OnDestroy {
756
784
  this.loadAll();
757
785
  }
758
786
 
787
+ /** Called when the operator picks a channel from the hero
788
+ * picker. `null` / empty string = All channels. Reloads every
789
+ * panel + rewires the SSE stream so the live-now count is
790
+ * channel-scoped too. */
791
+ setChannel(id: number | '' | null) {
792
+ this.channelId = (id === '' || id == null) ? null : Number(id);
793
+ this.topSkip = 0; this.exitSkip = 0; this.recentSkip = 0;
794
+ this.disconnectLive();
795
+ this.connectLive();
796
+ this.loadAll();
797
+ }
798
+
799
+ /** Build the shared `?days=&channelId=` fragment. Omits
800
+ * channelId when null so aggregated queries stay short. */
801
+ private q(): string {
802
+ return `days=${this.days}` +
803
+ (this.channelId != null ? `&channelId=${this.channelId}` : '');
804
+ }
805
+
806
+ /** Fetch the list of channels the current admin can see, once
807
+ * at init. Cheap read (one row per channel). */
808
+ private loadChannels(): void {
809
+ this.http.get<any>('/ees/visitors/channels').subscribe({
810
+ next: (r) => {
811
+ this.channels = Array.isArray(r?.channels) ? r.channels : [];
812
+ this.cdr.markForCheck();
813
+ },
814
+ error: () => { /* leave as empty — picker still shows All */ },
815
+ });
816
+ }
817
+
759
818
  loadAll() {
760
819
  this.loading = true;
761
820
  Promise.all([
762
- this.http.get<any>(`/ees/visitors/summary?days=${this.days}`).toPromise(),
763
- this.http.get<any>(`/ees/visitors/funnel?days=${this.days}`).toPromise(),
821
+ this.http.get<any>(`/ees/visitors/summary?${this.q()}`).toPromise(),
822
+ this.http.get<any>(`/ees/visitors/funnel?${this.q()}`).toPromise(),
764
823
  this.fetchTop(),
765
824
  this.fetchExit(),
766
825
  this.fetchRecent(),
@@ -776,7 +835,7 @@ export class VisitorsComponent implements OnInit, OnDestroy {
776
835
  }
777
836
 
778
837
  fetchTop(): Promise<void> {
779
- return this.http.get<any>(`/ees/visitors/top-pages?days=${this.days}&take=${this.topTake}&skip=${this.topSkip}`).toPromise()
838
+ return this.http.get<any>(`/ees/visitors/top-pages?${this.q()}&take=${this.topTake}&skip=${this.topSkip}`).toPromise()
780
839
  .then((res: any) => {
781
840
  this.topPages = res?.pages || [];
782
841
  this.topTotal = res?.total || 0;
@@ -787,7 +846,7 @@ export class VisitorsComponent implements OnInit, OnDestroy {
787
846
  topNext() { this.topSkip += this.topTake; this.fetchTop(); }
788
847
 
789
848
  fetchExit(): Promise<void> {
790
- return this.http.get<any>(`/ees/visitors/exit-pages?days=${this.days}&take=${this.exitTake}&skip=${this.exitSkip}`).toPromise()
849
+ return this.http.get<any>(`/ees/visitors/exit-pages?${this.q()}&take=${this.exitTake}&skip=${this.exitSkip}`).toPromise()
791
850
  .then((res: any) => {
792
851
  this.exitPages = res?.exitPages || [];
793
852
  this.exitTotal = res?.total || 0;
@@ -798,7 +857,7 @@ export class VisitorsComponent implements OnInit, OnDestroy {
798
857
  exitNext() { this.exitSkip += this.exitTake; this.fetchExit(); }
799
858
 
800
859
  fetchRecent(): Promise<void> {
801
- return this.http.get<any>(`/ees/visitors/recent?days=${this.days}&take=${this.recentTake}&skip=${this.recentSkip}`).toPromise()
860
+ return this.http.get<any>(`/ees/visitors/recent?${this.q()}&take=${this.recentTake}&skip=${this.recentSkip}`).toPromise()
802
861
  .then((res: any) => {
803
862
  this.recent = res?.visitors || [];
804
863
  this.recentTotal = res?.total || 0;