@ht-sdks/events-sdk-js-browser 1.5.7 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -0
- package/dist/cjs/browser/dedupe-plugin-likes.js +53 -0
- package/dist/cjs/browser/dedupe-plugin-likes.js.map +1 -0
- package/dist/cjs/browser/index.js +89 -32
- package/dist/cjs/browser/index.js.map +1 -1
- package/dist/cjs/core/analytics/index.js +12 -8
- package/dist/cjs/core/analytics/index.js.map +1 -1
- package/dist/cjs/core/queue/event-queue.js +7 -3
- package/dist/cjs/core/queue/event-queue.js.map +1 -1
- package/dist/cjs/generated/version.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/plugins/analytics-node/index.js +1 -2
- package/dist/cjs/plugins/analytics-node/index.js.map +1 -1
- package/dist/cjs/plugins/built-in-plugins.js +5 -0
- package/dist/cjs/plugins/built-in-plugins.js.map +1 -0
- package/dist/cjs/plugins/facebook-params/index.js +115 -0
- package/dist/cjs/plugins/facebook-params/index.js.map +1 -0
- package/dist/cjs/plugins/index.js +26 -0
- package/dist/cjs/plugins/index.js.map +1 -0
- package/dist/pkg/browser/dedupe-plugin-likes.js +48 -0
- package/dist/pkg/browser/dedupe-plugin-likes.js.map +1 -0
- package/dist/pkg/browser/index.js +89 -32
- package/dist/pkg/browser/index.js.map +1 -1
- package/dist/pkg/core/analytics/index.js +12 -8
- package/dist/pkg/core/analytics/index.js.map +1 -1
- package/dist/pkg/core/queue/event-queue.js +7 -3
- package/dist/pkg/core/queue/event-queue.js.map +1 -1
- package/dist/pkg/generated/version.js +1 -1
- package/dist/pkg/index.js.map +1 -1
- package/dist/pkg/plugins/analytics-node/index.js +0 -1
- package/dist/pkg/plugins/analytics-node/index.js.map +1 -1
- package/dist/pkg/plugins/built-in-plugins.js +2 -0
- package/dist/pkg/plugins/built-in-plugins.js.map +1 -0
- package/dist/pkg/plugins/facebook-params/index.js +112 -0
- package/dist/pkg/plugins/facebook-params/index.js.map +1 -0
- package/dist/pkg/plugins/index.js +23 -0
- package/dist/pkg/plugins/index.js.map +1 -0
- package/dist/types/browser/dedupe-plugin-likes.d.ts +7 -0
- package/dist/types/browser/dedupe-plugin-likes.d.ts.map +1 -0
- package/dist/types/browser/index.d.ts.map +1 -1
- package/dist/types/core/analytics/index.d.ts +7 -1
- package/dist/types/core/analytics/index.d.ts.map +1 -1
- package/dist/types/core/buffer/index.d.ts +1 -1
- package/dist/types/generated/version.d.ts +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/plugins/analytics-node/index.d.ts.map +1 -1
- package/dist/types/plugins/built-in-plugins.d.ts +3 -0
- package/dist/types/plugins/built-in-plugins.d.ts.map +1 -0
- package/dist/types/plugins/facebook-params/index.d.ts +27 -0
- package/dist/types/plugins/facebook-params/index.d.ts.map +1 -0
- package/dist/types/plugins/index.d.ts +11 -0
- package/dist/types/plugins/index.d.ts.map +1 -0
- package/dist/umd/407.bundle.5cd2d2d625cfaa9e2f6e.js.map +1 -1
- package/dist/umd/407.bundle.5cd2d2d625cfaa9e2f6e.js.map.gz +0 -0
- package/dist/umd/ajs-destination.bundle.b5407b09b321c1d47d7c.js.map +1 -1
- package/dist/umd/ajs-destination.bundle.b5407b09b321c1d47d7c.js.map.gz +0 -0
- package/dist/umd/auto-track.bundle.68ce13c2007188a9368d.js.map +1 -1
- package/dist/umd/auto-track.bundle.68ce13c2007188a9368d.js.map.gz +0 -0
- package/dist/umd/events.min.js +1 -1
- package/dist/umd/events.min.js.gz +0 -0
- package/dist/umd/events.min.js.map +1 -1
- package/dist/umd/events.min.js.map.gz +0 -0
- package/dist/umd/facebook-params.bundle.bc6597a53dc18e288950.js +2 -0
- package/dist/umd/facebook-params.bundle.bc6597a53dc18e288950.js.gz +0 -0
- package/dist/umd/facebook-params.bundle.bc6597a53dc18e288950.js.map +1 -0
- package/dist/umd/facebook-params.bundle.bc6597a53dc18e288950.js.map.gz +0 -0
- package/dist/umd/google-tag-manager.bundle.5dbd0ff300a5c429a406.js.map +1 -1
- package/dist/umd/google-tag-manager.bundle.5dbd0ff300a5c429a406.js.map.gz +0 -0
- package/dist/umd/gtag.bundle.fa18b007fc2891339158.js.map +1 -1
- package/dist/umd/gtag.bundle.fa18b007fc2891339158.js.map.gz +0 -0
- package/dist/umd/index.js +1 -1
- package/dist/umd/index.js.gz +0 -0
- package/dist/umd/index.js.map +1 -1
- package/dist/umd/index.js.map.gz +0 -0
- package/dist/umd/legacyVideos.bundle.d1d6291274937f505b12.js.map +1 -1
- package/dist/umd/legacyVideos.bundle.d1d6291274937f505b12.js.map.gz +0 -0
- package/dist/umd/meta-param-builder.bundle.aab3a6e0c91673752d5a.js +2 -0
- package/dist/umd/meta-param-builder.bundle.aab3a6e0c91673752d5a.js.gz +0 -0
- package/dist/umd/meta-param-builder.bundle.aab3a6e0c91673752d5a.js.map +1 -0
- package/dist/umd/meta-param-builder.bundle.aab3a6e0c91673752d5a.js.map.gz +0 -0
- package/dist/umd/queryString.bundle.b86b3b6ef44fbbb98ec4.js.map +1 -1
- package/dist/umd/queryString.bundle.b86b3b6ef44fbbb98ec4.js.map.gz +0 -0
- package/dist/umd/remoteMiddleware.bundle.9945b0dd526dedecf614.js.map +1 -1
- package/dist/umd/remoteMiddleware.bundle.9945b0dd526dedecf614.js.map.gz +0 -0
- package/dist/umd/schemaFilter.bundle.babb6cdbe396c20dc88f.js.map +1 -1
- package/dist/umd/schemaFilter.bundle.babb6cdbe396c20dc88f.js.map.gz +0 -0
- package/dist/umd/tsub-middleware.bundle.b717b62fe947259b0454.js.map +1 -1
- package/dist/umd/tsub-middleware.bundle.b717b62fe947259b0454.js.map.gz +0 -0
- package/package.json +15 -18
- package/src/browser/dedupe-plugin-likes.ts +62 -0
- package/src/browser/index.ts +70 -11
- package/src/core/analytics/index.ts +9 -2
- package/src/core/queue/event-queue.ts +1 -1
- package/src/generated/version.ts +1 -1
- package/src/index.ts +1 -0
- package/src/plugins/analytics-node/index.ts +0 -1
- package/src/plugins/built-in-plugins.ts +3 -0
- package/src/plugins/facebook-params/index.ts +121 -0
- package/src/plugins/index.ts +22 -0
- package/src/test-helpers/fixtures/classic-destination.ts +23 -8
- package/src/types/meta-capi-param-builder-clientjs.d.ts +32 -0
|
Binary file
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_ht_sdks_events_sdk_js_browser=self.webpackChunk_ht_sdks_events_sdk_js_browser||[]).push([[734],{9255:function(e,t,r){r.d(t,{facebookParams:function(){return s}});var n=r(5608),i=r(4082);var s=new function(){var e=this;this.clientParamBuilder=null,this.sdkReady=!1,this.name="Facebook Parameters",this.type="enrichment",this.version="0.1.0",this.isLoaded=function(){return e.sdkReady},this.load=function(t,s){return(0,n.sH)(e,void 0,Promise,function(){var e,t=this;return(0,n.YH)(this,function(a){switch(a.label){case 0:return(0,i.S)()?[2,Promise.resolve()]:(e=(0,n.sH)(t,void 0,void 0,function(){var e,t,i;return(0,n.YH)(this,function(n){switch(n.label){case 0:return[4,r.e(838).then(r.t.bind(r,2349,23))];case 1:return e=n.sent(),(t=null!==(i=e.default)&&void 0!==i?i:e)&&"function"==typeof t.processAndCollectAllParams&&"function"==typeof t.getFbc&&"function"==typeof t.getFbp?[4,t.processAndCollectAllParams()]:(console.warn("Facebook Parameter Builder SDK loaded but clientParamBuilder is not available or does not expose expected interface"),[2]);case 2:return n.sent(),this.clientParamBuilder=t,this.sdkReady=!0,[2]}})}).catch(function(e){console.warn("Failed to load Facebook Parameter Builder SDK:",e)}),[4,s.queue.criticalTasks.run(function(){return(t=e,r=2e3,n="Facebook Parameter Builder SDK load timed out",s=new Promise(function(e,t){i=setTimeout(function(){return t(new Error(n))},r)}),Promise.race([t,s]).finally(function(){clearTimeout(i)})).catch(function(){});var t,r,n,i,s})]);case 1:return a.sent(),[2]}})})},this.enrich=function(t){if(!e.sdkReady||!e.clientParamBuilder)return t;try{var r=t.event.context;if(!r)return t;var n=e.clientParamBuilder.getFbc(),i=e.clientParamBuilder.getFbp();n&&(r.fbc=n),i&&(r.fbp=i)}catch(e){console.warn("Error extracting Facebook parameters:",e)}return t},this.track=this.enrich,this.identify=this.enrich,this.page=this.enrich,this.group=this.enrich,this.alias=this.enrich,this.screen=this.enrich}}}]);
|
|
2
|
+
//# sourceMappingURL=facebook-params.bundle.bc6597a53dc18e288950.js.map
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"facebook-params.bundle.d238c5af8b0f3fb606b7.js","mappings":"0NA0BA,IA8FaA,EAAiB,IA9F9B,eAAAC,EAAAC,KACUA,KAAAC,mBAAgD,KAChDD,KAAAE,UAAW,EAEnBF,KAAAG,KAAO,sBACPH,KAAAI,KAAmB,aACnBJ,KAAAK,QAAU,QAEVL,KAAAM,SAAW,WAAM,OAAAP,EAAKG,QAAL,EAEjBF,KAAAO,KAAO,SAAOC,EAAeC,GAAoB,SAAAC,EAAAC,IAAAZ,OAAA,EAAGa,QAAO,+EACzD,OAAI,EAAAC,EAAAC,KAEF,GAAOF,QAAQG,YAIXC,GAAQ,EAAAN,EAAAC,IAAAZ,OAAA,qFACe,SAAMkB,EAAAC,EAAA,KAAAC,KAAAF,EAAAG,EAAAC,KAAAJ,EAAA,kBAMjC,OANMK,EAAqBC,EAAAC,QAGrBvB,EAAgD,QAA1BwB,EAAAH,EAAmBI,eAAO,IAAAD,EAAAA,EACpDH,IAIyD,mBAAlDrB,EAAmB0B,4BACW,mBAA9B1B,EAAmB2B,QACW,mBAA9B3B,EAAmB4B,OAQ5B,GAAM5B,EAAmB0B,+BANvBG,QAAQC,KACN,uHAEF,mBAGFR,EAAAC,OACAxB,KAAKC,mBAAqBA,EAC1BD,KAAKE,UAAW,WACb8B,MAAM,SAACC,GACVH,QAAQC,KAAK,iDAAkDE,EACjE,GAGA,GAAMxB,EAAUyB,MAAMC,cAAcC,IAAI,WACtC,OA5DJC,EA4DgBrB,EA3DhBsB,EAL0B,IAM1BC,EAL+B,gDASzBC,EAAU,IAAI5B,QAAe,SAAC6B,EAAGC,GACrCC,EAAQC,WAAW,WAAM,OAAAF,EAAO,IAAIG,MAAMN,GAAjB,EAA4BD,EACvD,GAEO1B,QAAQkC,KAAK,CAACT,EAASG,IAAUO,QAAQ,WAC9CC,aAAaL,EACf,IAgDqEX,MAC/D,WAAO,GA9Df,IACEK,EACAC,EACAC,EAEII,EAEEH,CAsDF,mBADFf,EAAAD,iBAOMxB,KAAAiD,OAAS,SAACC,GAChB,IAAKnD,EAAKG,WAAaH,EAAKE,mBAC1B,OAAOiD,EAGT,IACE,IAAMC,EAASD,EAAIE,MAAMC,QACzB,IAAKF,EACH,OAAOD,EAIT,IAAMI,EAAMvD,EAAKE,mBAAmB2B,SAC9B2B,EAAMxD,EAAKE,mBAAmB4B,SAGhCyB,IACFH,EAAOG,IAAMA,GAGXC,IACFJ,EAAOI,IAAMA,EAEjB,CAAE,MAAOtB,GAEPH,QAAQC,KAAK,wCAAyCE,EACxD,CAEA,OAAOiB,CACT,EAEAlD,KAAAwD,MAAQxD,KAAKiD,OACbjD,KAAAyD,SAAWzD,KAAKiD,OAChBjD,KAAA0D,KAAO1D,KAAKiD,OACZjD,KAAA2D,MAAQ3D,KAAKiD,OACbjD,KAAA4D,MAAQ5D,KAAKiD,OACbjD,KAAA6D,OAAS7D,KAAKiD,MAChB","sources":["webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/facebook-params/index.ts"],"sourcesContent":["import type { Context } from '../../core/context'\nimport type { Plugin } from '../../core/plugin'\nimport { PluginType } from '@ht-sdks/events-sdk-js-core'\nimport { Analytics } from '../../core/analytics'\nimport { isServer } from '../../core/environment'\nimport type { ClientParamBuilder } from 'meta-capi-param-builder-clientjs'\n\nconst SDK_LOAD_TIMEOUT_MS = 2000\nconst SDK_LOAD_TIMEOUT_MESSAGE = 'Facebook Parameter Builder SDK load timed out'\n\nfunction withTimeout<T>(\n promise: Promise<T>,\n ms: number,\n message: string\n): Promise<T> {\n let timer: ReturnType<typeof setTimeout>\n\n const timeout = new Promise<never>((_, reject) => {\n timer = setTimeout(() => reject(new Error(message)), ms)\n })\n\n return Promise.race([promise, timeout]).finally(() => {\n clearTimeout(timer)\n })\n}\n\nclass FacebookParamsPlugin implements Plugin {\n private clientParamBuilder: ClientParamBuilder | null = null\n private sdkReady = false\n\n name = 'Facebook Parameters'\n type: PluginType = 'enrichment'\n version = '0.1.0'\n\n isLoaded = () => this.sdkReady\n\n load = async (_ctx: Context, _instance: Analytics): Promise<void> => {\n if (isServer()) {\n // Server-side rendering - skip loading\n return Promise.resolve()\n }\n\n // Runs to completion on its own, even if the race below gives up waiting\n const init = (async () => {\n const paramBuilderModule = await import(\n /* webpackChunkName: \"meta-param-builder\" */ 'meta-capi-param-builder-clientjs'\n )\n const clientParamBuilder = (paramBuilderModule.default ??\n paramBuilderModule) as ClientParamBuilder\n\n if (\n !clientParamBuilder ||\n typeof clientParamBuilder.processAndCollectAllParams !== 'function' ||\n typeof clientParamBuilder.getFbc !== 'function' ||\n typeof clientParamBuilder.getFbp !== 'function'\n ) {\n console.warn(\n 'Facebook Parameter Builder SDK loaded but clientParamBuilder is not available or does not expose expected interface'\n )\n return\n }\n\n await clientParamBuilder.processAndCollectAllParams()\n this.clientParamBuilder = clientParamBuilder\n this.sdkReady = true\n })().catch((error) => {\n console.warn('Failed to load Facebook Parameter Builder SDK:', error)\n })\n\n // Timeout only bounds how long the event queue waits — it doesn't cancel init\n await _instance.queue.criticalTasks.run(() =>\n withTimeout(init, SDK_LOAD_TIMEOUT_MS, SDK_LOAD_TIMEOUT_MESSAGE).catch(\n () => {}\n )\n )\n }\n\n private enrich = (ctx: Context): Context => {\n if (!this.sdkReady || !this.clientParamBuilder) {\n return ctx\n }\n\n try {\n const evtCtx = ctx.event.context\n if (!evtCtx) {\n return ctx\n }\n\n // Get fbc and fbp from cookies (processAndCollectAllParams was called during load)\n const fbc = this.clientParamBuilder.getFbc()\n const fbp = this.clientParamBuilder.getFbp()\n\n // Only add if not empty (getFbc/getFbp return empty string if cookie doesn't exist)\n if (fbc) {\n evtCtx.fbc = fbc\n }\n\n if (fbp) {\n evtCtx.fbp = fbp\n }\n } catch (error) {\n // Silently fail - don't break event processing if SDK has issues\n console.warn('Error extracting Facebook parameters:', error)\n }\n\n return ctx\n }\n\n track = this.enrich\n identify = this.enrich\n page = this.enrich\n group = this.enrich\n alias = this.enrich\n screen = this.enrich\n}\n\n/**\n * Default plugin instance using Meta's official ParamBuilder SDK.\n * Used when plugin is loaded via string name: plugins: [\"facebook-params\"]\n */\nexport const facebookParams = new FacebookParamsPlugin()\n"],"names":["facebookParams","_this","this","clientParamBuilder","sdkReady","name","type","version","isLoaded","load","_ctx","_instance","tslib__WEBPACK_IMPORTED_MODULE_0__","sH","Promise","_core_environment__WEBPACK_IMPORTED_MODULE_1__","S","resolve","init","__webpack_require__","e","then","t","bind","paramBuilderModule","_b","sent","_a","default","processAndCollectAllParams","getFbc","getFbp","console","warn","catch","error","queue","criticalTasks","run","promise","ms","message","timeout","_","reject","timer","setTimeout","Error","race","finally","clearTimeout","enrich","ctx","evtCtx","event","context","fbc","fbp","track","identify","page","group","alias","screen"],"sourceRoot":""}
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-tag-manager.bundle.
|
|
1
|
+
{"version":3,"file":"google-tag-manager.bundle.9c2ea1129ecc2c33d853.js","mappings":"iOAwBAA,EAAA,WAIE,SAAAA,EACWC,EACAC,EACAC,GAFAC,KAAAH,KAAAA,EACAG,KAAAF,QAAAA,EACAE,KAAAD,QAAAA,EANFC,KAAAC,KAAO,cACPD,KAAAE,WAA8C,GAqBvDF,KAAAG,MAAQH,KAAKI,cAAc,SAC3BJ,KAAAK,MAAQL,KAAKI,cAAc,SAC3BJ,KAAAM,SAAWN,KAAKI,cAAc,YAC9BJ,KAAAO,KAAOP,KAAKI,cAAc,QAC1BJ,KAAAQ,OAASR,KAAKI,cAAc,UAC5BJ,KAAAS,MAAQT,KAAKI,cAAc,QApBxB,CAoDL,OAlDER,EAAAc,UAAAC,SAAA,WACE,OAAO,CACT,EAEAf,EAAAc,UAAAE,KAAA,WAEE,OADAC,QAAQC,MAAM,8BAAAC,OAA8Bf,KAAKH,KAAI,MAAAkB,OAAKf,KAAKF,UACxDkB,QAAQC,SACjB,EAEArB,EAAAc,UAAAQ,cAAA,qBAAcC,EAAA,GAAAC,EAAA,EAAAA,EAAAC,UAAAC,OAAAF,IAAAD,EAAAC,GAAAC,UAAAD,IACZG,EAAAvB,KAAKE,YAAWsB,KAAIC,MAAAF,EAAIJ,EAC1B,EAScvB,EAAAc,UAAAgB,UAAd,SAAwBC,8BAAeX,QAAO,wEACtB,UAAM,EAAAY,EAAAC,4BAC1B7B,KAAKH,KACL8B,EAAIG,MACJ9B,KAAKE,oBAYP,OATqB,OANf6B,EAAgBR,EAAAS,SAOpBL,EAAIM,OACF,IAAIC,EAAAC,EAAmB,CACrBC,OAAO,EACPC,OAAQ,uCAKd,GAAO,IAAIC,EAAAC,EAAQR,UAGbnC,EAAAc,UAAAN,cAAR,SAAsBoC,GAAtB,IAAAC,EAAAzC,KACE,OAAO,SAAO2B,GAAY,SAAAe,EAAAC,IAAAF,OAAA,EAAGzB,QAAO,wEAClC,OAAKhB,KAAKD,QAAQyC,GAEK,GAAMxC,KAAK0B,UAAUC,IAFjB,GAAOA,UAIlC,OAFMiB,EAAiBrB,EAAAS,OAEvB,GAAMhC,KAAKD,QAAQyC,GAASI,WAE5B,OAFArB,EAAAS,OAEA,GAAOL,QAEX,EACF/B,CAAA,CA5DA,iDCkDAiD,EAAA,QA3CuE,SAACtB,OACtEuB,EAAAvB,EAAAwB,cAAAA,OAAa,IAAAD,GAAQA,EACrBE,EAAAzB,EAAA0B,gBAAAA,OAAe,IAAAD,GAAOA,EACtBE,EAAA3B,EAAA4B,sBAAAA,OAAqB,IAAAD,GAAOA,EAEtBE,EAAY,SAACtB,GACjBuB,OAAOC,UAAU9B,MAAK,EAAAkB,EAAAa,KAAA,EAAAb,EAAAa,KAAA,EAAAb,EAAAa,KAAA,EAAAb,EAAAa,IAAA,GAChBzB,EAAM0B,QAAU,CAClBA,OAAQ1B,EAAM0B,SAEZ1B,EAAM2B,aAAe,CACvBC,qBAAsB5B,EAAM2B,cAC5B,CACF3B,MAAOA,EAAMA,QACVA,EAAM6B,YAEb,EAEA,OAAO,IAAIC,EAAAC,EAAY,qBAAsB,QAAS,CACpDtD,KAAM,SAACoB,GACL,GACEoB,GACCE,GAAmBtB,EAAIG,MAAMjC,MAC7BsD,GAAyBxB,EAAIG,MAAMgC,SACpC,CACA,IAAMC,EAAY,CAAC,SAAUpC,EAAIG,MAAMgC,SAAUnC,EAAIG,MAAMjC,KAAM,QAC9DmE,OAAOC,SACPC,KAAK,KAERd,GAAU,EAAAV,EAAAa,KAAA,EAAAb,EAAAa,IAAA,GACL5B,EAAIG,OAAK,CACZ7B,KAAM,QACN6B,MAAOiC,IAEX,CACF,EAEAtD,MAAO,SAACkB,GACNyB,EAAUzB,EAAIG,MAChB,GAEJ","sources":["webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/destinations/destination.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/destinations/google-tag-manager.ts"],"sourcesContent":["import type { DestinationPlugin, Plugin } from '../../core/plugin'\nimport { Context, ContextCancelation } from '../../core/context'\nimport {\n applyDestinationMiddleware,\n DestinationMiddlewareFunction,\n} from '../middleware'\n\n// removes the return type from a function\ntype NoReturn<T> = T extends (...args: any[]) => any\n ? (...args: Parameters<T>) => void | Promise<void>\n : T\n\ntype PluginActions = Pick<\n Plugin,\n 'alias' | 'group' | 'identify' | 'page' | 'screen' | 'track'\n>\n\ntype DestinationActions = {\n [K in keyof PluginActions]: NoReturn<PluginActions[K]>\n}\n\n/**\n * Convenience class for writing 3rd party destination plugins\n */\nexport class Destination implements DestinationPlugin {\n readonly type = 'destination'\n readonly middleware: DestinationMiddlewareFunction[] = []\n\n constructor(\n readonly name: string,\n readonly version: string,\n readonly actions: DestinationActions\n ) {}\n\n isLoaded() {\n return true\n }\n\n load() {\n console.debug(`loaded destination plugin: ${this.name} v${this.version}`)\n return Promise.resolve()\n }\n\n addMiddleware(...fn: DestinationMiddlewareFunction[]) {\n this.middleware.push(...fn)\n }\n\n alias = this._createMethod('alias')\n group = this._createMethod('group')\n identify = this._createMethod('identify')\n page = this._createMethod('page')\n screen = this._createMethod('screen')\n track = this._createMethod('track')\n\n private async transform(ctx: Context): Promise<Context> {\n const modifiedEvent = await applyDestinationMiddleware(\n this.name,\n ctx.event,\n this.middleware\n )\n\n if (modifiedEvent == null) {\n ctx.cancel(\n new ContextCancelation({\n retry: false,\n reason: 'dropped by destination middleware',\n })\n )\n }\n\n return new Context(modifiedEvent)\n }\n\n private _createMethod(action: keyof DestinationActions) {\n return async (ctx: Context): Promise<Context> => {\n if (!this.actions[action]) return ctx\n\n const transformedCtx = await this.transform(ctx)\n\n await this.actions[action]!(transformedCtx)\n\n return ctx\n }\n }\n}\n","import type { Context } from '../../core/context'\nimport type { HightouchEvent } from '../../core/events/interfaces'\nimport type { DestinationFactory } from './types'\nimport { Destination } from './destination'\n\ndeclare global {\n interface Window {\n dataLayer: Array<any>\n }\n}\n\ntype GoogleTagManagerSettings = {\n /**\n * If a `Viewed Page` event should be sent for all `htevents.page` calls\n */\n trackAllPages?: boolean\n\n /**\n * If a `Viewed <name> Page` event should be sent for `htevents.page('Name')` calls\n */\n trackNamedPages?: boolean\n\n /**\n * If a `Viewed <category> <name> Page` event should be sent for `htevents.page('Category', 'Name')` calls\n */\n trackCategorizedPages?: boolean\n}\n\n/**\n * https://github.com/segmentio/analytics.js-integrations/blob/master/integrations/google-tag-manager/lib/index.js\n */\nconst googleTagManager: DestinationFactory<GoogleTagManagerSettings> = ({\n trackAllPages = false,\n trackNamedPages = true,\n trackCategorizedPages = true,\n}) => {\n const pushEvent = (event: HightouchEvent) => {\n window.dataLayer.push({\n ...(event.userId && {\n userId: event.userId,\n }),\n ...(event.anonymousId && {\n hightouchAnonymousId: event.anonymousId,\n }),\n event: event.event,\n ...event.properties,\n })\n }\n\n return new Destination('Google Tag Manager', '0.0.1', {\n page: (ctx: Context) => {\n if (\n trackAllPages ||\n (trackNamedPages && ctx.event.name) ||\n (trackCategorizedPages && ctx.event.category)\n ) {\n const eventName = ['Viewed', ctx.event.category, ctx.event.name, 'Page']\n .filter(Boolean)\n .join(' ')\n\n pushEvent({\n ...ctx.event,\n type: 'track',\n event: eventName,\n })\n }\n },\n\n track: (ctx: Context) => {\n pushEvent(ctx.event)\n },\n })\n}\n\nexport default googleTagManager\n"],"names":["Destination","name","version","actions","this","type","middleware","alias","_createMethod","group","identify","page","screen","track","prototype","isLoaded","load","console","debug","concat","Promise","resolve","addMiddleware","fn","_i","arguments","length","_a","push","apply","transform","ctx","_middleware__WEBPACK_IMPORTED_MODULE_3__","applyDestinationMiddleware","event","modifiedEvent","sent","cancel","_core_context__WEBPACK_IMPORTED_MODULE_2__","d","retry","reason","_core_context__WEBPACK_IMPORTED_MODULE_1__","o","action","_this","tslib__WEBPACK_IMPORTED_MODULE_0__","sH","transformedCtx","__webpack_exports__","_b","trackAllPages","_c","trackNamedPages","_d","trackCategorizedPages","pushEvent","window","dataLayer","Cl","userId","anonymousId","hightouchAnonymousId","properties","_destination__WEBPACK_IMPORTED_MODULE_1__","D","category","eventName","filter","Boolean","join"],"sourceRoot":""}
|
|
Binary file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gtag.bundle.
|
|
1
|
+
{"version":3,"file":"gtag.bundle.00601da9e0d08ecc9959.js","mappings":"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","sources":["webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/destinations/destination.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/destinations/gtag.ts"],"sourcesContent":["import type { DestinationPlugin, Plugin } from '../../core/plugin'\nimport { Context, ContextCancelation } from '../../core/context'\nimport {\n applyDestinationMiddleware,\n DestinationMiddlewareFunction,\n} from '../middleware'\n\n// removes the return type from a function\ntype NoReturn<T> = T extends (...args: any[]) => any\n ? (...args: Parameters<T>) => void | Promise<void>\n : T\n\ntype PluginActions = Pick<\n Plugin,\n 'alias' | 'group' | 'identify' | 'page' | 'screen' | 'track'\n>\n\ntype DestinationActions = {\n [K in keyof PluginActions]: NoReturn<PluginActions[K]>\n}\n\n/**\n * Convenience class for writing 3rd party destination plugins\n */\nexport class Destination implements DestinationPlugin {\n readonly type = 'destination'\n readonly middleware: DestinationMiddlewareFunction[] = []\n\n constructor(\n readonly name: string,\n readonly version: string,\n readonly actions: DestinationActions\n ) {}\n\n isLoaded() {\n return true\n }\n\n load() {\n console.debug(`loaded destination plugin: ${this.name} v${this.version}`)\n return Promise.resolve()\n }\n\n addMiddleware(...fn: DestinationMiddlewareFunction[]) {\n this.middleware.push(...fn)\n }\n\n alias = this._createMethod('alias')\n group = this._createMethod('group')\n identify = this._createMethod('identify')\n page = this._createMethod('page')\n screen = this._createMethod('screen')\n track = this._createMethod('track')\n\n private async transform(ctx: Context): Promise<Context> {\n const modifiedEvent = await applyDestinationMiddleware(\n this.name,\n ctx.event,\n this.middleware\n )\n\n if (modifiedEvent == null) {\n ctx.cancel(\n new ContextCancelation({\n retry: false,\n reason: 'dropped by destination middleware',\n })\n )\n }\n\n return new Context(modifiedEvent)\n }\n\n private _createMethod(action: keyof DestinationActions) {\n return async (ctx: Context): Promise<Context> => {\n if (!this.actions[action]) return ctx\n\n const transformedCtx = await this.transform(ctx)\n\n await this.actions[action]!(transformedCtx)\n\n return ctx\n }\n }\n}\n","import type { Context } from '../../core/context'\nimport type { DestinationFactory } from './types'\nimport { Destination } from './destination'\n\ndeclare global {\n interface Window {\n gtag: Function\n }\n}\n\ntype GtagSettings = {\n /**\n * The Google measurement ID(s) to send events to (GA4, Ads)\n */\n measurementId?: string | string[]\n\n /**\n * If a `Viewed Page` event should be sent for all `htevents.page` calls\n */\n trackAllPages?: boolean\n\n /**\n * If a `Viewed <name> Page` event should be sent for `htevents.page('Name')` calls\n */\n trackNamedPages?: boolean\n\n /**\n * If a `Viewed <category> <name> Page` event should be sent for `htevents.page('Category', 'Name')` calls\n */\n trackCategorizedPages?: boolean\n}\n\nconst gtag: DestinationFactory<GtagSettings> = ({\n measurementId = [],\n trackAllPages = false,\n trackNamedPages = true,\n trackCategorizedPages = true,\n}) => {\n const measurementIds = (\n Array.isArray(measurementId) ? measurementId : [measurementId]\n ).filter(Boolean)\n\n const baseEvent = ({ event }: Context) => {\n return {\n ...(event.userId && {\n user_id: event.userId,\n }),\n ...(event.anonymousId && {\n hightouch_anonymous_id: event.anonymousId,\n }),\n ...(measurementIds.length > 0 && {\n send_to: measurementIds,\n }),\n ...event.properties,\n }\n }\n\n return new Destination('gtag', '0.0.1', {\n identify: (ctx) => {\n if (ctx.event.userId) {\n measurementIds.forEach((measurementId) => {\n window.gtag('config', measurementId, {\n user_id: ctx.event.userId,\n })\n })\n }\n },\n\n page: (ctx) => {\n if (\n trackAllPages ||\n (trackNamedPages && ctx.event.name) ||\n (trackCategorizedPages && ctx.event.category)\n ) {\n const eventName = ['Viewed', ctx.event.category, ctx.event.name, 'Page']\n .filter(Boolean)\n .join(' ')\n\n window.gtag('event', eventName, {\n ...baseEvent(ctx),\n })\n }\n },\n\n track: (ctx) => {\n window.gtag('event', ctx.event.event, {\n ...baseEvent(ctx),\n })\n },\n })\n}\n\nexport default gtag\n"],"names":["Destination","name","version","actions","this","type","middleware","alias","_createMethod","group","identify","page","screen","track","prototype","isLoaded","load","console","debug","concat","Promise","resolve","addMiddleware","fn","_i","arguments","length","_a","push","apply","transform","ctx","_middleware__WEBPACK_IMPORTED_MODULE_3__","applyDestinationMiddleware","event","modifiedEvent","sent","cancel","_core_context__WEBPACK_IMPORTED_MODULE_2__","d","retry","reason","_core_context__WEBPACK_IMPORTED_MODULE_1__","o","action","_this","tslib__WEBPACK_IMPORTED_MODULE_0__","sH","transformedCtx","__webpack_exports__","_b","measurementId","_c","trackAllPages","_d","trackNamedPages","_e","trackCategorizedPages","measurementIds","Array","isArray","filter","Boolean","baseEvent","Cl","userId","user_id","anonymousId","hightouch_anonymous_id","send_to","properties","_destination__WEBPACK_IMPORTED_MODULE_1__","D","forEach","window","gtag","category","eventName","join"],"sourceRoot":""}
|
|
Binary file
|