@shware/analytics 4.0.1 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/dist/hooks/use-outbound-click-analytics.cjs +2 -2
  2. package/dist/hooks/use-outbound-click-analytics.cjs.map +1 -1
  3. package/dist/hooks/use-outbound-click-analytics.mjs +2 -2
  4. package/dist/hooks/use-outbound-click-analytics.mjs.map +1 -1
  5. package/dist/index.cjs +0 -1
  6. package/dist/index.d.cts +2 -2
  7. package/dist/index.d.mts +2 -2
  8. package/dist/index.mjs +2 -2
  9. package/dist/native/fingerprint.cjs +3 -3
  10. package/dist/native/fingerprint.cjs.map +1 -1
  11. package/dist/native/fingerprint.mjs +3 -3
  12. package/dist/native/fingerprint.mjs.map +1 -1
  13. package/dist/native/firebase.cjs.map +1 -1
  14. package/dist/native/firebase.mjs.map +1 -1
  15. package/dist/native/index.cjs +1 -1
  16. package/dist/native/index.mjs +1 -1
  17. package/dist/native/setup.cjs +3 -5
  18. package/dist/native/setup.cjs.map +1 -1
  19. package/dist/native/setup.mjs +3 -5
  20. package/dist/native/setup.mjs.map +1 -1
  21. package/dist/react-router/index.cjs +1 -1
  22. package/dist/react-router/index.mjs +1 -1
  23. package/dist/schema/index.cjs +0 -14
  24. package/dist/schema/index.cjs.map +1 -1
  25. package/dist/schema/index.d.cts +1 -150
  26. package/dist/schema/index.d.cts.map +1 -1
  27. package/dist/schema/index.d.mts +1 -150
  28. package/dist/schema/index.d.mts.map +1 -1
  29. package/dist/schema/index.mjs +2 -15
  30. package/dist/schema/index.mjs.map +1 -1
  31. package/dist/server/linkedin-conversions-api.cjs +1 -1
  32. package/dist/server/linkedin-conversions-api.cjs.map +1 -1
  33. package/dist/server/linkedin-conversions-api.mjs +1 -1
  34. package/dist/server/linkedin-conversions-api.mjs.map +1 -1
  35. package/dist/server/meta-conversions-api.cjs +4 -4
  36. package/dist/server/meta-conversions-api.cjs.map +1 -1
  37. package/dist/server/meta-conversions-api.d.cts.map +1 -1
  38. package/dist/server/meta-conversions-api.d.mts.map +1 -1
  39. package/dist/server/meta-conversions-api.mjs +4 -4
  40. package/dist/server/meta-conversions-api.mjs.map +1 -1
  41. package/dist/server/openai-conversions-api.cjs +1 -1
  42. package/dist/server/openai-conversions-api.cjs.map +1 -1
  43. package/dist/server/openai-conversions-api.mjs +1 -1
  44. package/dist/server/openai-conversions-api.mjs.map +1 -1
  45. package/dist/server/reddit-conversions-api.cjs +3 -3
  46. package/dist/server/reddit-conversions-api.cjs.map +1 -1
  47. package/dist/server/reddit-conversions-api.mjs +3 -3
  48. package/dist/server/reddit-conversions-api.mjs.map +1 -1
  49. package/dist/setup/session.cjs.map +1 -1
  50. package/dist/setup/session.mjs.map +1 -1
  51. package/dist/tanstack/analytics.cjs +1 -1
  52. package/dist/tanstack/analytics.mjs +1 -1
  53. package/dist/third-parties/google-analytics.cjs.map +1 -1
  54. package/dist/third-parties/google-analytics.d.cts +4 -1
  55. package/dist/third-parties/google-analytics.d.cts.map +1 -1
  56. package/dist/third-parties/google-analytics.d.mts +4 -1
  57. package/dist/third-parties/google-analytics.d.mts.map +1 -1
  58. package/dist/third-parties/google-analytics.mjs.map +1 -1
  59. package/dist/third-parties/linkedin-insight-tag.cjs.map +1 -1
  60. package/dist/third-parties/linkedin-insight-tag.d.cts +4 -1
  61. package/dist/third-parties/linkedin-insight-tag.d.cts.map +1 -1
  62. package/dist/third-parties/linkedin-insight-tag.d.mts +4 -1
  63. package/dist/third-parties/linkedin-insight-tag.d.mts.map +1 -1
  64. package/dist/third-parties/linkedin-insight-tag.mjs.map +1 -1
  65. package/dist/third-parties/meta-pixel.cjs.map +1 -1
  66. package/dist/third-parties/meta-pixel.d.cts +4 -1
  67. package/dist/third-parties/meta-pixel.d.cts.map +1 -1
  68. package/dist/third-parties/meta-pixel.d.mts +4 -1
  69. package/dist/third-parties/meta-pixel.d.mts.map +1 -1
  70. package/dist/third-parties/meta-pixel.mjs.map +1 -1
  71. package/dist/third-parties/openai-pixel.cjs +2 -1
  72. package/dist/third-parties/openai-pixel.cjs.map +1 -1
  73. package/dist/third-parties/openai-pixel.d.cts +4 -1
  74. package/dist/third-parties/openai-pixel.d.cts.map +1 -1
  75. package/dist/third-parties/openai-pixel.d.mts +4 -1
  76. package/dist/third-parties/openai-pixel.d.mts.map +1 -1
  77. package/dist/third-parties/openai-pixel.mjs +2 -1
  78. package/dist/third-parties/openai-pixel.mjs.map +1 -1
  79. package/dist/third-parties/reddit-pixel.cjs.map +1 -1
  80. package/dist/third-parties/reddit-pixel.d.cts +4 -1
  81. package/dist/third-parties/reddit-pixel.d.cts.map +1 -1
  82. package/dist/third-parties/reddit-pixel.d.mts +4 -1
  83. package/dist/third-parties/reddit-pixel.d.mts.map +1 -1
  84. package/dist/third-parties/reddit-pixel.mjs.map +1 -1
  85. package/dist/track/index.cjs +1 -1
  86. package/dist/track/index.cjs.map +1 -1
  87. package/dist/track/index.d.cts.map +1 -1
  88. package/dist/track/index.d.mts.map +1 -1
  89. package/dist/track/index.mjs +1 -1
  90. package/dist/track/index.mjs.map +1 -1
  91. package/dist/track/oaiq.cjs.map +1 -1
  92. package/dist/track/oaiq.d.cts +1 -1
  93. package/dist/track/oaiq.d.cts.map +1 -1
  94. package/dist/track/oaiq.d.mts +1 -1
  95. package/dist/track/oaiq.d.mts.map +1 -1
  96. package/dist/track/oaiq.mjs.map +1 -1
  97. package/dist/track/rdt.cjs +3 -4
  98. package/dist/track/rdt.cjs.map +1 -1
  99. package/dist/track/rdt.mjs +3 -4
  100. package/dist/track/rdt.mjs.map +1 -1
  101. package/dist/track/types.d.cts +0 -4
  102. package/dist/track/types.d.cts.map +1 -1
  103. package/dist/track/types.d.mts +0 -4
  104. package/dist/track/types.d.mts.map +1 -1
  105. package/dist/web/index.cjs +1 -1
  106. package/dist/web/index.cjs.map +1 -1
  107. package/dist/web/index.d.cts.map +1 -1
  108. package/dist/web/index.d.mts.map +1 -1
  109. package/dist/web/index.mjs +1 -1
  110. package/dist/web/index.mjs.map +1 -1
  111. package/package.json +15 -15
@@ -9,15 +9,6 @@ declare const tagsSchema: z.ZodMiniObject<{
9
9
  browser: z.ZodMiniOptional<z.ZodMiniString<string>>;
10
10
  browser_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
11
11
  browser_version: z.ZodMiniOptional<z.ZodMiniString<string>>;
12
- platform: z.ZodMiniEnum<{
13
- android: "android";
14
- ios: "ios";
15
- linux: "linux";
16
- macos: "macos";
17
- unknown: "unknown";
18
- web: "web";
19
- windows: "windows";
20
- }>;
21
12
  device: z.ZodMiniOptional<z.ZodMiniString<string>>;
22
13
  device_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
23
14
  device_type: z.ZodMiniOptional<z.ZodMiniString<string>>;
@@ -29,10 +20,6 @@ declare const tagsSchema: z.ZodMiniObject<{
29
20
  release: z.ZodMiniOptional<z.ZodMiniString<string>>;
30
21
  language: z.ZodMiniOptional<z.ZodMiniString<string>>;
31
22
  time_zone: z.ZodMiniOptional<z.ZodMiniString<string>>;
32
- environment: z.ZodMiniEnum<{
33
- development: "development";
34
- production: "production";
35
- }>;
36
23
  source_url: z.ZodMiniOptional<z.ZodMiniString<string>>;
37
24
  source: z.ZodMiniOptional<z.ZodMiniEnum<{
38
25
  app: "app";
@@ -79,103 +66,6 @@ declare const tagsSchema: z.ZodMiniObject<{
79
66
  utm_marketing_tactic: z.ZodMiniOptional<z.ZodMiniString<string>>;
80
67
  }, z.core.$strip>;
81
68
  declare const propertiesSchema: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>, z.ZodMiniBoolean<boolean>, z.ZodMiniNull, z.ZodMiniArray<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>, z.ZodMiniBoolean<boolean>, z.ZodMiniNull]>>>]>>>;
82
- /** @deprecated */
83
- declare const createTrackEventSchemaV1: z.ZodMiniArray<z.ZodMiniObject<{
84
- name: z.ZodMiniString<string>;
85
- visitor_id: z.ZodMiniBigInt<unknown>;
86
- session_id: z.ZodMiniUUID;
87
- platform: z.ZodMiniEnum<{
88
- android: "android";
89
- ios: "ios";
90
- linux: "linux";
91
- macos: "macos";
92
- unknown: "unknown";
93
- web: "web";
94
- windows: "windows";
95
- }>;
96
- environment: z.ZodMiniEnum<{
97
- development: "development";
98
- production: "production";
99
- }>;
100
- timestamp: iso.ZodMiniISODateTime;
101
- tags: z.ZodMiniObject<{
102
- os: z.ZodMiniOptional<z.ZodMiniString<string>>;
103
- os_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
104
- os_version: z.ZodMiniOptional<z.ZodMiniString<string>>;
105
- browser: z.ZodMiniOptional<z.ZodMiniString<string>>;
106
- browser_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
107
- browser_version: z.ZodMiniOptional<z.ZodMiniString<string>>;
108
- platform: z.ZodMiniEnum<{
109
- android: "android";
110
- ios: "ios";
111
- linux: "linux";
112
- macos: "macos";
113
- unknown: "unknown";
114
- web: "web";
115
- windows: "windows";
116
- }>;
117
- device: z.ZodMiniOptional<z.ZodMiniString<string>>;
118
- device_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
119
- device_type: z.ZodMiniOptional<z.ZodMiniString<string>>;
120
- device_vendor: z.ZodMiniOptional<z.ZodMiniString<string>>;
121
- device_pixel_ratio: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
122
- screen_width: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
123
- screen_height: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
124
- screen_resolution: z.ZodMiniOptional<z.ZodMiniPipe<z.ZodMiniString<string>, z.ZodMiniTransform<`${number}x${number}`, string>>>;
125
- release: z.ZodMiniOptional<z.ZodMiniString<string>>;
126
- language: z.ZodMiniOptional<z.ZodMiniString<string>>;
127
- time_zone: z.ZodMiniOptional<z.ZodMiniString<string>>;
128
- environment: z.ZodMiniEnum<{
129
- development: "development";
130
- production: "production";
131
- }>;
132
- source_url: z.ZodMiniOptional<z.ZodMiniString<string>>;
133
- source: z.ZodMiniOptional<z.ZodMiniEnum<{
134
- app: "app";
135
- offline: "offline";
136
- web: "web";
137
- }>>;
138
- page_referrer: z.ZodMiniOptional<z.ZodMiniString<string>>;
139
- advertising_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
140
- install_referrer: z.ZodMiniOptional<z.ZodMiniString<string>>;
141
- fbc: z.ZodMiniOptional<z.ZodMiniString<string>>;
142
- fbp: z.ZodMiniOptional<z.ZodMiniString<string>>;
143
- fbclid: z.ZodMiniOptional<z.ZodMiniString<string>>;
144
- ad_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
145
- ad_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
146
- adset_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
147
- adset_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
148
- campaign_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
149
- campaign_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
150
- placement: z.ZodMiniOptional<z.ZodMiniString<string>>;
151
- site_source_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
152
- gclid: z.ZodMiniOptional<z.ZodMiniString<string>>;
153
- gclsrc: z.ZodMiniOptional<z.ZodMiniString<string>>;
154
- gad_source: z.ZodMiniOptional<z.ZodMiniString<string>>;
155
- gad_campaignid: z.ZodMiniOptional<z.ZodMiniString<string>>;
156
- rdt_cid: z.ZodMiniOptional<z.ZodMiniString<string>>;
157
- rdt_uuid: z.ZodMiniOptional<z.ZodMiniString<string>>;
158
- dclid: z.ZodMiniOptional<z.ZodMiniString<string>>;
159
- ko_click_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
160
- li_fat_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
161
- msclkid: z.ZodMiniOptional<z.ZodMiniString<string>>;
162
- sccid: z.ZodMiniOptional<z.ZodMiniString<string>>;
163
- ttclid: z.ZodMiniOptional<z.ZodMiniString<string>>;
164
- twclid: z.ZodMiniOptional<z.ZodMiniString<string>>;
165
- wbraid: z.ZodMiniOptional<z.ZodMiniString<string>>;
166
- yclid: z.ZodMiniOptional<z.ZodMiniString<string>>;
167
- utm_source: z.ZodMiniOptional<z.ZodMiniString<string>>;
168
- utm_medium: z.ZodMiniOptional<z.ZodMiniString<string>>;
169
- utm_campaign: z.ZodMiniOptional<z.ZodMiniString<string>>;
170
- utm_term: z.ZodMiniOptional<z.ZodMiniString<string>>;
171
- utm_content: z.ZodMiniOptional<z.ZodMiniString<string>>;
172
- utm_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
173
- utm_source_platform: z.ZodMiniOptional<z.ZodMiniString<string>>;
174
- utm_creative_format: z.ZodMiniOptional<z.ZodMiniString<string>>;
175
- utm_marketing_tactic: z.ZodMiniOptional<z.ZodMiniString<string>>;
176
- }, z.core.$strip>;
177
- properties: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>, z.ZodMiniBoolean<boolean>, z.ZodMiniNull, z.ZodMiniArray<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>, z.ZodMiniBoolean<boolean>, z.ZodMiniNull]>>>]>>>;
178
- }, z.core.$strip>>;
179
69
  declare const createTrackEventSchema: z.ZodMiniArray<z.ZodMiniObject<{
180
70
  name: z.ZodMiniString<string>;
181
71
  visitor_id: z.ZodMiniUUID;
@@ -201,15 +91,6 @@ declare const createTrackEventSchema: z.ZodMiniArray<z.ZodMiniObject<{
201
91
  browser: z.ZodMiniOptional<z.ZodMiniString<string>>;
202
92
  browser_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
203
93
  browser_version: z.ZodMiniOptional<z.ZodMiniString<string>>;
204
- platform: z.ZodMiniEnum<{
205
- android: "android";
206
- ios: "ios";
207
- linux: "linux";
208
- macos: "macos";
209
- unknown: "unknown";
210
- web: "web";
211
- windows: "windows";
212
- }>;
213
94
  device: z.ZodMiniOptional<z.ZodMiniString<string>>;
214
95
  device_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
215
96
  device_type: z.ZodMiniOptional<z.ZodMiniString<string>>;
@@ -221,10 +102,6 @@ declare const createTrackEventSchema: z.ZodMiniArray<z.ZodMiniObject<{
221
102
  release: z.ZodMiniOptional<z.ZodMiniString<string>>;
222
103
  language: z.ZodMiniOptional<z.ZodMiniString<string>>;
223
104
  time_zone: z.ZodMiniOptional<z.ZodMiniString<string>>;
224
- environment: z.ZodMiniEnum<{
225
- development: "development";
226
- production: "production";
227
- }>;
228
105
  source_url: z.ZodMiniOptional<z.ZodMiniString<string>>;
229
106
  source: z.ZodMiniOptional<z.ZodMiniEnum<{
230
107
  app: "app";
@@ -294,15 +171,6 @@ declare const createVisitorSchema: z.ZodMiniObject<{
294
171
  browser: z.ZodMiniOptional<z.ZodMiniString<string>>;
295
172
  browser_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
296
173
  browser_version: z.ZodMiniOptional<z.ZodMiniString<string>>;
297
- platform: z.ZodMiniEnum<{
298
- android: "android";
299
- ios: "ios";
300
- linux: "linux";
301
- macos: "macos";
302
- unknown: "unknown";
303
- web: "web";
304
- windows: "windows";
305
- }>;
306
174
  device: z.ZodMiniOptional<z.ZodMiniString<string>>;
307
175
  device_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
308
176
  device_type: z.ZodMiniOptional<z.ZodMiniString<string>>;
@@ -314,10 +182,6 @@ declare const createVisitorSchema: z.ZodMiniObject<{
314
182
  release: z.ZodMiniOptional<z.ZodMiniString<string>>;
315
183
  language: z.ZodMiniOptional<z.ZodMiniString<string>>;
316
184
  time_zone: z.ZodMiniOptional<z.ZodMiniString<string>>;
317
- environment: z.ZodMiniEnum<{
318
- development: "development";
319
- production: "production";
320
- }>;
321
185
  source_url: z.ZodMiniOptional<z.ZodMiniString<string>>;
322
186
  source: z.ZodMiniOptional<z.ZodMiniEnum<{
323
187
  app: "app";
@@ -427,15 +291,6 @@ declare const updateVisitorSchema: z.ZodMiniObject<{
427
291
  browser: z.ZodMiniOptional<z.ZodMiniString<string>>;
428
292
  browser_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
429
293
  browser_version: z.ZodMiniOptional<z.ZodMiniString<string>>;
430
- platform: z.ZodMiniEnum<{
431
- android: "android";
432
- ios: "ios";
433
- linux: "linux";
434
- macos: "macos";
435
- unknown: "unknown";
436
- web: "web";
437
- windows: "windows";
438
- }>;
439
294
  device: z.ZodMiniOptional<z.ZodMiniString<string>>;
440
295
  device_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
441
296
  device_type: z.ZodMiniOptional<z.ZodMiniString<string>>;
@@ -447,10 +302,6 @@ declare const updateVisitorSchema: z.ZodMiniObject<{
447
302
  release: z.ZodMiniOptional<z.ZodMiniString<string>>;
448
303
  language: z.ZodMiniOptional<z.ZodMiniString<string>>;
449
304
  time_zone: z.ZodMiniOptional<z.ZodMiniString<string>>;
450
- environment: z.ZodMiniEnum<{
451
- development: "development";
452
- production: "production";
453
- }>;
454
305
  source_url: z.ZodMiniOptional<z.ZodMiniString<string>>;
455
306
  source: z.ZodMiniOptional<z.ZodMiniEnum<{
456
307
  app: "app";
@@ -526,5 +377,5 @@ type CreateVisitorDTO = z.output<typeof createVisitorSchema>;
526
377
  type UserProvidedDataDTO = z.output<typeof userProvidedDataSchema>;
527
378
  type UpdateVisitorDTO = z.output<typeof updateVisitorSchema>;
528
379
  //#endregion
529
- export { ALL_ENVIRONMENTS, ALL_PLATFORMS, CreateFeedbackDTO, CreateLinkDTO, CreateTrackEventDTO, CreateVisitorDTO, UpdateVisitorDTO, UserProvidedDataDTO, createFeedbackSchema, createLinkSchema, createTrackEventSchema, createTrackEventSchemaV1, createVisitorSchema, propertiesSchema, tagsSchema, updateVisitorSchema, userProvidedDataSchema };
380
+ export { ALL_ENVIRONMENTS, ALL_PLATFORMS, CreateFeedbackDTO, CreateLinkDTO, CreateTrackEventDTO, CreateVisitorDTO, UpdateVisitorDTO, UserProvidedDataDTO, createFeedbackSchema, createLinkSchema, createTrackEventSchema, createVisitorSchema, propertiesSchema, tagsSchema, updateVisitorSchema, userProvidedDataSchema };
530
381
  //# sourceMappingURL=index.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/schema/index.ts"],"mappings":";;cAqCa;cAUA;cAEA,YAAU,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAyEV,kBAAgB,EAAA,gBAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA;;cAQhB,0BAAwB,EAAA,aAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAaxB,wBAAsB,EAAA,aAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAatB,qBAAmB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAwCnB,wBAAsB,EAAA;;;;;;;;;;;;;;;;;;;;;cAMtB,qBAAmB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAanB,sBAAoB,EAAA;;;;;;;;;cAepB,kBAAgB,EAAA;;;;;;;;;;;;KAiDjB,sBAAsB,EAAE,cAAc;KACtC,oBAAoB,EAAE,cAAc;KACpC,gBAAgB,EAAE,cAAc;KAChC,mBAAmB,EAAE,cAAc;KACnC,sBAAsB,EAAE,cAAc;KACtC,mBAAmB,EAAE,cAAc"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/schema/index.ts"],"mappings":";;cAoCa;cAUA;cAEA,YAAU,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqErB,EAAA,KAAA;cAEW,kBAAgB,EAAA,gBAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA;cAOhB,wBAAsB,EAAA,aAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAWE,EAAA,KAAA;cAExB,qBAAmB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAW9B,EAAA,KAAA;;;;;;;;;;;cA6BW,wBAAsB,EAAA;;;;;;;;;;;;;;;;;;;;GAIjC,EAAA,KAAA;cAEW,qBAAmB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAW9B,EAAA,KAAA;cAEW,sBAAoB,EAAA;;;;GAI/B,EAAA,KAAA;;;;;cAWW,kBAAgB,EAAA;;;;;;;;;;;GA+C3B,EAAA,KAAA;KAEU,sBAAsB,EAAE,cAAc;KACtC,oBAAoB,EAAE,cAAc;KACpC,gBAAgB,EAAE,cAAc;KAChC,mBAAmB,EAAE,cAAc;KACnC,sBAAsB,EAAE,cAAc;KACtC,mBAAmB,EAAE,cAAc"}
@@ -9,15 +9,6 @@ declare const tagsSchema: z.ZodMiniObject<{
9
9
  browser: z.ZodMiniOptional<z.ZodMiniString<string>>;
10
10
  browser_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
11
11
  browser_version: z.ZodMiniOptional<z.ZodMiniString<string>>;
12
- platform: z.ZodMiniEnum<{
13
- android: "android";
14
- ios: "ios";
15
- linux: "linux";
16
- macos: "macos";
17
- unknown: "unknown";
18
- web: "web";
19
- windows: "windows";
20
- }>;
21
12
  device: z.ZodMiniOptional<z.ZodMiniString<string>>;
22
13
  device_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
23
14
  device_type: z.ZodMiniOptional<z.ZodMiniString<string>>;
@@ -29,10 +20,6 @@ declare const tagsSchema: z.ZodMiniObject<{
29
20
  release: z.ZodMiniOptional<z.ZodMiniString<string>>;
30
21
  language: z.ZodMiniOptional<z.ZodMiniString<string>>;
31
22
  time_zone: z.ZodMiniOptional<z.ZodMiniString<string>>;
32
- environment: z.ZodMiniEnum<{
33
- development: "development";
34
- production: "production";
35
- }>;
36
23
  source_url: z.ZodMiniOptional<z.ZodMiniString<string>>;
37
24
  source: z.ZodMiniOptional<z.ZodMiniEnum<{
38
25
  app: "app";
@@ -79,103 +66,6 @@ declare const tagsSchema: z.ZodMiniObject<{
79
66
  utm_marketing_tactic: z.ZodMiniOptional<z.ZodMiniString<string>>;
80
67
  }, z.core.$strip>;
81
68
  declare const propertiesSchema: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>, z.ZodMiniBoolean<boolean>, z.ZodMiniNull, z.ZodMiniArray<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>, z.ZodMiniBoolean<boolean>, z.ZodMiniNull]>>>]>>>;
82
- /** @deprecated */
83
- declare const createTrackEventSchemaV1: z.ZodMiniArray<z.ZodMiniObject<{
84
- name: z.ZodMiniString<string>;
85
- visitor_id: z.ZodMiniBigInt<unknown>;
86
- session_id: z.ZodMiniUUID;
87
- platform: z.ZodMiniEnum<{
88
- android: "android";
89
- ios: "ios";
90
- linux: "linux";
91
- macos: "macos";
92
- unknown: "unknown";
93
- web: "web";
94
- windows: "windows";
95
- }>;
96
- environment: z.ZodMiniEnum<{
97
- development: "development";
98
- production: "production";
99
- }>;
100
- timestamp: iso.ZodMiniISODateTime;
101
- tags: z.ZodMiniObject<{
102
- os: z.ZodMiniOptional<z.ZodMiniString<string>>;
103
- os_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
104
- os_version: z.ZodMiniOptional<z.ZodMiniString<string>>;
105
- browser: z.ZodMiniOptional<z.ZodMiniString<string>>;
106
- browser_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
107
- browser_version: z.ZodMiniOptional<z.ZodMiniString<string>>;
108
- platform: z.ZodMiniEnum<{
109
- android: "android";
110
- ios: "ios";
111
- linux: "linux";
112
- macos: "macos";
113
- unknown: "unknown";
114
- web: "web";
115
- windows: "windows";
116
- }>;
117
- device: z.ZodMiniOptional<z.ZodMiniString<string>>;
118
- device_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
119
- device_type: z.ZodMiniOptional<z.ZodMiniString<string>>;
120
- device_vendor: z.ZodMiniOptional<z.ZodMiniString<string>>;
121
- device_pixel_ratio: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
122
- screen_width: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
123
- screen_height: z.ZodMiniOptional<z.ZodMiniNumber<number>>;
124
- screen_resolution: z.ZodMiniOptional<z.ZodMiniPipe<z.ZodMiniString<string>, z.ZodMiniTransform<`${number}x${number}`, string>>>;
125
- release: z.ZodMiniOptional<z.ZodMiniString<string>>;
126
- language: z.ZodMiniOptional<z.ZodMiniString<string>>;
127
- time_zone: z.ZodMiniOptional<z.ZodMiniString<string>>;
128
- environment: z.ZodMiniEnum<{
129
- development: "development";
130
- production: "production";
131
- }>;
132
- source_url: z.ZodMiniOptional<z.ZodMiniString<string>>;
133
- source: z.ZodMiniOptional<z.ZodMiniEnum<{
134
- app: "app";
135
- offline: "offline";
136
- web: "web";
137
- }>>;
138
- page_referrer: z.ZodMiniOptional<z.ZodMiniString<string>>;
139
- advertising_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
140
- install_referrer: z.ZodMiniOptional<z.ZodMiniString<string>>;
141
- fbc: z.ZodMiniOptional<z.ZodMiniString<string>>;
142
- fbp: z.ZodMiniOptional<z.ZodMiniString<string>>;
143
- fbclid: z.ZodMiniOptional<z.ZodMiniString<string>>;
144
- ad_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
145
- ad_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
146
- adset_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
147
- adset_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
148
- campaign_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
149
- campaign_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
150
- placement: z.ZodMiniOptional<z.ZodMiniString<string>>;
151
- site_source_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
152
- gclid: z.ZodMiniOptional<z.ZodMiniString<string>>;
153
- gclsrc: z.ZodMiniOptional<z.ZodMiniString<string>>;
154
- gad_source: z.ZodMiniOptional<z.ZodMiniString<string>>;
155
- gad_campaignid: z.ZodMiniOptional<z.ZodMiniString<string>>;
156
- rdt_cid: z.ZodMiniOptional<z.ZodMiniString<string>>;
157
- rdt_uuid: z.ZodMiniOptional<z.ZodMiniString<string>>;
158
- dclid: z.ZodMiniOptional<z.ZodMiniString<string>>;
159
- ko_click_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
160
- li_fat_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
161
- msclkid: z.ZodMiniOptional<z.ZodMiniString<string>>;
162
- sccid: z.ZodMiniOptional<z.ZodMiniString<string>>;
163
- ttclid: z.ZodMiniOptional<z.ZodMiniString<string>>;
164
- twclid: z.ZodMiniOptional<z.ZodMiniString<string>>;
165
- wbraid: z.ZodMiniOptional<z.ZodMiniString<string>>;
166
- yclid: z.ZodMiniOptional<z.ZodMiniString<string>>;
167
- utm_source: z.ZodMiniOptional<z.ZodMiniString<string>>;
168
- utm_medium: z.ZodMiniOptional<z.ZodMiniString<string>>;
169
- utm_campaign: z.ZodMiniOptional<z.ZodMiniString<string>>;
170
- utm_term: z.ZodMiniOptional<z.ZodMiniString<string>>;
171
- utm_content: z.ZodMiniOptional<z.ZodMiniString<string>>;
172
- utm_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
173
- utm_source_platform: z.ZodMiniOptional<z.ZodMiniString<string>>;
174
- utm_creative_format: z.ZodMiniOptional<z.ZodMiniString<string>>;
175
- utm_marketing_tactic: z.ZodMiniOptional<z.ZodMiniString<string>>;
176
- }, z.core.$strip>;
177
- properties: z.ZodMiniOptional<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>, z.ZodMiniBoolean<boolean>, z.ZodMiniNull, z.ZodMiniArray<z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnion<readonly [z.ZodMiniString<string>, z.ZodMiniNumber<number>, z.ZodMiniBoolean<boolean>, z.ZodMiniNull]>>>]>>>;
178
- }, z.core.$strip>>;
179
69
  declare const createTrackEventSchema: z.ZodMiniArray<z.ZodMiniObject<{
180
70
  name: z.ZodMiniString<string>;
181
71
  visitor_id: z.ZodMiniUUID;
@@ -201,15 +91,6 @@ declare const createTrackEventSchema: z.ZodMiniArray<z.ZodMiniObject<{
201
91
  browser: z.ZodMiniOptional<z.ZodMiniString<string>>;
202
92
  browser_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
203
93
  browser_version: z.ZodMiniOptional<z.ZodMiniString<string>>;
204
- platform: z.ZodMiniEnum<{
205
- android: "android";
206
- ios: "ios";
207
- linux: "linux";
208
- macos: "macos";
209
- unknown: "unknown";
210
- web: "web";
211
- windows: "windows";
212
- }>;
213
94
  device: z.ZodMiniOptional<z.ZodMiniString<string>>;
214
95
  device_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
215
96
  device_type: z.ZodMiniOptional<z.ZodMiniString<string>>;
@@ -221,10 +102,6 @@ declare const createTrackEventSchema: z.ZodMiniArray<z.ZodMiniObject<{
221
102
  release: z.ZodMiniOptional<z.ZodMiniString<string>>;
222
103
  language: z.ZodMiniOptional<z.ZodMiniString<string>>;
223
104
  time_zone: z.ZodMiniOptional<z.ZodMiniString<string>>;
224
- environment: z.ZodMiniEnum<{
225
- development: "development";
226
- production: "production";
227
- }>;
228
105
  source_url: z.ZodMiniOptional<z.ZodMiniString<string>>;
229
106
  source: z.ZodMiniOptional<z.ZodMiniEnum<{
230
107
  app: "app";
@@ -294,15 +171,6 @@ declare const createVisitorSchema: z.ZodMiniObject<{
294
171
  browser: z.ZodMiniOptional<z.ZodMiniString<string>>;
295
172
  browser_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
296
173
  browser_version: z.ZodMiniOptional<z.ZodMiniString<string>>;
297
- platform: z.ZodMiniEnum<{
298
- android: "android";
299
- ios: "ios";
300
- linux: "linux";
301
- macos: "macos";
302
- unknown: "unknown";
303
- web: "web";
304
- windows: "windows";
305
- }>;
306
174
  device: z.ZodMiniOptional<z.ZodMiniString<string>>;
307
175
  device_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
308
176
  device_type: z.ZodMiniOptional<z.ZodMiniString<string>>;
@@ -314,10 +182,6 @@ declare const createVisitorSchema: z.ZodMiniObject<{
314
182
  release: z.ZodMiniOptional<z.ZodMiniString<string>>;
315
183
  language: z.ZodMiniOptional<z.ZodMiniString<string>>;
316
184
  time_zone: z.ZodMiniOptional<z.ZodMiniString<string>>;
317
- environment: z.ZodMiniEnum<{
318
- development: "development";
319
- production: "production";
320
- }>;
321
185
  source_url: z.ZodMiniOptional<z.ZodMiniString<string>>;
322
186
  source: z.ZodMiniOptional<z.ZodMiniEnum<{
323
187
  app: "app";
@@ -427,15 +291,6 @@ declare const updateVisitorSchema: z.ZodMiniObject<{
427
291
  browser: z.ZodMiniOptional<z.ZodMiniString<string>>;
428
292
  browser_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
429
293
  browser_version: z.ZodMiniOptional<z.ZodMiniString<string>>;
430
- platform: z.ZodMiniEnum<{
431
- android: "android";
432
- ios: "ios";
433
- linux: "linux";
434
- macos: "macos";
435
- unknown: "unknown";
436
- web: "web";
437
- windows: "windows";
438
- }>;
439
294
  device: z.ZodMiniOptional<z.ZodMiniString<string>>;
440
295
  device_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
441
296
  device_type: z.ZodMiniOptional<z.ZodMiniString<string>>;
@@ -447,10 +302,6 @@ declare const updateVisitorSchema: z.ZodMiniObject<{
447
302
  release: z.ZodMiniOptional<z.ZodMiniString<string>>;
448
303
  language: z.ZodMiniOptional<z.ZodMiniString<string>>;
449
304
  time_zone: z.ZodMiniOptional<z.ZodMiniString<string>>;
450
- environment: z.ZodMiniEnum<{
451
- development: "development";
452
- production: "production";
453
- }>;
454
305
  source_url: z.ZodMiniOptional<z.ZodMiniString<string>>;
455
306
  source: z.ZodMiniOptional<z.ZodMiniEnum<{
456
307
  app: "app";
@@ -526,5 +377,5 @@ type CreateVisitorDTO = z.output<typeof createVisitorSchema>;
526
377
  type UserProvidedDataDTO = z.output<typeof userProvidedDataSchema>;
527
378
  type UpdateVisitorDTO = z.output<typeof updateVisitorSchema>;
528
379
  //#endregion
529
- export { ALL_ENVIRONMENTS, ALL_PLATFORMS, CreateFeedbackDTO, CreateLinkDTO, CreateTrackEventDTO, CreateVisitorDTO, UpdateVisitorDTO, UserProvidedDataDTO, createFeedbackSchema, createLinkSchema, createTrackEventSchema, createTrackEventSchemaV1, createVisitorSchema, propertiesSchema, tagsSchema, updateVisitorSchema, userProvidedDataSchema };
380
+ export { ALL_ENVIRONMENTS, ALL_PLATFORMS, CreateFeedbackDTO, CreateLinkDTO, CreateTrackEventDTO, CreateVisitorDTO, UpdateVisitorDTO, UserProvidedDataDTO, createFeedbackSchema, createLinkSchema, createTrackEventSchema, createVisitorSchema, propertiesSchema, tagsSchema, updateVisitorSchema, userProvidedDataSchema };
530
381
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/schema/index.ts"],"mappings":";;cAqCa;cAUA;cAEA,YAAU,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAyEV,kBAAgB,EAAA,gBAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA;;cAQhB,0BAAwB,EAAA,aAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAaxB,wBAAsB,EAAA,aAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAatB,qBAAmB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAwCnB,wBAAsB,EAAA;;;;;;;;;;;;;;;;;;;;;cAMtB,qBAAmB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAanB,sBAAoB,EAAA;;;;;;;;;cAepB,kBAAgB,EAAA;;;;;;;;;;;;KAiDjB,sBAAsB,EAAE,cAAc;KACtC,oBAAoB,EAAE,cAAc;KACpC,gBAAgB,EAAE,cAAc;KAChC,mBAAmB,EAAE,cAAc;KACnC,sBAAsB,EAAE,cAAc;KACtC,mBAAmB,EAAE,cAAc"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../../src/schema/index.ts"],"mappings":";;cAoCa;cAUA;cAEA,YAAU,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqErB,EAAA,KAAA;cAEW,kBAAgB,EAAA,gBAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,cAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA;cAOhB,wBAAsB,EAAA,aAAA,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAWE,EAAA,KAAA;cAExB,qBAAmB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAW9B,EAAA,KAAA;;;;;;;;;;;cA6BW,wBAAsB,EAAA;;;;;;;;;;;;;;;;;;;;GAIjC,EAAA,KAAA;cAEW,qBAAmB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAW9B,EAAA,KAAA;cAEW,sBAAoB,EAAA;;;;GAI/B,EAAA,KAAA;;;;;cAWW,kBAAgB,EAAA;;;;;;;;;;;GA+C3B,EAAA,KAAA;KAEU,sBAAsB,EAAE,cAAc;KACtC,oBAAoB,EAAE,cAAc;KACpC,gBAAgB,EAAE,cAAc;KAChC,mBAAmB,EAAE,cAAc;KACnC,sBAAsB,EAAE,cAAc;KACtC,mBAAmB,EAAE,cAAc"}
@@ -1,4 +1,4 @@
1
- import { array, boolean, coerce, e164, email, enum as enum$1, iso, maxLength, minLength, null as null$1, number, object, optional, pipe, record, refine, regex, string, toLowerCase, toUpperCase, transform, trim, union, url, uuid } from "zod/mini";
1
+ import { array, boolean, e164, email, enum as enum$1, iso, maxLength, minLength, null as null$1, number, object, optional, pipe, record, refine, regex, string, toLowerCase, toUpperCase, transform, trim, union, url, uuid } from "zod/mini";
2
2
  //#region src/schema/index.ts
3
3
  const items = array(record(string().check(trim(), minLength(1), maxLength(128)), union([
4
4
  string().check(maxLength(512)),
@@ -23,7 +23,6 @@ const tagsSchema = object({
23
23
  browser: optional(string()),
24
24
  browser_name: optional(string()),
25
25
  browser_version: optional(string()),
26
- platform: enum$1(ALL_PLATFORMS),
27
26
  device: optional(string()),
28
27
  device_id: optional(string().check(trim(), minLength(1), maxLength(36))),
29
28
  device_type: optional(string()),
@@ -35,7 +34,6 @@ const tagsSchema = object({
35
34
  release: optional(string()),
36
35
  language: optional(string()),
37
36
  time_zone: optional(string()),
38
- environment: enum$1(ALL_ENVIRONMENTS),
39
37
  source_url: optional(string()),
40
38
  source: optional(enum$1([
41
39
  "web",
@@ -88,17 +86,6 @@ const propertiesSchema = optional(record(string().check(trim(), minLength(1), ma
88
86
  null$1(),
89
87
  items
90
88
  ])).check(refine((data) => Object.keys(data).length <= 64)));
91
- /** @deprecated */
92
- const createTrackEventSchemaV1 = array(object({
93
- name: string().check(trim(), minLength(1), maxLength(64)),
94
- visitor_id: coerce.bigint(),
95
- session_id: uuid(),
96
- platform: enum$1(ALL_PLATFORMS),
97
- environment: enum$1(ALL_ENVIRONMENTS),
98
- timestamp: iso.datetime(),
99
- tags: tagsSchema,
100
- properties: propertiesSchema
101
- })).check(minLength(1), maxLength(100));
102
89
  const createTrackEventSchema = array(object({
103
90
  name: string().check(trim(), minLength(1), maxLength(64)),
104
91
  visitor_id: uuid(),
@@ -212,6 +199,6 @@ const createLinkSchema = object({
212
199
  utm_marketing_tactic: optional(noEmptyString)
213
200
  });
214
201
  //#endregion
215
- export { ALL_ENVIRONMENTS, ALL_PLATFORMS, createFeedbackSchema, createLinkSchema, createTrackEventSchema, createTrackEventSchemaV1, createVisitorSchema, propertiesSchema, tagsSchema, updateVisitorSchema, userProvidedDataSchema };
202
+ export { ALL_ENVIRONMENTS, ALL_PLATFORMS, createFeedbackSchema, createLinkSchema, createTrackEventSchema, createVisitorSchema, propertiesSchema, tagsSchema, updateVisitorSchema, userProvidedDataSchema };
216
203
 
217
204
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["_null","_enum"],"sources":["../../src/schema/index.ts"],"sourcesContent":["import {\n enum as _enum,\n null as _null,\n array,\n boolean,\n coerce,\n e164,\n email,\n iso,\n maxLength,\n minLength,\n number,\n object,\n optional,\n pipe,\n record,\n refine,\n regex,\n string,\n toLowerCase,\n toUpperCase,\n transform,\n trim,\n union,\n url,\n uuid,\n type z,\n} from 'zod/mini';\nimport type { Environment, Platform } from '../track/types';\n\nconst items = array(\n record(\n string().check(trim(), minLength(1), maxLength(128)),\n union([string().check(maxLength(512)), number(), boolean(), _null()])\n )\n);\n\nexport const ALL_PLATFORMS = [\n 'ios',\n 'android',\n 'web',\n 'macos',\n 'windows',\n 'linux',\n 'unknown',\n] as const satisfies Platform[];\n\nexport const ALL_ENVIRONMENTS = ['development', 'production'] as const satisfies Environment[];\n\nexport const tagsSchema = object({\n os: optional(string()),\n os_name: optional(string()),\n os_version: optional(string()),\n browser: optional(string()),\n browser_name: optional(string()),\n browser_version: optional(string()),\n platform: _enum(ALL_PLATFORMS),\n device: optional(string()),\n device_id: optional(string().check(trim(), minLength(1), maxLength(36))),\n device_type: optional(string()),\n device_vendor: optional(string()),\n device_pixel_ratio: optional(number()),\n screen_width: optional(number()),\n screen_height: optional(number()),\n screen_resolution: optional(\n pipe(\n string().check(regex(/^\\d+x\\d+$/)),\n transform((v) => v as `${number}x${number}`)\n )\n ),\n release: optional(string()),\n language: optional(string()),\n time_zone: optional(string()),\n environment: _enum(ALL_ENVIRONMENTS),\n source_url: optional(string()),\n source: optional(_enum(['web', 'app', 'offline'])),\n page_referrer: optional(string()),\n // app info\n advertising_id: optional(string()),\n install_referrer: optional(string()),\n // Meta Ads\n fbc: optional(string()),\n fbp: optional(string()),\n fbclid: optional(string()),\n ad_id: optional(string()),\n ad_name: optional(string()),\n adset_id: optional(string()),\n adset_name: optional(string()),\n campaign_id: optional(string()),\n campaign_name: optional(string()),\n placement: optional(string()),\n site_source_name: optional(string()),\n // Google Ads\n gclid: optional(string()),\n gclsrc: optional(string()),\n gad_source: optional(string()),\n gad_campaignid: optional(string()),\n // Reddit ads\n rdt_cid: optional(string()),\n rdt_uuid: optional(string()),\n // click ids\n dclid: optional(string()),\n ko_click_id: optional(string()),\n li_fat_id: optional(string()),\n msclkid: optional(string()),\n sccid: optional(string()),\n ttclid: optional(string()),\n twclid: optional(string()),\n wbraid: optional(string()),\n yclid: optional(string()),\n // utm params\n utm_source: optional(string()),\n utm_medium: optional(string()),\n utm_campaign: optional(string()),\n utm_term: optional(string()),\n utm_content: optional(string()),\n utm_id: optional(string()),\n utm_source_platform: optional(string()),\n utm_creative_format: optional(string()),\n utm_marketing_tactic: optional(string()),\n});\n\nexport const propertiesSchema = optional(\n record(\n string().check(trim(), minLength(1), maxLength(128)),\n union([string().check(maxLength(512)), number(), boolean(), _null(), items])\n ).check(refine((data) => Object.keys(data).length <= 64))\n);\n\n/** @deprecated */\nexport const createTrackEventSchemaV1 = array(\n object({\n name: string().check(trim(), minLength(1), maxLength(64)),\n visitor_id: coerce.bigint(),\n session_id: uuid(),\n platform: _enum(ALL_PLATFORMS),\n environment: _enum(ALL_ENVIRONMENTS),\n timestamp: iso.datetime(),\n tags: tagsSchema,\n properties: propertiesSchema,\n })\n).check(minLength(1), maxLength(100));\n\nexport const createTrackEventSchema = array(\n object({\n name: string().check(trim(), minLength(1), maxLength(64)),\n visitor_id: uuid(),\n session_id: uuid(),\n platform: _enum(ALL_PLATFORMS),\n environment: _enum(ALL_ENVIRONMENTS),\n timestamp: iso.datetime(),\n tags: tagsSchema,\n properties: propertiesSchema,\n })\n).check(minLength(1), maxLength(100));\n\nexport const createVisitorSchema = object({\n device_id: string().check(trim(), minLength(1), maxLength(36)),\n platform: _enum(ALL_PLATFORMS),\n environment: _enum(ALL_ENVIRONMENTS),\n tags: tagsSchema,\n properties: optional(\n record(\n string().check(trim(), minLength(1), maxLength(128)),\n union([string().check(maxLength(512)), number(), boolean(), _null()])\n ).check(refine((data) => Object.keys(data).length <= 64))\n ),\n});\n\nconst emailValue = pipe(string().check(trim(), toLowerCase(), maxLength(320)), email());\n\n/** E.164: a plus sign (+) prefix, country code, then digits only, no dashes/parens/spaces. */\nconst phoneValue = pipe(string().check(trim()), e164());\n\nconst addressValue = object({\n first_name: optional(string().check(trim(), maxLength(128))),\n last_name: optional(string().check(trim(), maxLength(128))),\n street: optional(string().check(trim(), maxLength(256))),\n city: optional(string().check(trim(), maxLength(128))),\n /** User province, state, or region. Example: `Hampshire` */\n region: optional(string().check(trim(), maxLength(128))),\n postal_code: optional(string().check(trim(), maxLength(32))),\n /** 2-letter country code, per the ISO 3166-1 alpha-2 standard. Example: `UK` */\n country: optional(string().check(trim(), toUpperCase(), regex(/^[A-Z]{2}$/))),\n});\n\n/**\n * User-provided data (UPD) used for enhanced conversions, Customer Match, and demographics.\n * Values are sent unhashed; Google normalizes and hashes them before they reach its servers.\n *\n * Multiple values may be sent to increase the match rate: up to 3 emails, 3 phone numbers, and\n * 2 addresses.\n *\n * @see https://support.google.com/analytics/answer/14078702\n * @see https://support.google.com/google-ads/answer/13258081\n */\nexport const userProvidedDataSchema = object({\n email: optional(union([emailValue, array(emailValue).check(minLength(1), maxLength(3))])),\n phone_number: optional(union([phoneValue, array(phoneValue).check(minLength(1), maxLength(3))])),\n address: optional(union([addressValue, array(addressValue).check(minLength(1), maxLength(2))])),\n});\n\nexport const updateVisitorSchema = object({\n user_id: optional(uuid()),\n user_data: optional(userProvidedDataSchema),\n distinct_id: optional(string().check(trim(), minLength(1), maxLength(36))),\n tags: tagsSchema,\n properties: optional(\n record(\n string().check(trim(), minLength(1), maxLength(128)),\n union([string().check(maxLength(512)), number(), boolean(), _null()])\n ).check(refine((data) => Object.keys(data).length <= 64))\n ),\n});\n\nexport const createFeedbackSchema = object({\n name: string().check(minLength(1), maxLength(256)),\n email: email().check(maxLength(320)),\n message: string().check(minLength(1), maxLength(65536)),\n});\n\nconst noEmptyString = pipe(\n string().check(maxLength(256)),\n transform((v) => (v ? v : undefined))\n);\n\n/**\n * The schema for creating a link.\n * @see https://support.google.com/analytics/answer/10917952\n * */\nexport const createLinkSchema = object({\n /** The URL that the user is redirected to. */\n url: url().check(minLength(1), maxLength(1024)), // required\n\n /**\n * Campaign ID. Used to identify a specific campaign or promotion. This is a required key for GA4\n * data import. Use the same IDs that you use when uploading campaign cost data.\n */\n utm_id: optional(noEmptyString),\n\n /** Referrer, for example: google, newsletter4, billboard */\n utm_source: string().check(minLength(1), maxLength(256)), // required\n\n /** Marketing medium, for example: cpc, banner, email */\n utm_medium: string().check(minLength(1), maxLength(256)), // required\n\n /** Product, slogan, promo code, for example, spring_sale */\n utm_campaign: string().check(minLength(1), maxLength(256)), // required\n\n /** Paid keyword */\n utm_term: optional(noEmptyString),\n\n /**\n * Use to differentiate creatives. For example, if you have two call-to-action links within the\n * same email message, you can use utm_content and set different values for each so you can tell\n * which version is more effective.\n */\n utm_content: optional(noEmptyString),\n\n /**\n * The platform responsible for directing traffic to a given Analytics property (such as a buying\n * platform that sets budgets and targeting criteria or a platform that manages organic traffic\n * data). For example, Search Ads 360 or Display & Video 360.\n */\n utm_source_platform: optional(noEmptyString),\n\n /**\n * Type of creative, for example, display, native, video, search, utm_creative_format is not\n * currently reported in Google Analytics 4 properties.\n */\n utm_creative_format: optional(noEmptyString),\n\n /**\n * Targeting criteria applied to a campaign, for example, remarketing, prospecting,\n * utm_marketing_tactic is not currently reported in Google Analytics 4 properties.\n * */\n utm_marketing_tactic: optional(noEmptyString),\n});\n\nexport type CreateTrackEventDTO = z.output<typeof createTrackEventSchema>;\nexport type CreateFeedbackDTO = z.output<typeof createFeedbackSchema>;\nexport type CreateLinkDTO = z.output<typeof createLinkSchema>;\nexport type CreateVisitorDTO = z.output<typeof createVisitorSchema>;\nexport type UserProvidedDataDTO = z.output<typeof userProvidedDataSchema>;\nexport type UpdateVisitorDTO = z.output<typeof updateVisitorSchema>;\n"],"mappings":";;AA8BA,MAAM,QAAQ,MACZ,OACE,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC,GACnD,MAAM;CAAC,OAAO,CAAC,CAAC,MAAM,UAAU,GAAG,CAAC;CAAG,OAAO;CAAG,QAAQ;CAAGA,OAAM;AAAC,CAAC,CACtE,CACF;AAEA,MAAa,gBAAgB;CAC3B;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,MAAa,mBAAmB,CAAC,eAAe,YAAY;AAE5D,MAAa,aAAa,OAAO;CAC/B,IAAI,SAAS,OAAO,CAAC;CACrB,SAAS,SAAS,OAAO,CAAC;CAC1B,YAAY,SAAS,OAAO,CAAC;CAC7B,SAAS,SAAS,OAAO,CAAC;CAC1B,cAAc,SAAS,OAAO,CAAC;CAC/B,iBAAiB,SAAS,OAAO,CAAC;CAClC,UAAUC,OAAM,aAAa;CAC7B,QAAQ,SAAS,OAAO,CAAC;CACzB,WAAW,SAAS,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,UAAU,EAAE,CAAC,CAAC;CACvE,aAAa,SAAS,OAAO,CAAC;CAC9B,eAAe,SAAS,OAAO,CAAC;CAChC,oBAAoB,SAAS,OAAO,CAAC;CACrC,cAAc,SAAS,OAAO,CAAC;CAC/B,eAAe,SAAS,OAAO,CAAC;CAChC,mBAAmB,SACjB,KACE,OAAO,CAAC,CAAC,MAAM,MAAM,WAAW,CAAC,GACjC,WAAW,MAAM,CAA0B,CAC7C,CACF;CACA,SAAS,SAAS,OAAO,CAAC;CAC1B,UAAU,SAAS,OAAO,CAAC;CAC3B,WAAW,SAAS,OAAO,CAAC;CAC5B,aAAaA,OAAM,gBAAgB;CACnC,YAAY,SAAS,OAAO,CAAC;CAC7B,QAAQ,SAASA,OAAM;EAAC;EAAO;EAAO;CAAS,CAAC,CAAC;CACjD,eAAe,SAAS,OAAO,CAAC;CAEhC,gBAAgB,SAAS,OAAO,CAAC;CACjC,kBAAkB,SAAS,OAAO,CAAC;CAEnC,KAAK,SAAS,OAAO,CAAC;CACtB,KAAK,SAAS,OAAO,CAAC;CACtB,QAAQ,SAAS,OAAO,CAAC;CACzB,OAAO,SAAS,OAAO,CAAC;CACxB,SAAS,SAAS,OAAO,CAAC;CAC1B,UAAU,SAAS,OAAO,CAAC;CAC3B,YAAY,SAAS,OAAO,CAAC;CAC7B,aAAa,SAAS,OAAO,CAAC;CAC9B,eAAe,SAAS,OAAO,CAAC;CAChC,WAAW,SAAS,OAAO,CAAC;CAC5B,kBAAkB,SAAS,OAAO,CAAC;CAEnC,OAAO,SAAS,OAAO,CAAC;CACxB,QAAQ,SAAS,OAAO,CAAC;CACzB,YAAY,SAAS,OAAO,CAAC;CAC7B,gBAAgB,SAAS,OAAO,CAAC;CAEjC,SAAS,SAAS,OAAO,CAAC;CAC1B,UAAU,SAAS,OAAO,CAAC;CAE3B,OAAO,SAAS,OAAO,CAAC;CACxB,aAAa,SAAS,OAAO,CAAC;CAC9B,WAAW,SAAS,OAAO,CAAC;CAC5B,SAAS,SAAS,OAAO,CAAC;CAC1B,OAAO,SAAS,OAAO,CAAC;CACxB,QAAQ,SAAS,OAAO,CAAC;CACzB,QAAQ,SAAS,OAAO,CAAC;CACzB,QAAQ,SAAS,OAAO,CAAC;CACzB,OAAO,SAAS,OAAO,CAAC;CAExB,YAAY,SAAS,OAAO,CAAC;CAC7B,YAAY,SAAS,OAAO,CAAC;CAC7B,cAAc,SAAS,OAAO,CAAC;CAC/B,UAAU,SAAS,OAAO,CAAC;CAC3B,aAAa,SAAS,OAAO,CAAC;CAC9B,QAAQ,SAAS,OAAO,CAAC;CACzB,qBAAqB,SAAS,OAAO,CAAC;CACtC,qBAAqB,SAAS,OAAO,CAAC;CACtC,sBAAsB,SAAS,OAAO,CAAC;AACzC,CAAC;AAED,MAAa,mBAAmB,SAC9B,OACE,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC,GACnD,MAAM;CAAC,OAAO,CAAC,CAAC,MAAM,UAAU,GAAG,CAAC;CAAG,OAAO;CAAG,QAAQ;CAAGD,OAAM;CAAG;AAAK,CAAC,CAC7E,CAAC,CAAC,MAAM,QAAQ,SAAS,OAAO,KAAK,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,CAC1D;;AAGA,MAAa,2BAA2B,MACtC,OAAO;CACL,MAAM,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,UAAU,EAAE,CAAC;CACxD,YAAY,OAAO,OAAO;CAC1B,YAAY,KAAK;CACjB,UAAUC,OAAM,aAAa;CAC7B,aAAaA,OAAM,gBAAgB;CACnC,WAAW,IAAI,SAAS;CACxB,MAAM;CACN,YAAY;AACd,CAAC,CACH,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC;AAEpC,MAAa,yBAAyB,MACpC,OAAO;CACL,MAAM,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,UAAU,EAAE,CAAC;CACxD,YAAY,KAAK;CACjB,YAAY,KAAK;CACjB,UAAUA,OAAM,aAAa;CAC7B,aAAaA,OAAM,gBAAgB;CACnC,WAAW,IAAI,SAAS;CACxB,MAAM;CACN,YAAY;AACd,CAAC,CACH,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC;AAEpC,MAAa,sBAAsB,OAAO;CACxC,WAAW,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,UAAU,EAAE,CAAC;CAC7D,UAAUA,OAAM,aAAa;CAC7B,aAAaA,OAAM,gBAAgB;CACnC,MAAM;CACN,YAAY,SACV,OACE,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC,GACnD,MAAM;EAAC,OAAO,CAAC,CAAC,MAAM,UAAU,GAAG,CAAC;EAAG,OAAO;EAAG,QAAQ;EAAGD,OAAM;CAAC,CAAC,CACtE,CAAC,CAAC,MAAM,QAAQ,SAAS,OAAO,KAAK,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,CAC1D;AACF,CAAC;AAED,MAAM,aAAa,KAAK,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG,YAAY,GAAG,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC;;AAGtF,MAAM,aAAa,KAAK,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC;AAEtD,MAAM,eAAe,OAAO;CAC1B,YAAY,SAAS,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG,UAAU,GAAG,CAAC,CAAC;CAC3D,WAAW,SAAS,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG,UAAU,GAAG,CAAC,CAAC;CAC1D,QAAQ,SAAS,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG,UAAU,GAAG,CAAC,CAAC;CACvD,MAAM,SAAS,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG,UAAU,GAAG,CAAC,CAAC;;CAErD,QAAQ,SAAS,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG,UAAU,GAAG,CAAC,CAAC;CACvD,aAAa,SAAS,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC,CAAC;;CAE3D,SAAS,SAAS,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG,YAAY,GAAG,MAAM,YAAY,CAAC,CAAC;AAC9E,CAAC;;;;;;;;;;;AAYD,MAAa,yBAAyB,OAAO;CAC3C,OAAO,SAAS,MAAM,CAAC,YAAY,MAAM,UAAU,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CACxF,cAAc,SAAS,MAAM,CAAC,YAAY,MAAM,UAAU,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CAC/F,SAAS,SAAS,MAAM,CAAC,cAAc,MAAM,YAAY,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAChG,CAAC;AAED,MAAa,sBAAsB,OAAO;CACxC,SAAS,SAAS,KAAK,CAAC;CACxB,WAAW,SAAS,sBAAsB;CAC1C,aAAa,SAAS,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,UAAU,EAAE,CAAC,CAAC;CACzE,MAAM;CACN,YAAY,SACV,OACE,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC,GACnD,MAAM;EAAC,OAAO,CAAC,CAAC,MAAM,UAAU,GAAG,CAAC;EAAG,OAAO;EAAG,QAAQ;EAAGA,OAAM;CAAC,CAAC,CACtE,CAAC,CAAC,MAAM,QAAQ,SAAS,OAAO,KAAK,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,CAC1D;AACF,CAAC;AAED,MAAa,uBAAuB,OAAO;CACzC,MAAM,OAAO,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC;CACjD,OAAO,MAAM,CAAC,CAAC,MAAM,UAAU,GAAG,CAAC;CACnC,SAAS,OAAO,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,UAAU,KAAK,CAAC;AACxD,CAAC;AAED,MAAM,gBAAgB,KACpB,OAAO,CAAC,CAAC,MAAM,UAAU,GAAG,CAAC,GAC7B,WAAW,MAAO,IAAI,IAAI,KAAA,CAAU,CACtC;;;;;AAMA,MAAa,mBAAmB,OAAO;;CAErC,KAAK,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,UAAU,IAAI,CAAC;;;;;CAM9C,QAAQ,SAAS,aAAa;;CAG9B,YAAY,OAAO,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC;;CAGvD,YAAY,OAAO,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC;;CAGvD,cAAc,OAAO,CAAC,CAAC,MAAM,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC;;CAGzD,UAAU,SAAS,aAAa;;;;;;CAOhC,aAAa,SAAS,aAAa;;;;;;CAOnC,qBAAqB,SAAS,aAAa;;;;;CAM3C,qBAAqB,SAAS,aAAa;;;;;CAM3C,sBAAsB,SAAS,aAAa;AAC9C,CAAC"}
1
+ {"version":3,"file":"index.mjs","names":["_null","_enum"],"sources":["../../src/schema/index.ts"],"sourcesContent":["import {\n enum as _enum,\n null as _null,\n array,\n boolean,\n e164,\n email,\n iso,\n maxLength,\n minLength,\n number,\n object,\n optional,\n pipe,\n record,\n refine,\n regex,\n string,\n toLowerCase,\n toUpperCase,\n transform,\n trim,\n union,\n url,\n uuid,\n type z,\n} from 'zod/mini';\nimport type { Environment, Platform } from '../track/types';\n\nconst items = array(\n record(\n string().check(trim(), minLength(1), maxLength(128)),\n union([string().check(maxLength(512)), number(), boolean(), _null()])\n )\n);\n\nexport const ALL_PLATFORMS = [\n 'ios',\n 'android',\n 'web',\n 'macos',\n 'windows',\n 'linux',\n 'unknown',\n] as const satisfies Platform[];\n\nexport const ALL_ENVIRONMENTS = ['development', 'production'] as const satisfies Environment[];\n\nexport const tagsSchema = object({\n os: optional(string()),\n os_name: optional(string()),\n os_version: optional(string()),\n browser: optional(string()),\n browser_name: optional(string()),\n browser_version: optional(string()),\n device: optional(string()),\n device_id: optional(string().check(trim(), minLength(1), maxLength(36))),\n device_type: optional(string()),\n device_vendor: optional(string()),\n device_pixel_ratio: optional(number()),\n screen_width: optional(number()),\n screen_height: optional(number()),\n screen_resolution: optional(\n pipe(\n string().check(regex(/^\\d+x\\d+$/)),\n transform((v) => v as `${number}x${number}`)\n )\n ),\n release: optional(string()),\n language: optional(string()),\n time_zone: optional(string()),\n source_url: optional(string()),\n source: optional(_enum(['web', 'app', 'offline'])),\n page_referrer: optional(string()),\n // app info\n advertising_id: optional(string()),\n install_referrer: optional(string()),\n // Meta Ads\n fbc: optional(string()),\n fbp: optional(string()),\n fbclid: optional(string()),\n ad_id: optional(string()),\n ad_name: optional(string()),\n adset_id: optional(string()),\n adset_name: optional(string()),\n campaign_id: optional(string()),\n campaign_name: optional(string()),\n placement: optional(string()),\n site_source_name: optional(string()),\n // Google Ads\n gclid: optional(string()),\n gclsrc: optional(string()),\n gad_source: optional(string()),\n gad_campaignid: optional(string()),\n // Reddit ads\n rdt_cid: optional(string()),\n rdt_uuid: optional(string()),\n // click ids\n dclid: optional(string()),\n ko_click_id: optional(string()),\n li_fat_id: optional(string()),\n msclkid: optional(string()),\n sccid: optional(string()),\n ttclid: optional(string()),\n twclid: optional(string()),\n wbraid: optional(string()),\n yclid: optional(string()),\n // utm params\n utm_source: optional(string()),\n utm_medium: optional(string()),\n utm_campaign: optional(string()),\n utm_term: optional(string()),\n utm_content: optional(string()),\n utm_id: optional(string()),\n utm_source_platform: optional(string()),\n utm_creative_format: optional(string()),\n utm_marketing_tactic: optional(string()),\n});\n\nexport const propertiesSchema = optional(\n record(\n string().check(trim(), minLength(1), maxLength(128)),\n union([string().check(maxLength(512)), number(), boolean(), _null(), items])\n ).check(refine((data) => Object.keys(data).length <= 64))\n);\n\nexport const createTrackEventSchema = array(\n object({\n name: string().check(trim(), minLength(1), maxLength(64)),\n visitor_id: uuid(),\n session_id: uuid(),\n platform: _enum(ALL_PLATFORMS),\n environment: _enum(ALL_ENVIRONMENTS),\n timestamp: iso.datetime(),\n tags: tagsSchema,\n properties: propertiesSchema,\n })\n).check(minLength(1), maxLength(100));\n\nexport const createVisitorSchema = object({\n device_id: string().check(trim(), minLength(1), maxLength(36)),\n platform: _enum(ALL_PLATFORMS),\n environment: _enum(ALL_ENVIRONMENTS),\n tags: tagsSchema,\n properties: optional(\n record(\n string().check(trim(), minLength(1), maxLength(128)),\n union([string().check(maxLength(512)), number(), boolean(), _null()])\n ).check(refine((data) => Object.keys(data).length <= 64))\n ),\n});\n\nconst emailValue = pipe(string().check(trim(), toLowerCase(), maxLength(320)), email());\n\n/** E.164: a plus sign (+) prefix, country code, then digits only, no dashes/parens/spaces. */\nconst phoneValue = pipe(string().check(trim()), e164());\n\nconst addressValue = object({\n first_name: optional(string().check(trim(), maxLength(128))),\n last_name: optional(string().check(trim(), maxLength(128))),\n street: optional(string().check(trim(), maxLength(256))),\n city: optional(string().check(trim(), maxLength(128))),\n /** User province, state, or region. Example: `Hampshire` */\n region: optional(string().check(trim(), maxLength(128))),\n postal_code: optional(string().check(trim(), maxLength(32))),\n /** 2-letter country code, per the ISO 3166-1 alpha-2 standard. Example: `UK` */\n country: optional(string().check(trim(), toUpperCase(), regex(/^[A-Z]{2}$/))),\n});\n\n/**\n * User-provided data (UPD) used for enhanced conversions, Customer Match, and demographics.\n * Values are sent unhashed; Google normalizes and hashes them before they reach its servers.\n *\n * Multiple values may be sent to increase the match rate: up to 3 emails, 3 phone numbers, and\n * 2 addresses.\n *\n * @see https://support.google.com/analytics/answer/14078702\n * @see https://support.google.com/google-ads/answer/13258081\n */\nexport const userProvidedDataSchema = object({\n email: optional(union([emailValue, array(emailValue).check(minLength(1), maxLength(3))])),\n phone_number: optional(union([phoneValue, array(phoneValue).check(minLength(1), maxLength(3))])),\n address: optional(union([addressValue, array(addressValue).check(minLength(1), maxLength(2))])),\n});\n\nexport const updateVisitorSchema = object({\n user_id: optional(uuid()),\n user_data: optional(userProvidedDataSchema),\n distinct_id: optional(string().check(trim(), minLength(1), maxLength(36))),\n tags: tagsSchema,\n properties: optional(\n record(\n string().check(trim(), minLength(1), maxLength(128)),\n union([string().check(maxLength(512)), number(), boolean(), _null()])\n ).check(refine((data) => Object.keys(data).length <= 64))\n ),\n});\n\nexport const createFeedbackSchema = object({\n name: string().check(minLength(1), maxLength(256)),\n email: email().check(maxLength(320)),\n message: string().check(minLength(1), maxLength(65536)),\n});\n\nconst noEmptyString = pipe(\n string().check(maxLength(256)),\n transform((v) => (v ? v : undefined))\n);\n\n/**\n * The schema for creating a link.\n * @see https://support.google.com/analytics/answer/10917952\n * */\nexport const createLinkSchema = object({\n /** The URL that the user is redirected to. */\n url: url().check(minLength(1), maxLength(1024)), // required\n\n /**\n * Campaign ID. Used to identify a specific campaign or promotion. This is a required key for GA4\n * data import. Use the same IDs that you use when uploading campaign cost data.\n */\n utm_id: optional(noEmptyString),\n\n /** Referrer, for example: google, newsletter4, billboard */\n utm_source: string().check(minLength(1), maxLength(256)), // required\n\n /** Marketing medium, for example: cpc, banner, email */\n utm_medium: string().check(minLength(1), maxLength(256)), // required\n\n /** Product, slogan, promo code, for example, spring_sale */\n utm_campaign: string().check(minLength(1), maxLength(256)), // required\n\n /** Paid keyword */\n utm_term: optional(noEmptyString),\n\n /**\n * Use to differentiate creatives. For example, if you have two call-to-action links within the\n * same email message, you can use utm_content and set different values for each so you can tell\n * which version is more effective.\n */\n utm_content: optional(noEmptyString),\n\n /**\n * The platform responsible for directing traffic to a given Analytics property (such as a buying\n * platform that sets budgets and targeting criteria or a platform that manages organic traffic\n * data). For example, Search Ads 360 or Display & Video 360.\n */\n utm_source_platform: optional(noEmptyString),\n\n /**\n * Type of creative, for example, display, native, video, search, utm_creative_format is not\n * currently reported in Google Analytics 4 properties.\n */\n utm_creative_format: optional(noEmptyString),\n\n /**\n * Targeting criteria applied to a campaign, for example, remarketing, prospecting,\n * utm_marketing_tactic is not currently reported in Google Analytics 4 properties.\n * */\n utm_marketing_tactic: optional(noEmptyString),\n});\n\nexport type CreateTrackEventDTO = z.output<typeof createTrackEventSchema>;\nexport type CreateFeedbackDTO = z.output<typeof createFeedbackSchema>;\nexport type CreateLinkDTO = z.output<typeof createLinkSchema>;\nexport type CreateVisitorDTO = z.output<typeof createVisitorSchema>;\nexport type UserProvidedDataDTO = z.output<typeof userProvidedDataSchema>;\nexport type UpdateVisitorDTO = z.output<typeof updateVisitorSchema>;\n"],"mappings":"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"}
@@ -13,7 +13,7 @@ async function sendEvents(accessToken, config, events, data = {}) {
13
13
  const address = require_utils_field.getFirst(data.address);
14
14
  const userIds = [];
15
15
  const externalIds = data.user_id ? [data.user_id] : void 0;
16
- const userInfo = address && address.first_name && address.last_name ? {
16
+ const userInfo = address?.first_name && address.last_name ? {
17
17
  firstName: address.first_name,
18
18
  lastName: address.last_name,
19
19
  countryCode: address.country
@@ -1 +1 @@
1
- {"version":3,"file":"linkedin-conversions-api.cjs","names":["getFirst","IGNORED_EVENTS"],"sources":["../../src/server/linkedin-conversions-api.ts"],"sourcesContent":["/**\n * Conversions API Payload Builder: https://www.linkedin.com/developers/payload-builder\n * https://learn.microsoft.com/en-us/linkedin/marketing/conversions/conversions-overview?view=li-lms-2025-09\n */\nimport { createHash } from 'node:crypto';\nimport { fetch } from '@shware/utils';\nimport { IGNORED_EVENTS } from '../third-parties/ignored-events';\nimport type { TrackEvent, UserProvidedData } from '../track/types';\nimport { getFirst } from '../utils/field';\n\ntype UserIdType =\n | 'SHA256_EMAIL'\n | 'LINKEDIN_FIRST_PARTY_ADS_TRACKING_UUID'\n | 'ACXIOM_ID'\n | 'ORACLE_MOAT_ID';\n\nexport interface CreateLinkedinEventDTO {\n /**\n * For any conversion that you want to send through multiple methods, such as Insight Tag and\n * Conversions API, you must create a conversion rule for each data source (browser and server).\n * Then, you can implement a logic to pick up the eventId from the browser and send it with the\n * corresponding event from your server. If we receive an Insight Tag event and a Conversions API\n * event from the same account with the same eventId, we discard the Conversions API event and\n * count only the Insight Tag event in campaign reporting.\n */\n eventId?: string;\n\n /**\n * Replace <id> with the conversion ID extracted when creating the conversion rule\n * (e.g. urn:lla:llaPartnerConversion:<id>).\n */\n conversion: `urn:lla:llaPartnerConversion:${number}`;\n\n /** Epoch timestamp in milliseconds at which the conversion event happened. */\n conversionHappenedAt: number;\n conversionValue: { currencyCode: string; amount: string };\n user: {\n userIds: { idType: UserIdType; idValue: string }[];\n userInfo?: {\n firstName?: string;\n lastName?: string;\n companyName?: string;\n countryCode?: string;\n title?: string;\n };\n\n /**\n * The maximum supported size of the list is 1 at the moment. If the list contains multiple\n * values, only the first value will be used.\n */\n externalIds?: [string, ...string[]];\n\n /**\n * This is generated when users submit the Linkedin Lead-gen form\n * (e.g. urn:li:leadGenFormResponse:<id>).\n */\n lead?: `urn:li:leadGenFormResponse:${string}`;\n };\n}\n\nexport interface CreateMultipleLinkedinEventsDTO {\n elements: CreateLinkedinEventDTO[];\n}\n\nexport type LinkedinConversionConfig = Record<Lowercase<string>, number>;\n\nexport async function sendEvents(\n accessToken: string,\n config: LinkedinConversionConfig,\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n events: TrackEvent<any>[],\n data: UserProvidedData = {}\n) {\n const eventNames = Object.keys(config);\n const address = getFirst(data.address);\n const userIds: { idType: UserIdType; idValue: string }[] = [];\n const externalIds: [string, ...string[]] | undefined = data.user_id ? [data.user_id] : undefined;\n const userInfo =\n address && address.first_name && address.last_name\n ? {\n firstName: address.first_name,\n lastName: address.last_name,\n countryCode: address.country,\n }\n : undefined;\n\n if (data.email) {\n const email = getFirst(data.email);\n if (email)\n userIds.push({\n idType: 'SHA256_EMAIL',\n idValue: createHash('sha256').update(email).digest('hex'),\n });\n }\n\n const dto: CreateMultipleLinkedinEventsDTO = {\n elements: events\n .filter((event) => eventNames.includes(event.name) && !IGNORED_EVENTS.includes(event.name))\n .map((event) => ({\n eventId: event.id,\n conversion: `urn:lla:llaPartnerConversion:${config[event.name]}`,\n conversionHappenedAt: Date.now(),\n conversionValue: {\n currencyCode: event.properties?.currency?.toUpperCase() ?? 'USD',\n amount: event.properties?.value?.toString() ?? '0',\n },\n user: {\n userIds: event.tags.li_fat_id\n ? [\n {\n idType: 'LINKEDIN_FIRST_PARTY_ADS_TRACKING_UUID',\n idValue: event.tags.li_fat_id,\n },\n ...userIds,\n ]\n : userIds,\n userInfo,\n externalIds,\n },\n })),\n };\n\n if (dto.elements.length === 0) return;\n try {\n const response = await fetch('https://api.linkedin.com/rest/conversionEvents', {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n 'LinkedIn-Version': '202509',\n 'X-Restli-Protocol-Version': '2.0.0',\n 'X-RestLi-Method': 'BATCH_CREATE',\n },\n body: JSON.stringify(dto),\n });\n\n if (response.ok) return;\n const { status } = response;\n const message = await response.text();\n console.error(`Failed to send LinkedIn conversion, status: ${status}, body: ${message}`);\n } catch (error) {\n console.error('Failed to send LinkedIn conversion, network error:', error);\n }\n}\n"],"mappings":";;;;;;;;;;AAkEA,eAAsB,WACpB,aACA,QAEA,QACA,OAAyB,CAAC,GAC1B;CACA,MAAM,aAAa,OAAO,KAAK,MAAM;CACrC,MAAM,UAAUA,oBAAAA,SAAS,KAAK,OAAO;CACrC,MAAM,UAAqD,CAAC;CAC5D,MAAM,cAAiD,KAAK,UAAU,CAAC,KAAK,OAAO,IAAI,KAAA;CACvF,MAAM,WACJ,WAAW,QAAQ,cAAc,QAAQ,YACrC;EACE,WAAW,QAAQ;EACnB,UAAU,QAAQ;EAClB,aAAa,QAAQ;CACvB,IACA,KAAA;CAEN,IAAI,KAAK,OAAO;EACd,MAAM,QAAQA,oBAAAA,SAAS,KAAK,KAAK;EACjC,IAAI,OACF,QAAQ,KAAK;GACX,QAAQ;GACR,UAAA,GAAA,YAAA,WAAA,CAAoB,QAAQ,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,KAAK;EAC1D,CAAC;CACL;CAEA,MAAM,MAAuC,EAC3C,UAAU,OACP,QAAQ,UAAU,WAAW,SAAS,MAAM,IAAI,KAAK,CAACC,qCAAAA,eAAe,SAAS,MAAM,IAAI,CAAC,CAAC,CAC1F,KAAK,WAAW;EACf,SAAS,MAAM;EACf,YAAY,gCAAgC,OAAO,MAAM;EACzD,sBAAsB,KAAK,IAAI;EAC/B,iBAAiB;GACf,cAAc,MAAM,YAAY,UAAU,YAAY,KAAK;GAC3D,QAAQ,MAAM,YAAY,OAAO,SAAS,KAAK;EACjD;EACA,MAAM;GACJ,SAAS,MAAM,KAAK,YAChB,CACE;IACE,QAAQ;IACR,SAAS,MAAM,KAAK;GACtB,GACA,GAAG,OACL,IACA;GACJ;GACA;EACF;CACF,EAAE,EACN;CAEA,IAAI,IAAI,SAAS,WAAW,GAAG;CAC/B,IAAI;EACF,MAAM,WAAW,OAAA,GAAA,cAAA,MAAA,CAAY,kDAAkD;GAC7E,QAAQ;GACR,SAAS;IACP,eAAe,UAAU;IACzB,gBAAgB;IAChB,oBAAoB;IACpB,6BAA6B;IAC7B,mBAAmB;GACrB;GACA,MAAM,KAAK,UAAU,GAAG;EAC1B,CAAC;EAED,IAAI,SAAS,IAAI;EACjB,MAAM,EAAE,WAAW;EACnB,MAAM,UAAU,MAAM,SAAS,KAAK;EACpC,QAAQ,MAAM,+CAA+C,OAAO,UAAU,SAAS;CACzF,SAAS,OAAO;EACd,QAAQ,MAAM,sDAAsD,KAAK;CAC3E;AACF"}
1
+ {"version":3,"file":"linkedin-conversions-api.cjs","names":["getFirst","IGNORED_EVENTS"],"sources":["../../src/server/linkedin-conversions-api.ts"],"sourcesContent":["/**\n * Conversions API Payload Builder: https://www.linkedin.com/developers/payload-builder\n * https://learn.microsoft.com/en-us/linkedin/marketing/conversions/conversions-overview?view=li-lms-2025-09\n */\nimport { createHash } from 'node:crypto';\nimport { fetch } from '@shware/utils';\nimport { IGNORED_EVENTS } from '../third-parties/ignored-events';\nimport type { TrackEvent, UserProvidedData } from '../track/types';\nimport { getFirst } from '../utils/field';\n\ntype UserIdType =\n | 'SHA256_EMAIL'\n | 'LINKEDIN_FIRST_PARTY_ADS_TRACKING_UUID'\n | 'ACXIOM_ID'\n | 'ORACLE_MOAT_ID';\n\nexport interface CreateLinkedinEventDTO {\n /**\n * For any conversion that you want to send through multiple methods, such as Insight Tag and\n * Conversions API, you must create a conversion rule for each data source (browser and server).\n * Then, you can implement a logic to pick up the eventId from the browser and send it with the\n * corresponding event from your server. If we receive an Insight Tag event and a Conversions API\n * event from the same account with the same eventId, we discard the Conversions API event and\n * count only the Insight Tag event in campaign reporting.\n */\n eventId?: string;\n\n /**\n * Replace <id> with the conversion ID extracted when creating the conversion rule\n * (e.g. urn:lla:llaPartnerConversion:<id>).\n */\n conversion: `urn:lla:llaPartnerConversion:${number}`;\n\n /** Epoch timestamp in milliseconds at which the conversion event happened. */\n conversionHappenedAt: number;\n conversionValue: { currencyCode: string; amount: string };\n user: {\n userIds: { idType: UserIdType; idValue: string }[];\n userInfo?: {\n firstName?: string;\n lastName?: string;\n companyName?: string;\n countryCode?: string;\n title?: string;\n };\n\n /**\n * The maximum supported size of the list is 1 at the moment. If the list contains multiple\n * values, only the first value will be used.\n */\n externalIds?: [string, ...string[]];\n\n /**\n * This is generated when users submit the Linkedin Lead-gen form\n * (e.g. urn:li:leadGenFormResponse:<id>).\n */\n lead?: `urn:li:leadGenFormResponse:${string}`;\n };\n}\n\nexport interface CreateMultipleLinkedinEventsDTO {\n elements: CreateLinkedinEventDTO[];\n}\n\nexport type LinkedinConversionConfig = Record<Lowercase<string>, number>;\n\nexport async function sendEvents(\n accessToken: string,\n config: LinkedinConversionConfig,\n // oxlint-disable-next-line @typescript-eslint/no-explicit-any\n events: TrackEvent<any>[],\n data: UserProvidedData = {}\n) {\n const eventNames = Object.keys(config);\n const address = getFirst(data.address);\n const userIds: { idType: UserIdType; idValue: string }[] = [];\n const externalIds: [string, ...string[]] | undefined = data.user_id ? [data.user_id] : undefined;\n const userInfo =\n address?.first_name && address.last_name\n ? {\n firstName: address.first_name,\n lastName: address.last_name,\n countryCode: address.country,\n }\n : undefined;\n\n if (data.email) {\n const email = getFirst(data.email);\n if (email)\n userIds.push({\n idType: 'SHA256_EMAIL',\n idValue: createHash('sha256').update(email).digest('hex'),\n });\n }\n\n const dto: CreateMultipleLinkedinEventsDTO = {\n elements: events\n .filter((event) => eventNames.includes(event.name) && !IGNORED_EVENTS.includes(event.name))\n .map((event) => ({\n eventId: event.id,\n conversion: `urn:lla:llaPartnerConversion:${config[event.name]}`,\n conversionHappenedAt: Date.now(),\n conversionValue: {\n currencyCode: event.properties?.currency?.toUpperCase() ?? 'USD',\n amount: event.properties?.value?.toString() ?? '0',\n },\n user: {\n userIds: event.tags.li_fat_id\n ? [\n {\n idType: 'LINKEDIN_FIRST_PARTY_ADS_TRACKING_UUID',\n idValue: event.tags.li_fat_id,\n },\n ...userIds,\n ]\n : userIds,\n userInfo,\n externalIds,\n },\n })),\n };\n\n if (dto.elements.length === 0) return;\n try {\n const response = await fetch('https://api.linkedin.com/rest/conversionEvents', {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'Content-Type': 'application/json',\n 'LinkedIn-Version': '202509',\n 'X-Restli-Protocol-Version': '2.0.0',\n 'X-RestLi-Method': 'BATCH_CREATE',\n },\n body: JSON.stringify(dto),\n });\n\n if (response.ok) return;\n const { status } = response;\n const message = await response.text();\n console.error(`Failed to send LinkedIn conversion, status: ${status}, body: ${message}`);\n } catch (error) {\n console.error('Failed to send LinkedIn conversion, network error:', error);\n }\n}\n"],"mappings":";;;;;;;;;;AAkEA,eAAsB,WACpB,aACA,QAEA,QACA,OAAyB,CAAC,GAC1B;CACA,MAAM,aAAa,OAAO,KAAK,MAAM;CACrC,MAAM,UAAUA,oBAAAA,SAAS,KAAK,OAAO;CACrC,MAAM,UAAqD,CAAC;CAC5D,MAAM,cAAiD,KAAK,UAAU,CAAC,KAAK,OAAO,IAAI,KAAA;CACvF,MAAM,WACJ,SAAS,cAAc,QAAQ,YAC3B;EACE,WAAW,QAAQ;EACnB,UAAU,QAAQ;EAClB,aAAa,QAAQ;CACvB,IACA,KAAA;CAEN,IAAI,KAAK,OAAO;EACd,MAAM,QAAQA,oBAAAA,SAAS,KAAK,KAAK;EACjC,IAAI,OACF,QAAQ,KAAK;GACX,QAAQ;GACR,UAAA,GAAA,YAAA,WAAA,CAAoB,QAAQ,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,KAAK;EAC1D,CAAC;CACL;CAEA,MAAM,MAAuC,EAC3C,UAAU,OACP,QAAQ,UAAU,WAAW,SAAS,MAAM,IAAI,KAAK,CAACC,qCAAAA,eAAe,SAAS,MAAM,IAAI,CAAC,CAAC,CAC1F,KAAK,WAAW;EACf,SAAS,MAAM;EACf,YAAY,gCAAgC,OAAO,MAAM;EACzD,sBAAsB,KAAK,IAAI;EAC/B,iBAAiB;GACf,cAAc,MAAM,YAAY,UAAU,YAAY,KAAK;GAC3D,QAAQ,MAAM,YAAY,OAAO,SAAS,KAAK;EACjD;EACA,MAAM;GACJ,SAAS,MAAM,KAAK,YAChB,CACE;IACE,QAAQ;IACR,SAAS,MAAM,KAAK;GACtB,GACA,GAAG,OACL,IACA;GACJ;GACA;EACF;CACF,EAAE,EACN;CAEA,IAAI,IAAI,SAAS,WAAW,GAAG;CAC/B,IAAI;EACF,MAAM,WAAW,OAAA,GAAA,cAAA,MAAA,CAAY,kDAAkD;GAC7E,QAAQ;GACR,SAAS;IACP,eAAe,UAAU;IACzB,gBAAgB;IAChB,oBAAoB;IACpB,6BAA6B;IAC7B,mBAAmB;GACrB;GACA,MAAM,KAAK,UAAU,GAAG;EAC1B,CAAC;EAED,IAAI,SAAS,IAAI;EACjB,MAAM,EAAE,WAAW;EACnB,MAAM,UAAU,MAAM,SAAS,KAAK;EACpC,QAAQ,MAAM,+CAA+C,OAAO,UAAU,SAAS;CACzF,SAAS,OAAO;EACd,QAAQ,MAAM,sDAAsD,KAAK;CAC3E;AACF"}
@@ -12,7 +12,7 @@ async function sendEvents(accessToken, config, events, data = {}) {
12
12
  const address = getFirst(data.address);
13
13
  const userIds = [];
14
14
  const externalIds = data.user_id ? [data.user_id] : void 0;
15
- const userInfo = address && address.first_name && address.last_name ? {
15
+ const userInfo = address?.first_name && address.last_name ? {
16
16
  firstName: address.first_name,
17
17
  lastName: address.last_name,
18
18
  countryCode: address.country