@shware/analytics 4.0.1 → 4.2.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.
- package/dist/hooks/use-outbound-click-analytics.cjs +2 -2
- package/dist/hooks/use-outbound-click-analytics.cjs.map +1 -1
- package/dist/hooks/use-outbound-click-analytics.mjs +2 -2
- package/dist/hooks/use-outbound-click-analytics.mjs.map +1 -1
- package/dist/index.cjs +0 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +2 -2
- package/dist/native/fingerprint.cjs +2 -2
- package/dist/native/fingerprint.cjs.map +1 -1
- package/dist/native/fingerprint.mjs +2 -2
- package/dist/native/fingerprint.mjs.map +1 -1
- package/dist/native/firebase.cjs +2 -2
- package/dist/native/firebase.cjs.map +1 -1
- package/dist/native/firebase.mjs +2 -2
- package/dist/native/firebase.mjs.map +1 -1
- package/dist/native/setup.cjs +2 -4
- package/dist/native/setup.cjs.map +1 -1
- package/dist/native/setup.mjs +2 -4
- package/dist/native/setup.mjs.map +1 -1
- package/dist/schema/index.cjs +0 -14
- package/dist/schema/index.cjs.map +1 -1
- package/dist/schema/index.d.cts +1 -150
- package/dist/schema/index.d.cts.map +1 -1
- package/dist/schema/index.d.mts +1 -150
- package/dist/schema/index.d.mts.map +1 -1
- package/dist/schema/index.mjs +2 -15
- package/dist/schema/index.mjs.map +1 -1
- package/dist/server/linkedin-conversions-api.cjs +1 -1
- package/dist/server/linkedin-conversions-api.cjs.map +1 -1
- package/dist/server/linkedin-conversions-api.mjs +1 -1
- package/dist/server/linkedin-conversions-api.mjs.map +1 -1
- package/dist/server/meta-conversions-api.cjs +4 -4
- package/dist/server/meta-conversions-api.cjs.map +1 -1
- package/dist/server/meta-conversions-api.d.cts.map +1 -1
- package/dist/server/meta-conversions-api.d.mts.map +1 -1
- package/dist/server/meta-conversions-api.mjs +4 -4
- package/dist/server/meta-conversions-api.mjs.map +1 -1
- package/dist/server/openai-conversions-api.cjs +1 -1
- package/dist/server/openai-conversions-api.cjs.map +1 -1
- package/dist/server/openai-conversions-api.mjs +1 -1
- package/dist/server/openai-conversions-api.mjs.map +1 -1
- package/dist/server/reddit-conversions-api.cjs +3 -3
- package/dist/server/reddit-conversions-api.cjs.map +1 -1
- package/dist/server/reddit-conversions-api.mjs +3 -3
- package/dist/server/reddit-conversions-api.mjs.map +1 -1
- package/dist/setup/session.cjs.map +1 -1
- package/dist/setup/session.mjs.map +1 -1
- package/dist/third-parties/google-analytics.cjs.map +1 -1
- package/dist/third-parties/google-analytics.d.cts +4 -1
- package/dist/third-parties/google-analytics.d.cts.map +1 -1
- package/dist/third-parties/google-analytics.d.mts +4 -1
- package/dist/third-parties/google-analytics.d.mts.map +1 -1
- package/dist/third-parties/google-analytics.mjs.map +1 -1
- package/dist/third-parties/linkedin-insight-tag.cjs.map +1 -1
- package/dist/third-parties/linkedin-insight-tag.d.cts +4 -1
- package/dist/third-parties/linkedin-insight-tag.d.cts.map +1 -1
- package/dist/third-parties/linkedin-insight-tag.d.mts +4 -1
- package/dist/third-parties/linkedin-insight-tag.d.mts.map +1 -1
- package/dist/third-parties/linkedin-insight-tag.mjs.map +1 -1
- package/dist/third-parties/meta-pixel.cjs.map +1 -1
- package/dist/third-parties/meta-pixel.d.cts +4 -1
- package/dist/third-parties/meta-pixel.d.cts.map +1 -1
- package/dist/third-parties/meta-pixel.d.mts +4 -1
- package/dist/third-parties/meta-pixel.d.mts.map +1 -1
- package/dist/third-parties/meta-pixel.mjs.map +1 -1
- package/dist/third-parties/openai-pixel.cjs +2 -1
- package/dist/third-parties/openai-pixel.cjs.map +1 -1
- package/dist/third-parties/openai-pixel.d.cts +4 -1
- package/dist/third-parties/openai-pixel.d.cts.map +1 -1
- package/dist/third-parties/openai-pixel.d.mts +4 -1
- package/dist/third-parties/openai-pixel.d.mts.map +1 -1
- package/dist/third-parties/openai-pixel.mjs +2 -1
- package/dist/third-parties/openai-pixel.mjs.map +1 -1
- package/dist/third-parties/reddit-pixel.cjs.map +1 -1
- package/dist/third-parties/reddit-pixel.d.cts +4 -1
- package/dist/third-parties/reddit-pixel.d.cts.map +1 -1
- package/dist/third-parties/reddit-pixel.d.mts +4 -1
- package/dist/third-parties/reddit-pixel.d.mts.map +1 -1
- package/dist/third-parties/reddit-pixel.mjs.map +1 -1
- package/dist/track/index.cjs +1 -1
- package/dist/track/index.cjs.map +1 -1
- package/dist/track/index.d.cts.map +1 -1
- package/dist/track/index.d.mts.map +1 -1
- package/dist/track/index.mjs +1 -1
- package/dist/track/index.mjs.map +1 -1
- package/dist/track/oaiq.cjs.map +1 -1
- package/dist/track/oaiq.d.cts +1 -1
- package/dist/track/oaiq.d.cts.map +1 -1
- package/dist/track/oaiq.d.mts +1 -1
- package/dist/track/oaiq.d.mts.map +1 -1
- package/dist/track/oaiq.mjs.map +1 -1
- package/dist/track/rdt.cjs +3 -4
- package/dist/track/rdt.cjs.map +1 -1
- package/dist/track/rdt.mjs +3 -4
- package/dist/track/rdt.mjs.map +1 -1
- package/dist/track/types.d.cts +0 -4
- package/dist/track/types.d.cts.map +1 -1
- package/dist/track/types.d.mts +0 -4
- package/dist/track/types.d.mts.map +1 -1
- package/dist/web/index.cjs +1 -1
- package/dist/web/index.cjs.map +1 -1
- package/dist/web/index.d.cts.map +1 -1
- package/dist/web/index.d.mts.map +1 -1
- package/dist/web/index.mjs +1 -1
- package/dist/web/index.mjs.map +1 -1
- package/package.json +21 -21
package/dist/schema/index.d.cts
CHANGED
|
@@ -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,
|
|
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":";;
|
|
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"}
|
package/dist/schema/index.d.mts
CHANGED
|
@@ -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,
|
|
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":";;
|
|
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"}
|
package/dist/schema/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { array, boolean,
|
|
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,
|
|
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":"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"}
|
|
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
|
|
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
|
|
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
|
|
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
|