@adtrackify/at-service-common 4.0.28 → 4.0.31

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.
Files changed (39) hide show
  1. package/dist/cjs/__tests__/services/events/collect-queue-tracking-service.spec.js +56 -4
  2. package/dist/cjs/__tests__/services/events/collect-queue-tracking-service.spec.js.map +1 -1
  3. package/dist/cjs/__tests__/services/events/tracking-event-sqs-service.spec.js +32 -12
  4. package/dist/cjs/__tests__/services/events/tracking-event-sqs-service.spec.js.map +1 -1
  5. package/dist/cjs/clients/third-party/shopify/graphql-analytics-queries.d.ts +18 -0
  6. package/dist/cjs/clients/third-party/shopify/graphql-analytics-queries.js +23 -0
  7. package/dist/cjs/clients/third-party/shopify/graphql-analytics-queries.js.map +1 -0
  8. package/dist/cjs/clients/third-party/shopify/shopify-graphql-client.d.ts +32 -0
  9. package/dist/cjs/clients/third-party/shopify/shopify-graphql-client.js +191 -0
  10. package/dist/cjs/clients/third-party/shopify/shopify-graphql-client.js.map +1 -1
  11. package/dist/cjs/services/events/build-collect-queue-tracking-event.d.ts +0 -3
  12. package/dist/cjs/services/events/build-collect-queue-tracking-event.js +1 -3
  13. package/dist/cjs/services/events/build-collect-queue-tracking-event.js.map +1 -1
  14. package/dist/cjs/services/events/collect-queue-tracking-service.d.ts +5 -2
  15. package/dist/cjs/services/events/collect-queue-tracking-service.js +4 -4
  16. package/dist/cjs/services/events/collect-queue-tracking-service.js.map +1 -1
  17. package/dist/cjs/services/events/tracking-event-sqs-service.d.ts +1 -1
  18. package/dist/cjs/services/events/tracking-event-sqs-service.js +3 -3
  19. package/dist/cjs/services/events/tracking-event-sqs-service.js.map +1 -1
  20. package/dist/esm/__tests__/services/events/collect-queue-tracking-service.spec.js +56 -4
  21. package/dist/esm/__tests__/services/events/collect-queue-tracking-service.spec.js.map +1 -1
  22. package/dist/esm/__tests__/services/events/tracking-event-sqs-service.spec.js +33 -13
  23. package/dist/esm/__tests__/services/events/tracking-event-sqs-service.spec.js.map +1 -1
  24. package/dist/esm/clients/third-party/shopify/graphql-analytics-queries.d.ts +18 -0
  25. package/dist/esm/clients/third-party/shopify/graphql-analytics-queries.js +20 -0
  26. package/dist/esm/clients/third-party/shopify/graphql-analytics-queries.js.map +1 -0
  27. package/dist/esm/clients/third-party/shopify/shopify-graphql-client.d.ts +32 -0
  28. package/dist/esm/clients/third-party/shopify/shopify-graphql-client.js +191 -0
  29. package/dist/esm/clients/third-party/shopify/shopify-graphql-client.js.map +1 -1
  30. package/dist/esm/services/events/build-collect-queue-tracking-event.d.ts +0 -3
  31. package/dist/esm/services/events/build-collect-queue-tracking-event.js +0 -2
  32. package/dist/esm/services/events/build-collect-queue-tracking-event.js.map +1 -1
  33. package/dist/esm/services/events/collect-queue-tracking-service.d.ts +5 -2
  34. package/dist/esm/services/events/collect-queue-tracking-service.js +4 -4
  35. package/dist/esm/services/events/collect-queue-tracking-service.js.map +1 -1
  36. package/dist/esm/services/events/tracking-event-sqs-service.d.ts +1 -1
  37. package/dist/esm/services/events/tracking-event-sqs-service.js +3 -3
  38. package/dist/esm/services/events/tracking-event-sqs-service.js.map +1 -1
  39. package/package.json +4 -3
@@ -1,9 +1,12 @@
1
1
  import { TrackingEvent, TrackingEventData } from '@adtrackify/at-tracking-event-types';
2
2
  import { BuildTrackingEventParams } from './build-collect-queue-tracking-event.js';
3
+ export interface CollectQueueEmitOptions {
4
+ delaySeconds?: number;
5
+ }
3
6
  export declare class CollectQueueTrackingService {
4
7
  private readonly trackingEventSqsService;
5
8
  constructor(region: string, awsAccountId: string, queueName: string);
6
9
  buildEvent<TData extends TrackingEventData = TrackingEventData>(params: BuildTrackingEventParams<TData>): TrackingEvent;
7
- send(trackingEvent: TrackingEvent): Promise<boolean>;
8
- emit<TData extends TrackingEventData = TrackingEventData>(params: BuildTrackingEventParams<TData>): Promise<boolean>;
10
+ send(trackingEvent: TrackingEvent, options?: CollectQueueEmitOptions): Promise<boolean>;
11
+ emit<TData extends TrackingEventData = TrackingEventData>(params: BuildTrackingEventParams<TData>, options?: CollectQueueEmitOptions): Promise<boolean>;
9
12
  }
@@ -11,12 +11,12 @@ class CollectQueueTrackingService {
11
11
  buildEvent(params) {
12
12
  return (0, build_collect_queue_tracking_event_js_1.buildTrackingEvent)(params);
13
13
  }
14
- async send(trackingEvent) {
15
- return this.trackingEventSqsService.sendTrackingEventSqsMessage(trackingEvent);
14
+ async send(trackingEvent, options) {
15
+ return this.trackingEventSqsService.sendTrackingEventSqsMessage(trackingEvent, options?.delaySeconds ?? 0);
16
16
  }
17
- async emit(params) {
17
+ async emit(params, options) {
18
18
  const trackingEvent = this.buildEvent(params);
19
- return this.send(trackingEvent);
19
+ return this.send(trackingEvent, options);
20
20
  }
21
21
  }
22
22
  exports.CollectQueueTrackingService = CollectQueueTrackingService;
@@ -1 +1 @@
1
- {"version":3,"file":"collect-queue-tracking-service.js","sourceRoot":"","sources":["../../../../src/services/events/collect-queue-tracking-service.ts"],"names":[],"mappings":";;;AACA,mGAGiD;AACjD,mFAA0E;AAM1E,MAAa,2BAA2B;IACrB,uBAAuB,CAA0B;IAElE,YAAY,MAAc,EAAE,YAAoB,EAAE,SAAiB;QACjE,IAAI,CAAC,uBAAuB,GAAG,IAAI,uDAAuB,CACxD,MAAM,EACN,YAAY,EACZ,SAAS,CACV,CAAC;IACJ,CAAC;IAGD,UAAU,CACR,MAAuC;QAEvC,OAAO,IAAA,0DAAkB,EAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAGD,KAAK,CAAC,IAAI,CAAC,aAA4B;QACrC,OAAO,IAAI,CAAC,uBAAuB,CAAC,2BAA2B,CAC7D,aAAa,CACd,CAAC;IACJ,CAAC;IAGD,KAAK,CAAC,IAAI,CACR,MAAuC;QAEvC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC;CACF;AAhCD,kEAgCC"}
1
+ {"version":3,"file":"collect-queue-tracking-service.js","sourceRoot":"","sources":["../../../../src/services/events/collect-queue-tracking-service.ts"],"names":[],"mappings":";;;AACA,mGAGiD;AACjD,mFAA0E;AAW1E,MAAa,2BAA2B;IACrB,uBAAuB,CAA0B;IAElE,YAAY,MAAc,EAAE,YAAoB,EAAE,SAAiB;QACjE,IAAI,CAAC,uBAAuB,GAAG,IAAI,uDAAuB,CACxD,MAAM,EACN,YAAY,EACZ,SAAS,CACV,CAAC;IACJ,CAAC;IAGD,UAAU,CACR,MAAuC;QAEvC,OAAO,IAAA,0DAAkB,EAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAGD,KAAK,CAAC,IAAI,CACR,aAA4B,EAC5B,OAAiC;QAEjC,OAAO,IAAI,CAAC,uBAAuB,CAAC,2BAA2B,CAC7D,aAAa,EACb,OAAO,EAAE,YAAY,IAAI,CAAC,CAC3B,CAAC;IACJ,CAAC;IAGD,KAAK,CAAC,IAAI,CACR,MAAuC,EACvC,OAAiC;QAEjC,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;CACF;AArCD,kEAqCC"}
@@ -4,5 +4,5 @@ export declare class TrackingEventSqsService {
4
4
  private awsAccountId;
5
5
  private sqsClient;
6
6
  constructor(region: string, awsAccountId: string, trackEventCollectQueueName: string);
7
- sendTrackingEventSqsMessage: (trackingEvent: TrackingEvent) => Promise<boolean>;
7
+ sendTrackingEventSqsMessage: (trackingEvent: TrackingEvent, delaySeconds?: number) => Promise<boolean>;
8
8
  }
@@ -12,12 +12,12 @@ class TrackingEventSqsService {
12
12
  this.awsAccountId = awsAccountId;
13
13
  this.sqsClient = new clients_1.SQSClient(region, awsAccountId, trackEventCollectQueueName);
14
14
  }
15
- sendTrackingEventSqsMessage = async (trackingEvent) => {
15
+ sendTrackingEventSqsMessage = async (trackingEvent, delaySeconds = 0) => {
16
16
  try {
17
17
  const pixelId = trackingEvent.pixelId;
18
18
  const eventPayload = { pixelId, trackingEvent };
19
- helpers_1.Logger.debug('Sending tracking event to sqs', { eventPayload });
20
- await this.sqsClient.sendMessage(eventPayload);
19
+ helpers_1.Logger.debug('Sending tracking event to sqs', { eventPayload, delaySeconds });
20
+ await this.sqsClient.sendMessage(eventPayload, delaySeconds);
21
21
  return true;
22
22
  }
23
23
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"tracking-event-sqs-service.js","sourceRoot":"","sources":["../../../../src/services/events/tracking-event-sqs-service.ts"],"names":[],"mappings":";;;AACA,2CAA0C;AAC1C,2CAAuC;AAEvC,MAAa,uBAAuB;IAC1B,MAAM,CAAS;IACf,YAAY,CAAS;IACrB,SAAS,CAAY;IAE7B,YAAY,MAAc,EAAE,YAAoB,EAAE,0BAAkC;QAClF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,mBAAS,CAAC,MAAM,EAAE,YAAY,EAAE,0BAA0B,CAAC,CAAC;IACnF,CAAC;IAEM,2BAA2B,GAAG,KAAK,EAAE,aAA4B,EAAE,EAAE;QAC1E,IAAI;YACF,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;YACtC,MAAM,YAAY,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;YAChD,gBAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;YAChE,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,KAAK,EAAE;YACd,gBAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE;gBACnD,KAAK;gBACL,YAAY,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBACpE,OAAO,EAAE,aAAa,EAAE,OAAO;gBAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,aAAa;aACd,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;SACd;IACH,CAAC,CAAC;CACH;AA9BD,0DA8BC"}
1
+ {"version":3,"file":"tracking-event-sqs-service.js","sourceRoot":"","sources":["../../../../src/services/events/tracking-event-sqs-service.ts"],"names":[],"mappings":";;;AACA,2CAA0C;AAC1C,2CAAuC;AAEvC,MAAa,uBAAuB;IAC1B,MAAM,CAAS;IACf,YAAY,CAAS;IACrB,SAAS,CAAY;IAE7B,YAAY,MAAc,EAAE,YAAoB,EAAE,0BAAkC;QAClF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,mBAAS,CAAC,MAAM,EAAE,YAAY,EAAE,0BAA0B,CAAC,CAAC;IACnF,CAAC;IAEM,2BAA2B,GAAG,KAAK,EACxC,aAA4B,EAC5B,YAAY,GAAG,CAAC,EAChB,EAAE;QACF,IAAI;YACF,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;YACtC,MAAM,YAAY,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;YAChD,gBAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC;YAC9E,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,KAAK,EAAE;YACd,gBAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE;gBACnD,KAAK;gBACL,YAAY,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBACpE,OAAO,EAAE,aAAa,EAAE,OAAO;gBAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,aAAa;aACd,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;SACd;IACH,CAAC,CAAC;CACH;AAjCD,0DAiCC"}
@@ -89,7 +89,7 @@ describe('CollectQueueTrackingService', () => {
89
89
  });
90
90
  const result = await service.send(event);
91
91
  expect(result).toBe(true);
92
- expect(mockSendTrackingEventSqsMessage).toHaveBeenCalledWith(event);
92
+ expect(mockSendTrackingEventSqsMessage).toHaveBeenCalledWith(event, 0);
93
93
  });
94
94
  it('returns false when SQS fails', async () => {
95
95
  mockSendTrackingEventSqsMessage.mockResolvedValue(false);
@@ -101,6 +101,28 @@ describe('CollectQueueTrackingService', () => {
101
101
  const result = await service.send(event);
102
102
  expect(result).toBe(false);
103
103
  });
104
+ it('passes delaySeconds to SQS service', async () => {
105
+ mockSendTrackingEventSqsMessage.mockResolvedValue(true);
106
+ const service = createService();
107
+ const event = service.buildEvent({
108
+ ...baseEventParams,
109
+ context: { identity: { traits: { emails: ['user@example.com'] } } },
110
+ });
111
+ const result = await service.send(event, { delaySeconds: 600 });
112
+ expect(result).toBe(true);
113
+ expect(mockSendTrackingEventSqsMessage).toHaveBeenCalledWith(event, 600);
114
+ });
115
+ it('passes 900 second delay to SQS service', async () => {
116
+ mockSendTrackingEventSqsMessage.mockResolvedValue(true);
117
+ const service = createService();
118
+ const event = service.buildEvent({
119
+ ...baseEventParams,
120
+ context: { identity: { traits: { emails: ['user@example.com'] } } },
121
+ });
122
+ const result = await service.send(event, { delaySeconds: 900 });
123
+ expect(result).toBe(true);
124
+ expect(mockSendTrackingEventSqsMessage).toHaveBeenCalledWith(event, 900);
125
+ });
104
126
  });
105
127
  describe('emit', () => {
106
128
  it('builds and sends in one call', async () => {
@@ -119,7 +141,7 @@ describe('CollectQueueTrackingService', () => {
119
141
  id: 'evt_1',
120
142
  pixelId: 'pixel-1',
121
143
  context: { identity: { traits: { emails: ['test@example.com'] } } },
122
- }));
144
+ }), 0);
123
145
  });
124
146
  it('returns true when emit succeeds without context', async () => {
125
147
  mockSendTrackingEventSqsMessage.mockResolvedValue(true);
@@ -136,7 +158,7 @@ describe('CollectQueueTrackingService', () => {
136
158
  id: 'evt_2',
137
159
  name: TRACKING_EVENT_NAME.SUBSCRIPTION_CREATED,
138
160
  data: { plan: 'enterprise' },
139
- }));
161
+ }), 0);
140
162
  });
141
163
  it('returns false when SQS send fails', async () => {
142
164
  mockSendTrackingEventSqsMessage.mockResolvedValue(false);
@@ -169,7 +191,37 @@ describe('CollectQueueTrackingService', () => {
169
191
  expect(result).toBe(true);
170
192
  expect(mockSendTrackingEventSqsMessage).toHaveBeenCalledWith(expect.objectContaining({
171
193
  context,
172
- }));
194
+ }), 0);
195
+ });
196
+ it('emit with no delay passes 0 to SQS (existing behavior)', async () => {
197
+ mockSendTrackingEventSqsMessage.mockResolvedValue(true);
198
+ const service = createService();
199
+ const result = await service.emit({
200
+ ...baseEventParams,
201
+ context: { identity: { traits: { emails: ['test@example.com'] } } },
202
+ });
203
+ expect(result).toBe(true);
204
+ expect(mockSendTrackingEventSqsMessage).toHaveBeenCalledWith(expect.objectContaining({ id: 'evt_1' }), 0);
205
+ });
206
+ it('emit with 600 second delay passes delay to SQS', async () => {
207
+ mockSendTrackingEventSqsMessage.mockResolvedValue(true);
208
+ const service = createService();
209
+ const result = await service.emit({
210
+ ...baseEventParams,
211
+ context: { identity: { traits: { emails: ['test@example.com'] } } },
212
+ }, { delaySeconds: 600 });
213
+ expect(result).toBe(true);
214
+ expect(mockSendTrackingEventSqsMessage).toHaveBeenCalledWith(expect.objectContaining({ id: 'evt_1' }), 600);
215
+ });
216
+ it('emit with 900 second delay passes delay to SQS', async () => {
217
+ mockSendTrackingEventSqsMessage.mockResolvedValue(true);
218
+ const service = createService();
219
+ const result = await service.emit({
220
+ ...baseEventParams,
221
+ context: { identity: { traits: { emails: ['test@example.com'] } } },
222
+ }, { delaySeconds: 900 });
223
+ expect(result).toBe(true);
224
+ expect(mockSendTrackingEventSqsMessage).toHaveBeenCalledWith(expect.objectContaining({ id: 'evt_1' }), 900);
173
225
  });
174
226
  });
175
227
  });
@@ -1 +1 @@
1
- {"version":3,"file":"collect-queue-tracking-service.spec.js","sourceRoot":"","sources":["../../../../../src/__tests__/services/events/collect-queue-tracking-service.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collect-queue-tracking-service.spec.js","sourceRoot":"","sources":["../../../../../src/__tests__/services/events/collect-queue-tracking-service.spec.ts"],"names":[],"mappings":"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"}
@@ -14,20 +14,20 @@ jest.mock('../../../helpers/logging-helper', () => ({
14
14
  error: jest.fn(),
15
15
  },
16
16
  }));
17
- import { buildTrackingEvent, buildCollectQueueTrackingEvent, TRACKING_EVENT_VERSION, COLLECT_QUEUE_TRACKING_EVENT_VERSION, TrackingEventSqsService, } from '../../../services/events';
17
+ import { buildTrackingEvent, TRACKING_EVENT_VERSION, TrackingEventSqsService, } from '../../../services/events';
18
18
  const createTrackingEvent = () => ({
19
19
  id: 'evt_1',
20
20
  type: INTERNAL_EVENT_TYPE.TRACKING,
21
21
  name: TRACKING_EVENT_NAME.ACCOUNT_CREATED,
22
22
  pixelId: 'pixel-1',
23
- version: COLLECT_QUEUE_TRACKING_EVENT_VERSION,
23
+ version: TRACKING_EVENT_VERSION,
24
24
  source: 'lifecycle',
25
25
  collectedAt: '2026-07-14T00:00:00.000Z',
26
26
  collectedAtEpoch: 1,
27
27
  sentAtEpoch: 1,
28
28
  data: { plan: 'pro' },
29
29
  });
30
- describe('buildCollectQueueTrackingEvent', () => {
30
+ describe('buildTrackingEvent', () => {
31
31
  beforeEach(() => {
32
32
  jest.spyOn(Date, 'now').mockReturnValue(1700000000000);
33
33
  });
@@ -43,7 +43,7 @@ describe('buildCollectQueueTrackingEvent', () => {
43
43
  },
44
44
  },
45
45
  };
46
- const event = buildCollectQueueTrackingEvent({
46
+ const event = buildTrackingEvent({
47
47
  eventId: 'evt_1',
48
48
  name: TRACKING_EVENT_NAME.ACCOUNT_CREATED,
49
49
  pixelId: 'pixel-1',
@@ -56,7 +56,7 @@ describe('buildCollectQueueTrackingEvent', () => {
56
56
  type: INTERNAL_EVENT_TYPE.TRACKING,
57
57
  name: TRACKING_EVENT_NAME.ACCOUNT_CREATED,
58
58
  pixelId: 'pixel-1',
59
- version: COLLECT_QUEUE_TRACKING_EVENT_VERSION,
59
+ version: TRACKING_EVENT_VERSION,
60
60
  source: 'lifecycle',
61
61
  collectedAtEpoch: 1700000000000,
62
62
  sentAtEpoch: 1700000000000,
@@ -66,7 +66,7 @@ describe('buildCollectQueueTrackingEvent', () => {
66
66
  expect(event.collectedAt).toEqual(expect.any(String));
67
67
  });
68
68
  it('builds envelope without context when not provided', () => {
69
- const event = buildCollectQueueTrackingEvent({
69
+ const event = buildTrackingEvent({
70
70
  eventId: 'evt_2',
71
71
  name: TRACKING_EVENT_NAME.ACCOUNT_CREATED,
72
72
  pixelId: 'pixel-1',
@@ -78,7 +78,7 @@ describe('buildCollectQueueTrackingEvent', () => {
78
78
  expect(event.data).toEqual({ plan: 'pro' });
79
79
  });
80
80
  it('builds envelope with identity only (no properties)', () => {
81
- const event = buildCollectQueueTrackingEvent({
81
+ const event = buildTrackingEvent({
82
82
  eventId: 'evt_3',
83
83
  name: TRACKING_EVENT_NAME.ACCOUNT_CREATED,
84
84
  pixelId: 'pixel-1',
@@ -92,7 +92,7 @@ describe('buildCollectQueueTrackingEvent', () => {
92
92
  expect(event.context?.properties).toBeUndefined();
93
93
  });
94
94
  it('builds envelope with context properties only (no identity)', () => {
95
- const event = buildCollectQueueTrackingEvent({
95
+ const event = buildTrackingEvent({
96
96
  eventId: 'evt_4',
97
97
  name: TRACKING_EVENT_NAME.ACCOUNT_CREATED,
98
98
  pixelId: 'pixel-1',
@@ -118,7 +118,7 @@ describe('buildCollectQueueTrackingEvent', () => {
118
118
  sessionId: 'sess_456',
119
119
  },
120
120
  };
121
- const event = buildCollectQueueTrackingEvent({
121
+ const event = buildTrackingEvent({
122
122
  eventId: 'evt_5',
123
123
  name: TRACKING_EVENT_NAME.SUBSCRIPTION_CREATED,
124
124
  pixelId: 'pixel-1',
@@ -129,9 +129,7 @@ describe('buildCollectQueueTrackingEvent', () => {
129
129
  expect(event.context).toEqual(context);
130
130
  expect(event.name).toBe(TRACKING_EVENT_NAME.SUBSCRIPTION_CREATED);
131
131
  });
132
- it('exports backward-compatible aliases', () => {
133
- expect(buildCollectQueueTrackingEvent).toBe(buildTrackingEvent);
134
- expect(COLLECT_QUEUE_TRACKING_EVENT_VERSION).toBe(TRACKING_EVENT_VERSION);
132
+ it('exports correct version constant', () => {
135
133
  expect(TRACKING_EVENT_VERSION).toBe('1.1.6');
136
134
  });
137
135
  });
@@ -148,7 +146,29 @@ describe('TrackingEventSqsService', () => {
148
146
  expect(mockSendMessage).toHaveBeenCalledWith({
149
147
  pixelId: 'pixel-1',
150
148
  trackingEvent,
151
- });
149
+ }, 0);
150
+ });
151
+ it('passes delaySeconds to SQS sendMessage', async () => {
152
+ mockSendMessage.mockResolvedValue(undefined);
153
+ const service = new TrackingEventSqsService('us-east-2', '123456789012', 'collect-queue');
154
+ const trackingEvent = createTrackingEvent();
155
+ const result = await service.sendTrackingEventSqsMessage(trackingEvent, 600);
156
+ expect(result).toBe(true);
157
+ expect(mockSendMessage).toHaveBeenCalledWith({
158
+ pixelId: 'pixel-1',
159
+ trackingEvent,
160
+ }, 600);
161
+ });
162
+ it('passes 900 second delay to SQS sendMessage', async () => {
163
+ mockSendMessage.mockResolvedValue(undefined);
164
+ const service = new TrackingEventSqsService('us-east-2', '123456789012', 'collect-queue');
165
+ const trackingEvent = createTrackingEvent();
166
+ const result = await service.sendTrackingEventSqsMessage(trackingEvent, 900);
167
+ expect(result).toBe(true);
168
+ expect(mockSendMessage).toHaveBeenCalledWith({
169
+ pixelId: 'pixel-1',
170
+ trackingEvent,
171
+ }, 900);
152
172
  });
153
173
  it('returns false and logs pixelId and errorMessage when SQS send fails', async () => {
154
174
  const sendError = new Error('SQS unavailable');
@@ -1 +1 @@
1
- {"version":3,"file":"tracking-event-sqs-service.spec.js","sourceRoot":"","sources":["../../../../../src/__tests__/services/events/tracking-event-sqs-service.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracking-event-sqs-service.spec.js","sourceRoot":"","sources":["../../../../../src/__tests__/services/events/tracking-event-sqs-service.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export declare const graphqlShopifyQLQuery = "\nquery ExecuteShopifyQL($query: String!) {\n shopifyqlQuery(query: $query) {\n tableData {\n columns {\n name\n dataType\n }\n rowData\n rows\n }\n parseErrors\n }\n}\n";
2
+ export interface ShopifyQLQueryResult {
3
+ shopifyqlQuery?: {
4
+ tableData?: {
5
+ columns?: Array<{
6
+ name: string;
7
+ dataType: string;
8
+ }>;
9
+ rowData?: string[][];
10
+ rows?: Array<Record<string, string>>;
11
+ };
12
+ parseErrors?: string[];
13
+ };
14
+ }
15
+ export declare const SHOPIFYQL_QUERIES: {
16
+ SALES_MONTHLY: (monthsBack: number) => string;
17
+ SESSIONS_MONTHLY: (monthsBack: number) => string;
18
+ };
@@ -0,0 +1,20 @@
1
+ export const graphqlShopifyQLQuery = `
2
+ query ExecuteShopifyQL($query: String!) {
3
+ shopifyqlQuery(query: $query) {
4
+ tableData {
5
+ columns {
6
+ name
7
+ dataType
8
+ }
9
+ rowData
10
+ rows
11
+ }
12
+ parseErrors
13
+ }
14
+ }
15
+ `;
16
+ export const SHOPIFYQL_QUERIES = {
17
+ SALES_MONTHLY: (monthsBack) => `FROM sales SHOW total_sales, orders, average_order_value GROUP BY month SINCE -${monthsBack}m ORDER BY month ASC`,
18
+ SESSIONS_MONTHLY: (monthsBack) => `FROM sessions SHOW sessions, online_store_visitors WHERE human_or_bot_session = 'human' GROUP BY month SINCE -${monthsBack}m ORDER BY month ASC`,
19
+ };
20
+ //# sourceMappingURL=graphql-analytics-queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-analytics-queries.js","sourceRoot":"","sources":["../../../../../src/clients/third-party/shopify/graphql-analytics-queries.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;CAcpC,CAAC;AAsBF,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAK/B,aAAa,EAAE,CAAC,UAAkB,EAAE,EAAE,CACpC,kFAAkF,UAAU,sBAAsB;IAMpH,gBAAgB,EAAE,CAAC,UAAkB,EAAE,EAAE,CACvC,iHAAiH,UAAU,sBAAsB;CACpJ,CAAC"}
@@ -1,5 +1,24 @@
1
1
  import { AdminApiClient, ClientResponse } from '@shopify/admin-api-client';
2
2
  import type { GetProductQuery } from '../../../types/shopify-graphql-types/admin.generated';
3
+ declare enum SHOPIFY_HISTORICAL_METRICS_FETCH_STATUS {
4
+ SUCCESS = "success",
5
+ PARTIAL = "partial",
6
+ FAILED = "failed"
7
+ }
8
+ interface ShopifyMonthlyMetrics {
9
+ month: string;
10
+ totalSales?: number;
11
+ orderCount?: number;
12
+ averageOrderValue?: number;
13
+ visitorCount?: number;
14
+ sessionCount?: number;
15
+ }
16
+ interface ShopifyHistoricalMetrics {
17
+ fetchedAt: string;
18
+ currency?: string;
19
+ months: ShopifyMonthlyMetrics[];
20
+ fetchStatus?: SHOPIFY_HISTORICAL_METRICS_FETCH_STATUS;
21
+ }
3
22
  export declare class ShopifyGraphQLClient {
4
23
  static _shopify_api_version: string;
5
24
  static getClient: (shop: string, accessToken: string) => AdminApiClient;
@@ -7,4 +26,17 @@ export declare class ShopifyGraphQLClient {
7
26
  private static executePagedProductQuery;
8
27
  private static executeProductQuery;
9
28
  static getOrderLineItemsSellingPlan: (shop: string, accessToken: string, orderId: string) => Promise<Map<string, string> | null>;
29
+ static safeGetHistoricalMetrics: (shop: string, accessToken: string, monthsBack?: number) => Promise<ShopifyHistoricalMetrics>;
30
+ private static executeSafeShopifyQLQuery;
31
+ private static parseSalesMetrics;
32
+ private static parseSessionsMetrics;
33
+ private static extractRowData;
34
+ private static mergeMonthlyMetrics;
35
+ private static determineFetchStatus;
36
+ private static extractCurrency;
37
+ private static formatMonthKey;
38
+ private static safeParseFloat;
39
+ private static safeParseInt;
40
+ private static buildEmptyMetrics;
10
41
  }
42
+ export {};
@@ -2,6 +2,13 @@ import { createAdminApiClient } from '@shopify/admin-api-client';
2
2
  import { Logger } from '../../../helpers';
3
3
  import { graphqlProductQueryByProductId } from './graphql-product-queries';
4
4
  import { graphqlOrderLineItemsSellingPlanQuery } from './graphql-order-queries';
5
+ import { graphqlShopifyQLQuery, SHOPIFYQL_QUERIES, } from './graphql-analytics-queries';
6
+ var SHOPIFY_HISTORICAL_METRICS_FETCH_STATUS;
7
+ (function (SHOPIFY_HISTORICAL_METRICS_FETCH_STATUS) {
8
+ SHOPIFY_HISTORICAL_METRICS_FETCH_STATUS["SUCCESS"] = "success";
9
+ SHOPIFY_HISTORICAL_METRICS_FETCH_STATUS["PARTIAL"] = "partial";
10
+ SHOPIFY_HISTORICAL_METRICS_FETCH_STATUS["FAILED"] = "failed";
11
+ })(SHOPIFY_HISTORICAL_METRICS_FETCH_STATUS || (SHOPIFY_HISTORICAL_METRICS_FETCH_STATUS = {}));
5
12
  export class ShopifyGraphQLClient {
6
13
  static _shopify_api_version = process.env.SHOPIFY_API_VERSION;
7
14
  static getClient = (shop, accessToken) => {
@@ -154,5 +161,189 @@ export class ShopifyGraphQLClient {
154
161
  return null;
155
162
  }
156
163
  };
164
+ static safeGetHistoricalMetrics = async (shop, accessToken, monthsBack = 12) => {
165
+ const logMeta = { shop, monthsBack };
166
+ try {
167
+ if (!shop || !accessToken) {
168
+ Logger.warn('safeGetHistoricalMetrics: missing shop or accessToken', logMeta);
169
+ return this.buildEmptyMetrics();
170
+ }
171
+ const client = this.getClient(shop, accessToken);
172
+ const [salesResult, sessionsResult] = await Promise.all([
173
+ this.executeSafeShopifyQLQuery(client, SHOPIFYQL_QUERIES.SALES_MONTHLY(monthsBack), shop, 'sales'),
174
+ this.executeSafeShopifyQLQuery(client, SHOPIFYQL_QUERIES.SESSIONS_MONTHLY(monthsBack), shop, 'sessions'),
175
+ ]);
176
+ const salesByMonth = this.parseSalesMetrics(salesResult);
177
+ const sessionsByMonth = this.parseSessionsMetrics(sessionsResult);
178
+ const months = this.mergeMonthlyMetrics(salesByMonth, sessionsByMonth);
179
+ const fetchStatus = this.determineFetchStatus(salesResult, sessionsResult);
180
+ const currency = this.extractCurrency();
181
+ const metrics = {
182
+ fetchedAt: new Date().toISOString(),
183
+ currency,
184
+ months,
185
+ fetchStatus,
186
+ };
187
+ Logger.info('safeGetHistoricalMetrics: completed', {
188
+ ...logMeta,
189
+ fetchStatus,
190
+ monthsCount: months.length,
191
+ hasSalesData: salesByMonth.size > 0,
192
+ hasSessionsData: sessionsByMonth.size > 0,
193
+ });
194
+ return metrics;
195
+ }
196
+ catch (error) {
197
+ Logger.warn('safeGetHistoricalMetrics: failed, returning empty metrics', {
198
+ error,
199
+ errorMessage: error instanceof Error ? error.message : String(error),
200
+ ...logMeta,
201
+ });
202
+ return this.buildEmptyMetrics();
203
+ }
204
+ };
205
+ static executeSafeShopifyQLQuery = async (client, query, shop, queryType) => {
206
+ try {
207
+ const result = await client.request(graphqlShopifyQLQuery, {
208
+ variables: { query },
209
+ });
210
+ if (result?.errors) {
211
+ Logger.warn('executeSafeShopifyQLQuery: GraphQL errors', {
212
+ errors: result.errors,
213
+ shop,
214
+ queryType,
215
+ });
216
+ return null;
217
+ }
218
+ const parseErrors = result?.data?.shopifyqlQuery?.parseErrors;
219
+ if (parseErrors && parseErrors.length > 0) {
220
+ Logger.warn('executeSafeShopifyQLQuery: ShopifyQL parse errors', {
221
+ parseErrors,
222
+ shop,
223
+ queryType,
224
+ });
225
+ return null;
226
+ }
227
+ return result?.data ?? null;
228
+ }
229
+ catch (error) {
230
+ Logger.warn('executeSafeShopifyQLQuery: failed', {
231
+ error,
232
+ errorMessage: error instanceof Error ? error.message : String(error),
233
+ shop,
234
+ queryType,
235
+ });
236
+ return null;
237
+ }
238
+ };
239
+ static parseSalesMetrics = (result) => {
240
+ const metricsMap = new Map();
241
+ const tableData = result?.shopifyqlQuery?.tableData;
242
+ if (!tableData)
243
+ return metricsMap;
244
+ const columns = tableData.columns ?? [];
245
+ const rows = tableData.rowData ?? tableData.rows ?? [];
246
+ const monthIdx = columns.findIndex((c) => c.name === 'month');
247
+ const totalSalesIdx = columns.findIndex((c) => c.name === 'total_sales');
248
+ const ordersIdx = columns.findIndex((c) => c.name === 'orders');
249
+ const aovIdx = columns.findIndex((c) => c.name === 'average_order_value');
250
+ for (const row of rows) {
251
+ const rowData = this.extractRowData(row, columns);
252
+ const month = this.formatMonthKey(rowData[monthIdx]);
253
+ if (!month)
254
+ continue;
255
+ metricsMap.set(month, {
256
+ month,
257
+ totalSales: this.safeParseFloat(rowData[totalSalesIdx]),
258
+ orderCount: this.safeParseInt(rowData[ordersIdx]),
259
+ averageOrderValue: this.safeParseFloat(rowData[aovIdx]),
260
+ });
261
+ }
262
+ return metricsMap;
263
+ };
264
+ static parseSessionsMetrics = (result) => {
265
+ const metricsMap = new Map();
266
+ const tableData = result?.shopifyqlQuery?.tableData;
267
+ if (!tableData)
268
+ return metricsMap;
269
+ const columns = tableData.columns ?? [];
270
+ const rows = tableData.rowData ?? tableData.rows ?? [];
271
+ const monthIdx = columns.findIndex((c) => c.name === 'month');
272
+ const sessionsIdx = columns.findIndex((c) => c.name === 'sessions');
273
+ const visitorsIdx = columns.findIndex((c) => c.name === 'online_store_visitors');
274
+ for (const row of rows) {
275
+ const rowData = this.extractRowData(row, columns);
276
+ const month = this.formatMonthKey(rowData[monthIdx]);
277
+ if (!month)
278
+ continue;
279
+ metricsMap.set(month, {
280
+ month,
281
+ sessionCount: this.safeParseInt(rowData[sessionsIdx]),
282
+ visitorCount: this.safeParseInt(rowData[visitorsIdx]),
283
+ });
284
+ }
285
+ return metricsMap;
286
+ };
287
+ static extractRowData = (row, columns) => {
288
+ if (Array.isArray(row)) {
289
+ return row;
290
+ }
291
+ return columns.map((col) => row[col.name] ?? '');
292
+ };
293
+ static mergeMonthlyMetrics = (salesByMonth, sessionsByMonth) => {
294
+ const allMonths = new Set([...salesByMonth.keys(), ...sessionsByMonth.keys()]);
295
+ return Array.from(allMonths)
296
+ .sort()
297
+ .map((month) => {
298
+ const sales = salesByMonth.get(month) ?? {};
299
+ const sessions = sessionsByMonth.get(month) ?? {};
300
+ return {
301
+ month,
302
+ totalSales: sales.totalSales,
303
+ orderCount: sales.orderCount,
304
+ averageOrderValue: sales.averageOrderValue,
305
+ sessionCount: sessions.sessionCount,
306
+ visitorCount: sessions.visitorCount,
307
+ };
308
+ });
309
+ };
310
+ static determineFetchStatus = (salesResult, sessionsResult) => {
311
+ const hasSales = !!salesResult?.shopifyqlQuery?.tableData;
312
+ const hasSessions = !!sessionsResult?.shopifyqlQuery?.tableData;
313
+ if (hasSales && hasSessions) {
314
+ return SHOPIFY_HISTORICAL_METRICS_FETCH_STATUS.SUCCESS;
315
+ }
316
+ if (hasSales || hasSessions) {
317
+ return SHOPIFY_HISTORICAL_METRICS_FETCH_STATUS.PARTIAL;
318
+ }
319
+ return SHOPIFY_HISTORICAL_METRICS_FETCH_STATUS.FAILED;
320
+ };
321
+ static extractCurrency = () => {
322
+ return undefined;
323
+ };
324
+ static formatMonthKey = (value) => {
325
+ if (!value)
326
+ return undefined;
327
+ const match = value.match(/^(\d{4}-\d{2})/);
328
+ return match?.[1];
329
+ };
330
+ static safeParseFloat = (value) => {
331
+ if (!value)
332
+ return undefined;
333
+ const parsed = parseFloat(value);
334
+ return Number.isNaN(parsed) ? undefined : parsed;
335
+ };
336
+ static safeParseInt = (value) => {
337
+ if (!value)
338
+ return undefined;
339
+ const parsed = parseInt(value, 10);
340
+ return Number.isNaN(parsed) ? undefined : parsed;
341
+ };
342
+ static buildEmptyMetrics = () => ({
343
+ fetchedAt: new Date().toISOString(),
344
+ currency: undefined,
345
+ months: [],
346
+ fetchStatus: SHOPIFY_HISTORICAL_METRICS_FETCH_STATUS.FAILED,
347
+ });
157
348
  }
158
349
  //# sourceMappingURL=shopify-graphql-client.js.map