@ht-sdks/events-sdk-js-browser 1.1.0 → 1.3.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.
Files changed (95) hide show
  1. package/README.md +72 -4
  2. package/dist/cjs/browser/index.js +76 -42
  3. package/dist/cjs/browser/index.js.map +1 -1
  4. package/dist/cjs/core/analytics/index.js +1 -1
  5. package/dist/cjs/core/analytics/index.js.map +1 -1
  6. package/dist/cjs/core/http-cookies/index.js +174 -0
  7. package/dist/cjs/core/http-cookies/index.js.map +1 -0
  8. package/dist/cjs/core/user/index.js +32 -6
  9. package/dist/cjs/core/user/index.js.map +1 -1
  10. package/dist/cjs/core/user/tld.js +7 -3
  11. package/dist/cjs/core/user/tld.js.map +1 -1
  12. package/dist/cjs/generated/version.js +1 -1
  13. package/dist/cjs/index.js +3 -1
  14. package/dist/cjs/index.js.map +1 -1
  15. package/dist/cjs/node/index.js +1 -1
  16. package/dist/cjs/node/index.js.map +1 -1
  17. package/dist/cjs/plugins/analytics-node/index.js +2 -2
  18. package/dist/cjs/plugins/analytics-node/index.js.map +1 -1
  19. package/dist/cjs/plugins/destinations/destination.js +81 -0
  20. package/dist/cjs/plugins/destinations/destination.js.map +1 -0
  21. package/dist/cjs/plugins/destinations/google-tag-manager.js +47 -0
  22. package/dist/cjs/plugins/destinations/google-tag-manager.js.map +1 -0
  23. package/dist/cjs/plugins/destinations/index.js +22 -0
  24. package/dist/cjs/plugins/destinations/index.js.map +1 -0
  25. package/dist/cjs/plugins/destinations/types.js +3 -0
  26. package/dist/cjs/plugins/destinations/types.js.map +1 -0
  27. package/dist/pkg/browser/index.js +76 -42
  28. package/dist/pkg/browser/index.js.map +1 -1
  29. package/dist/pkg/core/analytics/index.js +1 -1
  30. package/dist/pkg/core/analytics/index.js.map +1 -1
  31. package/dist/pkg/core/http-cookies/index.js +171 -0
  32. package/dist/pkg/core/http-cookies/index.js.map +1 -0
  33. package/dist/pkg/core/user/index.js +32 -6
  34. package/dist/pkg/core/user/index.js.map +1 -1
  35. package/dist/pkg/core/user/tld.js +7 -3
  36. package/dist/pkg/core/user/tld.js.map +1 -1
  37. package/dist/pkg/generated/version.js +1 -1
  38. package/dist/pkg/index.js +1 -0
  39. package/dist/pkg/index.js.map +1 -1
  40. package/dist/pkg/node/index.js +1 -1
  41. package/dist/pkg/node/index.js.map +1 -1
  42. package/dist/pkg/plugins/analytics-node/index.js +2 -2
  43. package/dist/pkg/plugins/analytics-node/index.js.map +1 -1
  44. package/dist/pkg/plugins/destinations/destination.js +78 -0
  45. package/dist/pkg/plugins/destinations/destination.js.map +1 -0
  46. package/dist/pkg/plugins/destinations/google-tag-manager.js +45 -0
  47. package/dist/pkg/plugins/destinations/google-tag-manager.js.map +1 -0
  48. package/dist/pkg/plugins/destinations/index.js +18 -0
  49. package/dist/pkg/plugins/destinations/index.js.map +1 -0
  50. package/dist/pkg/plugins/destinations/types.js +2 -0
  51. package/dist/pkg/plugins/destinations/types.js.map +1 -0
  52. package/dist/types/browser/index.d.ts.map +1 -1
  53. package/dist/types/core/analytics/index.d.ts +14 -0
  54. package/dist/types/core/analytics/index.d.ts.map +1 -1
  55. package/dist/types/core/buffer/index.d.ts +1 -1
  56. package/dist/types/core/http-cookies/index.d.ts +57 -0
  57. package/dist/types/core/http-cookies/index.d.ts.map +1 -0
  58. package/dist/types/core/user/index.d.ts +5 -0
  59. package/dist/types/core/user/index.d.ts.map +1 -1
  60. package/dist/types/core/user/tld.d.ts.map +1 -1
  61. package/dist/types/generated/version.d.ts +1 -1
  62. package/dist/types/index.d.ts +1 -0
  63. package/dist/types/index.d.ts.map +1 -1
  64. package/dist/types/plugins/destinations/destination.d.ts +32 -0
  65. package/dist/types/plugins/destinations/destination.d.ts.map +1 -0
  66. package/dist/types/plugins/destinations/google-tag-manager.d.ts +30 -0
  67. package/dist/types/plugins/destinations/google-tag-manager.d.ts.map +1 -0
  68. package/dist/types/plugins/destinations/index.d.ts +6 -0
  69. package/dist/types/plugins/destinations/index.d.ts.map +1 -0
  70. package/dist/types/plugins/destinations/types.d.ts +5 -0
  71. package/dist/types/plugins/destinations/types.d.ts.map +1 -0
  72. package/dist/umd/events.min.js +1 -1
  73. package/dist/umd/events.min.js.map +1 -1
  74. package/dist/umd/google-tag-manager.bundle.c27daab560c3298c04ca.js +2 -0
  75. package/dist/umd/google-tag-manager.bundle.c27daab560c3298c04ca.js.map +1 -0
  76. package/dist/umd/index.js +1 -1
  77. package/dist/umd/index.js.map +1 -1
  78. package/package.json +14 -19
  79. package/src/browser/index.ts +20 -0
  80. package/src/core/analytics/index.ts +20 -0
  81. package/src/core/http-cookies/README.md +97 -0
  82. package/src/core/http-cookies/index.ts +165 -0
  83. package/src/core/http-cookies/server-examples/node-aws-lambda.md +167 -0
  84. package/src/core/http-cookies/server-examples/node-express-js.md +103 -0
  85. package/src/core/http-cookies/server-examples/node-next-js.md +75 -0
  86. package/src/core/user/index.ts +42 -4
  87. package/src/core/user/tld.ts +8 -4
  88. package/src/generated/version.ts +1 -1
  89. package/src/index.ts +1 -0
  90. package/src/node/index.ts +1 -1
  91. package/src/plugins/analytics-node/index.ts +2 -2
  92. package/src/plugins/destinations/destination.ts +85 -0
  93. package/src/plugins/destinations/google-tag-manager.ts +96 -0
  94. package/src/plugins/destinations/index.ts +19 -0
  95. package/src/plugins/destinations/types.ts +8 -0
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_ht_sdks_events_sdk_js_browser=self.webpackChunk_ht_sdks_events_sdk_js_browser||[]).push([[579],{4557:function(e,t,n){n.r(t),n.d(t,{default:function(){return d}});var i=n(5163),r=n(1494),o=n(3710),s=n(6338),a=function(){function e(e,t,n){this.name=e,this.version=t,this.actions=n,this.type="destination",this.middleware=[],this.alias=this._createMethod("alias"),this.group=this._createMethod("group"),this.identify=this._createMethod("identify"),this.page=this._createMethod("page"),this.screen=this._createMethod("screen"),this.track=this._createMethod("track")}return e.prototype.isLoaded=function(){return!0},e.prototype.load=function(){return console.debug("loaded destination plugin: ".concat(this.name," v").concat(this.version)),Promise.resolve()},e.prototype.addMiddleware=function(){for(var e,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];(e=this.middleware).push.apply(e,t)},e.prototype.transform=function(e){return(0,i.mG)(this,void 0,Promise,(function(){var t;return(0,i.Jh)(this,(function(n){switch(n.label){case 0:return[4,(0,s.applyDestinationMiddleware)(this.name,e.event,this.middleware)];case 1:return null==(t=n.sent())&&e.cancel(new r.Y({retry:!1,reason:"dropped by destination middleware"})),[2,new o._(t)]}}))}))},e.prototype._createMethod=function(e){var t=this;return function(n){return(0,i.mG)(t,void 0,Promise,(function(){var t;return(0,i.Jh)(this,(function(i){switch(i.label){case 0:return this.actions[e]?[4,this.transform(n)]:[2,n];case 1:return t=i.sent(),[4,this.actions[e](t)];case 2:return i.sent(),[2,n]}}))}))}},e}(),d=function(e){var t=e.measurementId,n=void 0===t?[]:t,r=e.trackAllPages,o=void 0!==r&&r,s=e.trackNamedPages,d=void 0===s||s,c=e.trackCategorizedPages,u=void 0===c||c,h=(Array.isArray(n)?n:[n]).filter(Boolean),p=function(e){var t=e.event;return(0,i.pi)((0,i.pi)((0,i.pi)((0,i.pi)({},t.userId&&{user_id:t.userId}),t.anonymousId&&{hightouch_anonymous_id:t.anonymousId}),h.length>0&&{send_to:h}),t.properties)};return new a("Google Tag Manager","0.0.1",{identify:function(e){e.event.userId&&h.forEach((function(t){window.gtag("config",t,{user_id:e.event.userId})}))},page:function(e){if(o||d&&e.event.name||u&&e.event.category){var t=["Viewed",e.event.category,e.event.name,"Page"].filter(Boolean).join(" ");window.gtag("event",t,(0,i.pi)({},p(e)))}},track:function(e){window.gtag("event",e.event.event,(0,i.pi)({},p(e)))}})}}}]);
2
+ //# sourceMappingURL=google-tag-manager.bundle.c27daab560c3298c04ca.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-tag-manager.bundle.c27daab560c3298c04ca.js","mappings":"8OAwBA,aAIE,WACWA,EACAC,EACAC,GAFA,KAAAF,KAAAA,EACA,KAAAC,QAAAA,EACA,KAAAC,QAAAA,EANF,KAAAC,KAAO,cACP,KAAAC,WAA8C,GAqBvD,KAAAC,MAAQC,KAAKC,cAAc,SAC3B,KAAAC,MAAQF,KAAKC,cAAc,SAC3B,KAAAE,SAAWH,KAAKC,cAAc,YAC9B,KAAAG,KAAOJ,KAAKC,cAAc,QAC1B,KAAAI,OAASL,KAAKC,cAAc,UAC5B,KAAAK,MAAQN,KAAKC,cAAc,QApBxB,CAoDL,OAlDE,YAAAM,SAAA,WACE,OAAO,CACT,EAEA,YAAAC,KAAA,WAEE,OADAC,QAAQC,MAAM,qCAA8BV,KAAKN,KAAI,aAAKM,KAAKL,UACxDgB,QAAQC,SACjB,EAEA,YAAAC,cAAA,W,UAAc,mDACZ,EAAAb,KAAKF,YAAWgB,KAAI,QAAIC,EAC1B,EASc,YAAAC,UAAd,SAAwBC,G,2BAAeN,SAAO,W,8DACtB,UAAM,IAAAO,4BAC1BlB,KAAKN,KACLuB,EAAIE,MACJnB,KAAKF,a,OAYP,OATqB,OANfsB,EAAgB,WAOpBH,EAAII,OACF,IAAI,IAAmB,CACrBC,OAAO,EACPC,OAAQ,uCAKP,CAAP,EAAO,IAAI,IAAQH,I,QAGb,YAAAnB,cAAR,SAAsBuB,GAAtB,WACE,OAAO,SAAOP,GAAY,wBAAGN,SAAO,W,8DAClC,OAAKX,KAAKJ,QAAQ4B,GAEK,GAAMxB,KAAKgB,UAAUC,IAFV,CAAP,EAAOA,G,OAIlC,OAFMQ,EAAiB,SAEvB,GAAMzB,KAAKJ,QAAQ4B,GAASC,I,OAE5B,OAFA,SAEO,CAAP,EAAOR,G,OAEX,EACF,EA5DA,GCuEA,EA5DuE,SAAC,G,IACtE,IAAAS,cAAAA,OAAa,IAAG,KAAE,EAClB,IAAAC,cAAAA,OAAa,IAAG,GAAK,EACrB,IAAAC,gBAAAA,OAAe,IAAG,GAAI,EACtB,IAAAC,sBAAAA,OAAqB,IAAG,GAAI,EAEtBC,GACJC,MAAMC,QAAQN,GAAiBA,EAAgB,CAACA,IAChDO,OAAOC,SAEHC,EAAY,SAAC,G,IAAEhB,EAAK,QACxB,OAAO,sCACDA,EAAMiB,QAAU,CAClBC,QAASlB,EAAMiB,SAEbjB,EAAMmB,aAAe,CACvBC,uBAAwBpB,EAAMmB,cAE5BR,EAAeU,OAAS,GAAK,CAC/BC,QAASX,IAERX,EAAMuB,WAEb,EAEA,OAAO,IAAIC,EAAY,qBAAsB,QAAS,CACpDxC,SAAU,SAACc,GACLA,EAAIE,MAAMiB,QACZN,EAAec,SAAQ,SAAClB,GACtBmB,OAAOC,KAAK,SAAUpB,EAAe,CACnCW,QAASpB,EAAIE,MAAMiB,QAEvB,GAEJ,EAEAhC,KAAM,SAACa,GACL,GACEU,GACCC,GAAmBX,EAAIE,MAAMzB,MAC7BmC,GAAyBZ,EAAIE,MAAM4B,SACpC,CACA,IAAMC,EAAY,CAAC,SAAU/B,EAAIE,MAAM4B,SAAU9B,EAAIE,MAAMzB,KAAM,QAC9DuC,OAAOC,SACPe,KAAK,KAERJ,OAAOC,KAAK,QAASE,GAAW,WAC3Bb,EAAUlB,I,CAGnB,EAEAX,MAAO,SAACW,GACN4B,OAAOC,KAAK,QAAS7B,EAAIE,MAAMA,OAAO,WACjCgB,EAAUlB,IAEjB,GAEJ,C","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 { DestinationFactory } from './types'\nimport { Destination } from './destination'\n\ndeclare global {\n interface Window {\n gtag: Function\n }\n}\n\ntype GoogleTagManagerSettings = {\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\n/**\n * https://github.com/segmentio/analytics.js-integrations/blob/master/integrations/google-tag-manager/lib/index.js\n */\nconst googleTagManager: DestinationFactory<GoogleTagManagerSettings> = ({\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('Google Tag Manager', '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 googleTagManager\n"],"names":["name","version","actions","type","middleware","alias","this","_createMethod","group","identify","page","screen","track","isLoaded","load","console","debug","Promise","resolve","addMiddleware","push","fn","transform","ctx","applyDestinationMiddleware","event","modifiedEvent","cancel","retry","reason","action","transformedCtx","measurementId","trackAllPages","trackNamedPages","trackCategorizedPages","measurementIds","Array","isArray","filter","Boolean","baseEvent","userId","user_id","anonymousId","hightouch_anonymous_id","length","send_to","properties","Destination","forEach","window","gtag","category","eventName","join"],"sourceRoot":""}