@shware/analytics 2.1.6 → 2.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.
@@ -1,5 +1,5 @@
1
1
  import { CreateFeedbackDTO } from '../schema/index.cjs';
2
- import 'zod/v4-mini';
2
+ import 'zod/mini';
3
3
 
4
4
  declare function sendFeedback(dto: CreateFeedbackDTO): Promise<void>;
5
5
 
@@ -1,5 +1,5 @@
1
1
  import { CreateFeedbackDTO } from '../schema/index.js';
2
- import 'zod/v4-mini';
2
+ import 'zod/mini';
3
3
 
4
4
  declare function sendFeedback(dto: CreateFeedbackDTO): Promise<void>;
5
5
 
package/dist/index.d.cts CHANGED
@@ -8,5 +8,5 @@ export { stripeMinorUnits } from './utils/stripe.cjs';
8
8
  export { AllowedPropertyValues, TrackProperties, TrackTags, UserProvidedData } from './track/types.cjs';
9
9
  export { VisitorProperties } from './visitor/types.cjs';
10
10
  import 'axios';
11
- import 'zod/v4-mini';
11
+ import 'zod/mini';
12
12
  import './track/gtag.cjs';
package/dist/index.d.ts CHANGED
@@ -8,5 +8,5 @@ export { stripeMinorUnits } from './utils/stripe.js';
8
8
  export { AllowedPropertyValues, TrackProperties, TrackTags, UserProvidedData } from './track/types.js';
9
9
  export { VisitorProperties } from './visitor/types.js';
10
10
  import 'axios';
11
- import 'zod/v4-mini';
11
+ import 'zod/mini';
12
12
  import './track/gtag.js';
@@ -1,5 +1,5 @@
1
1
  import { CreateLinkDTO } from '../schema/index.cjs';
2
- import 'zod/v4-mini';
2
+ import 'zod/mini';
3
3
 
4
4
  interface Link extends CreateLinkDTO {
5
5
  id: string;
@@ -1,5 +1,5 @@
1
1
  import { CreateLinkDTO } from '../schema/index.js';
2
- import 'zod/v4-mini';
2
+ import 'zod/mini';
3
3
 
4
4
  interface Link extends CreateLinkDTO {
5
5
  id: string;
@@ -28,174 +28,204 @@ __export(schema_exports, {
28
28
  updateVisitorSchema: () => updateVisitorSchema
29
29
  });
30
30
  module.exports = __toCommonJS(schema_exports);
31
- var import_v4_mini = require("zod/v4-mini");
32
- var items = (0, import_v4_mini.array)(
33
- (0, import_v4_mini.record)(
34
- (0, import_v4_mini.string)().check((0, import_v4_mini.trim)(), (0, import_v4_mini.minLength)(1), (0, import_v4_mini.maxLength)(128)),
35
- (0, import_v4_mini.union)([(0, import_v4_mini.string)().check((0, import_v4_mini.maxLength)(512)), (0, import_v4_mini.number)(), (0, import_v4_mini.boolean)(), (0, import_v4_mini.null)()])
31
+ var import_mini = require("zod/mini");
32
+ var items = (0, import_mini.array)(
33
+ (0, import_mini.record)(
34
+ (0, import_mini.string)().check((0, import_mini.trim)(), (0, import_mini.minLength)(1), (0, import_mini.maxLength)(128)),
35
+ (0, import_mini.union)([(0, import_mini.string)().check((0, import_mini.maxLength)(512)), (0, import_mini.number)(), (0, import_mini.boolean)(), (0, import_mini.null)()])
36
36
  )
37
37
  );
38
- var createTrackEventSchemaV1 = (0, import_v4_mini.array)(
39
- (0, import_v4_mini.object)({
40
- name: (0, import_v4_mini.string)().check((0, import_v4_mini.trim)(), (0, import_v4_mini.minLength)(1), (0, import_v4_mini.maxLength)(64)),
41
- visitor_id: import_v4_mini.coerce.bigint(),
42
- timestamp: import_v4_mini.iso.datetime(),
43
- tags: (0, import_v4_mini.object)({
44
- os: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
45
- os_name: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
46
- os_version: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
47
- browser: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
48
- browser_name: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
49
- browser_version: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
50
- platform: (0, import_v4_mini.optional)((0, import_v4_mini.enum)(["ios", "android", "web", "macos", "windows", "linux", "unknown"])),
51
- device: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
52
- device_id: (0, import_v4_mini.optional)((0, import_v4_mini.string)().check((0, import_v4_mini.trim)(), (0, import_v4_mini.minLength)(1), (0, import_v4_mini.maxLength)(36))),
53
- device_type: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
54
- device_vendor: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
55
- device_pixel_ratio: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
56
- screen_resolution: (0, import_v4_mini.optional)(
57
- (0, import_v4_mini.pipe)(
58
- (0, import_v4_mini.string)().check((0, import_v4_mini.regex)(/^\d+x\d+$/)),
59
- (0, import_v4_mini.transform)((v) => v)
38
+ var createTrackEventSchemaV1 = (0, import_mini.array)(
39
+ (0, import_mini.object)({
40
+ name: (0, import_mini.string)().check((0, import_mini.trim)(), (0, import_mini.minLength)(1), (0, import_mini.maxLength)(64)),
41
+ visitor_id: import_mini.coerce.bigint(),
42
+ timestamp: import_mini.iso.datetime(),
43
+ tags: (0, import_mini.object)({
44
+ os: (0, import_mini.optional)((0, import_mini.string)()),
45
+ os_name: (0, import_mini.optional)((0, import_mini.string)()),
46
+ os_version: (0, import_mini.optional)((0, import_mini.string)()),
47
+ browser: (0, import_mini.optional)((0, import_mini.string)()),
48
+ browser_name: (0, import_mini.optional)((0, import_mini.string)()),
49
+ browser_version: (0, import_mini.optional)((0, import_mini.string)()),
50
+ platform: (0, import_mini.optional)((0, import_mini.enum)(["ios", "android", "web", "macos", "windows", "linux", "unknown"])),
51
+ device: (0, import_mini.optional)((0, import_mini.string)()),
52
+ device_id: (0, import_mini.optional)((0, import_mini.string)().check((0, import_mini.trim)(), (0, import_mini.minLength)(1), (0, import_mini.maxLength)(36))),
53
+ device_type: (0, import_mini.optional)((0, import_mini.string)()),
54
+ device_vendor: (0, import_mini.optional)((0, import_mini.string)()),
55
+ device_pixel_ratio: (0, import_mini.optional)((0, import_mini.string)()),
56
+ screen_resolution: (0, import_mini.optional)(
57
+ (0, import_mini.pipe)(
58
+ (0, import_mini.string)().check((0, import_mini.regex)(/^\d+x\d+$/)),
59
+ (0, import_mini.transform)((v) => v)
60
60
  )
61
61
  ),
62
- release: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
63
- language: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
64
- time_zone: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
65
- environment: (0, import_v4_mini.optional)((0, import_v4_mini.enum)(["development", "production"])),
66
- source_url: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
67
- source: (0, import_v4_mini.optional)((0, import_v4_mini.enum)(["web", "app", "offline"])),
68
- fbc: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
69
- fbp: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
70
- gclid: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
71
- advertising_id: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
72
- utm_source: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
73
- utm_medium: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
74
- utm_campaign: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
75
- utm_term: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
76
- utm_content: (0, import_v4_mini.optional)((0, import_v4_mini.string)())
62
+ release: (0, import_mini.optional)((0, import_mini.string)()),
63
+ language: (0, import_mini.optional)((0, import_mini.string)()),
64
+ time_zone: (0, import_mini.optional)((0, import_mini.string)()),
65
+ environment: (0, import_mini.optional)((0, import_mini.enum)(["development", "production"])),
66
+ source_url: (0, import_mini.optional)((0, import_mini.string)()),
67
+ source: (0, import_mini.optional)((0, import_mini.enum)(["web", "app", "offline"])),
68
+ // meta ads
69
+ fbc: (0, import_mini.optional)((0, import_mini.string)()),
70
+ fbp: (0, import_mini.optional)((0, import_mini.string)()),
71
+ fbclid: (0, import_mini.optional)((0, import_mini.string)()),
72
+ ad_id: (0, import_mini.optional)((0, import_mini.string)()),
73
+ ad_name: (0, import_mini.optional)((0, import_mini.string)()),
74
+ adset_id: (0, import_mini.optional)((0, import_mini.string)()),
75
+ adset_name: (0, import_mini.optional)((0, import_mini.string)()),
76
+ campaign_id: (0, import_mini.optional)((0, import_mini.string)()),
77
+ campaign_name: (0, import_mini.optional)((0, import_mini.string)()),
78
+ placement: (0, import_mini.optional)((0, import_mini.string)()),
79
+ site_source_name: (0, import_mini.optional)((0, import_mini.string)()),
80
+ // google ads
81
+ gclid: (0, import_mini.optional)((0, import_mini.string)()),
82
+ gclsrc: (0, import_mini.optional)((0, import_mini.string)()),
83
+ gad_source: (0, import_mini.optional)((0, import_mini.string)()),
84
+ gad_campaignid: (0, import_mini.optional)((0, import_mini.string)()),
85
+ advertising_id: (0, import_mini.optional)((0, import_mini.string)()),
86
+ // utm params
87
+ utm_source: (0, import_mini.optional)((0, import_mini.string)()),
88
+ utm_medium: (0, import_mini.optional)((0, import_mini.string)()),
89
+ utm_campaign: (0, import_mini.optional)((0, import_mini.string)()),
90
+ utm_term: (0, import_mini.optional)((0, import_mini.string)()),
91
+ utm_content: (0, import_mini.optional)((0, import_mini.string)())
77
92
  }),
78
- properties: (0, import_v4_mini.optional)(
79
- (0, import_v4_mini.record)(
80
- (0, import_v4_mini.string)().check((0, import_v4_mini.trim)(), (0, import_v4_mini.minLength)(1), (0, import_v4_mini.maxLength)(128)),
81
- (0, import_v4_mini.union)([(0, import_v4_mini.string)().check((0, import_v4_mini.maxLength)(512)), (0, import_v4_mini.number)(), (0, import_v4_mini.boolean)(), (0, import_v4_mini.null)(), items])
82
- ).check((0, import_v4_mini.refine)((data) => Object.keys(data).length <= 64))
93
+ properties: (0, import_mini.optional)(
94
+ (0, import_mini.record)(
95
+ (0, import_mini.string)().check((0, import_mini.trim)(), (0, import_mini.minLength)(1), (0, import_mini.maxLength)(128)),
96
+ (0, import_mini.union)([(0, import_mini.string)().check((0, import_mini.maxLength)(512)), (0, import_mini.number)(), (0, import_mini.boolean)(), (0, import_mini.null)(), items])
97
+ ).check((0, import_mini.refine)((data) => Object.keys(data).length <= 64))
83
98
  )
84
99
  })
85
- ).check((0, import_v4_mini.minLength)(1), (0, import_v4_mini.maxLength)(100));
86
- var createTrackEventSchema = (0, import_v4_mini.array)(
87
- (0, import_v4_mini.object)({
88
- name: (0, import_v4_mini.string)().check((0, import_v4_mini.trim)(), (0, import_v4_mini.minLength)(1), (0, import_v4_mini.maxLength)(64)),
89
- visitor_id: (0, import_v4_mini.uuid)(),
90
- timestamp: import_v4_mini.iso.datetime(),
91
- tags: (0, import_v4_mini.object)({
92
- os: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
93
- os_name: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
94
- os_version: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
95
- browser: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
96
- browser_name: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
97
- browser_version: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
98
- platform: (0, import_v4_mini.optional)((0, import_v4_mini.enum)(["ios", "android", "web", "macos", "windows", "linux", "unknown"])),
99
- device: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
100
- device_id: (0, import_v4_mini.optional)((0, import_v4_mini.string)().check((0, import_v4_mini.trim)(), (0, import_v4_mini.minLength)(1), (0, import_v4_mini.maxLength)(36))),
101
- device_type: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
102
- device_vendor: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
103
- device_pixel_ratio: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
104
- screen_resolution: (0, import_v4_mini.optional)(
105
- (0, import_v4_mini.pipe)(
106
- (0, import_v4_mini.string)().check((0, import_v4_mini.regex)(/^\d+x\d+$/)),
107
- (0, import_v4_mini.transform)((v) => v)
100
+ ).check((0, import_mini.minLength)(1), (0, import_mini.maxLength)(100));
101
+ var createTrackEventSchema = (0, import_mini.array)(
102
+ (0, import_mini.object)({
103
+ name: (0, import_mini.string)().check((0, import_mini.trim)(), (0, import_mini.minLength)(1), (0, import_mini.maxLength)(64)),
104
+ visitor_id: (0, import_mini.uuid)(),
105
+ timestamp: import_mini.iso.datetime(),
106
+ tags: (0, import_mini.object)({
107
+ os: (0, import_mini.optional)((0, import_mini.string)()),
108
+ os_name: (0, import_mini.optional)((0, import_mini.string)()),
109
+ os_version: (0, import_mini.optional)((0, import_mini.string)()),
110
+ browser: (0, import_mini.optional)((0, import_mini.string)()),
111
+ browser_name: (0, import_mini.optional)((0, import_mini.string)()),
112
+ browser_version: (0, import_mini.optional)((0, import_mini.string)()),
113
+ platform: (0, import_mini.optional)((0, import_mini.enum)(["ios", "android", "web", "macos", "windows", "linux", "unknown"])),
114
+ device: (0, import_mini.optional)((0, import_mini.string)()),
115
+ device_id: (0, import_mini.optional)((0, import_mini.string)().check((0, import_mini.trim)(), (0, import_mini.minLength)(1), (0, import_mini.maxLength)(36))),
116
+ device_type: (0, import_mini.optional)((0, import_mini.string)()),
117
+ device_vendor: (0, import_mini.optional)((0, import_mini.string)()),
118
+ device_pixel_ratio: (0, import_mini.optional)((0, import_mini.string)()),
119
+ screen_resolution: (0, import_mini.optional)(
120
+ (0, import_mini.pipe)(
121
+ (0, import_mini.string)().check((0, import_mini.regex)(/^\d+x\d+$/)),
122
+ (0, import_mini.transform)((v) => v)
108
123
  )
109
124
  ),
110
- release: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
111
- language: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
112
- time_zone: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
113
- environment: (0, import_v4_mini.optional)((0, import_v4_mini.enum)(["development", "production"])),
114
- source_url: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
115
- source: (0, import_v4_mini.optional)((0, import_v4_mini.enum)(["web", "app", "offline"])),
116
- fbc: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
117
- fbp: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
118
- gclid: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
119
- advertising_id: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
120
- utm_source: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
121
- utm_medium: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
122
- utm_campaign: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
123
- utm_term: (0, import_v4_mini.optional)((0, import_v4_mini.string)()),
124
- utm_content: (0, import_v4_mini.optional)((0, import_v4_mini.string)())
125
+ release: (0, import_mini.optional)((0, import_mini.string)()),
126
+ language: (0, import_mini.optional)((0, import_mini.string)()),
127
+ time_zone: (0, import_mini.optional)((0, import_mini.string)()),
128
+ environment: (0, import_mini.optional)((0, import_mini.enum)(["development", "production"])),
129
+ source_url: (0, import_mini.optional)((0, import_mini.string)()),
130
+ source: (0, import_mini.optional)((0, import_mini.enum)(["web", "app", "offline"])),
131
+ // meta ads
132
+ fbc: (0, import_mini.optional)((0, import_mini.string)()),
133
+ fbp: (0, import_mini.optional)((0, import_mini.string)()),
134
+ fbclid: (0, import_mini.optional)((0, import_mini.string)()),
135
+ ad_id: (0, import_mini.optional)((0, import_mini.string)()),
136
+ ad_name: (0, import_mini.optional)((0, import_mini.string)()),
137
+ adset_id: (0, import_mini.optional)((0, import_mini.string)()),
138
+ adset_name: (0, import_mini.optional)((0, import_mini.string)()),
139
+ campaign_id: (0, import_mini.optional)((0, import_mini.string)()),
140
+ campaign_name: (0, import_mini.optional)((0, import_mini.string)()),
141
+ placement: (0, import_mini.optional)((0, import_mini.string)()),
142
+ site_source_name: (0, import_mini.optional)((0, import_mini.string)()),
143
+ // google ads
144
+ gclid: (0, import_mini.optional)((0, import_mini.string)()),
145
+ gclsrc: (0, import_mini.optional)((0, import_mini.string)()),
146
+ gad_source: (0, import_mini.optional)((0, import_mini.string)()),
147
+ gad_campaignid: (0, import_mini.optional)((0, import_mini.string)()),
148
+ advertising_id: (0, import_mini.optional)((0, import_mini.string)()),
149
+ // utm params
150
+ utm_source: (0, import_mini.optional)((0, import_mini.string)()),
151
+ utm_medium: (0, import_mini.optional)((0, import_mini.string)()),
152
+ utm_campaign: (0, import_mini.optional)((0, import_mini.string)()),
153
+ utm_term: (0, import_mini.optional)((0, import_mini.string)()),
154
+ utm_content: (0, import_mini.optional)((0, import_mini.string)())
125
155
  }),
126
- properties: (0, import_v4_mini.optional)(
127
- (0, import_v4_mini.record)(
128
- (0, import_v4_mini.string)().check((0, import_v4_mini.trim)(), (0, import_v4_mini.minLength)(1), (0, import_v4_mini.maxLength)(128)),
129
- (0, import_v4_mini.union)([(0, import_v4_mini.string)().check((0, import_v4_mini.maxLength)(512)), (0, import_v4_mini.number)(), (0, import_v4_mini.boolean)(), (0, import_v4_mini.null)(), items])
130
- ).check((0, import_v4_mini.refine)((data) => Object.keys(data).length <= 64))
156
+ properties: (0, import_mini.optional)(
157
+ (0, import_mini.record)(
158
+ (0, import_mini.string)().check((0, import_mini.trim)(), (0, import_mini.minLength)(1), (0, import_mini.maxLength)(128)),
159
+ (0, import_mini.union)([(0, import_mini.string)().check((0, import_mini.maxLength)(512)), (0, import_mini.number)(), (0, import_mini.boolean)(), (0, import_mini.null)(), items])
160
+ ).check((0, import_mini.refine)((data) => Object.keys(data).length <= 64))
131
161
  )
132
162
  })
133
- ).check((0, import_v4_mini.minLength)(1), (0, import_v4_mini.maxLength)(100));
134
- var createVisitorSchema = (0, import_v4_mini.object)({
135
- device_id: (0, import_v4_mini.string)().check((0, import_v4_mini.trim)(), (0, import_v4_mini.minLength)(1), (0, import_v4_mini.maxLength)(36)),
136
- properties: (0, import_v4_mini.optional)(
137
- (0, import_v4_mini.record)(
138
- (0, import_v4_mini.string)().check((0, import_v4_mini.trim)(), (0, import_v4_mini.minLength)(1), (0, import_v4_mini.maxLength)(128)),
139
- (0, import_v4_mini.union)([(0, import_v4_mini.string)().check((0, import_v4_mini.maxLength)(512)), (0, import_v4_mini.number)(), (0, import_v4_mini.boolean)(), (0, import_v4_mini.null)()])
140
- ).check((0, import_v4_mini.refine)((data) => Object.keys(data).length <= 64))
163
+ ).check((0, import_mini.minLength)(1), (0, import_mini.maxLength)(100));
164
+ var createVisitorSchema = (0, import_mini.object)({
165
+ device_id: (0, import_mini.string)().check((0, import_mini.trim)(), (0, import_mini.minLength)(1), (0, import_mini.maxLength)(36)),
166
+ properties: (0, import_mini.optional)(
167
+ (0, import_mini.record)(
168
+ (0, import_mini.string)().check((0, import_mini.trim)(), (0, import_mini.minLength)(1), (0, import_mini.maxLength)(128)),
169
+ (0, import_mini.union)([(0, import_mini.string)().check((0, import_mini.maxLength)(512)), (0, import_mini.number)(), (0, import_mini.boolean)(), (0, import_mini.null)()])
170
+ ).check((0, import_mini.refine)((data) => Object.keys(data).length <= 64))
141
171
  )
142
172
  });
143
- var updateVisitorSchema = (0, import_v4_mini.object)({
144
- user_id: (0, import_v4_mini.optional)((0, import_v4_mini.uuid)()),
145
- properties: (0, import_v4_mini.optional)(
146
- (0, import_v4_mini.record)(
147
- (0, import_v4_mini.string)().check((0, import_v4_mini.trim)(), (0, import_v4_mini.minLength)(1), (0, import_v4_mini.maxLength)(128)),
148
- (0, import_v4_mini.union)([(0, import_v4_mini.string)().check((0, import_v4_mini.maxLength)(512)), (0, import_v4_mini.number)(), (0, import_v4_mini.boolean)(), (0, import_v4_mini.null)()])
149
- ).check((0, import_v4_mini.refine)((data) => Object.keys(data).length <= 64))
173
+ var updateVisitorSchema = (0, import_mini.object)({
174
+ user_id: (0, import_mini.optional)((0, import_mini.uuid)()),
175
+ properties: (0, import_mini.optional)(
176
+ (0, import_mini.record)(
177
+ (0, import_mini.string)().check((0, import_mini.trim)(), (0, import_mini.minLength)(1), (0, import_mini.maxLength)(128)),
178
+ (0, import_mini.union)([(0, import_mini.string)().check((0, import_mini.maxLength)(512)), (0, import_mini.number)(), (0, import_mini.boolean)(), (0, import_mini.null)()])
179
+ ).check((0, import_mini.refine)((data) => Object.keys(data).length <= 64))
150
180
  )
151
181
  });
152
- var createFeedbackSchema = (0, import_v4_mini.object)({
153
- name: (0, import_v4_mini.string)().check((0, import_v4_mini.minLength)(1), (0, import_v4_mini.maxLength)(256)),
154
- email: (0, import_v4_mini.email)().check((0, import_v4_mini.maxLength)(320)),
155
- message: (0, import_v4_mini.string)().check((0, import_v4_mini.minLength)(1), (0, import_v4_mini.maxLength)(65536))
182
+ var createFeedbackSchema = (0, import_mini.object)({
183
+ name: (0, import_mini.string)().check((0, import_mini.minLength)(1), (0, import_mini.maxLength)(256)),
184
+ email: (0, import_mini.email)().check((0, import_mini.maxLength)(320)),
185
+ message: (0, import_mini.string)().check((0, import_mini.minLength)(1), (0, import_mini.maxLength)(65536))
156
186
  });
157
- var createLinkSchema = (0, import_v4_mini.object)({
187
+ var createLinkSchema = (0, import_mini.object)({
158
188
  /** The URL that the user is redirected to. */
159
- url: (0, import_v4_mini.url)().check((0, import_v4_mini.minLength)(1), (0, import_v4_mini.maxLength)(1024)),
189
+ url: (0, import_mini.url)().check((0, import_mini.minLength)(1), (0, import_mini.maxLength)(1024)),
160
190
  // required
161
191
  /**
162
192
  * Campaign ID. Used to identify a specific campaign or promotion. This is a required key for GA4
163
193
  * data import. Use the same IDs that you use when uploading campaign cost data.
164
194
  */
165
- utm_id: (0, import_v4_mini.optional)((0, import_v4_mini.string)().check((0, import_v4_mini.maxLength)(256))),
195
+ utm_id: (0, import_mini.optional)((0, import_mini.string)().check((0, import_mini.maxLength)(256))),
166
196
  /** Referrer, for example: google, newsletter4, billboard */
167
- utm_source: (0, import_v4_mini.string)().check((0, import_v4_mini.minLength)(1), (0, import_v4_mini.maxLength)(256)),
197
+ utm_source: (0, import_mini.string)().check((0, import_mini.minLength)(1), (0, import_mini.maxLength)(256)),
168
198
  // required
169
199
  /** Marketing medium, for example: cpc, banner, email */
170
- utm_medium: (0, import_v4_mini.string)().check((0, import_v4_mini.minLength)(1), (0, import_v4_mini.maxLength)(256)),
200
+ utm_medium: (0, import_mini.string)().check((0, import_mini.minLength)(1), (0, import_mini.maxLength)(256)),
171
201
  // required
172
202
  /** Product, slogan, promo code, for example: spring_sale */
173
- utm_campaign: (0, import_v4_mini.string)().check((0, import_v4_mini.minLength)(1), (0, import_v4_mini.maxLength)(256)),
203
+ utm_campaign: (0, import_mini.string)().check((0, import_mini.minLength)(1), (0, import_mini.maxLength)(256)),
174
204
  // required
175
205
  /** Paid keyword */
176
- utm_term: (0, import_v4_mini.optional)((0, import_v4_mini.string)().check((0, import_v4_mini.maxLength)(256))),
206
+ utm_term: (0, import_mini.optional)((0, import_mini.string)().check((0, import_mini.maxLength)(256))),
177
207
  /**
178
208
  * Use to differentiate creatives. For example, if you have two call-to-action links within the
179
209
  * same email message, you can use utm_content and set different values for each so you can tell
180
210
  * which version is more effective.
181
211
  */
182
- utm_content: (0, import_v4_mini.optional)((0, import_v4_mini.string)().check((0, import_v4_mini.maxLength)(256))),
212
+ utm_content: (0, import_mini.optional)((0, import_mini.string)().check((0, import_mini.maxLength)(256))),
183
213
  /**
184
214
  * The platform responsible for directing traffic to a given Analytics property (such as a buying
185
215
  * platform that sets budgets and targeting criteria or a platform that manages organic traffic
186
216
  * data). For example: Search Ads 360 or Display & Video 360.
187
217
  */
188
- utm_source_platform: (0, import_v4_mini.optional)((0, import_v4_mini.string)().check((0, import_v4_mini.maxLength)(256))),
218
+ utm_source_platform: (0, import_mini.optional)((0, import_mini.string)().check((0, import_mini.maxLength)(256))),
189
219
  /**
190
220
  * Type of creative, for example: display, native, video, search, utm_creative_format is not
191
221
  * currently reported in Google Analytics 4 properties.
192
222
  */
193
- utm_creative_format: (0, import_v4_mini.optional)((0, import_v4_mini.string)().check((0, import_v4_mini.maxLength)(256))),
223
+ utm_creative_format: (0, import_mini.optional)((0, import_mini.string)().check((0, import_mini.maxLength)(256))),
194
224
  /**
195
225
  * Targeting criteria applied to a campaign, for example: remarketing, prospecting,
196
226
  * utm_marketing_tactic is not currently reported in Google Analytics 4 properties.
197
227
  * */
198
- utm_marketing_tactic: (0, import_v4_mini.optional)((0, import_v4_mini.string)().check((0, import_v4_mini.maxLength)(256)))
228
+ utm_marketing_tactic: (0, import_mini.optional)((0, import_mini.string)().check((0, import_mini.maxLength)(256)))
199
229
  });
200
230
  // Annotate the CommonJS export names for ESM import in node:
201
231
  0 && (module.exports = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema/index.ts"],"sourcesContent":["import {\n optional,\n object,\n string,\n regex,\n number,\n boolean,\n null as _null,\n coerce,\n enum as _enum,\n trim,\n union,\n record,\n array,\n iso,\n minLength,\n maxLength,\n refine,\n pipe,\n transform,\n email,\n type z,\n uuid,\n url,\n} from 'zod/v4-mini';\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\n/** @deprecated */\nexport const createTrackEventSchemaV1 = array(\n object({\n name: string().check(trim(), minLength(1), maxLength(64)),\n visitor_id: coerce.bigint(),\n timestamp: iso.datetime(),\n tags: 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: optional(_enum(['ios', 'android', 'web', 'macos', 'windows', 'linux', 'unknown'])),\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(string()),\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: optional(_enum(['development', 'production'])),\n source_url: optional(string()),\n source: optional(_enum(['web', 'app', 'offline'])),\n fbc: optional(string()),\n fbp: optional(string()),\n gclid: optional(string()),\n advertising_id: optional(string()),\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 }),\n properties: 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).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 timestamp: iso.datetime(),\n tags: 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: optional(_enum(['ios', 'android', 'web', 'macos', 'windows', 'linux', 'unknown'])),\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(string()),\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: optional(_enum(['development', 'production'])),\n source_url: optional(string()),\n source: optional(_enum(['web', 'app', 'offline'])),\n fbc: optional(string()),\n fbp: optional(string()),\n gclid: optional(string()),\n advertising_id: optional(string()),\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 }),\n properties: 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).check(minLength(1), maxLength(100));\n\nexport const createVisitorSchema = object({\n device_id: string().check(trim(), minLength(1), maxLength(36)),\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 updateVisitorSchema = object({\n user_id: optional(uuid()),\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\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(string().check(maxLength(256))),\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(string().check(maxLength(256))),\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(string().check(maxLength(256))),\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(string().check(maxLength(256))),\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(string().check(maxLength(256))),\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(string().check(maxLength(256))),\n});\n\nexport type CreateFeedbackDTO = z.output<typeof createFeedbackSchema>;\nexport type CreateLinkDTO = z.output<typeof createLinkSchema>;\n"],"mappings":"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","names":["_null","_enum"]}
1
+ {"version":3,"sources":["../../src/schema/index.ts"],"sourcesContent":["import {\n optional,\n object,\n string,\n regex,\n number,\n boolean,\n null as _null,\n coerce,\n enum as _enum,\n trim,\n union,\n record,\n array,\n iso,\n minLength,\n maxLength,\n refine,\n pipe,\n transform,\n email,\n type z,\n uuid,\n url,\n} from 'zod/mini';\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\n/** @deprecated */\nexport const createTrackEventSchemaV1 = array(\n object({\n name: string().check(trim(), minLength(1), maxLength(64)),\n visitor_id: coerce.bigint(),\n timestamp: iso.datetime(),\n tags: 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: optional(_enum(['ios', 'android', 'web', 'macos', 'windows', 'linux', 'unknown'])),\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(string()),\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: optional(_enum(['development', 'production'])),\n source_url: optional(string()),\n source: optional(_enum(['web', 'app', 'offline'])),\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 advertising_id: 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 }),\n properties: 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).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 timestamp: iso.datetime(),\n tags: 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: optional(_enum(['ios', 'android', 'web', 'macos', 'windows', 'linux', 'unknown'])),\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(string()),\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: optional(_enum(['development', 'production'])),\n source_url: optional(string()),\n source: optional(_enum(['web', 'app', 'offline'])),\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 advertising_id: 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 }),\n properties: 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).check(minLength(1), maxLength(100));\n\nexport const createVisitorSchema = object({\n device_id: string().check(trim(), minLength(1), maxLength(36)),\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 updateVisitorSchema = object({\n user_id: optional(uuid()),\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\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(string().check(maxLength(256))),\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(string().check(maxLength(256))),\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(string().check(maxLength(256))),\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(string().check(maxLength(256))),\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(string().check(maxLength(256))),\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(string().check(maxLength(256))),\n});\n\nexport type CreateFeedbackDTO = z.output<typeof createFeedbackSchema>;\nexport type CreateLinkDTO = z.output<typeof createLinkSchema>;\n"],"mappings":"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","names":["_null","_enum"]}
@@ -1,4 +1,4 @@
1
- import { z, iso } from 'zod/v4-mini';
1
+ import { z, iso } from 'zod/mini';
2
2
 
3
3
  /** @deprecated */
4
4
  declare const createTrackEventSchemaV1: z.ZodMiniArray<z.ZodMiniObject<{
@@ -42,7 +42,19 @@ declare const createTrackEventSchemaV1: z.ZodMiniArray<z.ZodMiniObject<{
42
42
  }>>;
43
43
  fbc: z.ZodMiniOptional<z.ZodMiniString<string>>;
44
44
  fbp: z.ZodMiniOptional<z.ZodMiniString<string>>;
45
+ fbclid: z.ZodMiniOptional<z.ZodMiniString<string>>;
46
+ ad_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
47
+ ad_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
48
+ adset_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
49
+ adset_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
50
+ campaign_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
51
+ campaign_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
52
+ placement: z.ZodMiniOptional<z.ZodMiniString<string>>;
53
+ site_source_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
45
54
  gclid: z.ZodMiniOptional<z.ZodMiniString<string>>;
55
+ gclsrc: z.ZodMiniOptional<z.ZodMiniString<string>>;
56
+ gad_source: z.ZodMiniOptional<z.ZodMiniString<string>>;
57
+ gad_campaignid: z.ZodMiniOptional<z.ZodMiniString<string>>;
46
58
  advertising_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
47
59
  utm_source: z.ZodMiniOptional<z.ZodMiniString<string>>;
48
60
  utm_medium: z.ZodMiniOptional<z.ZodMiniString<string>>;
@@ -93,7 +105,19 @@ declare const createTrackEventSchema: z.ZodMiniArray<z.ZodMiniObject<{
93
105
  }>>;
94
106
  fbc: z.ZodMiniOptional<z.ZodMiniString<string>>;
95
107
  fbp: z.ZodMiniOptional<z.ZodMiniString<string>>;
108
+ fbclid: z.ZodMiniOptional<z.ZodMiniString<string>>;
109
+ ad_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
110
+ ad_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
111
+ adset_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
112
+ adset_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
113
+ campaign_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
114
+ campaign_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
115
+ placement: z.ZodMiniOptional<z.ZodMiniString<string>>;
116
+ site_source_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
96
117
  gclid: z.ZodMiniOptional<z.ZodMiniString<string>>;
118
+ gclsrc: z.ZodMiniOptional<z.ZodMiniString<string>>;
119
+ gad_source: z.ZodMiniOptional<z.ZodMiniString<string>>;
120
+ gad_campaignid: z.ZodMiniOptional<z.ZodMiniString<string>>;
97
121
  advertising_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
98
122
  utm_source: z.ZodMiniOptional<z.ZodMiniString<string>>;
99
123
  utm_medium: z.ZodMiniOptional<z.ZodMiniString<string>>;
@@ -1,4 +1,4 @@
1
- import { z, iso } from 'zod/v4-mini';
1
+ import { z, iso } from 'zod/mini';
2
2
 
3
3
  /** @deprecated */
4
4
  declare const createTrackEventSchemaV1: z.ZodMiniArray<z.ZodMiniObject<{
@@ -42,7 +42,19 @@ declare const createTrackEventSchemaV1: z.ZodMiniArray<z.ZodMiniObject<{
42
42
  }>>;
43
43
  fbc: z.ZodMiniOptional<z.ZodMiniString<string>>;
44
44
  fbp: z.ZodMiniOptional<z.ZodMiniString<string>>;
45
+ fbclid: z.ZodMiniOptional<z.ZodMiniString<string>>;
46
+ ad_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
47
+ ad_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
48
+ adset_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
49
+ adset_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
50
+ campaign_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
51
+ campaign_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
52
+ placement: z.ZodMiniOptional<z.ZodMiniString<string>>;
53
+ site_source_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
45
54
  gclid: z.ZodMiniOptional<z.ZodMiniString<string>>;
55
+ gclsrc: z.ZodMiniOptional<z.ZodMiniString<string>>;
56
+ gad_source: z.ZodMiniOptional<z.ZodMiniString<string>>;
57
+ gad_campaignid: z.ZodMiniOptional<z.ZodMiniString<string>>;
46
58
  advertising_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
47
59
  utm_source: z.ZodMiniOptional<z.ZodMiniString<string>>;
48
60
  utm_medium: z.ZodMiniOptional<z.ZodMiniString<string>>;
@@ -93,7 +105,19 @@ declare const createTrackEventSchema: z.ZodMiniArray<z.ZodMiniObject<{
93
105
  }>>;
94
106
  fbc: z.ZodMiniOptional<z.ZodMiniString<string>>;
95
107
  fbp: z.ZodMiniOptional<z.ZodMiniString<string>>;
108
+ fbclid: z.ZodMiniOptional<z.ZodMiniString<string>>;
109
+ ad_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
110
+ ad_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
111
+ adset_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
112
+ adset_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
113
+ campaign_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
114
+ campaign_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
115
+ placement: z.ZodMiniOptional<z.ZodMiniString<string>>;
116
+ site_source_name: z.ZodMiniOptional<z.ZodMiniString<string>>;
96
117
  gclid: z.ZodMiniOptional<z.ZodMiniString<string>>;
118
+ gclsrc: z.ZodMiniOptional<z.ZodMiniString<string>>;
119
+ gad_source: z.ZodMiniOptional<z.ZodMiniString<string>>;
120
+ gad_campaignid: z.ZodMiniOptional<z.ZodMiniString<string>>;
97
121
  advertising_id: z.ZodMiniOptional<z.ZodMiniString<string>>;
98
122
  utm_source: z.ZodMiniOptional<z.ZodMiniString<string>>;
99
123
  utm_medium: z.ZodMiniOptional<z.ZodMiniString<string>>;
@@ -22,7 +22,7 @@ import {
22
22
  email,
23
23
  uuid,
24
24
  url
25
- } from "zod/v4-mini";
25
+ } from "zod/mini";
26
26
  var items = array(
27
27
  record(
28
28
  string().check(trim(), minLength(1), maxLength(128)),
@@ -59,10 +59,25 @@ var createTrackEventSchemaV1 = array(
59
59
  environment: optional(_enum(["development", "production"])),
60
60
  source_url: optional(string()),
61
61
  source: optional(_enum(["web", "app", "offline"])),
62
+ // meta ads
62
63
  fbc: optional(string()),
63
64
  fbp: optional(string()),
65
+ fbclid: optional(string()),
66
+ ad_id: optional(string()),
67
+ ad_name: optional(string()),
68
+ adset_id: optional(string()),
69
+ adset_name: optional(string()),
70
+ campaign_id: optional(string()),
71
+ campaign_name: optional(string()),
72
+ placement: optional(string()),
73
+ site_source_name: optional(string()),
74
+ // google ads
64
75
  gclid: optional(string()),
76
+ gclsrc: optional(string()),
77
+ gad_source: optional(string()),
78
+ gad_campaignid: optional(string()),
65
79
  advertising_id: optional(string()),
80
+ // utm params
66
81
  utm_source: optional(string()),
67
82
  utm_medium: optional(string()),
68
83
  utm_campaign: optional(string()),
@@ -107,10 +122,25 @@ var createTrackEventSchema = array(
107
122
  environment: optional(_enum(["development", "production"])),
108
123
  source_url: optional(string()),
109
124
  source: optional(_enum(["web", "app", "offline"])),
125
+ // meta ads
110
126
  fbc: optional(string()),
111
127
  fbp: optional(string()),
128
+ fbclid: optional(string()),
129
+ ad_id: optional(string()),
130
+ ad_name: optional(string()),
131
+ adset_id: optional(string()),
132
+ adset_name: optional(string()),
133
+ campaign_id: optional(string()),
134
+ campaign_name: optional(string()),
135
+ placement: optional(string()),
136
+ site_source_name: optional(string()),
137
+ // google ads
112
138
  gclid: optional(string()),
139
+ gclsrc: optional(string()),
140
+ gad_source: optional(string()),
141
+ gad_campaignid: optional(string()),
113
142
  advertising_id: optional(string()),
143
+ // utm params
114
144
  utm_source: optional(string()),
115
145
  utm_medium: optional(string()),
116
146
  utm_campaign: optional(string()),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema/index.ts"],"sourcesContent":["import {\n optional,\n object,\n string,\n regex,\n number,\n boolean,\n null as _null,\n coerce,\n enum as _enum,\n trim,\n union,\n record,\n array,\n iso,\n minLength,\n maxLength,\n refine,\n pipe,\n transform,\n email,\n type z,\n uuid,\n url,\n} from 'zod/v4-mini';\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\n/** @deprecated */\nexport const createTrackEventSchemaV1 = array(\n object({\n name: string().check(trim(), minLength(1), maxLength(64)),\n visitor_id: coerce.bigint(),\n timestamp: iso.datetime(),\n tags: 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: optional(_enum(['ios', 'android', 'web', 'macos', 'windows', 'linux', 'unknown'])),\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(string()),\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: optional(_enum(['development', 'production'])),\n source_url: optional(string()),\n source: optional(_enum(['web', 'app', 'offline'])),\n fbc: optional(string()),\n fbp: optional(string()),\n gclid: optional(string()),\n advertising_id: optional(string()),\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 }),\n properties: 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).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 timestamp: iso.datetime(),\n tags: 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: optional(_enum(['ios', 'android', 'web', 'macos', 'windows', 'linux', 'unknown'])),\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(string()),\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: optional(_enum(['development', 'production'])),\n source_url: optional(string()),\n source: optional(_enum(['web', 'app', 'offline'])),\n fbc: optional(string()),\n fbp: optional(string()),\n gclid: optional(string()),\n advertising_id: optional(string()),\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 }),\n properties: 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).check(minLength(1), maxLength(100));\n\nexport const createVisitorSchema = object({\n device_id: string().check(trim(), minLength(1), maxLength(36)),\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 updateVisitorSchema = object({\n user_id: optional(uuid()),\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\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(string().check(maxLength(256))),\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(string().check(maxLength(256))),\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(string().check(maxLength(256))),\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(string().check(maxLength(256))),\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(string().check(maxLength(256))),\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(string().check(maxLength(256))),\n});\n\nexport type CreateFeedbackDTO = z.output<typeof createFeedbackSchema>;\nexport type CreateLinkDTO = z.output<typeof createLinkSchema>;\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/schema/index.ts"],"sourcesContent":["import {\n optional,\n object,\n string,\n regex,\n number,\n boolean,\n null as _null,\n coerce,\n enum as _enum,\n trim,\n union,\n record,\n array,\n iso,\n minLength,\n maxLength,\n refine,\n pipe,\n transform,\n email,\n type z,\n uuid,\n url,\n} from 'zod/mini';\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\n/** @deprecated */\nexport const createTrackEventSchemaV1 = array(\n object({\n name: string().check(trim(), minLength(1), maxLength(64)),\n visitor_id: coerce.bigint(),\n timestamp: iso.datetime(),\n tags: 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: optional(_enum(['ios', 'android', 'web', 'macos', 'windows', 'linux', 'unknown'])),\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(string()),\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: optional(_enum(['development', 'production'])),\n source_url: optional(string()),\n source: optional(_enum(['web', 'app', 'offline'])),\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 advertising_id: 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 }),\n properties: 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).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 timestamp: iso.datetime(),\n tags: 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: optional(_enum(['ios', 'android', 'web', 'macos', 'windows', 'linux', 'unknown'])),\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(string()),\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: optional(_enum(['development', 'production'])),\n source_url: optional(string()),\n source: optional(_enum(['web', 'app', 'offline'])),\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 advertising_id: 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 }),\n properties: 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).check(minLength(1), maxLength(100));\n\nexport const createVisitorSchema = object({\n device_id: string().check(trim(), minLength(1), maxLength(36)),\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 updateVisitorSchema = object({\n user_id: optional(uuid()),\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\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(string().check(maxLength(256))),\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(string().check(maxLength(256))),\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(string().check(maxLength(256))),\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(string().check(maxLength(256))),\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(string().check(maxLength(256))),\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(string().check(maxLength(256))),\n});\n\nexport type CreateFeedbackDTO = z.output<typeof createFeedbackSchema>;\nexport type CreateLinkDTO = z.output<typeof createLinkSchema>;\n"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/track/types.ts"],"sourcesContent":["import type { StandardEvents, UserProvidedData as GAUserProvidedData } from './gtag';\n\nexport type AllowedPropertyValues = string | number | boolean | null;\nexport type EventName = Lowercase<string> | 'CLS' | 'FCP' | 'INP' | 'LCP' | 'TTFB';\n\nexport type TrackName<T extends EventName = EventName> = T extends keyof StandardEvents\n ? T\n : EventName;\nexport type TrackProperties<T extends EventName = EventName> = T extends keyof StandardEvents\n ? StandardEvents[T]\n : Record<Lowercase<string>, AllowedPropertyValues>;\n\nexport interface UserData {\n userId: string;\n email?: string;\n firstName?: string;\n lastName?: string;\n phone?: string;\n dateOfBirth?: string;\n gender?: string;\n city?: string;\n state?: string;\n postal?: string;\n country?: string;\n}\n\nexport interface UserProvidedData extends GAUserProvidedData {\n user_id?: string;\n ip_address?: string;\n user_agent?: string;\n gender?: 'female' | 'male';\n birthday?: { year: number; month: number; day: number };\n // meta specific\n fb_login_id?: string;\n fb_page_id?: string;\n}\n\nexport type ThirdPartyTracker = <T extends EventName>(\n name: TrackName<T>,\n properties?: TrackProperties<T>,\n event_id?: string\n) => void;\n\nexport interface PlatformInfo {\n os?: string;\n os_name?: string;\n os_version?: string;\n browser?: string;\n browser_name?: string;\n browser_version?: string;\n platform?: 'ios' | 'android' | 'web' | 'macos' | 'windows' | 'linux' | 'unknown';\n}\n\nexport interface DeviceInfo {\n device?: string;\n device_id?: string;\n device_type?: string;\n device_vendor?: string;\n device_model_id?: string;\n device_pixel_ratio?: string;\n screen_width?: number;\n screen_height?: number;\n screen_resolution?: `${number}x${number}`;\n}\n\nexport interface AppInfo {\n install_referrer?: string;\n}\n\nexport interface EnvironmentInfo {\n release?: string;\n language?: string;\n time_zone?: string | null;\n environment?: 'development' | 'production';\n}\n\nexport interface SourceInfo {\n source_url?: string;\n source?: 'app' | 'web' | 'offline';\n}\n\nexport interface AdvertisingInfo {\n /**\n * Meta pixel fields\n * ref: https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/customer-information-parameters#fbc\n * Stored in the _fbc/_fbp browser cookie under your domain\n */\n fbc?: string;\n fbp?: string;\n /**\n * Google Analytics fields\n */\n gclid?: string;\n /** iOS: IDFA, Android: Android Advertising ID */\n advertising_id?: string;\n}\n\nexport interface UTMParams {\n utm_source?: string;\n utm_medium?: string;\n utm_campaign?: string;\n utm_term?: string;\n utm_content?: string;\n}\n\nexport interface TrackTags\n extends PlatformInfo,\n DeviceInfo,\n AppInfo,\n EnvironmentInfo,\n SourceInfo,\n AdvertisingInfo,\n UTMParams {\n idempotency_key?: string;\n [key: string]: string | number | boolean | null | undefined;\n}\n\nexport type CreateTrackEventDTO<T extends EventName = EventName> = {\n name: TrackName<T>;\n tags: TrackTags;\n visitor_id: string;\n properties?: TrackProperties<T>;\n timestamp: string;\n}[];\n\nexport interface TrackEvent<T extends EventName = EventName> {\n id: string;\n name: TrackName<T>;\n tags: TrackTags;\n visitor_id: string;\n properties?: TrackProperties<T>;\n created_at: string;\n}\n\nexport type TrackEventResponse = {\n /**\n * track event id\n * some tracking system will use event_id and event_name for deduplication\n * */\n id: string;\n}[];\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../src/track/types.ts"],"sourcesContent":["import type { StandardEvents, UserProvidedData as GAUserProvidedData } from './gtag';\n\nexport type AllowedPropertyValues = string | number | boolean | null;\nexport type EventName = Lowercase<string> | 'CLS' | 'FCP' | 'INP' | 'LCP' | 'TTFB';\n\nexport type TrackName<T extends EventName = EventName> = T extends keyof StandardEvents\n ? T\n : EventName;\nexport type TrackProperties<T extends EventName = EventName> = T extends keyof StandardEvents\n ? StandardEvents[T]\n : Record<Lowercase<string>, AllowedPropertyValues>;\n\nexport interface UserData {\n userId: string;\n email?: string;\n firstName?: string;\n lastName?: string;\n phone?: string;\n dateOfBirth?: string;\n gender?: string;\n city?: string;\n state?: string;\n postal?: string;\n country?: string;\n}\n\nexport interface UserProvidedData extends GAUserProvidedData {\n user_id?: string;\n ip_address?: string;\n user_agent?: string;\n gender?: 'female' | 'male';\n birthday?: { year: number; month: number; day: number };\n // meta specific\n fb_login_id?: string;\n fb_page_id?: string;\n}\n\nexport type ThirdPartyTracker = <T extends EventName>(\n name: TrackName<T>,\n properties?: TrackProperties<T>,\n event_id?: string\n) => void;\n\nexport interface PlatformInfo {\n os?: string;\n os_name?: string;\n os_version?: string;\n browser?: string;\n browser_name?: string;\n browser_version?: string;\n platform?: 'ios' | 'android' | 'web' | 'macos' | 'windows' | 'linux' | 'unknown';\n}\n\nexport interface DeviceInfo {\n device?: string;\n device_id?: string;\n device_type?: string;\n device_vendor?: string;\n device_model_id?: string;\n device_pixel_ratio?: string;\n screen_width?: number;\n screen_height?: number;\n screen_resolution?: `${number}x${number}`;\n}\n\nexport interface AppInfo {\n install_referrer?: string;\n}\n\nexport interface EnvironmentInfo {\n release?: string;\n language?: string;\n time_zone?: string | null;\n environment?: 'development' | 'production';\n}\n\nexport interface SourceInfo {\n source_url?: string;\n source?: 'app' | 'web' | 'offline';\n}\n\nexport interface AdvertisingInfo {\n /**\n * Meta pixel fields\n * ref: https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/customer-information-parameters#fbc\n * Stored in the _fbc/_fbp browser cookie under your domain\n * ref: https://www.facebook.com/business/help/2360940870872492?checkpoint_src=any\n */\n fbc?: string;\n fbp?: string;\n fbclid?: string;\n ad_id?: string;\n ad_name?: string;\n adset_id?: string;\n adset_name?: string;\n campaign_id?: string;\n campaign_name?: string;\n placement?: string;\n site_source_name?: string;\n /**\n * Google Analytics fields\n */\n gclid?: string;\n gclsrc?: string;\n gad_source?: string;\n gad_campaignid?: string;\n /** iOS: IDFA, Android: Android Advertising ID */\n advertising_id?: string;\n}\n\nexport interface UTMParams {\n utm_source?: string;\n utm_medium?: string;\n utm_campaign?: string;\n utm_term?: string;\n utm_content?: string;\n}\n\nexport interface TrackTags\n extends PlatformInfo,\n DeviceInfo,\n AppInfo,\n EnvironmentInfo,\n SourceInfo,\n AdvertisingInfo,\n UTMParams {\n idempotency_key?: string;\n [key: string]: string | number | boolean | null | undefined;\n}\n\nexport type CreateTrackEventDTO<T extends EventName = EventName> = {\n name: TrackName<T>;\n tags: TrackTags;\n visitor_id: string;\n properties?: TrackProperties<T>;\n timestamp: string;\n}[];\n\nexport interface TrackEvent<T extends EventName = EventName> {\n id: string;\n name: TrackName<T>;\n tags: TrackTags;\n visitor_id: string;\n properties?: TrackProperties<T>;\n created_at: string;\n}\n\nexport type TrackEventResponse = {\n /**\n * track event id\n * some tracking system will use event_id and event_name for deduplication\n * */\n id: string;\n}[];\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -69,13 +69,26 @@ interface AdvertisingInfo {
69
69
  * Meta pixel fields
70
70
  * ref: https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/customer-information-parameters#fbc
71
71
  * Stored in the _fbc/_fbp browser cookie under your domain
72
+ * ref: https://www.facebook.com/business/help/2360940870872492?checkpoint_src=any
72
73
  */
73
74
  fbc?: string;
74
75
  fbp?: string;
76
+ fbclid?: string;
77
+ ad_id?: string;
78
+ ad_name?: string;
79
+ adset_id?: string;
80
+ adset_name?: string;
81
+ campaign_id?: string;
82
+ campaign_name?: string;
83
+ placement?: string;
84
+ site_source_name?: string;
75
85
  /**
76
86
  * Google Analytics fields
77
87
  */
78
88
  gclid?: string;
89
+ gclsrc?: string;
90
+ gad_source?: string;
91
+ gad_campaignid?: string;
79
92
  /** iOS: IDFA, Android: Android Advertising ID */
80
93
  advertising_id?: string;
81
94
  }
@@ -69,13 +69,26 @@ interface AdvertisingInfo {
69
69
  * Meta pixel fields
70
70
  * ref: https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/customer-information-parameters#fbc
71
71
  * Stored in the _fbc/_fbp browser cookie under your domain
72
+ * ref: https://www.facebook.com/business/help/2360940870872492?checkpoint_src=any
72
73
  */
73
74
  fbc?: string;
74
75
  fbp?: string;
76
+ fbclid?: string;
77
+ ad_id?: string;
78
+ ad_name?: string;
79
+ adset_id?: string;
80
+ adset_name?: string;
81
+ campaign_id?: string;
82
+ campaign_name?: string;
83
+ placement?: string;
84
+ site_source_name?: string;
75
85
  /**
76
86
  * Google Analytics fields
77
87
  */
78
88
  gclid?: string;
89
+ gclsrc?: string;
90
+ gad_source?: string;
91
+ gad_campaignid?: string;
79
92
  /** iOS: IDFA, Android: Android Advertising ID */
80
93
  advertising_id?: string;
81
94
  }
@@ -38,6 +38,7 @@ module.exports = __toCommonJS(web_exports);
38
38
  var import_bowser = __toESM(require("bowser"), 1);
39
39
  var cookie = __toESM(require("cookie"), 1);
40
40
  var import_uuid = require("uuid");
41
+ var import_link = require("../link/index.cjs");
41
42
  function getDeviceId() {
42
43
  const cached = localStorage.getItem("device_id");
43
44
  if (cached) return cached;
@@ -45,13 +46,15 @@ function getDeviceId() {
45
46
  localStorage.setItem("device_id", id);
46
47
  return id;
47
48
  }
48
- function getTags(release) {
49
+ async function getTags(release) {
49
50
  const parser = import_bowser.default.getParser(window.navigator.userAgent);
50
51
  const params = new URLSearchParams(window.location.search);
51
52
  const os = parser.getOS();
52
53
  const browser = parser.getBrowser();
53
54
  const platform = parser.getPlatform();
54
55
  const parsed = cookie.parse(document.cookie);
56
+ let link = null;
57
+ if (params.has("s")) link = await (0, import_link.getLink)(params.get("s"));
55
58
  const tags = {
56
59
  os: `${os.name} ${os.version}`,
57
60
  os_name: os.name,
@@ -74,14 +77,29 @@ function getTags(release) {
74
77
  environment: process.env.NODE_ENV === "development" ? "development" : "production",
75
78
  source: "web",
76
79
  source_url: window.location.origin + window.location.pathname,
80
+ // meta ads
77
81
  fbc: parsed._fbc,
78
82
  fbp: parsed._fbp,
83
+ fbclid: params.get("fbclid") ?? void 0,
84
+ ad_id: params.get("ad_id") ?? void 0,
85
+ ad_name: params.get("ad_name") ?? void 0,
86
+ adset_id: params.get("adset_id") ?? void 0,
87
+ adset_name: params.get("adset_name") ?? void 0,
88
+ campaign_id: params.get("campaign_id") ?? void 0,
89
+ campaign_name: params.get("campaign_name") ?? void 0,
90
+ placement: params.get("placement") ?? void 0,
91
+ site_source_name: params.get("site_source_name") ?? void 0,
92
+ // google ads
79
93
  gclid: params.get("gclid") ?? void 0,
80
- utm_source: params.get("utm_source") ?? void 0,
81
- utm_medium: params.get("utm_medium") ?? void 0,
82
- utm_campaign: params.get("utm_campaign") ?? void 0,
83
- utm_term: params.get("utm_term") ?? void 0,
84
- utm_content: params.get("utm_content") ?? void 0
94
+ gclsrc: params.get("gclsrc") ?? void 0,
95
+ gad_source: params.get("gad_source") ?? void 0,
96
+ gad_campaignid: params.get("gad_campaignid") ?? void 0,
97
+ // utm params
98
+ utm_source: (link == null ? void 0 : link.utm_source) ?? params.get("utm_source") ?? void 0,
99
+ utm_medium: (link == null ? void 0 : link.utm_medium) ?? params.get("utm_medium") ?? void 0,
100
+ utm_campaign: (link == null ? void 0 : link.utm_campaign) ?? params.get("utm_campaign") ?? void 0,
101
+ utm_term: (link == null ? void 0 : link.utm_term) ?? params.get("utm_term") ?? void 0,
102
+ utm_content: (link == null ? void 0 : link.utm_content) ?? params.get("utm_content") ?? void 0
85
103
  };
86
104
  return tags;
87
105
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/web/index.ts"],"sourcesContent":["import Bowser from 'bowser';\nimport * as cookie from 'cookie';\nimport { v4 as uuidv4 } from 'uuid';\nimport type { Storage } from '../setup/index';\nimport type { TrackTags } from '../track/types';\n\nexport function getDeviceId() {\n const cached = localStorage.getItem('device_id');\n if (cached) return cached;\n const id = crypto?.randomUUID ? crypto.randomUUID() : uuidv4();\n localStorage.setItem('device_id', id);\n return id;\n}\n\nexport function getTags(release: string) {\n const parser = Bowser.getParser(window.navigator.userAgent);\n const params = new URLSearchParams(window.location.search);\n const os = parser.getOS();\n const browser = parser.getBrowser();\n const platform = parser.getPlatform();\n const parsed = cookie.parse(document.cookie);\n const tags: TrackTags = {\n os: `${os.name} ${os.version}`,\n os_name: os.name,\n os_version: os.version,\n browser: `${browser.name} ${browser.version}`,\n browser_name: browser.name,\n browser_version: browser.version,\n platform: 'web',\n device: platform.model,\n device_id: getDeviceId(),\n device_type: platform.type,\n device_vendor: platform.vendor,\n device_pixel_ratio: `${window.devicePixelRatio}`,\n screen_width: window.screen.width,\n screen_height: window.screen.height,\n screen_resolution: `${window.screen.width}x${window.screen.height}`,\n release,\n language: navigator.language,\n time_zone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n environment: process.env.NODE_ENV === 'development' ? 'development' : 'production',\n source: 'web',\n source_url: window.location.origin + window.location.pathname,\n fbc: parsed._fbc,\n fbp: parsed._fbp,\n gclid: params.get('gclid') ?? undefined,\n utm_source: params.get('utm_source') ?? undefined,\n utm_medium: params.get('utm_medium') ?? undefined,\n utm_campaign: params.get('utm_campaign') ?? undefined,\n utm_term: params.get('utm_term') ?? undefined,\n utm_content: params.get('utm_content') ?? undefined,\n };\n return tags;\n}\n\nexport const storage: Storage = {\n getItem: (key) => localStorage.getItem(key),\n setItem: (key, value) => localStorage.setItem(key, value),\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAmB;AACnB,aAAwB;AACxB,kBAA6B;AAItB,SAAS,cAAc;AAC5B,QAAM,SAAS,aAAa,QAAQ,WAAW;AAC/C,MAAI,OAAQ,QAAO;AACnB,QAAM,MAAK,iCAAQ,cAAa,OAAO,WAAW,QAAI,YAAAA,IAAO;AAC7D,eAAa,QAAQ,aAAa,EAAE;AACpC,SAAO;AACT;AAEO,SAAS,QAAQ,SAAiB;AACvC,QAAM,SAAS,cAAAC,QAAO,UAAU,OAAO,UAAU,SAAS;AAC1D,QAAM,SAAS,IAAI,gBAAgB,OAAO,SAAS,MAAM;AACzD,QAAM,KAAK,OAAO,MAAM;AACxB,QAAM,UAAU,OAAO,WAAW;AAClC,QAAM,WAAW,OAAO,YAAY;AACpC,QAAM,SAAgB,aAAM,SAAS,MAAM;AAC3C,QAAM,OAAkB;AAAA,IACtB,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,OAAO;AAAA,IAC5B,SAAS,GAAG;AAAA,IACZ,YAAY,GAAG;AAAA,IACf,SAAS,GAAG,QAAQ,IAAI,IAAI,QAAQ,OAAO;AAAA,IAC3C,cAAc,QAAQ;AAAA,IACtB,iBAAiB,QAAQ;AAAA,IACzB,UAAU;AAAA,IACV,QAAQ,SAAS;AAAA,IACjB,WAAW,YAAY;AAAA,IACvB,aAAa,SAAS;AAAA,IACtB,eAAe,SAAS;AAAA,IACxB,oBAAoB,GAAG,OAAO,gBAAgB;AAAA,IAC9C,cAAc,OAAO,OAAO;AAAA,IAC5B,eAAe,OAAO,OAAO;AAAA,IAC7B,mBAAmB,GAAG,OAAO,OAAO,KAAK,IAAI,OAAO,OAAO,MAAM;AAAA,IACjE;AAAA,IACA,UAAU,UAAU;AAAA,IACpB,WAAW,KAAK,eAAe,EAAE,gBAAgB,EAAE;AAAA,IACnD,aAAa,QAAQ,IAAI,aAAa,gBAAgB,gBAAgB;AAAA,IACtE,QAAQ;AAAA,IACR,YAAY,OAAO,SAAS,SAAS,OAAO,SAAS;AAAA,IACrD,KAAK,OAAO;AAAA,IACZ,KAAK,OAAO;AAAA,IACZ,OAAO,OAAO,IAAI,OAAO,KAAK;AAAA,IAC9B,YAAY,OAAO,IAAI,YAAY,KAAK;AAAA,IACxC,YAAY,OAAO,IAAI,YAAY,KAAK;AAAA,IACxC,cAAc,OAAO,IAAI,cAAc,KAAK;AAAA,IAC5C,UAAU,OAAO,IAAI,UAAU,KAAK;AAAA,IACpC,aAAa,OAAO,IAAI,aAAa,KAAK;AAAA,EAC5C;AACA,SAAO;AACT;AAEO,IAAM,UAAmB;AAAA,EAC9B,SAAS,CAAC,QAAQ,aAAa,QAAQ,GAAG;AAAA,EAC1C,SAAS,CAAC,KAAK,UAAU,aAAa,QAAQ,KAAK,KAAK;AAC1D;","names":["uuidv4","Bowser"]}
1
+ {"version":3,"sources":["../../src/web/index.ts"],"sourcesContent":["import Bowser from 'bowser';\nimport * as cookie from 'cookie';\nimport { v4 as uuidv4 } from 'uuid';\nimport { getLink, type Link } from '../link/index';\nimport type { Storage } from '../setup/index';\nimport type { TrackTags } from '../track/types';\n\nexport function getDeviceId() {\n const cached = localStorage.getItem('device_id');\n if (cached) return cached;\n const id = crypto?.randomUUID ? crypto.randomUUID() : uuidv4();\n localStorage.setItem('device_id', id);\n return id;\n}\n\nexport async function getTags(release: string) {\n const parser = Bowser.getParser(window.navigator.userAgent);\n const params = new URLSearchParams(window.location.search);\n const os = parser.getOS();\n const browser = parser.getBrowser();\n const platform = parser.getPlatform();\n const parsed = cookie.parse(document.cookie);\n\n let link: Link | null = null;\n if (params.has('s')) link = await getLink(params.get('s')!);\n\n const tags: TrackTags = {\n os: `${os.name} ${os.version}`,\n os_name: os.name,\n os_version: os.version,\n browser: `${browser.name} ${browser.version}`,\n browser_name: browser.name,\n browser_version: browser.version,\n platform: 'web',\n device: platform.model,\n device_id: getDeviceId(),\n device_type: platform.type,\n device_vendor: platform.vendor,\n device_pixel_ratio: `${window.devicePixelRatio}`,\n screen_width: window.screen.width,\n screen_height: window.screen.height,\n screen_resolution: `${window.screen.width}x${window.screen.height}`,\n release,\n language: navigator.language,\n time_zone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n environment: process.env.NODE_ENV === 'development' ? 'development' : 'production',\n source: 'web',\n source_url: window.location.origin + window.location.pathname,\n // meta ads\n fbc: parsed._fbc,\n fbp: parsed._fbp,\n fbclid: params.get('fbclid') ?? undefined,\n ad_id: params.get('ad_id') ?? undefined,\n ad_name: params.get('ad_name') ?? undefined,\n adset_id: params.get('adset_id') ?? undefined,\n adset_name: params.get('adset_name') ?? undefined,\n campaign_id: params.get('campaign_id') ?? undefined,\n campaign_name: params.get('campaign_name') ?? undefined,\n placement: params.get('placement') ?? undefined,\n site_source_name: params.get('site_source_name') ?? undefined,\n // google ads\n gclid: params.get('gclid') ?? undefined,\n gclsrc: params.get('gclsrc') ?? undefined,\n gad_source: params.get('gad_source') ?? undefined,\n gad_campaignid: params.get('gad_campaignid') ?? undefined,\n // utm params\n utm_source: link?.utm_source ?? params.get('utm_source') ?? undefined,\n utm_medium: link?.utm_medium ?? params.get('utm_medium') ?? undefined,\n utm_campaign: link?.utm_campaign ?? params.get('utm_campaign') ?? undefined,\n utm_term: link?.utm_term ?? params.get('utm_term') ?? undefined,\n utm_content: link?.utm_content ?? params.get('utm_content') ?? undefined,\n };\n return tags;\n}\n\nexport const storage: Storage = {\n getItem: (key) => localStorage.getItem(key),\n setItem: (key, value) => localStorage.setItem(key, value),\n};\n"],"mappings":"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","names":["uuidv4","Bowser"]}
@@ -5,7 +5,7 @@ import '../visitor/types.cjs';
5
5
  import '../track/gtag.cjs';
6
6
 
7
7
  declare function getDeviceId(): string;
8
- declare function getTags(release: string): TrackTags;
8
+ declare function getTags(release: string): Promise<TrackTags>;
9
9
  declare const storage: Storage;
10
10
 
11
11
  export { getDeviceId, getTags, storage };
@@ -5,7 +5,7 @@ import '../visitor/types.js';
5
5
  import '../track/gtag.js';
6
6
 
7
7
  declare function getDeviceId(): string;
8
- declare function getTags(release: string): TrackTags;
8
+ declare function getTags(release: string): Promise<TrackTags>;
9
9
  declare const storage: Storage;
10
10
 
11
11
  export { getDeviceId, getTags, storage };
@@ -2,6 +2,7 @@
2
2
  import Bowser from "bowser";
3
3
  import * as cookie from "cookie";
4
4
  import { v4 as uuidv4 } from "uuid";
5
+ import { getLink } from "../link/index.mjs";
5
6
  function getDeviceId() {
6
7
  const cached = localStorage.getItem("device_id");
7
8
  if (cached) return cached;
@@ -9,13 +10,15 @@ function getDeviceId() {
9
10
  localStorage.setItem("device_id", id);
10
11
  return id;
11
12
  }
12
- function getTags(release) {
13
+ async function getTags(release) {
13
14
  const parser = Bowser.getParser(window.navigator.userAgent);
14
15
  const params = new URLSearchParams(window.location.search);
15
16
  const os = parser.getOS();
16
17
  const browser = parser.getBrowser();
17
18
  const platform = parser.getPlatform();
18
19
  const parsed = cookie.parse(document.cookie);
20
+ let link = null;
21
+ if (params.has("s")) link = await getLink(params.get("s"));
19
22
  const tags = {
20
23
  os: `${os.name} ${os.version}`,
21
24
  os_name: os.name,
@@ -38,14 +41,29 @@ function getTags(release) {
38
41
  environment: process.env.NODE_ENV === "development" ? "development" : "production",
39
42
  source: "web",
40
43
  source_url: window.location.origin + window.location.pathname,
44
+ // meta ads
41
45
  fbc: parsed._fbc,
42
46
  fbp: parsed._fbp,
47
+ fbclid: params.get("fbclid") ?? void 0,
48
+ ad_id: params.get("ad_id") ?? void 0,
49
+ ad_name: params.get("ad_name") ?? void 0,
50
+ adset_id: params.get("adset_id") ?? void 0,
51
+ adset_name: params.get("adset_name") ?? void 0,
52
+ campaign_id: params.get("campaign_id") ?? void 0,
53
+ campaign_name: params.get("campaign_name") ?? void 0,
54
+ placement: params.get("placement") ?? void 0,
55
+ site_source_name: params.get("site_source_name") ?? void 0,
56
+ // google ads
43
57
  gclid: params.get("gclid") ?? void 0,
44
- utm_source: params.get("utm_source") ?? void 0,
45
- utm_medium: params.get("utm_medium") ?? void 0,
46
- utm_campaign: params.get("utm_campaign") ?? void 0,
47
- utm_term: params.get("utm_term") ?? void 0,
48
- utm_content: params.get("utm_content") ?? void 0
58
+ gclsrc: params.get("gclsrc") ?? void 0,
59
+ gad_source: params.get("gad_source") ?? void 0,
60
+ gad_campaignid: params.get("gad_campaignid") ?? void 0,
61
+ // utm params
62
+ utm_source: (link == null ? void 0 : link.utm_source) ?? params.get("utm_source") ?? void 0,
63
+ utm_medium: (link == null ? void 0 : link.utm_medium) ?? params.get("utm_medium") ?? void 0,
64
+ utm_campaign: (link == null ? void 0 : link.utm_campaign) ?? params.get("utm_campaign") ?? void 0,
65
+ utm_term: (link == null ? void 0 : link.utm_term) ?? params.get("utm_term") ?? void 0,
66
+ utm_content: (link == null ? void 0 : link.utm_content) ?? params.get("utm_content") ?? void 0
49
67
  };
50
68
  return tags;
51
69
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/web/index.ts"],"sourcesContent":["import Bowser from 'bowser';\nimport * as cookie from 'cookie';\nimport { v4 as uuidv4 } from 'uuid';\nimport type { Storage } from '../setup/index';\nimport type { TrackTags } from '../track/types';\n\nexport function getDeviceId() {\n const cached = localStorage.getItem('device_id');\n if (cached) return cached;\n const id = crypto?.randomUUID ? crypto.randomUUID() : uuidv4();\n localStorage.setItem('device_id', id);\n return id;\n}\n\nexport function getTags(release: string) {\n const parser = Bowser.getParser(window.navigator.userAgent);\n const params = new URLSearchParams(window.location.search);\n const os = parser.getOS();\n const browser = parser.getBrowser();\n const platform = parser.getPlatform();\n const parsed = cookie.parse(document.cookie);\n const tags: TrackTags = {\n os: `${os.name} ${os.version}`,\n os_name: os.name,\n os_version: os.version,\n browser: `${browser.name} ${browser.version}`,\n browser_name: browser.name,\n browser_version: browser.version,\n platform: 'web',\n device: platform.model,\n device_id: getDeviceId(),\n device_type: platform.type,\n device_vendor: platform.vendor,\n device_pixel_ratio: `${window.devicePixelRatio}`,\n screen_width: window.screen.width,\n screen_height: window.screen.height,\n screen_resolution: `${window.screen.width}x${window.screen.height}`,\n release,\n language: navigator.language,\n time_zone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n environment: process.env.NODE_ENV === 'development' ? 'development' : 'production',\n source: 'web',\n source_url: window.location.origin + window.location.pathname,\n fbc: parsed._fbc,\n fbp: parsed._fbp,\n gclid: params.get('gclid') ?? undefined,\n utm_source: params.get('utm_source') ?? undefined,\n utm_medium: params.get('utm_medium') ?? undefined,\n utm_campaign: params.get('utm_campaign') ?? undefined,\n utm_term: params.get('utm_term') ?? undefined,\n utm_content: params.get('utm_content') ?? undefined,\n };\n return tags;\n}\n\nexport const storage: Storage = {\n getItem: (key) => localStorage.getItem(key),\n setItem: (key, value) => localStorage.setItem(key, value),\n};\n"],"mappings":";AAAA,OAAO,YAAY;AACnB,YAAY,YAAY;AACxB,SAAS,MAAM,cAAc;AAItB,SAAS,cAAc;AAC5B,QAAM,SAAS,aAAa,QAAQ,WAAW;AAC/C,MAAI,OAAQ,QAAO;AACnB,QAAM,MAAK,iCAAQ,cAAa,OAAO,WAAW,IAAI,OAAO;AAC7D,eAAa,QAAQ,aAAa,EAAE;AACpC,SAAO;AACT;AAEO,SAAS,QAAQ,SAAiB;AACvC,QAAM,SAAS,OAAO,UAAU,OAAO,UAAU,SAAS;AAC1D,QAAM,SAAS,IAAI,gBAAgB,OAAO,SAAS,MAAM;AACzD,QAAM,KAAK,OAAO,MAAM;AACxB,QAAM,UAAU,OAAO,WAAW;AAClC,QAAM,WAAW,OAAO,YAAY;AACpC,QAAM,SAAgB,aAAM,SAAS,MAAM;AAC3C,QAAM,OAAkB;AAAA,IACtB,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,OAAO;AAAA,IAC5B,SAAS,GAAG;AAAA,IACZ,YAAY,GAAG;AAAA,IACf,SAAS,GAAG,QAAQ,IAAI,IAAI,QAAQ,OAAO;AAAA,IAC3C,cAAc,QAAQ;AAAA,IACtB,iBAAiB,QAAQ;AAAA,IACzB,UAAU;AAAA,IACV,QAAQ,SAAS;AAAA,IACjB,WAAW,YAAY;AAAA,IACvB,aAAa,SAAS;AAAA,IACtB,eAAe,SAAS;AAAA,IACxB,oBAAoB,GAAG,OAAO,gBAAgB;AAAA,IAC9C,cAAc,OAAO,OAAO;AAAA,IAC5B,eAAe,OAAO,OAAO;AAAA,IAC7B,mBAAmB,GAAG,OAAO,OAAO,KAAK,IAAI,OAAO,OAAO,MAAM;AAAA,IACjE;AAAA,IACA,UAAU,UAAU;AAAA,IACpB,WAAW,KAAK,eAAe,EAAE,gBAAgB,EAAE;AAAA,IACnD,aAAa,QAAQ,IAAI,aAAa,gBAAgB,gBAAgB;AAAA,IACtE,QAAQ;AAAA,IACR,YAAY,OAAO,SAAS,SAAS,OAAO,SAAS;AAAA,IACrD,KAAK,OAAO;AAAA,IACZ,KAAK,OAAO;AAAA,IACZ,OAAO,OAAO,IAAI,OAAO,KAAK;AAAA,IAC9B,YAAY,OAAO,IAAI,YAAY,KAAK;AAAA,IACxC,YAAY,OAAO,IAAI,YAAY,KAAK;AAAA,IACxC,cAAc,OAAO,IAAI,cAAc,KAAK;AAAA,IAC5C,UAAU,OAAO,IAAI,UAAU,KAAK;AAAA,IACpC,aAAa,OAAO,IAAI,aAAa,KAAK;AAAA,EAC5C;AACA,SAAO;AACT;AAEO,IAAM,UAAmB;AAAA,EAC9B,SAAS,CAAC,QAAQ,aAAa,QAAQ,GAAG;AAAA,EAC1C,SAAS,CAAC,KAAK,UAAU,aAAa,QAAQ,KAAK,KAAK;AAC1D;","names":[]}
1
+ {"version":3,"sources":["../../src/web/index.ts"],"sourcesContent":["import Bowser from 'bowser';\nimport * as cookie from 'cookie';\nimport { v4 as uuidv4 } from 'uuid';\nimport { getLink, type Link } from '../link/index';\nimport type { Storage } from '../setup/index';\nimport type { TrackTags } from '../track/types';\n\nexport function getDeviceId() {\n const cached = localStorage.getItem('device_id');\n if (cached) return cached;\n const id = crypto?.randomUUID ? crypto.randomUUID() : uuidv4();\n localStorage.setItem('device_id', id);\n return id;\n}\n\nexport async function getTags(release: string) {\n const parser = Bowser.getParser(window.navigator.userAgent);\n const params = new URLSearchParams(window.location.search);\n const os = parser.getOS();\n const browser = parser.getBrowser();\n const platform = parser.getPlatform();\n const parsed = cookie.parse(document.cookie);\n\n let link: Link | null = null;\n if (params.has('s')) link = await getLink(params.get('s')!);\n\n const tags: TrackTags = {\n os: `${os.name} ${os.version}`,\n os_name: os.name,\n os_version: os.version,\n browser: `${browser.name} ${browser.version}`,\n browser_name: browser.name,\n browser_version: browser.version,\n platform: 'web',\n device: platform.model,\n device_id: getDeviceId(),\n device_type: platform.type,\n device_vendor: platform.vendor,\n device_pixel_ratio: `${window.devicePixelRatio}`,\n screen_width: window.screen.width,\n screen_height: window.screen.height,\n screen_resolution: `${window.screen.width}x${window.screen.height}`,\n release,\n language: navigator.language,\n time_zone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n environment: process.env.NODE_ENV === 'development' ? 'development' : 'production',\n source: 'web',\n source_url: window.location.origin + window.location.pathname,\n // meta ads\n fbc: parsed._fbc,\n fbp: parsed._fbp,\n fbclid: params.get('fbclid') ?? undefined,\n ad_id: params.get('ad_id') ?? undefined,\n ad_name: params.get('ad_name') ?? undefined,\n adset_id: params.get('adset_id') ?? undefined,\n adset_name: params.get('adset_name') ?? undefined,\n campaign_id: params.get('campaign_id') ?? undefined,\n campaign_name: params.get('campaign_name') ?? undefined,\n placement: params.get('placement') ?? undefined,\n site_source_name: params.get('site_source_name') ?? undefined,\n // google ads\n gclid: params.get('gclid') ?? undefined,\n gclsrc: params.get('gclsrc') ?? undefined,\n gad_source: params.get('gad_source') ?? undefined,\n gad_campaignid: params.get('gad_campaignid') ?? undefined,\n // utm params\n utm_source: link?.utm_source ?? params.get('utm_source') ?? undefined,\n utm_medium: link?.utm_medium ?? params.get('utm_medium') ?? undefined,\n utm_campaign: link?.utm_campaign ?? params.get('utm_campaign') ?? undefined,\n utm_term: link?.utm_term ?? params.get('utm_term') ?? undefined,\n utm_content: link?.utm_content ?? params.get('utm_content') ?? undefined,\n };\n return tags;\n}\n\nexport const storage: Storage = {\n getItem: (key) => localStorage.getItem(key),\n setItem: (key, value) => localStorage.setItem(key, value),\n};\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shware/analytics",
3
- "version": "2.1.6",
3
+ "version": "2.2.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "scripts": {
@@ -57,13 +57,13 @@
57
57
  "cookie": "^1.0.2",
58
58
  "uuid": "^11.1.0",
59
59
  "web-vitals": "^5.0.3",
60
- "zod": "^3.25.76"
60
+ "zod": "^4.0.5"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@repo/eslint-config": "workspace:*",
64
64
  "@repo/typescript-config": "workspace:*",
65
65
  "@types/facebook-nodejs-business-sdk": "^22.0.0",
66
- "@types/node": "^24.0.12",
66
+ "@types/node": "^24.0.13",
67
67
  "@types/react": "^19.1.8",
68
68
  "typescript": "^5.8.3"
69
69
  },