@leanbase-giangnd/js 0.0.7 → 0.1.1
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/dist/index.cjs +2791 -265
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +5439 -172
- package/dist/index.mjs +2792 -266
- package/dist/index.mjs.map +1 -1
- package/dist/leanbase.iife.js +3427 -276
- package/dist/leanbase.iife.js.map +1 -1
- package/package.json +6 -5
- package/src/extensions/replay/extension-shim.ts +35 -0
- package/src/extensions/replay/external/config.ts +33 -25
- package/src/extensions/replay/external/lazy-loaded-session-recorder.ts +78 -71
- package/src/extensions/replay/external/mutation-throttler.ts +4 -1
- package/src/extensions/replay/external/network-plugin.ts +10 -3
- package/src/extensions/replay/external/triggerMatching.ts +13 -13
- package/src/extensions/replay/rrweb-plugins/patch.ts +0 -7
- package/src/extensions/replay/session-recording.ts +29 -58
- package/src/leanbase.ts +35 -48
- package/src/types/fflate.d.ts +5 -0
- package/src/types/rrweb-record.d.ts +8 -0
- package/src/types.ts +130 -117
- package/src/utils/logger.ts +13 -51
- package/src/version.ts +1 -1
- package/src/extensions/replay/external/README.md +0 -5
- package/src/extensions/utils/stylesheet-loader.ts +0 -27
- package/src/posthog-core.ts +0 -12
- package/src/utils/globals.ts +0 -239
- package/src/utils/request-router.ts +0 -77
- package/src/utils/type-utils.ts +0 -139
package/src/types.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { FeatureFlagValue, JsonType, PostHogCoreOptions } from '@posthog/core'
|
|
2
2
|
import { KnownUnsafeEditableEvent } from '@posthog/core'
|
|
3
|
+
import type { recordOptions } from './extensions/replay/types/rrweb'
|
|
3
4
|
import { Leanbase } from './leanbase'
|
|
4
5
|
|
|
5
6
|
export const COPY_AUTOCAPTURE_EVENT = '$copy_autocapture'
|
|
@@ -101,10 +102,14 @@ export interface LeanbaseConfig extends Partial<PostHogCoreOptions> {
|
|
|
101
102
|
*/
|
|
102
103
|
host?: string
|
|
103
104
|
/**
|
|
104
|
-
*
|
|
105
|
+
* API host (alias) used by some modules; kept for compatibility with upstream
|
|
105
106
|
*/
|
|
106
|
-
api_host
|
|
107
|
-
|
|
107
|
+
api_host?: string
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* UI host override
|
|
111
|
+
*/
|
|
112
|
+
ui_host?: string
|
|
108
113
|
|
|
109
114
|
/**
|
|
110
115
|
* The token for your Leanbase project.
|
|
@@ -127,6 +132,22 @@ export interface LeanbaseConfig extends Partial<PostHogCoreOptions> {
|
|
|
127
132
|
*/
|
|
128
133
|
autocapture: boolean | AutocaptureConfig
|
|
129
134
|
|
|
135
|
+
/**
|
|
136
|
+
* Enables or disables session recording. When true, session recording is disabled on the client.
|
|
137
|
+
* @default false
|
|
138
|
+
*/
|
|
139
|
+
disable_session_recording?: boolean
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Session recording configuration
|
|
143
|
+
*/
|
|
144
|
+
session_recording?: SessionRecordingOptions
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Enable console.log recording for session replay (can be controlled remotely). Undefined defers to server.
|
|
148
|
+
*/
|
|
149
|
+
enable_recording_console_log?: boolean
|
|
150
|
+
|
|
130
151
|
/**
|
|
131
152
|
* Determines whether Leanbase should capture pageview events automatically.
|
|
132
153
|
* Can be:
|
|
@@ -138,6 +159,11 @@ export interface LeanbaseConfig extends Partial<PostHogCoreOptions> {
|
|
|
138
159
|
*/
|
|
139
160
|
capture_pageview: boolean | 'history_change'
|
|
140
161
|
|
|
162
|
+
/**
|
|
163
|
+
* Enables performance capture. When true, network performance timing can be forwarded to replay when enabled.
|
|
164
|
+
*/
|
|
165
|
+
capture_performance?: boolean | { network_timing?: boolean }
|
|
166
|
+
|
|
141
167
|
/**
|
|
142
168
|
* Determines the session idle timeout in seconds.
|
|
143
169
|
* Any new event that's happened after this timeout will create a new session.
|
|
@@ -193,26 +219,6 @@ export interface LeanbaseConfig extends Partial<PostHogCoreOptions> {
|
|
|
193
219
|
*/
|
|
194
220
|
persistence_name: string
|
|
195
221
|
|
|
196
|
-
/**
|
|
197
|
-
* Session recording options (browser parity)
|
|
198
|
-
*/
|
|
199
|
-
session_recording: SessionRecordingOptions
|
|
200
|
-
|
|
201
|
-
/**
|
|
202
|
-
* Backwards-compatible flag to disable session recording
|
|
203
|
-
*/
|
|
204
|
-
disable_session_recording?: boolean
|
|
205
|
-
|
|
206
|
-
/**
|
|
207
|
-
* Controls performance capture options used by replay/network tracing
|
|
208
|
-
*/
|
|
209
|
-
capture_performance?: boolean | { network_timing?: boolean; web_vitals?: boolean }
|
|
210
|
-
|
|
211
|
-
/**
|
|
212
|
-
* Enable recording of console logs for session replay
|
|
213
|
-
*/
|
|
214
|
-
enable_recording_console_log?: boolean
|
|
215
|
-
|
|
216
222
|
/**
|
|
217
223
|
* Prevent autocapture from capturing any attribute names on elements.
|
|
218
224
|
*
|
|
@@ -355,15 +361,81 @@ export interface LeanbaseConfig extends Partial<PostHogCoreOptions> {
|
|
|
355
361
|
* @param instance - The Leanbase instance that has been loaded.
|
|
356
362
|
*/
|
|
357
363
|
loaded: (instance: Leanbase) => void
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
export type SessionRecordingCanvasOptions = {
|
|
367
|
+
recordCanvas?: boolean | null
|
|
368
|
+
canvasFps?: number | null
|
|
369
|
+
canvasQuality?: string | null
|
|
370
|
+
}
|
|
358
371
|
|
|
372
|
+
export interface SessionRecordingOptions {
|
|
373
|
+
blockClass?: string | RegExp
|
|
374
|
+
blockSelector?: string | null
|
|
375
|
+
ignoreClass?: string | RegExp
|
|
376
|
+
maskTextClass?: string | RegExp
|
|
377
|
+
maskTextSelector?: string | null
|
|
378
|
+
maskTextFn?: ((text: string, element?: HTMLElement) => string) | null
|
|
379
|
+
maskAllInputs?: boolean
|
|
380
|
+
maskInputOptions?: recordOptions['maskInputOptions']
|
|
381
|
+
maskInputFn?: ((text: string, element?: HTMLElement) => string) | null
|
|
382
|
+
slimDOMOptions?: recordOptions['slimDOMOptions']
|
|
383
|
+
collectFonts?: boolean
|
|
384
|
+
inlineStylesheet?: boolean
|
|
385
|
+
recordCrossOriginIframes?: boolean
|
|
386
|
+
recordHeaders?: boolean
|
|
387
|
+
recordBody?: boolean
|
|
388
|
+
captureCanvas?: SessionRecordingCanvasOptions
|
|
389
|
+
maskCapturedNetworkRequestFn?: ((data: CapturedNetworkRequest) => CapturedNetworkRequest | null | undefined) | null
|
|
390
|
+
maskNetworkRequestFn?: ((data: NetworkRequest) => NetworkRequest | null | undefined) | null
|
|
391
|
+
full_snapshot_interval_millis?: number
|
|
392
|
+
compress_events?: boolean
|
|
393
|
+
session_idle_threshold_ms?: number
|
|
394
|
+
__mutationThrottlerRefillRate?: number
|
|
395
|
+
__mutationThrottlerBucketSize?: number
|
|
359
396
|
/**
|
|
360
|
-
*
|
|
397
|
+
* Force-enable session recording locally even if remote config disables it.
|
|
398
|
+
* Useful for dev/testing when the backend has sessionRecording set to false.
|
|
361
399
|
*/
|
|
362
|
-
|
|
400
|
+
forceClientRecording?: boolean
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
export type SessionRecordingPersistedConfig = Omit<
|
|
404
|
+
SessionRecordingRemoteConfig,
|
|
405
|
+
| 'recordCanvas'
|
|
406
|
+
| 'canvasFps'
|
|
407
|
+
| 'canvasQuality'
|
|
408
|
+
| 'networkPayloadCapture'
|
|
409
|
+
| 'sampleRate'
|
|
410
|
+
| 'minimumDurationMilliseconds'
|
|
411
|
+
> & {
|
|
412
|
+
enabled: boolean
|
|
413
|
+
networkPayloadCapture: SessionRecordingRemoteConfig['networkPayloadCapture'] & {
|
|
414
|
+
capturePerformance: RemoteConfig['capturePerformance']
|
|
415
|
+
}
|
|
416
|
+
canvasRecording: {
|
|
417
|
+
enabled: SessionRecordingRemoteConfig['recordCanvas']
|
|
418
|
+
fps: SessionRecordingRemoteConfig['canvasFps']
|
|
419
|
+
quality: SessionRecordingRemoteConfig['canvasQuality']
|
|
420
|
+
}
|
|
421
|
+
sampleRate: number | null
|
|
422
|
+
minimumDurationMilliseconds: number | null | undefined
|
|
363
423
|
}
|
|
364
424
|
|
|
365
|
-
|
|
366
|
-
|
|
425
|
+
export type SessionRecordingRemoteConfig = SessionRecordingCanvasOptions & {
|
|
426
|
+
endpoint?: string
|
|
427
|
+
consoleLogRecordingEnabled?: boolean
|
|
428
|
+
sampleRate?: string | null
|
|
429
|
+
minimumDurationMilliseconds?: number
|
|
430
|
+
linkedFlag?: string | { flag: string; variant: string } | null
|
|
431
|
+
networkPayloadCapture?: Pick<NetworkRecordOptions, 'recordBody' | 'recordHeaders' | 'payloadHostDenyList'>
|
|
432
|
+
masking?: Pick<SessionRecordingOptions, 'maskAllInputs' | 'maskTextSelector' | 'blockSelector'>
|
|
433
|
+
urlTriggers?: SessionRecordingUrlTrigger[]
|
|
434
|
+
scriptConfig?: { script?: string | undefined }
|
|
435
|
+
urlBlocklist?: SessionRecordingUrlTrigger[]
|
|
436
|
+
eventTriggers?: string[]
|
|
437
|
+
triggerMatchType?: 'any' | 'all'
|
|
438
|
+
}
|
|
367
439
|
|
|
368
440
|
export interface RageclickConfig {
|
|
369
441
|
/**
|
|
@@ -499,6 +571,11 @@ export interface RemoteConfig {
|
|
|
499
571
|
*/
|
|
500
572
|
autocaptureExceptions?: boolean | { endpoint?: string }
|
|
501
573
|
|
|
574
|
+
/**
|
|
575
|
+
* Session recording configuration options
|
|
576
|
+
*/
|
|
577
|
+
sessionRecording?: SessionRecordingRemoteConfig | false
|
|
578
|
+
|
|
502
579
|
/**
|
|
503
580
|
* @deprecated, moved to toolbarParams
|
|
504
581
|
*/
|
|
@@ -509,11 +586,6 @@ export interface RemoteConfig {
|
|
|
509
586
|
*/
|
|
510
587
|
isAuthenticated: boolean
|
|
511
588
|
|
|
512
|
-
/**
|
|
513
|
-
* Session recording remote config (when available)
|
|
514
|
-
*/
|
|
515
|
-
sessionRecording?: SessionRecordingRemoteConfig
|
|
516
|
-
|
|
517
589
|
/**
|
|
518
590
|
* List of site apps with their IDs and URLs
|
|
519
591
|
*/
|
|
@@ -604,34 +676,16 @@ export interface RequestWithOptions {
|
|
|
604
676
|
}
|
|
605
677
|
}
|
|
606
678
|
|
|
607
|
-
export type DeadClicksAutoCaptureConfig = {
|
|
608
|
-
scroll_threshold_ms?: number
|
|
609
|
-
selection_change_threshold_ms?: number
|
|
610
|
-
mutation_threshold_ms?: number
|
|
611
|
-
__onCapture?: ((click: any, properties: Properties) => void) | undefined
|
|
612
|
-
} & Pick<AutocaptureConfig, 'element_attribute_ignorelist'>
|
|
613
|
-
|
|
614
|
-
export type ExternalIntegrationKind = 'intercom' | 'crispChat'
|
|
615
|
-
|
|
616
|
-
export type SiteAppLoader = {
|
|
617
|
-
id: string
|
|
618
|
-
init: (config: { posthog: any; callback: (success: boolean) => void }) => {
|
|
619
|
-
processEvent?: (globals: any) => void
|
|
620
|
-
}
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
// Network / replay types (copied from browser package) -------------------------------------------------
|
|
624
679
|
export type InitiatorType =
|
|
625
680
|
| 'audio'
|
|
626
681
|
| 'beacon'
|
|
627
682
|
| 'body'
|
|
628
683
|
| 'css'
|
|
629
|
-
| 'early-
|
|
684
|
+
| 'early-hints'
|
|
630
685
|
| 'embed'
|
|
631
686
|
| 'fetch'
|
|
632
687
|
| 'frame'
|
|
633
688
|
| 'iframe'
|
|
634
|
-
| 'icon'
|
|
635
689
|
| 'image'
|
|
636
690
|
| 'img'
|
|
637
691
|
| 'input'
|
|
@@ -644,8 +698,24 @@ export type InitiatorType =
|
|
|
644
698
|
| 'video'
|
|
645
699
|
| 'xmlhttprequest'
|
|
646
700
|
|
|
647
|
-
|
|
648
|
-
|
|
701
|
+
export type NetworkRecordOptions = {
|
|
702
|
+
initiatorTypes?: InitiatorType[]
|
|
703
|
+
maskRequestFn?: (data: CapturedNetworkRequest) => CapturedNetworkRequest | undefined
|
|
704
|
+
recordHeaders?: boolean | { request: boolean; response: boolean }
|
|
705
|
+
recordBody?: boolean | string[] | { request: boolean | string[]; response: boolean | string[] }
|
|
706
|
+
recordInitialRequests?: boolean
|
|
707
|
+
recordPerformance?: boolean
|
|
708
|
+
performanceEntryTypeToObserve: string[]
|
|
709
|
+
payloadSizeLimitBytes: number
|
|
710
|
+
payloadHostDenyList?: string[]
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
export type NetworkRequest = {
|
|
714
|
+
url: string
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
export type Headers = Record<string, any>
|
|
718
|
+
|
|
649
719
|
type Writable<T> = { -readonly [P in keyof T]: T[P] }
|
|
650
720
|
|
|
651
721
|
export type CapturedNetworkRequest = Writable<Omit<PerformanceEntry, 'toJSON'>> & {
|
|
@@ -660,35 +730,14 @@ export type CapturedNetworkRequest = Writable<Omit<PerformanceEntry, 'toJSON'>>
|
|
|
660
730
|
requestBody?: string | null
|
|
661
731
|
responseHeaders?: Headers
|
|
662
732
|
responseBody?: string | null
|
|
663
|
-
// was this captured before fetch/xhr could have been wrapped
|
|
664
733
|
isInitial?: boolean
|
|
665
734
|
}
|
|
666
735
|
|
|
667
|
-
export
|
|
668
|
-
|
|
669
|
-
export type NetworkRecordOptions = {
|
|
670
|
-
initiatorTypes?: InitiatorType[]
|
|
671
|
-
maskRequestFn?: (data: CapturedNetworkRequest) => CapturedNetworkRequest | undefined
|
|
672
|
-
recordHeaders?: boolean | { request: boolean; response: boolean }
|
|
673
|
-
recordBody?: boolean | string[] | { request: boolean | string[]; response: boolean | string[] }
|
|
674
|
-
recordInitialRequests?: boolean
|
|
675
|
-
recordPerformance?: boolean
|
|
676
|
-
performanceEntryTypeToObserve: string[]
|
|
677
|
-
payloadSizeLimitBytes: number
|
|
678
|
-
payloadHostDenyList?: string[]
|
|
679
|
-
}
|
|
680
|
-
|
|
681
|
-
/** @deprecated - use CapturedNetworkRequest instead */
|
|
682
|
-
export type NetworkRequest = {
|
|
736
|
+
export interface SessionRecordingUrlTrigger {
|
|
683
737
|
url: string
|
|
738
|
+
matching: 'regex'
|
|
684
739
|
}
|
|
685
740
|
|
|
686
|
-
export type SessionIdChangedCallback = (
|
|
687
|
-
sessionId: string,
|
|
688
|
-
windowId: string | null | undefined,
|
|
689
|
-
changeReason?: { noSessionId: boolean; activityTimeout: boolean; sessionPastMaximumLength: boolean }
|
|
690
|
-
) => void
|
|
691
|
-
|
|
692
741
|
export type SessionStartReason =
|
|
693
742
|
| 'sampling_overridden'
|
|
694
743
|
| 'recording_initialized'
|
|
@@ -699,47 +748,11 @@ export type SessionStartReason =
|
|
|
699
748
|
| 'url_trigger_matched'
|
|
700
749
|
| 'event_trigger_matched'
|
|
701
750
|
|
|
702
|
-
export type
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
export type SessionRecordingOptions = {
|
|
709
|
-
__mutationThrottlerBucketSize?: number
|
|
710
|
-
__mutationThrottlerRefillRate?: number
|
|
711
|
-
blockClass?: string | RegExp
|
|
712
|
-
blockSelector?: string | null
|
|
713
|
-
captureCanvas?: SessionRecordingCanvasOptions
|
|
714
|
-
collectFonts?: boolean
|
|
715
|
-
compress_events?: boolean
|
|
716
|
-
full_snapshot_interval_millis?: number
|
|
717
|
-
ignoreClass?: string | RegExp
|
|
718
|
-
inlineStylesheet?: boolean
|
|
719
|
-
maskAllInputs?: boolean
|
|
720
|
-
maskCapturedNetworkRequestFn?: ((data: CapturedNetworkRequest) => CapturedNetworkRequest | null | undefined) | null
|
|
721
|
-
maskInputFn?: ((text: string, element?: HTMLElement) => string) | null
|
|
722
|
-
maskInputOptions?: any
|
|
723
|
-
maskNetworkRequestFn?: ((data: NetworkRequest) => NetworkRequest | null | undefined) | null
|
|
724
|
-
maskTextClass?: string | RegExp
|
|
725
|
-
maskTextFn?: ((text: string, element?: HTMLElement) => string) | null
|
|
726
|
-
maskTextSelector?: string | null
|
|
727
|
-
recordBody?: boolean
|
|
728
|
-
recordCrossOriginIframes?: boolean
|
|
729
|
-
recordHeaders?: boolean
|
|
730
|
-
session_idle_threshold_ms?: number
|
|
731
|
-
slimDOMOptions?: any
|
|
732
|
-
}
|
|
733
|
-
|
|
734
|
-
export type SessionRecordingPersistedConfig = any
|
|
735
|
-
export type SessionRecordingRemoteConfig = any
|
|
736
|
-
|
|
737
|
-
export type FlagVariant = { flag: string; variant: string }
|
|
738
|
-
|
|
739
|
-
export interface SessionRecordingUrlTrigger {
|
|
740
|
-
url: string
|
|
741
|
-
matching: 'regex'
|
|
742
|
-
}
|
|
751
|
+
export type SessionIdChangedCallback = (
|
|
752
|
+
sessionId: string,
|
|
753
|
+
windowId: string | null | undefined,
|
|
754
|
+
changeReason?: { noSessionId: boolean; activityTimeout: boolean; sessionPastMaximumLength: boolean }
|
|
755
|
+
) => void
|
|
743
756
|
|
|
744
757
|
export type LeanbasegCaptureOptions = {
|
|
745
758
|
/** If provided overrides the auto-generated event ID */
|
package/src/utils/logger.ts
CHANGED
|
@@ -1,64 +1,26 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { isUndefined } from '@posthog/core'
|
|
3
|
-
import { assignableWindow, window } from './globals'
|
|
4
|
-
import { logger as leanbaseLogger } from '../leanbase-logger'
|
|
5
|
-
import type { Logger } from '@posthog/core'
|
|
1
|
+
import { logger as baseLogger } from '../leanbase-logger'
|
|
6
2
|
|
|
7
|
-
type PosthogJsLogger =
|
|
8
|
-
|
|
3
|
+
export type PosthogJsLogger = {
|
|
4
|
+
info: (...args: any[]) => void
|
|
5
|
+
warn: (...args: any[]) => void
|
|
6
|
+
error: (...args: any[]) => void
|
|
7
|
+
critical: (...args: any[]) => void
|
|
9
8
|
uninitializedWarning: (methodName: string) => void
|
|
10
9
|
createLogger: (prefix: string) => PosthogJsLogger
|
|
11
10
|
}
|
|
12
11
|
|
|
13
12
|
const _createLogger = (prefix: string): PosthogJsLogger => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
!isUndefined(window.console) &&
|
|
20
|
-
window.console
|
|
21
|
-
) {
|
|
22
|
-
const consoleLog =
|
|
23
|
-
'__rrweb_original__' in window.console[level]
|
|
24
|
-
? (window.console[level] as any)['__rrweb_original__']
|
|
25
|
-
: window.console[level]
|
|
26
|
-
|
|
27
|
-
// eslint-disable-next-line no-console
|
|
28
|
-
consoleLog(prefix, ...args)
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
|
|
32
|
-
info: (...args: any[]) => {
|
|
33
|
-
logger._log('log', ...args)
|
|
34
|
-
},
|
|
35
|
-
|
|
36
|
-
warn: (...args: any[]) => {
|
|
37
|
-
logger._log('warn', ...args)
|
|
38
|
-
},
|
|
39
|
-
|
|
40
|
-
error: (...args: any[]) => {
|
|
41
|
-
logger._log('error', ...args)
|
|
42
|
-
},
|
|
43
|
-
|
|
44
|
-
critical: (...args: any[]) => {
|
|
45
|
-
// Critical errors are always logged to the console
|
|
46
|
-
// eslint-disable-next-line no-console
|
|
47
|
-
console.error(prefix, ...args)
|
|
48
|
-
},
|
|
49
|
-
|
|
13
|
+
return {
|
|
14
|
+
info: (...args: any[]) => baseLogger.info(prefix, ...args),
|
|
15
|
+
warn: (...args: any[]) => baseLogger.warn(prefix, ...args),
|
|
16
|
+
error: (...args: any[]) => baseLogger.error(prefix, ...args),
|
|
17
|
+
critical: (...args: any[]) => baseLogger.critical(prefix, ...args),
|
|
50
18
|
uninitializedWarning: (methodName: string) => {
|
|
51
|
-
|
|
19
|
+
baseLogger.error(prefix, `You must initialize Leanbase before calling ${methodName}`)
|
|
52
20
|
},
|
|
53
|
-
|
|
54
21
|
createLogger: (additionalPrefix: string) => _createLogger(`${prefix} ${additionalPrefix}`),
|
|
55
22
|
}
|
|
56
|
-
return logger
|
|
57
23
|
}
|
|
58
24
|
|
|
59
25
|
export const logger = _createLogger('[Leanbase]')
|
|
60
|
-
|
|
61
|
-
export const createLogger = logger.createLogger
|
|
62
|
-
|
|
63
|
-
// Provide fallback leanbase logger methods for code that expects a simple logger
|
|
64
|
-
export const fallbackLogger = leanbaseLogger
|
|
26
|
+
export const createLogger = _createLogger
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '0.
|
|
1
|
+
export const version = '0.1.1'
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { PostHog } from '../../posthog-core'
|
|
2
|
-
import { createLogger } from '../../utils/logger'
|
|
3
|
-
import { isUndefined, isNull } from '@posthog/core'
|
|
4
|
-
|
|
5
|
-
const logger = createLogger('[Stylesheet Loader]')
|
|
6
|
-
|
|
7
|
-
export const prepareStylesheet = (document: Document, innerText: string, posthog?: PostHog) => {
|
|
8
|
-
// Forcing the existence of `document` requires this function to be called in a browser environment
|
|
9
|
-
let stylesheet: HTMLStyleElement | null = document.createElement('style')
|
|
10
|
-
stylesheet.innerText = innerText
|
|
11
|
-
|
|
12
|
-
if (posthog?.config?.prepare_external_dependency_stylesheet) {
|
|
13
|
-
const result = posthog.config.prepare_external_dependency_stylesheet(stylesheet)
|
|
14
|
-
if (!isUndefined(result) && !isNull(result)) {
|
|
15
|
-
stylesheet = result
|
|
16
|
-
} else {
|
|
17
|
-
stylesheet = null
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
if (!stylesheet) {
|
|
22
|
-
logger.error('prepare_external_dependency_stylesheet returned null')
|
|
23
|
-
return null
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
return stylesheet
|
|
27
|
-
}
|
package/src/posthog-core.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { Leanbase } from './leanbase'
|
|
2
|
-
|
|
3
|
-
// PostHog shim: Leanbase runtime with a widened onFeatureFlags signature
|
|
4
|
-
export type PostHog = Leanbase & {
|
|
5
|
-
onFeatureFlags?: (cb: (...args: any[]) => void) => () => void
|
|
6
|
-
consent?: {
|
|
7
|
-
isOptedOut?: () => boolean
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export { default as Config } from './config'
|
|
12
|
-
export { logger } from './utils/logger'
|