@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.
Files changed (184) hide show
  1. package/README.md +509 -0
  2. package/dist/ai-YMnynb-t.mjs +3347 -0
  3. package/dist/ai-YMnynb-t.mjs.map +1 -0
  4. package/dist/chunk-DQk6qfdC.mjs +18 -0
  5. package/dist/client-CTzJVFU5.mjs +9 -0
  6. package/dist/client-CTzJVFU5.mjs.map +1 -0
  7. package/dist/client-CcFTauAh.mjs +54 -0
  8. package/dist/client-CcFTauAh.mjs.map +1 -0
  9. package/dist/client-CeOLjbac.mjs +281 -0
  10. package/dist/client-CeOLjbac.mjs.map +1 -0
  11. package/dist/client-D339NFJS.mjs +267 -0
  12. package/dist/client-D339NFJS.mjs.map +1 -0
  13. package/dist/client-next.d.mts +62 -0
  14. package/dist/client-next.d.mts.map +1 -0
  15. package/dist/client-next.mjs +525 -0
  16. package/dist/client-next.mjs.map +1 -0
  17. package/dist/client.d.mts +30 -0
  18. package/dist/client.d.mts.map +1 -0
  19. package/dist/client.mjs +186 -0
  20. package/dist/client.mjs.map +1 -0
  21. package/dist/config-DPS6bSYo.d.mts +34 -0
  22. package/dist/config-DPS6bSYo.d.mts.map +1 -0
  23. package/dist/config-P6P5adJg.mjs +287 -0
  24. package/dist/config-P6P5adJg.mjs.map +1 -0
  25. package/dist/console-8bND3mMU.mjs +128 -0
  26. package/dist/console-8bND3mMU.mjs.map +1 -0
  27. package/dist/ecommerce-Cgu4wlux.mjs +993 -0
  28. package/dist/ecommerce-Cgu4wlux.mjs.map +1 -0
  29. package/dist/emitters-6-nKo8i-.mjs +208 -0
  30. package/dist/emitters-6-nKo8i-.mjs.map +1 -0
  31. package/dist/emitters-DldkVSPp.d.mts +12 -0
  32. package/dist/emitters-DldkVSPp.d.mts.map +1 -0
  33. package/dist/index-BfNWgfa5.d.mts +1494 -0
  34. package/dist/index-BfNWgfa5.d.mts.map +1 -0
  35. package/dist/index-BkIWe--N.d.mts +953 -0
  36. package/dist/index-BkIWe--N.d.mts.map +1 -0
  37. package/dist/index-jPzXRn52.d.mts +184 -0
  38. package/dist/index-jPzXRn52.d.mts.map +1 -0
  39. package/dist/manager-DvRRjza6.d.mts +76 -0
  40. package/dist/manager-DvRRjza6.d.mts.map +1 -0
  41. package/dist/posthog-bootstrap-CYfIy_WS.mjs +1769 -0
  42. package/dist/posthog-bootstrap-CYfIy_WS.mjs.map +1 -0
  43. package/dist/posthog-bootstrap-DWxFrxlt.d.mts +81 -0
  44. package/dist/posthog-bootstrap-DWxFrxlt.d.mts.map +1 -0
  45. package/dist/providers-http-client.d.mts +37 -0
  46. package/dist/providers-http-client.d.mts.map +1 -0
  47. package/dist/providers-http-client.mjs +320 -0
  48. package/dist/providers-http-client.mjs.map +1 -0
  49. package/dist/providers-http-server.d.mts +31 -0
  50. package/dist/providers-http-server.d.mts.map +1 -0
  51. package/dist/providers-http-server.mjs +297 -0
  52. package/dist/providers-http-server.mjs.map +1 -0
  53. package/dist/providers-http.d.mts +46 -0
  54. package/dist/providers-http.d.mts.map +1 -0
  55. package/dist/providers-http.mjs +4 -0
  56. package/dist/server-edge.d.mts +9 -0
  57. package/dist/server-edge.d.mts.map +1 -0
  58. package/dist/server-edge.mjs +373 -0
  59. package/dist/server-edge.mjs.map +1 -0
  60. package/dist/server-next.d.mts +67 -0
  61. package/dist/server-next.d.mts.map +1 -0
  62. package/dist/server-next.mjs +193 -0
  63. package/dist/server-next.mjs.map +1 -0
  64. package/dist/server.d.mts +10 -0
  65. package/dist/server.mjs +7 -0
  66. package/dist/service-cYtBBL8x.mjs +945 -0
  67. package/dist/service-cYtBBL8x.mjs.map +1 -0
  68. package/dist/shared.d.mts +16 -0
  69. package/dist/shared.d.mts.map +1 -0
  70. package/dist/shared.mjs +93 -0
  71. package/dist/shared.mjs.map +1 -0
  72. package/dist/types-BxBnNQ0V.d.mts +354 -0
  73. package/dist/types-BxBnNQ0V.d.mts.map +1 -0
  74. package/dist/types-CBvxUEaF.d.mts +216 -0
  75. package/dist/types-CBvxUEaF.d.mts.map +1 -0
  76. package/dist/types.d.mts +4 -0
  77. package/dist/types.mjs +0 -0
  78. package/dist/vercel-types-lwakUfoI.d.mts +102 -0
  79. package/dist/vercel-types-lwakUfoI.d.mts.map +1 -0
  80. package/package.json +129 -0
  81. package/src/client/index.ts +164 -0
  82. package/src/client/manager.ts +71 -0
  83. package/src/client/next/components.tsx +270 -0
  84. package/src/client/next/hooks.ts +217 -0
  85. package/src/client/next/manager.ts +141 -0
  86. package/src/client/next.ts +144 -0
  87. package/src/client-next.ts +101 -0
  88. package/src/client.ts +89 -0
  89. package/src/examples/ai-sdk-patterns.ts +583 -0
  90. package/src/examples/emitter-patterns.ts +476 -0
  91. package/src/examples/nextjs-emitter-patterns.tsx +403 -0
  92. package/src/next/app-router.tsx +564 -0
  93. package/src/next/client.ts +419 -0
  94. package/src/next/index.ts +84 -0
  95. package/src/next/middleware.ts +429 -0
  96. package/src/next/rsc.tsx +300 -0
  97. package/src/next/server.ts +253 -0
  98. package/src/next/types.d.ts +220 -0
  99. package/src/providers/base-provider.ts +419 -0
  100. package/src/providers/console/client.ts +10 -0
  101. package/src/providers/console/index.ts +152 -0
  102. package/src/providers/console/server.ts +6 -0
  103. package/src/providers/console/types.ts +15 -0
  104. package/src/providers/http/client.ts +464 -0
  105. package/src/providers/http/index.ts +30 -0
  106. package/src/providers/http/server.ts +396 -0
  107. package/src/providers/http/types.ts +135 -0
  108. package/src/providers/posthog/client.ts +518 -0
  109. package/src/providers/posthog/index.ts +11 -0
  110. package/src/providers/posthog/server.ts +329 -0
  111. package/src/providers/posthog/types.ts +104 -0
  112. package/src/providers/segment/client.ts +113 -0
  113. package/src/providers/segment/index.ts +11 -0
  114. package/src/providers/segment/server.ts +115 -0
  115. package/src/providers/segment/types.ts +51 -0
  116. package/src/providers/vercel/client.ts +102 -0
  117. package/src/providers/vercel/index.ts +11 -0
  118. package/src/providers/vercel/server.ts +89 -0
  119. package/src/providers/vercel/types.ts +27 -0
  120. package/src/server/index.ts +103 -0
  121. package/src/server/manager.ts +62 -0
  122. package/src/server/next.ts +210 -0
  123. package/src/server-edge.ts +442 -0
  124. package/src/server-next.ts +39 -0
  125. package/src/server.ts +106 -0
  126. package/src/shared/emitters/ai/README.md +981 -0
  127. package/src/shared/emitters/ai/events/agent.ts +130 -0
  128. package/src/shared/emitters/ai/events/artifacts.ts +167 -0
  129. package/src/shared/emitters/ai/events/chat.ts +126 -0
  130. package/src/shared/emitters/ai/events/chatbot-ecommerce.ts +133 -0
  131. package/src/shared/emitters/ai/events/completion.ts +103 -0
  132. package/src/shared/emitters/ai/events/content-generation.ts +347 -0
  133. package/src/shared/emitters/ai/events/conversation.ts +332 -0
  134. package/src/shared/emitters/ai/events/product-features.ts +1402 -0
  135. package/src/shared/emitters/ai/events/streaming.ts +114 -0
  136. package/src/shared/emitters/ai/events/tool.ts +93 -0
  137. package/src/shared/emitters/ai/index.ts +69 -0
  138. package/src/shared/emitters/ai/track-ai-sdk.ts +74 -0
  139. package/src/shared/emitters/ai/track-ai.ts +50 -0
  140. package/src/shared/emitters/ai/types.ts +1041 -0
  141. package/src/shared/emitters/ai/utils.ts +468 -0
  142. package/src/shared/emitters/ecommerce/events/cart-checkout.ts +106 -0
  143. package/src/shared/emitters/ecommerce/events/coupon.ts +49 -0
  144. package/src/shared/emitters/ecommerce/events/engagement.ts +61 -0
  145. package/src/shared/emitters/ecommerce/events/marketplace.ts +119 -0
  146. package/src/shared/emitters/ecommerce/events/order.ts +199 -0
  147. package/src/shared/emitters/ecommerce/events/product.ts +205 -0
  148. package/src/shared/emitters/ecommerce/events/registry.ts +123 -0
  149. package/src/shared/emitters/ecommerce/events/wishlist-sharing.ts +140 -0
  150. package/src/shared/emitters/ecommerce/index.ts +46 -0
  151. package/src/shared/emitters/ecommerce/track-ecommerce.ts +53 -0
  152. package/src/shared/emitters/ecommerce/types.ts +314 -0
  153. package/src/shared/emitters/ecommerce/utils.ts +216 -0
  154. package/src/shared/emitters/emitter-types.ts +974 -0
  155. package/src/shared/emitters/emitters.ts +292 -0
  156. package/src/shared/emitters/helpers.ts +419 -0
  157. package/src/shared/emitters/index.ts +66 -0
  158. package/src/shared/index.ts +142 -0
  159. package/src/shared/ingestion/index.ts +66 -0
  160. package/src/shared/ingestion/schemas.ts +386 -0
  161. package/src/shared/ingestion/service.ts +628 -0
  162. package/src/shared/node22-features.ts +848 -0
  163. package/src/shared/providers/console-provider.ts +160 -0
  164. package/src/shared/types/base-types.ts +54 -0
  165. package/src/shared/types/console-types.ts +19 -0
  166. package/src/shared/types/posthog-types.ts +131 -0
  167. package/src/shared/types/segment-types.ts +15 -0
  168. package/src/shared/types/types.ts +397 -0
  169. package/src/shared/types/vercel-types.ts +19 -0
  170. package/src/shared/utils/config-client.ts +19 -0
  171. package/src/shared/utils/config.ts +250 -0
  172. package/src/shared/utils/emitter-adapter.ts +212 -0
  173. package/src/shared/utils/manager.test.ts +36 -0
  174. package/src/shared/utils/manager.ts +1322 -0
  175. package/src/shared/utils/posthog-bootstrap.ts +136 -0
  176. package/src/shared/utils/posthog-client-utils.ts +48 -0
  177. package/src/shared/utils/posthog-next-utils.ts +282 -0
  178. package/src/shared/utils/posthog-server-utils.ts +210 -0
  179. package/src/shared/utils/rate-limit.ts +289 -0
  180. package/src/shared/utils/security.ts +545 -0
  181. package/src/shared/utils/validation-client.ts +161 -0
  182. package/src/shared/utils/validation.ts +399 -0
  183. package/src/shared.ts +155 -0
  184. 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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"}
@@ -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