@xylabs/pixel 1.7.0 → 2.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/dist/browser/index.d.ts +155 -13
- package/dist/browser/{index.js → index.mjs} +39 -12
- package/dist/browser/index.mjs.map +1 -0
- package/eslint.config.mjs +43 -0
- package/package.json +24 -47
- package/src/Pixel.ts +3 -3
- package/src/UtmFields.ts +3 -3
- package/src/spec/Pixel.spec.ts +6 -2
- package/vitest.config.ts +12 -0
- package/vitest.startup.ts +8 -0
- package/xy.config.ts +10 -0
- package/dist/browser/Api/Api.d.cts +0 -7
- package/dist/browser/Api/Api.d.cts.map +0 -1
- package/dist/browser/Api/Api.d.mts +0 -7
- package/dist/browser/Api/Api.d.mts.map +0 -1
- package/dist/browser/Api/Api.d.ts +0 -7
- package/dist/browser/Api/Api.d.ts.map +0 -1
- package/dist/browser/Api/UserEvent.d.cts +0 -25
- package/dist/browser/Api/UserEvent.d.cts.map +0 -1
- package/dist/browser/Api/UserEvent.d.mts +0 -25
- package/dist/browser/Api/UserEvent.d.mts.map +0 -1
- package/dist/browser/Api/UserEvent.d.ts +0 -25
- package/dist/browser/Api/UserEvent.d.ts.map +0 -1
- package/dist/browser/Api/UserEventSystem.d.cts +0 -3
- package/dist/browser/Api/UserEventSystem.d.cts.map +0 -1
- package/dist/browser/Api/UserEventSystem.d.mts +0 -3
- package/dist/browser/Api/UserEventSystem.d.mts.map +0 -1
- package/dist/browser/Api/UserEventSystem.d.ts +0 -3
- package/dist/browser/Api/UserEventSystem.d.ts.map +0 -1
- package/dist/browser/Api/index.d.cts +0 -4
- package/dist/browser/Api/index.d.cts.map +0 -1
- package/dist/browser/Api/index.d.mts +0 -4
- package/dist/browser/Api/index.d.mts.map +0 -1
- package/dist/browser/Api/index.d.ts +0 -4
- package/dist/browser/Api/index.d.ts.map +0 -1
- package/dist/browser/CommonFields.d.cts +0 -5
- package/dist/browser/CommonFields.d.cts.map +0 -1
- package/dist/browser/CommonFields.d.mts +0 -5
- package/dist/browser/CommonFields.d.mts.map +0 -1
- package/dist/browser/CommonFields.d.ts +0 -5
- package/dist/browser/CommonFields.d.ts.map +0 -1
- package/dist/browser/ExIds.d.cts +0 -10
- package/dist/browser/ExIds.d.cts.map +0 -1
- package/dist/browser/ExIds.d.mts +0 -10
- package/dist/browser/ExIds.d.mts.map +0 -1
- package/dist/browser/ExIds.d.ts +0 -10
- package/dist/browser/ExIds.d.ts.map +0 -1
- package/dist/browser/FunnelStartedFields.d.cts +0 -5
- package/dist/browser/FunnelStartedFields.d.cts.map +0 -1
- package/dist/browser/FunnelStartedFields.d.mts +0 -5
- package/dist/browser/FunnelStartedFields.d.mts.map +0 -1
- package/dist/browser/FunnelStartedFields.d.ts +0 -5
- package/dist/browser/FunnelStartedFields.d.ts.map +0 -1
- package/dist/browser/Pixel.d.cts +0 -24
- package/dist/browser/Pixel.d.cts.map +0 -1
- package/dist/browser/Pixel.d.mts +0 -24
- package/dist/browser/Pixel.d.mts.map +0 -1
- package/dist/browser/Pixel.d.ts +0 -24
- package/dist/browser/Pixel.d.ts.map +0 -1
- package/dist/browser/Referrer.d.cts +0 -13
- package/dist/browser/Referrer.d.cts.map +0 -1
- package/dist/browser/Referrer.d.mts +0 -13
- package/dist/browser/Referrer.d.mts.map +0 -1
- package/dist/browser/Referrer.d.ts +0 -13
- package/dist/browser/Referrer.d.ts.map +0 -1
- package/dist/browser/TestStartedFields.d.cts +0 -5
- package/dist/browser/TestStartedFields.d.cts.map +0 -1
- package/dist/browser/TestStartedFields.d.mts +0 -5
- package/dist/browser/TestStartedFields.d.mts.map +0 -1
- package/dist/browser/TestStartedFields.d.ts +0 -5
- package/dist/browser/TestStartedFields.d.ts.map +0 -1
- package/dist/browser/UniqueUserId.d.cts +0 -8
- package/dist/browser/UniqueUserId.d.cts.map +0 -1
- package/dist/browser/UniqueUserId.d.mts +0 -8
- package/dist/browser/UniqueUserId.d.mts.map +0 -1
- package/dist/browser/UniqueUserId.d.ts +0 -8
- package/dist/browser/UniqueUserId.d.ts.map +0 -1
- package/dist/browser/UserClickFields.d.cts +0 -6
- package/dist/browser/UserClickFields.d.cts.map +0 -1
- package/dist/browser/UserClickFields.d.mts +0 -6
- package/dist/browser/UserClickFields.d.mts.map +0 -1
- package/dist/browser/UserClickFields.d.ts +0 -6
- package/dist/browser/UserClickFields.d.ts.map +0 -1
- package/dist/browser/UserEventHandler.d.cts +0 -11
- package/dist/browser/UserEventHandler.d.cts.map +0 -1
- package/dist/browser/UserEventHandler.d.mts +0 -11
- package/dist/browser/UserEventHandler.d.mts.map +0 -1
- package/dist/browser/UserEventHandler.d.ts +0 -11
- package/dist/browser/UserEventHandler.d.ts.map +0 -1
- package/dist/browser/UtmFields.d.cts +0 -9
- package/dist/browser/UtmFields.d.cts.map +0 -1
- package/dist/browser/UtmFields.d.mts +0 -9
- package/dist/browser/UtmFields.d.mts.map +0 -1
- package/dist/browser/UtmFields.d.ts +0 -9
- package/dist/browser/UtmFields.d.ts.map +0 -1
- package/dist/browser/ViewContentFields.d.cts +0 -6
- package/dist/browser/ViewContentFields.d.cts.map +0 -1
- package/dist/browser/ViewContentFields.d.mts +0 -6
- package/dist/browser/ViewContentFields.d.mts.map +0 -1
- package/dist/browser/ViewContentFields.d.ts +0 -6
- package/dist/browser/ViewContentFields.d.ts.map +0 -1
- package/dist/browser/XyLabsTrackingEventJson.d.cts +0 -21
- package/dist/browser/XyLabsTrackingEventJson.d.cts.map +0 -1
- package/dist/browser/XyLabsTrackingEventJson.d.mts +0 -21
- package/dist/browser/XyLabsTrackingEventJson.d.mts.map +0 -1
- package/dist/browser/XyLabsTrackingEventJson.d.ts +0 -21
- package/dist/browser/XyLabsTrackingEventJson.d.ts.map +0 -1
- package/dist/browser/XyUserEventHandler.d.cts +0 -13
- package/dist/browser/XyUserEventHandler.d.cts.map +0 -1
- package/dist/browser/XyUserEventHandler.d.mts +0 -13
- package/dist/browser/XyUserEventHandler.d.mts.map +0 -1
- package/dist/browser/XyUserEventHandler.d.ts +0 -13
- package/dist/browser/XyUserEventHandler.d.ts.map +0 -1
- package/dist/browser/getSystemInfo.d.cts +0 -2
- package/dist/browser/getSystemInfo.d.cts.map +0 -1
- package/dist/browser/getSystemInfo.d.mts +0 -2
- package/dist/browser/getSystemInfo.d.mts.map +0 -1
- package/dist/browser/getSystemInfo.d.ts +0 -2
- package/dist/browser/getSystemInfo.d.ts.map +0 -1
- package/dist/browser/index.cjs +0 -285
- package/dist/browser/index.cjs.map +0 -1
- package/dist/browser/index.d.cts +0 -13
- package/dist/browser/index.d.cts.map +0 -1
- package/dist/browser/index.d.mts +0 -13
- package/dist/browser/index.d.mts.map +0 -1
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/index.js.map +0 -1
- package/dist/neutral/Api/Api.d.cts +0 -7
- package/dist/neutral/Api/Api.d.cts.map +0 -1
- package/dist/neutral/Api/Api.d.mts +0 -7
- package/dist/neutral/Api/Api.d.mts.map +0 -1
- package/dist/neutral/Api/Api.d.ts +0 -7
- package/dist/neutral/Api/Api.d.ts.map +0 -1
- package/dist/neutral/Api/UserEvent.d.cts +0 -25
- package/dist/neutral/Api/UserEvent.d.cts.map +0 -1
- package/dist/neutral/Api/UserEvent.d.mts +0 -25
- package/dist/neutral/Api/UserEvent.d.mts.map +0 -1
- package/dist/neutral/Api/UserEvent.d.ts +0 -25
- package/dist/neutral/Api/UserEvent.d.ts.map +0 -1
- package/dist/neutral/Api/UserEventSystem.d.cts +0 -3
- package/dist/neutral/Api/UserEventSystem.d.cts.map +0 -1
- package/dist/neutral/Api/UserEventSystem.d.mts +0 -3
- package/dist/neutral/Api/UserEventSystem.d.mts.map +0 -1
- package/dist/neutral/Api/UserEventSystem.d.ts +0 -3
- package/dist/neutral/Api/UserEventSystem.d.ts.map +0 -1
- package/dist/neutral/Api/index.d.cts +0 -4
- package/dist/neutral/Api/index.d.cts.map +0 -1
- package/dist/neutral/Api/index.d.mts +0 -4
- package/dist/neutral/Api/index.d.mts.map +0 -1
- package/dist/neutral/Api/index.d.ts +0 -4
- package/dist/neutral/Api/index.d.ts.map +0 -1
- package/dist/neutral/CommonFields.d.cts +0 -5
- package/dist/neutral/CommonFields.d.cts.map +0 -1
- package/dist/neutral/CommonFields.d.mts +0 -5
- package/dist/neutral/CommonFields.d.mts.map +0 -1
- package/dist/neutral/CommonFields.d.ts +0 -5
- package/dist/neutral/CommonFields.d.ts.map +0 -1
- package/dist/neutral/ExIds.d.cts +0 -10
- package/dist/neutral/ExIds.d.cts.map +0 -1
- package/dist/neutral/ExIds.d.mts +0 -10
- package/dist/neutral/ExIds.d.mts.map +0 -1
- package/dist/neutral/ExIds.d.ts +0 -10
- package/dist/neutral/ExIds.d.ts.map +0 -1
- package/dist/neutral/FunnelStartedFields.d.cts +0 -5
- package/dist/neutral/FunnelStartedFields.d.cts.map +0 -1
- package/dist/neutral/FunnelStartedFields.d.mts +0 -5
- package/dist/neutral/FunnelStartedFields.d.mts.map +0 -1
- package/dist/neutral/FunnelStartedFields.d.ts +0 -5
- package/dist/neutral/FunnelStartedFields.d.ts.map +0 -1
- package/dist/neutral/Pixel.d.cts +0 -24
- package/dist/neutral/Pixel.d.cts.map +0 -1
- package/dist/neutral/Pixel.d.mts +0 -24
- package/dist/neutral/Pixel.d.mts.map +0 -1
- package/dist/neutral/Pixel.d.ts +0 -24
- package/dist/neutral/Pixel.d.ts.map +0 -1
- package/dist/neutral/Referrer.d.cts +0 -13
- package/dist/neutral/Referrer.d.cts.map +0 -1
- package/dist/neutral/Referrer.d.mts +0 -13
- package/dist/neutral/Referrer.d.mts.map +0 -1
- package/dist/neutral/Referrer.d.ts +0 -13
- package/dist/neutral/Referrer.d.ts.map +0 -1
- package/dist/neutral/TestStartedFields.d.cts +0 -5
- package/dist/neutral/TestStartedFields.d.cts.map +0 -1
- package/dist/neutral/TestStartedFields.d.mts +0 -5
- package/dist/neutral/TestStartedFields.d.mts.map +0 -1
- package/dist/neutral/TestStartedFields.d.ts +0 -5
- package/dist/neutral/TestStartedFields.d.ts.map +0 -1
- package/dist/neutral/UniqueUserId.d.cts +0 -8
- package/dist/neutral/UniqueUserId.d.cts.map +0 -1
- package/dist/neutral/UniqueUserId.d.mts +0 -8
- package/dist/neutral/UniqueUserId.d.mts.map +0 -1
- package/dist/neutral/UniqueUserId.d.ts +0 -8
- package/dist/neutral/UniqueUserId.d.ts.map +0 -1
- package/dist/neutral/UserClickFields.d.cts +0 -6
- package/dist/neutral/UserClickFields.d.cts.map +0 -1
- package/dist/neutral/UserClickFields.d.mts +0 -6
- package/dist/neutral/UserClickFields.d.mts.map +0 -1
- package/dist/neutral/UserClickFields.d.ts +0 -6
- package/dist/neutral/UserClickFields.d.ts.map +0 -1
- package/dist/neutral/UserEventHandler.d.cts +0 -11
- package/dist/neutral/UserEventHandler.d.cts.map +0 -1
- package/dist/neutral/UserEventHandler.d.mts +0 -11
- package/dist/neutral/UserEventHandler.d.mts.map +0 -1
- package/dist/neutral/UserEventHandler.d.ts +0 -11
- package/dist/neutral/UserEventHandler.d.ts.map +0 -1
- package/dist/neutral/UtmFields.d.cts +0 -9
- package/dist/neutral/UtmFields.d.cts.map +0 -1
- package/dist/neutral/UtmFields.d.mts +0 -9
- package/dist/neutral/UtmFields.d.mts.map +0 -1
- package/dist/neutral/UtmFields.d.ts +0 -9
- package/dist/neutral/UtmFields.d.ts.map +0 -1
- package/dist/neutral/ViewContentFields.d.cts +0 -6
- package/dist/neutral/ViewContentFields.d.cts.map +0 -1
- package/dist/neutral/ViewContentFields.d.mts +0 -6
- package/dist/neutral/ViewContentFields.d.mts.map +0 -1
- package/dist/neutral/ViewContentFields.d.ts +0 -6
- package/dist/neutral/ViewContentFields.d.ts.map +0 -1
- package/dist/neutral/XyLabsTrackingEventJson.d.cts +0 -21
- package/dist/neutral/XyLabsTrackingEventJson.d.cts.map +0 -1
- package/dist/neutral/XyLabsTrackingEventJson.d.mts +0 -21
- package/dist/neutral/XyLabsTrackingEventJson.d.mts.map +0 -1
- package/dist/neutral/XyLabsTrackingEventJson.d.ts +0 -21
- package/dist/neutral/XyLabsTrackingEventJson.d.ts.map +0 -1
- package/dist/neutral/XyUserEventHandler.d.cts +0 -13
- package/dist/neutral/XyUserEventHandler.d.cts.map +0 -1
- package/dist/neutral/XyUserEventHandler.d.mts +0 -13
- package/dist/neutral/XyUserEventHandler.d.mts.map +0 -1
- package/dist/neutral/XyUserEventHandler.d.ts +0 -13
- package/dist/neutral/XyUserEventHandler.d.ts.map +0 -1
- package/dist/neutral/getSystemInfo.d.cts +0 -2
- package/dist/neutral/getSystemInfo.d.cts.map +0 -1
- package/dist/neutral/getSystemInfo.d.mts +0 -2
- package/dist/neutral/getSystemInfo.d.mts.map +0 -1
- package/dist/neutral/getSystemInfo.d.ts +0 -2
- package/dist/neutral/getSystemInfo.d.ts.map +0 -1
- package/dist/neutral/index.cjs +0 -285
- package/dist/neutral/index.cjs.map +0 -1
- package/dist/neutral/index.d.cts +0 -13
- package/dist/neutral/index.d.cts.map +0 -1
- package/dist/neutral/index.d.mts +0 -13
- package/dist/neutral/index.d.mts.map +0 -1
- package/dist/neutral/index.d.ts +0 -13
- package/dist/neutral/index.d.ts.map +0 -1
- package/dist/neutral/index.js +0 -252
- package/dist/neutral/index.js.map +0 -1
- package/dist/node/Api/Api.d.cts +0 -7
- package/dist/node/Api/Api.d.cts.map +0 -1
- package/dist/node/Api/Api.d.mts +0 -7
- package/dist/node/Api/Api.d.mts.map +0 -1
- package/dist/node/Api/Api.d.ts +0 -7
- package/dist/node/Api/Api.d.ts.map +0 -1
- package/dist/node/Api/UserEvent.d.cts +0 -25
- package/dist/node/Api/UserEvent.d.cts.map +0 -1
- package/dist/node/Api/UserEvent.d.mts +0 -25
- package/dist/node/Api/UserEvent.d.mts.map +0 -1
- package/dist/node/Api/UserEvent.d.ts +0 -25
- package/dist/node/Api/UserEvent.d.ts.map +0 -1
- package/dist/node/Api/UserEventSystem.d.cts +0 -3
- package/dist/node/Api/UserEventSystem.d.cts.map +0 -1
- package/dist/node/Api/UserEventSystem.d.mts +0 -3
- package/dist/node/Api/UserEventSystem.d.mts.map +0 -1
- package/dist/node/Api/UserEventSystem.d.ts +0 -3
- package/dist/node/Api/UserEventSystem.d.ts.map +0 -1
- package/dist/node/Api/index.d.cts +0 -4
- package/dist/node/Api/index.d.cts.map +0 -1
- package/dist/node/Api/index.d.mts +0 -4
- package/dist/node/Api/index.d.mts.map +0 -1
- package/dist/node/Api/index.d.ts +0 -4
- package/dist/node/Api/index.d.ts.map +0 -1
- package/dist/node/CommonFields.d.cts +0 -5
- package/dist/node/CommonFields.d.cts.map +0 -1
- package/dist/node/CommonFields.d.mts +0 -5
- package/dist/node/CommonFields.d.mts.map +0 -1
- package/dist/node/CommonFields.d.ts +0 -5
- package/dist/node/CommonFields.d.ts.map +0 -1
- package/dist/node/ExIds.d.cts +0 -10
- package/dist/node/ExIds.d.cts.map +0 -1
- package/dist/node/ExIds.d.mts +0 -10
- package/dist/node/ExIds.d.mts.map +0 -1
- package/dist/node/ExIds.d.ts +0 -10
- package/dist/node/ExIds.d.ts.map +0 -1
- package/dist/node/FunnelStartedFields.d.cts +0 -5
- package/dist/node/FunnelStartedFields.d.cts.map +0 -1
- package/dist/node/FunnelStartedFields.d.mts +0 -5
- package/dist/node/FunnelStartedFields.d.mts.map +0 -1
- package/dist/node/FunnelStartedFields.d.ts +0 -5
- package/dist/node/FunnelStartedFields.d.ts.map +0 -1
- package/dist/node/Pixel.d.cts +0 -24
- package/dist/node/Pixel.d.cts.map +0 -1
- package/dist/node/Pixel.d.mts +0 -24
- package/dist/node/Pixel.d.mts.map +0 -1
- package/dist/node/Pixel.d.ts +0 -24
- package/dist/node/Pixel.d.ts.map +0 -1
- package/dist/node/Referrer.d.cts +0 -13
- package/dist/node/Referrer.d.cts.map +0 -1
- package/dist/node/Referrer.d.mts +0 -13
- package/dist/node/Referrer.d.mts.map +0 -1
- package/dist/node/Referrer.d.ts +0 -13
- package/dist/node/Referrer.d.ts.map +0 -1
- package/dist/node/TestStartedFields.d.cts +0 -5
- package/dist/node/TestStartedFields.d.cts.map +0 -1
- package/dist/node/TestStartedFields.d.mts +0 -5
- package/dist/node/TestStartedFields.d.mts.map +0 -1
- package/dist/node/TestStartedFields.d.ts +0 -5
- package/dist/node/TestStartedFields.d.ts.map +0 -1
- package/dist/node/UniqueUserId.d.cts +0 -8
- package/dist/node/UniqueUserId.d.cts.map +0 -1
- package/dist/node/UniqueUserId.d.mts +0 -8
- package/dist/node/UniqueUserId.d.mts.map +0 -1
- package/dist/node/UniqueUserId.d.ts +0 -8
- package/dist/node/UniqueUserId.d.ts.map +0 -1
- package/dist/node/UserClickFields.d.cts +0 -6
- package/dist/node/UserClickFields.d.cts.map +0 -1
- package/dist/node/UserClickFields.d.mts +0 -6
- package/dist/node/UserClickFields.d.mts.map +0 -1
- package/dist/node/UserClickFields.d.ts +0 -6
- package/dist/node/UserClickFields.d.ts.map +0 -1
- package/dist/node/UserEventHandler.d.cts +0 -11
- package/dist/node/UserEventHandler.d.cts.map +0 -1
- package/dist/node/UserEventHandler.d.mts +0 -11
- package/dist/node/UserEventHandler.d.mts.map +0 -1
- package/dist/node/UserEventHandler.d.ts +0 -11
- package/dist/node/UserEventHandler.d.ts.map +0 -1
- package/dist/node/UtmFields.d.cts +0 -9
- package/dist/node/UtmFields.d.cts.map +0 -1
- package/dist/node/UtmFields.d.mts +0 -9
- package/dist/node/UtmFields.d.mts.map +0 -1
- package/dist/node/UtmFields.d.ts +0 -9
- package/dist/node/UtmFields.d.ts.map +0 -1
- package/dist/node/ViewContentFields.d.cts +0 -6
- package/dist/node/ViewContentFields.d.cts.map +0 -1
- package/dist/node/ViewContentFields.d.mts +0 -6
- package/dist/node/ViewContentFields.d.mts.map +0 -1
- package/dist/node/ViewContentFields.d.ts +0 -6
- package/dist/node/ViewContentFields.d.ts.map +0 -1
- package/dist/node/XyLabsTrackingEventJson.d.cts +0 -21
- package/dist/node/XyLabsTrackingEventJson.d.cts.map +0 -1
- package/dist/node/XyLabsTrackingEventJson.d.mts +0 -21
- package/dist/node/XyLabsTrackingEventJson.d.mts.map +0 -1
- package/dist/node/XyLabsTrackingEventJson.d.ts +0 -21
- package/dist/node/XyLabsTrackingEventJson.d.ts.map +0 -1
- package/dist/node/XyUserEventHandler.d.cts +0 -13
- package/dist/node/XyUserEventHandler.d.cts.map +0 -1
- package/dist/node/XyUserEventHandler.d.mts +0 -13
- package/dist/node/XyUserEventHandler.d.mts.map +0 -1
- package/dist/node/XyUserEventHandler.d.ts +0 -13
- package/dist/node/XyUserEventHandler.d.ts.map +0 -1
- package/dist/node/getSystemInfo.d.cts +0 -2
- package/dist/node/getSystemInfo.d.cts.map +0 -1
- package/dist/node/getSystemInfo.d.mts +0 -2
- package/dist/node/getSystemInfo.d.mts.map +0 -1
- package/dist/node/getSystemInfo.d.ts +0 -2
- package/dist/node/getSystemInfo.d.ts.map +0 -1
- package/dist/node/index.cjs +0 -296
- package/dist/node/index.cjs.map +0 -1
- package/dist/node/index.d.cts +0 -13
- package/dist/node/index.d.cts.map +0 -1
- package/dist/node/index.d.mts +0 -13
- package/dist/node/index.d.mts.map +0 -1
- package/dist/node/index.d.ts +0 -13
- package/dist/node/index.d.ts.map +0 -1
- package/dist/node/index.js +0 -253
- package/dist/node/index.js.map +0 -1
package/dist/node/index.cjs
DELETED
|
@@ -1,296 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
|
|
30
|
-
// src/index.ts
|
|
31
|
-
var src_exports = {};
|
|
32
|
-
__export(src_exports, {
|
|
33
|
-
PixelApi: () => PixelApi,
|
|
34
|
-
Referrer: () => Referrer,
|
|
35
|
-
UniqueUserId: () => UniqueUserId,
|
|
36
|
-
UserEventHandler: () => UserEventHandler,
|
|
37
|
-
UtmFields: () => UtmFields,
|
|
38
|
-
XyPixel: () => XyPixel,
|
|
39
|
-
XyUserEventHandler: () => XyUserEventHandler
|
|
40
|
-
});
|
|
41
|
-
module.exports = __toCommonJS(src_exports);
|
|
42
|
-
|
|
43
|
-
// src/Api/Api.ts
|
|
44
|
-
var import_axios = __toESM(require("axios"), 1);
|
|
45
|
-
var apiBaseUri = {
|
|
46
|
-
beta: "https://pixel.xylabs.com",
|
|
47
|
-
local: "http://localhost:3030",
|
|
48
|
-
prod: "https://pixel.xylabs.com"
|
|
49
|
-
};
|
|
50
|
-
var PixelApi = class {
|
|
51
|
-
endPoint;
|
|
52
|
-
/* baseUri can either be a preset (prod, beta, local), or a specific uri */
|
|
53
|
-
constructor(baseUri = "prod") {
|
|
54
|
-
this.endPoint = apiBaseUri[baseUri] ? `${apiBaseUri[baseUri]}/t/event/queue` : baseUri;
|
|
55
|
-
}
|
|
56
|
-
async trackEvents(events) {
|
|
57
|
-
return (await import_axios.default.post(this.endPoint, events)).data;
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
// src/Pixel.ts
|
|
62
|
-
var import_assert = require("@xylabs/assert");
|
|
63
|
-
var import_async_mutex = require("async-mutex");
|
|
64
|
-
var import_js_cookie = __toESM(require("js-cookie"), 1);
|
|
65
|
-
var import_md5 = __toESM(require("md5"), 1);
|
|
66
|
-
|
|
67
|
-
// src/getSystemInfo.ts
|
|
68
|
-
var import_bowser = require("bowser");
|
|
69
|
-
var systemInfo;
|
|
70
|
-
var getSystemInfo = () => {
|
|
71
|
-
try {
|
|
72
|
-
systemInfo = systemInfo || (0, import_bowser.parse)(window.navigator.userAgent);
|
|
73
|
-
} catch (ex) {
|
|
74
|
-
console.log(`getSystemInfo Error: ${ex}`);
|
|
75
|
-
}
|
|
76
|
-
return systemInfo;
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
// src/Referrer.ts
|
|
80
|
-
var Referrer = class _Referrer {
|
|
81
|
-
static storageId = "_coin_referrer";
|
|
82
|
-
local;
|
|
83
|
-
session;
|
|
84
|
-
constructor() {
|
|
85
|
-
this.session = this.getFromSession() ?? document.referrer;
|
|
86
|
-
sessionStorage.setItem(_Referrer.storageId, this.session);
|
|
87
|
-
this.local = this.getFromLocal() ?? document.referrer;
|
|
88
|
-
window.localStorage.setItem(_Referrer.storageId, this.local);
|
|
89
|
-
}
|
|
90
|
-
toJson() {
|
|
91
|
-
if (this.local && this.local.length > 0 || this.session && this.session.length > 0) {
|
|
92
|
-
return {
|
|
93
|
-
local: this.local,
|
|
94
|
-
session: this.session
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
getFromLocal() {
|
|
99
|
-
const value = window.localStorage.getItem(_Referrer.storageId);
|
|
100
|
-
if (value && value.length > 0) {
|
|
101
|
-
return value;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
getFromSession() {
|
|
105
|
-
const value = sessionStorage.getItem(_Referrer.storageId);
|
|
106
|
-
if (value && value.length > 0) {
|
|
107
|
-
return value;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
// src/UniqueUserId.ts
|
|
113
|
-
var UniqueUserId = class _UniqueUserId {
|
|
114
|
-
static localStorageId = "_coin_cid";
|
|
115
|
-
id;
|
|
116
|
-
constructor() {
|
|
117
|
-
this.id = window.localStorage.getItem(_UniqueUserId.localStorageId) ?? this.generateId();
|
|
118
|
-
window.localStorage.setItem(_UniqueUserId.localStorageId, this.id);
|
|
119
|
-
}
|
|
120
|
-
toString() {
|
|
121
|
-
return this.id;
|
|
122
|
-
}
|
|
123
|
-
generateId() {
|
|
124
|
-
return crypto.randomUUID();
|
|
125
|
-
}
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
// src/UtmFields.ts
|
|
129
|
-
var import_lodash = require("@xylabs/lodash");
|
|
130
|
-
var UtmFields = class _UtmFields {
|
|
131
|
-
static localStorageId = "_coin_utm";
|
|
132
|
-
fields = [];
|
|
133
|
-
constructor() {
|
|
134
|
-
const storedString = window.localStorage.getItem(_UtmFields.localStorageId) ?? "[]";
|
|
135
|
-
try {
|
|
136
|
-
this.fields = JSON.parse(storedString);
|
|
137
|
-
} catch {
|
|
138
|
-
this.fields = [];
|
|
139
|
-
}
|
|
140
|
-
if (!Array.isArray(this.fields)) {
|
|
141
|
-
this.fields = [];
|
|
142
|
-
}
|
|
143
|
-
this.update();
|
|
144
|
-
window.localStorage.setItem(_UtmFields.localStorageId, JSON.stringify(this.fields));
|
|
145
|
-
}
|
|
146
|
-
getUtmRecord = () => {
|
|
147
|
-
var _a;
|
|
148
|
-
const record = {};
|
|
149
|
-
const parsedQueryString = ((_a = document.location.search.split("?")[1]) == null ? void 0 : _a.split("&")) ?? [];
|
|
150
|
-
parsedQueryString.map((item) => {
|
|
151
|
-
const [fullKey, value] = item.split("=");
|
|
152
|
-
const [keyCategory, keyName] = fullKey.split("_");
|
|
153
|
-
if (keyCategory === "utm") {
|
|
154
|
-
record[keyName] = value;
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
|
-
return Object.keys(record).length > 0 ? record : null;
|
|
158
|
-
};
|
|
159
|
-
toString() {
|
|
160
|
-
return JSON.stringify(this.fields);
|
|
161
|
-
}
|
|
162
|
-
//check the query string and if there an new/updated utm values, add them to the fields
|
|
163
|
-
update() {
|
|
164
|
-
const record = this.getUtmRecord();
|
|
165
|
-
if (record && !(0, import_lodash.isEqual)(this.fields.at(-1), record)) {
|
|
166
|
-
this.fields.push(record);
|
|
167
|
-
}
|
|
168
|
-
return this.fields ?? void 0;
|
|
169
|
-
}
|
|
170
|
-
};
|
|
171
|
-
|
|
172
|
-
// src/Pixel.ts
|
|
173
|
-
var emailHashLocalStorageName = "xy_email_hash";
|
|
174
|
-
var XyPixel = class _XyPixel {
|
|
175
|
-
static api = new PixelApi();
|
|
176
|
-
static _instance;
|
|
177
|
-
static utmFieldsObj;
|
|
178
|
-
cid = new UniqueUserId().id;
|
|
179
|
-
email;
|
|
180
|
-
email_hash;
|
|
181
|
-
exids;
|
|
182
|
-
pixelId;
|
|
183
|
-
queue = [];
|
|
184
|
-
queueMutex = new import_async_mutex.Mutex();
|
|
185
|
-
constructor(pixelId) {
|
|
186
|
-
this.pixelId = pixelId;
|
|
187
|
-
this.email_hash = localStorage.getItem(emailHashLocalStorageName);
|
|
188
|
-
}
|
|
189
|
-
static get instance() {
|
|
190
|
-
return (0, import_assert.assertEx)(this._instance, "XyPixel uninitialized");
|
|
191
|
-
}
|
|
192
|
-
static init(pixelId) {
|
|
193
|
-
this._instance = new _XyPixel(pixelId);
|
|
194
|
-
return this._instance;
|
|
195
|
-
}
|
|
196
|
-
static selectApi(api) {
|
|
197
|
-
this.api = api;
|
|
198
|
-
}
|
|
199
|
-
static utmFields = () => {
|
|
200
|
-
if (_XyPixel.utmFieldsObj === void 0) {
|
|
201
|
-
_XyPixel.utmFieldsObj = new UtmFields();
|
|
202
|
-
}
|
|
203
|
-
return _XyPixel.utmFieldsObj;
|
|
204
|
-
};
|
|
205
|
-
identify(email) {
|
|
206
|
-
this.email = email;
|
|
207
|
-
this.email_hash = email ? (0, import_md5.default)(email) : void 0;
|
|
208
|
-
if (this.email_hash) {
|
|
209
|
-
localStorage.setItem(emailHashLocalStorageName, this.email_hash);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
async send(event, fields, eventId) {
|
|
213
|
-
this.updateFbId();
|
|
214
|
-
const utm = _XyPixel.utmFields().update();
|
|
215
|
-
const referrer = new Referrer();
|
|
216
|
-
this.queue.push({
|
|
217
|
-
cid: this.cid,
|
|
218
|
-
create_time: Date.now(),
|
|
219
|
-
email_hash: this.email_hash ?? void 0,
|
|
220
|
-
event,
|
|
221
|
-
event_id: eventId,
|
|
222
|
-
exids: this.exids,
|
|
223
|
-
fields,
|
|
224
|
-
host: document.location.host,
|
|
225
|
-
pathname: document.location.pathname,
|
|
226
|
-
pixel: this.pixelId,
|
|
227
|
-
referrer: referrer.toJson(),
|
|
228
|
-
system: getSystemInfo(),
|
|
229
|
-
utm
|
|
230
|
-
});
|
|
231
|
-
await this.tryFlushQueue();
|
|
232
|
-
}
|
|
233
|
-
async tryFlushQueue() {
|
|
234
|
-
await this.queueMutex.runExclusive(async () => {
|
|
235
|
-
if (this.queue.length === 0) return;
|
|
236
|
-
const api = _XyPixel.api;
|
|
237
|
-
if (api) {
|
|
238
|
-
const events = this.queue;
|
|
239
|
-
this.queue = [];
|
|
240
|
-
try {
|
|
241
|
-
await api.trackEvents(events);
|
|
242
|
-
} catch (ex) {
|
|
243
|
-
if (events) {
|
|
244
|
-
this.queue = [...this.queue, ...events];
|
|
245
|
-
}
|
|
246
|
-
console.error(ex);
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
updateFbId() {
|
|
252
|
-
this.exids = {
|
|
253
|
-
fbc: import_js_cookie.default.get("_fbc"),
|
|
254
|
-
fbp: import_js_cookie.default.get("_fbp"),
|
|
255
|
-
ga: import_js_cookie.default.get("_ga"),
|
|
256
|
-
gclid: import_js_cookie.default.get("_gcl_aw"),
|
|
257
|
-
rdt_uid: import_js_cookie.default.get("rdt_uid"),
|
|
258
|
-
scid: import_js_cookie.default.get("_scid"),
|
|
259
|
-
tt_sessionId: sessionStorage.getItem("tt_sessionId") ?? void 0
|
|
260
|
-
};
|
|
261
|
-
}
|
|
262
|
-
};
|
|
263
|
-
|
|
264
|
-
// src/UserEventHandler.ts
|
|
265
|
-
var UserEventHandler = class {
|
|
266
|
-
};
|
|
267
|
-
|
|
268
|
-
// src/XyUserEventHandler.ts
|
|
269
|
-
var XyUserEventHandler = class extends UserEventHandler {
|
|
270
|
-
constructor() {
|
|
271
|
-
super();
|
|
272
|
-
}
|
|
273
|
-
async funnelStarted(fields) {
|
|
274
|
-
return await XyPixel.instance.send("FunnelStarted", fields);
|
|
275
|
-
}
|
|
276
|
-
async testStarted(fields) {
|
|
277
|
-
return await XyPixel.instance.send("TestStarted", fields);
|
|
278
|
-
}
|
|
279
|
-
async userClick(fields) {
|
|
280
|
-
return await XyPixel.instance.send("ViewPage", fields);
|
|
281
|
-
}
|
|
282
|
-
async viewContent(fields) {
|
|
283
|
-
return await XyPixel.instance.send("ViewContent", fields);
|
|
284
|
-
}
|
|
285
|
-
};
|
|
286
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
287
|
-
0 && (module.exports = {
|
|
288
|
-
PixelApi,
|
|
289
|
-
Referrer,
|
|
290
|
-
UniqueUserId,
|
|
291
|
-
UserEventHandler,
|
|
292
|
-
UtmFields,
|
|
293
|
-
XyPixel,
|
|
294
|
-
XyUserEventHandler
|
|
295
|
-
});
|
|
296
|
-
//# sourceMappingURL=index.cjs.map
|
package/dist/node/index.cjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/Api/Api.ts","../../src/Pixel.ts","../../src/getSystemInfo.ts","../../src/Referrer.ts","../../src/UniqueUserId.ts","../../src/UtmFields.ts","../../src/UserEventHandler.ts","../../src/XyUserEventHandler.ts"],"sourcesContent":["export * from './Api/index.js'\nexport * from './FunnelStartedFields.js'\nexport * from './Pixel.js'\nexport * from './Referrer.js'\nexport * from './TestStartedFields.js'\nexport * from './UniqueUserId.js'\nexport * from './UserClickFields.js'\nexport * from './UserEventHandler.js'\nexport * from './UtmFields.js'\nexport * from './ViewContentFields.js'\nexport * from './XyLabsTrackingEventJson.js'\nexport * from './XyUserEventHandler.js'\n","import axios from 'axios'\n\nimport { UserEvent } from './UserEvent.js'\n\nconst apiBaseUri: Record<string, string> = {\n beta: 'https://pixel.xylabs.com',\n local: 'http://localhost:3030',\n prod: 'https://pixel.xylabs.com',\n}\n\nexport class PixelApi {\n private endPoint: string\n\n /* baseUri can either be a preset (prod, beta, local), or a specific uri */\n constructor(baseUri = 'prod') {\n this.endPoint = apiBaseUri[baseUri] ? `${apiBaseUri[baseUri]}/t/event/queue` : baseUri\n }\n\n async trackEvents(events: UserEvent[]) {\n return (await axios.post(this.endPoint, events)).data\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Mutex } from 'async-mutex'\nimport Cookies from 'js-cookie'\nimport md5 from 'md5'\n\nimport { PixelApi, UserEvent } from './Api/index.js'\nimport { ExIds } from './ExIds.js'\nimport { getSystemInfo } from './getSystemInfo.js'\nimport { Referrer } from './Referrer.js'\nimport { UniqueUserId } from './UniqueUserId.js'\nimport { UtmFields } from './UtmFields.js'\n\nconst emailHashLocalStorageName = 'xy_email_hash'\n\nexport class XyPixel {\n static api = new PixelApi()\n\n private static _instance?: XyPixel\n private static utmFieldsObj: UtmFields\n\n cid = new UniqueUserId().id\n email?: string\n email_hash?: string | null\n exids?: ExIds\n pixelId?: string\n\n queue: UserEvent[] = []\n\n private queueMutex = new Mutex()\n\n private constructor(pixelId: string) {\n this.pixelId = pixelId\n this.email_hash = localStorage.getItem(emailHashLocalStorageName)\n }\n\n static get instance(): XyPixel {\n return assertEx(this._instance, 'XyPixel uninitialized')\n }\n\n static init(pixelId: string) {\n this._instance = new XyPixel(pixelId)\n return this._instance\n }\n\n static selectApi(api: PixelApi) {\n this.api = api\n }\n\n private static utmFields = () => {\n if (XyPixel.utmFieldsObj === undefined) {\n XyPixel.utmFieldsObj = new UtmFields()\n }\n return XyPixel.utmFieldsObj\n }\n\n identify(email?: string) {\n this.email = email\n this.email_hash = email ? md5(email) : undefined\n if (this.email_hash) {\n localStorage.setItem(emailHashLocalStorageName, this.email_hash)\n }\n }\n\n async send<T extends Record<string, unknown>>(event: string, fields?: T, eventId?: string) {\n this.updateFbId()\n const utm = XyPixel.utmFields().update()\n const referrer = new Referrer()\n this.queue.push({\n cid: this.cid,\n create_time: Date.now(),\n email_hash: this.email_hash ?? undefined,\n event,\n event_id: eventId,\n exids: this.exids,\n fields,\n host: document.location.host,\n pathname: document.location.pathname,\n pixel: this.pixelId,\n referrer: referrer.toJson(),\n system: getSystemInfo(),\n utm,\n })\n await this.tryFlushQueue()\n }\n\n private async tryFlushQueue() {\n await this.queueMutex.runExclusive(async () => {\n if (this.queue.length === 0) return\n const api = XyPixel.api\n if (api) {\n const events = this.queue\n this.queue = []\n try {\n await api.trackEvents(events)\n } catch (ex) {\n if (events) {\n //put it back since it failed\n this.queue = [...this.queue, ...events]\n }\n console.error(ex)\n }\n }\n })\n }\n\n private updateFbId() {\n this.exids = {\n fbc: Cookies.get('_fbc'),\n fbp: Cookies.get('_fbp'),\n ga: Cookies.get('_ga'),\n gclid: Cookies.get('_gcl_aw'),\n rdt_uid: Cookies.get('rdt_uid'),\n scid: Cookies.get('_scid'),\n tt_sessionId: sessionStorage.getItem('tt_sessionId') ?? undefined,\n }\n }\n}\n","import { parse } from 'bowser'\n\nimport { UserEventSystem } from './Api/index.js'\n\nlet systemInfo: UserEventSystem | undefined\n\nexport const getSystemInfo = () => {\n try {\n systemInfo = systemInfo || parse(window.navigator.userAgent)\n } catch (ex) {\n console.log(`getSystemInfo Error: ${ex}`)\n }\n return systemInfo\n}\n","export class Referrer {\n private static storageId = '_coin_referrer'\n local: string\n session: string\n constructor() {\n this.session = this.getFromSession() ?? document.referrer\n sessionStorage.setItem(Referrer.storageId, this.session)\n this.local = this.getFromLocal() ?? document.referrer\n window.localStorage.setItem(Referrer.storageId, this.local)\n }\n\n toJson() {\n if ((this.local && this.local.length > 0) || (this.session && this.session.length > 0)) {\n return {\n local: this.local,\n session: this.session,\n }\n }\n }\n\n private getFromLocal() {\n const value = window.localStorage.getItem(Referrer.storageId)\n if (value && value.length > 0) {\n return value\n }\n }\n\n private getFromSession() {\n const value = sessionStorage.getItem(Referrer.storageId)\n if (value && value.length > 0) {\n return value\n }\n }\n}\n","export class UniqueUserId {\n private static localStorageId = '_coin_cid'\n id: string\n\n constructor() {\n this.id = window.localStorage.getItem(UniqueUserId.localStorageId) ?? this.generateId()\n window.localStorage.setItem(UniqueUserId.localStorageId, this.id)\n }\n\n toString() {\n return this.id\n }\n\n private generateId() {\n return crypto.randomUUID()\n }\n}\n","import { isEqual } from '@xylabs/lodash'\n\nexport class UtmFields {\n private static localStorageId = '_coin_utm'\n fields: Record<string, string>[] = []\n constructor() {\n const storedString = window.localStorage.getItem(UtmFields.localStorageId) ?? '[]'\n try {\n this.fields = JSON.parse(storedString)\n } catch {\n this.fields = []\n }\n //this clears the old object version if needed\n if (!Array.isArray(this.fields)) {\n this.fields = []\n }\n this.update()\n window.localStorage.setItem(UtmFields.localStorageId, JSON.stringify(this.fields))\n }\n\n getUtmRecord = () => {\n const record: Record<string, string> = {}\n const parsedQueryString = document.location.search.split('?')[1]?.split('&') ?? []\n parsedQueryString.map((item) => {\n const [fullKey, value] = item.split('=')\n const [keyCategory, keyName] = fullKey.split('_')\n if (keyCategory === 'utm') {\n record[keyName] = value\n }\n })\n return Object.keys(record).length > 0 ? record : null\n }\n\n toString() {\n return JSON.stringify(this.fields)\n }\n\n //check the query string and if there an new/updated utm values, add them to the fields\n update() {\n const record = this.getUtmRecord()\n if (record && !isEqual(this.fields.at(-1), record)) {\n this.fields.push(record)\n }\n return this.fields ?? undefined\n }\n}\n","import { FunnelStartedFields } from './FunnelStartedFields.js'\nimport { TestStartedFields } from './TestStartedFields.js'\nimport { UserClickFields } from './UserClickFields.js'\nimport { ViewContentFields } from './ViewContentFields.js'\n\nexport abstract class UserEventHandler<T> {\n abstract funnelStarted(fields: T | FunnelStartedFields): Promise<void>\n abstract testStarted(fields: T | TestStartedFields): Promise<void>\n abstract userClick(fields: T | UserClickFields): Promise<void>\n abstract viewContent(fields: T | ViewContentFields): Promise<void>\n}\n","import { FunnelStartedFields } from './FunnelStartedFields.js'\nimport { XyPixel } from './Pixel.js'\nimport { TestStartedFields } from './TestStartedFields.js'\nimport { UserClickFields } from './UserClickFields.js'\nimport { UserEventHandler } from './UserEventHandler.js'\nimport { ViewContentFields } from './ViewContentFields.js'\n\nexport class XyUserEventHandler<T extends Record<string, unknown>> extends UserEventHandler<T> {\n constructor() {\n super()\n }\n\n async funnelStarted(fields: T | FunnelStartedFields) {\n return await XyPixel.instance.send('FunnelStarted', fields)\n }\n\n async testStarted(fields: T | TestStartedFields) {\n return await XyPixel.instance.send('TestStarted', fields)\n }\n\n async userClick(fields: T | UserClickFields) {\n return await XyPixel.instance.send('ViewPage', fields)\n }\n\n async viewContent(fields: T | ViewContentFields) {\n return await XyPixel.instance.send('ViewContent', fields)\n }\n}\n"],"mappings":"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","names":["axios","md5","Cookies"]}
|
package/dist/node/index.d.cts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export * from './Api/index.js';
|
|
2
|
-
export * from './FunnelStartedFields.js';
|
|
3
|
-
export * from './Pixel.js';
|
|
4
|
-
export * from './Referrer.js';
|
|
5
|
-
export * from './TestStartedFields.js';
|
|
6
|
-
export * from './UniqueUserId.js';
|
|
7
|
-
export * from './UserClickFields.js';
|
|
8
|
-
export * from './UserEventHandler.js';
|
|
9
|
-
export * from './UtmFields.js';
|
|
10
|
-
export * from './ViewContentFields.js';
|
|
11
|
-
export * from './XyLabsTrackingEventJson.js';
|
|
12
|
-
export * from './XyUserEventHandler.js';
|
|
13
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,0BAA0B,CAAA;AACxC,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA"}
|
package/dist/node/index.d.mts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export * from './Api/index.js';
|
|
2
|
-
export * from './FunnelStartedFields.js';
|
|
3
|
-
export * from './Pixel.js';
|
|
4
|
-
export * from './Referrer.js';
|
|
5
|
-
export * from './TestStartedFields.js';
|
|
6
|
-
export * from './UniqueUserId.js';
|
|
7
|
-
export * from './UserClickFields.js';
|
|
8
|
-
export * from './UserEventHandler.js';
|
|
9
|
-
export * from './UtmFields.js';
|
|
10
|
-
export * from './ViewContentFields.js';
|
|
11
|
-
export * from './XyLabsTrackingEventJson.js';
|
|
12
|
-
export * from './XyUserEventHandler.js';
|
|
13
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,0BAA0B,CAAA;AACxC,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA"}
|
package/dist/node/index.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export * from './Api/index.js';
|
|
2
|
-
export * from './FunnelStartedFields.js';
|
|
3
|
-
export * from './Pixel.js';
|
|
4
|
-
export * from './Referrer.js';
|
|
5
|
-
export * from './TestStartedFields.js';
|
|
6
|
-
export * from './UniqueUserId.js';
|
|
7
|
-
export * from './UserClickFields.js';
|
|
8
|
-
export * from './UserEventHandler.js';
|
|
9
|
-
export * from './UtmFields.js';
|
|
10
|
-
export * from './ViewContentFields.js';
|
|
11
|
-
export * from './XyLabsTrackingEventJson.js';
|
|
12
|
-
export * from './XyUserEventHandler.js';
|
|
13
|
-
//# sourceMappingURL=index.d.ts.map
|
package/dist/node/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,0BAA0B,CAAA;AACxC,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA"}
|
package/dist/node/index.js
DELETED
|
@@ -1,253 +0,0 @@
|
|
|
1
|
-
// src/Api/Api.ts
|
|
2
|
-
import axios from "axios";
|
|
3
|
-
var apiBaseUri = {
|
|
4
|
-
beta: "https://pixel.xylabs.com",
|
|
5
|
-
local: "http://localhost:3030",
|
|
6
|
-
prod: "https://pixel.xylabs.com"
|
|
7
|
-
};
|
|
8
|
-
var PixelApi = class {
|
|
9
|
-
endPoint;
|
|
10
|
-
/* baseUri can either be a preset (prod, beta, local), or a specific uri */
|
|
11
|
-
constructor(baseUri = "prod") {
|
|
12
|
-
this.endPoint = apiBaseUri[baseUri] ? `${apiBaseUri[baseUri]}/t/event/queue` : baseUri;
|
|
13
|
-
}
|
|
14
|
-
async trackEvents(events) {
|
|
15
|
-
return (await axios.post(this.endPoint, events)).data;
|
|
16
|
-
}
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
// src/Pixel.ts
|
|
20
|
-
import { assertEx } from "@xylabs/assert";
|
|
21
|
-
import { Mutex } from "async-mutex";
|
|
22
|
-
import Cookies from "js-cookie";
|
|
23
|
-
import md5 from "md5";
|
|
24
|
-
|
|
25
|
-
// src/getSystemInfo.ts
|
|
26
|
-
import { parse } from "bowser";
|
|
27
|
-
var systemInfo;
|
|
28
|
-
var getSystemInfo = () => {
|
|
29
|
-
try {
|
|
30
|
-
systemInfo = systemInfo || parse(window.navigator.userAgent);
|
|
31
|
-
} catch (ex) {
|
|
32
|
-
console.log(`getSystemInfo Error: ${ex}`);
|
|
33
|
-
}
|
|
34
|
-
return systemInfo;
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
// src/Referrer.ts
|
|
38
|
-
var Referrer = class _Referrer {
|
|
39
|
-
static storageId = "_coin_referrer";
|
|
40
|
-
local;
|
|
41
|
-
session;
|
|
42
|
-
constructor() {
|
|
43
|
-
this.session = this.getFromSession() ?? document.referrer;
|
|
44
|
-
sessionStorage.setItem(_Referrer.storageId, this.session);
|
|
45
|
-
this.local = this.getFromLocal() ?? document.referrer;
|
|
46
|
-
window.localStorage.setItem(_Referrer.storageId, this.local);
|
|
47
|
-
}
|
|
48
|
-
toJson() {
|
|
49
|
-
if (this.local && this.local.length > 0 || this.session && this.session.length > 0) {
|
|
50
|
-
return {
|
|
51
|
-
local: this.local,
|
|
52
|
-
session: this.session
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
getFromLocal() {
|
|
57
|
-
const value = window.localStorage.getItem(_Referrer.storageId);
|
|
58
|
-
if (value && value.length > 0) {
|
|
59
|
-
return value;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
getFromSession() {
|
|
63
|
-
const value = sessionStorage.getItem(_Referrer.storageId);
|
|
64
|
-
if (value && value.length > 0) {
|
|
65
|
-
return value;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
|
|
70
|
-
// src/UniqueUserId.ts
|
|
71
|
-
var UniqueUserId = class _UniqueUserId {
|
|
72
|
-
static localStorageId = "_coin_cid";
|
|
73
|
-
id;
|
|
74
|
-
constructor() {
|
|
75
|
-
this.id = window.localStorage.getItem(_UniqueUserId.localStorageId) ?? this.generateId();
|
|
76
|
-
window.localStorage.setItem(_UniqueUserId.localStorageId, this.id);
|
|
77
|
-
}
|
|
78
|
-
toString() {
|
|
79
|
-
return this.id;
|
|
80
|
-
}
|
|
81
|
-
generateId() {
|
|
82
|
-
return crypto.randomUUID();
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
|
|
86
|
-
// src/UtmFields.ts
|
|
87
|
-
import { isEqual } from "@xylabs/lodash";
|
|
88
|
-
var UtmFields = class _UtmFields {
|
|
89
|
-
static localStorageId = "_coin_utm";
|
|
90
|
-
fields = [];
|
|
91
|
-
constructor() {
|
|
92
|
-
const storedString = window.localStorage.getItem(_UtmFields.localStorageId) ?? "[]";
|
|
93
|
-
try {
|
|
94
|
-
this.fields = JSON.parse(storedString);
|
|
95
|
-
} catch {
|
|
96
|
-
this.fields = [];
|
|
97
|
-
}
|
|
98
|
-
if (!Array.isArray(this.fields)) {
|
|
99
|
-
this.fields = [];
|
|
100
|
-
}
|
|
101
|
-
this.update();
|
|
102
|
-
window.localStorage.setItem(_UtmFields.localStorageId, JSON.stringify(this.fields));
|
|
103
|
-
}
|
|
104
|
-
getUtmRecord = () => {
|
|
105
|
-
var _a;
|
|
106
|
-
const record = {};
|
|
107
|
-
const parsedQueryString = ((_a = document.location.search.split("?")[1]) == null ? void 0 : _a.split("&")) ?? [];
|
|
108
|
-
parsedQueryString.map((item) => {
|
|
109
|
-
const [fullKey, value] = item.split("=");
|
|
110
|
-
const [keyCategory, keyName] = fullKey.split("_");
|
|
111
|
-
if (keyCategory === "utm") {
|
|
112
|
-
record[keyName] = value;
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
return Object.keys(record).length > 0 ? record : null;
|
|
116
|
-
};
|
|
117
|
-
toString() {
|
|
118
|
-
return JSON.stringify(this.fields);
|
|
119
|
-
}
|
|
120
|
-
//check the query string and if there an new/updated utm values, add them to the fields
|
|
121
|
-
update() {
|
|
122
|
-
const record = this.getUtmRecord();
|
|
123
|
-
if (record && !isEqual(this.fields.at(-1), record)) {
|
|
124
|
-
this.fields.push(record);
|
|
125
|
-
}
|
|
126
|
-
return this.fields ?? void 0;
|
|
127
|
-
}
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
// src/Pixel.ts
|
|
131
|
-
var emailHashLocalStorageName = "xy_email_hash";
|
|
132
|
-
var XyPixel = class _XyPixel {
|
|
133
|
-
static api = new PixelApi();
|
|
134
|
-
static _instance;
|
|
135
|
-
static utmFieldsObj;
|
|
136
|
-
cid = new UniqueUserId().id;
|
|
137
|
-
email;
|
|
138
|
-
email_hash;
|
|
139
|
-
exids;
|
|
140
|
-
pixelId;
|
|
141
|
-
queue = [];
|
|
142
|
-
queueMutex = new Mutex();
|
|
143
|
-
constructor(pixelId) {
|
|
144
|
-
this.pixelId = pixelId;
|
|
145
|
-
this.email_hash = localStorage.getItem(emailHashLocalStorageName);
|
|
146
|
-
}
|
|
147
|
-
static get instance() {
|
|
148
|
-
return assertEx(this._instance, "XyPixel uninitialized");
|
|
149
|
-
}
|
|
150
|
-
static init(pixelId) {
|
|
151
|
-
this._instance = new _XyPixel(pixelId);
|
|
152
|
-
return this._instance;
|
|
153
|
-
}
|
|
154
|
-
static selectApi(api) {
|
|
155
|
-
this.api = api;
|
|
156
|
-
}
|
|
157
|
-
static utmFields = () => {
|
|
158
|
-
if (_XyPixel.utmFieldsObj === void 0) {
|
|
159
|
-
_XyPixel.utmFieldsObj = new UtmFields();
|
|
160
|
-
}
|
|
161
|
-
return _XyPixel.utmFieldsObj;
|
|
162
|
-
};
|
|
163
|
-
identify(email) {
|
|
164
|
-
this.email = email;
|
|
165
|
-
this.email_hash = email ? md5(email) : void 0;
|
|
166
|
-
if (this.email_hash) {
|
|
167
|
-
localStorage.setItem(emailHashLocalStorageName, this.email_hash);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
async send(event, fields, eventId) {
|
|
171
|
-
this.updateFbId();
|
|
172
|
-
const utm = _XyPixel.utmFields().update();
|
|
173
|
-
const referrer = new Referrer();
|
|
174
|
-
this.queue.push({
|
|
175
|
-
cid: this.cid,
|
|
176
|
-
create_time: Date.now(),
|
|
177
|
-
email_hash: this.email_hash ?? void 0,
|
|
178
|
-
event,
|
|
179
|
-
event_id: eventId,
|
|
180
|
-
exids: this.exids,
|
|
181
|
-
fields,
|
|
182
|
-
host: document.location.host,
|
|
183
|
-
pathname: document.location.pathname,
|
|
184
|
-
pixel: this.pixelId,
|
|
185
|
-
referrer: referrer.toJson(),
|
|
186
|
-
system: getSystemInfo(),
|
|
187
|
-
utm
|
|
188
|
-
});
|
|
189
|
-
await this.tryFlushQueue();
|
|
190
|
-
}
|
|
191
|
-
async tryFlushQueue() {
|
|
192
|
-
await this.queueMutex.runExclusive(async () => {
|
|
193
|
-
if (this.queue.length === 0) return;
|
|
194
|
-
const api = _XyPixel.api;
|
|
195
|
-
if (api) {
|
|
196
|
-
const events = this.queue;
|
|
197
|
-
this.queue = [];
|
|
198
|
-
try {
|
|
199
|
-
await api.trackEvents(events);
|
|
200
|
-
} catch (ex) {
|
|
201
|
-
if (events) {
|
|
202
|
-
this.queue = [...this.queue, ...events];
|
|
203
|
-
}
|
|
204
|
-
console.error(ex);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
});
|
|
208
|
-
}
|
|
209
|
-
updateFbId() {
|
|
210
|
-
this.exids = {
|
|
211
|
-
fbc: Cookies.get("_fbc"),
|
|
212
|
-
fbp: Cookies.get("_fbp"),
|
|
213
|
-
ga: Cookies.get("_ga"),
|
|
214
|
-
gclid: Cookies.get("_gcl_aw"),
|
|
215
|
-
rdt_uid: Cookies.get("rdt_uid"),
|
|
216
|
-
scid: Cookies.get("_scid"),
|
|
217
|
-
tt_sessionId: sessionStorage.getItem("tt_sessionId") ?? void 0
|
|
218
|
-
};
|
|
219
|
-
}
|
|
220
|
-
};
|
|
221
|
-
|
|
222
|
-
// src/UserEventHandler.ts
|
|
223
|
-
var UserEventHandler = class {
|
|
224
|
-
};
|
|
225
|
-
|
|
226
|
-
// src/XyUserEventHandler.ts
|
|
227
|
-
var XyUserEventHandler = class extends UserEventHandler {
|
|
228
|
-
constructor() {
|
|
229
|
-
super();
|
|
230
|
-
}
|
|
231
|
-
async funnelStarted(fields) {
|
|
232
|
-
return await XyPixel.instance.send("FunnelStarted", fields);
|
|
233
|
-
}
|
|
234
|
-
async testStarted(fields) {
|
|
235
|
-
return await XyPixel.instance.send("TestStarted", fields);
|
|
236
|
-
}
|
|
237
|
-
async userClick(fields) {
|
|
238
|
-
return await XyPixel.instance.send("ViewPage", fields);
|
|
239
|
-
}
|
|
240
|
-
async viewContent(fields) {
|
|
241
|
-
return await XyPixel.instance.send("ViewContent", fields);
|
|
242
|
-
}
|
|
243
|
-
};
|
|
244
|
-
export {
|
|
245
|
-
PixelApi,
|
|
246
|
-
Referrer,
|
|
247
|
-
UniqueUserId,
|
|
248
|
-
UserEventHandler,
|
|
249
|
-
UtmFields,
|
|
250
|
-
XyPixel,
|
|
251
|
-
XyUserEventHandler
|
|
252
|
-
};
|
|
253
|
-
//# sourceMappingURL=index.js.map
|
package/dist/node/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/Api/Api.ts","../../src/Pixel.ts","../../src/getSystemInfo.ts","../../src/Referrer.ts","../../src/UniqueUserId.ts","../../src/UtmFields.ts","../../src/UserEventHandler.ts","../../src/XyUserEventHandler.ts"],"sourcesContent":["import axios from 'axios'\n\nimport { UserEvent } from './UserEvent.js'\n\nconst apiBaseUri: Record<string, string> = {\n beta: 'https://pixel.xylabs.com',\n local: 'http://localhost:3030',\n prod: 'https://pixel.xylabs.com',\n}\n\nexport class PixelApi {\n private endPoint: string\n\n /* baseUri can either be a preset (prod, beta, local), or a specific uri */\n constructor(baseUri = 'prod') {\n this.endPoint = apiBaseUri[baseUri] ? `${apiBaseUri[baseUri]}/t/event/queue` : baseUri\n }\n\n async trackEvents(events: UserEvent[]) {\n return (await axios.post(this.endPoint, events)).data\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Mutex } from 'async-mutex'\nimport Cookies from 'js-cookie'\nimport md5 from 'md5'\n\nimport { PixelApi, UserEvent } from './Api/index.js'\nimport { ExIds } from './ExIds.js'\nimport { getSystemInfo } from './getSystemInfo.js'\nimport { Referrer } from './Referrer.js'\nimport { UniqueUserId } from './UniqueUserId.js'\nimport { UtmFields } from './UtmFields.js'\n\nconst emailHashLocalStorageName = 'xy_email_hash'\n\nexport class XyPixel {\n static api = new PixelApi()\n\n private static _instance?: XyPixel\n private static utmFieldsObj: UtmFields\n\n cid = new UniqueUserId().id\n email?: string\n email_hash?: string | null\n exids?: ExIds\n pixelId?: string\n\n queue: UserEvent[] = []\n\n private queueMutex = new Mutex()\n\n private constructor(pixelId: string) {\n this.pixelId = pixelId\n this.email_hash = localStorage.getItem(emailHashLocalStorageName)\n }\n\n static get instance(): XyPixel {\n return assertEx(this._instance, 'XyPixel uninitialized')\n }\n\n static init(pixelId: string) {\n this._instance = new XyPixel(pixelId)\n return this._instance\n }\n\n static selectApi(api: PixelApi) {\n this.api = api\n }\n\n private static utmFields = () => {\n if (XyPixel.utmFieldsObj === undefined) {\n XyPixel.utmFieldsObj = new UtmFields()\n }\n return XyPixel.utmFieldsObj\n }\n\n identify(email?: string) {\n this.email = email\n this.email_hash = email ? md5(email) : undefined\n if (this.email_hash) {\n localStorage.setItem(emailHashLocalStorageName, this.email_hash)\n }\n }\n\n async send<T extends Record<string, unknown>>(event: string, fields?: T, eventId?: string) {\n this.updateFbId()\n const utm = XyPixel.utmFields().update()\n const referrer = new Referrer()\n this.queue.push({\n cid: this.cid,\n create_time: Date.now(),\n email_hash: this.email_hash ?? undefined,\n event,\n event_id: eventId,\n exids: this.exids,\n fields,\n host: document.location.host,\n pathname: document.location.pathname,\n pixel: this.pixelId,\n referrer: referrer.toJson(),\n system: getSystemInfo(),\n utm,\n })\n await this.tryFlushQueue()\n }\n\n private async tryFlushQueue() {\n await this.queueMutex.runExclusive(async () => {\n if (this.queue.length === 0) return\n const api = XyPixel.api\n if (api) {\n const events = this.queue\n this.queue = []\n try {\n await api.trackEvents(events)\n } catch (ex) {\n if (events) {\n //put it back since it failed\n this.queue = [...this.queue, ...events]\n }\n console.error(ex)\n }\n }\n })\n }\n\n private updateFbId() {\n this.exids = {\n fbc: Cookies.get('_fbc'),\n fbp: Cookies.get('_fbp'),\n ga: Cookies.get('_ga'),\n gclid: Cookies.get('_gcl_aw'),\n rdt_uid: Cookies.get('rdt_uid'),\n scid: Cookies.get('_scid'),\n tt_sessionId: sessionStorage.getItem('tt_sessionId') ?? undefined,\n }\n }\n}\n","import { parse } from 'bowser'\n\nimport { UserEventSystem } from './Api/index.js'\n\nlet systemInfo: UserEventSystem | undefined\n\nexport const getSystemInfo = () => {\n try {\n systemInfo = systemInfo || parse(window.navigator.userAgent)\n } catch (ex) {\n console.log(`getSystemInfo Error: ${ex}`)\n }\n return systemInfo\n}\n","export class Referrer {\n private static storageId = '_coin_referrer'\n local: string\n session: string\n constructor() {\n this.session = this.getFromSession() ?? document.referrer\n sessionStorage.setItem(Referrer.storageId, this.session)\n this.local = this.getFromLocal() ?? document.referrer\n window.localStorage.setItem(Referrer.storageId, this.local)\n }\n\n toJson() {\n if ((this.local && this.local.length > 0) || (this.session && this.session.length > 0)) {\n return {\n local: this.local,\n session: this.session,\n }\n }\n }\n\n private getFromLocal() {\n const value = window.localStorage.getItem(Referrer.storageId)\n if (value && value.length > 0) {\n return value\n }\n }\n\n private getFromSession() {\n const value = sessionStorage.getItem(Referrer.storageId)\n if (value && value.length > 0) {\n return value\n }\n }\n}\n","export class UniqueUserId {\n private static localStorageId = '_coin_cid'\n id: string\n\n constructor() {\n this.id = window.localStorage.getItem(UniqueUserId.localStorageId) ?? this.generateId()\n window.localStorage.setItem(UniqueUserId.localStorageId, this.id)\n }\n\n toString() {\n return this.id\n }\n\n private generateId() {\n return crypto.randomUUID()\n }\n}\n","import { isEqual } from '@xylabs/lodash'\n\nexport class UtmFields {\n private static localStorageId = '_coin_utm'\n fields: Record<string, string>[] = []\n constructor() {\n const storedString = window.localStorage.getItem(UtmFields.localStorageId) ?? '[]'\n try {\n this.fields = JSON.parse(storedString)\n } catch {\n this.fields = []\n }\n //this clears the old object version if needed\n if (!Array.isArray(this.fields)) {\n this.fields = []\n }\n this.update()\n window.localStorage.setItem(UtmFields.localStorageId, JSON.stringify(this.fields))\n }\n\n getUtmRecord = () => {\n const record: Record<string, string> = {}\n const parsedQueryString = document.location.search.split('?')[1]?.split('&') ?? []\n parsedQueryString.map((item) => {\n const [fullKey, value] = item.split('=')\n const [keyCategory, keyName] = fullKey.split('_')\n if (keyCategory === 'utm') {\n record[keyName] = value\n }\n })\n return Object.keys(record).length > 0 ? record : null\n }\n\n toString() {\n return JSON.stringify(this.fields)\n }\n\n //check the query string and if there an new/updated utm values, add them to the fields\n update() {\n const record = this.getUtmRecord()\n if (record && !isEqual(this.fields.at(-1), record)) {\n this.fields.push(record)\n }\n return this.fields ?? undefined\n }\n}\n","import { FunnelStartedFields } from './FunnelStartedFields.js'\nimport { TestStartedFields } from './TestStartedFields.js'\nimport { UserClickFields } from './UserClickFields.js'\nimport { ViewContentFields } from './ViewContentFields.js'\n\nexport abstract class UserEventHandler<T> {\n abstract funnelStarted(fields: T | FunnelStartedFields): Promise<void>\n abstract testStarted(fields: T | TestStartedFields): Promise<void>\n abstract userClick(fields: T | UserClickFields): Promise<void>\n abstract viewContent(fields: T | ViewContentFields): Promise<void>\n}\n","import { FunnelStartedFields } from './FunnelStartedFields.js'\nimport { XyPixel } from './Pixel.js'\nimport { TestStartedFields } from './TestStartedFields.js'\nimport { UserClickFields } from './UserClickFields.js'\nimport { UserEventHandler } from './UserEventHandler.js'\nimport { ViewContentFields } from './ViewContentFields.js'\n\nexport class XyUserEventHandler<T extends Record<string, unknown>> extends UserEventHandler<T> {\n constructor() {\n super()\n }\n\n async funnelStarted(fields: T | FunnelStartedFields) {\n return await XyPixel.instance.send('FunnelStarted', fields)\n }\n\n async testStarted(fields: T | TestStartedFields) {\n return await XyPixel.instance.send('TestStarted', fields)\n }\n\n async userClick(fields: T | UserClickFields) {\n return await XyPixel.instance.send('ViewPage', fields)\n }\n\n async viewContent(fields: T | ViewContentFields) {\n return await XyPixel.instance.send('ViewContent', fields)\n }\n}\n"],"mappings":"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","names":[]}
|