taro-posthog-sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,71 @@
1
+ # PostHog Mini Program
2
+
3
+ Minimal PostHog client for Taro mini apps.
4
+
5
+ This package is intentionally separate from `posthog-js`. It avoids browser-only APIs such as `window`, `document`, `history`, `fetch`, cookies, `localStorage`, Session Replay, autocapture, surveys, feature flags, and exception autocapture. It keeps only the basics needed to send events from a Taro mini app.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ pnpm add @posthog/miniprogram
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ Initialize once in your Taro app, usually in `app.ts` or `app.js`:
16
+
17
+ ```ts
18
+ import PostHog from '@posthog/miniprogram'
19
+
20
+ export const posthog = new PostHog('YOUR_PROJECT_API_KEY', {
21
+ api_host: 'https://us.i.posthog.com',
22
+ capture_pageview: true,
23
+ })
24
+ ```
25
+
26
+ Capture custom events:
27
+
28
+ ```ts
29
+ posthog.capture('checkout started', {
30
+ product_id: 'sku_123',
31
+ })
32
+ ```
33
+
34
+ Identify a user after login:
35
+
36
+ ```ts
37
+ posthog.identify('user_123', {
38
+ plan: 'pro',
39
+ })
40
+ ```
41
+
42
+ ## Screen Views
43
+
44
+ When available, the SDK uses `Taro.onAppRoute` to capture `$screen` events and `Taro.getCurrentPages()` to populate route information. It also captures the initial screen after initialization.
45
+
46
+ If your Taro runtime does not expose `onAppRoute`, call `captureScreen` from page lifecycle handlers:
47
+
48
+ ```ts
49
+ Page({
50
+ onShow() {
51
+ posthog.captureScreen()
52
+ },
53
+ })
54
+ ```
55
+
56
+ ## API
57
+
58
+ - `capture(event, properties?, options?)`
59
+ - `captureScreen(route?, properties?)`
60
+ - `capturePageview(route?, properties?)`
61
+ - `identify(distinctId, userPropertiesToSet?, userPropertiesToSetOnce?)`
62
+ - `alias(alias, distinctId?)`
63
+ - `register(properties)`
64
+ - `unregister(property)`
65
+ - `reset()`
66
+ - `flush()`
67
+ - `stop()`
68
+
69
+ Events are persisted with `Taro.setStorageSync` and sent to PostHog with `Taro.request` at `/batch/`.
70
+
71
+ The SDK also adds basic app context from `Taro.getSystemInfoSync()`, including screen size, viewport size, device model, manufacturer, OS, pixel ratio, SDK version, language, and theme.
package/dist/index.cjs ADDED
@@ -0,0 +1,363 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var Taro = require('@tarojs/taro');
6
+
7
+ const version = "1.0.0";
8
+
9
+ const DEFAULT_HOST = 'https://us.i.posthog.com';
10
+ const DEFAULT_FLUSH_AT = 20;
11
+ const DEFAULT_FLUSH_INTERVAL = 10000;
12
+ const DEFAULT_REQUEST_TIMEOUT = 10000;
13
+ const LIBRARY = 'miniprogram';
14
+ const taro = Taro;
15
+ const trimTrailingSlash = value => value.replace(/\/+$/, '');
16
+ const now = () => new Date().toISOString();
17
+ const isRecord = value => !!value && typeof value === 'object' && !Array.isArray(value);
18
+ const stringifyQuery = query => {
19
+ if (!query) {
20
+ return '';
21
+ }
22
+ const parts = Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);
23
+ return parts.length ? `?${parts.join('&')}` : '';
24
+ };
25
+ const createUuid = () => {
26
+ const template = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx';
27
+ return template.replace(/[xy]/g, char => {
28
+ const random = Math.floor(Math.random() * 16);
29
+ const value = char === 'x' ? random : random & 0x3 | 0x8;
30
+ return value.toString(16);
31
+ });
32
+ };
33
+ const getCurrentTaroPages = taro => {
34
+ try {
35
+ if (typeof taro?.getCurrentPages === 'function') {
36
+ return taro.getCurrentPages();
37
+ }
38
+ return typeof getCurrentPages === 'function' ? getCurrentPages() : [];
39
+ } catch {
40
+ return [];
41
+ }
42
+ };
43
+ const normalizeRoute = (route, taro) => {
44
+ if (route?.path || route?.route) {
45
+ return route;
46
+ }
47
+ const pages = getCurrentTaroPages(taro);
48
+ const currentPage = pages[pages.length - 1];
49
+ const path = currentPage?.route || currentPage?.path || currentPage?.$taroPath;
50
+ return {
51
+ path,
52
+ route: path,
53
+ query: currentPage?.options
54
+ };
55
+ };
56
+ const getString = value => typeof value === 'string' && value ? value : undefined;
57
+ const getNumber = value => typeof value === 'number' ? value : undefined;
58
+ class PostHogMiniProgram {
59
+ constructor(apiKey, options = {}) {
60
+ this.state = {};
61
+ this.disabled = false;
62
+ this.apiKey = (apiKey || '').trim();
63
+ this.options = options;
64
+ this.host = trimTrailingSlash(options.api_host || DEFAULT_HOST);
65
+ this.flushAt = options.flush_at ?? DEFAULT_FLUSH_AT;
66
+ this.flushInterval = options.flush_interval ?? DEFAULT_FLUSH_INTERVAL;
67
+ this.requestTimeout = options.request_timeout ?? DEFAULT_REQUEST_TIMEOUT;
68
+ this.storageKey = `ph_${options.persistence_name || this.apiKey}_miniprogram`;
69
+ this.disabled = !this.apiKey;
70
+ this.state = this.readState();
71
+ this.setupIdentity();
72
+ this.persistState();
73
+ if (options.capture_pageview !== false) {
74
+ this.installPageviewTracking();
75
+ }
76
+ this.appHideHandler = () => {
77
+ void this.flush().catch(() => undefined);
78
+ };
79
+ taro.onAppHide?.(this.appHideHandler);
80
+ options.loaded?.(this);
81
+ }
82
+ capture(event, properties = {}, options = {}) {
83
+ if (this.disabled || !event) {
84
+ return;
85
+ }
86
+ const eventPayload = {
87
+ event,
88
+ properties: {
89
+ ...(this.state.super_properties || {}),
90
+ ...this.getSystemInfoProperties(),
91
+ ...properties,
92
+ distinct_id: this.getDistinctId(),
93
+ $device_id: this.getDeviceId(),
94
+ $lib: LIBRARY,
95
+ $lib_version: version,
96
+ ...(options.disable_geoip ?? this.options.disable_geoip ? {
97
+ $geoip_disable: true
98
+ } : {})
99
+ },
100
+ distinct_id: this.getDistinctId(),
101
+ timestamp: this.normalizeTimestamp(options.timestamp),
102
+ uuid: options.uuid || createUuid(),
103
+ type: 'capture',
104
+ library: LIBRARY,
105
+ library_version: version
106
+ };
107
+ const preparedEvent = this.options.before_send ? this.options.before_send(eventPayload) : eventPayload;
108
+ if (!preparedEvent) {
109
+ return;
110
+ }
111
+ this.enqueue(preparedEvent);
112
+ if (options.send_instantly || this.getQueue().length >= this.flushAt) {
113
+ void this.flush().catch(error => this.log('flush failed', error));
114
+ } else {
115
+ this.scheduleFlush();
116
+ }
117
+ return preparedEvent;
118
+ }
119
+ capturePageview(route, properties = {}) {
120
+ return this.captureScreen(route, properties);
121
+ }
122
+ captureScreen(route, properties = {}) {
123
+ const normalizedRoute = normalizeRoute(route, taro);
124
+ const path = normalizedRoute.path || normalizedRoute.route || '';
125
+ const query = stringifyQuery(normalizedRoute.query);
126
+ const currentUrl = `${path}${query}`;
127
+ if (currentUrl && currentUrl === this.lastPagePath) {
128
+ return;
129
+ }
130
+ const pageviewProperties = {
131
+ $current_url: currentUrl,
132
+ $pathname: path,
133
+ $referrer: '$direct',
134
+ $screen_name: currentUrl || path,
135
+ taro_open_type: normalizedRoute.openType,
136
+ ...(this.options.get_pageview_properties?.(normalizedRoute) || {}),
137
+ ...properties
138
+ };
139
+ this.lastPagePath = currentUrl;
140
+ return this.capture('$screen', pageviewProperties);
141
+ }
142
+ identify(distinctId, userPropertiesToSet, userPropertiesToSetOnce) {
143
+ if (!distinctId) {
144
+ return;
145
+ }
146
+ const previousDistinctId = this.getDistinctId();
147
+ this.state.distinct_id = distinctId;
148
+ this.persistState();
149
+ if (previousDistinctId !== distinctId) {
150
+ this.capture('$identify', {
151
+ distinct_id: distinctId,
152
+ $anon_distinct_id: previousDistinctId,
153
+ $set: userPropertiesToSet,
154
+ $set_once: userPropertiesToSetOnce
155
+ });
156
+ }
157
+ }
158
+ alias(alias, distinctId = this.getDistinctId()) {
159
+ if (!alias) {
160
+ return;
161
+ }
162
+ this.capture('$create_alias', {
163
+ alias,
164
+ distinct_id: distinctId
165
+ });
166
+ }
167
+ register(properties) {
168
+ this.state.super_properties = {
169
+ ...(this.state.super_properties || {}),
170
+ ...properties
171
+ };
172
+ this.persistState();
173
+ }
174
+ unregister(property) {
175
+ if (!this.state.super_properties) {
176
+ return;
177
+ }
178
+ delete this.state.super_properties[property];
179
+ this.persistState();
180
+ }
181
+ reset() {
182
+ const queue = this.getQueue();
183
+ const anonymousId = createUuid();
184
+ this.state = {
185
+ anonymous_id: anonymousId,
186
+ distinct_id: anonymousId,
187
+ device_id: anonymousId,
188
+ queue
189
+ };
190
+ this.persistState();
191
+ }
192
+ getDistinctId() {
193
+ return this.state.distinct_id || this.state.anonymous_id || '';
194
+ }
195
+ getDeviceId() {
196
+ return this.state.device_id || this.getDistinctId();
197
+ }
198
+ installPageviewTracking(options = {}) {
199
+ if (options.capture_initial !== false) {
200
+ setTimeout(() => this.captureScreen(), 0);
201
+ }
202
+ if (!taro.onAppRoute || this.appRouteHandler) {
203
+ return;
204
+ }
205
+ this.appRouteHandler = route => {
206
+ this.captureScreen(route);
207
+ };
208
+ taro.onAppRoute(this.appRouteHandler);
209
+ }
210
+ async flush() {
211
+ if (this.disabled) {
212
+ return;
213
+ }
214
+ if (this.flushPromise) {
215
+ return this.flushPromise;
216
+ }
217
+ this.clearFlushTimer();
218
+ this.flushPromise = this.flushQueue().finally(() => {
219
+ this.flushPromise = undefined;
220
+ });
221
+ return this.flushPromise;
222
+ }
223
+ stop() {
224
+ this.clearFlushTimer();
225
+ if (this.appRouteHandler) {
226
+ taro.offAppRoute?.(this.appRouteHandler);
227
+ this.appRouteHandler = undefined;
228
+ }
229
+ if (this.appHideHandler) {
230
+ taro.offAppHide?.(this.appHideHandler);
231
+ this.appHideHandler = undefined;
232
+ }
233
+ }
234
+ setupIdentity() {
235
+ if (this.state.distinct_id) {
236
+ return;
237
+ }
238
+ const bootstrapDistinctId = this.options.bootstrap?.distinctID;
239
+ const anonymousId = bootstrapDistinctId && !this.options.bootstrap?.isIdentifiedID ? bootstrapDistinctId : createUuid();
240
+ this.state.anonymous_id = this.state.anonymous_id || anonymousId;
241
+ this.state.device_id = this.state.device_id || this.state.anonymous_id;
242
+ this.state.distinct_id = bootstrapDistinctId || this.state.anonymous_id;
243
+ }
244
+ normalizeTimestamp(timestamp) {
245
+ if (timestamp instanceof Date) {
246
+ return timestamp.toISOString();
247
+ }
248
+ return timestamp || now();
249
+ }
250
+ getSystemInfoProperties() {
251
+ if (this.systemInfoProperties) {
252
+ return this.systemInfoProperties;
253
+ }
254
+ let systemInfo = {};
255
+ try {
256
+ systemInfo = taro.getSystemInfoSync?.() || {};
257
+ } catch {
258
+ systemInfo = {};
259
+ }
260
+ this.systemInfoProperties = {
261
+ $screen_height: getNumber(systemInfo.screenHeight),
262
+ $screen_width: getNumber(systemInfo.screenWidth),
263
+ $viewport_height: getNumber(systemInfo.windowHeight),
264
+ $viewport_width: getNumber(systemInfo.windowWidth),
265
+ $device_model: getString(systemInfo.model),
266
+ $device_manufacturer: getString(systemInfo.brand),
267
+ $os: getString(systemInfo.platform),
268
+ $os_version: getString(systemInfo.system),
269
+ taro_pixel_ratio: getNumber(systemInfo.pixelRatio),
270
+ taro_sdk_version: getString(systemInfo.SDKVersion),
271
+ taro_language: getString(systemInfo.language),
272
+ taro_theme: getString(systemInfo.theme)
273
+ };
274
+ return this.systemInfoProperties;
275
+ }
276
+ enqueue(event) {
277
+ this.state.queue = [...this.getQueue(), event];
278
+ this.persistState();
279
+ this.log('queued event', event);
280
+ }
281
+ getQueue() {
282
+ return this.state.queue || [];
283
+ }
284
+ scheduleFlush() {
285
+ if (this.flushTimer || this.flushInterval <= 0) {
286
+ return;
287
+ }
288
+ this.flushTimer = setTimeout(() => {
289
+ void this.flush().catch(error => this.log('flush failed', error));
290
+ }, this.flushInterval);
291
+ }
292
+ clearFlushTimer() {
293
+ if (this.flushTimer) {
294
+ clearTimeout(this.flushTimer);
295
+ this.flushTimer = undefined;
296
+ }
297
+ }
298
+ async flushQueue() {
299
+ while (this.getQueue().length > 0) {
300
+ const batch = this.getQueue().slice(0, this.flushAt);
301
+ await this.sendBatch(batch);
302
+ this.state.queue = this.getQueue().slice(batch.length);
303
+ this.persistState();
304
+ }
305
+ }
306
+ sendBatch(batch) {
307
+ return new Promise((resolve, reject) => {
308
+ taro.request({
309
+ url: `${this.host}/batch/`,
310
+ method: 'POST',
311
+ data: {
312
+ api_key: this.apiKey,
313
+ batch,
314
+ sent_at: now()
315
+ },
316
+ header: {
317
+ 'Content-Type': 'application/json'
318
+ },
319
+ timeout: this.requestTimeout,
320
+ success: result => {
321
+ if (result.statusCode >= 200 && result.statusCode < 300) {
322
+ resolve();
323
+ } else {
324
+ reject(new Error(`PostHog request failed with status ${result.statusCode}`));
325
+ }
326
+ },
327
+ fail: reject
328
+ });
329
+ });
330
+ }
331
+ readState() {
332
+ try {
333
+ const value = taro.getStorageSync?.(this.storageKey);
334
+ if (typeof value === 'string') {
335
+ const parsed = JSON.parse(value);
336
+ return isRecord(parsed) ? parsed : {};
337
+ }
338
+ return isRecord(value) ? value : {};
339
+ } catch {
340
+ return {};
341
+ }
342
+ }
343
+ persistState() {
344
+ try {
345
+ taro.setStorageSync?.(this.storageKey, JSON.stringify(this.state));
346
+ } catch {
347
+ return;
348
+ }
349
+ }
350
+ log(message, payload) {
351
+ if (this.options.debug) {
352
+ console.log(`[PostHog MiniProgram] ${message}`, payload);
353
+ }
354
+ }
355
+ }
356
+ const init = (apiKey, options) => {
357
+ return new PostHogMiniProgram(apiKey, options);
358
+ };
359
+
360
+ exports.PostHogMiniProgram = PostHogMiniProgram;
361
+ exports.default = PostHogMiniProgram;
362
+ exports.init = init;
363
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/version.ts","../src/index.ts"],"sourcesContent":[null,null],"names":["version","DEFAULT_HOST","DEFAULT_FLUSH_AT","DEFAULT_FLUSH_INTERVAL","DEFAULT_REQUEST_TIMEOUT","LIBRARY","taro","Taro","trimTrailingSlash","value","replace","now","Date","toISOString","isRecord","Array","isArray","stringifyQuery","query","parts","Object","entries","filter","undefined","map","key","encodeURIComponent","String","length","join","createUuid","template","char","random","Math","floor","toString","getCurrentTaroPages","getCurrentPages","normalizeRoute","route","path","pages","currentPage","$taroPath","options","getString","getNumber","PostHogMiniProgram","constructor","apiKey","state","disabled","trim","host","api_host","flushAt","flush_at","flushInterval","flush_interval","requestTimeout","request_timeout","storageKey","persistence_name","readState","setupIdentity","persistState","capture_pageview","installPageviewTracking","appHideHandler","flush","catch","onAppHide","loaded","capture","event","properties","eventPayload","super_properties","getSystemInfoProperties","distinct_id","getDistinctId","$device_id","getDeviceId","$lib","$lib_version","disable_geoip","$geoip_disable","timestamp","normalizeTimestamp","uuid","type","library","library_version","preparedEvent","before_send","enqueue","send_instantly","getQueue","error","log","scheduleFlush","capturePageview","captureScreen","normalizedRoute","currentUrl","lastPagePath","pageviewProperties","$current_url","$pathname","$referrer","$screen_name","taro_open_type","openType","get_pageview_properties","identify","distinctId","userPropertiesToSet","userPropertiesToSetOnce","previousDistinctId","$anon_distinct_id","$set","$set_once","alias","register","unregister","property","reset","queue","anonymousId","anonymous_id","device_id","capture_initial","setTimeout","onAppRoute","appRouteHandler","flushPromise","clearFlushTimer","flushQueue","finally","stop","offAppRoute","offAppHide","bootstrapDistinctId","bootstrap","distinctID","isIdentifiedID","systemInfoProperties","systemInfo","getSystemInfoSync","$screen_height","screenHeight","$screen_width","screenWidth","$viewport_height","windowHeight","$viewport_width","windowWidth","$device_model","model","$device_manufacturer","brand","$os","platform","$os_version","system","taro_pixel_ratio","pixelRatio","taro_sdk_version","SDKVersion","taro_language","language","taro_theme","theme","flushTimer","clearTimeout","batch","slice","sendBatch","Promise","resolve","reject","request","url","method","data","api_key","sent_at","header","timeout","success","result","statusCode","Error","fail","getStorageSync","parsed","JSON","parse","setStorageSync","stringify","message","payload","debug","console","init"],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ type JsonValue = string | number | boolean | null | JsonValue[] | {
2
+ [key: string]: JsonValue | undefined;
3
+ };
4
+ type Properties = Record<string, JsonValue | undefined>;
5
+ interface CaptureOptions {
6
+ timestamp?: Date | string;
7
+ uuid?: string;
8
+ send_instantly?: boolean;
9
+ disable_geoip?: boolean;
10
+ }
11
+ interface CaptureResult {
12
+ event: string;
13
+ properties: Properties;
14
+ distinct_id: string;
15
+ timestamp: string;
16
+ uuid: string;
17
+ type: string;
18
+ library: string;
19
+ library_version: string;
20
+ }
21
+ type BeforeSendFn = (event: CaptureResult) => CaptureResult | null | undefined;
22
+ interface BootstrapOptions {
23
+ distinctID?: string;
24
+ isIdentifiedID?: boolean;
25
+ }
26
+ interface PageviewRoute {
27
+ path?: string;
28
+ route?: string;
29
+ query?: Record<string, string | number | boolean | undefined>;
30
+ openType?: string;
31
+ }
32
+ interface PageviewTrackingOptions {
33
+ capture_initial?: boolean;
34
+ }
35
+ interface PostHogMiniProgramOptions {
36
+ api_host?: string;
37
+ flush_at?: number;
38
+ flush_interval?: number;
39
+ request_timeout?: number;
40
+ persistence_name?: string;
41
+ capture_pageview?: boolean;
42
+ debug?: boolean;
43
+ disable_geoip?: boolean;
44
+ bootstrap?: BootstrapOptions;
45
+ before_send?: BeforeSendFn;
46
+ get_pageview_properties?: (route: PageviewRoute) => Properties;
47
+ loaded?: (posthog: PostHogMiniProgramLike) => void;
48
+ }
49
+ interface PostHogMiniProgramLike {
50
+ capture(event: string, properties?: Properties, options?: CaptureOptions): CaptureResult | undefined;
51
+ captureScreen(route?: PageviewRoute, properties?: Properties): CaptureResult | undefined;
52
+ capturePageview(route?: PageviewRoute, properties?: Properties): CaptureResult | undefined;
53
+ flush(): Promise<void>;
54
+ }
55
+ interface TaroPage {
56
+ route?: string;
57
+ path?: string;
58
+ $taroPath?: string;
59
+ options?: Record<string, string | number | boolean | undefined>;
60
+ }
61
+ interface PersistedState {
62
+ distinct_id?: string;
63
+ anonymous_id?: string;
64
+ device_id?: string;
65
+ super_properties?: Properties;
66
+ queue?: CaptureResult[];
67
+ }
68
+
69
+ declare class PostHogMiniProgram {
70
+ private readonly apiKey;
71
+ private readonly host;
72
+ private readonly flushAt;
73
+ private readonly flushInterval;
74
+ private readonly requestTimeout;
75
+ private readonly storageKey;
76
+ private readonly options;
77
+ private state;
78
+ private flushTimer?;
79
+ private flushPromise?;
80
+ private lastPagePath?;
81
+ private systemInfoProperties?;
82
+ private disabled;
83
+ private appRouteHandler?;
84
+ private appHideHandler?;
85
+ constructor(apiKey: string, options?: PostHogMiniProgramOptions);
86
+ capture(event: string, properties?: Properties, options?: CaptureOptions): CaptureResult | undefined;
87
+ capturePageview(route?: PageviewRoute, properties?: Properties): CaptureResult | undefined;
88
+ captureScreen(route?: PageviewRoute, properties?: Properties): CaptureResult | undefined;
89
+ identify(distinctId: string, userPropertiesToSet?: Properties, userPropertiesToSetOnce?: Properties): void;
90
+ alias(alias: string, distinctId?: string): void;
91
+ register(properties: Properties): void;
92
+ unregister(property: string): void;
93
+ reset(): void;
94
+ getDistinctId(): string;
95
+ getDeviceId(): string;
96
+ installPageviewTracking(options?: PageviewTrackingOptions): void;
97
+ flush(): Promise<void>;
98
+ stop(): void;
99
+ private setupIdentity;
100
+ private normalizeTimestamp;
101
+ private getSystemInfoProperties;
102
+ private enqueue;
103
+ private getQueue;
104
+ private scheduleFlush;
105
+ private clearFlushTimer;
106
+ private flushQueue;
107
+ private sendBatch;
108
+ private readState;
109
+ private persistState;
110
+ private log;
111
+ }
112
+ declare const init: (apiKey: string, options?: PostHogMiniProgramOptions) => PostHogMiniProgram;
113
+
114
+ export { type BeforeSendFn, type BootstrapOptions, type CaptureOptions, type CaptureResult, type JsonValue, type PageviewRoute, type PageviewTrackingOptions, type PersistedState, PostHogMiniProgram, type PostHogMiniProgramLike, type PostHogMiniProgramOptions, type Properties, type TaroPage, PostHogMiniProgram as default, init };