@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,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Console provider - works in both client and server environments
|
|
3
|
+
* Console provider - works in both client and server environments
|
|
4
|
+
* Useful for development and debugging
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { logDebug, logWarn } from '@repo/shared/logger';
|
|
8
|
+
|
|
9
|
+
import type { ConsoleConfig } from '../types/console-types';
|
|
10
|
+
import type { AnalyticsProvider, ProviderConfig } from '../types/types';
|
|
11
|
+
|
|
12
|
+
export class ConsoleProvider implements AnalyticsProvider {
|
|
13
|
+
readonly name = 'console';
|
|
14
|
+
private config: ConsoleConfig;
|
|
15
|
+
private isInitialized = false;
|
|
16
|
+
|
|
17
|
+
constructor(config: ProviderConfig) {
|
|
18
|
+
this.config = {
|
|
19
|
+
options: config.options
|
|
20
|
+
? {
|
|
21
|
+
enableColors:
|
|
22
|
+
typeof config.options.enableColors === 'boolean'
|
|
23
|
+
? config.options.enableColors
|
|
24
|
+
: false,
|
|
25
|
+
logLevel:
|
|
26
|
+
config.options.logLevel === 'debug' ||
|
|
27
|
+
config.options.logLevel === 'info' ||
|
|
28
|
+
config.options.logLevel === 'warn' ||
|
|
29
|
+
config.options.logLevel === 'error'
|
|
30
|
+
? config.options.logLevel
|
|
31
|
+
: 'info',
|
|
32
|
+
prefix:
|
|
33
|
+
typeof config.options.prefix === 'string' ? config.options.prefix : '[Analytics]',
|
|
34
|
+
pretty: typeof config.options.pretty === 'boolean' ? config.options.pretty : true,
|
|
35
|
+
}
|
|
36
|
+
: {
|
|
37
|
+
enableColors: false,
|
|
38
|
+
logLevel: 'info',
|
|
39
|
+
prefix: '[Analytics]',
|
|
40
|
+
pretty: true,
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
async initialize(): Promise<void> {
|
|
46
|
+
if (this.isInitialized) return;
|
|
47
|
+
|
|
48
|
+
// Reduce noisy logs: only log in development or explicit debug
|
|
49
|
+
const isDev = process.env.NODE_ENV !== 'production';
|
|
50
|
+
const isDebug = process.env.NEXT_PUBLIC_OBSERVABILITY_DEBUG === 'true';
|
|
51
|
+
if (isDev || isDebug) {
|
|
52
|
+
this.log('Console Analytics Provider initialized', {
|
|
53
|
+
config: this.config.options,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
this.isInitialized = true;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
async track(event: string, properties: any = {}, _context?: any): Promise<void> {
|
|
61
|
+
if (!this.isInitialized) {
|
|
62
|
+
logWarn('Console provider not initialized', {
|
|
63
|
+
provider: 'console',
|
|
64
|
+
operation: 'track',
|
|
65
|
+
event,
|
|
66
|
+
});
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
this.log('TRACK', {
|
|
71
|
+
event,
|
|
72
|
+
properties,
|
|
73
|
+
timestamp: new Date().toISOString(),
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
async identify(userId: string, traits: any = {}, _context?: any): Promise<void> {
|
|
78
|
+
if (!this.isInitialized) {
|
|
79
|
+
logWarn('Console provider not initialized', {
|
|
80
|
+
provider: 'console',
|
|
81
|
+
operation: 'identify',
|
|
82
|
+
userId,
|
|
83
|
+
});
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
this.log('IDENTIFY', {
|
|
88
|
+
timestamp: new Date().toISOString(),
|
|
89
|
+
traits,
|
|
90
|
+
userId,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
async page(name?: string, properties: any = {}, _context?: any): Promise<void> {
|
|
95
|
+
if (!this.isInitialized) {
|
|
96
|
+
logWarn('Console provider not initialized', {
|
|
97
|
+
provider: 'console',
|
|
98
|
+
operation: 'page',
|
|
99
|
+
metadata: { name },
|
|
100
|
+
});
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
this.log('PAGE', {
|
|
105
|
+
name,
|
|
106
|
+
properties,
|
|
107
|
+
timestamp: new Date().toISOString(),
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
async group(groupId: string, traits: any = {}, _context?: any): Promise<void> {
|
|
112
|
+
if (!this.isInitialized) {
|
|
113
|
+
logWarn('Console provider not initialized', {
|
|
114
|
+
provider: 'console',
|
|
115
|
+
operation: 'group',
|
|
116
|
+
metadata: { groupId },
|
|
117
|
+
});
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
this.log('GROUP', {
|
|
122
|
+
groupId,
|
|
123
|
+
timestamp: new Date().toISOString(),
|
|
124
|
+
traits,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
async alias(userId: string, previousId: string, _context?: any): Promise<void> {
|
|
129
|
+
if (!this.isInitialized) {
|
|
130
|
+
logWarn('Console provider not initialized', {
|
|
131
|
+
provider: 'console',
|
|
132
|
+
operation: 'alias',
|
|
133
|
+
userId,
|
|
134
|
+
metadata: { previousId },
|
|
135
|
+
});
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
this.log('ALIAS', {
|
|
140
|
+
previousId,
|
|
141
|
+
timestamp: new Date().toISOString(),
|
|
142
|
+
userId,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
private log(action: string, data: any): void {
|
|
147
|
+
const { logLevel, prefix } = this.config.options ?? { logLevel: 'info', prefix: '[Analytics]' };
|
|
148
|
+
|
|
149
|
+
if (logLevel === 'error') return; // Don't log analytics in error-only mode
|
|
150
|
+
|
|
151
|
+
const message = `${prefix} ${action}`;
|
|
152
|
+
|
|
153
|
+
// Use analytics logger instead of console directly
|
|
154
|
+
logDebug(message, {
|
|
155
|
+
provider: 'console',
|
|
156
|
+
operation: action.toLowerCase(),
|
|
157
|
+
metadata: data,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Base property types for the analytics system
|
|
3
|
+
*
|
|
4
|
+
* This module defines the foundational types that are shared between
|
|
5
|
+
* the main types module and emitter types. Extracted to prevent circular
|
|
6
|
+
* dependencies between types.ts and emitter-types.ts.
|
|
7
|
+
*
|
|
8
|
+
* @module @od-oneapp/analytics/shared/types/base-types
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Safe property value types for analytics tracking.
|
|
13
|
+
*
|
|
14
|
+
* These types ensure that only safe, serializable values are sent to analytics providers.
|
|
15
|
+
* Prevents sending functions, symbols, or other non-serializable data.
|
|
16
|
+
*/
|
|
17
|
+
export type PropertyValue = string | number | boolean | Date | null | undefined;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Property object with nested structure support.
|
|
21
|
+
*
|
|
22
|
+
* Allows nested objects and arrays of property values for complex event properties.
|
|
23
|
+
*/
|
|
24
|
+
export interface PropertyObject {
|
|
25
|
+
[key: string]: PropertyValue | PropertyValue[] | PropertyObject;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Properties type alias for event properties.
|
|
30
|
+
*
|
|
31
|
+
* Used for track events and other analytics calls that accept properties.
|
|
32
|
+
*/
|
|
33
|
+
export type Properties = PropertyObject;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* User traits for identification.
|
|
37
|
+
*
|
|
38
|
+
* Used in `identify()` calls to record user attributes like email, name, etc.
|
|
39
|
+
*/
|
|
40
|
+
export type UserTraits = Record<string, PropertyValue | PropertyValue[]>;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Group/organization traits.
|
|
44
|
+
*
|
|
45
|
+
* Used in `group()` calls to record organization or group attributes.
|
|
46
|
+
*/
|
|
47
|
+
export type GroupTraits = Record<string, PropertyValue | PropertyValue[]>;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Page properties for page view tracking.
|
|
51
|
+
*
|
|
52
|
+
* Used in `page()` calls to record page view information like URL, referrer, etc.
|
|
53
|
+
*/
|
|
54
|
+
export type PageProperties = Record<string, PropertyValue | PropertyValue[] | PropertyObject>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Console provider types
|
|
3
|
+
* Console provider types
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export interface ConsoleConfig {
|
|
7
|
+
options?:
|
|
8
|
+
| {
|
|
9
|
+
prefix?: string | undefined;
|
|
10
|
+
enableColors?: boolean | undefined;
|
|
11
|
+
logLevel?: 'debug' | 'info' | 'warn' | 'error' | undefined;
|
|
12
|
+
pretty?: boolean | undefined;
|
|
13
|
+
}
|
|
14
|
+
| undefined;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export type ConsoleOptions = Record<string, any>;
|
|
18
|
+
|
|
19
|
+
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview PostHog-specific types
|
|
3
|
+
* PostHog-specific types
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export interface PostHogConfig {
|
|
7
|
+
apiKey: string;
|
|
8
|
+
options?: {
|
|
9
|
+
// Core configuration (existing)
|
|
10
|
+
api_host?: string;
|
|
11
|
+
ui_host?: string;
|
|
12
|
+
autocapture?: boolean;
|
|
13
|
+
capture_pageview?: boolean;
|
|
14
|
+
capture_pageleave?: boolean;
|
|
15
|
+
disable_session_recording?: boolean;
|
|
16
|
+
cross_subdomain_cookie?: boolean;
|
|
17
|
+
persistence?: 'localStorage' | 'cookie' | 'memory' | 'localStorage+cookie';
|
|
18
|
+
persistence_name?: string;
|
|
19
|
+
loaded?: (posthog: any) => void;
|
|
20
|
+
|
|
21
|
+
// Privacy & GDPR compliance (NEW SECTION)
|
|
22
|
+
person_profiles?: 'always' | 'never' | 'identified_only';
|
|
23
|
+
opt_in_site_apps?: boolean;
|
|
24
|
+
respect_dnt?: boolean;
|
|
25
|
+
|
|
26
|
+
// Performance optimizations (NEW)
|
|
27
|
+
uuid_version?: 'v4' | 'v7';
|
|
28
|
+
request_batching?: boolean;
|
|
29
|
+
batch_flush_interval_ms?: number;
|
|
30
|
+
|
|
31
|
+
// Session recording configuration (NEW SECTION)
|
|
32
|
+
session_recording?: {
|
|
33
|
+
maskAllInputs?: boolean;
|
|
34
|
+
maskInputOptions?: {
|
|
35
|
+
color?: boolean;
|
|
36
|
+
date?: boolean;
|
|
37
|
+
'datetime-local'?: boolean;
|
|
38
|
+
email?: boolean;
|
|
39
|
+
month?: boolean;
|
|
40
|
+
number?: boolean;
|
|
41
|
+
password?: boolean;
|
|
42
|
+
range?: boolean;
|
|
43
|
+
search?: boolean;
|
|
44
|
+
tel?: boolean;
|
|
45
|
+
text?: boolean;
|
|
46
|
+
time?: boolean;
|
|
47
|
+
url?: boolean;
|
|
48
|
+
week?: boolean;
|
|
49
|
+
};
|
|
50
|
+
recordCrossOriginIframes?: boolean;
|
|
51
|
+
recordCanvas?: boolean;
|
|
52
|
+
maskTextSelector?: string;
|
|
53
|
+
blockSelector?: string;
|
|
54
|
+
sampling?: {
|
|
55
|
+
minimumDurationMs?: number;
|
|
56
|
+
sampleRate?: number;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
// Event processing hooks (NEW)
|
|
61
|
+
before_send?: (event: any) => any | null;
|
|
62
|
+
sanitize_properties?: (properties: any, event: string) => any;
|
|
63
|
+
|
|
64
|
+
// Debug and development (NEW)
|
|
65
|
+
debug?: boolean;
|
|
66
|
+
advanced_disable_decide?: boolean;
|
|
67
|
+
|
|
68
|
+
// Server-side specific options
|
|
69
|
+
flushAt?: number;
|
|
70
|
+
flushInterval?: number;
|
|
71
|
+
|
|
72
|
+
// Next.js specific options
|
|
73
|
+
fetch_options?: {
|
|
74
|
+
cache?: RequestCache;
|
|
75
|
+
next?: {
|
|
76
|
+
revalidate?: number;
|
|
77
|
+
tags?: string[];
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
// Bootstrap options
|
|
82
|
+
bootstrap?: BootstrapData;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export interface ExperimentInfo {
|
|
87
|
+
key: string;
|
|
88
|
+
payload?: Record<string, any>;
|
|
89
|
+
variant?: string | boolean;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Bootstrap data for server-side rendering
|
|
94
|
+
*/
|
|
95
|
+
export interface BootstrapData {
|
|
96
|
+
distinctID: string;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* PostHog cookie structure
|
|
101
|
+
*/
|
|
102
|
+
export interface PostHogCookie {
|
|
103
|
+
$sesid?: [number, string, number];
|
|
104
|
+
$session_id?: string;
|
|
105
|
+
$window_id?: string;
|
|
106
|
+
distinct_id: string;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Enhanced PostHog provider interface
|
|
111
|
+
*/
|
|
112
|
+
export interface EnhancedPostHogProvider {
|
|
113
|
+
alias(userId: string, previousId: string): Promise<void>;
|
|
114
|
+
group(groupId: string, traits?: any): Promise<void>;
|
|
115
|
+
identify(userId: string, traits?: any): Promise<void>;
|
|
116
|
+
page(name?: string, properties?: any): Promise<void>;
|
|
117
|
+
// Standard analytics methods
|
|
118
|
+
track(event: string, properties?: any): Promise<void>;
|
|
119
|
+
|
|
120
|
+
// Experiment methods
|
|
121
|
+
getActiveExperiments(userId?: string): Promise<ExperimentInfo[]>;
|
|
122
|
+
|
|
123
|
+
// Bootstrap methods (server-side)
|
|
124
|
+
getBootstrapData(distinctId: string): Promise<BootstrapData>;
|
|
125
|
+
|
|
126
|
+
// Utility methods
|
|
127
|
+
reset(): void;
|
|
128
|
+
shutdown(): Promise<void>;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export type PostHogOptions = Record<string, any>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Segment-specific types
|
|
3
|
+
* Segment-specific types
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export interface SegmentConfig {
|
|
7
|
+
options?: {
|
|
8
|
+
integrations?: Record<string, any>;
|
|
9
|
+
context?: Record<string, any>;
|
|
10
|
+
anonymousId?: string;
|
|
11
|
+
};
|
|
12
|
+
writeKey: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export type SegmentOptions = Record<string, any>;
|