@explorins/pers-shared 2.1.175 → 2.1.178

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 (47) hide show
  1. package/dist/cjs/shared-lib/dto/analytics/user-analytics.dto.d.ts +6 -0
  2. package/dist/cjs/shared-lib/dto/analytics/user-analytics.dto.d.ts.map +1 -1
  3. package/dist/cjs/shared-lib/dto/analytics/user-analytics.dto.js +48 -0
  4. package/dist/cjs/shared-lib/dto/analytics/user-analytics.dto.js.map +1 -1
  5. package/dist/cjs/shared-lib/errors/domains/business-errors.d.ts +12 -0
  6. package/dist/cjs/shared-lib/errors/domains/business-errors.d.ts.map +1 -1
  7. package/dist/cjs/shared-lib/errors/domains/business-errors.js +23 -1
  8. package/dist/cjs/shared-lib/errors/domains/business-errors.js.map +1 -1
  9. package/dist/cjs/shared-lib/errors/error-codes.d.ts +2 -0
  10. package/dist/cjs/shared-lib/errors/error-codes.d.ts.map +1 -1
  11. package/dist/cjs/shared-lib/errors/error-codes.js +2 -0
  12. package/dist/cjs/shared-lib/errors/error-codes.js.map +1 -1
  13. package/dist/cjs/shared-lib/types/data-source.type.d.ts +214 -2
  14. package/dist/cjs/shared-lib/types/data-source.type.d.ts.map +1 -1
  15. package/dist/cjs/shared-lib/types/data-source.type.js +185 -3
  16. package/dist/cjs/shared-lib/types/data-source.type.js.map +1 -1
  17. package/dist/cjs/shared-lib/types/filter-options.type.d.ts +12 -0
  18. package/dist/cjs/shared-lib/types/filter-options.type.d.ts.map +1 -1
  19. package/dist/cjs/shared-lib/types/filter-options.type.js.map +1 -1
  20. package/dist/cjs/shared-patterns/errors/error-factory.d.ts +3 -1
  21. package/dist/cjs/shared-patterns/errors/error-factory.d.ts.map +1 -1
  22. package/dist/cjs/shared-patterns/errors/error-factory.js +8 -0
  23. package/dist/cjs/shared-patterns/errors/error-factory.js.map +1 -1
  24. package/dist/esm/shared-lib/dto/analytics/user-analytics.dto.d.ts +6 -0
  25. package/dist/esm/shared-lib/dto/analytics/user-analytics.dto.d.ts.map +1 -1
  26. package/dist/esm/shared-lib/dto/analytics/user-analytics.dto.js +42 -0
  27. package/dist/esm/shared-lib/dto/analytics/user-analytics.dto.js.map +1 -1
  28. package/dist/esm/shared-lib/errors/domains/business-errors.d.ts +12 -0
  29. package/dist/esm/shared-lib/errors/domains/business-errors.d.ts.map +1 -1
  30. package/dist/esm/shared-lib/errors/domains/business-errors.js +20 -0
  31. package/dist/esm/shared-lib/errors/domains/business-errors.js.map +1 -1
  32. package/dist/esm/shared-lib/errors/error-codes.d.ts +2 -0
  33. package/dist/esm/shared-lib/errors/error-codes.d.ts.map +1 -1
  34. package/dist/esm/shared-lib/errors/error-codes.js +2 -0
  35. package/dist/esm/shared-lib/errors/error-codes.js.map +1 -1
  36. package/dist/esm/shared-lib/types/data-source.type.d.ts +214 -2
  37. package/dist/esm/shared-lib/types/data-source.type.d.ts.map +1 -1
  38. package/dist/esm/shared-lib/types/data-source.type.js +181 -2
  39. package/dist/esm/shared-lib/types/data-source.type.js.map +1 -1
  40. package/dist/esm/shared-lib/types/filter-options.type.d.ts +12 -0
  41. package/dist/esm/shared-lib/types/filter-options.type.d.ts.map +1 -1
  42. package/dist/esm/shared-lib/types/filter-options.type.js.map +1 -1
  43. package/dist/esm/shared-patterns/errors/error-factory.d.ts +3 -1
  44. package/dist/esm/shared-patterns/errors/error-factory.d.ts.map +1 -1
  45. package/dist/esm/shared-patterns/errors/error-factory.js +9 -1
  46. package/dist/esm/shared-patterns/errors/error-factory.js.map +1 -1
  47. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"error-codes.js","sourceRoot":"","sources":["../../../../src/shared-lib/errors/error-codes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,cAAc;IACd,cAAc,EAAE,gBAAgB;IAChC,mBAAmB,EAAE,qBAAqB;IAC1C,mBAAmB,EAAE,qBAAqB;IAE1C,eAAe;IACf,eAAe,EAAE,iBAAiB;IAClC,gBAAgB,EAAE,kBAAkB;IACpC,iBAAiB,EAAE,mBAAmB;IACtC,oBAAoB,EAAE,sBAAsB;IAC5C,oBAAoB,EAAE,sBAAsB;IAC5C,WAAW,EAAE,aAAa;IAC1B,wBAAwB,EAAE,0BAA0B;IAEpD,gBAAgB;IAChB,sBAAsB,EAAE,wBAAwB;IAChD,gBAAgB,EAAE,kBAAkB;IACpC,8BAA8B,EAAE,gCAAgC;IAEhE,iBAAiB;IACjB,oBAAoB,EAAE,sBAAsB;IAE5C,kBAAkB;IAClB,kBAAkB,EAAE,oBAAoB;IAExC,kBAAkB;IAClB,kBAAkB,EAAE,oBAAoB;IACxC,mBAAmB,EAAE,qBAAqB;IAE1C,oBAAoB;IACpB,oBAAoB,EAAE,sBAAsB;IAC5C,yBAAyB,EAAE,2BAA2B;IACtD,qBAAqB,EAAE,uBAAuB;IAE9C,qBAAqB;IACrB,qBAAqB,EAAE,uBAAuB;IAC9C,6BAA6B,EAAE,+BAA+B;IAC9D,6BAA6B,EAAE,+BAA+B;IAC9D,uBAAuB,EAAE,yBAAyB;IAClD,mBAAmB,EAAE,qBAAqB;IAC1C,4BAA4B,EAAE,8BAA8B;IAC5D,8BAA8B,EAAE,gCAAgC;IAEhE,kBAAkB;IAClB,2BAA2B,EAAE,6BAA6B;IAC1D,0BAA0B,EAAE,4BAA4B;IACxD,0BAA0B,EAAE,4BAA4B;IACxD,wBAAwB,EAAE,0BAA0B;IACpD,mBAAmB,EAAE,qBAAqB;IAC1C,0BAA0B,EAAE,4BAA4B;IACxD,0BAA0B,EAAE,4BAA4B;IACxD,mBAAmB,EAAE,qBAAqB;IAC1C,cAAc,EAAE,gBAAgB;IAChC,oBAAoB,EAAE,sBAAsB;IAC5C,4BAA4B,EAAE,8BAA8B;IAC5D,wBAAwB,EAAE,0BAA0B;IACpD,4BAA4B,EAAE,8BAA8B;IAC5D,6BAA6B,EAAE,+BAA+B;IAC9D,mCAAmC,EAAE,qCAAqC;IAC1E,kBAAkB,EAAE,oBAAoB;IACxC,sBAAsB,EAAE,wBAAwB;IAChD,8BAA8B,EAAE,gCAAgC;IAEhE,iBAAiB;IACjB,iBAAiB,EAAE,mBAAmB;IAEtC,wBAAwB;IACxB,wBAAwB,EAAE,0BAA0B;IAEpD,wBAAwB;IACxB,uBAAuB,EAAE,yBAAyB;IAClD,eAAe,EAAE,iBAAiB;IAElC,mBAAmB;IACnB,eAAe,EAAE,iBAAiB;IAClC,mBAAmB,EAAE,qBAAqB;IAE1C,gBAAgB;IAChB,YAAY,EAAE,cAAc;IAC5B,sBAAsB,EAAE,wBAAwB;IAChD,uBAAuB,EAAE,yBAAyB;IAClD,oBAAoB,EAAE,sBAAsB;IAC5C,qBAAqB,EAAE,uBAAuB;IAE9C,oBAAoB;IACpB,sBAAsB,EAAE,wBAAwB;IAChD,6BAA6B,EAAE,+BAA+B;IAC9D,cAAc,EAAE,gBAAgB;IAChC,UAAU,EAAE,YAAY;IAExB,wBAAwB;IACxB,aAAa,EAAE,eAAe;IAC9B,aAAa,EAAE,eAAe;IAC9B,aAAa,EAAE,eAAe;IAC9B,qBAAqB,EAAE,uBAAuB;IAC9C,qBAAqB,EAAE,uBAAuB;IAC9C,mBAAmB,EAAE,qBAAqB;IAC1C,mCAAmC,EAAE,qCAAqC;IAC1E,qBAAqB,EAAE,uBAAuB;IAE9C,oBAAoB;IACpB,4BAA4B,EAAE,8BAA8B;IAC5D,yBAAyB,EAAE,2BAA2B;IACtD,8BAA8B,EAAE,gCAAgC;IAEhE,0BAA0B;IAC1B,YAAY,EAAE,cAAc;IAE5B,oBAAoB;IACpB,cAAc,EAAE,gBAAgB;IAChC,gBAAgB,EAAE,kBAAkB;IACpC,uBAAuB,EAAE,yBAAyB;IAClD,kBAAkB,EAAE,oBAAoB;IAExC,iBAAiB;IACjB,iBAAiB,EAAE,mBAAmB;IACtC,gBAAgB,EAAE,kBAAkB;IACpC,0BAA0B,EAAE,4BAA4B;IACxD,yBAAyB,EAAE,2BAA2B;IACtD,sBAAsB,EAAE,wBAAwB;IAChD,eAAe,EAAE,iBAAiB;IAElC,wBAAwB;IACxB,iBAAiB,EAAE,mBAAmB;IACtC,uBAAuB,EAAE,yBAAyB;IAElD,uBAAuB;IACvB,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;CAC1B,CAAC;AAUX,uDAAuD;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"error-codes.js","sourceRoot":"","sources":["../../../../src/shared-lib/errors/error-codes.ts"],"names":[],"mappings":"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"}
@@ -44,7 +44,7 @@
44
44
  /**
45
45
  * Primary ingestion channels for data source tracking.
46
46
  */
47
- export declare const DATA_SOURCE_CHANNELS: readonly ["web", "mobile", "api", "admin", "system", "import", "webhook", "sync", "migration"];
47
+ export declare const DATA_SOURCE_CHANNELS: readonly ["web", "mobile", "api", "admin", "system", "import", "webhook", "sync", "migration", "unknown"];
48
48
  export type DataSourceChannel = typeof DATA_SOURCE_CHANNELS[number];
49
49
  /**
50
50
  * Unified data source tracking interface.
@@ -78,13 +78,225 @@ export interface DataSource {
78
78
  * Full URL of the referring page.
79
79
  */
80
80
  referrer?: string;
81
+ /**
82
+ * Platform/device information.
83
+ * SDK provides this - backend stores as-is.
84
+ */
85
+ platform?: Platform;
86
+ }
87
+ /**
88
+ * Platform/device information for analytics.
89
+ * SDK is responsible for populating this accurately.
90
+ * Sent via x-platform header as JSON string.
91
+ */
92
+ export interface Platform {
93
+ /** Operating system: 'iOS', 'Android', 'Windows', 'macOS', 'Linux' */
94
+ os?: string;
95
+ /** OS version: '17.4', '14.0', '11' */
96
+ osVersion?: string;
97
+ /** Browser name (web only): 'Safari', 'Chrome', 'Firefox' */
98
+ browser?: string;
99
+ /** Browser version (web only): '125.0' */
100
+ browserVersion?: string;
101
+ /** App name (native only): 'MyApp' */
102
+ app?: string;
103
+ /** App version (native only): '2.3.1' */
104
+ appVersion?: string;
105
+ /** Device type: 'phone', 'tablet', 'desktop', 'kiosk' */
106
+ deviceType?: 'phone' | 'tablet' | 'desktop' | 'kiosk' | 'other';
81
107
  }
82
108
  /**
83
109
  * Type guard to check if a value is a valid DataSourceChannel.
84
110
  */
85
111
  export declare function isDataSourceChannel(value: unknown): value is DataSourceChannel;
86
112
  /**
87
- * Default data source for manual/admin operations.
113
+ * Default data source when source cannot be determined.
114
+ * Used as fallback when CLS context is unavailable.
115
+ *
116
+ * NOTE: 'unknown' indicates a gap in tracking - should be rare.
117
+ * If you see many 'unknown' sources, check that DataSourceInterceptor is active.
88
118
  */
89
119
  export declare const DEFAULT_DATA_SOURCE: DataSource;
120
+ /**
121
+ * Known domain mappings for auto-detecting source from referrer.
122
+ * Maps hostnames to normalized source names.
123
+ */
124
+ export declare const KNOWN_SOURCE_DOMAINS: Record<string, string>;
125
+ /**
126
+ * Auto-detect source from referrer URL domain.
127
+ * Maps common domains to friendly source names.
128
+ *
129
+ * @param referrer - Full referrer URL
130
+ * @returns Normalized source name or undefined
131
+ *
132
+ * @example
133
+ * detectSourceFromReferrer('https://www.google.com/search?q=test') // 'google'
134
+ * detectSourceFromReferrer('https://l.facebook.com/...') // 'facebook'
135
+ * detectSourceFromReferrer('https://partner.example.com') // 'example'
136
+ */
137
+ export declare function detectSourceFromReferrer(referrer?: string): string | undefined;
138
+ /**
139
+ * Auto-detect channel from User-Agent string.
140
+ *
141
+ * @param userAgent - User-Agent header value
142
+ * @param path - Optional request path for webhook detection
143
+ * @returns Detected channel
144
+ *
145
+ * @example
146
+ * detectChannelFromUserAgent('Mozilla/5.0 (iPhone; ...)') // 'mobile'
147
+ * detectChannelFromUserAgent('Mozilla/5.0 (Windows NT...)') // 'web'
148
+ * detectChannelFromUserAgent('', '/webhook/stripe') // 'webhook'
149
+ */
150
+ export declare function detectChannelFromUserAgent(userAgent?: string, path?: string): DataSourceChannel;
151
+ /**
152
+ * UTM parameters extracted from URLs.
153
+ * Standard marketing attribution fields from Google Analytics UTM format.
154
+ */
155
+ export interface UtmParams {
156
+ /** Traffic source (utm_source) - e.g., 'google', 'newsletter', 'partner_app' */
157
+ source?: string;
158
+ /** Marketing medium (utm_medium) - e.g., 'email', 'cpc', 'referral' */
159
+ medium?: string;
160
+ /** Campaign name (utm_campaign) - e.g., 'summer_promo_2026' */
161
+ campaign?: string;
162
+ /** Campaign term (utm_term) - e.g., 'running+shoes' (for paid search) */
163
+ term?: string;
164
+ /** Campaign content (utm_content) - e.g., 'logolink', 'textlink' */
165
+ content?: string;
166
+ }
167
+ /**
168
+ * Parse UTM parameters from a URL (deep link, referrer, etc.).
169
+ * Supports standard Google Analytics UTM parameters.
170
+ *
171
+ * @param url - Full URL containing UTM query parameters
172
+ * @returns Parsed UTM parameters object
173
+ *
174
+ * @example
175
+ * // Deep link from email campaign
176
+ * parseUtmParams('myapp://screen?utm_source=mailchimp&utm_medium=email&utm_campaign=summer_2026')
177
+ * // Returns: { source: 'mailchimp', medium: 'email', campaign: 'summer_2026' }
178
+ *
179
+ * @example
180
+ * // Web URL with full UTM tracking
181
+ * parseUtmParams('https://app.example.com?utm_source=google&utm_medium=cpc&utm_campaign=brand&utm_term=loyalty+app')
182
+ * // Returns: { source: 'google', medium: 'cpc', campaign: 'brand', term: 'loyalty+app' }
183
+ */
184
+ export declare function parseUtmParams(url: string): UtmParams;
185
+ /**
186
+ * SDK Data Source configuration for WEB applications.
187
+ *
188
+ * Web SDK should NOT send `channel` - backend auto-detects from User-Agent.
189
+ * Web SDK should NOT send `referrer` - browser sends HTTP Referer header automatically.
190
+ * Web SDK should NOT send `source` unless overriding auto-detection from referrer.
191
+ *
192
+ * @example
193
+ * // Minimal - backend handles everything
194
+ * sdk.configure({ dataSource: {} });
195
+ *
196
+ * // With campaign tracking (from URL params)
197
+ * const utm = parseUtmParams(window.location.href);
198
+ * sdk.configure({
199
+ * dataSource: {
200
+ * medium: utm.medium,
201
+ * campaign: utm.campaign,
202
+ * source: utm.source, // Optional: overrides referrer-based detection
203
+ * }
204
+ * });
205
+ */
206
+ export interface WebDataSourceConfig {
207
+ /**
208
+ * Marketing medium for attribution.
209
+ * Examples: 'email', 'cpc', 'referral', 'organic', 'paid', 'social', 'affiliate'
210
+ *
211
+ * Tip: Parse from utm_medium in URL.
212
+ */
213
+ medium?: string;
214
+ /**
215
+ * Campaign identifier for tracking.
216
+ * Examples: 'summer_promo_2026', 'welcome_series', 'partner_launch'
217
+ *
218
+ * Tip: Parse from utm_campaign in URL.
219
+ */
220
+ campaign?: string;
221
+ /**
222
+ * Traffic source override.
223
+ * Only set if you need to override auto-detection from referrer.
224
+ * Examples: 'mailchimp', 'partner_xyz', 'qr_code'
225
+ *
226
+ * Backend auto-detects from: HTTP Referer header → domain extraction
227
+ */
228
+ source?: string;
229
+ /**
230
+ * Referrer URL override.
231
+ * Only set in edge cases where browser doesn't send Referer header:
232
+ * - In-app webviews
233
+ * - Privacy browsers stripping referrer
234
+ * - Cross-origin iframe scenarios
235
+ */
236
+ referrer?: string;
237
+ }
238
+ /**
239
+ * SDK Data Source configuration for NATIVE mobile applications.
240
+ *
241
+ * Native apps MUST send `channel` since there's no User-Agent auto-detection.
242
+ * Native apps SHOULD send `source` when available (no referrer header exists).
243
+ *
244
+ * @example
245
+ * // Basic native app setup
246
+ * sdk.configure({
247
+ * dataSource: {
248
+ * channel: 'mobile',
249
+ * }
250
+ * });
251
+ *
252
+ * // Deep link with UTM tracking
253
+ * const deepLinkUrl = 'myapp://screen?utm_source=email&utm_medium=push&utm_campaign=retention';
254
+ * const utm = parseUtmParams(deepLinkUrl);
255
+ * sdk.configure({
256
+ * dataSource: {
257
+ * channel: 'mobile',
258
+ * source: utm.source, // 'email'
259
+ * medium: utm.medium, // 'push'
260
+ * campaign: utm.campaign, // 'retention'
261
+ * }
262
+ * });
263
+ *
264
+ * // QR code scan
265
+ * sdk.configure({
266
+ * dataSource: {
267
+ * channel: 'mobile',
268
+ * source: 'qr_code',
269
+ * medium: 'referral',
270
+ * campaign: 'lobby_checkin',
271
+ * }
272
+ * });
273
+ */
274
+ export interface NativeDataSourceConfig {
275
+ /**
276
+ * Primary ingestion channel - REQUIRED for native apps.
277
+ * Backend cannot auto-detect without browser User-Agent.
278
+ */
279
+ channel: 'mobile' | 'kiosk' | 'pos';
280
+ /**
281
+ * Marketing medium for attribution.
282
+ * Examples: 'push', 'deeplink', 'email', 'referral', 'organic'
283
+ */
284
+ medium?: string;
285
+ /**
286
+ * Campaign identifier for tracking.
287
+ * Examples: 'summer_promo_2026', 'onboarding_v3', 'retention_30d'
288
+ */
289
+ campaign?: string;
290
+ /**
291
+ * Traffic source - STRONGLY RECOMMENDED for native apps.
292
+ * No referrer header exists, so backend cannot auto-detect.
293
+ * Examples: 'push_notification', 'deep_link', 'qr_code', 'partner_app'
294
+ */
295
+ source?: string;
296
+ }
297
+ /**
298
+ * Combined SDK Data Source configuration.
299
+ * Use WebDataSourceConfig for web apps, NativeDataSourceConfig for native.
300
+ */
301
+ export type SdkDataSourceConfig = WebDataSourceConfig | NativeDataSourceConfig;
90
302
  //# sourceMappingURL=data-source.type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-source.type.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/types/data-source.type.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB,gGAUvB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,OAAO,EAAE,iBAAiB,CAAC;IAE3B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAE9E;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,UAEjC,CAAC"}
1
+ {"version":3,"file":"data-source.type.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/types/data-source.type.ts"],"names":[],"mappings":"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"}
@@ -54,6 +54,7 @@ export const DATA_SOURCE_CHANNELS = [
54
54
  'webhook', // External webhook callback
55
55
  'sync', // Synchronization from external system
56
56
  'migration', // Data migration
57
+ 'unknown', // Source couldn't be determined (fallback)
57
58
  ];
58
59
  /**
59
60
  * Type guard to check if a value is a valid DataSourceChannel.
@@ -62,9 +63,187 @@ export function isDataSourceChannel(value) {
62
63
  return typeof value === 'string' && DATA_SOURCE_CHANNELS.includes(value);
63
64
  }
64
65
  /**
65
- * Default data source for manual/admin operations.
66
+ * Default data source when source cannot be determined.
67
+ * Used as fallback when CLS context is unavailable.
68
+ *
69
+ * NOTE: 'unknown' indicates a gap in tracking - should be rare.
70
+ * If you see many 'unknown' sources, check that DataSourceInterceptor is active.
66
71
  */
67
72
  export const DEFAULT_DATA_SOURCE = {
68
- channel: 'admin',
73
+ channel: 'unknown',
74
+ };
75
+ /**
76
+ * Known domain mappings for auto-detecting source from referrer.
77
+ * Maps hostnames to normalized source names.
78
+ */
79
+ export const KNOWN_SOURCE_DOMAINS = {
80
+ // Google
81
+ 'google.com': 'google',
82
+ 'google.co.uk': 'google',
83
+ 'google.de': 'google',
84
+ 'google.fr': 'google',
85
+ 'google.es': 'google',
86
+ 'google.it': 'google',
87
+ 'google.nl': 'google',
88
+ 'google.pt': 'google',
89
+ 'google.pl': 'google',
90
+ 'google.ru': 'google',
91
+ 'google.com.br': 'google',
92
+ 'google.ca': 'google',
93
+ 'google.com.au': 'google',
94
+ 'google.co.jp': 'google',
95
+ 'google.co.in': 'google',
96
+ // Facebook
97
+ 'facebook.com': 'facebook',
98
+ 'fb.com': 'facebook',
99
+ 'm.facebook.com': 'facebook',
100
+ 'l.facebook.com': 'facebook',
101
+ 'lm.facebook.com': 'facebook',
102
+ // Instagram
103
+ 'instagram.com': 'instagram',
104
+ 'l.instagram.com': 'instagram',
105
+ // Twitter/X
106
+ 'twitter.com': 'twitter',
107
+ 'x.com': 'twitter',
108
+ 't.co': 'twitter',
109
+ 'mobile.twitter.com': 'twitter',
110
+ // LinkedIn
111
+ 'linkedin.com': 'linkedin',
112
+ 'lnkd.in': 'linkedin',
113
+ // YouTube
114
+ 'youtube.com': 'youtube',
115
+ 'youtu.be': 'youtube',
116
+ 'm.youtube.com': 'youtube',
117
+ // TikTok
118
+ 'tiktok.com': 'tiktok',
119
+ 'vm.tiktok.com': 'tiktok',
120
+ // Other social
121
+ 'pinterest.com': 'pinterest',
122
+ 'reddit.com': 'reddit',
123
+ 'tumblr.com': 'tumblr',
124
+ 'snapchat.com': 'snapchat',
125
+ // Search engines
126
+ 'bing.com': 'bing',
127
+ 'yahoo.com': 'yahoo',
128
+ 'duckduckgo.com': 'duckduckgo',
129
+ 'baidu.com': 'baidu',
130
+ 'yandex.com': 'yandex',
131
+ 'yandex.ru': 'yandex',
132
+ // Email providers (for tracking email clicks)
133
+ 'mail.google.com': 'gmail',
134
+ 'outlook.live.com': 'outlook',
135
+ 'outlook.office.com': 'outlook',
69
136
  };
137
+ /**
138
+ * Auto-detect source from referrer URL domain.
139
+ * Maps common domains to friendly source names.
140
+ *
141
+ * @param referrer - Full referrer URL
142
+ * @returns Normalized source name or undefined
143
+ *
144
+ * @example
145
+ * detectSourceFromReferrer('https://www.google.com/search?q=test') // 'google'
146
+ * detectSourceFromReferrer('https://l.facebook.com/...') // 'facebook'
147
+ * detectSourceFromReferrer('https://partner.example.com') // 'example'
148
+ */
149
+ export function detectSourceFromReferrer(referrer) {
150
+ if (!referrer)
151
+ return undefined;
152
+ try {
153
+ const url = new URL(referrer);
154
+ const hostname = url.hostname.toLowerCase().replace(/^www\./, '');
155
+ // Check exact match first
156
+ if (KNOWN_SOURCE_DOMAINS[hostname]) {
157
+ return KNOWN_SOURCE_DOMAINS[hostname];
158
+ }
159
+ // Check if hostname ends with known domain (for subdomains)
160
+ for (const [domain, source] of Object.entries(KNOWN_SOURCE_DOMAINS)) {
161
+ if (hostname.endsWith('.' + domain)) {
162
+ return source;
163
+ }
164
+ }
165
+ // Fallback: extract main domain name (e.g., 'example' from 'mail.example.com')
166
+ const parts = hostname.split('.');
167
+ if (parts.length >= 2) {
168
+ return parts[parts.length - 2]; // Returns 'example' from 'sub.example.com'
169
+ }
170
+ return hostname;
171
+ }
172
+ catch {
173
+ // Invalid URL, return undefined
174
+ return undefined;
175
+ }
176
+ }
177
+ /**
178
+ * Auto-detect channel from User-Agent string.
179
+ *
180
+ * @param userAgent - User-Agent header value
181
+ * @param path - Optional request path for webhook detection
182
+ * @returns Detected channel
183
+ *
184
+ * @example
185
+ * detectChannelFromUserAgent('Mozilla/5.0 (iPhone; ...)') // 'mobile'
186
+ * detectChannelFromUserAgent('Mozilla/5.0 (Windows NT...)') // 'web'
187
+ * detectChannelFromUserAgent('', '/webhook/stripe') // 'webhook'
188
+ */
189
+ export function detectChannelFromUserAgent(userAgent, path) {
190
+ // Check for webhook paths
191
+ if (path?.includes('/webhook')) {
192
+ return 'webhook';
193
+ }
194
+ const ua = (userAgent || '').toLowerCase();
195
+ // Check for mobile user-agents
196
+ if (/mobile|android|iphone|ipad|ipod|blackberry|windows phone/i.test(ua)) {
197
+ return 'mobile';
198
+ }
199
+ // Check for bot/crawler patterns (system)
200
+ if (/bot|crawler|spider|scraper|curl|wget|python|node-fetch|axios/i.test(ua)) {
201
+ return 'api';
202
+ }
203
+ // Default to web for browser-like user agents
204
+ return 'web';
205
+ }
206
+ /**
207
+ * Parse UTM parameters from a URL (deep link, referrer, etc.).
208
+ * Supports standard Google Analytics UTM parameters.
209
+ *
210
+ * @param url - Full URL containing UTM query parameters
211
+ * @returns Parsed UTM parameters object
212
+ *
213
+ * @example
214
+ * // Deep link from email campaign
215
+ * parseUtmParams('myapp://screen?utm_source=mailchimp&utm_medium=email&utm_campaign=summer_2026')
216
+ * // Returns: { source: 'mailchimp', medium: 'email', campaign: 'summer_2026' }
217
+ *
218
+ * @example
219
+ * // Web URL with full UTM tracking
220
+ * parseUtmParams('https://app.example.com?utm_source=google&utm_medium=cpc&utm_campaign=brand&utm_term=loyalty+app')
221
+ * // Returns: { source: 'google', medium: 'cpc', campaign: 'brand', term: 'loyalty+app' }
222
+ */
223
+ export function parseUtmParams(url) {
224
+ const params = {};
225
+ try {
226
+ const urlObj = new URL(url);
227
+ const searchParams = urlObj.searchParams;
228
+ const source = searchParams.get('utm_source');
229
+ const medium = searchParams.get('utm_medium');
230
+ const campaign = searchParams.get('utm_campaign');
231
+ const term = searchParams.get('utm_term');
232
+ const content = searchParams.get('utm_content');
233
+ if (source)
234
+ params.source = source;
235
+ if (medium)
236
+ params.medium = medium;
237
+ if (campaign)
238
+ params.campaign = campaign;
239
+ if (term)
240
+ params.term = term;
241
+ if (content)
242
+ params.content = content;
243
+ }
244
+ catch {
245
+ // Invalid URL, return empty params
246
+ }
247
+ return params;
248
+ }
70
249
  //# sourceMappingURL=data-source.type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-source.type.js","sourceRoot":"","sources":["../../../../src/shared-lib/types/data-source.type.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,KAAK,EAAQ,0BAA0B;IACvC,QAAQ,EAAK,2BAA2B;IACxC,KAAK,EAAQ,yBAAyB;IACtC,OAAO,EAAM,0BAA0B;IACvC,QAAQ,EAAK,+BAA+B;IAC5C,QAAQ,EAAK,yBAAyB;IACtC,SAAS,EAAI,4BAA4B;IACzC,MAAM,EAAO,uCAAuC;IACpD,WAAW,EAAE,iBAAiB;CACtB,CAAC;AA0CX;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc;IAChD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,oBAAoB,CAAC,QAAQ,CAAC,KAA0B,CAAC,CAAC;AAChG,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C,OAAO,EAAE,OAAO;CACjB,CAAC"}
1
+ {"version":3,"file":"data-source.type.js","sourceRoot":"","sources":["../../../../src/shared-lib/types/data-source.type.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,18 @@
1
1
  import { BasePaginationQuery } from '../interfaces/base-pagination.interface';
2
2
  import { SortOrder } from '../enum';
3
3
  import type { NativeTokenType } from './native-token.type';
4
+ /**
5
+ * CSV Export filter options for date range filtering.
6
+ * Reusable across all domain export endpoints.
7
+ */
8
+ export interface CsvExportFilters {
9
+ /** Start date for filtering (ISO format) */
10
+ fromDate?: string;
11
+ /** End date for filtering (ISO format) */
12
+ toDate?: string;
13
+ /** Comma-separated list of relations to include */
14
+ include?: string;
15
+ }
4
16
  /**
5
17
  * Base filter options shared across all list endpoints.
6
18
  * Extends BasePaginationQuery for pagination/sorting.
@@ -1 +1 @@
1
- {"version":3,"file":"filter-options.type.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/types/filter-options.type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter-options.type.d.ts","sourceRoot":"","sources":["../../../../src/shared-lib/types/filter-options.type.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"filter-options.type.js","sourceRoot":"","sources":["../../../../src/shared-lib/types/filter-options.type.ts"],"names":[],"mappings":"AA4JA;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAO7B,OAAW;IACZ,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAE/B,OAAO;QACL,GAAG,OAAO;QACV,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ;QAC1C,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI;QACtC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK;KACzC,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"filter-options.type.js","sourceRoot":"","sources":["../../../../src/shared-lib/types/filter-options.type.ts"],"names":[],"mappings":"AAyKA;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAO7B,OAAW;IACZ,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAE/B,OAAO;QACL,GAAG,OAAO;QACV,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,QAAQ;QAC1C,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI;QACtC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK;KACzC,CAAC;AACT,CAAC"}
@@ -1,4 +1,4 @@
1
- import { BusinessNotFoundError, BusinessNotMinterError, CampaignNotFoundError, MembershipNotFoundError, MembershipAlreadyExistsError, MembershipLastOwnerError, GeographicRestrictionError, LocationVerificationRequiredError, RedemptionLimitReachedError, RedemptionAlreadyProcessingError, UserStatusRestrictedError, CrossBusinessAccessError } from '../../shared-lib/errors/domains/business-errors';
1
+ import { BusinessNotFoundError, BusinessNotMinterError, CampaignNotFoundError, MembershipNotFoundError, MembershipAlreadyExistsError, MembershipLastOwnerError, GeographicRestrictionError, LocationVerificationRequiredError, RedemptionLimitReachedError, RedemptionAlreadyProcessingError, UserStatusRestrictedError, CrossBusinessAccessError, RequiredFieldsMissingError, BookingRequirementNotMetError } from '../../shared-lib/errors/domains/business-errors';
2
2
  import { UserNotFoundError } from '../../shared-lib/errors/domains/user-errors';
3
3
  import { TokenNotFoundError, TokenNotActiveError, TokenIdRequiredError, TokenTypeNotFoundError, TokenUnitNotFoundError, NftExpiredError, NftBusinessRestrictionError } from '../../shared-lib/errors/domains/token-errors';
4
4
  import { TransactionNotFoundError, TransactionAlreadyCompletedError, TransactionNotPendingError, TransactionValidationError, UnexpectedValidationScenarioError, TransactionExpiredError } from '../../shared-lib/errors/domains/transaction-errors';
@@ -60,6 +60,8 @@ export declare const Errors: {
60
60
  limitReached: (limitType: "max_redemption" | "user_limit") => RedemptionLimitReachedError;
61
61
  userStatusRestricted: () => UserStatusRestrictedError;
62
62
  redemptionAlreadyProcessing: (redeemId: string, status: string) => RedemptionAlreadyProcessingError;
63
+ requiredFieldsMissing: (missingFields: string[]) => RequiredFieldsMissingError;
64
+ bookingRequirementNotMet: (requirementType: string) => BookingRequirementNotMetError;
63
65
  invalidInput: (field: string, reason?: string) => InvalidInputError;
64
66
  requiredField: (field: string) => RequiredFieldError;
65
67
  invalidFormat: (field: string, format: string) => InvalidFormatError;
@@ -1 +1 @@
1
- {"version":3,"file":"error-factory.d.ts","sourceRoot":"","sources":["../../../../src/shared-patterns/errors/error-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error-factory.d.ts","sourceRoot":"","sources":["../../../../src/shared-patterns/errors/error-factory.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  // Import directly from source files (not the barrel which only exports types)
2
- import { BusinessNotFoundError, BusinessNotMinterError, CampaignNotFoundError, MembershipNotFoundError, MembershipAlreadyExistsError, MembershipLastOwnerError, GeographicRestrictionError, LocationVerificationRequiredError, RedemptionLimitReachedError, RedemptionAlreadyProcessingError, UserStatusRestrictedError, CrossBusinessAccessError, } from '../../shared-lib/errors/domains/business-errors.js';
2
+ import { BusinessNotFoundError, BusinessNotMinterError, CampaignNotFoundError, MembershipNotFoundError, MembershipAlreadyExistsError, MembershipLastOwnerError, GeographicRestrictionError, LocationVerificationRequiredError, RedemptionLimitReachedError, RedemptionAlreadyProcessingError, UserStatusRestrictedError, CrossBusinessAccessError, RequiredFieldsMissingError, BookingRequirementNotMetError, } from '../../shared-lib/errors/domains/business-errors.js';
3
3
  import { UserNotFoundError, } from '../../shared-lib/errors/domains/user-errors.js';
4
4
  import { TokenNotFoundError, TokenNotActiveError, TokenIdRequiredError, TokenTypeNotFoundError, TokenUnitNotFoundError, NftExpiredError, NftBusinessRestrictionError, } from '../../shared-lib/errors/domains/token-errors.js';
5
5
  import { TransactionNotFoundError, TransactionAlreadyCompletedError, TransactionNotPendingError, TransactionValidationError, UnexpectedValidationScenarioError, TransactionExpiredError, } from '../../shared-lib/errors/domains/transaction-errors.js';
@@ -180,6 +180,12 @@ class ErrorFactory {
180
180
  static redemptionAlreadyProcessing(redeemId, status) {
181
181
  return new RedemptionAlreadyProcessingError(redeemId, status);
182
182
  }
183
+ static requiredFieldsMissing(missingFields) {
184
+ return new RequiredFieldsMissingError(missingFields);
185
+ }
186
+ static bookingRequirementNotMet(requirementType) {
187
+ return new BookingRequirementNotMetError(requirementType);
188
+ }
183
189
  /**
184
190
  * Validation patterns
185
191
  */
@@ -396,6 +402,8 @@ export const Errors = {
396
402
  limitReached: (limitType) => ErrorFactory.limitReached(limitType),
397
403
  userStatusRestricted: () => ErrorFactory.userStatusRestricted(),
398
404
  redemptionAlreadyProcessing: (redeemId, status) => ErrorFactory.redemptionAlreadyProcessing(redeemId, status),
405
+ requiredFieldsMissing: (missingFields) => ErrorFactory.requiredFieldsMissing(missingFields),
406
+ bookingRequirementNotMet: (requirementType) => ErrorFactory.bookingRequirementNotMet(requirementType),
399
407
  // Validation
400
408
  invalidInput: (field, reason) => ErrorFactory.invalidInput(field, reason),
401
409
  requiredField: (field) => ErrorFactory.requiredField(field),