@simplybusiness/services 0.21.5 → 0.21.7

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 (106) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/cjs/index.js +1198 -17
  3. package/dist/esm/index.js +1193 -4
  4. package/package.json +7 -6
  5. package/dist/cjs/address-lookup/index.js +0 -98
  6. package/dist/cjs/address-lookup/index.js.map +0 -1
  7. package/dist/cjs/address-lookup/types.js +0 -7
  8. package/dist/cjs/address-lookup/types.js.map +0 -1
  9. package/dist/cjs/airbrake/index.js +0 -45
  10. package/dist/cjs/airbrake/index.js.map +0 -1
  11. package/dist/cjs/index.js.map +0 -1
  12. package/dist/cjs/mocks/eventDefinitions.js +0 -90
  13. package/dist/cjs/mocks/eventDefinitions.js.map +0 -1
  14. package/dist/cjs/mocks/scripts-mock.js +0 -59
  15. package/dist/cjs/mocks/scripts-mock.js.map +0 -1
  16. package/dist/cjs/mocks/snowplowBrowserTrackerMock.js +0 -7
  17. package/dist/cjs/mocks/snowplowBrowserTrackerMock.js.map +0 -1
  18. package/dist/cjs/snowplow/Snowplow.js +0 -174
  19. package/dist/cjs/snowplow/Snowplow.js.map +0 -1
  20. package/dist/cjs/snowplow/SnowplowContext.js +0 -61
  21. package/dist/cjs/snowplow/SnowplowContext.js.map +0 -1
  22. package/dist/cjs/snowplow/constants.js +0 -13
  23. package/dist/cjs/snowplow/constants.js.map +0 -1
  24. package/dist/cjs/snowplow/contexts.js +0 -68
  25. package/dist/cjs/snowplow/contexts.js.map +0 -1
  26. package/dist/cjs/snowplow/event-definitions/base.js +0 -56
  27. package/dist/cjs/snowplow/event-definitions/base.js.map +0 -1
  28. package/dist/cjs/snowplow/event-definitions/index.js +0 -65
  29. package/dist/cjs/snowplow/event-definitions/index.js.map +0 -1
  30. package/dist/cjs/snowplow/event-definitions/intervention.js +0 -33
  31. package/dist/cjs/snowplow/event-definitions/intervention.js.map +0 -1
  32. package/dist/cjs/snowplow/event-definitions/personalised_cover.js +0 -122
  33. package/dist/cjs/snowplow/event-definitions/personalised_cover.js.map +0 -1
  34. package/dist/cjs/snowplow/event-definitions/qcp.js +0 -348
  35. package/dist/cjs/snowplow/event-definitions/qcp.js.map +0 -1
  36. package/dist/cjs/snowplow/event-definitions/questionnaire.js +0 -115
  37. package/dist/cjs/snowplow/event-definitions/questionnaire.js.map +0 -1
  38. package/dist/cjs/snowplow/event-definitions/redaction.js +0 -154
  39. package/dist/cjs/snowplow/event-definitions/redaction.js.map +0 -1
  40. package/dist/cjs/snowplow/event-definitions/referral.js +0 -37
  41. package/dist/cjs/snowplow/event-definitions/referral.js.map +0 -1
  42. package/dist/cjs/snowplow/getSnowplowConfig.js +0 -16
  43. package/dist/cjs/snowplow/getSnowplowConfig.js.map +0 -1
  44. package/dist/cjs/snowplow/index.js +0 -25
  45. package/dist/cjs/snowplow/index.js.map +0 -1
  46. package/dist/cjs/snowplow/types.js +0 -6
  47. package/dist/cjs/snowplow/types.js.map +0 -1
  48. package/dist/cjs/utils/index.js +0 -21
  49. package/dist/cjs/utils/index.js.map +0 -1
  50. package/dist/cjs/utils/isObject.js +0 -15
  51. package/dist/cjs/utils/isObject.js.map +0 -1
  52. package/dist/cjs/utils/testUtils.js +0 -43
  53. package/dist/cjs/utils/testUtils.js.map +0 -1
  54. package/dist/cjs/utils/text.js +0 -45
  55. package/dist/cjs/utils/text.js.map +0 -1
  56. package/dist/esm/address-lookup/index.js +0 -88
  57. package/dist/esm/address-lookup/index.js.map +0 -1
  58. package/dist/esm/address-lookup/types.js +0 -5
  59. package/dist/esm/address-lookup/types.js.map +0 -1
  60. package/dist/esm/airbrake/index.js +0 -35
  61. package/dist/esm/airbrake/index.js.map +0 -1
  62. package/dist/esm/index.js.map +0 -1
  63. package/dist/esm/mocks/eventDefinitions.js +0 -80
  64. package/dist/esm/mocks/eventDefinitions.js.map +0 -1
  65. package/dist/esm/mocks/scripts-mock.js +0 -49
  66. package/dist/esm/mocks/scripts-mock.js.map +0 -1
  67. package/dist/esm/mocks/snowplowBrowserTrackerMock.js +0 -6
  68. package/dist/esm/mocks/snowplowBrowserTrackerMock.js.map +0 -1
  69. package/dist/esm/snowplow/Snowplow.js +0 -169
  70. package/dist/esm/snowplow/Snowplow.js.map +0 -1
  71. package/dist/esm/snowplow/SnowplowContext.js +0 -43
  72. package/dist/esm/snowplow/SnowplowContext.js.map +0 -1
  73. package/dist/esm/snowplow/constants.js +0 -3
  74. package/dist/esm/snowplow/constants.js.map +0 -1
  75. package/dist/esm/snowplow/contexts.js +0 -47
  76. package/dist/esm/snowplow/contexts.js.map +0 -1
  77. package/dist/esm/snowplow/event-definitions/base.js +0 -66
  78. package/dist/esm/snowplow/event-definitions/base.js.map +0 -1
  79. package/dist/esm/snowplow/event-definitions/index.js +0 -36
  80. package/dist/esm/snowplow/event-definitions/index.js.map +0 -1
  81. package/dist/esm/snowplow/event-definitions/intervention.js +0 -23
  82. package/dist/esm/snowplow/event-definitions/intervention.js.map +0 -1
  83. package/dist/esm/snowplow/event-definitions/personalised_cover.js +0 -131
  84. package/dist/esm/snowplow/event-definitions/personalised_cover.js.map +0 -1
  85. package/dist/esm/snowplow/event-definitions/qcp.js +0 -339
  86. package/dist/esm/snowplow/event-definitions/qcp.js.map +0 -1
  87. package/dist/esm/snowplow/event-definitions/questionnaire.js +0 -106
  88. package/dist/esm/snowplow/event-definitions/questionnaire.js.map +0 -1
  89. package/dist/esm/snowplow/event-definitions/redaction.js +0 -144
  90. package/dist/esm/snowplow/event-definitions/redaction.js.map +0 -1
  91. package/dist/esm/snowplow/event-definitions/referral.js +0 -28
  92. package/dist/esm/snowplow/event-definitions/referral.js.map +0 -1
  93. package/dist/esm/snowplow/getSnowplowConfig.js +0 -7
  94. package/dist/esm/snowplow/getSnowplowConfig.js.map +0 -1
  95. package/dist/esm/snowplow/index.js +0 -8
  96. package/dist/esm/snowplow/index.js.map +0 -1
  97. package/dist/esm/snowplow/types.js +0 -3
  98. package/dist/esm/snowplow/types.js.map +0 -1
  99. package/dist/esm/utils/index.js +0 -4
  100. package/dist/esm/utils/index.js.map +0 -1
  101. package/dist/esm/utils/isObject.js +0 -5
  102. package/dist/esm/utils/isObject.js.map +0 -1
  103. package/dist/esm/utils/testUtils.js +0 -26
  104. package/dist/esm/utils/testUtils.js.map +0 -1
  105. package/dist/esm/utils/text.js +0 -25
  106. package/dist/esm/utils/text.js.map +0 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@simplybusiness/services",
3
3
  "license": "UNLICENSED",
4
- "version": "0.21.5",
4
+ "version": "0.21.7",
5
5
  "description": "Internal library for services",
6
6
  "repository": {
7
7
  "type": "git",
@@ -28,8 +28,8 @@
28
28
  "clean": "rm -rf dist",
29
29
  "build": "yarn run -T turbo run turbo:build",
30
30
  "prepack": "yarn run build",
31
- "build:cjs": "cd src && swc --config-file ../../.swcrc.production . -d ../dist/cjs -C module.type=commonjs",
32
- "build:esm": "cd src && swc --config-file ../../.swcrc.production . -d ../dist/esm -C module.type=es6",
31
+ "build:cjs": "node ../build.mjs cjs",
32
+ "build:esm": "node ../build.mjs esm",
33
33
  "build:types": "tsc --emitDeclarationOnly",
34
34
  "lint": "eslint .",
35
35
  "test": "NODE_OPTIONS=--experimental-vm-modules jest",
@@ -42,8 +42,7 @@
42
42
  "react-dom": "^18.2.0 || ^19.0.0"
43
43
  },
44
44
  "devDependencies": {
45
- "@swc/cli": "^0.6.0",
46
- "@swc/core": "^1.11.9",
45
+ "@swc/core": "^1.11.13",
47
46
  "@swc/jest": "^0.2.37",
48
47
  "@testing-library/dom": "^10.4.0",
49
48
  "@testing-library/jest-dom": "6.6.3",
@@ -53,6 +52,8 @@
53
52
  "@types/react-dom": "^18.3.5",
54
53
  "@typescript-eslint/eslint-plugin": "^8.26.1",
55
54
  "@typescript-eslint/parser": "^8.26.1",
55
+ "esbuild": "^0.25.1",
56
+ "esbuild-plugin-clean": "^1.0.1",
56
57
  "eslint": "^8.57.1",
57
58
  "eslint-config-airbnb": "^19.0.4",
58
59
  "eslint-config-prettier": "^9.1.0",
@@ -75,7 +76,7 @@
75
76
  },
76
77
  "dependencies": {
77
78
  "@airbrake/browser": "^2.1.9",
78
- "@simplybusiness/mobius": "^5.25.2",
79
+ "@simplybusiness/mobius": "^5.25.4",
79
80
  "@snowplow/browser-tracker": "^3.24.6",
80
81
  "classnames": "^2.5.1"
81
82
  },
@@ -1,98 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "AddressLookup", {
6
- enumerable: true,
7
- get: function() {
8
- return AddressLookup;
9
- }
10
- });
11
- function _define_property(obj, key, value) {
12
- if (key in obj) {
13
- Object.defineProperty(obj, key, {
14
- value: value,
15
- enumerable: true,
16
- configurable: true,
17
- writable: true
18
- });
19
- } else {
20
- obj[key] = value;
21
- }
22
- return obj;
23
- }
24
- // Loquate API constants
25
- const BASE_URL = "https://api.addressy.com/Capture/Interactive";
26
- const FIND_URL = `${BASE_URL}/Find/v1.00/json3.ws`;
27
- const RETRIEVE_URL = `${BASE_URL}/Retrieve/v1.2/json3.ws`;
28
- const COUNTRIES = [
29
- "GB"
30
- ]; // 2 or 3-letter ISO country codes
31
- const LIMIT = 20;
32
- class AddressLookup {
33
- static async fetchFromApi(url, handleResponse) {
34
- return new Promise((resolve, reject)=>{
35
- fetch(url).then((response)=>response.json()).then((data)=>resolve(handleResponse(data))).catch((error)=>reject(Error(error)));
36
- });
37
- }
38
- find(partialAddress) {
39
- return new Promise((resolve, reject)=>{
40
- fetch(`${this.findUrl}&Text=${partialAddress}`).then((response)=>response.json()).then((data)=>resolve(this.formatItems(data))).catch((error)=>reject(Error(error)));
41
- });
42
- }
43
- findById(id) {
44
- return new Promise((resolve, reject)=>{
45
- fetch(`${this.findUrl}&Container=${id}`).then((response)=>response.json()).then((data)=>resolve(this.formatItems(data))).catch((error)=>reject(Error(error)));
46
- });
47
- }
48
- get(id) {
49
- return new Promise((resolve, reject)=>{
50
- fetch(`${this.retrieveUrl}&Id=${id}`).then((response)=>response.json()).then((data)=>resolve(AddressLookup.formatUkAddress(data))).catch((error)=>reject(Error(error)));
51
- });
52
- }
53
- formatItems({ Items }) {
54
- if (!Items || !Array.isArray(Items)) {
55
- throw Error("No address found");
56
- }
57
- if (Items[0].Error) {
58
- throw Error(Items[0].Description);
59
- }
60
- return Items.map((item)=>({
61
- id: item.Id,
62
- label: `${item.Text}, ${item.Description}`,
63
- value: item.Text,
64
- // Add a callback to trigger secondary search
65
- // if the address type is not "Address"
66
- callback: item.Type === "Address" ? undefined : ()=>this.findById(item.Id)
67
- }));
68
- }
69
- static formatUkAddress({ Items }) {
70
- if (!Items || !Array.isArray(Items)) {
71
- throw Error("No address found");
72
- }
73
- if (Items[0].Error) {
74
- throw Error(Items[0].Description);
75
- }
76
- const { Line1, Line2, City, PostalCode } = Items[0];
77
- return {
78
- address_1: Line1,
79
- address_2: Line2,
80
- town: City,
81
- uk_postcode: PostalCode
82
- };
83
- }
84
- constructor({ apiKey, limit, countries }){
85
- _define_property(this, "apiKey", void 0);
86
- _define_property(this, "limit", void 0);
87
- _define_property(this, "findUrl", void 0);
88
- _define_property(this, "retrieveUrl", void 0);
89
- _define_property(this, "countries", void 0);
90
- this.apiKey = apiKey;
91
- this.limit = limit || LIMIT;
92
- this.countries = countries || COUNTRIES;
93
- this.findUrl = `${FIND_URL}?Key=${this.apiKey}&Limit=${this.limit}&Countries=${this.countries}`;
94
- this.retrieveUrl = `${RETRIEVE_URL}?Key=${this.apiKey}`;
95
- }
96
- }
97
-
98
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/address-lookup/index.ts"],"sourcesContent":["import {\n AddressError,\n AddressLookupConfig,\n FindAddressResponse,\n FindAddressResult,\n Option,\n Options,\n RetrieveAddressResponse,\n RetrieveAddressResult,\n} from \"./types\";\n\n// Loquate API constants\nconst BASE_URL = \"https://api.addressy.com/Capture/Interactive\";\nconst FIND_URL = `${BASE_URL}/Find/v1.00/json3.ws`;\nconst RETRIEVE_URL = `${BASE_URL}/Retrieve/v1.2/json3.ws`;\nconst COUNTRIES = [\"GB\"]; // 2 or 3-letter ISO country codes\nconst LIMIT = 20;\n\nexport class AddressLookup {\n private apiKey: string;\n\n private limit: number;\n\n private findUrl: string;\n\n private retrieveUrl: string;\n\n private countries: string[];\n\n constructor({ apiKey, limit, countries }: AddressLookupConfig) {\n this.apiKey = apiKey;\n this.limit = limit || LIMIT;\n this.countries = countries || COUNTRIES;\n this.findUrl = `${FIND_URL}?Key=${this.apiKey}&Limit=${this.limit}&Countries=${this.countries}`;\n this.retrieveUrl = `${RETRIEVE_URL}?Key=${this.apiKey}`;\n }\n\n private static async fetchFromApi(\n url: string,\n handleResponse: Function,\n ): Promise<unknown> {\n return new Promise((resolve, reject) => {\n fetch(url)\n .then(response => response.json())\n .then(data => resolve(handleResponse(data)))\n .catch(error => reject(Error(error)));\n });\n }\n\n public find(partialAddress: string): Promise<Options> {\n return new Promise((resolve, reject) => {\n fetch(`${this.findUrl}&Text=${partialAddress}`)\n .then(response => response.json())\n .then(data => resolve(this.formatItems(data)))\n .catch(error => reject(Error(error)));\n });\n }\n\n public findById(id: string): Promise<Options> {\n return new Promise((resolve, reject) => {\n fetch(`${this.findUrl}&Container=${id}`)\n .then(response => response.json())\n .then(data => resolve(this.formatItems(data)))\n .catch(error => reject(Error(error)));\n });\n }\n\n public get(id: string): Promise<Record<string, string>> {\n return new Promise((resolve, reject) => {\n fetch(`${this.retrieveUrl}&Id=${id}`)\n .then(response => response.json())\n .then(data => resolve(AddressLookup.formatUkAddress(data)))\n .catch(error => reject(Error(error)));\n });\n }\n\n private formatItems({ Items }: FindAddressResponse) {\n if (!Items || !Array.isArray(Items)) {\n throw Error(\"No address found\");\n }\n\n if ((Items[0] as AddressError).Error) {\n throw Error(Items[0].Description);\n }\n\n return (Items as FindAddressResult[]).map(\n (item): Option => ({\n id: item.Id,\n label: `${item.Text}, ${item.Description}`,\n value: item.Text,\n // Add a callback to trigger secondary search\n // if the address type is not \"Address\"\n callback:\n item.Type === \"Address\" ? undefined : () => this.findById(item.Id),\n }),\n );\n }\n\n private static formatUkAddress({ Items }: RetrieveAddressResponse) {\n if (!Items || !Array.isArray(Items)) {\n throw Error(\"No address found\");\n }\n\n if ((Items[0] as AddressError).Error) {\n throw Error((Items[0] as AddressError).Description);\n }\n\n const { Line1, Line2, City, PostalCode } = (\n Items as RetrieveAddressResult[]\n )[0];\n\n return {\n address_1: Line1,\n address_2: Line2,\n town: City,\n uk_postcode: PostalCode,\n };\n }\n}\n"],"names":["AddressLookup","BASE_URL","FIND_URL","RETRIEVE_URL","COUNTRIES","LIMIT","fetchFromApi","url","handleResponse","Promise","resolve","reject","fetch","then","response","json","data","catch","error","Error","find","partialAddress","findUrl","formatItems","findById","id","get","retrieveUrl","formatUkAddress","Items","Array","isArray","Description","map","item","Id","label","Text","value","callback","Type","undefined","Line1","Line2","City","PostalCode","address_1","address_2","town","uk_postcode","constructor","apiKey","limit","countries"],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- // Options: the target shape for responses to Combobox
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
-
7
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/address-lookup/types.ts"],"sourcesContent":["// Options: the target shape for responses to Combobox\nexport type Option = {\n id: string;\n label: string;\n value: string | number | boolean;\n callback?: () => Promise<Options>;\n};\n\nexport type OptionGroup = {\n heading: string;\n options: Option[];\n};\n\nexport type Options = Option[] | OptionGroup[];\n\n// Loquate API types\nexport type FindAddressResult = {\n Id: string;\n Type: string;\n Text: string;\n Highlight: string;\n Description: string;\n};\n\nexport type AddressError = {\n Cause: string;\n Error: string;\n Description: string;\n Resolution: string;\n};\n\nexport type FindAddressResponse = {\n Items: FindAddressResult[] | AddressError[];\n};\n\nexport type RetrieveAddressResult = {\n Id: string;\n Type: string;\n City: string;\n Line1: string;\n Line2: string;\n PostalCode: string;\n Label: string;\n};\n\nexport type RetrieveAddressResponse = {\n Items: RetrieveAddressResult[] | AddressError[];\n};\n\n// Class interface\nexport type AddressLookupConfig = {\n apiKey: string;\n limit?: number;\n countries?: string[];\n};\n"],"names":[],"mappings":"AAAA,sDAAsD"}
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "getAirbrake", {
6
- enumerable: true,
7
- get: function() {
8
- return getAirbrake;
9
- }
10
- });
11
- const _browser = require("@airbrake/browser");
12
- // https://simplybusiness.airbrake.io/projects/512949/edit#tab-access
13
- // This configuration is for embedded-qcp project
14
- const defaultProjectId = 512949;
15
- const defaultProjectKey = "4e25197d8faea61c10fbb97702200780";
16
- let notifierInstance;
17
- // Fake signature which logs to console
18
- const fakeAirbrake = {
19
- notify: console.error
20
- };
21
- // We don't want to send real alerts on non-quote domains
22
- const shouldUseAirbrake = ()=>{
23
- const { location } = globalThis;
24
- const isTest = process.env.NODE_ENV === "test";
25
- return isTest || (location === null || location === void 0 ? void 0 : location.hostname.indexOf("quote.")) > -1;
26
- };
27
- function getAirbrake(options) {
28
- const { projectId, projectKey, forceSend } = options;
29
- if (!forceSend || !shouldUseAirbrake()) {
30
- return fakeAirbrake;
31
- }
32
- if (!notifierInstance) {
33
- notifierInstance = new _browser.Notifier({
34
- projectId: projectId !== null && projectId !== void 0 ? projectId : defaultProjectId,
35
- projectKey: projectKey !== null && projectKey !== void 0 ? projectKey : defaultProjectKey,
36
- environment: process.env.NODE_ENV,
37
- instrumentation: {
38
- onerror: false
39
- }
40
- });
41
- }
42
- return notifierInstance;
43
- }
44
-
45
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/airbrake/index.ts"],"sourcesContent":["import { Notifier } from \"@airbrake/browser\";\n\n// https://simplybusiness.airbrake.io/projects/512949/edit#tab-access\n// This configuration is for embedded-qcp project\nconst defaultProjectId = 512949;\nconst defaultProjectKey = \"4e25197d8faea61c10fbb97702200780\";\n\nlet notifierInstance: Notifier | null;\n\n// Fake signature which logs to console\nconst fakeAirbrake = {\n notify: console.error,\n};\n\n// We don't want to send real alerts on non-quote domains\nconst shouldUseAirbrake = () => {\n const { location } = globalThis;\n const isTest = process.env.NODE_ENV === \"test\";\n\n return isTest || location?.hostname.indexOf(\"quote.\") > -1;\n};\n\nexport type GetAirbrakeOptions = {\n projectId?: number;\n projectKey?: string;\n forceSend?: boolean;\n};\n\nexport function getAirbrake(options: GetAirbrakeOptions) {\n const { projectId, projectKey, forceSend } = options;\n\n if (!forceSend || !shouldUseAirbrake()) {\n return fakeAirbrake;\n }\n\n if (!notifierInstance) {\n notifierInstance = new Notifier({\n projectId: projectId ?? defaultProjectId,\n projectKey: projectKey ?? defaultProjectKey,\n environment: process.env.NODE_ENV,\n instrumentation: {\n onerror: false,\n },\n });\n }\n\n return notifierInstance;\n}\n"],"names":["getAirbrake","defaultProjectId","defaultProjectKey","notifierInstance","fakeAirbrake","notify","console","error","shouldUseAirbrake","location","globalThis","isTest","process","env","NODE_ENV","hostname","indexOf","options","projectId","projectKey","forceSend","Notifier","environment","instrumentation","onerror"],"mappings":";;;;+BA4BgBA;;;eAAAA;;;yBA5BS;AAEzB,qEAAqE;AACrE,iDAAiD;AACjD,MAAMC,mBAAmB;AACzB,MAAMC,oBAAoB;AAE1B,IAAIC;AAEJ,uCAAuC;AACvC,MAAMC,eAAe;IACnBC,QAAQC,QAAQC,KAAK;AACvB;AAEA,yDAAyD;AACzD,MAAMC,oBAAoB;IACxB,MAAM,EAAEC,QAAQ,EAAE,GAAGC;IACrB,MAAMC,SAASC,QAAQC,GAAG,CAACC,QAAQ,KAAK;IAExC,OAAOH,UAAUF,CAAAA,qBAAAA,+BAAAA,SAAUM,QAAQ,CAACC,OAAO,CAAC,aAAY,CAAC;AAC3D;AAQO,SAAShB,YAAYiB,OAA2B;IACrD,MAAM,EAAEC,SAAS,EAAEC,UAAU,EAAEC,SAAS,EAAE,GAAGH;IAE7C,IAAI,CAACG,aAAa,CAACZ,qBAAqB;QACtC,OAAOJ;IACT;IAEA,IAAI,CAACD,kBAAkB;QACrBA,mBAAmB,IAAIkB,iBAAQ,CAAC;YAC9BH,WAAWA,sBAAAA,uBAAAA,YAAajB;YACxBkB,YAAYA,uBAAAA,wBAAAA,aAAcjB;YAC1BoB,aAAaV,QAAQC,GAAG,CAACC,QAAQ;YACjCS,iBAAiB;gBACfC,SAAS;YACX;QACF;IACF;IAEA,OAAOrB;AACT"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/index.tsx"],"sourcesContent":["export * from \"./address-lookup\";\nexport * from \"./airbrake\";\nexport * from \"./snowplow\";\n"],"names":[],"mappings":";;;;qBAAc;qBACA;qBACA"}
@@ -1,90 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- const _redaction = require("../snowplow/event-definitions/redaction");
12
- const _default = [
13
- {
14
- name: "navButtonClicked",
15
- type: "structured",
16
- makePayload: (params)=>{
17
- const { label } = params;
18
- return {
19
- category: "navigation",
20
- action: "thankyou_navigation_button_click",
21
- label,
22
- property: "test-property"
23
- };
24
- }
25
- },
26
- {
27
- name: "questionAnswered",
28
- type: "unstructured",
29
- makePayload: (params)=>{
30
- const { section, context } = params;
31
- const { question, answer } = (0, _redaction.redact)(params);
32
- return {
33
- schema: "iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-3",
34
- data: {
35
- site: context.site,
36
- page_index: 1,
37
- page_name: "quick_to_quote",
38
- submitted_from: "quick_to_quote_experiment",
39
- section_name: section,
40
- question,
41
- answer,
42
- vertical: context.vertical
43
- }
44
- };
45
- },
46
- contexts: [
47
- "distributionChannelContext"
48
- ]
49
- },
50
- {
51
- name: "primaryDetailSelected",
52
- type: "unstructured",
53
- makePayload: (params)=>{
54
- const { context, answer, vertical } = params;
55
- const { site } = context;
56
- let verticalName = vertical || context.vertical;
57
- if (verticalName.toLowerCase().indexOf("landlord") > -1) {
58
- verticalName = answer === "residential" ? "Landlord" : "Commercial landlord";
59
- }
60
- return {
61
- schema: "iglu:com.simplybusiness/primary_detail_selected/jsonschema/1-3-0",
62
- data: {
63
- site,
64
- vertical: verticalName,
65
- primary_detail: answer
66
- }
67
- };
68
- }
69
- },
70
- {
71
- name: "helpTextOpened",
72
- type: "unstructured",
73
- makePayload: (params)=>{
74
- const { primaryText, label, context, helpText } = params;
75
- return {
76
- schema: "iglu:com.simplybusiness/help_text_opened/jsonschema/1-1-0",
77
- data: {
78
- vertical: context.vertical,
79
- site: context.site,
80
- help_text: helpText,
81
- primary_text: primaryText,
82
- label,
83
- page_name: "quick_to_quote"
84
- }
85
- };
86
- }
87
- }
88
- ];
89
-
90
- //# sourceMappingURL=eventDefinitions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/mocks/eventDefinitions.ts"],"sourcesContent":["import { ParamsType } from \"../snowplow\";\nimport { redact } from \"../snowplow/event-definitions/redaction\";\n\nexport default [\n {\n name: \"navButtonClicked\",\n type: \"structured\",\n makePayload: (params: { label: \"next\" | \"back\" | \"redirect\" }) => {\n const { label } = params;\n return {\n category: \"navigation\",\n action: \"thankyou_navigation_button_click\",\n label,\n property: \"test-property\",\n };\n },\n },\n {\n name: \"questionAnswered\",\n type: \"unstructured\",\n makePayload: (params: ParamsType) => {\n const { section, context } = params as ParamsType;\n const { question, answer } = redact(params as ParamsType);\n\n return {\n schema:\n \"iglu:com.simplybusiness/form_question_answered/jsonschema/1-0-3\",\n data: {\n site: context.site,\n page_index: 1,\n page_name: \"quick_to_quote\",\n submitted_from: \"quick_to_quote_experiment\",\n section_name: section,\n question,\n answer,\n vertical: context.vertical,\n },\n };\n },\n contexts: [\"distributionChannelContext\"],\n },\n {\n name: \"primaryDetailSelected\",\n type: \"unstructured\",\n makePayload: (params: ParamsType) => {\n const { context, answer, vertical } = params as ParamsType;\n const { site } = context;\n let verticalName = vertical || context.vertical;\n\n if (verticalName.toLowerCase().indexOf(\"landlord\") > -1) {\n verticalName =\n answer === \"residential\" ? \"Landlord\" : \"Commercial landlord\";\n }\n\n return {\n schema:\n \"iglu:com.simplybusiness/primary_detail_selected/jsonschema/1-3-0\",\n data: {\n site,\n vertical: verticalName,\n primary_detail: answer,\n },\n };\n },\n },\n {\n name: \"helpTextOpened\",\n type: \"unstructured\",\n makePayload: (params: ParamsType) => {\n const { primaryText, label, context, helpText } = params as ParamsType;\n\n return {\n schema: \"iglu:com.simplybusiness/help_text_opened/jsonschema/1-1-0\",\n data: {\n vertical: context.vertical,\n site: context.site,\n help_text: helpText,\n primary_text: primaryText,\n label,\n page_name: \"quick_to_quote\",\n },\n };\n },\n },\n];\n"],"names":["name","type","makePayload","params","label","category","action","property","section","context","question","answer","redact","schema","data","site","page_index","page_name","submitted_from","section_name","vertical","contexts","verticalName","toLowerCase","indexOf","primary_detail","primaryText","helpText","help_text","primary_text"],"mappings":";;;;+BAGA;;;eAAA;;;2BAFuB;MAEvB,WAAe;IACb;QACEA,MAAM;QACNC,MAAM;QACNC,aAAa,CAACC;YACZ,MAAM,EAAEC,KAAK,EAAE,GAAGD;YAClB,OAAO;gBACLE,UAAU;gBACVC,QAAQ;gBACRF;gBACAG,UAAU;YACZ;QACF;IACF;IACA;QACEP,MAAM;QACNC,MAAM;QACNC,aAAa,CAACC;YACZ,MAAM,EAAEK,OAAO,EAAEC,OAAO,EAAE,GAAGN;YAC7B,MAAM,EAAEO,QAAQ,EAAEC,MAAM,EAAE,GAAGC,IAAAA,iBAAM,EAACT;YAEpC,OAAO;gBACLU,QACE;gBACFC,MAAM;oBACJC,MAAMN,QAAQM,IAAI;oBAClBC,YAAY;oBACZC,WAAW;oBACXC,gBAAgB;oBAChBC,cAAcX;oBACdE;oBACAC;oBACAS,UAAUX,QAAQW,QAAQ;gBAC5B;YACF;QACF;QACAC,UAAU;YAAC;SAA6B;IAC1C;IACA;QACErB,MAAM;QACNC,MAAM;QACNC,aAAa,CAACC;YACZ,MAAM,EAAEM,OAAO,EAAEE,MAAM,EAAES,QAAQ,EAAE,GAAGjB;YACtC,MAAM,EAAEY,IAAI,EAAE,GAAGN;YACjB,IAAIa,eAAeF,YAAYX,QAAQW,QAAQ;YAE/C,IAAIE,aAAaC,WAAW,GAAGC,OAAO,CAAC,cAAc,CAAC,GAAG;gBACvDF,eACEX,WAAW,gBAAgB,aAAa;YAC5C;YAEA,OAAO;gBACLE,QACE;gBACFC,MAAM;oBACJC;oBACAK,UAAUE;oBACVG,gBAAgBd;gBAClB;YACF;QACF;IACF;IACA;QACEX,MAAM;QACNC,MAAM;QACNC,aAAa,CAACC;YACZ,MAAM,EAAEuB,WAAW,EAAEtB,KAAK,EAAEK,OAAO,EAAEkB,QAAQ,EAAE,GAAGxB;YAElD,OAAO;gBACLU,QAAQ;gBACRC,MAAM;oBACJM,UAAUX,QAAQW,QAAQ;oBAC1BL,MAAMN,QAAQM,IAAI;oBAClBa,WAAWD;oBACXE,cAAcH;oBACdtB;oBACAa,WAAW;gBACb;YACF;QACF;IACF;CACD"}
@@ -1,59 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "pageData", {
6
- enumerable: true,
7
- get: function() {
8
- return pageData;
9
- }
10
- });
11
- const pageData = {
12
- scripts: [
13
- {
14
- metadata: {
15
- name: "snowplow"
16
- },
17
- props: {
18
- uid: "49a449d8aaa9dd58f90a623d4b9dbcae235bf92a",
19
- cookieDomain: "",
20
- // TODO: Change this url to "http://localhost:8000" for local development
21
- avalancheCollector: "https://snowplow-collector-staging.simplybusiness.com",
22
- appId: "us-chopin",
23
- includeGAContext: true,
24
- eventMethod: "post",
25
- postPath: "/com.simplybusiness/events",
26
- trackActivity: true,
27
- trackPageView: true,
28
- pageViewContext: {
29
- schema: "iglu:uk.co.simplybusiness/journey_context/jsonschema/1-0-0",
30
- data: {
31
- site: "simplybusiness_us",
32
- vertical: "usa",
33
- super_segment: "Unknown",
34
- primary_detail: "Lawn care services",
35
- journey_name: "usa",
36
- journey_id: "666ff79d90abbc3582e496da",
37
- page_step_name: "thank_you_ssr",
38
- page_step_depth: -1
39
- }
40
- },
41
- distributionChannelContext: {
42
- schema: "iglu:com.simplybusiness/distribution_channel_context/jsonschema/1-0-0",
43
- data: {
44
- service_channel_identifier: "simplybusiness_us"
45
- }
46
- },
47
- serviceChannelContext: {
48
- schema: "iglu:com.simplybusiness/service_channel_context/jsonschema/1-0-0",
49
- data: {
50
- service_channel_identifier: "simplybusiness_us"
51
- }
52
- },
53
- forceSecureTracker: true
54
- }
55
- }
56
- ]
57
- };
58
-
59
- //# sourceMappingURL=scripts-mock.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/mocks/scripts-mock.ts"],"sourcesContent":["export const pageData = {\n scripts: [\n {\n metadata: { name: \"snowplow\" },\n props: {\n uid: \"49a449d8aaa9dd58f90a623d4b9dbcae235bf92a\",\n cookieDomain: \"\",\n // TODO: Change this url to \"http://localhost:8000\" for local development\n avalancheCollector:\n \"https://snowplow-collector-staging.simplybusiness.com\",\n appId: \"us-chopin\",\n includeGAContext: true,\n eventMethod: \"post\",\n postPath: \"/com.simplybusiness/events\",\n trackActivity: true,\n trackPageView: true,\n pageViewContext: {\n schema: \"iglu:uk.co.simplybusiness/journey_context/jsonschema/1-0-0\",\n data: {\n site: \"simplybusiness_us\",\n vertical: \"usa\",\n super_segment: \"Unknown\",\n primary_detail: \"Lawn care services\",\n journey_name: \"usa\",\n journey_id: \"666ff79d90abbc3582e496da\",\n page_step_name: \"thank_you_ssr\",\n page_step_depth: -1,\n },\n },\n distributionChannelContext: {\n schema:\n \"iglu:com.simplybusiness/distribution_channel_context/jsonschema/1-0-0\",\n data: { service_channel_identifier: \"simplybusiness_us\" },\n },\n serviceChannelContext: {\n schema:\n \"iglu:com.simplybusiness/service_channel_context/jsonschema/1-0-0\",\n data: { service_channel_identifier: \"simplybusiness_us\" },\n },\n forceSecureTracker: true,\n },\n },\n ],\n};\n"],"names":["pageData","scripts","metadata","name","props","uid","cookieDomain","avalancheCollector","appId","includeGAContext","eventMethod","postPath","trackActivity","trackPageView","pageViewContext","schema","data","site","vertical","super_segment","primary_detail","journey_name","journey_id","page_step_name","page_step_depth","distributionChannelContext","service_channel_identifier","serviceChannelContext","forceSecureTracker"],"mappings":";;;;+BAAaA;;;eAAAA;;;AAAN,MAAMA,WAAW;IACtBC,SAAS;QACP;YACEC,UAAU;gBAAEC,MAAM;YAAW;YAC7BC,OAAO;gBACLC,KAAK;gBACLC,cAAc;gBACd,yEAAyE;gBACzEC,oBACE;gBACFC,OAAO;gBACPC,kBAAkB;gBAClBC,aAAa;gBACbC,UAAU;gBACVC,eAAe;gBACfC,eAAe;gBACfC,iBAAiB;oBACfC,QAAQ;oBACRC,MAAM;wBACJC,MAAM;wBACNC,UAAU;wBACVC,eAAe;wBACfC,gBAAgB;wBAChBC,cAAc;wBACdC,YAAY;wBACZC,gBAAgB;wBAChBC,iBAAiB,CAAC;oBACpB;gBACF;gBACAC,4BAA4B;oBAC1BV,QACE;oBACFC,MAAM;wBAAEU,4BAA4B;oBAAoB;gBAC1D;gBACAC,uBAAuB;oBACrBZ,QACE;oBACFC,MAAM;wBAAEU,4BAA4B;oBAAoB;gBAC1D;gBACAE,oBAAoB;YACtB;QACF;KACD;AACH"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Mocking this module prevents requests being sent to
3
- * Snowplow which causes CORS errors in the test enviornment.
4
- */ "use strict";
5
- jest.mock("@snowplow/browser-tracker");
6
-
7
- //# sourceMappingURL=snowplowBrowserTrackerMock.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/mocks/snowplowBrowserTrackerMock.js"],"sourcesContent":["/**\n * Mocking this module prevents requests being sent to\n * Snowplow which causes CORS errors in the test enviornment.\n */\n\njest.mock(\"@snowplow/browser-tracker\");\n"],"names":["jest","mock"],"mappings":"AAAA;;;CAGC;AAEDA,KAAKC,IAAI,CAAC"}
@@ -1,174 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "Snowplow", {
6
- enumerable: true,
7
- get: function() {
8
- return Snowplow;
9
- }
10
- });
11
- const _browsertracker = require("@snowplow/browser-tracker");
12
- const _contexts = require("./contexts");
13
- function _define_property(obj, key, value) {
14
- if (key in obj) {
15
- Object.defineProperty(obj, key, {
16
- value: value,
17
- enumerable: true,
18
- configurable: true,
19
- writable: true
20
- });
21
- } else {
22
- obj[key] = value;
23
- }
24
- return obj;
25
- }
26
- class Snowplow {
27
- setContexts(contexts) {
28
- this.contexts = (0, _contexts.updateIdentityContext)(contexts, this.uid);
29
- this.pvContext = Object.values(this.contexts);
30
- this.structContext = (0, _contexts.makeContexts)([
31
- "distributionChannelContext",
32
- "serviceChannelContext"
33
- ], this.contexts);
34
- return this;
35
- }
36
- // Send a page view event
37
- async trackView(event) {
38
- if (this.trackPageView) {
39
- await (0, _browsertracker.trackPageView)({
40
- ...event,
41
- context: this.pvContext
42
- }, [
43
- this.avalancheTrackerName
44
- ]);
45
- }
46
- return this;
47
- }
48
- // Send a structured event with contexts
49
- async trackEvent(event) {
50
- await (0, _browsertracker.trackStructEvent)({
51
- ...event,
52
- context: this.structContext
53
- }, [
54
- this.bronzeAvalancheTrackerName
55
- ]);
56
- return this;
57
- }
58
- // Send a custom event with defined schema and optional contexts
59
- async trackUnstructEvent(event, contexts) {
60
- if (!event) {
61
- return this;
62
- }
63
- if (contexts && Array.isArray(contexts) && contexts.length > 0) {
64
- // Add context to the event
65
- const context = (0, _contexts.makeContexts)(contexts, this.contexts);
66
- await (0, _browsertracker.trackSelfDescribingEvent)({
67
- event,
68
- context
69
- }, [
70
- this.avalancheTrackerName
71
- ]);
72
- } else {
73
- await (0, _browsertracker.trackSelfDescribingEvent)({
74
- event
75
- }, [
76
- this.avalancheTrackerName
77
- ]);
78
- }
79
- return this;
80
- }
81
- addEventHandlers(eventDefinitions) {
82
- // Add server context to makePayload functions
83
- const context = this.serverData;
84
- eventDefinitions.forEach(({ name, type, makePayload, contexts })=>{
85
- // Convert type into relevant function
86
- if (type === "structured") {
87
- this.addEventHandler(name, (params)=>{
88
- this.trackEvent(makePayload({
89
- ...params,
90
- context
91
- }));
92
- });
93
- } else {
94
- this.addEventHandler(name, (params)=>{
95
- const payload = makePayload({
96
- ...params,
97
- context
98
- });
99
- if (contexts && Array.isArray(contexts) && contexts.length > 0) {
100
- this.trackUnstructEvent(payload, contexts);
101
- } else {
102
- this.trackUnstructEvent(payload);
103
- }
104
- });
105
- }
106
- });
107
- return this;
108
- }
109
- addEventHandler(name, handler) {
110
- this.eventHandlers[name] = handler;
111
- return this;
112
- }
113
- removeEventHandler(name) {
114
- delete this.eventHandlers[name];
115
- return this;
116
- }
117
- trigger(name, params) {
118
- const handler = this.eventHandlers[name];
119
- if (Object.prototype.hasOwnProperty.call(this.eventHandlers, name) && typeof handler === "function") {
120
- handler(params);
121
- }
122
- return this;
123
- }
124
- static getInstance(props) {
125
- if (!Snowplow.instance) {
126
- Snowplow.instance = new Snowplow(props);
127
- }
128
- return Snowplow.instance;
129
- }
130
- constructor(props){
131
- var _props_pageViewContext;
132
- _define_property(this, "avalancheTrackerName", "sb-ava");
133
- _define_property(this, "bronzeAvalancheTrackerName", "sb-ava-br");
134
- _define_property(this, "pvAvalancheTrackerName", "sb-ava-pv");
135
- _define_property(this, "uid", "");
136
- _define_property(this, "trackPageView", false);
137
- _define_property(this, "contexts", {});
138
- _define_property(this, "pvContext", []);
139
- _define_property(this, "structContext", []);
140
- _define_property(this, "serverData", {});
141
- _define_property(this, "eventHandlers", {});
142
- if (!props) return;
143
- const { appId, cookieDomain, avalancheCollector, eventMethod, uid, postPath, trackPageView: tpv } = props;
144
- this.uid = uid;
145
- this.trackPageView = tpv;
146
- this.serverData = (props === null || props === void 0 ? void 0 : (_props_pageViewContext = props.pageViewContext) === null || _props_pageViewContext === void 0 ? void 0 : _props_pageViewContext.data) || {};
147
- // Set options
148
- const stateStorageStrategy = "cookieAndLocalStorage";
149
- const baseOptions = {
150
- appId,
151
- cookieDomain,
152
- eventMethod,
153
- stateStorageStrategy,
154
- postPath
155
- };
156
- // Initialize trackers
157
- (0, _browsertracker.newTracker)(this.avalancheTrackerName, avalancheCollector, baseOptions);
158
- (0, _browsertracker.newTracker)(this.bronzeAvalancheTrackerName, avalancheCollector, baseOptions);
159
- // Page view tracker
160
- (0, _browsertracker.newTracker)(this.pvAvalancheTrackerName, avalancheCollector, {
161
- ...baseOptions,
162
- eventMethod: eventMethod === "post" ? "beacon" : eventMethod
163
- });
164
- (0, _browsertracker.setCookiePath)("/");
165
- if (uid) {
166
- (0, _browsertracker.setUserId)(uid);
167
- }
168
- // Create a singleton instance
169
- Snowplow.instance = this;
170
- }
171
- }
172
- _define_property(Snowplow, "instance", void 0);
173
-
174
- //# sourceMappingURL=Snowplow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/snowplow/Snowplow.ts"],"sourcesContent":["import {\n PageViewEvent,\n StructuredEvent,\n TrackerConfiguration,\n newTracker,\n setCookiePath,\n setUserId,\n trackPageView,\n trackSelfDescribingEvent,\n trackStructEvent,\n} from \"@snowplow/browser-tracker\";\nimport { makeContexts, updateIdentityContext } from \"./contexts\";\nimport { EventDefinition, SerialisedEvent, TrackingProps } from \"./types\";\n\nexport type FrontOfficeStructuredEvent = StructuredEvent & {\n serviceChannelIdentifier: string;\n};\n\n/**\n * This class is an abstraction which wraps Snowplow\n * and exposes common methods with other services:\n * - trackEvent : sends a standard payload\n * - trackUnstructEvent : sends a payload for custom schema\n */\nexport class Snowplow {\n avalancheTrackerName = \"sb-ava\";\n\n bronzeAvalancheTrackerName = \"sb-ava-br\";\n\n pvAvalancheTrackerName = \"sb-ava-pv\";\n\n uid: unknown = \"\";\n\n trackPageView: boolean = false;\n\n contexts: Record<string, SerialisedEvent> = {};\n\n pvContext: SerialisedEvent[] = [];\n\n structContext: SerialisedEvent[] = [];\n\n serverData: Record<string, unknown> = {};\n\n eventHandlers: Record<string, (params?: Record<string, unknown>) => void> =\n {};\n\n static instance: Snowplow | undefined;\n\n constructor(props?: TrackingProps) {\n if (!props) return;\n\n const {\n appId,\n cookieDomain,\n avalancheCollector,\n eventMethod,\n uid,\n postPath,\n trackPageView: tpv,\n } = props;\n this.uid = uid;\n this.trackPageView = tpv;\n this.serverData = props?.pageViewContext?.data || {};\n\n // Set options\n const stateStorageStrategy = \"cookieAndLocalStorage\";\n const baseOptions: TrackerConfiguration = {\n appId,\n cookieDomain,\n eventMethod,\n stateStorageStrategy,\n postPath,\n };\n // Initialize trackers\n newTracker(this.avalancheTrackerName, avalancheCollector, baseOptions);\n\n newTracker(\n this.bronzeAvalancheTrackerName,\n avalancheCollector,\n baseOptions,\n );\n\n // Page view tracker\n newTracker(this.pvAvalancheTrackerName, avalancheCollector, {\n ...baseOptions,\n eventMethod: eventMethod === \"post\" ? \"beacon\" : eventMethod,\n });\n\n setCookiePath(\"/\");\n if (uid) {\n setUserId(uid);\n }\n // Create a singleton instance\n Snowplow.instance = this;\n }\n\n setContexts(contexts: Record<string, SerialisedEvent>) {\n this.contexts = updateIdentityContext(contexts, this.uid);\n this.pvContext = Object.values(this.contexts);\n this.structContext = makeContexts(\n [\"distributionChannelContext\", \"serviceChannelContext\"],\n this.contexts,\n );\n return this;\n }\n\n // Send a page view event\n async trackView(event?: PageViewEvent) {\n if (this.trackPageView) {\n await trackPageView({ ...event, context: this.pvContext }, [\n this.avalancheTrackerName,\n ]);\n }\n return this;\n }\n\n // Send a structured event with contexts\n async trackEvent(event: StructuredEvent) {\n await trackStructEvent({ ...event, context: this.structContext }, [\n this.bronzeAvalancheTrackerName,\n ]);\n return this;\n }\n\n // Send a custom event with defined schema and optional contexts\n async trackUnstructEvent(event: SerialisedEvent, contexts?: string[]) {\n if (!event) {\n return this;\n }\n\n if (contexts && Array.isArray(contexts) && contexts.length > 0) {\n // Add context to the event\n const context = makeContexts(contexts!, this.contexts);\n\n await trackSelfDescribingEvent({ event, context }, [\n this.avalancheTrackerName,\n ]);\n } else {\n await trackSelfDescribingEvent({ event }, [this.avalancheTrackerName]);\n }\n return this;\n }\n\n addEventHandlers(eventDefinitions: EventDefinition[]) {\n // Add server context to makePayload functions\n const context = this.serverData;\n\n eventDefinitions.forEach(({ name, type, makePayload, contexts }) => {\n // Convert type into relevant function\n if (type === \"structured\") {\n this.addEventHandler(name, (params?: Record<string, unknown>) => {\n this.trackEvent(\n makePayload({\n ...params,\n context,\n }) as StructuredEvent,\n );\n });\n } else {\n this.addEventHandler(name, (params?: Record<string, unknown>) => {\n const payload = makePayload({\n ...params,\n context,\n }) as SerialisedEvent;\n\n if (contexts && Array.isArray(contexts) && contexts.length > 0) {\n this.trackUnstructEvent(payload, contexts);\n } else {\n this.trackUnstructEvent(payload);\n }\n });\n }\n });\n return this;\n }\n\n private addEventHandler(\n name: string,\n handler: (params?: Record<string, unknown>) => void,\n ) {\n this.eventHandlers[name] = handler;\n return this;\n }\n\n private removeEventHandler(name: string) {\n delete this.eventHandlers[name];\n return this;\n }\n\n trigger(name: string, params?: Record<string, unknown>) {\n const handler = this.eventHandlers[name];\n\n if (\n Object.prototype.hasOwnProperty.call(this.eventHandlers, name) &&\n typeof handler === \"function\"\n ) {\n handler(params);\n }\n return this;\n }\n\n static getInstance(props?: TrackingProps) {\n if (!Snowplow.instance) {\n Snowplow.instance = new Snowplow(props);\n }\n return Snowplow.instance;\n }\n}\n"],"names":["Snowplow","setContexts","contexts","updateIdentityContext","uid","pvContext","Object","values","structContext","makeContexts","trackView","event","trackPageView","context","avalancheTrackerName","trackEvent","trackStructEvent","bronzeAvalancheTrackerName","trackUnstructEvent","Array","isArray","length","trackSelfDescribingEvent","addEventHandlers","eventDefinitions","serverData","forEach","name","type","makePayload","addEventHandler","params","payload","handler","eventHandlers","removeEventHandler","trigger","prototype","hasOwnProperty","call","getInstance","props","instance","constructor","pvAvalancheTrackerName","appId","cookieDomain","avalancheCollector","eventMethod","postPath","tpv","pageViewContext","data","stateStorageStrategy","baseOptions","newTracker","setCookiePath","setUserId"],"mappings":"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"}