@croct/sdk 0.17.7 → 0.17.9
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/activeRecord.cjs.map +1 -0
- package/activeRecord.d.ts +8 -4
- package/activeRecord.js +115 -106
- package/activeRecord.js.map +1 -1
- package/apiKey.cjs.map +1 -0
- package/apiKey.d.ts +4 -2
- package/apiKey.js +152 -141
- package/apiKey.js.map +1 -1
- package/base64Url.cjs.map +1 -0
- package/base64Url.d.ts +4 -2
- package/base64Url.js +8 -15
- package/base64Url.js.map +1 -1
- package/cache/cache.cjs.map +1 -0
- package/cache/cache.d.ts +6 -4
- package/cache/cache.js +9 -10
- package/cache/cache.js.map +1 -1
- package/cache/cookieCache.cjs.map +1 -0
- package/cache/cookieCache.d.ts +6 -3
- package/cache/cookieCache.js +52 -54
- package/cache/cookieCache.js.map +1 -1
- package/cache/fallbackCache.cjs.map +1 -0
- package/cache/fallbackCache.d.ts +5 -2
- package/cache/fallbackCache.js +20 -21
- package/cache/fallbackCache.js.map +1 -1
- package/cache/inMemoryCache.cjs.map +1 -0
- package/cache/inMemoryCache.d.ts +5 -2
- package/cache/inMemoryCache.js +15 -17
- package/cache/inMemoryCache.js.map +1 -1
- package/cache/index.cjs.map +1 -0
- package/cache/index.d.ts +4 -4
- package/cache/index.js +9 -11
- package/cache/index.js.map +1 -1
- package/cache/localStorageCache.cjs.map +1 -0
- package/cache/localStorageCache.d.ts +5 -2
- package/cache/localStorageCache.js +55 -63
- package/cache/localStorageCache.js.map +1 -1
- package/channel/channel.cjs.map +1 -0
- package/channel/channel.d.ts +8 -6
- package/channel/channel.js +21 -22
- package/channel/channel.js.map +1 -1
- package/channel/encodedChannel.cjs.map +1 -0
- package/channel/encodedChannel.d.ts +6 -3
- package/channel/encodedChannel.js +13 -14
- package/channel/encodedChannel.js.map +1 -1
- package/channel/guaranteedChannel.cjs.map +1 -0
- package/channel/guaranteedChannel.d.ts +9 -7
- package/channel/guaranteedChannel.js +74 -73
- package/channel/guaranteedChannel.js.map +1 -1
- package/channel/httpBeaconChannel.cjs.map +1 -0
- package/channel/httpBeaconChannel.d.ts +9 -6
- package/channel/httpBeaconChannel.js +82 -83
- package/channel/httpBeaconChannel.js.map +1 -1
- package/channel/index.cjs.map +1 -0
- package/channel/index.d.ts +12 -7
- package/channel/index.js +15 -17
- package/channel/index.js.map +1 -1
- package/channel/queuedChannel.cjs.map +1 -0
- package/channel/queuedChannel.d.ts +7 -4
- package/channel/queuedChannel.js +87 -97
- package/channel/queuedChannel.js.map +1 -1
- package/channel/retryChannel.cjs.map +1 -0
- package/channel/retryChannel.d.ts +7 -5
- package/channel/retryChannel.js +58 -57
- package/channel/retryChannel.js.map +1 -1
- package/channel/sandboxChannel.cjs.map +1 -0
- package/channel/sandboxChannel.d.ts +5 -2
- package/channel/sandboxChannel.js +34 -35
- package/channel/sandboxChannel.js.map +1 -1
- package/cid/assigner.cjs.map +1 -0
- package/cid/assigner.d.ts +3 -1
- package/cid/assigner.js +0 -2
- package/cid/assigner.js.map +1 -1
- package/cid/cachedAssigner.cjs.map +1 -0
- package/cid/cachedAssigner.d.ts +7 -5
- package/cid/cachedAssigner.js +37 -43
- package/cid/cachedAssigner.js.map +1 -1
- package/cid/fixedAssigner.cjs.map +1 -0
- package/cid/fixedAssigner.d.ts +5 -2
- package/cid/fixedAssigner.js +9 -10
- package/cid/fixedAssigner.js.map +1 -1
- package/cid/index.cjs.map +1 -0
- package/cid/index.d.ts +6 -4
- package/cid/index.js +9 -11
- package/cid/index.js.map +1 -1
- package/cid/remoteAssigner.cjs.map +1 -0
- package/cid/remoteAssigner.d.ts +6 -3
- package/cid/remoteAssigner.js +36 -37
- package/cid/remoteAssigner.js.map +1 -1
- package/constants.cjs.map +1 -0
- package/constants.d.ts +6 -4
- package/constants.js +10 -7
- package/constants.js.map +1 -1
- package/container.cjs.map +1 -0
- package/container.d.ts +28 -15
- package/container.js +269 -252
- package/container.js.map +1 -1
- package/contentFetcher.cjs.map +1 -0
- package/contentFetcher.d.ts +17 -14
- package/contentFetcher.js +156 -163
- package/contentFetcher.js.map +1 -1
- package/context.cjs.map +1 -0
- package/context.d.ts +13 -9
- package/context.js +80 -81
- package/context.js.map +1 -1
- package/error.cjs.map +1 -0
- package/error.d.ts +4 -2
- package/error.js +21 -21
- package/error.js.map +1 -1
- package/evaluator.cjs.map +1 -0
- package/evaluator.d.ts +18 -16
- package/evaluator.js +179 -179
- package/evaluator.js.map +1 -1
- package/eventManager.cjs.map +1 -0
- package/eventManager.d.ts +8 -6
- package/eventManager.js +24 -26
- package/eventManager.js.map +1 -1
- package/eventSubjectProcessor.cjs.map +1 -0
- package/eventSubjectProcessor.d.ts +16 -3
- package/eventSubjectProcessor.js +53 -59
- package/eventSubjectProcessor.js.map +1 -1
- package/facade/contentFetcherFacade.cjs.map +1 -0
- package/facade/contentFetcherFacade.d.ts +16 -7
- package/facade/contentFetcherFacade.js +32 -35
- package/facade/contentFetcherFacade.js.map +1 -1
- package/facade/evaluatorFacade.cjs.map +1 -0
- package/facade/evaluatorFacade.d.ts +17 -10
- package/facade/evaluatorFacade.js +56 -60
- package/facade/evaluatorFacade.js.map +1 -1
- package/facade/index.cjs.map +1 -0
- package/facade/index.d.ts +29 -7
- package/facade/index.js +19 -19
- package/facade/index.js.map +1 -1
- package/facade/sdkFacade.cjs.map +1 -0
- package/facade/sdkFacade.d.ts +33 -15
- package/facade/sdkFacade.js +201 -214
- package/facade/sdkFacade.js.map +1 -1
- package/facade/sessionFacade.cjs.map +1 -0
- package/facade/sessionFacade.d.ts +18 -3
- package/facade/sessionFacade.js +10 -11
- package/facade/sessionFacade.js.map +1 -1
- package/facade/sessionPatch.cjs.map +1 -0
- package/facade/sessionPatch.d.ts +17 -4
- package/facade/sessionPatch.js +22 -24
- package/facade/sessionPatch.js.map +1 -1
- package/facade/trackerFacade.cjs.map +1 -0
- package/facade/trackerFacade.d.ts +17 -4
- package/facade/trackerFacade.js +67 -57
- package/facade/trackerFacade.js.map +1 -1
- package/facade/userFacade.cjs.map +1 -0
- package/facade/userFacade.d.ts +21 -4
- package/facade/userFacade.js +17 -18
- package/facade/userFacade.js.map +1 -1
- package/facade/userPatch.cjs.map +1 -0
- package/facade/userPatch.d.ts +17 -4
- package/facade/userPatch.js +22 -24
- package/facade/userPatch.js.map +1 -1
- package/help.cjs.map +1 -0
- package/help.d.ts +3 -1
- package/help.js +19 -23
- package/help.js.map +1 -1
- package/index.cjs.map +1 -0
- package/index.d.ts +25 -3
- package/index.js +7 -7
- package/index.js.map +1 -1
- package/logging/consoleLogger.cjs.map +1 -0
- package/logging/consoleLogger.d.ts +5 -2
- package/logging/consoleLogger.js +23 -24
- package/logging/consoleLogger.js.map +1 -1
- package/logging/filteredLogger.cjs.map +1 -0
- package/logging/filteredLogger.d.ts +8 -5
- package/logging/filteredLogger.js +36 -37
- package/logging/filteredLogger.js.map +1 -1
- package/logging/index.cjs.map +1 -0
- package/logging/index.d.ts +5 -5
- package/logging/index.js +11 -13
- package/logging/index.js.map +1 -1
- package/logging/logger.cjs.map +1 -0
- package/logging/logger.d.ts +4 -2
- package/logging/logger.js +0 -2
- package/logging/logger.js.map +1 -1
- package/logging/namespacedLogger.cjs.map +1 -0
- package/logging/namespacedLogger.d.ts +5 -2
- package/logging/namespacedLogger.js +22 -23
- package/logging/namespacedLogger.js.map +1 -1
- package/logging/nullLogger.cjs.map +1 -0
- package/logging/nullLogger.d.ts +5 -2
- package/logging/nullLogger.js +11 -16
- package/logging/nullLogger.js.map +1 -1
- package/namespacedStorage.cjs.map +1 -0
- package/namespacedStorage.d.ts +3 -1
- package/namespacedStorage.js +51 -52
- package/namespacedStorage.js.map +1 -1
- package/package.json +60 -6
- package/patch.cjs.map +1 -0
- package/patch.d.ts +6 -4
- package/patch.js +0 -2
- package/patch.js.map +1 -1
- package/queue/capacityRestrictedQueue.cjs.map +1 -0
- package/queue/capacityRestrictedQueue.d.ts +5 -2
- package/queue/capacityRestrictedQueue.js +31 -32
- package/queue/capacityRestrictedQueue.js.map +1 -1
- package/queue/inMemoryQueue.cjs.map +1 -0
- package/queue/inMemoryQueue.d.ts +5 -2
- package/queue/inMemoryQueue.js +32 -34
- package/queue/inMemoryQueue.js.map +1 -1
- package/queue/index.cjs.map +1 -0
- package/queue/index.d.ts +6 -5
- package/queue/index.js +11 -13
- package/queue/index.js.map +1 -1
- package/queue/monitoredQueue.cjs.map +1 -0
- package/queue/monitoredQueue.d.ts +8 -5
- package/queue/monitoredQueue.js +104 -110
- package/queue/monitoredQueue.js.map +1 -1
- package/queue/persistentQueue.cjs.map +1 -0
- package/queue/persistentQueue.d.ts +5 -2
- package/queue/persistentQueue.js +52 -54
- package/queue/persistentQueue.js.map +1 -1
- package/queue/queue.cjs.map +1 -0
- package/queue/queue.d.ts +3 -1
- package/queue/queue.js +0 -2
- package/queue/queue.js.map +1 -1
- package/retry/arbitraryPolicy.cjs.map +1 -0
- package/retry/arbitraryPolicy.d.ts +5 -2
- package/retry/arbitraryPolicy.js +14 -15
- package/retry/arbitraryPolicy.js.map +1 -1
- package/retry/backoffPolicy.cjs.map +1 -0
- package/retry/backoffPolicy.d.ts +5 -3
- package/retry/backoffPolicy.js +52 -50
- package/retry/backoffPolicy.js.map +1 -1
- package/retry/index.cjs.map +1 -0
- package/retry/index.d.ts +5 -5
- package/retry/index.js +11 -13
- package/retry/index.js.map +1 -1
- package/retry/maxAttemptsPolicy.cjs.map +1 -0
- package/retry/maxAttemptsPolicy.d.ts +5 -2
- package/retry/maxAttemptsPolicy.js +17 -18
- package/retry/maxAttemptsPolicy.js.map +1 -1
- package/retry/neverPolicy.cjs.map +1 -0
- package/retry/neverPolicy.d.ts +5 -2
- package/retry/neverPolicy.js +9 -10
- package/retry/neverPolicy.js.map +1 -1
- package/retry/policy.cjs.map +1 -0
- package/retry/policy.d.ts +3 -1
- package/retry/policy.js +0 -2
- package/retry/policy.js.map +1 -1
- package/schema/attributeSchema.cjs.map +1 -0
- package/schema/attributeSchema.d.ts +6 -2
- package/schema/attributeSchema.js +7 -7
- package/schema/attributeSchema.js.map +1 -1
- package/schema/contentFetcherSchemas.cjs.map +1 -0
- package/schema/contentFetcherSchemas.d.ts +6 -2
- package/schema/contentFetcherSchemas.js +24 -21
- package/schema/contentFetcherSchemas.js.map +1 -1
- package/schema/contentSchemas.cjs.map +1 -0
- package/schema/contentSchemas.d.ts +6 -2
- package/schema/contentSchemas.js +45 -45
- package/schema/contentSchemas.js.map +1 -1
- package/schema/contextSchemas.cjs.map +1 -0
- package/schema/contextSchemas.d.ts +6 -2
- package/schema/contextSchemas.js +6 -6
- package/schema/contextSchemas.js.map +1 -1
- package/schema/ecommerceSchemas.cjs.map +1 -0
- package/schema/ecommerceSchemas.d.ts +10 -6
- package/schema/ecommerceSchemas.js +176 -172
- package/schema/ecommerceSchemas.js.map +1 -1
- package/schema/evaluatorSchemas.cjs.map +1 -0
- package/schema/evaluatorSchemas.d.ts +6 -2
- package/schema/evaluatorSchemas.js +46 -30
- package/schema/evaluatorSchemas.js.map +1 -1
- package/schema/eventSchemas.cjs.map +1 -0
- package/schema/eventSchemas.d.ts +16 -12
- package/schema/eventSchemas.js +125 -102
- package/schema/eventSchemas.js.map +1 -1
- package/schema/index.cjs.map +1 -0
- package/schema/index.d.ts +14 -11
- package/schema/index.js +11 -14
- package/schema/index.js.map +1 -1
- package/schema/loggerSchema.cjs.map +1 -0
- package/schema/loggerSchema.d.ts +6 -2
- package/schema/loggerSchema.js +13 -13
- package/schema/loggerSchema.js.map +1 -1
- package/schema/operationSchemas.cjs.map +1 -0
- package/schema/operationSchemas.d.ts +14 -10
- package/schema/operationSchemas.js +85 -69
- package/schema/operationSchemas.js.map +1 -1
- package/schema/sdkFacadeSchemas.cjs.map +1 -0
- package/schema/sdkFacadeSchemas.d.ts +6 -2
- package/schema/sdkFacadeSchemas.js +65 -51
- package/schema/sdkFacadeSchemas.js.map +1 -1
- package/schema/sdkSchemas.cjs.map +1 -0
- package/schema/sdkSchemas.d.ts +8 -4
- package/schema/sdkSchemas.js +80 -78
- package/schema/sdkSchemas.js.map +1 -1
- package/schema/tokenSchema.cjs.map +1 -0
- package/schema/tokenSchema.d.ts +6 -2
- package/schema/tokenSchema.js +41 -38
- package/schema/tokenSchema.js.map +1 -1
- package/schema/userSchema.cjs.map +1 -0
- package/schema/userSchema.d.ts +6 -2
- package/schema/userSchema.js +183 -134
- package/schema/userSchema.js.map +1 -1
- package/sdk.cjs.map +1 -0
- package/sdk.d.ts +28 -14
- package/sdk.js +106 -108
- package/sdk.js.map +1 -1
- package/sdkEvents.cjs.map +1 -0
- package/sdkEvents.d.ts +10 -5
- package/sdkEvents.js +0 -2
- package/sdkEvents.js.map +1 -1
- package/sourceLocation.cjs.map +1 -0
- package/sourceLocation.d.ts +7 -5
- package/sourceLocation.js +56 -57
- package/sourceLocation.js.map +1 -1
- package/tab.cjs.map +1 -0
- package/tab.d.ts +9 -7
- package/tab.js +93 -90
- package/tab.js.map +1 -1
- package/token/cachedTokenStore.cjs.map +1 -0
- package/token/cachedTokenStore.d.ts +8 -3
- package/token/cachedTokenStore.js +22 -24
- package/token/cachedTokenStore.js.map +1 -1
- package/token/inMemoryTokenStore.cjs.map +1 -0
- package/token/inMemoryTokenStore.d.ts +7 -2
- package/token/inMemoryTokenStore.js +12 -13
- package/token/inMemoryTokenStore.js.map +1 -1
- package/token/index.cjs.map +1 -0
- package/token/index.d.ts +7 -4
- package/token/index.js +9 -11
- package/token/index.js.map +1 -1
- package/token/replicatedTokenStore.cjs.map +1 -0
- package/token/replicatedTokenStore.d.ts +7 -2
- package/token/replicatedTokenStore.js +14 -15
- package/token/replicatedTokenStore.js.map +1 -1
- package/token/token.cjs.map +1 -0
- package/token/token.d.ts +11 -8
- package/token/token.js +212 -195
- package/token/token.js.map +1 -1
- package/tracker.cjs.map +1 -0
- package/tracker.d.ts +20 -13
- package/tracker.js +307 -307
- package/tracker.js.map +1 -1
- package/trackingEvents.cjs.map +1 -0
- package/trackingEvents.d.ts +65 -62
- package/trackingEvents.js +57 -56
- package/trackingEvents.js.map +1 -1
- package/transformer.cjs.map +1 -0
- package/transformer.d.ts +4 -2
- package/transformer.js +5 -6
- package/transformer.js.map +1 -1
- package/utilityTypes.cjs.map +1 -0
- package/utilityTypes.d.ts +4 -2
- package/utilityTypes.js +0 -2
- package/utilityTypes.js.map +1 -1
- package/uuid.cjs.map +1 -0
- package/uuid.d.ts +3 -1
- package/uuid.js +27 -32
- package/uuid.js.map +1 -1
- package/validation/arrayType.cjs.map +1 -0
- package/validation/arrayType.d.ts +5 -3
- package/validation/arrayType.js +45 -41
- package/validation/arrayType.js.map +1 -1
- package/validation/booleanType.cjs.map +1 -0
- package/validation/booleanType.d.ts +5 -2
- package/validation/booleanType.js +19 -16
- package/validation/booleanType.js.map +1 -1
- package/validation/functionType.cjs.map +1 -0
- package/validation/functionType.d.ts +5 -2
- package/validation/functionType.js +19 -16
- package/validation/functionType.js.map +1 -1
- package/validation/index.cjs.map +1 -0
- package/validation/index.d.ts +12 -12
- package/validation/index.js +27 -29
- package/validation/index.js.map +1 -1
- package/validation/jsonType.cjs.map +1 -0
- package/validation/jsonType.d.ts +8 -6
- package/validation/jsonType.js +89 -82
- package/validation/jsonType.js.map +1 -1
- package/validation/mixedSchema.cjs.map +1 -0
- package/validation/mixedSchema.d.ts +5 -2
- package/validation/mixedSchema.js +5 -7
- package/validation/mixedSchema.js.map +1 -1
- package/validation/nullType.cjs.map +1 -0
- package/validation/nullType.d.ts +5 -2
- package/validation/nullType.js +19 -16
- package/validation/nullType.js.map +1 -1
- package/validation/numberType.cjs.map +1 -0
- package/validation/numberType.d.ts +5 -3
- package/validation/numberType.js +40 -32
- package/validation/numberType.js.map +1 -1
- package/validation/objectType.cjs.map +1 -0
- package/validation/objectType.d.ts +5 -3
- package/validation/objectType.js +84 -85
- package/validation/objectType.js.map +1 -1
- package/validation/schema.cjs.map +1 -0
- package/validation/schema.d.ts +5 -3
- package/validation/schema.js +8 -9
- package/validation/schema.js.map +1 -1
- package/validation/stringType.cjs.map +1 -0
- package/validation/stringType.d.ts +5 -3
- package/validation/stringType.js +74 -70
- package/validation/stringType.js.map +1 -1
- package/validation/unionType.cjs.map +1 -0
- package/validation/unionType.d.ts +5 -2
- package/validation/unionType.js +37 -35
- package/validation/unionType.js.map +1 -1
- package/validation/violation.cjs.map +1 -0
- package/validation/violation.d.ts +4 -2
- package/validation/violation.js +18 -18
- package/validation/violation.js.map +1 -1
package/tracker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["src/tracker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["src/tracker.ts"],"sourcesContent":["import {Logger, NullLogger} from './logging';\nimport {Tab, TabEvent, TabUrlChangeEvent, TabVisibilityChangeEvent} from './tab';\nimport {OutputChannel} from './channel';\nimport {formatCause} from './error';\nimport {Token, TokenProvider} from './token';\nimport {RetryPolicy} from './retry';\nimport {\n Beacon,\n BeaconPayload,\n TrackingEvent,\n TrackingEventContext,\n isCartPartialEvent,\n isIdentifiedUserEvent,\n PartialTrackingEvent,\n} from './trackingEvents';\n\ntype Options = {\n eventMetadata?: {[key: string]: string},\n};\n\nexport type Configuration = Options & {\n channel: OutputChannel<Beacon>,\n logger?: Logger,\n tab: Tab,\n tokenProvider: TokenProvider,\n processor?: TrackingEventProcessor,\n inactivityRetryPolicy: RetryPolicy<number>,\n};\n\ntype State = {\n initialized: boolean,\n enabled: boolean,\n suspended: boolean,\n};\n\ntype InactivityTimer = {\n id?: number,\n since: number,\n};\n\nexport interface TrackingEventProcessor {\n process(event: QueuedEventInfo): QueuedEventInfo[];\n}\n\nexport type QueuedEventInfo<T extends TrackingEvent = TrackingEvent> = Omit<EventInfo<T>, 'status'>;\n\nexport type EventInfo<T extends TrackingEvent = TrackingEvent> = {\n context: TrackingEventContext,\n userToken?: Token,\n event: T,\n timestamp: number,\n status: 'pending' | 'confirmed' | 'failed' | 'ignored',\n};\n\nexport interface EventListener {\n (event: EventInfo): void;\n}\n\nconst trackedEvents: {[key: string]: {[key: string]: boolean}} = {};\n\nexport class Tracker {\n private readonly options: Required<Options>;\n\n private tab: Tab;\n\n private tokenProvider: TokenProvider;\n\n private inactivityRetryPolicy: RetryPolicy<any>;\n\n private readonly channel: OutputChannel<Beacon>;\n\n private readonly logger: Logger;\n\n private readonly processor?: TrackingEventProcessor;\n\n private readonly listeners: EventListener[] = [];\n\n private readonly pending: Array<Promise<void>> = [];\n\n private readonly state: State = {\n enabled: false,\n initialized: false,\n suspended: false,\n };\n\n private readonly inactivityTimer: InactivityTimer = {\n since: 0,\n };\n\n public constructor(config: Configuration) {\n const {tab, tokenProvider, channel, logger, inactivityRetryPolicy, ...options} = config;\n\n this.tab = tab;\n this.tokenProvider = tokenProvider;\n this.inactivityRetryPolicy = inactivityRetryPolicy;\n this.channel = channel;\n this.logger = logger ?? new NullLogger();\n this.processor = config.processor;\n this.options = {\n ...options,\n eventMetadata: options.eventMetadata ?? {},\n };\n\n this.enable = this.enable.bind(this);\n this.disable = this.disable.bind(this);\n this.suspend = this.suspend.bind(this);\n this.unsuspend = this.unsuspend.bind(this);\n this.trackPageLoad = this.trackPageLoad.bind(this);\n this.trackTabVisibilityChange = this.trackTabVisibilityChange.bind(this);\n this.trackTabUrlChange = this.trackTabUrlChange.bind(this);\n this.trackInactivity = this.trackInactivity.bind(this);\n }\n\n public addListener(listener: EventListener): void {\n this.listeners.push(listener);\n }\n\n public removeListener(listener: EventListener): void {\n let index = this.listeners.indexOf(listener);\n\n while (index >= 0) {\n this.listeners.splice(index, 1);\n index = this.listeners.indexOf(listener);\n }\n }\n\n public get flushed(): Promise<void> {\n const suppress = (): void => {\n // suppress errors\n };\n\n return Promise.all(this.pending).then(suppress, suppress);\n }\n\n public isEnabled(): boolean {\n return this.state.enabled;\n }\n\n public isSuspended(): boolean {\n return this.state.suspended;\n }\n\n public enable(): void {\n if (this.state.enabled) {\n return;\n }\n\n this.logger.info('Tracker enabled');\n\n this.state.enabled = true;\n\n if (this.state.suspended) {\n return;\n }\n\n this.startInactivityTimer();\n\n if (!this.state.initialized) {\n this.state.initialized = true;\n this.initialize();\n }\n\n this.tab.addListener('load', this.trackPageLoad);\n this.tab.addListener('urlChange', this.trackTabUrlChange);\n this.tab.addListener('visibilityChange', this.trackTabVisibilityChange);\n }\n\n public disable(): void {\n if (!this.state.enabled) {\n return;\n }\n\n this.logger.info('Tracker disabled');\n\n this.state.enabled = false;\n\n if (this.state.suspended) {\n return;\n }\n\n this.tab.removeListener('load', this.trackPageLoad);\n this.tab.removeListener('urlChange', this.trackTabUrlChange);\n this.tab.removeListener('visibilityChange', this.trackTabVisibilityChange);\n\n this.stopInactivityTimer();\n }\n\n public suspend(): void {\n if (this.state.suspended) {\n return;\n }\n\n this.logger.info('Tracker suspended');\n\n if (this.state.enabled) {\n this.disable();\n this.state.enabled = true;\n }\n\n this.state.suspended = true;\n }\n\n public unsuspend(): void {\n if (!this.state.suspended) {\n return;\n }\n\n this.logger.info('Tracker unsuspended');\n\n this.state.suspended = false;\n\n if (this.state.enabled) {\n this.state.enabled = false;\n this.enable();\n }\n }\n\n private initialize(): void {\n if (trackedEvents[this.tab.id] === undefined) {\n trackedEvents[this.tab.id] = {};\n }\n\n const initEvents = trackedEvents[this.tab.id];\n\n if (this.tab.isNew && !initEvents.tabOpened) {\n initEvents.tabOpened = true;\n\n this.trackTabOpen({tabId: this.tab.id});\n }\n\n if (!initEvents.pageOpened) {\n initEvents.pageOpened = true;\n\n this.trackPageOpen({\n url: this.tab.url,\n referrer: this.tab.referrer,\n });\n }\n }\n\n private stopInactivityTimer(): void {\n if (this.inactivityTimer.id !== undefined) {\n window.clearTimeout(this.inactivityTimer.id);\n\n delete this.inactivityTimer.id;\n }\n }\n\n private startInactivityTimer(): void {\n this.stopInactivityTimer();\n\n this.inactivityTimer.since = Date.now();\n\n let iteration = -1;\n\n const startTimer = (): void => {\n if (!this.inactivityRetryPolicy.shouldRetry(iteration + 1, this.inactivityTimer.since)) {\n window.clearTimeout(this.inactivityTimer.id);\n\n return;\n }\n\n iteration += 1;\n\n this.inactivityTimer.id = window.setTimeout(\n () => {\n this.trackInactivity();\n startTimer();\n },\n this.inactivityRetryPolicy.getDelay(iteration),\n );\n };\n\n startTimer();\n }\n\n public track<T extends PartialTrackingEvent>(event: T, timestamp: number = Date.now()): Promise<T> {\n return this.dispatch(this.enrichEvent(event, timestamp), timestamp).then(() => event);\n }\n\n private trackPageOpen({referrer, ...payload}: {url: string, referrer: string}): void {\n this.enqueue({\n type: 'pageOpened',\n ...payload,\n ...(referrer.length > 0 ? {referrer: referrer} : {}),\n });\n }\n\n private trackPageLoad({detail: {tab}}: TabEvent): void {\n this.enqueue({\n type: 'pageLoaded',\n url: tab.url,\n title: tab.title,\n lastModifiedTime: Date.parse(tab.document.lastModified),\n });\n }\n\n private trackTabOpen(payload: {tabId: string}): void {\n this.enqueue({\n type: 'tabOpened',\n ...payload,\n });\n }\n\n private trackTabUrlChange({detail}: TabUrlChangeEvent): void {\n this.enqueue({\n type: 'tabUrlChanged',\n tabId: detail.tab.id,\n url: detail.url,\n });\n }\n\n private trackTabVisibilityChange({detail}: TabVisibilityChangeEvent): void {\n this.enqueue({\n type: 'tabVisibilityChanged',\n tabId: detail.tab.id,\n visibility: detail.visible ? 'visible' : 'hidden',\n });\n }\n\n private trackInactivity(): void {\n this.enqueue({\n type: 'nothingChanged',\n sinceTime: this.inactivityTimer.since,\n });\n }\n\n private enqueue(event: TrackingEvent, timestamp: number = Date.now()): void {\n this.dispatch(event, timestamp).catch(() => {\n // suppress error\n });\n }\n\n private notifyEvent(event: EventInfo): void {\n this.listeners.map(listener => listener(event));\n }\n\n private dispatch<T extends TrackingEvent>(event: T, timestamp: number): Promise<T> {\n const userToken = this.tokenProvider.getToken();\n const metadata = this.options.eventMetadata;\n const context: TrackingEventContext = {\n tabId: this.tab.id,\n url: this.tab.url,\n ...(Object.keys(metadata).length > 0 ? {metadata: metadata} : {}),\n };\n\n const queuedEvent: QueuedEventInfo<T> = {\n ...(userToken !== null ? {userToken: userToken} : {}),\n event: event,\n timestamp: timestamp,\n context: context,\n };\n\n const processedEvents = this.processor !== undefined\n ? this.processor.process(queuedEvent)\n : [queuedEvent];\n\n // sort events by timestamp in ascending order\n processedEvents.sort((left, right) => left.timestamp - right.timestamp);\n\n let result: Promise<T>|null = null;\n\n for (const processedEvent of processedEvents) {\n if (processedEvent === queuedEvent) {\n result = this.publish(queuedEvent);\n\n continue;\n }\n\n this.publish(processedEvent);\n }\n\n if (result === null) {\n return Promise.reject(new Error('Event suppressed.'));\n }\n\n return result;\n }\n\n private publish<T extends TrackingEvent>(queuedEvent: QueuedEventInfo<T>): Promise<T> {\n const {event} = queuedEvent;\n\n if (event.type !== 'nothingChanged') {\n this.stopInactivityTimer();\n }\n\n const eventInfo: EventInfo<T> = {\n ...queuedEvent,\n status: 'pending',\n };\n\n if (this.state.suspended) {\n this.logger.warn(`Tracker is suspended, ignoring event \"${event.type}\"`);\n\n this.notifyEvent({...eventInfo, status: 'ignored'});\n\n return Promise.reject(new Error('The tracker is suspended.'));\n }\n\n this.logger.info(`Tracked event \"${event.type}\"`);\n\n this.notifyEvent(eventInfo);\n\n return new Promise<T>((resolve, reject) => {\n const promise = this.channel\n .publish(this.createBeacon(queuedEvent))\n .then(\n () => {\n this.logger.debug(`Successfully published event \"${event.type}\"`);\n\n this.notifyEvent({...eventInfo, status: 'confirmed'});\n\n resolve(event);\n },\n cause => {\n this.logger.error(`Failed to publish event \"${event.type}\", reason: ${formatCause(cause)}`);\n\n this.notifyEvent({...eventInfo, status: 'failed'});\n\n reject(cause);\n },\n );\n\n this.pending.push(promise);\n\n promise.finally(() => {\n this.pending.splice(this.pending.indexOf(promise), 1);\n });\n\n if (this.state.enabled && event.type !== 'nothingChanged') {\n this.startInactivityTimer();\n }\n });\n }\n\n private enrichEvent(event: PartialTrackingEvent, timestamp: number): TrackingEvent {\n if (isCartPartialEvent(event)) {\n const {cart: {lastUpdateTime = timestamp, ...cart}, ...payload} = event;\n\n return {\n ...payload,\n cart: {\n ...cart,\n lastUpdateTime: lastUpdateTime,\n },\n };\n }\n\n return event;\n }\n\n private createBeacon({event, timestamp, context, userToken}: QueuedEventInfo): Beacon {\n return {\n timestamp: timestamp,\n ...(userToken !== undefined ? {token: userToken.toString()} : {}),\n context: context,\n payload: this.enrichBeaconPayload(this.createBeaconPayload(event)),\n };\n }\n\n private createBeaconPayload(event: TrackingEvent): BeaconPayload {\n if (!isIdentifiedUserEvent(event)) {\n return event;\n }\n\n if (event.type === 'userSignedUp' && event.profile !== undefined) {\n const {userId, profile, ...payload} = event;\n\n return {\n ...payload,\n externalUserId: userId,\n patch: {\n operations: [\n {\n type: 'merge',\n path: '.',\n value: profile,\n },\n ],\n },\n };\n }\n\n const {userId, ...payload} = event;\n\n return {\n ...payload,\n externalUserId: userId,\n };\n }\n\n private enrichBeaconPayload(event: BeaconPayload): BeaconPayload {\n switch (event.type) {\n case 'linkOpened':\n return {\n ...event,\n link: new URL(event.link, this.tab.url).toString(),\n };\n\n default:\n return event;\n }\n }\n}\n"],"mappings":"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","names":["userId","payload"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/trackingEvents.ts"],"sourcesContent":["import {Patch} from './patch';\nimport {DistributiveOmit, Optional} from './utilityTypes';\n\n/*\n * Object values\n */\n\nexport type ProductDetails = {\n productId: string,\n sku?: string,\n name: string,\n category?: string,\n brand?: string,\n variant?: string,\n displayPrice: number,\n originalPrice?: number,\n url?: string,\n imageUrl?: string,\n};\n\nexport type CartItem = {\n index: number,\n product: ProductDetails,\n quantity: number,\n total: number,\n discount?: number,\n coupon?: string,\n};\n\nexport type Cart = {\n currency: string,\n items: CartItem[],\n subtotal?: number,\n shippingPrice?: number,\n taxes?: {[key: string]: number},\n costs?: {[key: string]: number},\n discount?: number,\n total: number,\n coupon?: string,\n lastUpdateTime: number,\n};\n\nexport type OrderItem = {\n index: number,\n product: ProductDetails,\n quantity?: number,\n total: number,\n discount?: number,\n coupon?: string,\n};\n\nexport type OrderStatus = 'placed' | 'paid' | 'completed';\n\nexport type Order = {\n orderId: string,\n currency: string,\n items: OrderItem[],\n subtotal?: number,\n shippingPrice?: number,\n taxes?: {[key: string]: number},\n costs?: {[key: string]: number},\n discount?: number,\n total: number,\n coupon?: string,\n paymentMethod?: string,\n installments?: number,\n status?: OrderStatus,\n};\n\nexport type Gender = 'male' | 'female' | 'neutral' | 'unknown';\n\n/*\n * Events\n */\n\nexport const pageEventTypes = [\n 'pageLoaded',\n 'pageOpened',\n] as const;\n\nexport const tabEventTypes = [\n 'tabOpened',\n 'tabUrlChanged',\n 'tabVisibilityChanged',\n] as const;\n\nexport const cartEventTypes = [\n 'cartModified',\n 'cartViewed',\n 'checkoutStarted',\n] as const;\n\nexport const ecommerceEventTypes = [\n ...cartEventTypes,\n 'orderPlaced',\n 'productViewed',\n] as const;\n\nexport const identifiedUserEventTypes = [\n 'userSignedIn',\n 'userSignedOut',\n 'userSignedUp',\n];\n\nexport const userEventTypes = [\n ...identifiedUserEventTypes,\n 'userProfileChanged',\n] as const;\n\nexport const miscEventTypes = [\n 'nothingChanged',\n 'sessionAttributesChanged',\n 'goalCompleted',\n 'interestShown',\n 'postViewed',\n 'eventOccurred',\n 'linkOpened',\n] as const;\n\nexport const eventTypes = [\n ...pageEventTypes,\n ...ecommerceEventTypes,\n ...userEventTypes,\n ...miscEventTypes,\n] as const;\n\ninterface BaseEvent {\n type: string;\n}\n\n/*\n * User events\n */\n\nexport interface UserProfileChanged extends BaseEvent {\n type: 'userProfileChanged';\n patch: Patch;\n}\n\ntype Primitive = null | string | number | boolean;\ntype PrimitiveMap = {[member: string]: Primitive};\ntype PrimitiveArray = Primitive[];\ntype TwoLevelMap = {[member: string]: Primitive | PrimitiveMap | PrimitiveArray};\ntype TwoLevelArray = PrimitiveArray | PrimitiveMap[] | PrimitiveArray[];\ntype CustomAttribute = Primitive | TwoLevelMap | TwoLevelArray;\n\nexport type UserProfile = {\n firstName?: string,\n lastName?: string,\n birthDate?: string,\n gender?: Gender,\n email?: string,\n alternateEmail?: string,\n phone?: string,\n alternatePhone?: string,\n address?: {\n street?: string,\n district?: string,\n city?: string,\n region?: string,\n country?: string,\n postalCode?: string,\n },\n avatar?: string,\n company?: string,\n companyUrl?: string,\n jobTitle?: string,\n interests?: string[],\n activities?: string[],\n custom?: {\n [member: string]: CustomAttribute,\n },\n};\n\nexport interface UserSignedUp extends BaseEvent {\n type: 'userSignedUp';\n userId: string;\n profile?: UserProfile;\n}\n\nexport interface UserSignedIn extends BaseEvent {\n type: 'userSignedIn';\n userId: string;\n}\n\nexport interface UserSignedOut extends BaseEvent {\n type: 'userSignedOut';\n userId: string;\n}\n\nexport type IdentifiedUserEvent = UserSignedIn | UserSignedOut | UserSignedUp;\nexport type UserEvent = UserProfileChanged | IdentifiedUserEvent;\n\n/*\n * E-commerce events\n */\n\nexport type CartEventType = typeof cartEventTypes[number];\n\ninterface BaseCartEvent extends BaseEvent {\n type: CartEventType;\n cart: Cart;\n}\n\nexport interface CartViewed extends BaseCartEvent {\n type: 'cartViewed';\n}\n\nexport interface CartModified extends BaseCartEvent {\n type: 'cartModified';\n}\n\nexport interface CheckoutStarted extends BaseCartEvent {\n type: 'checkoutStarted';\n orderId?: string;\n}\n\nexport type CartEvent = CartModified | CartViewed | CheckoutStarted;\n\nexport interface OrderPlaced extends BaseEvent {\n type: 'orderPlaced';\n order: Order;\n}\n\nexport interface ProductViewed extends BaseEvent {\n type: 'productViewed';\n product: ProductDetails;\n}\n\nexport type EcommerceEvent = OrderPlaced | ProductViewed | CartEvent;\n\n/**\n * Tab event\n */\n\nexport type TabEventType = typeof tabEventTypes[number];\n\ninterface BaseTabEvent extends BaseEvent {\n type: TabEventType;\n tabId: string;\n}\n\nexport interface TabOpened extends BaseTabEvent {\n type: 'tabOpened';\n}\n\nexport interface TabUrlChanged extends BaseTabEvent {\n type: 'tabUrlChanged';\n url: string;\n}\n\nexport interface TabVisibilityChanged extends BaseTabEvent {\n type: 'tabVisibilityChanged';\n visibility: 'visible' | 'hidden';\n}\n\nexport type TabEvent = TabVisibilityChanged | TabUrlChanged | TabOpened;\n\n/*\n * Page events\n */\n\nexport type PageEventType = typeof pageEventTypes[number];\n\ninterface BasePageEvent extends BaseEvent {\n type: PageEventType;\n url: string;\n}\n\nexport interface PageOpened extends BasePageEvent {\n type: 'pageOpened';\n referrer?: string;\n}\n\nexport interface PageLoaded extends BasePageEvent {\n type: 'pageLoaded';\n title: string;\n lastModifiedTime: number;\n}\n\nexport type PageEvent = PageLoaded | PageOpened;\n\n/*\n * Misc events\n */\n\nexport interface NothingChanged extends BaseEvent {\n type: 'nothingChanged';\n sinceTime: number;\n}\n\nexport interface SessionAttributesChanged extends BaseEvent {\n type: 'sessionAttributesChanged';\n patch: Patch;\n}\n\nexport interface GoalCompleted extends BaseEvent {\n type: 'goalCompleted';\n goalId: string;\n value?: number;\n currency?: string;\n}\n\nexport interface InterestShown extends BaseEvent {\n type: 'interestShown';\n interests: string[];\n}\n\nexport interface PostDetails {\n postId: string;\n url?: string;\n title: string;\n tags?: string[];\n categories?: string[];\n authors?: string[];\n publishTime: number;\n updateTime?: number;\n}\n\nexport interface PostViewed extends BaseEvent {\n type: 'postViewed';\n post: PostDetails;\n}\n\nexport interface EventOccurred extends BaseEvent {\n type: 'eventOccurred';\n name: string;\n details?: {[key: string]: string|number|boolean|null};\n}\n\nexport interface LinkOpened extends BaseEvent {\n type: 'linkOpened';\n link: string;\n}\n\nexport type MiscEvent =\n NothingChanged\n | SessionAttributesChanged\n | EventOccurred\n | GoalCompleted\n | InterestShown\n | PostViewed\n | LinkOpened;\n\ntype EventMap = {\n // Tab events\n tabVisibilityChanged: TabVisibilityChanged,\n tabUrlChanged: TabUrlChanged,\n tabOpened: TabOpened,\n // Page events\n pageLoaded: PageLoaded,\n pageOpened: PageOpened,\n // User events\n userSignedIn: UserSignedIn,\n userSignedOut: UserSignedOut,\n userSignedUp: UserSignedUp,\n userProfileChanged: UserProfileChanged,\n // E-commerce events\n productViewed: ProductViewed,\n cartViewed: CartViewed,\n cartModified: CartModified,\n checkoutStarted: CheckoutStarted,\n orderPlaced: OrderPlaced,\n // Misc events\n nothingChanged: NothingChanged,\n sessionAttributesChanged: SessionAttributesChanged,\n goalCompleted: GoalCompleted,\n interestShown: InterestShown,\n postViewed: PostViewed,\n eventOccurred: EventOccurred,\n linkOpened: LinkOpened,\n};\n\nexport type TrackingEventType = keyof EventMap;\n\nexport type TrackingEvent<T extends TrackingEventType = TrackingEventType> =\n T extends TrackingEventType ? EventMap[T] : EventMap[TrackingEventType];\n\n/**\n * Partial Events\n */\n\ntype CartPartialEvent <T extends CartEvent = CartEvent> =\n DistributiveOmit<T, 'cart'> & Record<'cart', Optional<Cart, 'lastUpdateTime'>>;\n\nexport type PartialTrackingEvent = Exclude<TrackingEvent, PageEvent | TabEvent | CartEvent> | CartPartialEvent;\n\n/**\n * External Events\n */\n\ntype ExternalEventMap = {\n cartModified: CartPartialEvent<CartModified>,\n cartViewed: CartPartialEvent<CartViewed>,\n checkoutStarted: CartPartialEvent<CheckoutStarted>,\n orderPlaced: OrderPlaced,\n productViewed: ProductViewed,\n userSignedUp: UserSignedUp,\n goalCompleted: GoalCompleted,\n interestShown: InterestShown,\n postViewed: PostViewed,\n linkOpened: LinkOpened,\n eventOccurred: EventOccurred,\n};\n\nexport type ExternalTrackingEventType = keyof ExternalEventMap;\n\nexport type ExternalTrackingEvent<T extends ExternalTrackingEventType = ExternalTrackingEventType> =\n T extends ExternalTrackingEventType\n ? ExternalEventMap[T]\n : ExternalEventMap[ExternalTrackingEventType];\n\nexport type ExternalTrackingEventPayload<T extends ExternalTrackingEventType> = Omit<ExternalEventMap[T], 'type'>;\n\n/*\n * Type guards\n */\n\nexport function isIdentifiedUserEvent(event: TrackingEvent): event is IdentifiedUserEvent {\n return identifiedUserEventTypes.includes((event as IdentifiedUserEvent).type);\n}\n\nexport function isCartPartialEvent(event: PartialTrackingEvent): event is CartPartialEvent {\n return cartEventTypes.includes((event as CartEvent).type);\n}\n\n/*\n * Beacon\n */\n\nexport type TrackingEventContext = {\n tabId: string,\n url: string,\n metadata?: {[key: string]: string},\n};\n\nexport type BeaconPayload =\n Exclude<TrackingEvent, IdentifiedUserEvent>\n // Renames \"userId\" to \"externalUserId\"\n | DistributiveOmit<Exclude<IdentifiedUserEvent, UserSignedUp>, 'userId'>\n & Record<'externalUserId', IdentifiedUserEvent['userId']>\n // Renames \"userId\" to \"externalUserId\", remove \"profile\" and add \"patch\"\n | Omit<UserSignedUp, 'userId' | 'profile'>\n & Record<'externalUserId', IdentifiedUserEvent['userId']>\n & {patch?: Patch};\n\nexport type Beacon = {\n timestamp: number,\n token?: string,\n context: TrackingEventContext,\n payload: BeaconPayload,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2EO,MAAM,iBAAiB;AAAA,EAC1B;AAAA,EACA;AACJ;AAEO,MAAM,gBAAgB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AACJ;AAEO,MAAM,iBAAiB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AACJ;AAEO,MAAM,sBAAsB;AAAA,EAC/B,GAAG;AAAA,EACH;AAAA,EACA;AACJ;AAEO,MAAM,2BAA2B;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AACJ;AAEO,MAAM,iBAAiB;AAAA,EAC1B,GAAG;AAAA,EACH;AACJ;AAEO,MAAM,iBAAiB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEO,MAAM,aAAa;AAAA,EACtB,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACP;AAsSO,SAAS,sBAAsB,OAAoD;AACtF,SAAO,yBAAyB,SAAU,MAA8B,IAAI;AAChF;AAEO,SAAS,mBAAmB,OAAwD;AACvF,SAAO,eAAe,SAAU,MAAoB,IAAI;AAC5D;","names":[]}
|
package/trackingEvents.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { Patch } from './patch';
|
|
2
|
-
import { DistributiveOmit, Optional } from './utilityTypes';
|
|
3
|
-
|
|
1
|
+
import { Patch } from './patch.js';
|
|
2
|
+
import { DistributiveOmit, Optional } from './utilityTypes.js';
|
|
3
|
+
import '@croct/json';
|
|
4
|
+
|
|
5
|
+
type ProductDetails = {
|
|
4
6
|
productId: string;
|
|
5
7
|
sku?: string;
|
|
6
8
|
name: string;
|
|
@@ -12,7 +14,7 @@ export type ProductDetails = {
|
|
|
12
14
|
url?: string;
|
|
13
15
|
imageUrl?: string;
|
|
14
16
|
};
|
|
15
|
-
|
|
17
|
+
type CartItem = {
|
|
16
18
|
index: number;
|
|
17
19
|
product: ProductDetails;
|
|
18
20
|
quantity: number;
|
|
@@ -20,7 +22,7 @@ export type CartItem = {
|
|
|
20
22
|
discount?: number;
|
|
21
23
|
coupon?: string;
|
|
22
24
|
};
|
|
23
|
-
|
|
25
|
+
type Cart = {
|
|
24
26
|
currency: string;
|
|
25
27
|
items: CartItem[];
|
|
26
28
|
subtotal?: number;
|
|
@@ -36,7 +38,7 @@ export type Cart = {
|
|
|
36
38
|
coupon?: string;
|
|
37
39
|
lastUpdateTime: number;
|
|
38
40
|
};
|
|
39
|
-
|
|
41
|
+
type OrderItem = {
|
|
40
42
|
index: number;
|
|
41
43
|
product: ProductDetails;
|
|
42
44
|
quantity?: number;
|
|
@@ -44,8 +46,8 @@ export type OrderItem = {
|
|
|
44
46
|
discount?: number;
|
|
45
47
|
coupon?: string;
|
|
46
48
|
};
|
|
47
|
-
|
|
48
|
-
|
|
49
|
+
type OrderStatus = 'placed' | 'paid' | 'completed';
|
|
50
|
+
type Order = {
|
|
49
51
|
orderId: string;
|
|
50
52
|
currency: string;
|
|
51
53
|
items: OrderItem[];
|
|
@@ -64,19 +66,19 @@ export type Order = {
|
|
|
64
66
|
installments?: number;
|
|
65
67
|
status?: OrderStatus;
|
|
66
68
|
};
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
69
|
+
type Gender = 'male' | 'female' | 'neutral' | 'unknown';
|
|
70
|
+
declare const pageEventTypes: readonly ["pageLoaded", "pageOpened"];
|
|
71
|
+
declare const tabEventTypes: readonly ["tabOpened", "tabUrlChanged", "tabVisibilityChanged"];
|
|
72
|
+
declare const cartEventTypes: readonly ["cartModified", "cartViewed", "checkoutStarted"];
|
|
73
|
+
declare const ecommerceEventTypes: readonly ["cartModified", "cartViewed", "checkoutStarted", "orderPlaced", "productViewed"];
|
|
74
|
+
declare const identifiedUserEventTypes: string[];
|
|
75
|
+
declare const userEventTypes: readonly [...string[], "userProfileChanged"];
|
|
76
|
+
declare const miscEventTypes: readonly ["nothingChanged", "sessionAttributesChanged", "goalCompleted", "interestShown", "postViewed", "eventOccurred", "linkOpened"];
|
|
77
|
+
declare const eventTypes: readonly ["pageLoaded", "pageOpened", "cartModified", "cartViewed", "checkoutStarted", "orderPlaced", "productViewed", ...string[], "userProfileChanged", "nothingChanged", "sessionAttributesChanged", "goalCompleted", "interestShown", "postViewed", "eventOccurred", "linkOpened"];
|
|
76
78
|
interface BaseEvent {
|
|
77
79
|
type: string;
|
|
78
80
|
}
|
|
79
|
-
|
|
81
|
+
interface UserProfileChanged extends BaseEvent {
|
|
80
82
|
type: 'userProfileChanged';
|
|
81
83
|
patch: Patch;
|
|
82
84
|
}
|
|
@@ -90,7 +92,7 @@ type TwoLevelMap = {
|
|
|
90
92
|
};
|
|
91
93
|
type TwoLevelArray = PrimitiveArray | PrimitiveMap[] | PrimitiveArray[];
|
|
92
94
|
type CustomAttribute = Primitive | TwoLevelMap | TwoLevelArray;
|
|
93
|
-
|
|
95
|
+
type UserProfile = {
|
|
94
96
|
firstName?: string;
|
|
95
97
|
lastName?: string;
|
|
96
98
|
birthDate?: string;
|
|
@@ -117,100 +119,100 @@ export type UserProfile = {
|
|
|
117
119
|
[member: string]: CustomAttribute;
|
|
118
120
|
};
|
|
119
121
|
};
|
|
120
|
-
|
|
122
|
+
interface UserSignedUp extends BaseEvent {
|
|
121
123
|
type: 'userSignedUp';
|
|
122
124
|
userId: string;
|
|
123
125
|
profile?: UserProfile;
|
|
124
126
|
}
|
|
125
|
-
|
|
127
|
+
interface UserSignedIn extends BaseEvent {
|
|
126
128
|
type: 'userSignedIn';
|
|
127
129
|
userId: string;
|
|
128
130
|
}
|
|
129
|
-
|
|
131
|
+
interface UserSignedOut extends BaseEvent {
|
|
130
132
|
type: 'userSignedOut';
|
|
131
133
|
userId: string;
|
|
132
134
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
135
|
+
type IdentifiedUserEvent = UserSignedIn | UserSignedOut | UserSignedUp;
|
|
136
|
+
type UserEvent = UserProfileChanged | IdentifiedUserEvent;
|
|
137
|
+
type CartEventType = typeof cartEventTypes[number];
|
|
136
138
|
interface BaseCartEvent extends BaseEvent {
|
|
137
139
|
type: CartEventType;
|
|
138
140
|
cart: Cart;
|
|
139
141
|
}
|
|
140
|
-
|
|
142
|
+
interface CartViewed extends BaseCartEvent {
|
|
141
143
|
type: 'cartViewed';
|
|
142
144
|
}
|
|
143
|
-
|
|
145
|
+
interface CartModified extends BaseCartEvent {
|
|
144
146
|
type: 'cartModified';
|
|
145
147
|
}
|
|
146
|
-
|
|
148
|
+
interface CheckoutStarted extends BaseCartEvent {
|
|
147
149
|
type: 'checkoutStarted';
|
|
148
150
|
orderId?: string;
|
|
149
151
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
+
type CartEvent = CartModified | CartViewed | CheckoutStarted;
|
|
153
|
+
interface OrderPlaced extends BaseEvent {
|
|
152
154
|
type: 'orderPlaced';
|
|
153
155
|
order: Order;
|
|
154
156
|
}
|
|
155
|
-
|
|
157
|
+
interface ProductViewed extends BaseEvent {
|
|
156
158
|
type: 'productViewed';
|
|
157
159
|
product: ProductDetails;
|
|
158
160
|
}
|
|
159
|
-
|
|
161
|
+
type EcommerceEvent = OrderPlaced | ProductViewed | CartEvent;
|
|
160
162
|
/**
|
|
161
163
|
* Tab event
|
|
162
164
|
*/
|
|
163
|
-
|
|
165
|
+
type TabEventType = typeof tabEventTypes[number];
|
|
164
166
|
interface BaseTabEvent extends BaseEvent {
|
|
165
167
|
type: TabEventType;
|
|
166
168
|
tabId: string;
|
|
167
169
|
}
|
|
168
|
-
|
|
170
|
+
interface TabOpened extends BaseTabEvent {
|
|
169
171
|
type: 'tabOpened';
|
|
170
172
|
}
|
|
171
|
-
|
|
173
|
+
interface TabUrlChanged extends BaseTabEvent {
|
|
172
174
|
type: 'tabUrlChanged';
|
|
173
175
|
url: string;
|
|
174
176
|
}
|
|
175
|
-
|
|
177
|
+
interface TabVisibilityChanged extends BaseTabEvent {
|
|
176
178
|
type: 'tabVisibilityChanged';
|
|
177
179
|
visibility: 'visible' | 'hidden';
|
|
178
180
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
+
type TabEvent = TabVisibilityChanged | TabUrlChanged | TabOpened;
|
|
182
|
+
type PageEventType = typeof pageEventTypes[number];
|
|
181
183
|
interface BasePageEvent extends BaseEvent {
|
|
182
184
|
type: PageEventType;
|
|
183
185
|
url: string;
|
|
184
186
|
}
|
|
185
|
-
|
|
187
|
+
interface PageOpened extends BasePageEvent {
|
|
186
188
|
type: 'pageOpened';
|
|
187
189
|
referrer?: string;
|
|
188
190
|
}
|
|
189
|
-
|
|
191
|
+
interface PageLoaded extends BasePageEvent {
|
|
190
192
|
type: 'pageLoaded';
|
|
191
193
|
title: string;
|
|
192
194
|
lastModifiedTime: number;
|
|
193
195
|
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
+
type PageEvent = PageLoaded | PageOpened;
|
|
197
|
+
interface NothingChanged extends BaseEvent {
|
|
196
198
|
type: 'nothingChanged';
|
|
197
199
|
sinceTime: number;
|
|
198
200
|
}
|
|
199
|
-
|
|
201
|
+
interface SessionAttributesChanged extends BaseEvent {
|
|
200
202
|
type: 'sessionAttributesChanged';
|
|
201
203
|
patch: Patch;
|
|
202
204
|
}
|
|
203
|
-
|
|
205
|
+
interface GoalCompleted extends BaseEvent {
|
|
204
206
|
type: 'goalCompleted';
|
|
205
207
|
goalId: string;
|
|
206
208
|
value?: number;
|
|
207
209
|
currency?: string;
|
|
208
210
|
}
|
|
209
|
-
|
|
211
|
+
interface InterestShown extends BaseEvent {
|
|
210
212
|
type: 'interestShown';
|
|
211
213
|
interests: string[];
|
|
212
214
|
}
|
|
213
|
-
|
|
215
|
+
interface PostDetails {
|
|
214
216
|
postId: string;
|
|
215
217
|
url?: string;
|
|
216
218
|
title: string;
|
|
@@ -220,22 +222,22 @@ export interface PostDetails {
|
|
|
220
222
|
publishTime: number;
|
|
221
223
|
updateTime?: number;
|
|
222
224
|
}
|
|
223
|
-
|
|
225
|
+
interface PostViewed extends BaseEvent {
|
|
224
226
|
type: 'postViewed';
|
|
225
227
|
post: PostDetails;
|
|
226
228
|
}
|
|
227
|
-
|
|
229
|
+
interface EventOccurred extends BaseEvent {
|
|
228
230
|
type: 'eventOccurred';
|
|
229
231
|
name: string;
|
|
230
232
|
details?: {
|
|
231
233
|
[key: string]: string | number | boolean | null;
|
|
232
234
|
};
|
|
233
235
|
}
|
|
234
|
-
|
|
236
|
+
interface LinkOpened extends BaseEvent {
|
|
235
237
|
type: 'linkOpened';
|
|
236
238
|
link: string;
|
|
237
239
|
}
|
|
238
|
-
|
|
240
|
+
type MiscEvent = NothingChanged | SessionAttributesChanged | EventOccurred | GoalCompleted | InterestShown | PostViewed | LinkOpened;
|
|
239
241
|
type EventMap = {
|
|
240
242
|
tabVisibilityChanged: TabVisibilityChanged;
|
|
241
243
|
tabUrlChanged: TabUrlChanged;
|
|
@@ -259,13 +261,13 @@ type EventMap = {
|
|
|
259
261
|
eventOccurred: EventOccurred;
|
|
260
262
|
linkOpened: LinkOpened;
|
|
261
263
|
};
|
|
262
|
-
|
|
263
|
-
|
|
264
|
+
type TrackingEventType = keyof EventMap;
|
|
265
|
+
type TrackingEvent<T extends TrackingEventType = TrackingEventType> = T extends TrackingEventType ? EventMap[T] : EventMap[TrackingEventType];
|
|
264
266
|
/**
|
|
265
267
|
* Partial Events
|
|
266
268
|
*/
|
|
267
269
|
type CartPartialEvent<T extends CartEvent = CartEvent> = DistributiveOmit<T, 'cart'> & Record<'cart', Optional<Cart, 'lastUpdateTime'>>;
|
|
268
|
-
|
|
270
|
+
type PartialTrackingEvent = Exclude<TrackingEvent, PageEvent | TabEvent | CartEvent> | CartPartialEvent;
|
|
269
271
|
/**
|
|
270
272
|
* External Events
|
|
271
273
|
*/
|
|
@@ -282,25 +284,26 @@ type ExternalEventMap = {
|
|
|
282
284
|
linkOpened: LinkOpened;
|
|
283
285
|
eventOccurred: EventOccurred;
|
|
284
286
|
};
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
287
|
+
type ExternalTrackingEventType = keyof ExternalEventMap;
|
|
288
|
+
type ExternalTrackingEvent<T extends ExternalTrackingEventType = ExternalTrackingEventType> = T extends ExternalTrackingEventType ? ExternalEventMap[T] : ExternalEventMap[ExternalTrackingEventType];
|
|
289
|
+
type ExternalTrackingEventPayload<T extends ExternalTrackingEventType> = Omit<ExternalEventMap[T], 'type'>;
|
|
290
|
+
declare function isIdentifiedUserEvent(event: TrackingEvent): event is IdentifiedUserEvent;
|
|
291
|
+
declare function isCartPartialEvent(event: PartialTrackingEvent): event is CartPartialEvent;
|
|
292
|
+
type TrackingEventContext = {
|
|
291
293
|
tabId: string;
|
|
292
294
|
url: string;
|
|
293
295
|
metadata?: {
|
|
294
296
|
[key: string]: string;
|
|
295
297
|
};
|
|
296
298
|
};
|
|
297
|
-
|
|
299
|
+
type BeaconPayload = Exclude<TrackingEvent, IdentifiedUserEvent> | DistributiveOmit<Exclude<IdentifiedUserEvent, UserSignedUp>, 'userId'> & Record<'externalUserId', IdentifiedUserEvent['userId']> | Omit<UserSignedUp, 'userId' | 'profile'> & Record<'externalUserId', IdentifiedUserEvent['userId']> & {
|
|
298
300
|
patch?: Patch;
|
|
299
301
|
};
|
|
300
|
-
|
|
302
|
+
type Beacon = {
|
|
301
303
|
timestamp: number;
|
|
302
304
|
token?: string;
|
|
303
305
|
context: TrackingEventContext;
|
|
304
306
|
payload: BeaconPayload;
|
|
305
307
|
};
|
|
306
|
-
|
|
308
|
+
|
|
309
|
+
export { type Beacon, type BeaconPayload, type Cart, type CartEvent, type CartEventType, type CartItem, type CartModified, type CartViewed, type CheckoutStarted, type EcommerceEvent, type EventOccurred, type ExternalTrackingEvent, type ExternalTrackingEventPayload, type ExternalTrackingEventType, type Gender, type GoalCompleted, type IdentifiedUserEvent, type InterestShown, type LinkOpened, type MiscEvent, type NothingChanged, type Order, type OrderItem, type OrderPlaced, type OrderStatus, type PageEvent, type PageEventType, type PageLoaded, type PageOpened, type PartialTrackingEvent, type PostDetails, type PostViewed, type ProductDetails, type ProductViewed, type SessionAttributesChanged, type TabEvent, type TabEventType, type TabOpened, type TabUrlChanged, type TabVisibilityChanged, type TrackingEvent, type TrackingEventContext, type TrackingEventType, type UserEvent, type UserProfile, type UserProfileChanged, type UserSignedIn, type UserSignedOut, type UserSignedUp, cartEventTypes, ecommerceEventTypes, eventTypes, identifiedUserEventTypes, isCartPartialEvent, isIdentifiedUserEvent, miscEventTypes, pageEventTypes, tabEventTypes, userEventTypes };
|
package/trackingEvents.js
CHANGED
|
@@ -1,61 +1,62 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
'linkOpened',
|
|
45
|
-
];
|
|
46
|
-
exports.eventTypes = [
|
|
47
|
-
...exports.pageEventTypes,
|
|
48
|
-
...exports.ecommerceEventTypes,
|
|
49
|
-
...exports.userEventTypes,
|
|
50
|
-
...exports.miscEventTypes,
|
|
51
|
-
];
|
|
52
|
-
/*
|
|
53
|
-
* Type guards
|
|
54
|
-
*/
|
|
1
|
+
const pageEventTypes = [
|
|
2
|
+
"pageLoaded",
|
|
3
|
+
"pageOpened"
|
|
4
|
+
];
|
|
5
|
+
const tabEventTypes = [
|
|
6
|
+
"tabOpened",
|
|
7
|
+
"tabUrlChanged",
|
|
8
|
+
"tabVisibilityChanged"
|
|
9
|
+
];
|
|
10
|
+
const cartEventTypes = [
|
|
11
|
+
"cartModified",
|
|
12
|
+
"cartViewed",
|
|
13
|
+
"checkoutStarted"
|
|
14
|
+
];
|
|
15
|
+
const ecommerceEventTypes = [
|
|
16
|
+
...cartEventTypes,
|
|
17
|
+
"orderPlaced",
|
|
18
|
+
"productViewed"
|
|
19
|
+
];
|
|
20
|
+
const identifiedUserEventTypes = [
|
|
21
|
+
"userSignedIn",
|
|
22
|
+
"userSignedOut",
|
|
23
|
+
"userSignedUp"
|
|
24
|
+
];
|
|
25
|
+
const userEventTypes = [
|
|
26
|
+
...identifiedUserEventTypes,
|
|
27
|
+
"userProfileChanged"
|
|
28
|
+
];
|
|
29
|
+
const miscEventTypes = [
|
|
30
|
+
"nothingChanged",
|
|
31
|
+
"sessionAttributesChanged",
|
|
32
|
+
"goalCompleted",
|
|
33
|
+
"interestShown",
|
|
34
|
+
"postViewed",
|
|
35
|
+
"eventOccurred",
|
|
36
|
+
"linkOpened"
|
|
37
|
+
];
|
|
38
|
+
const eventTypes = [
|
|
39
|
+
...pageEventTypes,
|
|
40
|
+
...ecommerceEventTypes,
|
|
41
|
+
...userEventTypes,
|
|
42
|
+
...miscEventTypes
|
|
43
|
+
];
|
|
55
44
|
function isIdentifiedUserEvent(event) {
|
|
56
|
-
|
|
45
|
+
return identifiedUserEventTypes.includes(event.type);
|
|
57
46
|
}
|
|
58
47
|
function isCartPartialEvent(event) {
|
|
59
|
-
|
|
48
|
+
return cartEventTypes.includes(event.type);
|
|
60
49
|
}
|
|
50
|
+
export {
|
|
51
|
+
cartEventTypes,
|
|
52
|
+
ecommerceEventTypes,
|
|
53
|
+
eventTypes,
|
|
54
|
+
identifiedUserEventTypes,
|
|
55
|
+
isCartPartialEvent,
|
|
56
|
+
isIdentifiedUserEvent,
|
|
57
|
+
miscEventTypes,
|
|
58
|
+
pageEventTypes,
|
|
59
|
+
tabEventTypes,
|
|
60
|
+
userEventTypes
|
|
61
|
+
};
|
|
61
62
|
//# sourceMappingURL=trackingEvents.js.map
|
package/trackingEvents.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trackingEvents.js","sourceRoot":"","sources":["src/trackingEvents.ts"],"names":[],"mappings":";;;AAkaA,sDAEC;AAED,gDAEC;AAjWD;;GAEG;AAEU,QAAA,cAAc,GAAG;IAC1B,YAAY;IACZ,YAAY;CACN,CAAC;AAEE,QAAA,aAAa,GAAG;IACzB,WAAW;IACX,eAAe;IACf,sBAAsB;CAChB,CAAC;AAEE,QAAA,cAAc,GAAG;IAC1B,cAAc;IACd,YAAY;IACZ,iBAAiB;CACX,CAAC;AAEE,QAAA,mBAAmB,GAAG;IAC/B,GAAG,sBAAc;IACjB,aAAa;IACb,eAAe;CACT,CAAC;AAEE,QAAA,wBAAwB,GAAG;IACpC,cAAc;IACd,eAAe;IACf,cAAc;CACjB,CAAC;AAEW,QAAA,cAAc,GAAG;IAC1B,GAAG,gCAAwB;IAC3B,oBAAoB;CACd,CAAC;AAEE,QAAA,cAAc,GAAG;IAC1B,gBAAgB;IAChB,0BAA0B;IAC1B,eAAe;IACf,eAAe;IACf,YAAY;IACZ,eAAe;IACf,YAAY;CACN,CAAC;AAEE,QAAA,UAAU,GAAG;IACtB,GAAG,sBAAc;IACjB,GAAG,2BAAmB;IACtB,GAAG,sBAAc;IACjB,GAAG,sBAAc;CACX,CAAC;AAkSX;;GAEG;AAEH,SAAgB,qBAAqB,CAAC,KAAoB;IACtD,OAAO,gCAAwB,CAAC,QAAQ,CAAE,KAA6B,CAAC,IAAI,CAAC,CAAC;AAClF,CAAC;AAED,SAAgB,kBAAkB,CAAC,KAA2B;IAC1D,OAAO,sBAAc,CAAC,QAAQ,CAAE,KAAmB,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC"}
|
|
1
|
+
{"version":3,"sources":["src/trackingEvents.ts"],"sourcesContent":["import {Patch} from './patch';\nimport {DistributiveOmit, Optional} from './utilityTypes';\n\n/*\n * Object values\n */\n\nexport type ProductDetails = {\n productId: string,\n sku?: string,\n name: string,\n category?: string,\n brand?: string,\n variant?: string,\n displayPrice: number,\n originalPrice?: number,\n url?: string,\n imageUrl?: string,\n};\n\nexport type CartItem = {\n index: number,\n product: ProductDetails,\n quantity: number,\n total: number,\n discount?: number,\n coupon?: string,\n};\n\nexport type Cart = {\n currency: string,\n items: CartItem[],\n subtotal?: number,\n shippingPrice?: number,\n taxes?: {[key: string]: number},\n costs?: {[key: string]: number},\n discount?: number,\n total: number,\n coupon?: string,\n lastUpdateTime: number,\n};\n\nexport type OrderItem = {\n index: number,\n product: ProductDetails,\n quantity?: number,\n total: number,\n discount?: number,\n coupon?: string,\n};\n\nexport type OrderStatus = 'placed' | 'paid' | 'completed';\n\nexport type Order = {\n orderId: string,\n currency: string,\n items: OrderItem[],\n subtotal?: number,\n shippingPrice?: number,\n taxes?: {[key: string]: number},\n costs?: {[key: string]: number},\n discount?: number,\n total: number,\n coupon?: string,\n paymentMethod?: string,\n installments?: number,\n status?: OrderStatus,\n};\n\nexport type Gender = 'male' | 'female' | 'neutral' | 'unknown';\n\n/*\n * Events\n */\n\nexport const pageEventTypes = [\n 'pageLoaded',\n 'pageOpened',\n] as const;\n\nexport const tabEventTypes = [\n 'tabOpened',\n 'tabUrlChanged',\n 'tabVisibilityChanged',\n] as const;\n\nexport const cartEventTypes = [\n 'cartModified',\n 'cartViewed',\n 'checkoutStarted',\n] as const;\n\nexport const ecommerceEventTypes = [\n ...cartEventTypes,\n 'orderPlaced',\n 'productViewed',\n] as const;\n\nexport const identifiedUserEventTypes = [\n 'userSignedIn',\n 'userSignedOut',\n 'userSignedUp',\n];\n\nexport const userEventTypes = [\n ...identifiedUserEventTypes,\n 'userProfileChanged',\n] as const;\n\nexport const miscEventTypes = [\n 'nothingChanged',\n 'sessionAttributesChanged',\n 'goalCompleted',\n 'interestShown',\n 'postViewed',\n 'eventOccurred',\n 'linkOpened',\n] as const;\n\nexport const eventTypes = [\n ...pageEventTypes,\n ...ecommerceEventTypes,\n ...userEventTypes,\n ...miscEventTypes,\n] as const;\n\ninterface BaseEvent {\n type: string;\n}\n\n/*\n * User events\n */\n\nexport interface UserProfileChanged extends BaseEvent {\n type: 'userProfileChanged';\n patch: Patch;\n}\n\ntype Primitive = null | string | number | boolean;\ntype PrimitiveMap = {[member: string]: Primitive};\ntype PrimitiveArray = Primitive[];\ntype TwoLevelMap = {[member: string]: Primitive | PrimitiveMap | PrimitiveArray};\ntype TwoLevelArray = PrimitiveArray | PrimitiveMap[] | PrimitiveArray[];\ntype CustomAttribute = Primitive | TwoLevelMap | TwoLevelArray;\n\nexport type UserProfile = {\n firstName?: string,\n lastName?: string,\n birthDate?: string,\n gender?: Gender,\n email?: string,\n alternateEmail?: string,\n phone?: string,\n alternatePhone?: string,\n address?: {\n street?: string,\n district?: string,\n city?: string,\n region?: string,\n country?: string,\n postalCode?: string,\n },\n avatar?: string,\n company?: string,\n companyUrl?: string,\n jobTitle?: string,\n interests?: string[],\n activities?: string[],\n custom?: {\n [member: string]: CustomAttribute,\n },\n};\n\nexport interface UserSignedUp extends BaseEvent {\n type: 'userSignedUp';\n userId: string;\n profile?: UserProfile;\n}\n\nexport interface UserSignedIn extends BaseEvent {\n type: 'userSignedIn';\n userId: string;\n}\n\nexport interface UserSignedOut extends BaseEvent {\n type: 'userSignedOut';\n userId: string;\n}\n\nexport type IdentifiedUserEvent = UserSignedIn | UserSignedOut | UserSignedUp;\nexport type UserEvent = UserProfileChanged | IdentifiedUserEvent;\n\n/*\n * E-commerce events\n */\n\nexport type CartEventType = typeof cartEventTypes[number];\n\ninterface BaseCartEvent extends BaseEvent {\n type: CartEventType;\n cart: Cart;\n}\n\nexport interface CartViewed extends BaseCartEvent {\n type: 'cartViewed';\n}\n\nexport interface CartModified extends BaseCartEvent {\n type: 'cartModified';\n}\n\nexport interface CheckoutStarted extends BaseCartEvent {\n type: 'checkoutStarted';\n orderId?: string;\n}\n\nexport type CartEvent = CartModified | CartViewed | CheckoutStarted;\n\nexport interface OrderPlaced extends BaseEvent {\n type: 'orderPlaced';\n order: Order;\n}\n\nexport interface ProductViewed extends BaseEvent {\n type: 'productViewed';\n product: ProductDetails;\n}\n\nexport type EcommerceEvent = OrderPlaced | ProductViewed | CartEvent;\n\n/**\n * Tab event\n */\n\nexport type TabEventType = typeof tabEventTypes[number];\n\ninterface BaseTabEvent extends BaseEvent {\n type: TabEventType;\n tabId: string;\n}\n\nexport interface TabOpened extends BaseTabEvent {\n type: 'tabOpened';\n}\n\nexport interface TabUrlChanged extends BaseTabEvent {\n type: 'tabUrlChanged';\n url: string;\n}\n\nexport interface TabVisibilityChanged extends BaseTabEvent {\n type: 'tabVisibilityChanged';\n visibility: 'visible' | 'hidden';\n}\n\nexport type TabEvent = TabVisibilityChanged | TabUrlChanged | TabOpened;\n\n/*\n * Page events\n */\n\nexport type PageEventType = typeof pageEventTypes[number];\n\ninterface BasePageEvent extends BaseEvent {\n type: PageEventType;\n url: string;\n}\n\nexport interface PageOpened extends BasePageEvent {\n type: 'pageOpened';\n referrer?: string;\n}\n\nexport interface PageLoaded extends BasePageEvent {\n type: 'pageLoaded';\n title: string;\n lastModifiedTime: number;\n}\n\nexport type PageEvent = PageLoaded | PageOpened;\n\n/*\n * Misc events\n */\n\nexport interface NothingChanged extends BaseEvent {\n type: 'nothingChanged';\n sinceTime: number;\n}\n\nexport interface SessionAttributesChanged extends BaseEvent {\n type: 'sessionAttributesChanged';\n patch: Patch;\n}\n\nexport interface GoalCompleted extends BaseEvent {\n type: 'goalCompleted';\n goalId: string;\n value?: number;\n currency?: string;\n}\n\nexport interface InterestShown extends BaseEvent {\n type: 'interestShown';\n interests: string[];\n}\n\nexport interface PostDetails {\n postId: string;\n url?: string;\n title: string;\n tags?: string[];\n categories?: string[];\n authors?: string[];\n publishTime: number;\n updateTime?: number;\n}\n\nexport interface PostViewed extends BaseEvent {\n type: 'postViewed';\n post: PostDetails;\n}\n\nexport interface EventOccurred extends BaseEvent {\n type: 'eventOccurred';\n name: string;\n details?: {[key: string]: string|number|boolean|null};\n}\n\nexport interface LinkOpened extends BaseEvent {\n type: 'linkOpened';\n link: string;\n}\n\nexport type MiscEvent =\n NothingChanged\n | SessionAttributesChanged\n | EventOccurred\n | GoalCompleted\n | InterestShown\n | PostViewed\n | LinkOpened;\n\ntype EventMap = {\n // Tab events\n tabVisibilityChanged: TabVisibilityChanged,\n tabUrlChanged: TabUrlChanged,\n tabOpened: TabOpened,\n // Page events\n pageLoaded: PageLoaded,\n pageOpened: PageOpened,\n // User events\n userSignedIn: UserSignedIn,\n userSignedOut: UserSignedOut,\n userSignedUp: UserSignedUp,\n userProfileChanged: UserProfileChanged,\n // E-commerce events\n productViewed: ProductViewed,\n cartViewed: CartViewed,\n cartModified: CartModified,\n checkoutStarted: CheckoutStarted,\n orderPlaced: OrderPlaced,\n // Misc events\n nothingChanged: NothingChanged,\n sessionAttributesChanged: SessionAttributesChanged,\n goalCompleted: GoalCompleted,\n interestShown: InterestShown,\n postViewed: PostViewed,\n eventOccurred: EventOccurred,\n linkOpened: LinkOpened,\n};\n\nexport type TrackingEventType = keyof EventMap;\n\nexport type TrackingEvent<T extends TrackingEventType = TrackingEventType> =\n T extends TrackingEventType ? EventMap[T] : EventMap[TrackingEventType];\n\n/**\n * Partial Events\n */\n\ntype CartPartialEvent <T extends CartEvent = CartEvent> =\n DistributiveOmit<T, 'cart'> & Record<'cart', Optional<Cart, 'lastUpdateTime'>>;\n\nexport type PartialTrackingEvent = Exclude<TrackingEvent, PageEvent | TabEvent | CartEvent> | CartPartialEvent;\n\n/**\n * External Events\n */\n\ntype ExternalEventMap = {\n cartModified: CartPartialEvent<CartModified>,\n cartViewed: CartPartialEvent<CartViewed>,\n checkoutStarted: CartPartialEvent<CheckoutStarted>,\n orderPlaced: OrderPlaced,\n productViewed: ProductViewed,\n userSignedUp: UserSignedUp,\n goalCompleted: GoalCompleted,\n interestShown: InterestShown,\n postViewed: PostViewed,\n linkOpened: LinkOpened,\n eventOccurred: EventOccurred,\n};\n\nexport type ExternalTrackingEventType = keyof ExternalEventMap;\n\nexport type ExternalTrackingEvent<T extends ExternalTrackingEventType = ExternalTrackingEventType> =\n T extends ExternalTrackingEventType\n ? ExternalEventMap[T]\n : ExternalEventMap[ExternalTrackingEventType];\n\nexport type ExternalTrackingEventPayload<T extends ExternalTrackingEventType> = Omit<ExternalEventMap[T], 'type'>;\n\n/*\n * Type guards\n */\n\nexport function isIdentifiedUserEvent(event: TrackingEvent): event is IdentifiedUserEvent {\n return identifiedUserEventTypes.includes((event as IdentifiedUserEvent).type);\n}\n\nexport function isCartPartialEvent(event: PartialTrackingEvent): event is CartPartialEvent {\n return cartEventTypes.includes((event as CartEvent).type);\n}\n\n/*\n * Beacon\n */\n\nexport type TrackingEventContext = {\n tabId: string,\n url: string,\n metadata?: {[key: string]: string},\n};\n\nexport type BeaconPayload =\n Exclude<TrackingEvent, IdentifiedUserEvent>\n // Renames \"userId\" to \"externalUserId\"\n | DistributiveOmit<Exclude<IdentifiedUserEvent, UserSignedUp>, 'userId'>\n & Record<'externalUserId', IdentifiedUserEvent['userId']>\n // Renames \"userId\" to \"externalUserId\", remove \"profile\" and add \"patch\"\n | Omit<UserSignedUp, 'userId' | 'profile'>\n & Record<'externalUserId', IdentifiedUserEvent['userId']>\n & {patch?: Patch};\n\nexport type Beacon = {\n timestamp: number,\n token?: string,\n context: TrackingEventContext,\n payload: BeaconPayload,\n};\n"],"mappings":"AA2EO,MAAM,iBAAiB;AAAA,EAC1B;AAAA,EACA;AACJ;AAEO,MAAM,gBAAgB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AACJ;AAEO,MAAM,iBAAiB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AACJ;AAEO,MAAM,sBAAsB;AAAA,EAC/B,GAAG;AAAA,EACH;AAAA,EACA;AACJ;AAEO,MAAM,2BAA2B;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AACJ;AAEO,MAAM,iBAAiB;AAAA,EAC1B,GAAG;AAAA,EACH;AACJ;AAEO,MAAM,iBAAiB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ;AAEO,MAAM,aAAa;AAAA,EACtB,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACP;AAsSO,SAAS,sBAAsB,OAAoD;AACtF,SAAO,yBAAyB,SAAU,MAA8B,IAAI;AAChF;AAEO,SAAS,mBAAmB,OAAwD;AACvF,SAAO,eAAe,SAAU,MAAoB,IAAI;AAC5D;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/transformer.ts"],"sourcesContent":["export interface Transformer<I, O> {\n (input: I): Promise<O>;\n}\n\nexport const encodeJson: Transformer<any, string> = function encodeJson(input: any): Promise<string> {\n return Promise.resolve(JSON.stringify(input));\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIO,MAAM,aAAuC,SAASA,YAAW,OAA6B;AACjG,SAAO,QAAQ,QAAQ,KAAK,UAAU,KAAK,CAAC;AAChD;","names":["encodeJson"]}
|
package/transformer.d.ts
CHANGED
package/transformer.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
const encodeJson = function encodeJson2(input) {
|
|
2
|
+
return Promise.resolve(JSON.stringify(input));
|
|
3
|
+
};
|
|
4
|
+
export {
|
|
5
|
+
encodeJson
|
|
6
6
|
};
|
|
7
|
-
exports.encodeJson = encodeJson;
|
|
8
7
|
//# sourceMappingURL=transformer.js.map
|
package/transformer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["src/transformer.ts"],"sourcesContent":["export interface Transformer<I, O> {\n (input: I): Promise<O>;\n}\n\nexport const encodeJson: Transformer<any, string> = function encodeJson(input: any): Promise<string> {\n return Promise.resolve(JSON.stringify(input));\n};\n"],"mappings":"AAIO,MAAM,aAAuC,SAASA,YAAW,OAA6B;AACjG,SAAO,QAAQ,QAAQ,KAAK,UAAU,KAAK,CAAC;AAChD;","names":["encodeJson"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utilityTypes.ts"],"sourcesContent":["export type DistributiveOmit<T, K extends keyof T> = T extends unknown ? Omit<T, K> : never;\n\nexport type Optional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n"],"mappings":";;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
package/utilityTypes.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
type DistributiveOmit<T, K extends keyof T> = T extends unknown ? Omit<T, K> : never;
|
|
2
|
+
type Optional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
3
|
+
|
|
4
|
+
export type { DistributiveOmit, Optional };
|
package/utilityTypes.js
CHANGED
package/utilityTypes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
package/uuid.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/uuid.ts"],"sourcesContent":["export function uuid4(sortable = false): string {\n let uuid = '';\n\n if (sortable) {\n const prefix = Date.now()\n .toString(16)\n .padStart(12, '0')\n .substring(0, 12);\n\n uuid = `${prefix.substring(0, 8)}-${prefix.substring(8, 12)}`;\n }\n\n for (let index = uuid.length; index < 36; index++) {\n switch (index) {\n case 8:\n case 13:\n case 18:\n case 23:\n uuid += '-';\n\n break;\n\n case 14:\n // bits 12-15 of the time_hi_and_version field to 0010\n uuid += '4';\n\n break;\n\n default: {\n let random = (Math.random() * 16) | 0;\n\n if (index === 19) {\n // bits 6-7 of the clock_seq_hi_and_reserved to 01\n random = (random & 3) | 8;\n }\n\n uuid += random.toString(16);\n }\n }\n }\n\n return uuid;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,SAAS,MAAM,WAAW,OAAe;AAC5C,MAAI,OAAO;AAEX,MAAI,UAAU;AACV,UAAM,SAAS,KAAK,IAAI,EACnB,SAAS,EAAE,EACX,SAAS,IAAI,GAAG,EAChB,UAAU,GAAG,EAAE;AAEpB,WAAO,GAAG,OAAO,UAAU,GAAG,CAAC,CAAC,IAAI,OAAO,UAAU,GAAG,EAAE,CAAC;AAAA,EAC/D;AAEA,WAAS,QAAQ,KAAK,QAAQ,QAAQ,IAAI,SAAS;AAC/C,YAAQ,OAAO;AAAA,MACX,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD,gBAAQ;AAER;AAAA,MAEJ,KAAK;AAED,gBAAQ;AAER;AAAA,MAEJ,SAAS;AACL,YAAI,SAAU,KAAK,OAAO,IAAI,KAAM;AAEpC,YAAI,UAAU,IAAI;AAEd,mBAAU,SAAS,IAAK;AAAA,QAC5B;AAEA,gBAAQ,OAAO,SAAS,EAAE;AAAA,MAC9B;AAAA,IACJ;AAAA,EACJ;AAEA,SAAO;AACX;","names":[]}
|
package/uuid.d.ts
CHANGED