@od-oneapp/analytics 2026.1.1301
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +509 -0
- package/dist/ai-YMnynb-t.mjs +3347 -0
- package/dist/ai-YMnynb-t.mjs.map +1 -0
- package/dist/chunk-DQk6qfdC.mjs +18 -0
- package/dist/client-CTzJVFU5.mjs +9 -0
- package/dist/client-CTzJVFU5.mjs.map +1 -0
- package/dist/client-CcFTauAh.mjs +54 -0
- package/dist/client-CcFTauAh.mjs.map +1 -0
- package/dist/client-CeOLjbac.mjs +281 -0
- package/dist/client-CeOLjbac.mjs.map +1 -0
- package/dist/client-D339NFJS.mjs +267 -0
- package/dist/client-D339NFJS.mjs.map +1 -0
- package/dist/client-next.d.mts +62 -0
- package/dist/client-next.d.mts.map +1 -0
- package/dist/client-next.mjs +525 -0
- package/dist/client-next.mjs.map +1 -0
- package/dist/client.d.mts +30 -0
- package/dist/client.d.mts.map +1 -0
- package/dist/client.mjs +186 -0
- package/dist/client.mjs.map +1 -0
- package/dist/config-DPS6bSYo.d.mts +34 -0
- package/dist/config-DPS6bSYo.d.mts.map +1 -0
- package/dist/config-P6P5adJg.mjs +287 -0
- package/dist/config-P6P5adJg.mjs.map +1 -0
- package/dist/console-8bND3mMU.mjs +128 -0
- package/dist/console-8bND3mMU.mjs.map +1 -0
- package/dist/ecommerce-Cgu4wlux.mjs +993 -0
- package/dist/ecommerce-Cgu4wlux.mjs.map +1 -0
- package/dist/emitters-6-nKo8i-.mjs +208 -0
- package/dist/emitters-6-nKo8i-.mjs.map +1 -0
- package/dist/emitters-DldkVSPp.d.mts +12 -0
- package/dist/emitters-DldkVSPp.d.mts.map +1 -0
- package/dist/index-BfNWgfa5.d.mts +1494 -0
- package/dist/index-BfNWgfa5.d.mts.map +1 -0
- package/dist/index-BkIWe--N.d.mts +953 -0
- package/dist/index-BkIWe--N.d.mts.map +1 -0
- package/dist/index-jPzXRn52.d.mts +184 -0
- package/dist/index-jPzXRn52.d.mts.map +1 -0
- package/dist/manager-DvRRjza6.d.mts +76 -0
- package/dist/manager-DvRRjza6.d.mts.map +1 -0
- package/dist/posthog-bootstrap-CYfIy_WS.mjs +1769 -0
- package/dist/posthog-bootstrap-CYfIy_WS.mjs.map +1 -0
- package/dist/posthog-bootstrap-DWxFrxlt.d.mts +81 -0
- package/dist/posthog-bootstrap-DWxFrxlt.d.mts.map +1 -0
- package/dist/providers-http-client.d.mts +37 -0
- package/dist/providers-http-client.d.mts.map +1 -0
- package/dist/providers-http-client.mjs +320 -0
- package/dist/providers-http-client.mjs.map +1 -0
- package/dist/providers-http-server.d.mts +31 -0
- package/dist/providers-http-server.d.mts.map +1 -0
- package/dist/providers-http-server.mjs +297 -0
- package/dist/providers-http-server.mjs.map +1 -0
- package/dist/providers-http.d.mts +46 -0
- package/dist/providers-http.d.mts.map +1 -0
- package/dist/providers-http.mjs +4 -0
- package/dist/server-edge.d.mts +9 -0
- package/dist/server-edge.d.mts.map +1 -0
- package/dist/server-edge.mjs +373 -0
- package/dist/server-edge.mjs.map +1 -0
- package/dist/server-next.d.mts +67 -0
- package/dist/server-next.d.mts.map +1 -0
- package/dist/server-next.mjs +193 -0
- package/dist/server-next.mjs.map +1 -0
- package/dist/server.d.mts +10 -0
- package/dist/server.mjs +7 -0
- package/dist/service-cYtBBL8x.mjs +945 -0
- package/dist/service-cYtBBL8x.mjs.map +1 -0
- package/dist/shared.d.mts +16 -0
- package/dist/shared.d.mts.map +1 -0
- package/dist/shared.mjs +93 -0
- package/dist/shared.mjs.map +1 -0
- package/dist/types-BxBnNQ0V.d.mts +354 -0
- package/dist/types-BxBnNQ0V.d.mts.map +1 -0
- package/dist/types-CBvxUEaF.d.mts +216 -0
- package/dist/types-CBvxUEaF.d.mts.map +1 -0
- package/dist/types.d.mts +4 -0
- package/dist/types.mjs +0 -0
- package/dist/vercel-types-lwakUfoI.d.mts +102 -0
- package/dist/vercel-types-lwakUfoI.d.mts.map +1 -0
- package/package.json +129 -0
- package/src/client/index.ts +164 -0
- package/src/client/manager.ts +71 -0
- package/src/client/next/components.tsx +270 -0
- package/src/client/next/hooks.ts +217 -0
- package/src/client/next/manager.ts +141 -0
- package/src/client/next.ts +144 -0
- package/src/client-next.ts +101 -0
- package/src/client.ts +89 -0
- package/src/examples/ai-sdk-patterns.ts +583 -0
- package/src/examples/emitter-patterns.ts +476 -0
- package/src/examples/nextjs-emitter-patterns.tsx +403 -0
- package/src/next/app-router.tsx +564 -0
- package/src/next/client.ts +419 -0
- package/src/next/index.ts +84 -0
- package/src/next/middleware.ts +429 -0
- package/src/next/rsc.tsx +300 -0
- package/src/next/server.ts +253 -0
- package/src/next/types.d.ts +220 -0
- package/src/providers/base-provider.ts +419 -0
- package/src/providers/console/client.ts +10 -0
- package/src/providers/console/index.ts +152 -0
- package/src/providers/console/server.ts +6 -0
- package/src/providers/console/types.ts +15 -0
- package/src/providers/http/client.ts +464 -0
- package/src/providers/http/index.ts +30 -0
- package/src/providers/http/server.ts +396 -0
- package/src/providers/http/types.ts +135 -0
- package/src/providers/posthog/client.ts +518 -0
- package/src/providers/posthog/index.ts +11 -0
- package/src/providers/posthog/server.ts +329 -0
- package/src/providers/posthog/types.ts +104 -0
- package/src/providers/segment/client.ts +113 -0
- package/src/providers/segment/index.ts +11 -0
- package/src/providers/segment/server.ts +115 -0
- package/src/providers/segment/types.ts +51 -0
- package/src/providers/vercel/client.ts +102 -0
- package/src/providers/vercel/index.ts +11 -0
- package/src/providers/vercel/server.ts +89 -0
- package/src/providers/vercel/types.ts +27 -0
- package/src/server/index.ts +103 -0
- package/src/server/manager.ts +62 -0
- package/src/server/next.ts +210 -0
- package/src/server-edge.ts +442 -0
- package/src/server-next.ts +39 -0
- package/src/server.ts +106 -0
- package/src/shared/emitters/ai/README.md +981 -0
- package/src/shared/emitters/ai/events/agent.ts +130 -0
- package/src/shared/emitters/ai/events/artifacts.ts +167 -0
- package/src/shared/emitters/ai/events/chat.ts +126 -0
- package/src/shared/emitters/ai/events/chatbot-ecommerce.ts +133 -0
- package/src/shared/emitters/ai/events/completion.ts +103 -0
- package/src/shared/emitters/ai/events/content-generation.ts +347 -0
- package/src/shared/emitters/ai/events/conversation.ts +332 -0
- package/src/shared/emitters/ai/events/product-features.ts +1402 -0
- package/src/shared/emitters/ai/events/streaming.ts +114 -0
- package/src/shared/emitters/ai/events/tool.ts +93 -0
- package/src/shared/emitters/ai/index.ts +69 -0
- package/src/shared/emitters/ai/track-ai-sdk.ts +74 -0
- package/src/shared/emitters/ai/track-ai.ts +50 -0
- package/src/shared/emitters/ai/types.ts +1041 -0
- package/src/shared/emitters/ai/utils.ts +468 -0
- package/src/shared/emitters/ecommerce/events/cart-checkout.ts +106 -0
- package/src/shared/emitters/ecommerce/events/coupon.ts +49 -0
- package/src/shared/emitters/ecommerce/events/engagement.ts +61 -0
- package/src/shared/emitters/ecommerce/events/marketplace.ts +119 -0
- package/src/shared/emitters/ecommerce/events/order.ts +199 -0
- package/src/shared/emitters/ecommerce/events/product.ts +205 -0
- package/src/shared/emitters/ecommerce/events/registry.ts +123 -0
- package/src/shared/emitters/ecommerce/events/wishlist-sharing.ts +140 -0
- package/src/shared/emitters/ecommerce/index.ts +46 -0
- package/src/shared/emitters/ecommerce/track-ecommerce.ts +53 -0
- package/src/shared/emitters/ecommerce/types.ts +314 -0
- package/src/shared/emitters/ecommerce/utils.ts +216 -0
- package/src/shared/emitters/emitter-types.ts +974 -0
- package/src/shared/emitters/emitters.ts +292 -0
- package/src/shared/emitters/helpers.ts +419 -0
- package/src/shared/emitters/index.ts +66 -0
- package/src/shared/index.ts +142 -0
- package/src/shared/ingestion/index.ts +66 -0
- package/src/shared/ingestion/schemas.ts +386 -0
- package/src/shared/ingestion/service.ts +628 -0
- package/src/shared/node22-features.ts +848 -0
- package/src/shared/providers/console-provider.ts +160 -0
- package/src/shared/types/base-types.ts +54 -0
- package/src/shared/types/console-types.ts +19 -0
- package/src/shared/types/posthog-types.ts +131 -0
- package/src/shared/types/segment-types.ts +15 -0
- package/src/shared/types/types.ts +397 -0
- package/src/shared/types/vercel-types.ts +19 -0
- package/src/shared/utils/config-client.ts +19 -0
- package/src/shared/utils/config.ts +250 -0
- package/src/shared/utils/emitter-adapter.ts +212 -0
- package/src/shared/utils/manager.test.ts +36 -0
- package/src/shared/utils/manager.ts +1322 -0
- package/src/shared/utils/posthog-bootstrap.ts +136 -0
- package/src/shared/utils/posthog-client-utils.ts +48 -0
- package/src/shared/utils/posthog-next-utils.ts +282 -0
- package/src/shared/utils/posthog-server-utils.ts +210 -0
- package/src/shared/utils/rate-limit.ts +289 -0
- package/src/shared/utils/security.ts +545 -0
- package/src/shared/utils/validation-client.ts +161 -0
- package/src/shared/utils/validation.ts +399 -0
- package/src/shared.ts +155 -0
- package/src/types/index.ts +62 -0
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
//#region src/shared/emitters/ecommerce/types.d.ts
|
|
2
|
+
interface BaseProductProperties {
|
|
3
|
+
affiliate_link?: string | undefined;
|
|
4
|
+
affiliate_network?: string | undefined;
|
|
5
|
+
availability?: 'in_stock' | 'out_of_stock' | 'preorder' | 'discontinued' | undefined;
|
|
6
|
+
brand?: string | undefined;
|
|
7
|
+
category?: string | undefined;
|
|
8
|
+
commission_amount?: number | undefined;
|
|
9
|
+
commission_rate?: number | undefined;
|
|
10
|
+
condition?: 'new' | 'used' | 'refurbished' | undefined;
|
|
11
|
+
coupon?: string | undefined;
|
|
12
|
+
gtin?: string | undefined;
|
|
13
|
+
image_url?: string | undefined;
|
|
14
|
+
merchant_id?: string | undefined;
|
|
15
|
+
merchant_name?: string | undefined;
|
|
16
|
+
merchant_url?: string | undefined;
|
|
17
|
+
mpn?: string | undefined;
|
|
18
|
+
name?: string | undefined;
|
|
19
|
+
original_price?: number | undefined;
|
|
20
|
+
position?: number | undefined;
|
|
21
|
+
price?: number | undefined;
|
|
22
|
+
product_id: string;
|
|
23
|
+
quantity?: number | undefined;
|
|
24
|
+
sale_price?: number | undefined;
|
|
25
|
+
url?: string | undefined;
|
|
26
|
+
variant?: string | undefined;
|
|
27
|
+
}
|
|
28
|
+
interface ExtendedProductProperties extends BaseProductProperties {
|
|
29
|
+
currency?: string | undefined;
|
|
30
|
+
value?: number | undefined;
|
|
31
|
+
}
|
|
32
|
+
interface RegistryProperties {
|
|
33
|
+
co_registrant_id?: string | undefined;
|
|
34
|
+
co_registrant_name?: string | undefined;
|
|
35
|
+
event_date?: string | undefined;
|
|
36
|
+
privacy_setting?: 'public' | 'private' | 'unlisted' | undefined;
|
|
37
|
+
registry_id: string;
|
|
38
|
+
registry_name?: string | undefined;
|
|
39
|
+
registry_type?: 'wedding' | 'baby' | 'birthday' | 'universal' | 'custom' | undefined;
|
|
40
|
+
registry_url?: string | undefined;
|
|
41
|
+
}
|
|
42
|
+
interface RegistryItemProperties extends BaseProductProperties {
|
|
43
|
+
merchant_id?: string | undefined;
|
|
44
|
+
merchant_name?: string | undefined;
|
|
45
|
+
notes?: string | undefined;
|
|
46
|
+
priority?: 'high' | 'medium' | 'low' | undefined;
|
|
47
|
+
purchased_quantity?: number | undefined;
|
|
48
|
+
registry_id: string;
|
|
49
|
+
requested_quantity?: number | undefined;
|
|
50
|
+
}
|
|
51
|
+
interface ProductListProperties {
|
|
52
|
+
category?: string | undefined;
|
|
53
|
+
list_id?: string | undefined;
|
|
54
|
+
products?: BaseProductProperties[] | undefined;
|
|
55
|
+
}
|
|
56
|
+
interface CartProperties {
|
|
57
|
+
cart_id?: string | undefined;
|
|
58
|
+
products?: BaseProductProperties[] | undefined;
|
|
59
|
+
}
|
|
60
|
+
interface CheckoutProperties {
|
|
61
|
+
checkout_id?: string | undefined;
|
|
62
|
+
payment_method?: string | undefined;
|
|
63
|
+
products?: BaseProductProperties[] | undefined;
|
|
64
|
+
shipping_method?: string | undefined;
|
|
65
|
+
step?: number | undefined;
|
|
66
|
+
}
|
|
67
|
+
interface OrderProperties {
|
|
68
|
+
affiliation?: string | undefined;
|
|
69
|
+
coupon?: string | undefined;
|
|
70
|
+
currency?: string | undefined;
|
|
71
|
+
discount?: number | undefined;
|
|
72
|
+
order_id: string;
|
|
73
|
+
products?: BaseProductProperties[] | undefined;
|
|
74
|
+
revenue?: number | undefined;
|
|
75
|
+
shipping?: number | undefined;
|
|
76
|
+
tax?: number | undefined;
|
|
77
|
+
total?: number | undefined;
|
|
78
|
+
}
|
|
79
|
+
interface CouponProperties {
|
|
80
|
+
cart_id?: string | undefined;
|
|
81
|
+
coupon_id?: string | undefined;
|
|
82
|
+
coupon_name?: string | undefined;
|
|
83
|
+
discount?: number | undefined;
|
|
84
|
+
order_id?: string | undefined;
|
|
85
|
+
reason?: string | undefined;
|
|
86
|
+
}
|
|
87
|
+
interface WishlistProperties extends BaseProductProperties {
|
|
88
|
+
wishlist_id?: string | undefined;
|
|
89
|
+
wishlist_name?: string | undefined;
|
|
90
|
+
}
|
|
91
|
+
interface SharingProperties {
|
|
92
|
+
recipient?: string | undefined;
|
|
93
|
+
share_message?: string | undefined;
|
|
94
|
+
share_via?: string | undefined;
|
|
95
|
+
}
|
|
96
|
+
interface ReviewProperties {
|
|
97
|
+
product_id: string;
|
|
98
|
+
rating?: string | undefined;
|
|
99
|
+
review_body?: string | undefined;
|
|
100
|
+
review_id?: string | undefined;
|
|
101
|
+
}
|
|
102
|
+
interface SearchResultsProperties {
|
|
103
|
+
filters_applied?: Record<string, any>;
|
|
104
|
+
products?: BaseProductProperties[];
|
|
105
|
+
query: string;
|
|
106
|
+
results_count: number;
|
|
107
|
+
sort_order?: string;
|
|
108
|
+
}
|
|
109
|
+
interface CartUpdateProperties {
|
|
110
|
+
action: 'added' | 'removed' | 'updated';
|
|
111
|
+
cart_id?: string;
|
|
112
|
+
cart_total?: number;
|
|
113
|
+
product: BaseProductProperties;
|
|
114
|
+
quantity_change?: number;
|
|
115
|
+
}
|
|
116
|
+
interface CartAbandonmentProperties {
|
|
117
|
+
abandonment_reason?: 'timeout' | 'navigation' | 'closed';
|
|
118
|
+
cart_id: string;
|
|
119
|
+
cart_value: number;
|
|
120
|
+
products: BaseProductProperties[];
|
|
121
|
+
time_in_cart?: number;
|
|
122
|
+
}
|
|
123
|
+
interface CheckoutProgressProperties {
|
|
124
|
+
action: 'viewed' | 'completed' | 'abandoned' | 'error';
|
|
125
|
+
checkout_id?: string;
|
|
126
|
+
error_message?: string;
|
|
127
|
+
payment_method?: string;
|
|
128
|
+
products?: BaseProductProperties[];
|
|
129
|
+
shipping_method?: string;
|
|
130
|
+
step: number;
|
|
131
|
+
step_name: string;
|
|
132
|
+
}
|
|
133
|
+
interface OrderStatusProperties {
|
|
134
|
+
carrier?: string;
|
|
135
|
+
estimated_delivery?: string;
|
|
136
|
+
order_id: string;
|
|
137
|
+
previous_status?: string;
|
|
138
|
+
status: 'confirmed' | 'processing' | 'shipped' | 'out_for_delivery' | 'delivered' | 'returned' | 'failed';
|
|
139
|
+
tracking_number?: string;
|
|
140
|
+
}
|
|
141
|
+
interface ProductComparisonProperties {
|
|
142
|
+
action: 'added' | 'removed' | 'viewed';
|
|
143
|
+
comparison_list?: BaseProductProperties[];
|
|
144
|
+
product: BaseProductProperties;
|
|
145
|
+
}
|
|
146
|
+
interface RecommendationProperties {
|
|
147
|
+
algorithm?: string;
|
|
148
|
+
products: BaseProductProperties[];
|
|
149
|
+
recommendation_type: 'similar' | 'frequently_bought' | 'trending' | 'personalized' | 'upsell' | 'cross_sell';
|
|
150
|
+
source: string;
|
|
151
|
+
}
|
|
152
|
+
interface EngagementProperties {
|
|
153
|
+
action_type: 'price_alert' | 'back_in_stock' | 'favorite';
|
|
154
|
+
notification_method?: 'email' | 'sms' | 'push';
|
|
155
|
+
product_id: string;
|
|
156
|
+
threshold_price?: number;
|
|
157
|
+
}
|
|
158
|
+
interface ReturnProperties {
|
|
159
|
+
order_id: string;
|
|
160
|
+
products: BaseProductProperties[];
|
|
161
|
+
reason: string;
|
|
162
|
+
refund_amount?: number;
|
|
163
|
+
return_id?: string;
|
|
164
|
+
return_method?: 'mail' | 'store' | 'pickup';
|
|
165
|
+
}
|
|
166
|
+
declare const ECOMMERCE_EVENTS: {
|
|
167
|
+
readonly PRODUCT_CLICKED: "Product Clicked";
|
|
168
|
+
readonly PRODUCT_COMPARED: "Product Compared";
|
|
169
|
+
readonly PRODUCT_LIST_FILTERED: "Product List Filtered";
|
|
170
|
+
readonly PRODUCT_LIST_VIEWED: "Product List Viewed";
|
|
171
|
+
readonly PRODUCT_RECOMMENDATION_CLICKED: "Product Recommendation Clicked";
|
|
172
|
+
readonly PRODUCT_RECOMMENDATION_VIEWED: "Product Recommendation Viewed";
|
|
173
|
+
readonly PRODUCT_SEARCHED: "Product Searched";
|
|
174
|
+
readonly PRODUCT_VIEWED: "Product Viewed";
|
|
175
|
+
readonly SEARCH_RESULTS_VIEWED: "Search Results Viewed";
|
|
176
|
+
readonly CART_ABANDONED: "Cart Abandoned";
|
|
177
|
+
readonly CART_UPDATED: "Cart Updated";
|
|
178
|
+
readonly CART_VIEWED: "Cart Viewed";
|
|
179
|
+
readonly CHECKOUT_PROGRESSED: "Checkout Progressed";
|
|
180
|
+
readonly ORDER_CANCELLED: "Order Cancelled";
|
|
181
|
+
readonly ORDER_COMPLETED: "Order Completed";
|
|
182
|
+
readonly ORDER_FAILED: "Order Failed";
|
|
183
|
+
readonly ORDER_REFUNDED: "Order Refunded";
|
|
184
|
+
readonly ORDER_STATUS_UPDATED: "Order Status Updated";
|
|
185
|
+
readonly COUPON_APPLIED: "Coupon Applied";
|
|
186
|
+
readonly COUPON_REMOVED: "Coupon Removed";
|
|
187
|
+
readonly PRODUCT_ADDED_TO_WISHLIST: "Product Added to Wishlist";
|
|
188
|
+
readonly PRODUCT_REMOVED_FROM_WISHLIST: "Product Removed from Wishlist";
|
|
189
|
+
readonly WISHLIST_PRODUCT_ADDED_TO_CART: "Wishlist Product Added to Cart";
|
|
190
|
+
readonly CART_SHARED: "Cart Shared";
|
|
191
|
+
readonly PRODUCT_SHARED: "Product Shared";
|
|
192
|
+
readonly PRODUCT_REVIEWED: "Product Reviewed";
|
|
193
|
+
readonly AFFILIATE_CONVERSION_TRACKED: "Affiliate Conversion Tracked";
|
|
194
|
+
readonly AFFILIATE_LINK_CLICKED: "Affiliate Link Clicked";
|
|
195
|
+
readonly MERCHANT_SELECTED: "Merchant Selected";
|
|
196
|
+
readonly PRICE_COMPARISON_VIEWED: "Price Comparison Viewed";
|
|
197
|
+
readonly REGISTRY_ITEM_MANAGED: "Registry Item Managed";
|
|
198
|
+
readonly REGISTRY_MANAGED: "Registry Managed";
|
|
199
|
+
readonly REGISTRY_SHARED: "Registry Shared";
|
|
200
|
+
readonly REGISTRY_VIEWED: "Registry Viewed";
|
|
201
|
+
readonly RETURN_COMPLETED: "Return Completed";
|
|
202
|
+
readonly RETURN_REQUESTED: "Return Requested";
|
|
203
|
+
readonly BACK_IN_STOCK_REQUESTED: "Back In Stock Requested";
|
|
204
|
+
readonly PRICE_ALERT_SET: "Price Alert Set";
|
|
205
|
+
};
|
|
206
|
+
type EcommerceEventName = (typeof ECOMMERCE_EVENTS)[keyof typeof ECOMMERCE_EVENTS];
|
|
207
|
+
interface EcommerceEventSpec<T = any> {
|
|
208
|
+
category: 'ecommerce';
|
|
209
|
+
name: EcommerceEventName;
|
|
210
|
+
properties: T;
|
|
211
|
+
requiredProperties: (keyof T)[];
|
|
212
|
+
}
|
|
213
|
+
type EcommerceEventProperties = BaseProductProperties | ExtendedProductProperties | ProductListProperties | CartProperties | CheckoutProperties | OrderProperties | CouponProperties | WishlistProperties | (BaseProductProperties & SharingProperties) | (CartProperties & SharingProperties) | ReviewProperties;
|
|
214
|
+
//#endregion
|
|
215
|
+
export { SearchResultsProperties as C, ReviewProperties as S, WishlistProperties as T, ProductListProperties as _, CheckoutProgressProperties as a, RegistryProperties as b, ECOMMERCE_EVENTS as c, EcommerceEventSpec as d, EngagementProperties as f, ProductComparisonProperties as g, OrderStatusProperties as h, CartUpdateProperties as i, EcommerceEventName as l, OrderProperties as m, CartAbandonmentProperties as n, CheckoutProperties as o, ExtendedProductProperties as p, CartProperties as r, CouponProperties as s, BaseProductProperties as t, EcommerceEventProperties as u, RecommendationProperties as v, SharingProperties as w, ReturnProperties as x, RegistryItemProperties as y };
|
|
216
|
+
//# sourceMappingURL=types-CBvxUEaF.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-CBvxUEaF.d.mts","names":[],"sources":["../src/shared/emitters/ecommerce/types.ts"],"mappings":"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"}
|
package/dist/types.d.mts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { C as EmitterPagePayload, D as EmitterTrackPayload, S as EmitterOptions, b as EmitterIdentifyPayload, c as ProviderConfig, d as TrackingOptions, g as EmitterContext, i as AnalyticsProvider, n as AnalyticsContext, p as EmitterAliasPayload, r as AnalyticsManager, t as AnalyticsConfig, u as ProviderRegistry, v as EmitterGroupPayload, w as EmitterPayload } from "./types-BxBnNQ0V.mjs";
|
|
2
|
+
import { d as EcommerceEventSpec, m as OrderProperties, p as ExtendedProductProperties, r as CartProperties, t as BaseProductProperties } from "./types-CBvxUEaF.mjs";
|
|
3
|
+
import { a as ConsoleConfig, c as PostHogConfig, i as SegmentOptions, l as PostHogOptions, n as VercelOptions, o as ConsoleOptions, r as SegmentConfig, s as BootstrapData, t as VercelConfig } from "./vercel-types-lwakUfoI.mjs";
|
|
4
|
+
export { type AnalyticsConfig, type AnalyticsContext, type AnalyticsManager, type AnalyticsProvider, type BaseProductProperties, type BootstrapData, type CartProperties, type ConsoleConfig, type ConsoleOptions, type EcommerceEventSpec, type EmitterAliasPayload, type EmitterContext, type EmitterGroupPayload, type EmitterIdentifyPayload, type EmitterOptions, type EmitterPagePayload, type EmitterPayload, type EmitterTrackPayload, type ExtendedProductProperties, type OrderProperties, type PostHogConfig, type PostHogOptions, type ProviderConfig, type ProviderRegistry, type SegmentConfig, type SegmentOptions, type TrackingOptions, type VercelConfig, type VercelOptions };
|
package/dist/types.mjs
ADDED
|
File without changes
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
//#region src/shared/types/posthog-types.d.ts
|
|
2
|
+
interface PostHogConfig {
|
|
3
|
+
apiKey: string;
|
|
4
|
+
options?: {
|
|
5
|
+
api_host?: string;
|
|
6
|
+
ui_host?: string;
|
|
7
|
+
autocapture?: boolean;
|
|
8
|
+
capture_pageview?: boolean;
|
|
9
|
+
capture_pageleave?: boolean;
|
|
10
|
+
disable_session_recording?: boolean;
|
|
11
|
+
cross_subdomain_cookie?: boolean;
|
|
12
|
+
persistence?: 'localStorage' | 'cookie' | 'memory' | 'localStorage+cookie';
|
|
13
|
+
persistence_name?: string;
|
|
14
|
+
loaded?: (posthog: any) => void;
|
|
15
|
+
person_profiles?: 'always' | 'never' | 'identified_only';
|
|
16
|
+
opt_in_site_apps?: boolean;
|
|
17
|
+
respect_dnt?: boolean;
|
|
18
|
+
uuid_version?: 'v4' | 'v7';
|
|
19
|
+
request_batching?: boolean;
|
|
20
|
+
batch_flush_interval_ms?: number;
|
|
21
|
+
session_recording?: {
|
|
22
|
+
maskAllInputs?: boolean;
|
|
23
|
+
maskInputOptions?: {
|
|
24
|
+
color?: boolean;
|
|
25
|
+
date?: boolean;
|
|
26
|
+
'datetime-local'?: boolean;
|
|
27
|
+
email?: boolean;
|
|
28
|
+
month?: boolean;
|
|
29
|
+
number?: boolean;
|
|
30
|
+
password?: boolean;
|
|
31
|
+
range?: boolean;
|
|
32
|
+
search?: boolean;
|
|
33
|
+
tel?: boolean;
|
|
34
|
+
text?: boolean;
|
|
35
|
+
time?: boolean;
|
|
36
|
+
url?: boolean;
|
|
37
|
+
week?: boolean;
|
|
38
|
+
};
|
|
39
|
+
recordCrossOriginIframes?: boolean;
|
|
40
|
+
recordCanvas?: boolean;
|
|
41
|
+
maskTextSelector?: string;
|
|
42
|
+
blockSelector?: string;
|
|
43
|
+
sampling?: {
|
|
44
|
+
minimumDurationMs?: number;
|
|
45
|
+
sampleRate?: number;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
before_send?: (event: any) => any | null;
|
|
49
|
+
sanitize_properties?: (properties: any, event: string) => any;
|
|
50
|
+
debug?: boolean;
|
|
51
|
+
advanced_disable_decide?: boolean;
|
|
52
|
+
flushAt?: number;
|
|
53
|
+
flushInterval?: number;
|
|
54
|
+
fetch_options?: {
|
|
55
|
+
cache?: RequestCache;
|
|
56
|
+
next?: {
|
|
57
|
+
revalidate?: number;
|
|
58
|
+
tags?: string[];
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
bootstrap?: BootstrapData;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
interface BootstrapData {
|
|
65
|
+
distinctID: string;
|
|
66
|
+
}
|
|
67
|
+
type PostHogOptions = Record<string, any>;
|
|
68
|
+
//#endregion
|
|
69
|
+
//#region src/shared/types/console-types.d.ts
|
|
70
|
+
interface ConsoleConfig {
|
|
71
|
+
options?: {
|
|
72
|
+
prefix?: string | undefined;
|
|
73
|
+
enableColors?: boolean | undefined;
|
|
74
|
+
logLevel?: 'debug' | 'info' | 'warn' | 'error' | undefined;
|
|
75
|
+
pretty?: boolean | undefined;
|
|
76
|
+
} | undefined;
|
|
77
|
+
}
|
|
78
|
+
type ConsoleOptions = Record<string, any>;
|
|
79
|
+
//#endregion
|
|
80
|
+
//#region src/shared/types/segment-types.d.ts
|
|
81
|
+
interface SegmentConfig {
|
|
82
|
+
options?: {
|
|
83
|
+
integrations?: Record<string, any>;
|
|
84
|
+
context?: Record<string, any>;
|
|
85
|
+
anonymousId?: string;
|
|
86
|
+
};
|
|
87
|
+
writeKey: string;
|
|
88
|
+
}
|
|
89
|
+
type SegmentOptions = Record<string, any>;
|
|
90
|
+
//#endregion
|
|
91
|
+
//#region src/shared/types/vercel-types.d.ts
|
|
92
|
+
interface VercelConfig {
|
|
93
|
+
options?: {
|
|
94
|
+
mode?: 'auto' | 'production' | 'development';
|
|
95
|
+
debug?: boolean;
|
|
96
|
+
beforeSend?: (event: any) => any | null;
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
type VercelOptions = Record<string, any>;
|
|
100
|
+
//#endregion
|
|
101
|
+
export { ConsoleConfig as a, PostHogConfig as c, SegmentOptions as i, PostHogOptions as l, VercelOptions as n, ConsoleOptions as o, SegmentConfig as r, BootstrapData as s, VercelConfig as t };
|
|
102
|
+
//# sourceMappingURL=vercel-types-lwakUfoI.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vercel-types-lwakUfoI.d.mts","names":[],"sources":["../src/shared/types/posthog-types.ts","../src/shared/types/console-types.ts","../src/shared/types/segment-types.ts","../src/shared/types/vercel-types.ts"],"mappings":";UAKiB,aAAA;EACf,MAAA;EACA,OAAA;IAEE,QAAA;IACA,OAAA;IACA,WAAA;IACA,gBAAA;IACA,iBAAA;IACA,yBAAA;IACA,sBAAA;IACA,WAAA;IACA,gBAAA;IACA,MAAA,IAAU,OAAA;IAGV,eAAA;IACA,gBAAA;IACA,WAAA;IAGA,YAAA;IACA,gBAAA;IACA,uBAAA;IAGA,iBAAA;MACE,aAAA;MACA,gBAAA;QACE,KAAA;QACA,IAAA;QACA,gBAAA;QACA,KAAA;QACA,KAAA;QACA,MAAA;QACA,QAAA;QACA,KAAA;QACA,MAAA;QACA,GAAA;QACA,IAAA;QACA,IAAA;QACA,GAAA;QACA,IAAA;MAAA;MAEF,wBAAA;MACA,YAAA;MACA,gBAAA;MACA,aAAA;MACA,QAAA;QACE,iBAAA;QACA,UAAA;MAAA;IAAA;IAKJ,WAAA,IAAe,KAAA;IACf,mBAAA,IAAuB,UAAA,OAAiB,KAAA;IAGxC,KAAA;IACA,uBAAA;IAGA,OAAA;IACA,aAAA;IAGA,aAAA;MACE,KAAA,GAAQ,YAAA;MACR,IAAA;QACE,UAAA;QACA,IAAA;MAAA;IAAA;IAKJ,SAAA,GAAY,aAAA;EAAA;AAAA;AAAA,UAaC,aAAA;EACf,UAAA;AAAA;AAAA,KAmCU,cAAA,GAAiB,MAAA;;;UC7HZ,aAAA;EACf,OAAA;IAEM,MAAA;IACA,YAAA;IACA,QAAA;IACA,MAAA;EAAA;AAAA;AAAA,KAKI,cAAA,GAAiB,MAAA;;;UCXZ,aAAA;EACf,OAAA;IACE,YAAA,GAAe,MAAA;IACf,OAAA,GAAU,MAAA;IACV,WAAA;EAAA;EAEF,QAAA;AAAA;AAAA,KAGU,cAAA,GAAiB,MAAA;;;UCTZ,YAAA;EAGf,OAAA;IACE,IAAA;IACA,KAAA;IACA,UAAA,IAAc,KAAA;EAAA;AAAA;AAAA,KAON,aAAA,GAAgB,MAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@od-oneapp/analytics",
|
|
3
|
+
"version": "2026.1.1301",
|
|
4
|
+
"private": false,
|
|
5
|
+
"description": "Multi-provider analytics package with type-safe event tracking, comprehensive ecommerce support, and AI product analytics. Optimized for React 19 and Node.js 22+.",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/OneDigital-Product/monorepo.git",
|
|
9
|
+
"directory": "platform/packages/analytics"
|
|
10
|
+
},
|
|
11
|
+
"sideEffects": false,
|
|
12
|
+
"type": "module",
|
|
13
|
+
"exports": {
|
|
14
|
+
"./client": {
|
|
15
|
+
"types": "./dist/client.d.mts",
|
|
16
|
+
"import": "./dist/client.mjs",
|
|
17
|
+
"default": "./dist/client.mjs"
|
|
18
|
+
},
|
|
19
|
+
"./server": {
|
|
20
|
+
"types": "./dist/server.d.mts",
|
|
21
|
+
"import": "./dist/server.mjs",
|
|
22
|
+
"default": "./dist/server.mjs"
|
|
23
|
+
},
|
|
24
|
+
"./client/next": {
|
|
25
|
+
"types": "./dist/client-next.d.mts",
|
|
26
|
+
"import": "./dist/client-next.mjs",
|
|
27
|
+
"default": "./dist/client-next.mjs"
|
|
28
|
+
},
|
|
29
|
+
"./server/next": {
|
|
30
|
+
"types": "./dist/server-next.d.mts",
|
|
31
|
+
"import": "./dist/server-next.mjs",
|
|
32
|
+
"default": "./dist/server-next.mjs"
|
|
33
|
+
},
|
|
34
|
+
"./server/edge": {
|
|
35
|
+
"types": "./dist/server-edge.d.mts",
|
|
36
|
+
"import": "./dist/server-edge.mjs",
|
|
37
|
+
"default": "./dist/server-edge.mjs"
|
|
38
|
+
},
|
|
39
|
+
"./shared": {
|
|
40
|
+
"types": "./dist/shared.d.mts",
|
|
41
|
+
"import": "./dist/shared.mjs",
|
|
42
|
+
"default": "./dist/shared.mjs"
|
|
43
|
+
},
|
|
44
|
+
"./types": {
|
|
45
|
+
"types": "./dist/types.d.mts",
|
|
46
|
+
"import": "./dist/types.mjs",
|
|
47
|
+
"default": "./dist/types.mjs"
|
|
48
|
+
},
|
|
49
|
+
"./providers/http": {
|
|
50
|
+
"types": "./dist/providers-http.d.mts",
|
|
51
|
+
"import": "./dist/providers-http.mjs",
|
|
52
|
+
"default": "./dist/providers-http.mjs"
|
|
53
|
+
},
|
|
54
|
+
"./providers/http/client": {
|
|
55
|
+
"types": "./dist/providers-http-client.d.mts",
|
|
56
|
+
"import": "./dist/providers-http-client.mjs",
|
|
57
|
+
"default": "./dist/providers-http-client.mjs"
|
|
58
|
+
},
|
|
59
|
+
"./providers/http/server": {
|
|
60
|
+
"types": "./dist/providers-http-server.d.mts",
|
|
61
|
+
"import": "./dist/providers-http-server.mjs",
|
|
62
|
+
"default": "./dist/providers-http-server.mjs"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"types": "./src/types/index.ts",
|
|
66
|
+
"files": [
|
|
67
|
+
"dist",
|
|
68
|
+
"src"
|
|
69
|
+
],
|
|
70
|
+
"dependencies": {
|
|
71
|
+
"@vercel/analytics": "^1.6.1",
|
|
72
|
+
"posthog-js": "^1.301.2",
|
|
73
|
+
"@t3-oss/env-core": "^0.13.10",
|
|
74
|
+
"next": "16.1.6",
|
|
75
|
+
"posthog-node": "^5.24.15",
|
|
76
|
+
"react": "^19.2.4",
|
|
77
|
+
"zod": "4.3.6",
|
|
78
|
+
"@integrations/segment": "2026.1.1301",
|
|
79
|
+
"@repo/shared": "2026.1.1301",
|
|
80
|
+
"@od-oneapp/observability": "2026.1.1301",
|
|
81
|
+
"@integrations/vercel": "2026.1.1301",
|
|
82
|
+
"@repo/3p-posthog": "2026.1.1301"
|
|
83
|
+
},
|
|
84
|
+
"devDependencies": {
|
|
85
|
+
"@segment/analytics-next": "^1.81.1",
|
|
86
|
+
"@sentry/nextjs": "^10.38.0",
|
|
87
|
+
"@testing-library/dom": "^10.4.1",
|
|
88
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
89
|
+
"@testing-library/react": "^16.3.2",
|
|
90
|
+
"@testing-library/user-event": "14.6.1",
|
|
91
|
+
"@types/react": "19.2.13",
|
|
92
|
+
"@types/react-dom": "19.2.3",
|
|
93
|
+
"@vitest/coverage-v8": "4.0.18",
|
|
94
|
+
"eslint": "9.39.2",
|
|
95
|
+
"jsdom": "^28.0.0",
|
|
96
|
+
"knip": "^5.83.1",
|
|
97
|
+
"madge": "8.0.0",
|
|
98
|
+
"msw": "^2.12.10",
|
|
99
|
+
"tsdown": "^0.20.3",
|
|
100
|
+
"typescript": "5.9.3",
|
|
101
|
+
"vite-tsconfig-paths": "6.1.0",
|
|
102
|
+
"vitest": "4.0.18",
|
|
103
|
+
"@repo/config": "2026.1.1301",
|
|
104
|
+
"@od-oneapp/qa": "2026.1.1301"
|
|
105
|
+
},
|
|
106
|
+
"engines": {
|
|
107
|
+
"node": ">=22.0.0",
|
|
108
|
+
"pnpm": ">=10.28.2"
|
|
109
|
+
},
|
|
110
|
+
"publishConfig": {
|
|
111
|
+
"access": "restricted",
|
|
112
|
+
"registry": "https://registry.npmjs.org/"
|
|
113
|
+
},
|
|
114
|
+
"scripts": {
|
|
115
|
+
"build": "tsdown",
|
|
116
|
+
"build:publish": "tsdown && node ../../../scripts/prepare-publish.mjs",
|
|
117
|
+
"circular": "madge --circular --extensions ts,tsx,js,jsx .",
|
|
118
|
+
"coverage:collect": "vitest run --coverage --reporter=json",
|
|
119
|
+
"format": "prettier --write --cache --ignore-unknown --ignore-path ../../../.prettierignore .",
|
|
120
|
+
"format:check": "prettier --check --cache --ignore-unknown --ignore-path ../../../.prettierignore .",
|
|
121
|
+
"knip": "knip --reporter json --exclude unlisted,exports,files,binaries,types,duplicates",
|
|
122
|
+
"lint": "eslint . --fix ",
|
|
123
|
+
"test": "vitest run",
|
|
124
|
+
"test:coverage": "vitest run --coverage",
|
|
125
|
+
"test:coverage:json": "vitest run --coverage --reporter=json",
|
|
126
|
+
"test:watch": "vitest",
|
|
127
|
+
"typecheck": "tsc --noEmit"
|
|
128
|
+
}
|
|
129
|
+
}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Client-Side Analytics Exports
|
|
3
|
+
*
|
|
4
|
+
* Complete analytics solution for browser/client environments. Provides
|
|
5
|
+
* type-safe event tracking with support for multiple analytics providers
|
|
6
|
+
* (Segment, HTTP, Vercel Analytics, Console).
|
|
7
|
+
*
|
|
8
|
+
* **Core Functions**:
|
|
9
|
+
* - `createClientAnalytics()`: Create and initialize a client analytics instance
|
|
10
|
+
* - `createClientAnalyticsUninitialized()`: Create without initializing (for lazy loading)
|
|
11
|
+
*
|
|
12
|
+
* **Emitters** (Preferred API):
|
|
13
|
+
* - `track()`: Track custom events
|
|
14
|
+
* - `identify()`: Identify users with traits
|
|
15
|
+
* - `page()`: Track page views
|
|
16
|
+
* - `group()`: Associate users with groups
|
|
17
|
+
* - `alias()`: Alias user IDs
|
|
18
|
+
* - `ecommerce.*`: E-commerce specific events
|
|
19
|
+
*
|
|
20
|
+
* **Usage Pattern**:
|
|
21
|
+
* 1. Create analytics instance with provider configuration
|
|
22
|
+
* 2. Use emitters to create event payloads
|
|
23
|
+
* 3. Emit events using `analytics.emit()` or `analytics.track()`
|
|
24
|
+
*
|
|
25
|
+
* @module @od-oneapp/analytics/client
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* import { createClientAnalytics, track, ecommerce } from '@od-oneapp/analytics/client';
|
|
30
|
+
*
|
|
31
|
+
* const analytics = await createClientAnalytics({
|
|
32
|
+
* providers: {
|
|
33
|
+
* segment: { writeKey: 'xxx' },
|
|
34
|
+
* http: { endpoint: 'https://api.example.com/ingest' }
|
|
35
|
+
* }
|
|
36
|
+
* });
|
|
37
|
+
*
|
|
38
|
+
* // Preferred: Use emitters
|
|
39
|
+
* await analytics.emit(track('Button Clicked', { color: 'blue' }));
|
|
40
|
+
* await analytics.emit(ecommerce.productViewed({ product_id: '123' }));
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
import { SegmentClientProvider } from '@integrations/segment/analytics-provider/client';
|
|
45
|
+
import { VercelClientProvider } from '@integrations/vercel/analytics-provider/client';
|
|
46
|
+
|
|
47
|
+
import { ConsoleProvider } from '../providers/console/client';
|
|
48
|
+
import { HttpClientProvider } from '../providers/http/client';
|
|
49
|
+
import { createAnalyticsManager } from '../shared/utils/manager';
|
|
50
|
+
|
|
51
|
+
import type { AnalyticsConfig, AnalyticsManager, ProviderRegistry } from '../shared/types/types';
|
|
52
|
+
|
|
53
|
+
// Client-specific provider registry
|
|
54
|
+
const CLIENT_PROVIDERS: ProviderRegistry = {
|
|
55
|
+
console: config => new ConsoleProvider(config),
|
|
56
|
+
http: config => new HttpClientProvider(config),
|
|
57
|
+
segment: config => new SegmentClientProvider(config),
|
|
58
|
+
vercel: config => new VercelClientProvider(config),
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// ============================================================================
|
|
62
|
+
// CORE ANALYTICS FUNCTIONS
|
|
63
|
+
// ============================================================================
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Create and initialize a client analytics instance.
|
|
67
|
+
*
|
|
68
|
+
* @remarks
|
|
69
|
+
* This is the primary way to create analytics for client-side applications.
|
|
70
|
+
* The instance will be initialized immediately and ready to use.
|
|
71
|
+
*
|
|
72
|
+
* @param config - Analytics configuration including providers and settings
|
|
73
|
+
* @returns Promise resolving to initialized analytics manager
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* const analytics = await createClientAnalytics({
|
|
78
|
+
* providers: {
|
|
79
|
+
* http: { endpoint: process.env.NEXT_PUBLIC_API_URL! + '/api/v1/ingest' },
|
|
80
|
+
* segment: { writeKey: process.env.NEXT_PUBLIC_SEGMENT_KEY! }
|
|
81
|
+
* }
|
|
82
|
+
* });
|
|
83
|
+
*
|
|
84
|
+
* await analytics.track('Page Viewed', { page: '/dashboard' });
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
export async function createClientAnalytics(config: AnalyticsConfig): Promise<AnalyticsManager> {
|
|
88
|
+
const manager = createAnalyticsManager(config, CLIENT_PROVIDERS);
|
|
89
|
+
await manager.initialize();
|
|
90
|
+
return manager;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Create a client analytics instance without initializing.
|
|
95
|
+
*
|
|
96
|
+
* @remarks
|
|
97
|
+
* Useful when you need to control initialization timing, such as lazy loading
|
|
98
|
+
* analytics after user interaction or page load.
|
|
99
|
+
*
|
|
100
|
+
* @param config - Analytics configuration including providers and settings
|
|
101
|
+
* @returns Uninitialized analytics manager instance
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```typescript
|
|
105
|
+
* const analytics = createClientAnalyticsUninitialized(config);
|
|
106
|
+
* // Later, when ready
|
|
107
|
+
* await analytics.initialize();
|
|
108
|
+
* await analytics.track('User Ready');
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
export function createClientAnalyticsUninitialized(config: AnalyticsConfig): AnalyticsManager {
|
|
112
|
+
return createAnalyticsManager(config, CLIENT_PROVIDERS);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// ============================================================================
|
|
116
|
+
// EMITTERS - PRIMARY INTERFACE
|
|
117
|
+
// ============================================================================
|
|
118
|
+
|
|
119
|
+
// Export all core emitters - these are the preferred way to track events
|
|
120
|
+
export {
|
|
121
|
+
// Core Segment.io spec emitters
|
|
122
|
+
alias,
|
|
123
|
+
// Ecommerce emitters namespace
|
|
124
|
+
ecommerce,
|
|
125
|
+
group,
|
|
126
|
+
identify,
|
|
127
|
+
page,
|
|
128
|
+
track,
|
|
129
|
+
} from '../shared/emitters';
|
|
130
|
+
|
|
131
|
+
// ============================================================================
|
|
132
|
+
// ADAPTER UTILITIES
|
|
133
|
+
// ============================================================================
|
|
134
|
+
|
|
135
|
+
export { createEmitterProcessor, processEmitterPayload } from '../shared/utils/emitter-adapter';
|
|
136
|
+
|
|
137
|
+
// ============================================================================
|
|
138
|
+
// TYPES
|
|
139
|
+
// ============================================================================
|
|
140
|
+
|
|
141
|
+
// Core analytics types;
|
|
142
|
+
|
|
143
|
+
// Emitter types;
|
|
144
|
+
|
|
145
|
+
// Provider-specific types;
|
|
146
|
+
|
|
147
|
+
// Ecommerce types;
|
|
148
|
+
|
|
149
|
+
// ============================================================================
|
|
150
|
+
// CONFIGURATION UTILITIES
|
|
151
|
+
// ============================================================================
|
|
152
|
+
|
|
153
|
+
// ============================================================================
|
|
154
|
+
// VALIDATION UTILITIES
|
|
155
|
+
// ============================================================================
|
|
156
|
+
|
|
157
|
+
// Validation should happen on the server side only
|
|
158
|
+
// Client-side validation is removed to follow the four-file export pattern
|
|
159
|
+
|
|
160
|
+
// ============================================================================
|
|
161
|
+
// ADVANCED UTILITIES
|
|
162
|
+
// ============================================================================
|
|
163
|
+
|
|
164
|
+
// Manager utilities
|