@ht-sdks/events-sdk-js-browser 1.5.6 → 1.5.8
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.map +1 -1
- package/dist/cjs/core/user/tld.js +1 -1
- package/dist/cjs/core/user/tld.js.map +1 -1
- package/dist/cjs/generated/version.js +1 -1
- package/dist/cjs/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.map +1 -1
- package/dist/pkg/core/user/tld.js +1 -1
- package/dist/pkg/core/user/tld.js.map +1 -1
- package/dist/pkg/generated/version.js +1 -1
- package/dist/pkg/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/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/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/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/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/package.json +2 -1
- package/src/browser/dedupe-plugin-likes.ts +62 -0
- package/src/browser/index.ts +70 -11
- package/src/core/analytics/index.ts +8 -1
- package/src/core/user/tld.ts +1 -1
- package/src/generated/version.ts +1 -1
- package/src/index.ts +1 -0
- 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/types/meta-capi-param-builder-clientjs.d.ts +32 -0
package/dist/umd/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","mappings":"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","sources":["webpack://@ht-sdks/events-sdk-js-browser/webpack/universalModuleDefinition","webpack://@ht-sdks/events-sdk-js-browser/webpack/runtime/create fake namespace object","webpack://@ht-sdks/events-sdk-js-browser/webpack/runtime/load script","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/address.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/alias.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/clone.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/delete.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/facade.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/group.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/identify.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/index.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/is-email.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/is-enabled.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/page.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/screen.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/track.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/isodate-traverse/lib/index.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/isodate/lib/index.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/inherits/inherits_browser.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/new-date/lib/index.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/new-date/lib/milliseconds.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/new-date/lib/seconds.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/obj-case/index.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/spark-md5/spark-md5.js","webpack://@ht-sdks/events-sdk-js-browser/./src/core/connection/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/constants/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/stats/remote-metrics.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/stats/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/context/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/environment/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/query-string/gracefulDecodeURIComponent.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/generated/version.ts","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/unfetch/dist/unfetch.mjs","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/fetch.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/get-global.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/global-analytics-helper.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/load-script.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/merged-options.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/p-while.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/parse-cdn.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/priority-queue/persisted.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/to-facade.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/version-type.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/middleware/index.ts","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/callback/index.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/logger/index.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/context/index.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/emitter/index.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/priority-queue/index.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/priority-queue/backoff.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/queue/delivery.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/stats/index.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/validation/helpers.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@lukeed/uuid/dist/index.mjs","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/dset/dist/index.mjs","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/tslib/tslib.es6.mjs","webpack://@ht-sdks/events-sdk-js-browser/webpack/bootstrap","webpack://@ht-sdks/events-sdk-js-browser/webpack/runtime/compat get default export","webpack://@ht-sdks/events-sdk-js-browser/webpack/runtime/define property getters","webpack://@ht-sdks/events-sdk-js-browser/webpack/runtime/ensure chunk","webpack://@ht-sdks/events-sdk-js-browser/webpack/runtime/get javascript chunk filename","webpack://@ht-sdks/events-sdk-js-browser/webpack/runtime/hasOwnProperty shorthand","webpack://@ht-sdks/events-sdk-js-browser/webpack/runtime/make namespace object","webpack://@ht-sdks/events-sdk-js-browser/webpack/runtime/publicPath","webpack://@ht-sdks/events-sdk-js-browser/webpack/runtime/jsonp chunk loading","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/get-process-env.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/arguments-resolver/index.ts","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/analytics/dispatch.js","webpack://@ht-sdks/events-sdk-js-browser/./src/core/page/get-page-context.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/page/add-page-context.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/pick.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/events/index.ts","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/queue/event-queue.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/task/task-group.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/utils/is-thenable.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/utils/group-by.js","webpack://@ht-sdks/events-sdk-js-browser/./src/core/queue/event-queue.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/bind-all.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/storage/types.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/storage/universalStorage.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/storage/memoryStorage.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/storage/settings.ts","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/js-cookie/dist/js.cookie.mjs","webpack://@ht-sdks/events-sdk-js-browser/./src/core/user/tld.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/storage/cookieStorage.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/storage/localStorage.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/storage/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/user/vendor/crypto-es/lib/core.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/user/vendor/crypto-es/lib/md5.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/user/vendor/crypto-es/lib/enc-base64.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/user/vendor/crypto-es/lib/evpkdf.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/user/vendor/crypto-es/lib/cipher-core.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/user/vendor/crypto-es/lib/aes.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/user/migrate.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/session/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/user/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/buffer/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/is-thenable.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/analytics/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/http-cookies/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/env-enrichment/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/client-hints/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/remote-loader/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/hightouchio/batched-dispatcher.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/on-page-change.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/hightouchio/normalize.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/hightouchio/schedule-flush.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/hightouchio/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/hightouchio/fetch-dispatcher.ts","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/validation/errors.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/validation/assertions.js","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/validation/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/inspector/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/destinations/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/browser/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/create-deferred.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/browser/browser-umd.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"HtEvents\"] = factory();\n\telse\n\t\troot[\"HtEvents\"] = factory();\n})(self, function() {\nreturn ","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"@ht-sdks/events-sdk-js-browser:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar obj_case_1 = __importDefault(require(\"obj-case\"));\nfunction trait(a, b) {\n return function () {\n var traits = this.traits();\n var props = this.properties ? this.properties() : {};\n return (obj_case_1.default(traits, \"address.\" + a) ||\n obj_case_1.default(traits, a) ||\n (b ? obj_case_1.default(traits, \"address.\" + b) : null) ||\n (b ? obj_case_1.default(traits, b) : null) ||\n obj_case_1.default(props, \"address.\" + a) ||\n obj_case_1.default(props, a) ||\n (b ? obj_case_1.default(props, \"address.\" + b) : null) ||\n (b ? obj_case_1.default(props, b) : null));\n };\n}\nfunction default_1(proto) {\n proto.zip = trait(\"postalCode\", \"zip\");\n proto.country = trait(\"country\");\n proto.street = trait(\"street\");\n proto.state = trait(\"state\");\n proto.city = trait(\"city\");\n proto.region = trait(\"region\");\n}\nexports.default = default_1;\n//# sourceMappingURL=address.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Alias = void 0;\nvar inherits_1 = __importDefault(require(\"inherits\"));\nvar facade_1 = require(\"./facade\");\nfunction Alias(dictionary, opts) {\n facade_1.Facade.call(this, dictionary, opts);\n}\nexports.Alias = Alias;\ninherits_1.default(Alias, facade_1.Facade);\nAlias.prototype.action = function () {\n return \"alias\";\n};\nAlias.prototype.type = Alias.prototype.action;\nAlias.prototype.previousId = function () {\n return this.field(\"previousId\") || this.field(\"from\");\n};\nAlias.prototype.from = Alias.prototype.previousId;\nAlias.prototype.userId = function () {\n return this.field(\"userId\") || this.field(\"to\");\n};\nAlias.prototype.to = Alias.prototype.userId;\n//# sourceMappingURL=alias.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.clone = void 0;\nfunction clone(properties) {\n if (Object.prototype.toString.call(properties) === '[object Object]') {\n var temp = {};\n for (var key in properties) {\n temp[key] = clone(properties[key]);\n }\n return temp;\n }\n else if (Array.isArray(properties)) {\n return properties.map(clone);\n }\n else {\n return properties;\n }\n}\nexports.clone = clone;\n//# sourceMappingURL=clone.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Delete = void 0;\nvar inherits_1 = __importDefault(require(\"inherits\"));\nvar facade_1 = require(\"./facade\");\nfunction Delete(dictionary, opts) {\n facade_1.Facade.call(this, dictionary, opts);\n}\nexports.Delete = Delete;\ninherits_1.default(Delete, facade_1.Facade);\nDelete.prototype.type = function () {\n return \"delete\";\n};\n//# sourceMappingURL=delete.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Facade = void 0;\nvar address_1 = __importDefault(require(\"./address\"));\nvar clone_1 = require(\"./clone\");\nvar is_enabled_1 = __importDefault(require(\"./is-enabled\"));\nvar new_date_1 = __importDefault(require(\"new-date\"));\nvar obj_case_1 = __importDefault(require(\"obj-case\"));\nvar isodate_traverse_1 = __importDefault(require(\"@segment/isodate-traverse\"));\nfunction Facade(obj, opts) {\n opts = opts || {};\n this.raw = clone_1.clone(obj);\n if (!(\"clone\" in opts))\n opts.clone = true;\n if (opts.clone)\n obj = clone_1.clone(obj);\n if (!(\"traverse\" in opts))\n opts.traverse = true;\n if (!(\"timestamp\" in obj))\n obj.timestamp = new Date();\n else\n obj.timestamp = new_date_1.default(obj.timestamp);\n if (opts.traverse)\n isodate_traverse_1.default(obj);\n this.opts = opts;\n this.obj = obj;\n}\nexports.Facade = Facade;\nvar f = Facade.prototype;\nf.proxy = function (field) {\n var fields = field.split(\".\");\n field = fields.shift();\n var obj = this[field] || this.field(field);\n if (!obj)\n return obj;\n if (typeof obj === \"function\")\n obj = obj.call(this) || {};\n if (fields.length === 0)\n return this.opts.clone ? transform(obj) : obj;\n obj = obj_case_1.default(obj, fields.join(\".\"));\n return this.opts.clone ? transform(obj) : obj;\n};\nf.field = function (field) {\n var obj = this.obj[field];\n return this.opts.clone ? transform(obj) : obj;\n};\nFacade.proxy = function (field) {\n return function () {\n return this.proxy(field);\n };\n};\nFacade.field = function (field) {\n return function () {\n return this.field(field);\n };\n};\nFacade.multi = function (path) {\n return function () {\n var multi = this.proxy(path + \"s\");\n if (Array.isArray(multi))\n return multi;\n var one = this.proxy(path);\n if (one)\n one = [this.opts.clone ? clone_1.clone(one) : one];\n return one || [];\n };\n};\nFacade.one = function (path) {\n return function () {\n var one = this.proxy(path);\n if (one)\n return one;\n var multi = this.proxy(path + \"s\");\n if (Array.isArray(multi))\n return multi[0];\n };\n};\nf.json = function () {\n var ret = this.opts.clone ? clone_1.clone(this.obj) : this.obj;\n if (this.type)\n ret.type = this.type();\n return ret;\n};\nf.rawEvent = function () {\n return this.raw;\n};\nf.options = function (integration) {\n var obj = this.obj.options || this.obj.context || {};\n var options = this.opts.clone ? clone_1.clone(obj) : obj;\n if (!integration)\n return options;\n if (!this.enabled(integration))\n return;\n var integrations = this.integrations();\n var value = integrations[integration] || obj_case_1.default(integrations, integration);\n if (typeof value !== \"object\")\n value = obj_case_1.default(this.options(), integration);\n return typeof value === \"object\" ? value : {};\n};\nf.context = f.options;\nf.enabled = function (integration) {\n var allEnabled = this.proxy(\"options.providers.all\");\n if (typeof allEnabled !== \"boolean\")\n allEnabled = this.proxy(\"options.all\");\n if (typeof allEnabled !== \"boolean\")\n allEnabled = this.proxy(\"integrations.all\");\n if (typeof allEnabled !== \"boolean\")\n allEnabled = true;\n var enabled = allEnabled && is_enabled_1.default(integration);\n var options = this.integrations();\n if (options.providers && options.providers.hasOwnProperty(integration)) {\n enabled = options.providers[integration];\n }\n if (options.hasOwnProperty(integration)) {\n var settings = options[integration];\n if (typeof settings === \"boolean\") {\n enabled = settings;\n }\n else {\n enabled = true;\n }\n }\n return !!enabled;\n};\nf.integrations = function () {\n return (this.obj.integrations || this.proxy(\"options.providers\") || this.options());\n};\nf.active = function () {\n var active = this.proxy(\"options.active\");\n if (active === null || active === undefined)\n active = true;\n return active;\n};\nf.anonymousId = function () {\n return this.field(\"anonymousId\") || this.field(\"sessionId\");\n};\nf.sessionId = f.anonymousId;\nf.groupId = Facade.proxy(\"options.groupId\");\nf.traits = function (aliases) {\n var ret = this.proxy(\"options.traits\") || {};\n var id = this.userId();\n aliases = aliases || {};\n if (id)\n ret.id = id;\n for (var alias in aliases) {\n var value = this[alias] == null\n ? this.proxy(\"options.traits.\" + alias)\n : this[alias]();\n if (value == null)\n continue;\n ret[aliases[alias]] = value;\n delete ret[alias];\n }\n return ret;\n};\nf.library = function () {\n var library = this.proxy(\"options.library\");\n if (!library)\n return { name: \"unknown\", version: null };\n if (typeof library === \"string\")\n return { name: library, version: null };\n return library;\n};\nf.device = function () {\n var device = this.proxy(\"context.device\");\n if (typeof device !== \"object\" || device === null) {\n device = {};\n }\n var library = this.library().name;\n if (device.type)\n return device;\n if (library.indexOf(\"ios\") > -1)\n device.type = \"ios\";\n if (library.indexOf(\"android\") > -1)\n device.type = \"android\";\n return device;\n};\nf.userAgent = Facade.proxy(\"context.userAgent\");\nf.timezone = Facade.proxy(\"context.timezone\");\nf.timestamp = Facade.field(\"timestamp\");\nf.channel = Facade.field(\"channel\");\nf.ip = Facade.proxy(\"context.ip\");\nf.userId = Facade.field(\"userId\");\naddress_1.default(f);\nfunction transform(obj) {\n return clone_1.clone(obj);\n}\n//# sourceMappingURL=facade.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Group = void 0;\nvar inherits_1 = __importDefault(require(\"inherits\"));\nvar is_email_1 = __importDefault(require(\"./is-email\"));\nvar new_date_1 = __importDefault(require(\"new-date\"));\nvar facade_1 = require(\"./facade\");\nfunction Group(dictionary, opts) {\n facade_1.Facade.call(this, dictionary, opts);\n}\nexports.Group = Group;\ninherits_1.default(Group, facade_1.Facade);\nvar g = Group.prototype;\ng.action = function () {\n return \"group\";\n};\ng.type = g.action;\ng.groupId = facade_1.Facade.field(\"groupId\");\ng.created = function () {\n var created = this.proxy(\"traits.createdAt\") ||\n this.proxy(\"traits.created\") ||\n this.proxy(\"properties.createdAt\") ||\n this.proxy(\"properties.created\");\n if (created)\n return new_date_1.default(created);\n};\ng.email = function () {\n var email = this.proxy(\"traits.email\");\n if (email)\n return email;\n var groupId = this.groupId();\n if (is_email_1.default(groupId))\n return groupId;\n};\ng.traits = function (aliases) {\n var ret = this.properties();\n var id = this.groupId();\n aliases = aliases || {};\n if (id)\n ret.id = id;\n for (var alias in aliases) {\n var value = this[alias] == null ? this.proxy(\"traits.\" + alias) : this[alias]();\n if (value == null)\n continue;\n ret[aliases[alias]] = value;\n delete ret[alias];\n }\n return ret;\n};\ng.name = facade_1.Facade.proxy(\"traits.name\");\ng.industry = facade_1.Facade.proxy(\"traits.industry\");\ng.employees = facade_1.Facade.proxy(\"traits.employees\");\ng.properties = function () {\n return this.field(\"traits\") || this.field(\"properties\") || {};\n};\n//# sourceMappingURL=group.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Identify = void 0;\nvar facade_1 = require(\"./facade\");\nvar obj_case_1 = __importDefault(require(\"obj-case\"));\nvar inherits_1 = __importDefault(require(\"inherits\"));\nvar is_email_1 = __importDefault(require(\"./is-email\"));\nvar new_date_1 = __importDefault(require(\"new-date\"));\nvar trim = function (str) { return str.trim(); };\nfunction Identify(dictionary, opts) {\n facade_1.Facade.call(this, dictionary, opts);\n}\nexports.Identify = Identify;\ninherits_1.default(Identify, facade_1.Facade);\nvar i = Identify.prototype;\ni.action = function () {\n return \"identify\";\n};\ni.type = i.action;\ni.traits = function (aliases) {\n var ret = this.field(\"traits\") || {};\n var id = this.userId();\n aliases = aliases || {};\n if (id)\n ret.id = id;\n for (var alias in aliases) {\n var value = this[alias] == null ? this.proxy(\"traits.\" + alias) : this[alias]();\n if (value == null)\n continue;\n ret[aliases[alias]] = value;\n if (alias !== aliases[alias])\n delete ret[alias];\n }\n return ret;\n};\ni.email = function () {\n var email = this.proxy(\"traits.email\");\n if (email)\n return email;\n var userId = this.userId();\n if (is_email_1.default(userId))\n return userId;\n};\ni.created = function () {\n var created = this.proxy(\"traits.created\") || this.proxy(\"traits.createdAt\");\n if (created)\n return new_date_1.default(created);\n};\ni.companyCreated = function () {\n var created = this.proxy(\"traits.company.created\") ||\n this.proxy(\"traits.company.createdAt\");\n if (created) {\n return new_date_1.default(created);\n }\n};\ni.companyName = function () {\n return this.proxy(\"traits.company.name\");\n};\ni.name = function () {\n var name = this.proxy(\"traits.name\");\n if (typeof name === \"string\") {\n return trim(name);\n }\n var firstName = this.firstName();\n var lastName = this.lastName();\n if (firstName && lastName) {\n return trim(firstName + \" \" + lastName);\n }\n};\ni.firstName = function () {\n var firstName = this.proxy(\"traits.firstName\");\n if (typeof firstName === \"string\") {\n return trim(firstName);\n }\n var name = this.proxy(\"traits.name\");\n if (typeof name === \"string\") {\n return trim(name).split(\" \")[0];\n }\n};\ni.lastName = function () {\n var lastName = this.proxy(\"traits.lastName\");\n if (typeof lastName === \"string\") {\n return trim(lastName);\n }\n var name = this.proxy(\"traits.name\");\n if (typeof name !== \"string\") {\n return;\n }\n var space = trim(name).indexOf(\" \");\n if (space === -1) {\n return;\n }\n return trim(name.substr(space + 1));\n};\ni.uid = function () {\n return this.userId() || this.username() || this.email();\n};\ni.description = function () {\n return this.proxy(\"traits.description\") || this.proxy(\"traits.background\");\n};\ni.age = function () {\n var date = this.birthday();\n var age = obj_case_1.default(this.traits(), \"age\");\n if (age != null)\n return age;\n if (!(date instanceof Date))\n return;\n var now = new Date();\n return now.getFullYear() - date.getFullYear();\n};\ni.avatar = function () {\n var traits = this.traits();\n return (obj_case_1.default(traits, \"avatar\") || obj_case_1.default(traits, \"photoUrl\") || obj_case_1.default(traits, \"avatarUrl\"));\n};\ni.position = function () {\n var traits = this.traits();\n return obj_case_1.default(traits, \"position\") || obj_case_1.default(traits, \"jobTitle\");\n};\ni.username = facade_1.Facade.proxy(\"traits.username\");\ni.website = facade_1.Facade.one(\"traits.website\");\ni.websites = facade_1.Facade.multi(\"traits.website\");\ni.phone = facade_1.Facade.one(\"traits.phone\");\ni.phones = facade_1.Facade.multi(\"traits.phone\");\ni.address = facade_1.Facade.proxy(\"traits.address\");\ni.gender = facade_1.Facade.proxy(\"traits.gender\");\ni.birthday = facade_1.Facade.proxy(\"traits.birthday\");\n//# sourceMappingURL=identify.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Delete = exports.Screen = exports.Page = exports.Track = exports.Identify = exports.Group = exports.Alias = exports.Facade = void 0;\nvar facade_1 = require(\"./facade\");\nObject.defineProperty(exports, \"Facade\", { enumerable: true, get: function () { return facade_1.Facade; } });\nvar alias_1 = require(\"./alias\");\nObject.defineProperty(exports, \"Alias\", { enumerable: true, get: function () { return alias_1.Alias; } });\nvar group_1 = require(\"./group\");\nObject.defineProperty(exports, \"Group\", { enumerable: true, get: function () { return group_1.Group; } });\nvar identify_1 = require(\"./identify\");\nObject.defineProperty(exports, \"Identify\", { enumerable: true, get: function () { return identify_1.Identify; } });\nvar track_1 = require(\"./track\");\nObject.defineProperty(exports, \"Track\", { enumerable: true, get: function () { return track_1.Track; } });\nvar page_1 = require(\"./page\");\nObject.defineProperty(exports, \"Page\", { enumerable: true, get: function () { return page_1.Page; } });\nvar screen_1 = require(\"./screen\");\nObject.defineProperty(exports, \"Screen\", { enumerable: true, get: function () { return screen_1.Screen; } });\nvar delete_1 = require(\"./delete\");\nObject.defineProperty(exports, \"Delete\", { enumerable: true, get: function () { return delete_1.Delete; } });\nexports.default = __assign(__assign({}, facade_1.Facade), { Alias: alias_1.Alias,\n Group: group_1.Group,\n Identify: identify_1.Identify,\n Track: track_1.Track,\n Page: page_1.Page,\n Screen: screen_1.Screen,\n Delete: delete_1.Delete });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar matcher = /.+\\@.+\\..+/;\nfunction isEmail(string) {\n return matcher.test(string);\n}\nexports.default = isEmail;\n//# sourceMappingURL=is-email.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar disabled = {\n Salesforce: true,\n};\nfunction default_1(integration) {\n return !disabled[integration];\n}\nexports.default = default_1;\n//# sourceMappingURL=is-enabled.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Page = void 0;\nvar inherits_1 = __importDefault(require(\"inherits\"));\nvar facade_1 = require(\"./facade\");\nvar track_1 = require(\"./track\");\nvar is_email_1 = __importDefault(require(\"./is-email\"));\nfunction Page(dictionary, opts) {\n facade_1.Facade.call(this, dictionary, opts);\n}\nexports.Page = Page;\ninherits_1.default(Page, facade_1.Facade);\nvar p = Page.prototype;\np.action = function () {\n return \"page\";\n};\np.type = p.action;\np.category = facade_1.Facade.field(\"category\");\np.name = facade_1.Facade.field(\"name\");\np.title = facade_1.Facade.proxy(\"properties.title\");\np.path = facade_1.Facade.proxy(\"properties.path\");\np.url = facade_1.Facade.proxy(\"properties.url\");\np.referrer = function () {\n return (this.proxy(\"context.referrer.url\") ||\n this.proxy(\"context.page.referrer\") ||\n this.proxy(\"properties.referrer\"));\n};\np.properties = function (aliases) {\n var props = this.field(\"properties\") || {};\n var category = this.category();\n var name = this.name();\n aliases = aliases || {};\n if (category)\n props.category = category;\n if (name)\n props.name = name;\n for (var alias in aliases) {\n var value = this[alias] == null ? this.proxy(\"properties.\" + alias) : this[alias]();\n if (value == null)\n continue;\n props[aliases[alias]] = value;\n if (alias !== aliases[alias])\n delete props[alias];\n }\n return props;\n};\np.email = function () {\n var email = this.proxy(\"context.traits.email\") || this.proxy(\"properties.email\");\n if (email)\n return email;\n var userId = this.userId();\n if (is_email_1.default(userId))\n return userId;\n};\np.fullName = function () {\n var category = this.category();\n var name = this.name();\n return name && category ? category + \" \" + name : name;\n};\np.event = function (name) {\n return name ? \"Viewed \" + name + \" Page\" : \"Loaded a Page\";\n};\np.track = function (name) {\n var json = this.json();\n json.event = this.event(name);\n json.timestamp = this.timestamp();\n json.properties = this.properties();\n return new track_1.Track(json, this.opts);\n};\n//# sourceMappingURL=page.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Screen = void 0;\nvar inherits_1 = __importDefault(require(\"inherits\"));\nvar page_1 = require(\"./page\");\nvar track_1 = require(\"./track\");\nfunction Screen(dictionary, opts) {\n page_1.Page.call(this, dictionary, opts);\n}\nexports.Screen = Screen;\ninherits_1.default(Screen, page_1.Page);\nScreen.prototype.action = function () {\n return \"screen\";\n};\nScreen.prototype.type = Screen.prototype.action;\nScreen.prototype.event = function (name) {\n return name ? \"Viewed \" + name + \" Screen\" : \"Loaded a Screen\";\n};\nScreen.prototype.track = function (name) {\n var json = this.json();\n json.event = this.event(name);\n json.timestamp = this.timestamp();\n json.properties = this.properties();\n return new track_1.Track(json, this.opts);\n};\n//# sourceMappingURL=screen.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Track = void 0;\nvar inherits_1 = __importDefault(require(\"inherits\"));\nvar facade_1 = require(\"./facade\");\nvar identify_1 = require(\"./identify\");\nvar is_email_1 = __importDefault(require(\"./is-email\"));\nvar obj_case_1 = __importDefault(require(\"obj-case\"));\nfunction Track(dictionary, opts) {\n facade_1.Facade.call(this, dictionary, opts);\n}\nexports.Track = Track;\ninherits_1.default(Track, facade_1.Facade);\nvar t = Track.prototype;\nt.action = function () {\n return \"track\";\n};\nt.type = t.action;\nt.event = facade_1.Facade.field(\"event\");\nt.value = facade_1.Facade.proxy(\"properties.value\");\nt.category = facade_1.Facade.proxy(\"properties.category\");\nt.id = facade_1.Facade.proxy(\"properties.id\");\nt.productId = function () {\n return (this.proxy(\"properties.product_id\") || this.proxy(\"properties.productId\"));\n};\nt.promotionId = function () {\n return (this.proxy(\"properties.promotion_id\") ||\n this.proxy(\"properties.promotionId\"));\n};\nt.cartId = function () {\n return this.proxy(\"properties.cart_id\") || this.proxy(\"properties.cartId\");\n};\nt.checkoutId = function () {\n return (this.proxy(\"properties.checkout_id\") || this.proxy(\"properties.checkoutId\"));\n};\nt.paymentId = function () {\n return (this.proxy(\"properties.payment_id\") || this.proxy(\"properties.paymentId\"));\n};\nt.couponId = function () {\n return (this.proxy(\"properties.coupon_id\") || this.proxy(\"properties.couponId\"));\n};\nt.wishlistId = function () {\n return (this.proxy(\"properties.wishlist_id\") || this.proxy(\"properties.wishlistId\"));\n};\nt.reviewId = function () {\n return (this.proxy(\"properties.review_id\") || this.proxy(\"properties.reviewId\"));\n};\nt.orderId = function () {\n return (this.proxy(\"properties.id\") ||\n this.proxy(\"properties.order_id\") ||\n this.proxy(\"properties.orderId\"));\n};\nt.sku = facade_1.Facade.proxy(\"properties.sku\");\nt.tax = facade_1.Facade.proxy(\"properties.tax\");\nt.name = facade_1.Facade.proxy(\"properties.name\");\nt.price = facade_1.Facade.proxy(\"properties.price\");\nt.total = facade_1.Facade.proxy(\"properties.total\");\nt.repeat = facade_1.Facade.proxy(\"properties.repeat\");\nt.coupon = facade_1.Facade.proxy(\"properties.coupon\");\nt.shipping = facade_1.Facade.proxy(\"properties.shipping\");\nt.discount = facade_1.Facade.proxy(\"properties.discount\");\nt.shippingMethod = function () {\n return (this.proxy(\"properties.shipping_method\") ||\n this.proxy(\"properties.shippingMethod\"));\n};\nt.paymentMethod = function () {\n return (this.proxy(\"properties.payment_method\") ||\n this.proxy(\"properties.paymentMethod\"));\n};\nt.description = facade_1.Facade.proxy(\"properties.description\");\nt.plan = facade_1.Facade.proxy(\"properties.plan\");\nt.subtotal = function () {\n var subtotal = obj_case_1.default(this.properties(), \"subtotal\");\n var total = this.total() || this.revenue();\n if (subtotal)\n return subtotal;\n if (!total)\n return 0;\n if (this.total()) {\n var n = this.tax();\n if (n)\n total -= n;\n n = this.shipping();\n if (n)\n total -= n;\n n = this.discount();\n if (n)\n total += n;\n }\n return total;\n};\nt.products = function () {\n var props = this.properties();\n var products = obj_case_1.default(props, \"products\");\n if (Array.isArray(products)) {\n return products.filter(function (item) { return item !== null; });\n }\n return [];\n};\nt.quantity = function () {\n var props = this.obj.properties || {};\n return props.quantity || 1;\n};\nt.currency = function () {\n var props = this.obj.properties || {};\n return props.currency || \"USD\";\n};\nt.referrer = function () {\n return (this.proxy(\"context.referrer.url\") ||\n this.proxy(\"context.page.referrer\") ||\n this.proxy(\"properties.referrer\"));\n};\nt.query = facade_1.Facade.proxy(\"options.query\");\nt.properties = function (aliases) {\n var ret = this.field(\"properties\") || {};\n aliases = aliases || {};\n for (var alias in aliases) {\n var value = this[alias] == null ? this.proxy(\"properties.\" + alias) : this[alias]();\n if (value == null)\n continue;\n ret[aliases[alias]] = value;\n delete ret[alias];\n }\n return ret;\n};\nt.username = function () {\n return (this.proxy(\"traits.username\") ||\n this.proxy(\"properties.username\") ||\n this.userId() ||\n this.sessionId());\n};\nt.email = function () {\n var email = this.proxy(\"traits.email\") ||\n this.proxy(\"properties.email\") ||\n this.proxy(\"options.traits.email\");\n if (email)\n return email;\n var userId = this.userId();\n if (is_email_1.default(userId))\n return userId;\n};\nt.revenue = function () {\n var revenue = this.proxy(\"properties.revenue\");\n var event = this.event();\n var orderCompletedRegExp = /^[ _]?completed[ _]?order[ _]?|^[ _]?order[ _]?completed[ _]?$/i;\n if (!revenue && event && event.match(orderCompletedRegExp)) {\n revenue = this.proxy(\"properties.total\");\n }\n return currency(revenue);\n};\nt.cents = function () {\n var revenue = this.revenue();\n return typeof revenue !== \"number\" ? this.value() || 0 : revenue * 100;\n};\nt.identify = function () {\n var json = this.json();\n json.traits = this.traits();\n return new identify_1.Identify(json, this.opts);\n};\nfunction currency(val) {\n if (!val)\n return;\n if (typeof val === \"number\") {\n return val;\n }\n if (typeof val !== \"string\") {\n return;\n }\n val = val.replace(/\\$/g, \"\");\n val = parseFloat(val);\n if (!isNaN(val)) {\n return val;\n }\n}\n//# sourceMappingURL=track.js.map","'use strict';\n\nvar isodate = require('@segment/isodate');\n\n/**\n * Expose `traverse`.\n */\nmodule.exports = traverse;\n\n/**\n * Recursively traverse an object or array, and convert\n * all ISO date strings parse into Date objects.\n *\n * @param {Object} input - object, array, or string to convert\n * @param {Boolean} strict - only convert strings with year, month, and date\n * @return {Object}\n */\nfunction traverse(input, strict) {\n if (strict === undefined) strict = true;\n if (input && typeof input === 'object') {\n return traverseObject(input, strict);\n } else if (Array.isArray(input)) {\n return traverseArray(input, strict);\n } else if (isodate.is(input, strict)) {\n return isodate.parse(input);\n }\n return input;\n}\n\n/**\n * Object traverser helper function.\n *\n * @param {Object} obj - object to traverse\n * @param {Boolean} strict - only convert strings with year, month, and date\n * @return {Object}\n */\nfunction traverseObject(obj, strict) {\n Object.keys(obj).forEach(function(key) {\n obj[key] = traverse(obj[key], strict);\n });\n return obj;\n}\n\n/**\n * Array traverser helper function\n *\n * @param {Array} arr - array to traverse\n * @param {Boolean} strict - only convert strings with year, month, and date\n * @return {Array}\n */\nfunction traverseArray(arr, strict) {\n arr.forEach(function(value, index) {\n arr[index] = traverse(value, strict);\n });\n return arr;\n}\n","'use strict';\n\n/**\n * Matcher, slightly modified from:\n *\n * https://github.com/csnover/js-iso8601/blob/lax/iso8601.js\n */\n\nvar matcher = /^(\\d{4})(?:-?(\\d{2})(?:-?(\\d{2}))?)?(?:([ T])(\\d{2}):?(\\d{2})(?::?(\\d{2})(?:[,\\.](\\d{1,}))?)?(?:(Z)|([+\\-])(\\d{2})(?::?(\\d{2}))?)?)?$/;\n\n/**\n * Convert an ISO date string to a date. Fallback to native `Date.parse`.\n *\n * https://github.com/csnover/js-iso8601/blob/lax/iso8601.js\n *\n * @param {String} iso\n * @return {Date}\n */\n\nexports.parse = function(iso) {\n var numericKeys = [1, 5, 6, 7, 11, 12];\n var arr = matcher.exec(iso);\n var offset = 0;\n\n // fallback to native parsing\n if (!arr) {\n return new Date(iso);\n }\n\n /* eslint-disable no-cond-assign */\n // remove undefined values\n for (var i = 0, val; val = numericKeys[i]; i++) {\n arr[val] = parseInt(arr[val], 10) || 0;\n }\n /* eslint-enable no-cond-assign */\n\n // allow undefined days and months\n arr[2] = parseInt(arr[2], 10) || 1;\n arr[3] = parseInt(arr[3], 10) || 1;\n\n // month is 0-11\n arr[2]--;\n\n // allow abitrary sub-second precision\n arr[8] = arr[8] ? (arr[8] + '00').substring(0, 3) : 0;\n\n // apply timezone if one exists\n if (arr[4] === ' ') {\n offset = new Date().getTimezoneOffset();\n } else if (arr[9] !== 'Z' && arr[10]) {\n offset = arr[11] * 60 + arr[12];\n if (arr[10] === '+') {\n offset = 0 - offset;\n }\n }\n\n var millis = Date.UTC(arr[1], arr[2], arr[3], arr[5], arr[6] + offset, arr[7], arr[8]);\n return new Date(millis);\n};\n\n\n/**\n * Checks whether a `string` is an ISO date string. `strict` mode requires that\n * the date string at least have a year, month and date.\n *\n * @param {String} string\n * @param {Boolean} strict\n * @return {Boolean}\n */\n\nexports.is = function(string, strict) {\n if (typeof string !== 'string') {\n return false;\n }\n if (strict && (/^\\d{4}-\\d{2}-\\d{2}/).test(string) === false) {\n return false;\n }\n return matcher.test(string);\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","\"use strict\";\n\nvar isodate = require(\"@segment/isodate\");\nvar milliseconds = require(\"./milliseconds\");\nvar seconds = require(\"./seconds\");\n\nvar objProto = Object.prototype;\nvar toStr = objProto.toString;\n\nfunction isDate(value) {\n return toStr.call(value) === \"[object Date]\";\n}\n\nfunction isNumber(value) {\n return toStr.call(value) === \"[object Number]\";\n}\n\n/**\n * Returns a new Javascript Date object, allowing a variety of extra input types\n * over the native Date constructor.\n *\n * @param {Date|string|number} val\n */\nmodule.exports = function newDate(val) {\n if (isDate(val)) return val;\n if (isNumber(val)) return new Date(toMs(val));\n\n // date strings\n if (isodate.is(val)) {\n return isodate.parse(val);\n }\n if (milliseconds.is(val)) {\n return milliseconds.parse(val);\n }\n if (seconds.is(val)) {\n return seconds.parse(val);\n }\n\n // fallback to Date.parse\n return new Date(val);\n};\n\n/**\n * If the number passed val is seconds from the epoch, turn it into milliseconds.\n * Milliseconds would be greater than 31557600000 (December 31, 1970).\n *\n * @param {number} num\n */\nfunction toMs(num) {\n if (num < 31557600000) return num * 1000;\n return num;\n}\n","\"use strict\";\n\n/**\n * Matcher.\n */\n\nvar matcher = /\\d{13}/;\n\n/**\n * Check whether a string is a millisecond date string.\n *\n * @param {string} string\n * @return {boolean}\n */\nexports.is = function (string) {\n return matcher.test(string);\n};\n\n/**\n * Convert a millisecond string to a date.\n *\n * @param {string} millis\n * @return {Date}\n */\nexports.parse = function (millis) {\n millis = parseInt(millis, 10);\n return new Date(millis);\n};\n","\"use strict\";\n\n/**\n * Matcher.\n */\n\nvar matcher = /\\d{10}/;\n\n/**\n * Check whether a string is a second date string.\n *\n * @param {string} string\n * @return {Boolean}\n */\nexports.is = function (string) {\n return matcher.test(string);\n};\n\n/**\n * Convert a second string to a date.\n *\n * @param {string} seconds\n * @return {Date}\n */\nexports.parse = function (seconds) {\n var millis = parseInt(seconds, 10) * 1000;\n return new Date(millis);\n};\n","\nvar identity = function(_){ return _; };\n\n\n/**\n * Module exports, export\n */\n\nmodule.exports = multiple(find);\nmodule.exports.find = module.exports;\n\n\n/**\n * Export the replacement function, return the modified object\n */\n\nmodule.exports.replace = function (obj, key, val, options) {\n multiple(replace).call(this, obj, key, val, options);\n return obj;\n};\n\n\n/**\n * Export the delete function, return the modified object\n */\n\nmodule.exports.del = function (obj, key, options) {\n multiple(del).call(this, obj, key, null, options);\n return obj;\n};\n\n\n/**\n * Compose applying the function to a nested key\n */\n\nfunction multiple (fn) {\n return function (obj, path, val, options) {\n var normalize = options && isFunction(options.normalizer) ? options.normalizer : defaultNormalize;\n path = normalize(path);\n\n var key;\n var finished = false;\n\n while (!finished) loop();\n\n function loop() {\n for (key in obj) {\n var normalizedKey = normalize(key);\n if (0 === path.indexOf(normalizedKey)) {\n var temp = path.substr(normalizedKey.length);\n if (temp.charAt(0) === '.' || temp.length === 0) {\n path = temp.substr(1);\n var child = obj[key];\n\n // we're at the end and there is nothing.\n if (null == child) {\n finished = true;\n return;\n }\n\n // we're at the end and there is something.\n if (!path.length) {\n finished = true;\n return;\n }\n\n // step into child\n obj = child;\n\n // but we're done here\n return;\n }\n }\n }\n\n key = undefined;\n // if we found no matching properties\n // on the current object, there's no match.\n finished = true;\n }\n\n if (!key) return;\n if (null == obj) return obj;\n\n // the `obj` and `key` is one above the leaf object and key, so\n // start object: { a: { 'b.c': 10 } }\n // end object: { 'b.c': 10 }\n // end key: 'b.c'\n // this way, you can do `obj[key]` and get `10`.\n return fn(obj, key, val);\n };\n}\n\n\n/**\n * Find an object by its key\n *\n * find({ first_name : 'Calvin' }, 'firstName')\n */\n\nfunction find (obj, key) {\n if (obj.hasOwnProperty(key)) return obj[key];\n}\n\n\n/**\n * Delete a value for a given key\n *\n * del({ a : 'b', x : 'y' }, 'X' }) -> { a : 'b' }\n */\n\nfunction del (obj, key) {\n if (obj.hasOwnProperty(key)) delete obj[key];\n return obj;\n}\n\n\n/**\n * Replace an objects existing value with a new one\n *\n * replace({ a : 'b' }, 'a', 'c') -> { a : 'c' }\n */\n\nfunction replace (obj, key, val) {\n if (obj.hasOwnProperty(key)) obj[key] = val;\n return obj;\n}\n\n/**\n * Normalize a `dot.separated.path`.\n *\n * A.HELL(!*&#(!)O_WOR LD.bar => ahelloworldbar\n *\n * @param {String} path\n * @return {String}\n */\n\nfunction defaultNormalize(path) {\n return path.replace(/[^a-zA-Z0-9\\.]+/g, '').toLowerCase();\n}\n\n/**\n * Check if a value is a function.\n *\n * @param {*} val\n * @return {boolean} Returns `true` if `val` is a function, otherwise `false`.\n */\n\nfunction isFunction(val) {\n return typeof val === 'function';\n}\n","(function (factory) {\n if (typeof exports === 'object') {\n // Node/CommonJS\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD\n define(factory);\n } else {\n // Browser globals (with support for web workers)\n var glob;\n\n try {\n glob = window;\n } catch (e) {\n glob = self;\n }\n\n glob.SparkMD5 = factory();\n }\n}(function (undefined) {\n\n 'use strict';\n\n /*\n * Fastest md5 implementation around (JKM md5).\n * Credits: Joseph Myers\n *\n * @see http://www.myersdaily.org/joseph/javascript/md5-text.html\n * @see http://jsperf.com/md5-shootout/7\n */\n\n /* this function is much faster,\n so if possible we use it. Some IEs\n are the only ones I know of that\n need the idiotic second function,\n generated by an if clause. */\n var add32 = function (a, b) {\n return (a + b) & 0xFFFFFFFF;\n },\n hex_chr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\n\n\n function cmn(q, a, b, x, s, t) {\n a = add32(add32(a, q), add32(x, t));\n return add32((a << s) | (a >>> (32 - s)), b);\n }\n\n function md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n\n function md5blk(s) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n\n function md5blk_array(a) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n\n function md51(s) {\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n }\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n return state;\n }\n\n function md51_array(a) {\n var n = a.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n\n // Not sure if it is a bug, however IE10 will always produce a sub array of length 1\n // containing the last element of the parent array if the sub array specified starts\n // beyond the length of the parent array - weird.\n // https://connect.microsoft.com/IE/feedback/details/771452/typed-array-subarray-issue\n a = (i - 64) < n ? a.subarray(i - 64) : new Uint8Array(0);\n\n length = a.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << ((i % 4) << 3);\n }\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n\n return state;\n }\n\n function rhex(n) {\n var s = '',\n j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F];\n }\n return s;\n }\n\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join('');\n }\n\n // In some cases the fast add32 function cannot be used..\n if (hex(md51('hello')) !== '5d41402abc4b2a76b9719d911017c592') {\n add32 = function (x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n };\n }\n\n // ---------------------------------------------------\n\n /**\n * ArrayBuffer slice polyfill.\n *\n * @see https://github.com/ttaubert/node-arraybuffer-slice\n */\n\n if (typeof ArrayBuffer !== 'undefined' && !ArrayBuffer.prototype.slice) {\n (function () {\n function clamp(val, length) {\n val = (val | 0) || 0;\n\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n\n return Math.min(val, length);\n }\n\n ArrayBuffer.prototype.slice = function (from, to) {\n var length = this.byteLength,\n begin = clamp(from, length),\n end = length,\n num,\n target,\n targetArray,\n sourceArray;\n\n if (to !== undefined) {\n end = clamp(to, length);\n }\n\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n\n return target;\n };\n })();\n }\n\n // ---------------------------------------------------\n\n /**\n * Helpers.\n */\n\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n\n return str;\n }\n\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length,\n buff = new ArrayBuffer(length),\n arr = new Uint8Array(buff),\n i;\n\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n\n return returnUInt8Array ? arr : buff;\n }\n\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n\n return returnUInt8Array ? result : result.buffer;\n }\n\n function hexToBinaryString(hex) {\n var bytes = [],\n length = hex.length,\n x;\n\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n\n return String.fromCharCode.apply(String, bytes);\n }\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation.\n *\n * Use this class to perform an incremental md5, otherwise use the\n * static methods instead.\n */\n\n function SparkMD5() {\n // call reset to init the instance\n this.reset();\n }\n\n /**\n * Appends a string.\n * A conversion will be applied if an utf8 string is detected.\n *\n * @param {String} str The string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.append = function (str) {\n // Converts the string to utf8 bytes if necessary\n // Then append as binary\n this.appendBinary(toUtf8(str));\n\n return this;\n };\n\n /**\n * Appends a binary string.\n *\n * @param {String} contents The binary string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.appendBinary = function (contents) {\n this._buff += contents;\n this._length += contents.length;\n\n var length = this._buff.length,\n i;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n\n this._buff = this._buff.substring(i - 64);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n i,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.reset = function () {\n this._buff = '';\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.prototype.getState = function () {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash.slice()\n };\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.setState = function (state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n\n return this;\n };\n\n /**\n * Releases memory used by the incremental buffer and other additional\n * resources. If you plan to use the instance again, use reset instead.\n */\n SparkMD5.prototype.destroy = function () {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n\n /**\n * Finish the final calculation based on the tail.\n *\n * @param {Array} tail The tail (will be modified)\n * @param {Number} length The length of the remaining buffer\n */\n SparkMD5.prototype._finish = function (tail, length) {\n var i = length,\n tmp,\n lo,\n hi;\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Do the final computation based on the tail and length\n // Beware that the final length may not fit in 32 bits so we take care of that\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n\n /**\n * Performs the md5 hash on a string.\n * A conversion will be applied if utf8 string is detected.\n *\n * @param {String} str The string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hash = function (str, raw) {\n // Converts the string to utf8 bytes if necessary\n // Then compute it using the binary function\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n\n /**\n * Performs the md5 hash on a binary string.\n *\n * @param {String} content The binary string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hashBinary = function (content, raw) {\n var hash = md51(content),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation for array buffers.\n *\n * Use this class to perform an incremental md5 ONLY for array buffers.\n */\n SparkMD5.ArrayBuffer = function () {\n // call reset to init the instance\n this.reset();\n };\n\n /**\n * Appends an array buffer.\n *\n * @param {ArrayBuffer} arr The array to be appended\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n length = buff.length,\n i;\n\n this._length += arr.byteLength;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n\n this._buff = (i - 64) < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n i,\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.reset = function () {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.ArrayBuffer.prototype.getState = function () {\n var state = SparkMD5.prototype.getState.call(this);\n\n // Convert buffer to a string\n state.buff = arrayBuffer2Utf8Str(state.buff);\n\n return state;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n // Convert string to buffer\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n\n return SparkMD5.prototype.setState.call(this, state);\n };\n\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n\n /**\n * Performs the md5 hash on an array buffer.\n *\n * @param {ArrayBuffer} arr The array buffer\n * @param {Boolean} [raw] True to get the raw string, false to get the hex one\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n var hash = md51_array(new Uint8Array(arr)),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n return SparkMD5;\n}));\n","import { isBrowser } from '../environment'\n\nexport function isOnline(): boolean {\n if (isBrowser()) {\n return window.navigator.onLine\n }\n\n return true\n}\n\nexport function isOffline(): boolean {\n return !isOnline()\n}\n","export const HIGHTOUCH_API_HOST = 'us-east-1.hightouch-events.com'\n","import { fetch } from '../../lib/fetch'\nimport { version } from '../../generated/version'\nimport { getVersionType } from '../../lib/version-type'\nimport { HIGHTOUCH_API_HOST } from '../constants'\n\nexport interface MetricsOptions {\n host?: string\n sampleRate?: number\n flushTimer?: number\n maxQueueSize?: number\n}\n\n/**\n * Type expected by the hightouch metrics API endpoint\n */\ntype RemoteMetric = {\n type: 'Counter'\n metric: string\n value: 1\n tags: {\n library: string\n library_version: string\n [key: string]: string\n }\n}\n\nconst createRemoteMetric = (\n metric: string,\n tags: string[],\n versionType: 'web' | 'npm'\n): RemoteMetric => {\n const formattedTags = tags.reduce(\n (acc, t) => {\n const [k, v] = t.split(':')\n acc[k] = v\n return acc\n },\n {} as Record<string, string>\n )\n\n return {\n type: 'Counter',\n metric,\n value: 1,\n tags: {\n ...formattedTags,\n library: 'analytics.js',\n library_version:\n versionType === 'web' ? `next-${version}` : `npm:next-${version}`,\n },\n }\n}\n\nfunction logError(err: unknown): void {\n console.error('Error sending hightouch performance metrics', err)\n}\n\nexport class RemoteMetrics {\n private host: string\n private flushTimer: number\n private maxQueueSize: number\n\n sampleRate: number\n queue: RemoteMetric[]\n\n constructor(options?: MetricsOptions) {\n this.host = options?.host ?? HIGHTOUCH_API_HOST\n this.sampleRate = options?.sampleRate ?? 1\n this.flushTimer = options?.flushTimer ?? 30 * 1000 /* 30s */\n this.maxQueueSize = options?.maxQueueSize ?? 20\n\n this.queue = []\n\n if (this.sampleRate > 0) {\n let flushing = false\n\n const run = (): void => {\n if (flushing) {\n return\n }\n\n flushing = true\n this.flush().catch(logError)\n\n flushing = false\n\n setTimeout(run, this.flushTimer)\n }\n run()\n }\n }\n\n increment(metric: string, tags: string[]): void {\n // All metrics are part of an allow list in Tracking API\n if (!metric.includes('analytics_js.')) {\n return\n }\n\n // /m doesn't like empty tags\n if (tags.length === 0) {\n return\n }\n\n if (Math.random() > this.sampleRate) {\n return\n }\n\n if (this.queue.length >= this.maxQueueSize) {\n return\n }\n\n const remoteMetric = createRemoteMetric(metric, tags, getVersionType())\n this.queue.push(remoteMetric)\n\n if (metric.includes('error')) {\n this.flush().catch(logError)\n }\n }\n\n async flush(): Promise<void> {\n if (this.queue.length <= 0) {\n return\n }\n\n await this.send().catch((error) => {\n logError(error)\n this.sampleRate = 0\n })\n }\n\n private async send(): Promise<Response> {\n const payload = { series: this.queue }\n this.queue = []\n\n const headers = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n }\n const url = `https://${this.host}/v1/m`\n\n return fetch(url, {\n headers,\n body: JSON.stringify(payload),\n method: 'POST',\n })\n }\n}\n","import { CoreStats } from '@ht-sdks/events-sdk-js-core'\nimport { MetricsOptions, RemoteMetrics } from './remote-metrics'\n\nlet remoteMetrics: RemoteMetrics | undefined\n\nexport class Stats extends CoreStats {\n static initRemoteMetrics(options?: MetricsOptions) {\n remoteMetrics = new RemoteMetrics(options)\n }\n\n override increment(metric: string, by?: number, tags?: string[]): void {\n super.increment(metric, by, tags)\n remoteMetrics?.increment(metric, tags ?? [])\n }\n}\n","import {\n CoreContext,\n ContextCancelation,\n ContextFailedDelivery,\n SerializedContext,\n CancelationOptions,\n} from '@ht-sdks/events-sdk-js-core'\nimport { HightouchEvent } from '../events/interfaces'\nimport { Stats } from '../stats'\n\nexport class Context extends CoreContext<HightouchEvent> {\n static override system() {\n return new this({ type: 'track', event: 'system' })\n }\n constructor(event: HightouchEvent, id?: string) {\n super(event, id, new Stats())\n }\n}\n\nexport { ContextCancelation }\nexport type { ContextFailedDelivery, SerializedContext, CancelationOptions }\n","export function isBrowser(): boolean {\n return typeof window !== 'undefined'\n}\n\nexport function isServer(): boolean {\n return !isBrowser()\n}\n","/**\n * Tries to gets the unencoded version of an encoded component of a\n * Uniform Resource Identifier (URI). If input string is malformed,\n * returns it back as-is.\n *\n * Note: All occurences of the `+` character become ` ` (spaces).\n **/\nexport function gracefulDecodeURIComponent(\n encodedURIComponent: string\n): string {\n try {\n return decodeURIComponent(encodedURIComponent.replace(/\\+/g, ' '))\n } catch {\n return encodedURIComponent\n }\n}\n","// This file is generated.\nexport const version = '1.5.6'\n","export default function(e,n){return n=n||{},new Promise(function(t,r){var s=new XMLHttpRequest,o=[],u=[],i={},a=function(){return{ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(JSON.parse(s.responseText))},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var l in s.open(n.method||\"get\",e,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+\",\"+t:t}),t(a())},s.onerror=r,s.withCredentials=\"include\"==n.credentials,n.headers)s.setRequestHeader(l,n.headers[l]);s.send(n.body||null)})}\n//# sourceMappingURL=unfetch.mjs.map\n","import unfetch from 'unfetch'\nimport { getGlobal } from './get-global'\n\n/**\n * Wrapper around native `fetch` containing `unfetch` fallback.\n */\nexport const fetch: typeof global.fetch = (...args) => {\n const global = getGlobal()\n return ((global && global.fetch) || unfetch)(...args)\n}\n","// This an imperfect polyfill for globalThis\nexport const getGlobal = () => {\n if (typeof globalThis !== 'undefined') {\n return globalThis\n }\n if (typeof self !== 'undefined') {\n return self\n }\n if (typeof window !== 'undefined') {\n return window\n }\n if (typeof global !== 'undefined') {\n return global\n }\n return null\n}\n","import { HtEventsSnippet } from '../browser/standalone-interface'\n\n/**\n * Stores the global window analytics key\n */\nlet _globalAnalyticsKey = 'htevents'\n\n/**\n * Gets the global analytics/buffer\n * @param key name of the window property where the buffer is stored (default: analytics)\n * @returns HtEventsSnippet\n */\nexport function getGlobalAnalytics(): HtEventsSnippet | undefined {\n return (window as any)[_globalAnalyticsKey]\n}\n\n/**\n * Replaces the global window key for the analytics/buffer object\n * @param key key name\n */\nexport function setGlobalAnalyticsKey(key: string) {\n _globalAnalyticsKey = key\n}\n\n/**\n * Sets the global analytics object\n * @param analytics analytics snippet\n */\nexport function setGlobalAnalytics(analytics: HtEventsSnippet): void {\n ;(window as any)[_globalAnalyticsKey] = analytics\n}\n","function findScript(src: string): HTMLScriptElement | undefined {\n const scripts = Array.prototype.slice.call(\n window.document.querySelectorAll('script')\n )\n return scripts.find((s) => s.src === src)\n}\n\nexport function loadScript(\n src: string,\n attributes?: Record<string, string>\n): Promise<HTMLScriptElement> {\n const found = findScript(src)\n\n if (found !== undefined) {\n const status = found?.getAttribute('status')\n\n if (status === 'loaded') {\n return Promise.resolve(found)\n }\n\n if (status === 'loading') {\n return new Promise((resolve, reject) => {\n found.addEventListener('load', () => resolve(found))\n found.addEventListener('error', (err) => reject(err))\n })\n }\n }\n\n return new Promise((resolve, reject) => {\n const script = window.document.createElement('script')\n\n script.type = 'text/javascript'\n script.src = src\n script.async = true\n\n script.setAttribute('status', 'loading')\n for (const [k, v] of Object.entries(attributes ?? {})) {\n script.setAttribute(k, v)\n }\n\n script.onload = (): void => {\n script.onerror = script.onload = null\n script.setAttribute('status', 'loaded')\n resolve(script)\n }\n\n script.onerror = (): void => {\n script.onerror = script.onload = null\n script.setAttribute('status', 'error')\n reject(new Error(`Failed to load ${src}`))\n }\n\n const tag = window.document.getElementsByTagName('script')[0]\n tag.parentElement?.insertBefore(script, tag)\n })\n}\n\nexport function unloadScript(src: string): Promise<void> {\n const found = findScript(src)\n\n if (found !== undefined) {\n found.remove()\n }\n\n return Promise.resolve()\n}\n","import { JSONObject, Options } from '../core/events/interfaces'\nimport { LegacySettings } from '../browser'\n\n/**\n * Merge legacy settings and initialized Integration option overrides.\n *\n * This will merge any options that were passed from initialization into\n * overrides for settings that are returned by the Hightouch CDN.\n *\n * i.e. this allows for passing options directly into destinations from\n * the Analytics constructor.\n */\nexport function mergedOptions(\n settings: LegacySettings,\n options: Options\n): Record<string, JSONObject> {\n const optionOverrides = Object.entries(options.integrations ?? {}).reduce(\n (overrides, [integration, options]) => {\n if (typeof options === 'object') {\n return {\n ...overrides,\n [integration]: options,\n }\n }\n\n return {\n ...overrides,\n [integration]: {},\n }\n },\n {} as Record<string, JSONObject>\n )\n\n return Object.entries(settings.integrations).reduce(\n (integrationSettings, [integration, settings]) => {\n return {\n ...integrationSettings,\n [integration]: {\n ...settings,\n ...optionOverrides[integration],\n },\n }\n },\n {} as Record<string, JSONObject>\n )\n}\n","export const pWhile = async <T>(\n condition: (value: T | undefined) => boolean,\n action: () => T | PromiseLike<T>\n): Promise<void> => {\n const loop = async (actionResult: T | undefined): Promise<void> => {\n if (condition(actionResult)) {\n return loop(await action())\n }\n }\n\n return loop(undefined)\n}\n","import { getGlobalAnalytics } from './global-analytics-helper'\n\nconst analyticsScriptRegex =\n /(https:\\/\\/.*)\\/analytics\\.js\\/v1\\/(?:.*?)\\/(?:platform|analytics.*)?/\nconst getCDNUrlFromScriptTag = (): string | undefined => {\n let cdn: string | undefined\n const scripts = Array.prototype.slice.call(\n document.querySelectorAll('script')\n )\n scripts.forEach((s) => {\n const src = s.getAttribute('src') ?? ''\n const result = analyticsScriptRegex.exec(src)\n\n if (result && result[1]) {\n cdn = result[1]\n }\n })\n return cdn\n}\n\nlet _globalCDN: string | undefined // set globalCDN as in-memory singleton\nconst getGlobalCDNUrl = (): string | undefined => {\n const result = _globalCDN ?? getGlobalAnalytics()?._cdn\n return result\n}\n\nexport const setGlobalCDNUrl = (cdn: string) => {\n const globalAnalytics = getGlobalAnalytics()\n if (globalAnalytics) {\n globalAnalytics._cdn = cdn\n }\n _globalCDN = cdn\n}\n\nexport const getCDN = (): string => {\n const globalCdnUrl = getGlobalCDNUrl()\n\n if (globalCdnUrl) return globalCdnUrl\n\n const cdnFromScriptTag = getCDNUrlFromScriptTag()\n\n if (cdnFromScriptTag) {\n return cdnFromScriptTag\n } else {\n // it's possible that the CDN is not found in the page because:\n // - the script is loaded through a proxy\n // - the script is removed after execution\n // in this case, we fall back to the default Hightouch CDN\n return `https://cdn.hightouch-events.com`\n }\n}\n\nexport const getNextIntegrationsURL = () => {\n const cdn = getCDN()\n return `${cdn}/next-integrations`\n}\n","import { PriorityQueue } from '@ht-sdks/events-sdk-js-core'\nimport { Context, SerializedContext } from '../../core/context'\nimport { isBrowser } from '../../core/environment'\n\nlet loc:\n | Storage\n | { getItem: () => void; setItem: () => void; removeItem: () => void } = {\n getItem() {},\n setItem() {},\n removeItem() {},\n}\n\ntry {\n loc = isBrowser() && window.localStorage ? window.localStorage : loc\n} catch (err) {\n console.warn('Unable to access localStorage', err)\n}\n\nfunction persisted(key: string): Context[] {\n const items = loc.getItem(key)\n return (items ? JSON.parse(items) : []).map(\n (p: SerializedContext) => new Context(p.event, p.id)\n )\n}\n\nfunction persistItems(key: string, items: Context[]): void {\n const existing = persisted(key)\n const all = [...items, ...existing]\n\n const merged = all.reduce(\n (acc, item) => {\n return {\n ...acc,\n [item.id]: item,\n }\n },\n {} as Record<string, Context>\n )\n\n loc.setItem(key, JSON.stringify(Object.values(merged)))\n}\n\nfunction seen(key: string): Record<string, number> {\n const stored = loc.getItem(key)\n return stored ? JSON.parse(stored) : {}\n}\n\nfunction persistSeen(key: string, memory: Record<string, number>): void {\n const stored = seen(key)\n\n loc.setItem(\n key,\n JSON.stringify({\n ...stored,\n ...memory,\n })\n )\n}\n\nfunction remove(key: string): void {\n loc.removeItem(key)\n}\n\nconst now = (): number => new Date().getTime()\n\nfunction mutex(key: string, onUnlock: Function, attempt = 0): void {\n const lockTimeout = 50\n const lockKey = `persisted-queue:v1:${key}:lock`\n\n const expired = (lock: number): boolean => new Date().getTime() > lock\n const rawLock = loc.getItem(lockKey)\n const lock = rawLock ? (JSON.parse(rawLock) as number) : null\n\n const allowed = lock === null || expired(lock)\n if (allowed) {\n loc.setItem(lockKey, JSON.stringify(now() + lockTimeout))\n onUnlock()\n loc.removeItem(lockKey)\n return\n }\n\n if (!allowed && attempt < 3) {\n setTimeout(() => {\n mutex(key, onUnlock, attempt + 1)\n }, lockTimeout)\n } else {\n console.error('Unable to retrieve lock')\n }\n}\n\nexport class PersistedPriorityQueue extends PriorityQueue<Context> {\n constructor(maxAttempts: number, key: string) {\n super(maxAttempts, [])\n\n const itemsKey = `persisted-queue:v1:${key}:items`\n const seenKey = `persisted-queue:v1:${key}:seen`\n\n let saved: Context[] = []\n let lastSeen: Record<string, number> = {}\n\n mutex(key, () => {\n try {\n saved = persisted(itemsKey)\n lastSeen = seen(seenKey)\n remove(itemsKey)\n remove(seenKey)\n\n this.queue = [...saved, ...this.queue]\n this.seen = { ...lastSeen, ...this.seen }\n } catch (err) {\n console.error(err)\n }\n })\n\n window.addEventListener('pagehide', () => {\n // we deliberately want to use the less powerful 'pagehide' API to only persist on events where the analytics instance gets destroyed, and not on tab away.\n if (this.todo > 0) {\n const items = [...this.queue, ...this.future]\n try {\n mutex(key, () => {\n persistItems(itemsKey, items)\n persistSeen(seenKey, this.seen)\n })\n } catch (err) {\n console.error(err)\n }\n }\n })\n }\n}\n","import {\n Alias,\n Facade,\n Group,\n Identify,\n Options,\n Page,\n Screen,\n Track,\n} from '@segment/facade'\nimport { HightouchEvent } from '../core/events'\n\nexport type SegmentFacade = Facade<HightouchEvent> & {\n obj: HightouchEvent\n}\n\nexport function toFacade(\n evt: HightouchEvent,\n options?: Options\n): SegmentFacade {\n let fcd = new Facade(evt, options)\n\n if (evt.type === 'track') {\n fcd = new Track(evt, options)\n }\n\n if (evt.type === 'identify') {\n fcd = new Identify(evt, options)\n }\n\n if (evt.type === 'page') {\n fcd = new Page(evt, options)\n }\n\n if (evt.type === 'alias') {\n fcd = new Alias(evt, options)\n }\n\n if (evt.type === 'group') {\n fcd = new Group(evt, options)\n }\n\n if (evt.type === 'screen') {\n fcd = new Screen(evt, options)\n }\n\n Object.defineProperty(fcd, 'obj', {\n value: evt,\n writable: true,\n })\n\n return fcd as SegmentFacade\n}\n","// Default value will be updated to 'web' in `bundle-umd.ts` for web build.\nlet _version: 'web' | 'npm' = 'npm'\n\nexport function setVersionType(version: typeof _version) {\n _version = version\n}\n\nexport function getVersionType(): typeof _version {\n return _version\n}\n","import { Context, ContextCancelation } from '../../core/context'\nimport { HightouchEvent } from '../../core/events'\nimport { Plugin } from '../../core/plugin'\nimport { SegmentFacade, toFacade } from '../../lib/to-facade'\n\nexport interface MiddlewareParams {\n payload: SegmentFacade\n\n integrations?: HightouchEvent['integrations']\n next: (payload: MiddlewareParams['payload'] | null) => void\n}\n\nexport interface DestinationMiddlewareParams {\n payload: SegmentFacade\n integration: string\n next: (payload: MiddlewareParams['payload'] | null) => void\n}\n\nexport type MiddlewareFunction = (\n middleware: MiddlewareParams\n) => void | Promise<void>\n\nexport type DestinationMiddlewareFunction = (\n middleware: DestinationMiddlewareParams\n) => void | Promise<void>\n\nexport async function applyDestinationMiddleware(\n destination: string,\n evt: HightouchEvent,\n middleware: DestinationMiddlewareFunction[]\n): Promise<HightouchEvent | null> {\n // Clone the event so mutations are localized to a single destination.\n let modifiedEvent = toFacade(evt, {\n clone: true,\n traverse: false,\n }).rawEvent() as HightouchEvent\n async function applyMiddleware(\n event: HightouchEvent,\n fn: DestinationMiddlewareFunction\n ): Promise<HightouchEvent | null> {\n let nextCalled = false\n let returnedEvent: HightouchEvent | null = null\n\n await fn({\n payload: toFacade(event, {\n clone: true,\n traverse: false,\n }),\n integration: destination,\n next(evt) {\n nextCalled = true\n\n if (evt === null) {\n returnedEvent = null\n }\n\n if (evt) {\n returnedEvent = evt.obj\n }\n },\n })\n\n if (!nextCalled && returnedEvent !== null) {\n returnedEvent = returnedEvent as HightouchEvent\n returnedEvent.integrations = {\n ...event.integrations,\n [destination]: false,\n }\n }\n\n return returnedEvent\n }\n\n for (const md of middleware) {\n const result = await applyMiddleware(modifiedEvent, md)\n if (result === null) {\n return null\n }\n modifiedEvent = result\n }\n\n return modifiedEvent\n}\n\nexport function sourceMiddlewarePlugin(\n fn: MiddlewareFunction,\n integrations: HightouchEvent['integrations']\n): Plugin {\n async function apply(ctx: Context): Promise<Context> {\n let nextCalled = false\n\n await fn({\n payload: toFacade(ctx.event, {\n clone: true,\n traverse: false,\n }),\n integrations: integrations ?? {},\n next(evt) {\n nextCalled = true\n if (evt) {\n ctx.event = evt.obj\n }\n },\n })\n\n if (!nextCalled) {\n throw new ContextCancelation({\n retry: false,\n type: 'middleware_cancellation',\n reason: 'Middleware `next` function skipped',\n })\n }\n\n return ctx\n }\n\n return {\n name: `Source Middleware ${fn.name}`,\n type: 'before',\n version: '0.1.0',\n\n isLoaded: (): boolean => true,\n load: (ctx): Promise<Context> => Promise.resolve(ctx),\n\n track: apply,\n page: apply,\n identify: apply,\n alias: apply,\n group: apply,\n }\n}\n","export function pTimeout(promise, timeout) {\n return new Promise(function (resolve, reject) {\n var timeoutId = setTimeout(function () {\n reject(Error('Promise timed out'));\n }, timeout);\n promise\n .then(function (val) {\n clearTimeout(timeoutId);\n return resolve(val);\n })\n .catch(reject);\n });\n}\nexport function sleep(timeoutInMs) {\n return new Promise(function (resolve) { return setTimeout(resolve, timeoutInMs); });\n}\n/**\n * @param ctx\n * @param callback - the function to invoke\n * @param delay - aka \"timeout\". The amount of time in ms to wait before invoking the callback.\n */\nexport function invokeCallback(ctx, callback, delay) {\n var cb = function () {\n try {\n return Promise.resolve(callback(ctx));\n }\n catch (err) {\n return Promise.reject(err);\n }\n };\n return (sleep(delay)\n // pTimeout ensures that the callback can't cause the context to hang\n .then(function () { return pTimeout(cb(), 1000); })\n .catch(function (err) {\n ctx === null || ctx === void 0 ? void 0 : ctx.log('warn', 'Callback Error', { error: err });\n ctx === null || ctx === void 0 ? void 0 : ctx.stats.increment('callback_error');\n })\n .then(function () { return ctx; }));\n}\n//# sourceMappingURL=index.js.map","import { __assign } from \"tslib\";\nvar CoreLogger = /** @class */ (function () {\n function CoreLogger() {\n this._logs = [];\n }\n CoreLogger.prototype.log = function (level, message, extras) {\n var time = new Date();\n this._logs.push({\n level: level,\n message: message,\n time: time,\n extras: extras,\n });\n };\n Object.defineProperty(CoreLogger.prototype, \"logs\", {\n get: function () {\n return this._logs;\n },\n enumerable: false,\n configurable: true\n });\n CoreLogger.prototype.flush = function () {\n if (this.logs.length > 1) {\n var formatted = this._logs.reduce(function (logs, log) {\n var _a;\n var _b, _c;\n var line = __assign(__assign({}, log), { json: JSON.stringify(log.extras, null, ' '), extras: log.extras });\n delete line['time'];\n var key = (_c = (_b = log.time) === null || _b === void 0 ? void 0 : _b.toISOString()) !== null && _c !== void 0 ? _c : '';\n if (logs[key]) {\n key = \"\".concat(key, \"-\").concat(Math.random());\n }\n return __assign(__assign({}, logs), (_a = {}, _a[key] = line, _a));\n }, {});\n // ie doesn't like console.table\n if (console.table) {\n console.table(formatted);\n }\n else {\n console.log(formatted);\n }\n }\n else {\n this.logs.forEach(function (logEntry) {\n var level = logEntry.level, message = logEntry.message, extras = logEntry.extras;\n if (level === 'info' || level === 'debug') {\n console.log(message, extras !== null && extras !== void 0 ? extras : '');\n }\n else {\n console[level](message, extras !== null && extras !== void 0 ? extras : '');\n }\n });\n }\n this._logs = [];\n };\n return CoreLogger;\n}());\nexport { CoreLogger };\n//# sourceMappingURL=index.js.map","import { v4 as uuid } from '@lukeed/uuid';\nimport { dset } from 'dset';\nimport { CoreLogger } from '../logger';\nimport { NullStats } from '../stats';\nvar ContextCancelation = /** @class */ (function () {\n function ContextCancelation(options) {\n var _a, _b, _c;\n this.retry = (_a = options.retry) !== null && _a !== void 0 ? _a : true;\n this.type = (_b = options.type) !== null && _b !== void 0 ? _b : 'plugin Error';\n this.reason = (_c = options.reason) !== null && _c !== void 0 ? _c : '';\n }\n return ContextCancelation;\n}());\nexport { ContextCancelation };\nvar CoreContext = /** @class */ (function () {\n function CoreContext(event, id, stats, logger) {\n if (id === void 0) { id = uuid(); }\n if (stats === void 0) { stats = new NullStats(); }\n if (logger === void 0) { logger = new CoreLogger(); }\n this.attempts = 0;\n this.event = event;\n this._id = id;\n this.logger = logger;\n this.stats = stats;\n }\n CoreContext.system = function () {\n // This should be overridden by the subclass to return an instance of the subclass.\n };\n CoreContext.prototype.isSame = function (other) {\n return other.id === this.id;\n };\n CoreContext.prototype.cancel = function (error) {\n if (error) {\n throw error;\n }\n throw new ContextCancelation({ reason: 'Context Cancel' });\n };\n CoreContext.prototype.log = function (level, message, extras) {\n this.logger.log(level, message, extras);\n };\n Object.defineProperty(CoreContext.prototype, \"id\", {\n get: function () {\n return this._id;\n },\n enumerable: false,\n configurable: true\n });\n CoreContext.prototype.updateEvent = function (path, val) {\n var _a;\n // Don't allow integrations that are set to false to be overwritten with integration settings.\n if (path.split('.')[0] === 'integrations') {\n var integrationName = path.split('.')[1];\n if (((_a = this.event.integrations) === null || _a === void 0 ? void 0 : _a[integrationName]) === false) {\n return this.event;\n }\n }\n dset(this.event, path, val);\n return this.event;\n };\n CoreContext.prototype.failedDelivery = function () {\n return this._failedDelivery;\n };\n CoreContext.prototype.setFailedDelivery = function (options) {\n this._failedDelivery = options;\n };\n CoreContext.prototype.logs = function () {\n return this.logger.logs;\n };\n CoreContext.prototype.flush = function () {\n this.logger.flush();\n this.stats.flush();\n };\n CoreContext.prototype.toJSON = function () {\n return {\n id: this._id,\n event: this.event,\n logs: this.logger.logs,\n metrics: this.stats.metrics,\n };\n };\n return CoreContext;\n}());\nexport { CoreContext };\n//# sourceMappingURL=index.js.map","/**\n * Event Emitter that takes the expected contract as a generic\n * @example\n * ```ts\n * type Contract = {\n * delivery_success: [DeliverySuccessResponse, Metrics],\n * delivery_failure: [DeliveryError]\n * }\n * new Emitter<Contract>()\n * .on('delivery_success', (res, metrics) => ...)\n * .on('delivery_failure', (err) => ...)\n * ```\n */\nvar Emitter = /** @class */ (function () {\n function Emitter() {\n this.callbacks = {};\n }\n Emitter.prototype.on = function (event, callback) {\n if (!this.callbacks[event]) {\n this.callbacks[event] = [callback];\n }\n else {\n this.callbacks[event].push(callback);\n }\n return this;\n };\n Emitter.prototype.once = function (event, callback) {\n var _this = this;\n var on = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this.off(event, on);\n callback.apply(_this, args);\n };\n this.on(event, on);\n return this;\n };\n Emitter.prototype.off = function (event, callback) {\n var _a;\n var fns = (_a = this.callbacks[event]) !== null && _a !== void 0 ? _a : [];\n var without = fns.filter(function (fn) { return fn !== callback; });\n this.callbacks[event] = without;\n return this;\n };\n Emitter.prototype.emit = function (event) {\n var _this = this;\n var _a;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var callbacks = (_a = this.callbacks[event]) !== null && _a !== void 0 ? _a : [];\n callbacks.forEach(function (callback) {\n callback.apply(_this, args);\n });\n return this;\n };\n return Emitter;\n}());\nexport { Emitter };\n//# sourceMappingURL=index.js.map","import { __extends } from \"tslib\";\nimport { Emitter } from '../emitter';\nimport { backoff } from './backoff';\n/**\n * @internal\n */\nexport var ON_REMOVE_FROM_FUTURE = 'onRemoveFromFuture';\nvar PriorityQueue = /** @class */ (function (_super) {\n __extends(PriorityQueue, _super);\n function PriorityQueue(maxAttempts, queue, seen) {\n var _this = _super.call(this) || this;\n _this.future = [];\n _this.maxAttempts = maxAttempts;\n _this.queue = queue;\n _this.seen = seen !== null && seen !== void 0 ? seen : {};\n return _this;\n }\n PriorityQueue.prototype.push = function () {\n var _this = this;\n var items = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n items[_i] = arguments[_i];\n }\n var accepted = items.map(function (operation) {\n var attempts = _this.updateAttempts(operation);\n if (attempts > _this.maxAttempts || _this.includes(operation)) {\n return false;\n }\n _this.queue.push(operation);\n return true;\n });\n this.queue = this.queue.sort(function (a, b) { return _this.getAttempts(a) - _this.getAttempts(b); });\n return accepted;\n };\n PriorityQueue.prototype.pushWithBackoff = function (item) {\n var _this = this;\n if (this.getAttempts(item) === 0) {\n return this.push(item)[0];\n }\n var attempt = this.updateAttempts(item);\n if (attempt > this.maxAttempts || this.includes(item)) {\n return false;\n }\n var timeout = backoff({ attempt: attempt - 1 });\n setTimeout(function () {\n _this.queue.push(item);\n // remove from future list\n _this.future = _this.future.filter(function (f) { return f.id !== item.id; });\n // Lets listeners know that a 'future' message is now available in the queue\n _this.emit(ON_REMOVE_FROM_FUTURE);\n }, timeout);\n this.future.push(item);\n return true;\n };\n PriorityQueue.prototype.getAttempts = function (item) {\n var _a;\n return (_a = this.seen[item.id]) !== null && _a !== void 0 ? _a : 0;\n };\n PriorityQueue.prototype.updateAttempts = function (item) {\n this.seen[item.id] = this.getAttempts(item) + 1;\n return this.getAttempts(item);\n };\n PriorityQueue.prototype.includes = function (item) {\n return (this.queue.includes(item) ||\n this.future.includes(item) ||\n Boolean(this.queue.find(function (i) { return i.id === item.id; })) ||\n Boolean(this.future.find(function (i) { return i.id === item.id; })));\n };\n PriorityQueue.prototype.pop = function () {\n return this.queue.shift();\n };\n Object.defineProperty(PriorityQueue.prototype, \"length\", {\n get: function () {\n return this.queue.length;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PriorityQueue.prototype, \"todo\", {\n get: function () {\n return this.queue.length + this.future.length;\n },\n enumerable: false,\n configurable: true\n });\n return PriorityQueue;\n}(Emitter));\nexport { PriorityQueue };\n//# sourceMappingURL=index.js.map","export function backoff(params) {\n var random = Math.random() + 1;\n var _a = params.minTimeout, minTimeout = _a === void 0 ? 500 : _a, _b = params.factor, factor = _b === void 0 ? 2 : _b, attempt = params.attempt, _c = params.maxTimeout, maxTimeout = _c === void 0 ? Infinity : _c;\n return Math.min(random * minTimeout * Math.pow(factor, attempt), maxTimeout);\n}\n//# sourceMappingURL=backoff.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { CoreContext, ContextCancelation } from '../context';\nfunction tryAsync(fn) {\n return __awaiter(this, void 0, void 0, function () {\n var err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, fn()];\n case 1: return [2 /*return*/, _a.sent()];\n case 2:\n err_1 = _a.sent();\n return [2 /*return*/, Promise.reject(err_1)];\n case 3: return [2 /*return*/];\n }\n });\n });\n}\nexport function attempt(ctx, plugin) {\n ctx.log('debug', 'plugin', { plugin: plugin.name });\n var start = new Date().getTime();\n var hook = plugin[ctx.event.type];\n if (hook === undefined) {\n return Promise.resolve(ctx);\n }\n var newCtx = tryAsync(function () { return hook.apply(plugin, [ctx]); })\n .then(function (ctx) {\n var done = new Date().getTime() - start;\n ctx.stats.gauge('plugin_time', done, [\"plugin:\".concat(plugin.name)]);\n return ctx;\n })\n .catch(function (err) {\n if (err instanceof ContextCancelation &&\n err.type === 'middleware_cancellation') {\n throw err;\n }\n if (err instanceof ContextCancelation) {\n ctx.log('warn', err.type, {\n plugin: plugin.name,\n error: err,\n });\n return err;\n }\n ctx.log('error', 'plugin Error', {\n plugin: plugin.name,\n error: err,\n });\n ctx.stats.increment('plugin_error', 1, [\"plugin:\".concat(plugin.name)]);\n return err;\n });\n return newCtx;\n}\nexport function ensure(ctx, plugin) {\n return attempt(ctx, plugin).then(function (newContext) {\n if (newContext instanceof CoreContext) {\n return newContext;\n }\n ctx.log('debug', 'Context canceled');\n ctx.stats.increment('context_canceled');\n ctx.cancel(newContext);\n });\n}\n//# sourceMappingURL=delivery.js.map","import { __assign, __extends } from \"tslib\";\nvar compactMetricType = function (type) {\n var enums = {\n gauge: 'g',\n counter: 'c',\n };\n return enums[type];\n};\nvar CoreStats = /** @class */ (function () {\n function CoreStats() {\n this.metrics = [];\n }\n CoreStats.prototype.increment = function (metric, by, tags) {\n if (by === void 0) { by = 1; }\n this.metrics.push({\n metric: metric,\n value: by,\n tags: tags !== null && tags !== void 0 ? tags : [],\n type: 'counter',\n timestamp: Date.now(),\n });\n };\n CoreStats.prototype.gauge = function (metric, value, tags) {\n this.metrics.push({\n metric: metric,\n value: value,\n tags: tags !== null && tags !== void 0 ? tags : [],\n type: 'gauge',\n timestamp: Date.now(),\n });\n };\n CoreStats.prototype.flush = function () {\n var formatted = this.metrics.map(function (m) { return (__assign(__assign({}, m), { tags: m.tags.join(',') })); });\n // ie doesn't like console.table\n if (console.table) {\n console.table(formatted);\n }\n else {\n console.log(formatted);\n }\n this.metrics = [];\n };\n /**\n * compact keys for smaller payload\n */\n CoreStats.prototype.serialize = function () {\n return this.metrics.map(function (m) {\n return {\n m: m.metric,\n v: m.value,\n t: m.tags,\n k: compactMetricType(m.type),\n e: m.timestamp,\n };\n });\n };\n return CoreStats;\n}());\nexport { CoreStats };\nvar NullStats = /** @class */ (function (_super) {\n __extends(NullStats, _super);\n function NullStats() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NullStats.prototype.gauge = function () {\n var _args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n _args[_i] = arguments[_i];\n }\n };\n NullStats.prototype.increment = function () {\n var _args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n _args[_i] = arguments[_i];\n }\n };\n NullStats.prototype.flush = function () {\n var _args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n _args[_i] = arguments[_i];\n }\n };\n NullStats.prototype.serialize = function () {\n var _args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n _args[_i] = arguments[_i];\n }\n return [];\n };\n return NullStats;\n}(CoreStats));\nexport { NullStats };\n//# sourceMappingURL=index.js.map","export function isString(obj) {\n return typeof obj === 'string';\n}\nexport function isNumber(obj) {\n return typeof obj === 'number';\n}\nexport function isFunction(obj) {\n return typeof obj === 'function';\n}\nexport function exists(val) {\n return val !== undefined && val !== null;\n}\nexport function isPlainObject(obj) {\n return (Object.prototype.toString.call(obj).slice(8, -1).toLowerCase() === 'object');\n}\n//# sourceMappingURL=helpers.js.map","var IDX=256, HEX=[], BUFFER;\nwhile (IDX--) HEX[IDX] = (IDX + 256).toString(16).substring(1);\n\nexport function v4() {\n\tvar i=0, num, out='';\n\n\tif (!BUFFER || ((IDX + 16) > 256)) {\n\t\tBUFFER = Array(i=256);\n\t\twhile (i--) BUFFER[i] = 256 * Math.random() | 0;\n\t\ti = IDX = 0;\n\t}\n\n\tfor (; i < 16; i++) {\n\t\tnum = BUFFER[IDX + i];\n\t\tif (i==6) out += HEX[num & 15 | 64];\n\t\telse if (i==8) out += HEX[num & 63 | 128];\n\t\telse out += HEX[num];\n\n\t\tif (i & 1 && i > 1 && i < 11) out += '-';\n\t}\n\n\tIDX++;\n\treturn out;\n}\n","export function dset(obj, keys, val) {\n\tkeys.split && (keys=keys.split('.'));\n\tvar i=0, l=keys.length, t=obj, x, k;\n\twhile (i < l) {\n\t\tk = ''+keys[i++];\n\t\tif (k === '__proto__' || k === 'constructor' || k === 'prototype') break;\n\t\tt = t[k] = (i === l) ? val : (typeof(x=t[k])===typeof(keys)) ? x : (keys[i]*0 !== 0 || !!~(''+keys[i]).indexOf('.')) ? {} : [];\n\t}\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"10\":\"tsub-middleware\",\"50\":\"ajs-destination\",\"104\":\"schemaFilter\",\"248\":\"auto-track\",\"391\":\"google-tag-manager\",\"521\":\"remoteMiddleware\",\"538\":\"queryString\",\"666\":\"gtag\",\"694\":\"legacyVideos\"}[chunkId] || chunkId) + \".bundle.\" + {\"10\":\"b717b62fe947259b0454\",\"50\":\"b5407b09b321c1d47d7c\",\"104\":\"babb6cdbe396c20dc88f\",\"248\":\"68ce13c2007188a9368d\",\"391\":\"5dbd0ff300a5c429a406\",\"407\":\"5cd2d2d625cfaa9e2f6e\",\"521\":\"9945b0dd526dedecf614\",\"538\":\"b86b3b6ef44fbbb98ec4\",\"666\":\"fa18b007fc2891339158\",\"694\":\"d1d6291274937f505b12\"}[chunkId] + \".js\";\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t57: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_ht_sdks_events_sdk_js_browser\"] = self[\"webpackChunk_ht_sdks_events_sdk_js_browser\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","/**\n * Returns `process.env` if it is available in the environment.\n * Always returns an object make it similarly easy to use as `process.env`.\n */\nexport function getProcessEnv(): { [key: string]: string | undefined } {\n if (typeof process === 'undefined' || !process.env) {\n return {}\n }\n\n return process.env\n}\n","import {\n isFunction,\n isPlainObject,\n isString,\n isNumber,\n} from '@ht-sdks/events-sdk-js-core'\nimport { Context } from '../context'\nimport {\n Callback,\n JSONObject,\n Options,\n EventProperties,\n HightouchEvent,\n Traits,\n GroupTraits,\n UserTraits,\n} from '../events'\nimport { ID, User } from '../user'\n\n/**\n * Helper for the track method\n */\nexport function resolveArguments(\n eventName: string | HightouchEvent,\n properties?: EventProperties | Callback,\n options?: Options | Callback,\n callback?: Callback\n): [string, EventProperties | Callback, Options, Callback | undefined] {\n const args = [eventName, properties, options, callback]\n\n const name = isPlainObject(eventName) ? eventName.event : eventName\n if (!name || !isString(name)) {\n throw new Error('Event missing')\n }\n\n const data = isPlainObject(eventName)\n ? (eventName.properties ?? {})\n : isPlainObject(properties)\n ? properties\n : {}\n\n let opts: Options = {}\n if (!isFunction(options)) {\n opts = options ?? {}\n }\n\n if (isPlainObject(eventName) && !isFunction(properties)) {\n opts = properties ?? {}\n }\n\n const cb = args.find(isFunction) as Callback | undefined\n return [name, data, opts, cb]\n}\n\n/**\n * Helper for page, screen methods\n */\nexport function resolvePageArguments(\n category?: string | object,\n name?: string | object | Callback,\n properties?: EventProperties | Options | Callback | null,\n options?: Options | Callback,\n callback?: Callback\n): [\n string | null,\n string | null,\n EventProperties,\n Options,\n Callback | undefined,\n] {\n let resolvedCategory: string | undefined | null = null\n let resolvedName: string | undefined | null = null\n const args = [category, name, properties, options, callback]\n\n const strings = args.filter(isString)\n if (strings[0] !== undefined && strings[1] !== undefined) {\n resolvedCategory = strings[0]\n resolvedName = strings[1]\n }\n\n if (strings.length === 1) {\n resolvedCategory = null\n resolvedName = strings[0]\n }\n\n const resolvedCallback = args.find(isFunction) as Callback | undefined\n\n const objects = args.filter((obj) => {\n if (resolvedName === null) {\n return isPlainObject(obj)\n }\n return isPlainObject(obj) || obj === null\n }) as Array<JSONObject | null>\n\n const resolvedProperties = (objects[0] ?? {}) as EventProperties\n const resolvedOptions = (objects[1] ?? {}) as Options\n\n return [\n resolvedCategory,\n resolvedName,\n resolvedProperties,\n resolvedOptions,\n resolvedCallback,\n ]\n}\n\n/**\n * Helper for group, identify methods\n */\nexport const resolveUserArguments = <T extends Traits, U extends User>(\n user: U\n): ResolveUser<T> => {\n return (...args): ReturnType<ResolveUser<T>> => {\n const values: {\n id?: ID\n traits?: T | null\n options?: Options\n callback?: Callback\n } = {}\n // It's a stack so it's reversed so that we go through each of the expected arguments\n const orderStack: Array<keyof typeof values> = [\n 'callback',\n 'options',\n 'traits',\n 'id',\n ]\n\n // Read each argument and eval the possible values here\n for (const arg of args) {\n let current = orderStack.pop()\n if (current === 'id') {\n if (isString(arg) || isNumber(arg)) {\n values.id = arg.toString()\n continue\n }\n if (arg === null || arg === undefined) {\n continue\n }\n // First argument should always be the id, if it is not a valid value we can skip it\n current = orderStack.pop()\n }\n\n // Traits and Options\n if (\n (current === 'traits' || current === 'options') &&\n (arg === null || arg === undefined || isPlainObject(arg))\n ) {\n values[current] = arg as T\n }\n\n // Callback\n if (isFunction(arg)) {\n values.callback = arg as Callback\n break // This is always the last argument\n }\n }\n\n return [\n values.id ?? user.id(),\n (values.traits ?? {}) as T,\n values.options ?? {},\n values.callback,\n ]\n }\n}\n\n/**\n * Helper for alias method\n */\nexport function resolveAliasArguments(\n to: string | number,\n from?: string | number | Options,\n options?: Options | Callback,\n callback?: Callback\n): [string, string | null, Options, Callback | undefined] {\n if (isNumber(to)) to = to.toString() // Legacy behaviour - allow integers for alias calls\n if (isNumber(from)) from = from.toString()\n const args = [to, from, options, callback]\n\n const [aliasTo = to, aliasFrom = null] = args.filter(isString)\n const [opts = {}] = args.filter(isPlainObject)\n const resolvedCallback = args.find(isFunction) as Callback | undefined\n\n return [aliasTo, aliasFrom, opts, resolvedCallback]\n}\n\ntype ResolveUser<T extends Traits> = (\n id?: ID | object,\n traits?: T | Callback | null,\n options?: Options | Callback,\n callback?: Callback\n) => [ID, T, Options, Callback | undefined]\n\nexport type IdentifyParams = Parameters<ResolveUser<UserTraits>>\nexport type GroupParams = Parameters<ResolveUser<GroupTraits>>\nexport type EventParams = Parameters<typeof resolveArguments>\nexport type PageParams = Parameters<typeof resolvePageArguments>\nexport type AliasParams = Parameters<typeof resolveAliasArguments>\n\nexport type DispatchedEvent = Context\n","import { __awaiter, __generator } from \"tslib\";\nimport { invokeCallback } from '../callback';\n/* The amount of time in ms to wait before invoking the callback. */\nexport var getDelay = function (startTimeInEpochMS, timeoutInMS) {\n var elapsedTime = Date.now() - startTimeInEpochMS;\n // increasing the timeout increases the delay by almost the same amount -- this is weird legacy behavior.\n return Math.max((timeoutInMS !== null && timeoutInMS !== void 0 ? timeoutInMS : 300) - elapsedTime, 0);\n};\n/**\n * Push an event into the dispatch queue and invoke any callbacks.\n *\n * @param event - Hightouch event to enqueue.\n * @param queue - Queue to dispatch against.\n * @param emitter - This is typically an instance of \"Analytics\" -- used for metrics / progress information.\n * @param options\n */\nexport function dispatch(ctx, queue, emitter, options) {\n return __awaiter(this, void 0, void 0, function () {\n var startTime, dispatched;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n emitter.emit('dispatch_start', ctx);\n startTime = Date.now();\n if (!queue.isEmpty()) return [3 /*break*/, 2];\n return [4 /*yield*/, queue.dispatchSingle(ctx)];\n case 1:\n dispatched = _a.sent();\n return [3 /*break*/, 4];\n case 2: return [4 /*yield*/, queue.dispatch(ctx)];\n case 3:\n dispatched = _a.sent();\n _a.label = 4;\n case 4:\n if (!(options === null || options === void 0 ? void 0 : options.callback)) return [3 /*break*/, 6];\n return [4 /*yield*/, invokeCallback(dispatched, options.callback, getDelay(startTime, options.timeout))];\n case 5:\n dispatched = _a.sent();\n _a.label = 6;\n case 6:\n if (options === null || options === void 0 ? void 0 : options.debug) {\n dispatched.flush();\n }\n return [2 /*return*/, dispatched];\n }\n });\n });\n}\n//# sourceMappingURL=dispatch.js.map","import { isPlainObject } from '@ht-sdks/events-sdk-js-core'\n\n/**\n * Final Page Context object expected in the Hightouch Event context\n */\nexport interface PageContext {\n path: string\n referrer: string\n search: string\n title: string\n url: string\n}\n\ntype CanonicalUrl = string | undefined\n\nexport const BufferedPageContextDiscriminant = 'bpc' as const\n/**\n * Page Context expected to be built by the snippet.\n * Note: The key names are super short because we want to keep the strings in the html snippet short to save bytes.\n */\nexport interface BufferedPageContext {\n __t: typeof BufferedPageContextDiscriminant // for extra uniqeness\n c: CanonicalUrl\n p: PageContext['path']\n u: PageContext['url']\n s: PageContext['search']\n t: PageContext['title']\n r: PageContext['referrer']\n}\n\n/**\n * `BufferedPageContext` object builder\n */\nexport const createBufferedPageContext = (\n url: string,\n canonicalUrl: CanonicalUrl,\n search: string,\n path: string,\n title: string,\n referrer: string\n): BufferedPageContext => ({\n __t: BufferedPageContextDiscriminant,\n c: canonicalUrl,\n p: path,\n u: url,\n s: search,\n t: title,\n r: referrer,\n})\n\n// my clever/dubious way of making sure this type guard does not get out sync with the type definition\nconst BUFFERED_PAGE_CONTEXT_KEYS = Object.keys(\n createBufferedPageContext('', '', '', '', '', '')\n) as (keyof BufferedPageContext)[]\n\nexport function isBufferedPageContext(\n bufferedPageCtx: unknown\n): bufferedPageCtx is BufferedPageContext {\n if (!isPlainObject(bufferedPageCtx)) return false\n if (bufferedPageCtx.__t !== BufferedPageContextDiscriminant) return false\n\n // ensure obj has all the keys we expect, and none we don't.\n for (const k in bufferedPageCtx) {\n if (!BUFFERED_PAGE_CONTEXT_KEYS.includes(k as keyof BufferedPageContext)) {\n return false\n }\n }\n return true\n}\n\n// Legacy logic: we are we appending search parameters to the canonical URL -- I guess the canonical URL is \"not canonical enough\" (lol)\nconst createCanonicalURL = (canonicalUrl: string, searchParams: string) => {\n return canonicalUrl.indexOf('?') > -1\n ? canonicalUrl\n : canonicalUrl + searchParams\n}\n\n/**\n * Strips hash from URL.\n * http://www.hightouch.local#test -> http://www.hightouch.local\n */\nconst removeHash = (href: string) => {\n const hashIdx = href.indexOf('#')\n return hashIdx === -1 ? href : href.slice(0, hashIdx)\n}\n\nconst parseCanonicalPath = (canonicalUrl: string): string => {\n try {\n return new URL(canonicalUrl).pathname\n } catch (_e) {\n // this is classic behavior -- we assume that if the canonical URL is invalid, it's a raw path.\n return canonicalUrl[0] === '/' ? canonicalUrl : '/' + canonicalUrl\n }\n}\n\n/**\n * Create a `PageContext` from a `BufferedPageContext`.\n * `BufferedPageContext` keys are minified to save bytes in the snippet.\n */\nexport const createPageContext = ({\n c: canonicalUrl,\n p: pathname,\n s: search,\n u: url,\n r: referrer,\n t: title,\n}: BufferedPageContext): PageContext => {\n const newPath = canonicalUrl ? parseCanonicalPath(canonicalUrl) : pathname\n const newUrl = canonicalUrl\n ? createCanonicalURL(canonicalUrl, search)\n : removeHash(url)\n return {\n path: newPath,\n referrer,\n search,\n title,\n url: newUrl,\n }\n}\n\n/**\n * Get page properties from the browser window/document.\n */\nexport const getDefaultBufferedPageContext = (): BufferedPageContext => {\n const c = document.querySelector(\"link[rel='canonical']\")\n return createBufferedPageContext(\n location.href,\n (c && c.getAttribute('href')) || undefined,\n location.search,\n location.pathname,\n document.title,\n document.referrer\n )\n}\n\n/**\n * Get page properties from the browser window/document.\n */\nexport const getDefaultPageContext = (): PageContext =>\n createPageContext(getDefaultBufferedPageContext())\n","import { pick } from '../../lib/pick'\nimport { EventProperties, HightouchEvent } from '../events'\nimport { getDefaultPageContext } from './get-page-context'\n\n/**\n * Augments an event with information about the current page.\n * Page information like URL changes frequently, so this is meant to be captured as close to the event call as possible.\n * Things like `userAgent` do not change, so they can be added later in the flow.\n * We prefer not to add this information to this function, as it increases the main bundle size.\n */\nexport const addPageContext = (\n event: HightouchEvent,\n pageCtx = getDefaultPageContext()\n): void => {\n const evtCtx = event.context! // Context should be set earlier in the flow\n let pageContextFromEventProps: Pick<EventProperties, string> | undefined\n if (event.type === 'page') {\n pageContextFromEventProps =\n event.properties && pick(event.properties, Object.keys(pageCtx))\n\n event.properties = {\n ...pageCtx,\n ...event.properties,\n ...(event.name ? { name: event.name } : {}),\n }\n }\n\n evtCtx.page = {\n ...pageCtx,\n ...pageContextFromEventProps,\n ...evtCtx.page,\n }\n}\n","export function pick<T extends Record<string, any>, K extends keyof T>(\n object: T,\n keys: readonly K[]\n): Pick<T, K>\n\nexport function pick<T extends Record<string, any>>(\n object: T,\n keys: string[]\n): Partial<T>\n\n/**\n * @example\n * pick({ 'a': 1, 'b': '2', 'c': 3 }, ['a', 'c'])\n * => { 'a': 1, 'c': 3 }\n */\nexport function pick<T extends Record<string, any>, K extends keyof T>(\n object: T,\n keys: string[] | K[] | readonly K[]\n) {\n return Object.assign(\n {},\n ...keys.map((key) => {\n if (object && Object.prototype.hasOwnProperty.call(object, key)) {\n return { [key]: object[key] }\n }\n })\n )\n}\n","import { v4 as uuid } from '@lukeed/uuid'\nimport { dset } from 'dset'\nimport { ID, User } from '../user'\nimport {\n Options,\n Integrations,\n EventProperties,\n Traits,\n HightouchEvent,\n} from './interfaces'\nimport md5 from 'spark-md5'\nimport { addPageContext, PageContext } from '../page'\n\nexport * from './interfaces'\n\nexport class EventFactory {\n constructor(public user: User) {}\n\n track(\n event: string,\n properties?: EventProperties,\n options?: Options,\n globalIntegrations?: Integrations,\n pageCtx?: PageContext\n ): HightouchEvent {\n return this.normalize(\n {\n ...this.baseEvent(),\n event,\n type: 'track' as const,\n properties,\n options: { ...options },\n integrations: { ...globalIntegrations },\n },\n pageCtx\n )\n }\n\n page(\n category: string | null,\n page: string | null,\n properties?: EventProperties,\n options?: Options,\n globalIntegrations?: Integrations,\n pageCtx?: PageContext\n ): HightouchEvent {\n const event: Partial<HightouchEvent> = {\n type: 'page' as const,\n properties: { ...properties },\n options: { ...options },\n integrations: { ...globalIntegrations },\n }\n\n if (category !== null) {\n event.category = category\n event.properties = event.properties ?? {}\n event.properties.category = category\n }\n\n if (page !== null) {\n event.name = page\n }\n\n return this.normalize(\n {\n ...this.baseEvent(),\n ...event,\n } as HightouchEvent,\n pageCtx\n )\n }\n\n screen(\n category: string | null,\n screen: string | null,\n properties?: EventProperties,\n options?: Options,\n globalIntegrations?: Integrations,\n pageCtx?: PageContext\n ): HightouchEvent {\n const event: Partial<HightouchEvent> = {\n type: 'screen' as const,\n properties: { ...properties },\n options: { ...options },\n integrations: { ...globalIntegrations },\n }\n\n if (category !== null) {\n event.category = category\n }\n\n if (screen !== null) {\n event.name = screen\n }\n return this.normalize(\n {\n ...this.baseEvent(),\n ...event,\n } as HightouchEvent,\n pageCtx\n )\n }\n\n identify(\n userId: ID,\n traits?: Traits,\n options?: Options,\n globalIntegrations?: Integrations,\n pageCtx?: PageContext\n ): HightouchEvent {\n return this.normalize(\n {\n ...this.baseEvent(),\n type: 'identify' as const,\n userId,\n traits,\n options: { ...options },\n integrations: { ...globalIntegrations },\n },\n pageCtx\n )\n }\n\n group(\n groupId: ID,\n traits?: Traits,\n options?: Options,\n globalIntegrations?: Integrations,\n pageCtx?: PageContext\n ): HightouchEvent {\n return this.normalize(\n {\n ...this.baseEvent(),\n type: 'group' as const,\n traits,\n options: { ...options },\n integrations: { ...globalIntegrations },\n groupId,\n },\n pageCtx\n )\n }\n\n alias(\n to: string,\n from: string | null,\n options?: Options,\n globalIntegrations?: Integrations,\n pageCtx?: PageContext\n ): HightouchEvent {\n const base: Partial<HightouchEvent> = {\n userId: to,\n type: 'alias' as const,\n options: { ...options },\n integrations: { ...globalIntegrations },\n }\n\n if (from !== null) {\n base.previousId = from\n }\n\n if (to === undefined) {\n return this.normalize({\n ...base,\n ...this.baseEvent(),\n } as HightouchEvent)\n }\n\n return this.normalize(\n {\n ...this.baseEvent(),\n ...base,\n } as HightouchEvent,\n pageCtx\n )\n }\n\n private baseEvent(): Partial<HightouchEvent> {\n const base: Partial<HightouchEvent> = {\n integrations: {},\n options: {},\n }\n\n const user = this.user\n\n if (user.id()) {\n base.userId = user.id()\n }\n\n if (user.anonymousId()) {\n base.anonymousId = user.anonymousId()\n }\n\n return base\n }\n\n /**\n * Builds the context part of an event based on \"foreign\" keys that\n * are provided in the `Options` parameter for an Event\n */\n private context(event: HightouchEvent): [object, object] {\n const optionsKeys = ['integrations', 'anonymousId', 'timestamp', 'userId']\n\n const options = event.options ?? {}\n delete options['integrations']\n\n const providedOptionsKeys = Object.keys(options)\n\n const context = event.options?.context ?? {}\n const overrides = {}\n\n providedOptionsKeys.forEach((key) => {\n if (key === 'context') {\n return\n }\n\n if (optionsKeys.includes(key)) {\n dset(overrides, key, options[key])\n } else {\n dset(context, key, options[key])\n }\n })\n\n return [context, overrides]\n }\n\n public normalize(\n event: HightouchEvent,\n pageCtx?: PageContext\n ): HightouchEvent {\n // set anonymousId globally if we encounter an override\n event.options?.anonymousId &&\n this.user.anonymousId(event.options.anonymousId)\n\n const integrationBooleans = Object.keys(event.integrations ?? {}).reduce(\n (integrationNames, name) => {\n return {\n ...integrationNames,\n [name]: Boolean(event.integrations?.[name]),\n }\n },\n {} as Record<string, boolean>\n )\n\n // This is pretty trippy, but here's what's going on:\n // - a) We don't pass initial integration options as part of the event, only if they're true or false\n // - b) We do accept per integration overrides (like integrations.Amplitude.sessionId) at the event level\n // Hence the need to convert base integration options to booleans, but maintain per event integration overrides\n const allIntegrations = {\n // Base config integrations object as booleans\n ...integrationBooleans,\n\n // Per event overrides, for things like amplitude sessionId, for example\n ...event.options?.integrations,\n }\n\n const [context, overrides] = this.context(event)\n const { options, ...rest } = event\n\n const newEvent: HightouchEvent = {\n timestamp: new Date(),\n ...rest,\n context,\n integrations: allIntegrations,\n ...overrides,\n messageId: md5.hash(JSON.stringify(event) + uuid()),\n }\n addPageContext(newEvent, pageCtx)\n\n const session = this.user.getAndUpdateSession()\n if (session != null) {\n newEvent.context = {\n ...newEvent.context,\n ...session,\n }\n }\n\n return newEvent\n }\n}\n","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { groupBy } from '../utils/group-by';\nimport { ON_REMOVE_FROM_FUTURE } from '../priority-queue';\nimport { CoreContext, ContextCancelation } from '../context';\nimport { Emitter } from '../emitter';\nimport { createTaskGroup } from '../task/task-group';\nimport { attempt, ensure } from './delivery';\nvar CoreEventQueue = /** @class */ (function (_super) {\n __extends(CoreEventQueue, _super);\n function CoreEventQueue(priorityQueue) {\n var _this = _super.call(this) || this;\n /**\n * All event deliveries get suspended until all the tasks in this task group are complete.\n * For example: a middleware that augments the event object should be loaded safely as a\n * critical task, this way, event queue will wait for it to be ready before sending events.\n *\n * This applies to all the events already in the queue, and the upcoming ones\n */\n _this.criticalTasks = createTaskGroup();\n _this.plugins = [];\n _this.failedInitializations = [];\n _this.flushing = false;\n _this.queue = priorityQueue;\n _this.queue.on(ON_REMOVE_FROM_FUTURE, function () {\n _this.scheduleFlush(0);\n });\n return _this;\n }\n CoreEventQueue.prototype.register = function (ctx, plugin, instance) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.resolve(plugin.load(ctx, instance))\n .then(function () {\n _this.plugins.push(plugin);\n })\n .catch(function (err) {\n if (plugin.type === 'destination') {\n _this.failedInitializations.push(plugin.name);\n console.warn(plugin.name, err);\n ctx.log('warn', 'Failed to load destination', {\n plugin: plugin.name,\n error: err,\n });\n return;\n }\n throw err;\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CoreEventQueue.prototype.deregister = function (ctx, plugin, instance) {\n return __awaiter(this, void 0, void 0, function () {\n var e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 3, , 4]);\n if (!plugin.unload) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.resolve(plugin.unload(ctx, instance))];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n this.plugins = this.plugins.filter(function (p) { return p.name !== plugin.name; });\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n ctx.log('warn', 'Failed to unload destination', {\n plugin: plugin.name,\n error: e_1,\n });\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n CoreEventQueue.prototype.dispatch = function (ctx) {\n return __awaiter(this, void 0, void 0, function () {\n var willDeliver;\n return __generator(this, function (_a) {\n ctx.log('debug', 'Dispatching');\n ctx.stats.increment('message_dispatched');\n this.queue.push(ctx);\n willDeliver = this.subscribeToDelivery(ctx);\n this.scheduleFlush(0);\n return [2 /*return*/, willDeliver];\n });\n });\n };\n CoreEventQueue.prototype.subscribeToDelivery = function (ctx) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve) {\n var onDeliver = function (flushed, delivered) {\n if (flushed.isSame(ctx)) {\n _this.off('flush', onDeliver);\n if (delivered) {\n resolve(flushed);\n }\n else {\n resolve(flushed);\n }\n }\n };\n _this.on('flush', onDeliver);\n })];\n });\n });\n };\n CoreEventQueue.prototype.dispatchSingle = function (ctx) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n ctx.log('debug', 'Dispatching');\n ctx.stats.increment('message_dispatched');\n this.queue.updateAttempts(ctx);\n ctx.attempts = 1;\n return [2 /*return*/, this.deliver(ctx).catch(function (err) {\n var accepted = _this.enqueuRetry(err, ctx);\n if (!accepted) {\n ctx.setFailedDelivery({ reason: err });\n return ctx;\n }\n return _this.subscribeToDelivery(ctx);\n })];\n });\n });\n };\n CoreEventQueue.prototype.isEmpty = function () {\n return this.queue.length === 0;\n };\n CoreEventQueue.prototype.scheduleFlush = function (timeout) {\n var _this = this;\n if (timeout === void 0) { timeout = 500; }\n if (this.flushing) {\n return;\n }\n this.flushing = true;\n setTimeout(function () {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n _this.flush().then(function () {\n setTimeout(function () {\n _this.flushing = false;\n if (_this.queue.length) {\n _this.scheduleFlush(0);\n }\n }, 0);\n });\n }, timeout);\n };\n CoreEventQueue.prototype.deliver = function (ctx) {\n return __awaiter(this, void 0, void 0, function () {\n var start, done, err_1, error;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.criticalTasks.done()];\n case 1:\n _a.sent();\n start = Date.now();\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, this.flushOne(ctx)];\n case 3:\n ctx = _a.sent();\n done = Date.now() - start;\n this.emit('delivery_success', ctx);\n ctx.stats.gauge('delivered', done);\n ctx.log('debug', 'Delivered', ctx.event);\n return [2 /*return*/, ctx];\n case 4:\n err_1 = _a.sent();\n error = err_1;\n ctx.log('error', 'Failed to deliver', error);\n this.emit('delivery_failure', ctx, error);\n ctx.stats.increment('delivery_failed');\n throw err_1;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n CoreEventQueue.prototype.enqueuRetry = function (err, ctx) {\n var retriable = !(err instanceof ContextCancelation) || err.retry;\n if (!retriable) {\n return false;\n }\n return this.queue.pushWithBackoff(ctx);\n };\n CoreEventQueue.prototype.flush = function () {\n return __awaiter(this, void 0, void 0, function () {\n var ctx, err_2, accepted;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.queue.length === 0) {\n return [2 /*return*/, []];\n }\n ctx = this.queue.pop();\n if (!ctx) {\n return [2 /*return*/, []];\n }\n ctx.attempts = this.queue.getAttempts(ctx);\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.deliver(ctx)];\n case 2:\n ctx = _a.sent();\n this.emit('flush', ctx, true);\n return [3 /*break*/, 4];\n case 3:\n err_2 = _a.sent();\n accepted = this.enqueuRetry(err_2, ctx);\n if (!accepted) {\n ctx.setFailedDelivery({ reason: err_2 });\n this.emit('flush', ctx, false);\n }\n return [2 /*return*/, []];\n case 4: return [2 /*return*/, [ctx]];\n }\n });\n });\n };\n CoreEventQueue.prototype.isReady = function () {\n // return this.plugins.every((p) => p.isLoaded())\n // should we wait for every plugin to load?\n return true;\n };\n CoreEventQueue.prototype.availableExtensions = function (denyList) {\n var available = this.plugins.filter(function (p) {\n var _a, _b, _c;\n // Only filter out destination plugins or the Hightouch.io plugin\n if (p.type !== 'destination' && p.name !== 'Hightouch.io') {\n return true;\n }\n var alternativeNameMatch = undefined;\n (_a = p.alternativeNames) === null || _a === void 0 ? void 0 : _a.forEach(function (name) {\n if (denyList[name] !== undefined) {\n alternativeNameMatch = denyList[name];\n }\n });\n // Explicit integration option takes precedence, `All: false` does not apply to Hightouch.io\n return ((_c = (_b = denyList[p.name]) !== null && _b !== void 0 ? _b : alternativeNameMatch) !== null && _c !== void 0 ? _c : (p.name === 'Hightouch.io' ? true : denyList.All) !== false);\n });\n var _a = groupBy(available, 'type'), _b = _a.before, before = _b === void 0 ? [] : _b, _c = _a.enrichment, enrichment = _c === void 0 ? [] : _c, _d = _a.destination, destination = _d === void 0 ? [] : _d, _e = _a.after, after = _e === void 0 ? [] : _e;\n return {\n before: before,\n enrichment: enrichment,\n destinations: destination,\n after: after,\n };\n };\n CoreEventQueue.prototype.flushOne = function (ctx) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, before, enrichment, _i, before_1, beforeWare, temp, _b, enrichment_1, enrichmentWare, temp, _c, destinations, after, afterCalls;\n var _d, _e;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n if (!this.isReady()) {\n throw new Error('Not ready');\n }\n if (ctx.attempts > 1) {\n this.emit('delivery_retry', ctx);\n }\n _a = this.availableExtensions((_d = ctx.event.integrations) !== null && _d !== void 0 ? _d : {}), before = _a.before, enrichment = _a.enrichment;\n _i = 0, before_1 = before;\n _f.label = 1;\n case 1:\n if (!(_i < before_1.length)) return [3 /*break*/, 4];\n beforeWare = before_1[_i];\n return [4 /*yield*/, ensure(ctx, beforeWare)];\n case 2:\n temp = _f.sent();\n if (temp instanceof CoreContext) {\n ctx = temp;\n }\n this.emit('message_enriched', ctx, beforeWare);\n _f.label = 3;\n case 3:\n _i++;\n return [3 /*break*/, 1];\n case 4:\n _b = 0, enrichment_1 = enrichment;\n _f.label = 5;\n case 5:\n if (!(_b < enrichment_1.length)) return [3 /*break*/, 8];\n enrichmentWare = enrichment_1[_b];\n return [4 /*yield*/, attempt(ctx, enrichmentWare)];\n case 6:\n temp = _f.sent();\n if (temp instanceof CoreContext) {\n ctx = temp;\n }\n this.emit('message_enriched', ctx, enrichmentWare);\n _f.label = 7;\n case 7:\n _b++;\n return [3 /*break*/, 5];\n case 8:\n _c = this.availableExtensions((_e = ctx.event.integrations) !== null && _e !== void 0 ? _e : {}), destinations = _c.destinations, after = _c.after;\n return [4 /*yield*/, new Promise(function (resolve, reject) {\n setTimeout(function () {\n var attempts = destinations.map(function (destination) {\n return attempt(ctx, destination);\n });\n Promise.all(attempts).then(resolve).catch(reject);\n }, 0);\n })];\n case 9:\n _f.sent();\n ctx.stats.increment('message_delivered');\n this.emit('message_delivered', ctx);\n afterCalls = after.map(function (after) { return attempt(ctx, after); });\n return [4 /*yield*/, Promise.all(afterCalls)];\n case 10:\n _f.sent();\n return [2 /*return*/, ctx];\n }\n });\n });\n };\n return CoreEventQueue;\n}(Emitter));\nexport { CoreEventQueue };\n//# sourceMappingURL=event-queue.js.map","import { isThenable } from '../utils/is-thenable';\nexport var createTaskGroup = function () {\n var taskCompletionPromise;\n var resolvePromise;\n var count = 0;\n return {\n done: function () { return taskCompletionPromise; },\n run: function (op) {\n var returnValue = op();\n if (isThenable(returnValue)) {\n if (++count === 1) {\n taskCompletionPromise = new Promise(function (res) { return (resolvePromise = res); });\n }\n returnValue.finally(function () { return --count === 0 && resolvePromise(); });\n }\n return returnValue;\n },\n };\n};\n//# sourceMappingURL=task-group.js.map","/**\n * Check if thenable\n * (instanceof Promise doesn't respect realms)\n */\nexport var isThenable = function (value) {\n return typeof value === 'object' &&\n value !== null &&\n 'then' in value &&\n typeof value.then === 'function';\n};\n//# sourceMappingURL=is-thenable.js.map","import { __spreadArray } from \"tslib\";\nexport function groupBy(collection, grouper) {\n var results = {};\n collection.forEach(function (item) {\n var _a;\n var key = undefined;\n if (typeof grouper === 'string') {\n var suggestedKey = item[grouper];\n key =\n typeof suggestedKey !== 'string'\n ? JSON.stringify(suggestedKey)\n : suggestedKey;\n }\n else if (grouper instanceof Function) {\n key = grouper(item);\n }\n if (key === undefined) {\n return;\n }\n results[key] = __spreadArray(__spreadArray([], ((_a = results[key]) !== null && _a !== void 0 ? _a : []), true), [item], false);\n });\n return results;\n}\n//# sourceMappingURL=group-by.js.map","import { PriorityQueue } from '../../lib/priority-queue'\nimport { PersistedPriorityQueue } from '../../lib/priority-queue/persisted'\nimport { Context } from '../context'\nimport { AnyBrowserPlugin } from '../plugin'\nimport { CoreEventQueue } from '@ht-sdks/events-sdk-js-core'\nimport { isOffline } from '../connection'\n\nexport class EventQueue extends CoreEventQueue<Context, AnyBrowserPlugin> {\n constructor(name: string)\n constructor(priorityQueue: PriorityQueue<Context>)\n constructor(nameOrQueue: string | PriorityQueue<Context>) {\n super(\n typeof nameOrQueue === 'string'\n ? new PersistedPriorityQueue(4, nameOrQueue)\n : nameOrQueue\n )\n }\n async flush(): Promise<Context[]> {\n if (isOffline()) return []\n return super.flush()\n }\n}\n","export default function bindAll<\n ObjType extends { [key: string]: any },\n KeyType extends keyof ObjType,\n>(obj: ObjType): ObjType {\n const proto = obj.constructor.prototype\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key !== 'constructor') {\n const desc = Object.getOwnPropertyDescriptor(\n obj.constructor.prototype,\n key\n )\n if (!!desc && typeof desc.value === 'function') {\n obj[key as KeyType] = obj[key].bind(obj)\n }\n }\n }\n\n return obj\n}\n","import { CookieOptions } from './cookieStorage'\n\nexport const StoreType = {\n Cookie: 'cookie',\n LocalStorage: 'localStorage',\n Memory: 'memory',\n} as const\n\n/**\n * Known Storage Types\n *\n * Convenience settings for storage systems that AJS includes support for\n */\nexport type StoreType = (typeof StoreType)[keyof typeof StoreType]\n\nexport type StorageObject = Record<string, unknown>\n\n/**\n * Defines a Storage object for use in AJS Client.\n */\nexport interface Store<Data extends StorageObject = StorageObject> {\n /**\n * get value for the key from the stores. it will return the first value found in the stores\n * @param key key for the value to be retrieved\n * @returns value for the key or null if not found\n */\n get<K extends keyof Data & string>(key: K): Data[K] | null\n\n /**\n * it will set the value for the key in all the stores\n * @param key key for the value to be stored\n * @param value value to be stored\n * @returns value that was stored\n */\n set<K extends keyof Data & string>(key: K, value: Data[K] | null): void\n /**\n * remove the value for the key from all the stores\n * @param key key for the value to be removed\n * @param storeTypes optional array of store types to be used for removing the value\n */\n remove<K extends keyof Data & string>(key: K): void\n}\n\nexport interface StoreTypeWithSettings<T extends StoreType = StoreType> {\n name: T\n settings?: T extends 'cookie' ? CookieOptions : never\n}\n\nexport type InitializeStorageArgs = (StoreTypeWithSettings | StoreType)[]\n","import { Store, StorageObject } from './types'\n\n// not adding to private method because those method names do not get minified atm, and does not use 'this'\nconst _logStoreKeyError = (\n store: Store,\n action: 'set' | 'get' | 'remove',\n key: string,\n err: unknown\n) => {\n console.warn(\n `${store.constructor.name}: Can't ${action} key \"${key}\" | Err: ${err}`\n )\n}\n\n/**\n * Uses multiple storages in a priority list to get/set values in the order they are specified.\n */\nexport class UniversalStorage<Data extends StorageObject = StorageObject> {\n private stores: Store[]\n\n constructor(stores: Store[]) {\n this.stores = stores\n }\n\n get<K extends keyof Data & string>(key: K): Data[K] | null {\n let val: Data[K] | null = null\n\n for (const store of this.stores) {\n try {\n val = store.get(key) as Data[K] | null\n if (val !== undefined && val !== null) {\n return val\n }\n } catch (e) {\n _logStoreKeyError(store, 'get', key, e)\n }\n }\n return null\n }\n\n set<K extends keyof Data & string>(key: K, value: Data[K] | null): void {\n this.stores.forEach((store) => {\n try {\n store.set(key, value)\n } catch (e) {\n _logStoreKeyError(store, 'set', key, e)\n }\n })\n }\n\n clear<K extends keyof Data & string>(key: K): void {\n this.stores.forEach((store) => {\n try {\n store.remove(key)\n } catch (e) {\n _logStoreKeyError(store, 'remove', key, e)\n }\n })\n }\n\n /*\n This is to support few scenarios where:\n - value exist in one of the stores ( as a result of other stores being cleared from browser ) and we want to resync them\n - read values in AJS 1.0 format ( for customers after 1.0 --> 2.0 migration ) and then re-write them in AJS 2.0 format\n */\n getAndSync<K extends keyof Data & string>(key: K): Data[K] | null {\n const val = this.get(key)\n\n // legacy behavior, getAndSync can change the type of a value from number to string (AJS 1.0 stores numerical values as a number)\n const coercedValue = (typeof val === 'number' ? val.toString() : val) as\n | Data[K]\n | null\n\n this.set(key, coercedValue)\n\n return coercedValue\n }\n}\n","import { Store, StorageObject } from './types'\n\n/**\n * Data Storage using in memory object\n */\nexport class MemoryStorage<\n Data extends StorageObject = StorageObject,\n> implements Store<Data> {\n private cache: Record<string, unknown> = {}\n\n get<K extends keyof Data & string>(key: K): Data[K] | null {\n return (this.cache[key] ?? null) as Data[K] | null\n }\n\n set<K extends keyof Data & string>(key: K, value: Data[K] | null): void {\n this.cache[key] = value\n }\n\n remove<K extends keyof Data & string>(key: K): void {\n delete this.cache[key]\n }\n}\n","import { StoreType, StoreTypeWithSettings } from './types'\n\nexport type UniversalStorageSettings = { stores: StoreType[] }\n\n// This is setup this way to permit eventually a different set of settings for custom storage\nexport type StorageSettings = UniversalStorageSettings\n\nexport function isArrayOfStoreType(\n s: StorageSettings\n): s is UniversalStorageSettings {\n return (\n s &&\n s.stores &&\n Array.isArray(s.stores) &&\n s.stores.every((e) => Object.values(StoreType).includes(e))\n )\n}\n\nexport function isStoreTypeWithSettings(\n s: StoreTypeWithSettings | StoreType\n): s is StoreTypeWithSettings {\n return typeof s === 'object' && s.name !== undefined\n}\n","/*! js-cookie v3.0.1 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (key, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n key = encodeURIComponent(key)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n key + '=' + converter.write(value, key) + stringifiedAttributes)\n }\n\n function get (key) {\n if (typeof document === 'undefined' || (arguments.length && !key)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var foundKey = decodeURIComponent(parts[0]);\n jar[foundKey] = converter.read(value, foundKey);\n\n if (key === foundKey) {\n break\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar\n }\n\n return Object.create(\n {\n set: set,\n get: get,\n remove: function (key, attributes) {\n set(\n key,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport default api;\n","import cookie, { CookieAttributes } from 'js-cookie'\n\n/**\n * Levels returns all levels of the given url.\n *\n * @param {string} url\n * @return {Array}\n * @api public\n */\nfunction levels(url: URL): string[] {\n const host = url.hostname\n const parts = host.split('.')\n const last = parts[parts.length - 1]\n const levels: string[] = []\n\n // Ip address.\n if (parts.length === 4 && parseInt(last, 10) > 0) {\n return levels\n }\n\n // Localhost.\n if (parts.length <= 1) {\n return levels\n }\n\n // Create levels.\n for (let i = parts.length - 2; i >= 0; --i) {\n levels.push(parts.slice(i).join('.'))\n }\n\n return levels\n}\n\nfunction parseUrl(url: string): URL | undefined {\n try {\n return new URL(url)\n } catch {\n return\n }\n}\n\nexport function tld(url: string): string | undefined {\n const parsedUrl = parseUrl(url)\n if (!parsedUrl) return\n\n const lvls = levels(parsedUrl)\n\n // Test for the top most domain that the browser allows\n for (let i = 0; i < lvls.length; ++i) {\n const cname = Math.round(Math.random() * 10_000).toString()\n const domain = lvls[i]\n const opts = {\n domain: '.' + domain,\n path: '/',\n sameSite: 'Lax',\n } as CookieAttributes\n\n try {\n // cookie access throw an error if the library is ran inside a sandboxed environment (e.g. sandboxed iframe)\n cookie.set(cname, '1', opts)\n if (cookie.get(cname)) {\n cookie.remove(cname, opts)\n return domain\n }\n } catch (_) {\n return\n }\n }\n}\n","import { Store, StorageObject } from './types'\nimport jar from 'js-cookie'\nimport { tld } from '../user/tld'\n\nconst ONE_YEAR = 365\n\nexport interface CookieOptions {\n maxage?: number\n domain?: string\n path?: string\n secure?: boolean\n sameSite?: string\n}\n\n/**\n * Data storage using browser cookies\n */\nexport class CookieStorage<\n Data extends StorageObject = StorageObject,\n> implements Store<Data> {\n static get defaults(): CookieOptions {\n return {\n maxage: ONE_YEAR,\n domain: tld(window.location.href),\n path: '/',\n sameSite: 'Lax',\n }\n }\n\n private options: Required<CookieOptions>\n\n constructor(options: CookieOptions = CookieStorage.defaults) {\n this.options = {\n ...CookieStorage.defaults,\n ...options,\n } as Required<CookieOptions>\n }\n\n private opts(): jar.CookieAttributes {\n return {\n sameSite: this.options.sameSite as jar.CookieAttributes['sameSite'],\n expires: this.options.maxage,\n domain: this.options.domain,\n path: this.options.path,\n secure: this.options.secure,\n }\n }\n\n get<K extends keyof Data & string>(key: K): Data[K] | null {\n try {\n const value = jar.get(key)\n\n if (value === undefined || value === null) {\n return null\n }\n\n try {\n return JSON.parse(value) ?? null\n } catch (e) {\n return (value ?? null) as unknown as Data[K] | null\n }\n } catch (e) {\n return null\n }\n }\n\n set<K extends keyof Data & string>(key: K, value: Data[K] | null): void {\n if (typeof value === 'string') {\n jar.set(key, value, this.opts())\n } else if (value === null) {\n jar.remove(key, this.opts())\n } else {\n jar.set(key, JSON.stringify(value), this.opts())\n }\n }\n\n remove<K extends keyof Data & string>(key: K): void {\n return jar.remove(key, this.opts())\n }\n}\n","import { StorageObject, Store } from './types'\n\n/**\n * Data storage using browser's localStorage\n */\nexport class LocalStorage<\n Data extends StorageObject = StorageObject,\n> implements Store<Data> {\n private localStorageWarning(\n key: keyof Data & string,\n state: 'full' | 'unavailable'\n ) {\n console.warn(`Unable to access ${key}, localStorage may be ${state}`)\n }\n\n get<K extends keyof Data & string>(key: K): Data[K] | null {\n try {\n const val = localStorage.getItem(key)\n if (val === null) {\n return null\n }\n try {\n return JSON.parse(val) ?? null\n } catch (e) {\n return (val ?? null) as unknown as Data[K] | null\n }\n } catch (err) {\n this.localStorageWarning(key, 'unavailable')\n return null\n }\n }\n\n set<K extends keyof Data & string>(key: K, value: Data[K] | null): void {\n try {\n localStorage.setItem(key, JSON.stringify(value))\n } catch {\n this.localStorageWarning(key, 'full')\n }\n }\n\n remove<K extends keyof Data & string>(key: K): void {\n try {\n return localStorage.removeItem(key)\n } catch (err) {\n this.localStorageWarning(key, 'unavailable')\n }\n }\n}\n","import { CookieOptions, CookieStorage } from './cookieStorage'\nimport { LocalStorage } from './localStorage'\nimport { MemoryStorage } from './memoryStorage'\nimport { isStoreTypeWithSettings } from './settings'\nimport { StoreType, Store, InitializeStorageArgs } from './types'\n\nexport * from './types'\nexport * from './localStorage'\nexport * from './cookieStorage'\nexport * from './memoryStorage'\nexport * from './universalStorage'\nexport * from './settings'\n\n/**\n * Creates multiple storage systems from an array of StoreType and options\n * @param args StoreType and options\n * @returns Storage array\n */\nexport function initializeStorages(args: InitializeStorageArgs): Store[] {\n const storages = args.map((s) => {\n let type: StoreType\n let settings\n\n if (isStoreTypeWithSettings(s)) {\n type = s.name\n settings = s.settings\n } else {\n type = s\n }\n\n switch (type) {\n case StoreType.Cookie:\n return new CookieStorage(settings)\n case StoreType.LocalStorage:\n return new LocalStorage()\n case StoreType.Memory:\n return new MemoryStorage()\n default:\n throw new Error(`Unknown Store Type: ${s}`)\n }\n })\n return storages\n}\n\n/**\n * Injects the CookieOptions into a the arguments for initializeStorage\n * @param storeTypes list of storeType\n * @param cookieOptions cookie Options\n * @returns arguments for initializeStorage\n */\nexport function applyCookieOptions(\n storeTypes: StoreType[],\n cookieOptions?: CookieOptions\n): InitializeStorageArgs {\n return storeTypes.map((s) => {\n if (cookieOptions && s === StoreType.Cookie) {\n return {\n name: s,\n settings: cookieOptions,\n }\n }\n return s\n })\n}\n","//@ts-nocheck\n/* eslint-disable no-use-before-define */\n\nconst crypto =\n (typeof globalThis != 'undefined' ? globalThis : void 0)?.crypto ||\n (typeof global != 'undefined' ? global : void 0)?.crypto ||\n (typeof window != 'undefined' ? window : void 0)?.crypto ||\n (typeof self != 'undefined' ? self : void 0)?.crypto ||\n (typeof frames != 'undefined' ? frames : void 0)?.[0]?.crypto\n\nlet randomWordArray\n\nif (crypto) {\n randomWordArray = (nBytes) => {\n const words = []\n\n for (let i = 0, rcache; i < nBytes; i += 4) {\n words.push(crypto.getRandomValues(new Uint32Array(1))[0])\n }\n\n return new WordArray(words, nBytes)\n }\n} else {\n // Because there is no global crypto property in this context, cryptographically unsafe Math.random() is used.\n\n randomWordArray = (nBytes) => {\n const words = []\n\n const r = (m_w) => {\n let _m_w = m_w\n let _m_z = 0x3ade68b1\n const mask = 0xffffffff\n\n return () => {\n _m_z = (0x9069 * (_m_z & 0xffff) + (_m_z >> 0x10)) & mask\n _m_w = (0x4650 * (_m_w & 0xffff) + (_m_w >> 0x10)) & mask\n let result = ((_m_z << 0x10) + _m_w) & mask\n result /= 0x100000000\n result += 0.5\n return result * (Math.random() > 0.5 ? 1 : -1)\n }\n }\n\n for (let i = 0, rcache; i < nBytes; i += 4) {\n const _r = r((rcache || Math.random()) * 0x100000000)\n\n rcache = _r() * 0x3ade67b7\n words.push((_r() * 0x100000000) | 0)\n }\n\n return new WordArray(words, nBytes)\n }\n}\n\n/**\n * Base class for inheritance.\n */\nexport class Base {\n /**\n * Extends this object and runs the init method.\n * Arguments to create() will be passed to init().\n *\n * @return {Object} The new object.\n *\n * @static\n *\n * @example\n *\n * var instance = MyType.create();\n */\n static create(...args) {\n return new this(...args)\n }\n\n /**\n * Copies properties into this object.\n *\n * @param {Object} properties The properties to mix in.\n *\n * @example\n *\n * MyType.mixIn({\n * field: 'value'\n * });\n */\n mixIn(properties) {\n return Object.assign(this, properties)\n }\n\n /**\n * Creates a copy of this object.\n *\n * @return {Object} The clone.\n *\n * @example\n *\n * var clone = instance.clone();\n */\n clone() {\n const clone = new this.constructor()\n Object.assign(clone, this)\n return clone\n }\n}\n\n/**\n * An array of 32-bit words.\n *\n * @property {Array} words The array of 32-bit words.\n * @property {number} sigBytes The number of significant bytes in this word array.\n */\nexport class WordArray extends Base {\n /**\n * Initializes a newly created word array.\n *\n * @param {Array} words (Optional) An array of 32-bit words.\n * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n *\n * @example\n *\n * var wordArray = CryptoJS.lib.WordArray.create();\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n */\n constructor(words = [], sigBytes = words.length * 4) {\n super()\n\n let typedArray = words\n // Convert buffers to uint8\n if (typedArray instanceof ArrayBuffer) {\n typedArray = new Uint8Array(typedArray)\n }\n\n // Convert other array views to uint8\n if (\n typedArray instanceof Int8Array ||\n typedArray instanceof Uint8ClampedArray ||\n typedArray instanceof Int16Array ||\n typedArray instanceof Uint16Array ||\n typedArray instanceof Int32Array ||\n typedArray instanceof Uint32Array ||\n typedArray instanceof Float32Array ||\n typedArray instanceof Float64Array\n ) {\n typedArray = new Uint8Array(\n typedArray.buffer,\n typedArray.byteOffset,\n typedArray.byteLength\n )\n }\n\n // Handle Uint8Array\n if (typedArray instanceof Uint8Array) {\n // Shortcut\n const typedArrayByteLength = typedArray.byteLength\n\n // Extract bytes\n const _words = []\n for (let i = 0; i < typedArrayByteLength; i += 1) {\n _words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8)\n }\n\n // Initialize this word array\n this.words = _words\n this.sigBytes = typedArrayByteLength\n } else {\n // Else call normal init\n this.words = words\n this.sigBytes = sigBytes\n }\n }\n\n /**\n * Creates a word array filled with random bytes.\n *\n * @param {number} nBytes The number of random bytes to generate.\n *\n * @return {WordArray} The random word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.lib.WordArray.random(16);\n */\n static random = randomWordArray\n\n /**\n * Converts this word array to a string.\n *\n * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n *\n * @return {string} The stringified word array.\n *\n * @example\n *\n * var string = wordArray + '';\n * var string = wordArray.toString();\n * var string = wordArray.toString(CryptoJS.enc.Utf8);\n */\n toString(encoder = Hex) {\n return encoder.stringify(this)\n }\n\n /**\n * Concatenates a word array to this word array.\n *\n * @param {WordArray} wordArray The word array to append.\n *\n * @return {WordArray} This word array.\n *\n * @example\n *\n * wordArray1.concat(wordArray2);\n */\n concat(wordArray) {\n // Shortcuts\n const thisWords = this.words\n const thatWords = wordArray.words\n const thisSigBytes = this.sigBytes\n const thatSigBytes = wordArray.sigBytes\n\n // Clamp excess bits\n this.clamp()\n\n // Concat\n if (thisSigBytes % 4) {\n // Copy one byte at a time\n for (let i = 0; i < thatSigBytes; i += 1) {\n const thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff\n thisWords[(thisSigBytes + i) >>> 2] |=\n thatByte << (24 - ((thisSigBytes + i) % 4) * 8)\n }\n } else {\n // Copy one word at a time\n for (let i = 0; i < thatSigBytes; i += 4) {\n thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2]\n }\n }\n this.sigBytes += thatSigBytes\n\n // Chainable\n return this\n }\n\n /**\n * Removes insignificant bits.\n *\n * @example\n *\n * wordArray.clamp();\n */\n clamp() {\n // Shortcuts\n const { words, sigBytes } = this\n\n // Clamp\n words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8)\n words.length = Math.ceil(sigBytes / 4)\n }\n\n /**\n * Creates a copy of this word array.\n *\n * @return {WordArray} The clone.\n *\n * @example\n *\n * var clone = wordArray.clone();\n */\n clone() {\n const clone = super.clone.call(this)\n clone.words = this.words.slice(0)\n\n return clone\n }\n}\n\n/**\n * Hex encoding strategy.\n */\nexport const Hex = {\n /**\n * Converts a word array to a hex string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The hex string.\n *\n * @static\n *\n * @example\n *\n * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n */\n stringify(wordArray) {\n // Shortcuts\n const { words, sigBytes } = wordArray\n\n // Convert\n const hexChars = []\n for (let i = 0; i < sigBytes; i += 1) {\n const bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff\n hexChars.push((bite >>> 4).toString(16))\n hexChars.push((bite & 0x0f).toString(16))\n }\n\n return hexChars.join('')\n },\n\n /**\n * Converts a hex string to a word array.\n *\n * @param {string} hexStr The hex string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n */\n parse(hexStr) {\n // Shortcut\n const hexStrLength = hexStr.length\n\n // Convert\n const words = []\n for (let i = 0; i < hexStrLength; i += 2) {\n words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4)\n }\n\n return new WordArray(words, hexStrLength / 2)\n },\n}\n\n/**\n * Latin1 encoding strategy.\n */\nexport const Latin1 = {\n /**\n * Converts a word array to a Latin1 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Latin1 string.\n *\n * @static\n *\n * @example\n *\n * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n */\n stringify(wordArray) {\n // Shortcuts\n const { words, sigBytes } = wordArray\n\n // Convert\n const latin1Chars = []\n for (let i = 0; i < sigBytes; i += 1) {\n const bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff\n latin1Chars.push(String.fromCharCode(bite))\n }\n\n return latin1Chars.join('')\n },\n\n /**\n * Converts a Latin1 string to a word array.\n *\n * @param {string} latin1Str The Latin1 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n */\n parse(latin1Str) {\n // Shortcut\n const latin1StrLength = latin1Str.length\n\n // Convert\n const words = []\n for (let i = 0; i < latin1StrLength; i += 1) {\n words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8)\n }\n\n return new WordArray(words, latin1StrLength)\n },\n}\n\n/**\n * UTF-8 encoding strategy.\n */\nexport const Utf8 = {\n /**\n * Converts a word array to a UTF-8 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The UTF-8 string.\n *\n * @static\n *\n * @example\n *\n * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n */\n stringify(wordArray) {\n try {\n return decodeURIComponent(escape(Latin1.stringify(wordArray)))\n } catch (e) {\n throw new Error('Malformed UTF-8 data')\n }\n },\n\n /**\n * Converts a UTF-8 string to a word array.\n *\n * @param {string} utf8Str The UTF-8 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n */\n parse(utf8Str) {\n return Latin1.parse(unescape(encodeURIComponent(utf8Str)))\n },\n}\n\n/**\n * Abstract buffered block algorithm template.\n *\n * The property blockSize must be implemented in a concrete subtype.\n *\n * @property {number} _minBufferSize\n *\n * The number of blocks that should be kept unprocessed in the buffer. Default: 0\n */\nexport class BufferedBlockAlgorithm extends Base {\n constructor() {\n super()\n this._minBufferSize = 0\n }\n\n /**\n * Resets this block algorithm's data buffer to its initial state.\n *\n * @example\n *\n * bufferedBlockAlgorithm.reset();\n */\n reset() {\n // Initial values\n this._data = new WordArray()\n this._nDataBytes = 0\n }\n\n /**\n * Adds new data to this block algorithm's buffer.\n *\n * @param {WordArray|string} data\n *\n * The data to append. Strings are converted to a WordArray using UTF-8.\n *\n * @example\n *\n * bufferedBlockAlgorithm._append('data');\n * bufferedBlockAlgorithm._append(wordArray);\n */\n _append(data) {\n let m_data = data\n\n // Convert string to WordArray, else assume WordArray already\n if (typeof m_data === 'string') {\n m_data = Utf8.parse(m_data)\n }\n\n // Append\n this._data.concat(m_data)\n this._nDataBytes += m_data.sigBytes\n }\n\n /**\n * Processes available data blocks.\n *\n * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n *\n * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n *\n * @return {WordArray} The processed data.\n *\n * @example\n *\n * var processedData = bufferedBlockAlgorithm._process();\n * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n */\n _process(doFlush) {\n let processedWords\n\n // Shortcuts\n const { _data: data, blockSize } = this\n const dataWords = data.words\n const dataSigBytes = data.sigBytes\n const blockSizeBytes = blockSize * 4\n\n // Count blocks ready\n let nBlocksReady = dataSigBytes / blockSizeBytes\n if (doFlush) {\n // Round up to include partial blocks\n nBlocksReady = Math.ceil(nBlocksReady)\n } else {\n // Round down to include only full blocks,\n // less the number of blocks that must remain in the buffer\n nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0)\n }\n\n // Count words ready\n const nWordsReady = nBlocksReady * blockSize\n\n // Count bytes ready\n const nBytesReady = Math.min(nWordsReady * 4, dataSigBytes)\n\n // Process blocks\n if (nWordsReady) {\n for (let offset = 0; offset < nWordsReady; offset += blockSize) {\n // Perform concrete-algorithm logic\n this._doProcessBlock(dataWords, offset)\n }\n\n // Remove processed words\n processedWords = dataWords.splice(0, nWordsReady)\n data.sigBytes -= nBytesReady\n }\n\n // Return processed words\n return new WordArray(processedWords, nBytesReady)\n }\n\n /**\n * Creates a copy of this object.\n *\n * @return {Object} The clone.\n *\n * @example\n *\n * var clone = bufferedBlockAlgorithm.clone();\n */\n clone() {\n const clone = super.clone.call(this)\n clone._data = this._data.clone()\n\n return clone\n }\n}\n\n/**\n * Abstract hasher template.\n *\n * @property {number} blockSize\n *\n * The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n */\nexport class Hasher extends BufferedBlockAlgorithm {\n constructor(cfg) {\n super()\n\n this.blockSize = 512 / 32\n\n /**\n * Configuration options.\n */\n this.cfg = Object.assign(new Base(), cfg)\n\n // Set initial values\n this.reset()\n }\n\n /**\n * Creates a shortcut function to a hasher's object interface.\n *\n * @param {Hasher} SubHasher The hasher to create a helper for.\n *\n * @return {Function} The shortcut function.\n *\n * @static\n *\n * @example\n *\n * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n */\n static _createHelper(SubHasher) {\n return (message, cfg) => new SubHasher(cfg).finalize(message)\n }\n\n /**\n * Creates a shortcut function to the HMAC's object interface.\n *\n * @param {Hasher} SubHasher The hasher to use in this HMAC helper.\n *\n * @return {Function} The shortcut function.\n *\n * @static\n *\n * @example\n *\n * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n */\n static _createHmacHelper(SubHasher) {\n return (message, key) => new HMAC(SubHasher, key).finalize(message)\n }\n\n /**\n * Resets this hasher to its initial state.\n *\n * @example\n *\n * hasher.reset();\n */\n reset() {\n // Reset data buffer\n super.reset.call(this)\n\n // Perform concrete-hasher logic\n this._doReset()\n }\n\n /**\n * Updates this hasher with a message.\n *\n * @param {WordArray|string} messageUpdate The message to append.\n *\n * @return {Hasher} This hasher.\n *\n * @example\n *\n * hasher.update('message');\n * hasher.update(wordArray);\n */\n update(messageUpdate) {\n // Append\n this._append(messageUpdate)\n\n // Update the hash\n this._process()\n\n // Chainable\n return this\n }\n\n /**\n * Finalizes the hash computation.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\n *\n * @return {WordArray} The hash.\n *\n * @example\n *\n * var hash = hasher.finalize();\n * var hash = hasher.finalize('message');\n * var hash = hasher.finalize(wordArray);\n */\n finalize(messageUpdate) {\n // Final message update\n if (messageUpdate) {\n this._append(messageUpdate)\n }\n\n // Perform concrete-hasher logic\n const hash = this._doFinalize()\n\n return hash\n }\n}\n\n/**\n * HMAC algorithm.\n */\nexport class HMAC extends Base {\n /**\n * Initializes a newly created HMAC.\n *\n * @param {Hasher} SubHasher The hash algorithm to use.\n * @param {WordArray|string} key The secret key.\n *\n * @example\n *\n * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n */\n constructor(SubHasher, key) {\n super()\n\n const hasher = new SubHasher()\n this._hasher = hasher\n\n // Convert string to WordArray, else assume WordArray already\n let _key = key\n if (typeof _key === 'string') {\n _key = Utf8.parse(_key)\n }\n\n // Shortcuts\n const hasherBlockSize = hasher.blockSize\n const hasherBlockSizeBytes = hasherBlockSize * 4\n\n // Allow arbitrary length keys\n if (_key.sigBytes > hasherBlockSizeBytes) {\n _key = hasher.finalize(key)\n }\n\n // Clamp excess bits\n _key.clamp()\n\n // Clone key for inner and outer pads\n const oKey = _key.clone()\n this._oKey = oKey\n const iKey = _key.clone()\n this._iKey = iKey\n\n // Shortcuts\n const oKeyWords = oKey.words\n const iKeyWords = iKey.words\n\n // XOR keys with pad constants\n for (let i = 0; i < hasherBlockSize; i += 1) {\n oKeyWords[i] ^= 0x5c5c5c5c\n iKeyWords[i] ^= 0x36363636\n }\n oKey.sigBytes = hasherBlockSizeBytes\n iKey.sigBytes = hasherBlockSizeBytes\n\n // Set initial values\n this.reset()\n }\n\n /**\n * Resets this HMAC to its initial state.\n *\n * @example\n *\n * hmacHasher.reset();\n */\n reset() {\n // Shortcut\n const hasher = this._hasher\n\n // Reset\n hasher.reset()\n hasher.update(this._iKey)\n }\n\n /**\n * Updates this HMAC with a message.\n *\n * @param {WordArray|string} messageUpdate The message to append.\n *\n * @return {HMAC} This HMAC instance.\n *\n * @example\n *\n * hmacHasher.update('message');\n * hmacHasher.update(wordArray);\n */\n update(messageUpdate) {\n this._hasher.update(messageUpdate)\n\n // Chainable\n return this\n }\n\n /**\n * Finalizes the HMAC computation.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\n *\n * @return {WordArray} The HMAC.\n *\n * @example\n *\n * var hmac = hmacHasher.finalize();\n * var hmac = hmacHasher.finalize('message');\n * var hmac = hmacHasher.finalize(wordArray);\n */\n finalize(messageUpdate) {\n // Shortcut\n const hasher = this._hasher\n\n // Compute HMAC\n const innerHash = hasher.finalize(messageUpdate)\n hasher.reset()\n const hmac = hasher.finalize(this._oKey.clone().concat(innerHash))\n\n return hmac\n }\n}\n","//@ts-nocheck\nimport { WordArray, Hasher } from './core'\n\n// Constants table\nconst T = []\n\n// Compute constants\nfor (let i = 0; i < 64; i += 1) {\n T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0\n}\n\nconst FF = (a, b, c, d, x, s, t) => {\n const n = a + ((b & c) | (~b & d)) + x + t\n return ((n << s) | (n >>> (32 - s))) + b\n}\n\nconst GG = (a, b, c, d, x, s, t) => {\n const n = a + ((b & d) | (c & ~d)) + x + t\n return ((n << s) | (n >>> (32 - s))) + b\n}\n\nconst HH = (a, b, c, d, x, s, t) => {\n const n = a + (b ^ c ^ d) + x + t\n return ((n << s) | (n >>> (32 - s))) + b\n}\n\nconst II = (a, b, c, d, x, s, t) => {\n const n = a + (c ^ (b | ~d)) + x + t\n return ((n << s) | (n >>> (32 - s))) + b\n}\n\n/**\n * MD5 hash algorithm.\n */\nexport class MD5Algo extends Hasher {\n _doReset() {\n this._hash = new WordArray([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476])\n }\n\n _doProcessBlock(M, offset) {\n const _M = M\n\n // Swap endian\n for (let i = 0; i < 16; i += 1) {\n // Shortcuts\n const offset_i = offset + i\n const M_offset_i = M[offset_i]\n\n _M[offset_i] =\n (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n }\n\n // Shortcuts\n const H = this._hash.words\n\n const M_offset_0 = _M[offset + 0]\n const M_offset_1 = _M[offset + 1]\n const M_offset_2 = _M[offset + 2]\n const M_offset_3 = _M[offset + 3]\n const M_offset_4 = _M[offset + 4]\n const M_offset_5 = _M[offset + 5]\n const M_offset_6 = _M[offset + 6]\n const M_offset_7 = _M[offset + 7]\n const M_offset_8 = _M[offset + 8]\n const M_offset_9 = _M[offset + 9]\n const M_offset_10 = _M[offset + 10]\n const M_offset_11 = _M[offset + 11]\n const M_offset_12 = _M[offset + 12]\n const M_offset_13 = _M[offset + 13]\n const M_offset_14 = _M[offset + 14]\n const M_offset_15 = _M[offset + 15]\n\n // Working varialbes\n let a = H[0]\n let b = H[1]\n let c = H[2]\n let d = H[3]\n\n // Computation\n a = FF(a, b, c, d, M_offset_0, 7, T[0])\n d = FF(d, a, b, c, M_offset_1, 12, T[1])\n c = FF(c, d, a, b, M_offset_2, 17, T[2])\n b = FF(b, c, d, a, M_offset_3, 22, T[3])\n a = FF(a, b, c, d, M_offset_4, 7, T[4])\n d = FF(d, a, b, c, M_offset_5, 12, T[5])\n c = FF(c, d, a, b, M_offset_6, 17, T[6])\n b = FF(b, c, d, a, M_offset_7, 22, T[7])\n a = FF(a, b, c, d, M_offset_8, 7, T[8])\n d = FF(d, a, b, c, M_offset_9, 12, T[9])\n c = FF(c, d, a, b, M_offset_10, 17, T[10])\n b = FF(b, c, d, a, M_offset_11, 22, T[11])\n a = FF(a, b, c, d, M_offset_12, 7, T[12])\n d = FF(d, a, b, c, M_offset_13, 12, T[13])\n c = FF(c, d, a, b, M_offset_14, 17, T[14])\n b = FF(b, c, d, a, M_offset_15, 22, T[15])\n\n a = GG(a, b, c, d, M_offset_1, 5, T[16])\n d = GG(d, a, b, c, M_offset_6, 9, T[17])\n c = GG(c, d, a, b, M_offset_11, 14, T[18])\n b = GG(b, c, d, a, M_offset_0, 20, T[19])\n a = GG(a, b, c, d, M_offset_5, 5, T[20])\n d = GG(d, a, b, c, M_offset_10, 9, T[21])\n c = GG(c, d, a, b, M_offset_15, 14, T[22])\n b = GG(b, c, d, a, M_offset_4, 20, T[23])\n a = GG(a, b, c, d, M_offset_9, 5, T[24])\n d = GG(d, a, b, c, M_offset_14, 9, T[25])\n c = GG(c, d, a, b, M_offset_3, 14, T[26])\n b = GG(b, c, d, a, M_offset_8, 20, T[27])\n a = GG(a, b, c, d, M_offset_13, 5, T[28])\n d = GG(d, a, b, c, M_offset_2, 9, T[29])\n c = GG(c, d, a, b, M_offset_7, 14, T[30])\n b = GG(b, c, d, a, M_offset_12, 20, T[31])\n\n a = HH(a, b, c, d, M_offset_5, 4, T[32])\n d = HH(d, a, b, c, M_offset_8, 11, T[33])\n c = HH(c, d, a, b, M_offset_11, 16, T[34])\n b = HH(b, c, d, a, M_offset_14, 23, T[35])\n a = HH(a, b, c, d, M_offset_1, 4, T[36])\n d = HH(d, a, b, c, M_offset_4, 11, T[37])\n c = HH(c, d, a, b, M_offset_7, 16, T[38])\n b = HH(b, c, d, a, M_offset_10, 23, T[39])\n a = HH(a, b, c, d, M_offset_13, 4, T[40])\n d = HH(d, a, b, c, M_offset_0, 11, T[41])\n c = HH(c, d, a, b, M_offset_3, 16, T[42])\n b = HH(b, c, d, a, M_offset_6, 23, T[43])\n a = HH(a, b, c, d, M_offset_9, 4, T[44])\n d = HH(d, a, b, c, M_offset_12, 11, T[45])\n c = HH(c, d, a, b, M_offset_15, 16, T[46])\n b = HH(b, c, d, a, M_offset_2, 23, T[47])\n\n a = II(a, b, c, d, M_offset_0, 6, T[48])\n d = II(d, a, b, c, M_offset_7, 10, T[49])\n c = II(c, d, a, b, M_offset_14, 15, T[50])\n b = II(b, c, d, a, M_offset_5, 21, T[51])\n a = II(a, b, c, d, M_offset_12, 6, T[52])\n d = II(d, a, b, c, M_offset_3, 10, T[53])\n c = II(c, d, a, b, M_offset_10, 15, T[54])\n b = II(b, c, d, a, M_offset_1, 21, T[55])\n a = II(a, b, c, d, M_offset_8, 6, T[56])\n d = II(d, a, b, c, M_offset_15, 10, T[57])\n c = II(c, d, a, b, M_offset_6, 15, T[58])\n b = II(b, c, d, a, M_offset_13, 21, T[59])\n a = II(a, b, c, d, M_offset_4, 6, T[60])\n d = II(d, a, b, c, M_offset_11, 10, T[61])\n c = II(c, d, a, b, M_offset_2, 15, T[62])\n b = II(b, c, d, a, M_offset_9, 21, T[63])\n\n // Intermediate hash value\n H[0] = (H[0] + a) | 0\n H[1] = (H[1] + b) | 0\n H[2] = (H[2] + c) | 0\n H[3] = (H[3] + d) | 0\n }\n /* eslint-ensable no-param-reassign */\n\n _doFinalize() {\n // Shortcuts\n const data = this._data\n const dataWords = data.words\n\n const nBitsTotal = this._nDataBytes * 8\n const nBitsLeft = data.sigBytes * 8\n\n // Add padding\n dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - (nBitsLeft % 32))\n\n const nBitsTotalH = Math.floor(nBitsTotal / 0x100000000)\n const nBitsTotalL = nBitsTotal\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] =\n (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] =\n (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\n data.sigBytes = (dataWords.length + 1) * 4\n\n // Hash final blocks\n this._process()\n\n // Shortcuts\n const hash = this._hash\n const H = hash.words\n\n // Swap endian\n for (let i = 0; i < 4; i += 1) {\n // Shortcut\n const H_i = H[i]\n\n H[i] =\n (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)\n }\n\n // Return final computed hash\n return hash\n }\n\n clone() {\n const clone = super.clone.call(this)\n clone._hash = this._hash.clone()\n\n return clone\n }\n}\n\n/**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.MD5('message');\n * var hash = CryptoJS.MD5(wordArray);\n */\nexport const MD5 = Hasher._createHelper(MD5Algo)\n\n/**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacMD5(message, key);\n */\nexport const HmacMD5 = Hasher._createHmacHelper(MD5Algo)\n","//@ts-nocheck\nimport { WordArray } from './core'\n\nexport const parseLoop = (base64Str, base64StrLength, reverseMap) => {\n const words = []\n let nBytes = 0\n for (let i = 0; i < base64StrLength; i += 1) {\n if (i % 4) {\n const bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2)\n const bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2)\n const bitsCombined = bits1 | bits2\n words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8)\n nBytes += 1\n }\n }\n return WordArray.create(words, nBytes)\n}\n\n/**\n * Base64 encoding strategy.\n */\nexport const Base64 = {\n /**\n * Converts a word array to a Base64 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Base64 string.\n *\n * @static\n *\n * @example\n *\n * const base64String = CryptoJS.enc.Base64.stringify(wordArray);\n */\n stringify(wordArray) {\n // Shortcuts\n const { words, sigBytes } = wordArray\n const map = this._map\n\n // Clamp excess bits\n wordArray.clamp()\n\n // Convert\n const base64Chars = []\n for (let i = 0; i < sigBytes; i += 3) {\n const byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff\n const byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff\n const byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff\n\n const triplet = (byte1 << 16) | (byte2 << 8) | byte3\n\n for (let j = 0; j < 4 && i + j * 0.75 < sigBytes; j += 1) {\n base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f))\n }\n }\n\n // Add padding\n const paddingChar = map.charAt(64)\n if (paddingChar) {\n while (base64Chars.length % 4) {\n base64Chars.push(paddingChar)\n }\n }\n\n return base64Chars.join('')\n },\n\n /**\n * Converts a Base64 string to a word array.\n *\n * @param {string} base64Str The Base64 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * const wordArray = CryptoJS.enc.Base64.parse(base64String);\n */\n parse(base64Str) {\n // Shortcuts\n let base64StrLength = base64Str.length\n const map = this._map\n let reverseMap = this._reverseMap\n\n if (!reverseMap) {\n this._reverseMap = []\n reverseMap = this._reverseMap\n for (let j = 0; j < map.length; j += 1) {\n reverseMap[map.charCodeAt(j)] = j\n }\n }\n\n // Ignore padding\n const paddingChar = map.charAt(64)\n if (paddingChar) {\n const paddingIndex = base64Str.indexOf(paddingChar)\n if (paddingIndex !== -1) {\n base64StrLength = paddingIndex\n }\n }\n\n // Convert\n return parseLoop(base64Str, base64StrLength, reverseMap)\n },\n\n _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n}\n","//@ts-nocheck\nimport { Base, WordArray } from './core'\nimport { MD5Algo } from './md5'\n\n/**\n * This key derivation function is meant to conform with EVP_BytesToKey.\n * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n */\nexport class EvpKDFAlgo extends Base {\n /**\n * Initializes a newly created key derivation function.\n *\n * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n *\n * @example\n *\n * const kdf = CryptoJS.algo.EvpKDF.create();\n * const kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n * const kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n */\n constructor(cfg) {\n super()\n\n /**\n * Configuration options.\n *\n * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n * @property {number} iterations The number of iterations to perform. Default: 1\n */\n this.cfg = Object.assign(\n new Base(),\n {\n keySize: 128 / 32,\n hasher: MD5Algo,\n iterations: 1,\n },\n cfg\n )\n }\n\n /**\n * Derives a key from a password.\n *\n * @param {WordArray|string} password The password.\n * @param {WordArray|string} salt A salt.\n *\n * @return {WordArray} The derived key.\n *\n * @example\n *\n * const key = kdf.compute(password, salt);\n */\n compute(password, salt) {\n let block\n\n // Shortcut\n const { cfg } = this\n\n // Init hasher\n const hasher = cfg.hasher.create()\n\n // Initial values\n const derivedKey = WordArray.create()\n\n // Shortcuts\n const derivedKeyWords = derivedKey.words\n const { keySize, iterations } = cfg\n\n // Generate key\n while (derivedKeyWords.length < keySize) {\n if (block) {\n hasher.update(block)\n }\n block = hasher.update(password).finalize(salt)\n hasher.reset()\n\n // Iterations\n for (let i = 1; i < iterations; i += 1) {\n block = hasher.finalize(block)\n hasher.reset()\n }\n\n derivedKey.concat(block)\n }\n derivedKey.sigBytes = keySize * 4\n\n return derivedKey\n }\n}\n\n/**\n * Derives a key from a password.\n *\n * @param {WordArray|string} password The password.\n * @param {WordArray|string} salt A salt.\n * @param {Object} cfg (Optional) The configuration options to use for this computation.\n *\n * @return {WordArray} The derived key.\n *\n * @static\n *\n * @example\n *\n * var key = CryptoJS.EvpKDF(password, salt);\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n */\nexport const EvpKDF = (password, salt, cfg) =>\n EvpKDFAlgo.create(cfg).compute(password, salt)\n","//@ts-nocheck\n/* eslint-disable no-use-before-define */\n\nimport { Base, WordArray, BufferedBlockAlgorithm } from './core'\nimport { Base64 } from './enc-base64'\nimport { EvpKDFAlgo } from './evpkdf'\n\n/**\n * Abstract base cipher template.\n *\n * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n */\nexport class Cipher extends BufferedBlockAlgorithm {\n /**\n * Initializes a newly created cipher.\n *\n * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @example\n *\n * const cipher = CryptoJS.algo.AES.create(\n * CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray }\n * );\n */\n constructor(xformMode, key, cfg) {\n super()\n\n /**\n * Configuration options.\n *\n * @property {WordArray} iv The IV to use for this operation.\n */\n this.cfg = Object.assign(new Base(), cfg)\n\n // Store transform mode and key\n this._xformMode = xformMode\n this._key = key\n\n // Set initial values\n this.reset()\n }\n\n /**\n * Creates this cipher in encryption mode.\n *\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {Cipher} A cipher instance.\n *\n * @static\n *\n * @example\n *\n * const cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n */\n static createEncryptor(key, cfg) {\n return this.create(this._ENC_XFORM_MODE, key, cfg)\n }\n\n /**\n * Creates this cipher in decryption mode.\n *\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {Cipher} A cipher instance.\n *\n * @static\n *\n * @example\n *\n * const cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n */\n static createDecryptor(key, cfg) {\n return this.create(this._DEC_XFORM_MODE, key, cfg)\n }\n\n /**\n * Creates shortcut functions to a cipher's object interface.\n *\n * @param {Cipher} cipher The cipher to create a helper for.\n *\n * @return {Object} An object with encrypt and decrypt shortcut functions.\n *\n * @static\n *\n * @example\n *\n * const AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n */\n static _createHelper(SubCipher) {\n const selectCipherStrategy = (key) => {\n if (typeof key === 'string') {\n return PasswordBasedCipher\n }\n return SerializableCipher\n }\n\n return {\n encrypt(message, key, cfg) {\n return selectCipherStrategy(key).encrypt(SubCipher, message, key, cfg)\n },\n\n decrypt(ciphertext, key, cfg) {\n return selectCipherStrategy(key).decrypt(\n SubCipher,\n ciphertext,\n key,\n cfg\n )\n },\n }\n }\n\n /**\n * Resets this cipher to its initial state.\n *\n * @example\n *\n * cipher.reset();\n */\n reset() {\n // Reset data buffer\n super.reset.call(this)\n\n // Perform concrete-cipher logic\n this._doReset()\n }\n\n /**\n * Adds data to be encrypted or decrypted.\n *\n * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n *\n * @return {WordArray} The data after processing.\n *\n * @example\n *\n * const encrypted = cipher.process('data');\n * const encrypted = cipher.process(wordArray);\n */\n process(dataUpdate) {\n // Append\n this._append(dataUpdate)\n\n // Process available blocks\n return this._process()\n }\n\n /**\n * Finalizes the encryption or decryption process.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n *\n * @return {WordArray} The data after final processing.\n *\n * @example\n *\n * const encrypted = cipher.finalize();\n * const encrypted = cipher.finalize('data');\n * const encrypted = cipher.finalize(wordArray);\n */\n finalize(dataUpdate) {\n // Final data update\n if (dataUpdate) {\n this._append(dataUpdate)\n }\n\n // Perform concrete-cipher logic\n const finalProcessedData = this._doFinalize()\n\n return finalProcessedData\n }\n}\nCipher._ENC_XFORM_MODE = 1\nCipher._DEC_XFORM_MODE = 2\nCipher.keySize = 128 / 32\nCipher.ivSize = 128 / 32\n\n/**\n * Abstract base stream cipher template.\n *\n * @property {number} blockSize\n *\n * The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n */\nexport class StreamCipher extends Cipher {\n constructor(...args) {\n super(...args)\n\n this.blockSize = 1\n }\n\n _doFinalize() {\n // Process partial blocks\n const finalProcessedBlocks = this._process(!!'flush')\n\n return finalProcessedBlocks\n }\n}\n\n/**\n * Abstract base block cipher mode template.\n */\nexport class BlockCipherMode extends Base {\n /**\n * Initializes a newly created mode.\n *\n * @param {Cipher} cipher A block cipher instance.\n * @param {Array} iv The IV words.\n *\n * @example\n *\n * const mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n */\n constructor(cipher, iv) {\n super()\n\n this._cipher = cipher\n this._iv = iv\n }\n\n /**\n * Creates this mode for encryption.\n *\n * @param {Cipher} cipher A block cipher instance.\n * @param {Array} iv The IV words.\n *\n * @static\n *\n * @example\n *\n * const mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n */\n static createEncryptor(cipher, iv) {\n return this.Encryptor.create(cipher, iv)\n }\n\n /**\n * Creates this mode for decryption.\n *\n * @param {Cipher} cipher A block cipher instance.\n * @param {Array} iv The IV words.\n *\n * @static\n *\n * @example\n *\n * const mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n */\n static createDecryptor(cipher, iv) {\n return this.Decryptor.create(cipher, iv)\n }\n}\n\nfunction xorBlock(words, offset, blockSize) {\n const _words = words\n let block\n\n // Shortcut\n const iv = this._iv\n\n // Choose mixing block\n if (iv) {\n block = iv\n\n // Remove IV for subsequent blocks\n this._iv = undefined\n } else {\n block = this._prevBlock\n }\n\n // XOR blocks\n for (let i = 0; i < blockSize; i += 1) {\n _words[offset + i] ^= block[i]\n }\n}\n\n/**\n * Cipher Block Chaining mode.\n */\n\n/**\n * Abstract base CBC mode.\n */\nexport class CBC extends BlockCipherMode {}\n/**\n * CBC encryptor.\n */\nCBC.Encryptor = class extends CBC {\n /**\n * Processes the data block at offset.\n *\n * @param {Array} words The data words to operate on.\n * @param {number} offset The offset where the block starts.\n *\n * @example\n *\n * mode.processBlock(data.words, offset);\n */\n processBlock(words, offset) {\n // Shortcuts\n const cipher = this._cipher\n const { blockSize } = cipher\n\n // XOR and encrypt\n xorBlock.call(this, words, offset, blockSize)\n cipher.encryptBlock(words, offset)\n\n // Remember this block to use with next block\n this._prevBlock = words.slice(offset, offset + blockSize)\n }\n}\n/**\n * CBC decryptor.\n */\nCBC.Decryptor = class extends CBC {\n /**\n * Processes the data block at offset.\n *\n * @param {Array} words The data words to operate on.\n * @param {number} offset The offset where the block starts.\n *\n * @example\n *\n * mode.processBlock(data.words, offset);\n */\n processBlock(words, offset) {\n // Shortcuts\n const cipher = this._cipher\n const { blockSize } = cipher\n\n // Remember this block to use with next block\n const thisBlock = words.slice(offset, offset + blockSize)\n\n // Decrypt and XOR\n cipher.decryptBlock(words, offset)\n xorBlock.call(this, words, offset, blockSize)\n\n // This block becomes the previous block\n this._prevBlock = thisBlock\n }\n}\n\n/**\n * PKCS #5/7 padding strategy.\n */\nexport const Pkcs7 = {\n /**\n * Pads data using the algorithm defined in PKCS #5/7.\n *\n * @param {WordArray} data The data to pad.\n * @param {number} blockSize The multiple that the data should be padded to.\n *\n * @static\n *\n * @example\n *\n * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n */\n pad(data, blockSize) {\n // Shortcut\n const blockSizeBytes = blockSize * 4\n\n // Count padding bytes\n const nPaddingBytes = blockSizeBytes - (data.sigBytes % blockSizeBytes)\n\n // Create padding word\n const paddingWord =\n (nPaddingBytes << 24) |\n (nPaddingBytes << 16) |\n (nPaddingBytes << 8) |\n nPaddingBytes\n\n // Create padding\n const paddingWords = []\n for (let i = 0; i < nPaddingBytes; i += 4) {\n paddingWords.push(paddingWord)\n }\n const padding = WordArray.create(paddingWords, nPaddingBytes)\n\n // Add padding\n data.concat(padding)\n },\n\n /**\n * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n *\n * @param {WordArray} data The data to unpad.\n *\n * @static\n *\n * @example\n *\n * CryptoJS.pad.Pkcs7.unpad(wordArray);\n */\n unpad(data) {\n const _data = data\n\n // Get number of padding bytes from last byte\n const nPaddingBytes = _data.words[(_data.sigBytes - 1) >>> 2] & 0xff\n\n // Remove padding\n _data.sigBytes -= nPaddingBytes\n },\n}\n\n/**\n * Abstract base block cipher template.\n *\n * @property {number} blockSize\n *\n * The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n */\nexport class BlockCipher extends Cipher {\n constructor(xformMode, key, cfg) {\n /**\n * Configuration options.\n *\n * @property {Mode} mode The block mode to use. Default: CBC\n * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n */\n super(\n xformMode,\n key,\n Object.assign(\n {\n mode: CBC,\n padding: Pkcs7,\n },\n cfg\n )\n )\n\n this.blockSize = 128 / 32\n }\n\n reset() {\n let modeCreator\n\n // Reset cipher\n super.reset.call(this)\n\n // Shortcuts\n const { cfg } = this\n const { iv, mode } = cfg\n\n // Reset block mode\n if (this._xformMode === this.constructor._ENC_XFORM_MODE) {\n modeCreator = mode.createEncryptor\n } /* if (this._xformMode == this._DEC_XFORM_MODE) */ else {\n modeCreator = mode.createDecryptor\n // Keep at least one block in the buffer for unpadding\n this._minBufferSize = 1\n }\n\n this._mode = modeCreator.call(mode, this, iv && iv.words)\n this._mode.__creator = modeCreator\n }\n\n _doProcessBlock(words, offset) {\n this._mode.processBlock(words, offset)\n }\n\n _doFinalize() {\n let finalProcessedBlocks\n\n // Shortcut\n const { padding } = this.cfg\n\n // Finalize\n if (this._xformMode === this.constructor._ENC_XFORM_MODE) {\n // Pad data\n padding.pad(this._data, this.blockSize)\n\n // Process final blocks\n finalProcessedBlocks = this._process(!!'flush')\n } /* if (this._xformMode == this._DEC_XFORM_MODE) */ else {\n // Process final blocks\n finalProcessedBlocks = this._process(!!'flush')\n\n // Unpad data\n padding.unpad(finalProcessedBlocks)\n }\n\n return finalProcessedBlocks\n }\n}\n\n/**\n * A collection of cipher parameters.\n *\n * @property {WordArray} ciphertext The raw ciphertext.\n * @property {WordArray} key The key to this ciphertext.\n * @property {WordArray} iv The IV used in the ciphering operation.\n * @property {WordArray} salt The salt used with a key derivation function.\n * @property {Cipher} algorithm The cipher algorithm.\n * @property {Mode} mode The block mode used in the ciphering operation.\n * @property {Padding} padding The padding scheme used in the ciphering operation.\n * @property {number} blockSize The block size of the cipher.\n * @property {Format} formatter\n * The default formatting strategy to convert this cipher params object to a string.\n */\nexport class CipherParams extends Base {\n /**\n * Initializes a newly created cipher params object.\n *\n * @param {Object} cipherParams An object with any of the possible cipher parameters.\n *\n * @example\n *\n * var cipherParams = CryptoJS.lib.CipherParams.create({\n * ciphertext: ciphertextWordArray,\n * key: keyWordArray,\n * iv: ivWordArray,\n * salt: saltWordArray,\n * algorithm: CryptoJS.algo.AES,\n * mode: CryptoJS.mode.CBC,\n * padding: CryptoJS.pad.PKCS7,\n * blockSize: 4,\n * formatter: CryptoJS.format.OpenSSL\n * });\n */\n constructor(cipherParams) {\n super()\n\n this.mixIn(cipherParams)\n }\n\n /**\n * Converts this cipher params object to a string.\n *\n * @param {Format} formatter (Optional) The formatting strategy to use.\n *\n * @return {string} The stringified cipher params.\n *\n * @throws Error If neither the formatter nor the default formatter is set.\n *\n * @example\n *\n * var string = cipherParams + '';\n * var string = cipherParams.toString();\n * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n */\n toString(formatter) {\n return (formatter || this.formatter).stringify(this)\n }\n}\n\n/**\n * OpenSSL formatting strategy.\n */\nexport const OpenSSLFormatter = {\n /**\n * Converts a cipher params object to an OpenSSL-compatible string.\n *\n * @param {CipherParams} cipherParams The cipher params object.\n *\n * @return {string} The OpenSSL-compatible string.\n *\n * @static\n *\n * @example\n *\n * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n */\n stringify(cipherParams) {\n let wordArray\n\n // Shortcuts\n const { ciphertext, salt } = cipherParams\n\n // Format\n if (salt) {\n wordArray = WordArray.create([0x53616c74, 0x65645f5f])\n .concat(salt)\n .concat(ciphertext)\n } else {\n wordArray = ciphertext\n }\n\n return wordArray.toString(Base64)\n },\n\n /**\n * Converts an OpenSSL-compatible string to a cipher params object.\n *\n * @param {string} openSSLStr The OpenSSL-compatible string.\n *\n * @return {CipherParams} The cipher params object.\n *\n * @static\n *\n * @example\n *\n * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n */\n parse(openSSLStr) {\n let salt\n\n // Parse base64\n const ciphertext = Base64.parse(openSSLStr)\n\n // Shortcut\n const ciphertextWords = ciphertext.words\n\n // Test for salt\n if (\n ciphertextWords[0] === 0x53616c74 &&\n ciphertextWords[1] === 0x65645f5f\n ) {\n // Extract salt\n salt = WordArray.create(ciphertextWords.slice(2, 4))\n\n // Remove salt from ciphertext\n ciphertextWords.splice(0, 4)\n ciphertext.sigBytes -= 16\n }\n\n return CipherParams.create({ ciphertext, salt })\n },\n}\n\n/**\n * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n */\nexport class SerializableCipher extends Base {\n /**\n * Encrypts a message.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {WordArray|string} message The message to encrypt.\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {CipherParams} A cipher params object.\n *\n * @static\n *\n * @example\n *\n * var ciphertextParams = CryptoJS.lib.SerializableCipher\n * .encrypt(CryptoJS.algo.AES, message, key);\n * var ciphertextParams = CryptoJS.lib.SerializableCipher\n * .encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n * var ciphertextParams = CryptoJS.lib.SerializableCipher\n * .encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n */\n static encrypt(cipher, message, key, cfg) {\n // Apply config defaults\n const _cfg = Object.assign(new Base(), this.cfg, cfg)\n\n // Encrypt\n const encryptor = cipher.createEncryptor(key, _cfg)\n const ciphertext = encryptor.finalize(message)\n\n // Shortcut\n const cipherCfg = encryptor.cfg\n\n // Create and return serializable cipher params\n return CipherParams.create({\n ciphertext,\n key,\n iv: cipherCfg.iv,\n algorithm: cipher,\n mode: cipherCfg.mode,\n padding: cipherCfg.padding,\n blockSize: encryptor.blockSize,\n formatter: _cfg.format,\n })\n }\n\n /**\n * Decrypts serialized ciphertext.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {WordArray} The plaintext.\n *\n * @static\n *\n * @example\n *\n * var plaintext = CryptoJS.lib.SerializableCipher\n * .decrypt(CryptoJS.algo.AES, formattedCiphertext, key,\n * { iv: iv, format: CryptoJS.format.OpenSSL });\n * var plaintext = CryptoJS.lib.SerializableCipher\n * .decrypt(CryptoJS.algo.AES, ciphertextParams, key,\n * { iv: iv, format: CryptoJS.format.OpenSSL });\n */\n static decrypt(cipher, ciphertext, key, cfg) {\n let _ciphertext = ciphertext\n\n // Apply config defaults\n const _cfg = Object.assign(new Base(), this.cfg, cfg)\n\n // Convert string to CipherParams\n _ciphertext = this._parse(_ciphertext, _cfg.format)\n\n // Decrypt\n const plaintext = cipher\n .createDecryptor(key, _cfg)\n .finalize(_ciphertext.ciphertext)\n\n return plaintext\n }\n\n /**\n * Converts serialized ciphertext to CipherParams,\n * else assumed CipherParams already and returns ciphertext unchanged.\n *\n * @param {CipherParams|string} ciphertext The ciphertext.\n * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n *\n * @return {CipherParams} The unserialized ciphertext.\n *\n * @static\n *\n * @example\n *\n * var ciphertextParams = CryptoJS.lib.SerializableCipher\n * ._parse(ciphertextStringOrParams, format);\n */\n static _parse(ciphertext, format) {\n if (typeof ciphertext === 'string') {\n return format.parse(ciphertext, this)\n }\n return ciphertext\n }\n}\n/**\n * Configuration options.\n *\n * @property {Formatter} format\n *\n * The formatting strategy to convert cipher param objects to and from a string.\n * Default: OpenSSL\n */\nSerializableCipher.cfg = Object.assign(new Base(), { format: OpenSSLFormatter })\n\n/**\n * OpenSSL key derivation function.\n */\nexport const OpenSSLKdf = {\n /**\n * Derives a key and IV from a password.\n *\n * @param {string} password The password to derive from.\n * @param {number} keySize The size in words of the key to generate.\n * @param {number} ivSize The size in words of the IV to generate.\n * @param {WordArray|string} salt\n * (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n *\n * @return {CipherParams} A cipher params object with the key, IV, and salt.\n *\n * @static\n *\n * @example\n *\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n */\n execute(password, keySize, ivSize, salt, hasher) {\n let _salt = salt\n\n // Generate random salt\n if (!_salt) {\n _salt = WordArray.random(64 / 8)\n }\n\n // Derive key and IV\n let key\n if (!hasher) {\n key = EvpKDFAlgo.create({ keySize: keySize + ivSize }).compute(\n password,\n _salt\n )\n } else {\n key = EvpKDFAlgo.create({ keySize: keySize + ivSize, hasher }).compute(\n password,\n _salt\n )\n }\n\n // Separate key and IV\n const iv = WordArray.create(key.words.slice(keySize), ivSize * 4)\n key.sigBytes = keySize * 4\n\n // Return params\n return CipherParams.create({ key, iv, salt: _salt })\n },\n}\n\n/**\n * A serializable cipher wrapper that derives the key from a password,\n * and returns ciphertext as a serializable cipher params object.\n */\nexport class PasswordBasedCipher extends SerializableCipher {\n /**\n * Encrypts a message using a password.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {WordArray|string} message The message to encrypt.\n * @param {string} password The password.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {CipherParams} A cipher params object.\n *\n * @static\n *\n * @example\n *\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher\n * .encrypt(CryptoJS.algo.AES, message, 'password');\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher\n * .encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n */\n static encrypt(cipher, message, password, cfg) {\n // Apply config defaults\n const _cfg = Object.assign(new Base(), this.cfg, cfg)\n\n // Derive key and other params\n const derivedParams = _cfg.kdf.execute(\n password,\n cipher.keySize,\n cipher.ivSize,\n _cfg.salt,\n _cfg.hasher\n )\n\n // Add IV to config\n _cfg.iv = derivedParams.iv\n\n // Encrypt\n const ciphertext = SerializableCipher.encrypt.call(\n this,\n cipher,\n message,\n derivedParams.key,\n _cfg\n )\n\n // Mix in derived params\n ciphertext.mixIn(derivedParams)\n\n return ciphertext\n }\n\n /**\n * Decrypts serialized ciphertext using a password.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n * @param {string} password The password.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {WordArray} The plaintext.\n *\n * @static\n *\n * @example\n *\n * var plaintext = CryptoJS.lib.PasswordBasedCipher\n * .decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password',\n * { format: CryptoJS.format.OpenSSL });\n * var plaintext = CryptoJS.lib.PasswordBasedCipher\n * .decrypt(CryptoJS.algo.AES, ciphertextParams, 'password',\n * { format: CryptoJS.format.OpenSSL });\n */\n static decrypt(cipher, ciphertext, password, cfg) {\n let _ciphertext = ciphertext\n\n // Apply config defaults\n const _cfg = Object.assign(new Base(), this.cfg, cfg)\n\n // Convert string to CipherParams\n _ciphertext = this._parse(_ciphertext, _cfg.format)\n\n // Derive key and other params\n const derivedParams = _cfg.kdf.execute(\n password,\n cipher.keySize,\n cipher.ivSize,\n _ciphertext.salt,\n _cfg.hasher\n )\n\n // Add IV to config\n _cfg.iv = derivedParams.iv\n\n // Decrypt\n const plaintext = SerializableCipher.decrypt.call(\n this,\n cipher,\n _ciphertext,\n derivedParams.key,\n _cfg\n )\n\n return plaintext\n }\n}\n/**\n * Configuration options.\n *\n * @property {KDF} kdf\n * The key derivation function to use to generate a key and IV from a password.\n * Default: OpenSSL\n */\nPasswordBasedCipher.cfg = Object.assign(SerializableCipher.cfg, {\n kdf: OpenSSLKdf,\n})\n","//@ts-nocheck\nimport { BlockCipher } from './cipher-core'\n\n// Lookup tables\nconst _SBOX = []\nconst INV_SBOX = []\nconst _SUB_MIX_0 = []\nconst _SUB_MIX_1 = []\nconst _SUB_MIX_2 = []\nconst _SUB_MIX_3 = []\nconst INV_SUB_MIX_0 = []\nconst INV_SUB_MIX_1 = []\nconst INV_SUB_MIX_2 = []\nconst INV_SUB_MIX_3 = []\n\n// Compute lookup tables\n\n// Compute double table\nconst d = []\nfor (let i = 0; i < 256; i += 1) {\n if (i < 128) {\n d[i] = i << 1\n } else {\n d[i] = (i << 1) ^ 0x11b\n }\n}\n\n// Walk GF(2^8)\nlet x = 0\nlet xi = 0\nfor (let i = 0; i < 256; i += 1) {\n // Compute sbox\n let sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n _SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n const x2 = d[x]\n const x4 = d[x2]\n const x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n let t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n _SUB_MIX_0[x] = (t << 24) | (t >>> 8)\n _SUB_MIX_1[x] = (t << 16) | (t >>> 16)\n _SUB_MIX_2[x] = (t << 8) | (t >>> 24)\n _SUB_MIX_3[x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX_3[sx] = t\n\n // Compute next counter\n if (!x) {\n xi = 1\n x = xi\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n}\n\n// Precomputed Rcon lookup\nconst RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\n\n/**\n * AES block cipher algorithm.\n */\nexport class AESAlgo extends BlockCipher {\n _doReset() {\n let t\n\n // Skip reset of nRounds has been set before and key did not change\n if (this._nRounds && this._keyPriorReset === this._key) {\n return\n }\n\n // Shortcuts\n this._keyPriorReset = this._key\n const key = this._keyPriorReset\n const keyWords = key.words\n const keySize = key.sigBytes / 4\n\n // Compute number of rounds\n this._nRounds = keySize + 6\n const nRounds = this._nRounds\n\n // Compute number of key schedule rows\n const ksRows = (nRounds + 1) * 4\n\n // Compute key schedule\n this._keySchedule = []\n const keySchedule = this._keySchedule\n for (let ksRow = 0; ksRow < ksRows; ksRow += 1) {\n if (ksRow < keySize) {\n keySchedule[ksRow] = keyWords[ksRow]\n } else {\n t = keySchedule[ksRow - 1]\n\n if (!(ksRow % keySize)) {\n // Rot word\n t = (t << 8) | (t >>> 24)\n\n // Sub word\n t =\n (_SBOX[t >>> 24] << 24) |\n (_SBOX[(t >>> 16) & 0xff] << 16) |\n (_SBOX[(t >>> 8) & 0xff] << 8) |\n _SBOX[t & 0xff]\n\n // Mix Rcon\n t ^= RCON[(ksRow / keySize) | 0] << 24\n } else if (keySize > 6 && ksRow % keySize === 4) {\n // Sub word\n t =\n (_SBOX[t >>> 24] << 24) |\n (_SBOX[(t >>> 16) & 0xff] << 16) |\n (_SBOX[(t >>> 8) & 0xff] << 8) |\n _SBOX[t & 0xff]\n }\n\n keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t\n }\n }\n\n // Compute inv key schedule\n this._invKeySchedule = []\n const invKeySchedule = this._invKeySchedule\n for (let invKsRow = 0; invKsRow < ksRows; invKsRow += 1) {\n const ksRow = ksRows - invKsRow\n\n if (invKsRow % 4) {\n t = keySchedule[ksRow]\n } else {\n t = keySchedule[ksRow - 4]\n }\n\n if (invKsRow < 4 || ksRow <= 4) {\n invKeySchedule[invKsRow] = t\n } else {\n invKeySchedule[invKsRow] =\n INV_SUB_MIX_0[_SBOX[t >>> 24]] ^\n INV_SUB_MIX_1[_SBOX[(t >>> 16) & 0xff]] ^\n INV_SUB_MIX_2[_SBOX[(t >>> 8) & 0xff]] ^\n INV_SUB_MIX_3[_SBOX[t & 0xff]]\n }\n }\n }\n\n encryptBlock(M, offset) {\n this._doCryptBlock(\n M,\n offset,\n this._keySchedule,\n _SUB_MIX_0,\n _SUB_MIX_1,\n _SUB_MIX_2,\n _SUB_MIX_3,\n _SBOX\n )\n }\n\n decryptBlock(M, offset) {\n const _M = M\n\n // Swap 2nd and 4th rows\n let t = _M[offset + 1]\n _M[offset + 1] = _M[offset + 3]\n _M[offset + 3] = t\n\n this._doCryptBlock(\n _M,\n offset,\n this._invKeySchedule,\n INV_SUB_MIX_0,\n INV_SUB_MIX_1,\n INV_SUB_MIX_2,\n INV_SUB_MIX_3,\n INV_SBOX\n )\n\n // Inv swap 2nd and 4th rows\n t = _M[offset + 1]\n _M[offset + 1] = _M[offset + 3]\n _M[offset + 3] = t\n }\n\n _doCryptBlock(\n M,\n offset,\n keySchedule,\n SUB_MIX_0,\n SUB_MIX_1,\n SUB_MIX_2,\n SUB_MIX_3,\n SBOX\n ) {\n const _M = M\n\n // Shortcut\n const nRounds = this._nRounds\n\n // Get input, add round key\n let s0 = _M[offset] ^ keySchedule[0]\n let s1 = _M[offset + 1] ^ keySchedule[1]\n let s2 = _M[offset + 2] ^ keySchedule[2]\n let s3 = _M[offset + 3] ^ keySchedule[3]\n\n // Key schedule row counter\n let ksRow = 4\n\n // Rounds\n for (let round = 1; round < nRounds; round += 1) {\n // Shift rows, sub bytes, mix columns, add round key\n const t0 =\n SUB_MIX_0[s0 >>> 24] ^\n SUB_MIX_1[(s1 >>> 16) & 0xff] ^\n SUB_MIX_2[(s2 >>> 8) & 0xff] ^\n SUB_MIX_3[s3 & 0xff] ^\n keySchedule[ksRow]\n ksRow += 1\n const t1 =\n SUB_MIX_0[s1 >>> 24] ^\n SUB_MIX_1[(s2 >>> 16) & 0xff] ^\n SUB_MIX_2[(s3 >>> 8) & 0xff] ^\n SUB_MIX_3[s0 & 0xff] ^\n keySchedule[ksRow]\n ksRow += 1\n const t2 =\n SUB_MIX_0[s2 >>> 24] ^\n SUB_MIX_1[(s3 >>> 16) & 0xff] ^\n SUB_MIX_2[(s0 >>> 8) & 0xff] ^\n SUB_MIX_3[s1 & 0xff] ^\n keySchedule[ksRow]\n ksRow += 1\n const t3 =\n SUB_MIX_0[s3 >>> 24] ^\n SUB_MIX_1[(s0 >>> 16) & 0xff] ^\n SUB_MIX_2[(s1 >>> 8) & 0xff] ^\n SUB_MIX_3[s2 & 0xff] ^\n keySchedule[ksRow]\n ksRow += 1\n\n // Update state\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n // Shift rows, sub bytes, add round key\n const t0 =\n ((SBOX[s0 >>> 24] << 24) |\n (SBOX[(s1 >>> 16) & 0xff] << 16) |\n (SBOX[(s2 >>> 8) & 0xff] << 8) |\n SBOX[s3 & 0xff]) ^\n keySchedule[ksRow]\n ksRow += 1\n const t1 =\n ((SBOX[s1 >>> 24] << 24) |\n (SBOX[(s2 >>> 16) & 0xff] << 16) |\n (SBOX[(s3 >>> 8) & 0xff] << 8) |\n SBOX[s0 & 0xff]) ^\n keySchedule[ksRow]\n ksRow += 1\n const t2 =\n ((SBOX[s2 >>> 24] << 24) |\n (SBOX[(s3 >>> 16) & 0xff] << 16) |\n (SBOX[(s0 >>> 8) & 0xff] << 8) |\n SBOX[s1 & 0xff]) ^\n keySchedule[ksRow]\n ksRow += 1\n const t3 =\n ((SBOX[s3 >>> 24] << 24) |\n (SBOX[(s0 >>> 16) & 0xff] << 16) |\n (SBOX[(s1 >>> 8) & 0xff] << 8) |\n SBOX[s2 & 0xff]) ^\n keySchedule[ksRow]\n ksRow += 1\n\n // Set output\n _M[offset] = t0\n _M[offset + 1] = t1\n _M[offset + 2] = t2\n _M[offset + 3] = t3\n }\n}\nAESAlgo.keySize = 256 / 32\n\n/**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n */\nexport const AES = BlockCipher._createHelper(AESAlgo)\n","import { AES } from './vendor/crypto-es/lib/aes'\nimport { Utf8 } from './vendor/crypto-es/lib/core'\n\n// https://github.com/rudderlabs/rudder-sdk-js/blob/5494b0acbc6da3df088884b2d10a2d22c0811ffb/LICENSE\n// MIT License\n\n// Copyright (c) 2021 RudderStack\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\n/**\n * Converts a base64 encoded string to bytes array\n * @param base64Str base64 encoded string\n * @returns bytes array\n */\nconst base64ToBytes = (base64Str: string): Uint8Array => {\n const binString = (window as any)?.atob(base64Str) ?? ''\n const bytes = binString.split('').map((char: string) => char.charCodeAt(0))\n return new Uint8Array(bytes)\n}\n\n/**\n * Decodes a base64 encoded string\n * @param value base64 encoded string\n * @returns decoded string\n */\nconst fromBase64 = (value: string): string =>\n new TextDecoder().decode(base64ToBytes(value))\n\n/**\n * JSON parse the value\n * @param {*} value\n */\nfunction parse(value: any) {\n // if not parsable, return as is without json parse\n try {\n return value ? JSON.parse(value) : null\n } catch (e) {\n return value || null\n }\n}\n\nconst rudderHtEncryptKey = 'HTEV'\nexport const rudderHtPrefix = 'HtEvEncrypt:'\n\n/**\n * DEPRECATED\n * decrypt value originally made by Ht fork of rudder v1 encryption\n */\nexport function decryptRudderHtValue(value: string): string | null {\n try {\n if (!value || typeof value !== 'string' || value.trim() === '') {\n return null\n }\n\n // Try if its hightouch-fork-of-rudder v1 encrypted\n // We should be able to delete this shortly\n // We do not intend to encrypt future anonymousIds\n if (value.substring(0, rudderHtPrefix.length) === rudderHtPrefix) {\n return parse(\n // @ts-ignore 2554\n AES.decrypt(\n value.substring(rudderHtPrefix.length),\n rudderHtEncryptKey\n ).toString(Utf8)\n )\n }\n } catch (error) {\n console.error(error)\n }\n return value\n}\n\nconst rudderEncryptKey = 'Rudder'\nconst rudderPrefixV1 = 'RudderEncrypt:'\nconst rudderPrefixV3 = 'RS_ENC_v3_'\n\n/**\n * decrypt value originally made by rudder v1 or v3 encryption\n */\nexport function decryptRudderValue(value: string): string | null {\n try {\n if (!value || typeof value !== 'string' || value.trim() === '') {\n return null\n }\n\n // Try if its rudder v1 encrypted\n if (value.substring(0, rudderPrefixV1.length) === rudderPrefixV1) {\n return parse(\n // @ts-ignore 2554\n AES.decrypt(\n value.substring(rudderPrefixV1.length),\n rudderEncryptKey\n ).toString(Utf8)\n )\n }\n\n // Try if its rudder v3 encrypted\n if (value.substring(0, rudderPrefixV3.length) === rudderPrefixV3) {\n const parsed = parse(fromBase64(value.substring(rudderPrefixV3.length)))\n if (!parsed || typeof parsed !== 'string' || parsed.trim() === '') {\n return null\n }\n return parsed\n }\n } catch (error) {\n console.error(error)\n }\n return value\n}\n","// https://github.com/rudderlabs/rudder-sdk-js/blob/3a818accd24e6b3667c75a6b60fb12aba36bdf7e/packages/analytics-js/LICENSE\n// MIT License\n\n// Copyright (c) 2021 RudderStack\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nexport type SessionInfo = {\n autoTrack?: boolean\n manualTrack?: boolean\n timeout?: number\n expiresAt?: number\n id?: number\n sessionStart?: boolean\n}\n\nexport type SessionContext = {\n sessionId?: number\n sessionStart?: boolean\n}\n\n/**\n * A function to validate current session and return true/false depending on that\n * @returns boolean\n */\nexport const hasSessionExpired = (expiresAt: number): boolean => {\n const timestamp = Date.now()\n return Boolean(timestamp > expiresAt)\n}\n\nconst generateSessionId = (): number => Date.now()\n\nexport const isManualSessionIdValid = (sessionId?: number): boolean => {\n if (\n !sessionId ||\n sessionId.toString().startsWith('-') ||\n sessionId.toString().length < 10\n ) {\n return false\n }\n return true\n}\n\nconst MIN_SESSION_TIMEOUT_MS = 10 * 1000 // 10 seconds\nconst DEFAULT_SESSION_TIMEOUT_MS = 30 * 60 * 1000 // 30 minutes\n\n/**\n * A function to generate new auto tracking session\n * @param sessionTimeout current timestamp\n * @returns SessionInfo\n */\nexport const generateAutoTrackingSession = (\n sessionTimeout?: number\n): SessionInfo => {\n const timestamp = Date.now()\n const timeout: number = sessionTimeout || DEFAULT_SESSION_TIMEOUT_MS\n if (timeout < MIN_SESSION_TIMEOUT_MS) {\n console.warn('Session timeouts of less than 10 seconds are not recommended')\n }\n return {\n id: timestamp, // set the current timestamp\n expiresAt: timestamp + timeout, // set the expiry time of the session\n timeout,\n sessionStart: true,\n autoTrack: true,\n }\n}\n\n/**\n * A function to generate new manual tracking session\n * @param id Provided sessionId\n * @returns SessionInfo\n */\nexport const generateManualTrackingSession = (id?: number): SessionInfo => {\n const sessionId: number = isManualSessionIdValid(id)\n ? (id as number)\n : generateSessionId()\n return {\n id: sessionId,\n sessionStart: true,\n manualTrack: true,\n }\n}\n\nexport const updateSessionExpiration = (session: SessionInfo): SessionInfo => {\n session.sessionStart = false\n if (session.autoTrack) {\n // extend session by `timeout`\n session.expiresAt = Date.now() + session.timeout!\n }\n return session\n}\n","import { v4 as uuid } from '@lukeed/uuid'\nimport autoBind from '../../lib/bind-all'\nimport { Traits } from '../events'\nimport {\n CookieOptions,\n UniversalStorage,\n MemoryStorage,\n StorageObject,\n StorageSettings,\n StoreType,\n applyCookieOptions,\n initializeStorages,\n isArrayOfStoreType,\n} from '../storage'\nimport { decryptRudderValue, decryptRudderHtValue } from './migrate'\nimport {\n SessionContext,\n SessionInfo,\n generateAutoTrackingSession,\n generateManualTrackingSession,\n hasSessionExpired,\n updateSessionExpiration,\n} from '../session'\nimport type { HTTPCookieService } from '../http-cookies'\n\nexport type ID = string | null | undefined\n\nexport interface UserOptions {\n /**\n * Disables storing any data about the user.\n */\n disable?: boolean\n localStorageFallbackDisabled?: boolean\n persist?: boolean\n\n /**\n * Replicates \"BrowserCookie\" actions against a matching \"ServerCookie\".\n */\n httpCookieService?: HTTPCookieService\n\n cookie?: {\n key?: string\n oldKey?: string\n }\n\n localStorage?: {\n key: string\n }\n\n sessions?: {\n autoTrack?: boolean\n timeout?: number // milliseconds\n }\n\n /**\n * Store priority\n * @example stores: [StoreType.Cookie, StoreType.Memory]\n */\n storage?: StorageSettings\n}\n\nconst defaults = {\n persist: true,\n cookie: {\n key: 'htjs_user_id',\n oldKey: 'ajs_user',\n },\n localStorage: {\n key: 'htjs_user_traits',\n },\n sessions: {\n autoTrack: true,\n },\n}\n\nconst sessionKey = 'htjs_sesh'\nconst anonymousIdKey = 'htjs_anonymous_id'\nconst rudderHtAnonymousIdKey = 'htev_anonymous_id'\nconst segmentAnonymousIdKey = 'ajs_anonymous_id'\nconst rudderAnonymousIdKey = 'rl_anonymous_id'\n\nexport class User {\n static defaults = defaults\n\n private idKey: string\n private traitsKey: string\n private anonKey: string\n private seshKey: string\n private cookieOptions?: CookieOptions\n\n private legacyUserStore: UniversalStorage<{\n [k: string]:\n | {\n id?: string\n traits?: Traits\n }\n | string\n }>\n private traitsStore: UniversalStorage<{\n [k: string]: Traits\n }>\n\n private identityStore: UniversalStorage<{\n [k: string]: string\n }>\n\n private sessionStore: UniversalStorage<{ [k: string]: SessionInfo }>\n\n options: UserOptions = {}\n\n constructor(options: UserOptions = defaults, cookieOptions?: CookieOptions) {\n this.options = { ...defaults, ...options }\n this.cookieOptions = cookieOptions\n\n this.idKey = options.cookie?.key ?? defaults.cookie.key\n this.traitsKey = options.localStorage?.key ?? defaults.localStorage.key\n this.anonKey = anonymousIdKey\n this.seshKey = sessionKey\n\n this.identityStore = this.createStorage(this.options, cookieOptions)\n\n this.sessionStore = this.createStorage(this.options, cookieOptions)\n\n // using only cookies for legacy user store\n this.legacyUserStore = this.createStorage(\n this.options,\n cookieOptions,\n (s) => s === StoreType.Cookie\n )\n\n // using only localStorage / memory for traits store\n this.traitsStore = this.createStorage(\n this.options,\n cookieOptions,\n (s) => s !== StoreType.Cookie\n )\n\n const legacyUser = this.legacyUserStore.get(defaults.cookie.oldKey)\n if (legacyUser && typeof legacyUser === 'object') {\n legacyUser.id && this.id(legacyUser.id)\n legacyUser.traits && this.traits(legacyUser.traits)\n }\n\n // HTTPCookies require that localStorage values be synced to cookies\n if (this.options.httpCookieService) {\n this.identityStore.getAndSync(this.anonKey)\n this.identityStore.getAndSync(this.idKey)\n this.options.httpCookieService?.dispatchCreate()\n }\n\n autoBind(this)\n }\n\n id = (id?: ID): ID => {\n if (this.options.disable) {\n return null\n }\n\n const prevId = this.identityStore.getAndSync(this.idKey)\n\n if (id !== undefined) {\n const clearingIdentity = id === null\n const changingIdentity = id !== prevId && prevId !== null && id !== null\n const creatingIdentity = id !== prevId && prevId === null && id !== null\n\n this.identityStore.set(this.idKey, id)\n\n if (clearingIdentity) {\n this.options?.httpCookieService?.dispatchClear()\n }\n\n if (changingIdentity) {\n this.anonymousId(null) // this also runs dispatchClear()\n }\n\n if (changingIdentity || creatingIdentity) {\n this.options?.httpCookieService?.dispatchCreate()\n }\n }\n\n const retId = this.identityStore.getAndSync(this.idKey)\n if (retId) return retId\n\n const retLeg = this.legacyUserStore.get(defaults.cookie.oldKey)\n return retLeg ? (typeof retLeg === 'object' ? retLeg.id : retLeg) : null\n }\n\n private legacySIO(): [string, string] | null {\n const val = this.legacyUserStore.get('_sio') as string\n if (!val) {\n return null\n }\n const [anon, user] = val.split('----')\n return [anon, user]\n }\n\n anonymousId = (id?: ID): ID => {\n if (this.options.disable) {\n return null\n }\n\n if (id === undefined) {\n let val = this.identityStore.getAndSync(this.anonKey)\n let migrated = false\n\n // support anonymousId migration from other analytics providers\n if (!val) {\n val = decryptRudderHtValue(\n this.identityStore.getAndSync(rudderHtAnonymousIdKey) ?? ''\n )\n migrated = Boolean(val)\n if (val) this.identityStore.set(this.anonKey, val)\n }\n if (!val) {\n val = this.identityStore.getAndSync(segmentAnonymousIdKey)\n migrated = Boolean(val)\n if (val) this.identityStore.set(this.anonKey, val)\n }\n if (!val) {\n val = decryptRudderValue(\n this.identityStore.getAndSync(rudderAnonymousIdKey) ?? ''\n )\n migrated = Boolean(val)\n if (val) this.identityStore.set(this.anonKey, val)\n }\n if (!val) {\n val = this.legacySIO()?.[0] ?? null\n }\n\n if (migrated) {\n this.options?.httpCookieService?.dispatchCreate()\n }\n\n if (val) {\n return val\n }\n }\n\n if (id === null) {\n this.identityStore.set(this.anonKey, null)\n const clearedVal = this.identityStore.getAndSync(this.anonKey)\n this.options?.httpCookieService?.dispatchClear()\n return clearedVal\n }\n\n this.identityStore.set(this.anonKey, id ?? uuid())\n const syncedVal = this.identityStore.getAndSync(this.anonKey)\n\n this.options?.httpCookieService?.dispatchCreate()\n return syncedVal\n }\n\n traits = (traits?: Traits | null): Traits | undefined => {\n if (this.options.disable) {\n return\n }\n\n if (traits === null) {\n traits = {}\n }\n\n if (traits) {\n this.traitsStore.set(this.traitsKey, traits ?? {})\n }\n\n return this.traitsStore.get(this.traitsKey) ?? {}\n }\n\n identify(id?: ID, traits?: Traits): void {\n if (this.options.disable) {\n return\n }\n\n traits = traits ?? {}\n const currentId = this.id()\n\n if (currentId === null || currentId === id) {\n traits = {\n ...this.traits(),\n ...traits,\n }\n }\n\n if (id) {\n this.id(id)\n }\n\n this.traits(traits)\n }\n\n startManualSession(sessionId?: number) {\n if (this.options.disable) {\n return\n }\n this.sessionStore.clear(this.seshKey)\n const session = generateManualTrackingSession(sessionId)\n this.sessionStore.set(this.seshKey, session)\n }\n\n endManualSession() {\n this.sessionStore.clear(this.seshKey)\n }\n\n private getAndUpdateSessionInfo(): SessionInfo | null {\n if (this.options.disable) {\n return null\n }\n\n let session = this.sessionStore.getAndSync(this.seshKey)\n\n if (session == null) {\n if (this.options?.sessions?.autoTrack) {\n session = generateAutoTrackingSession(this.options?.sessions?.timeout)\n this.sessionStore.set(this.seshKey, session)\n return session\n }\n return null\n }\n\n if (session?.autoTrack && hasSessionExpired(session.expiresAt!)) {\n session = generateAutoTrackingSession(this.options?.sessions?.timeout)\n this.sessionStore.set(this.seshKey, session)\n return session\n }\n\n session = updateSessionExpiration(session)\n this.sessionStore.set(this.seshKey, session)\n return session\n }\n\n getAndUpdateSession(): SessionContext | null {\n const sessionInfo = this.getAndUpdateSessionInfo()\n const session: SessionContext = {}\n if (sessionInfo?.id) session.sessionId = sessionInfo.id\n if (sessionInfo?.sessionStart)\n session.sessionStart = sessionInfo.sessionStart\n return session\n }\n\n sessionId(): number | null {\n const session = this.sessionStore.getAndSync(this.seshKey)\n return session?.id ?? null\n }\n\n logout(): void {\n this.anonymousId(null)\n this.id(null)\n this.traits({})\n }\n\n reset(): void {\n this.logout()\n this.identityStore.clear(this.idKey)\n this.identityStore.clear(this.anonKey)\n this.sessionStore.clear(this.seshKey)\n this.traitsStore.clear(this.traitsKey)\n }\n\n load(): User {\n return new User(this.options, this.cookieOptions)\n }\n\n save(): boolean {\n return true\n }\n\n /**\n * Creates the right storage system applying all the user options, cookie options and particular filters\n * @param options UserOptions\n * @param cookieOpts CookieOptions\n * @param filterStores filter function to apply to any StoreTypes (skipped if options specify using a custom storage)\n * @returns a Storage object\n */\n private createStorage<T extends StorageObject = StorageObject>(\n options: UserOptions,\n cookieOpts?: CookieOptions,\n filterStores?: (value: StoreType) => boolean\n ): UniversalStorage<T> {\n let stores: StoreType[] = [\n StoreType.LocalStorage,\n StoreType.Cookie,\n StoreType.Memory,\n ]\n\n // If disabled we won't have any storage functionality\n if (options.disable) {\n return new UniversalStorage<T>([])\n }\n\n // If persistance is disabled we will always fallback to Memory Storage\n if (!options.persist) {\n return new UniversalStorage<T>([new MemoryStorage<T>()])\n }\n\n if (options.storage !== undefined && options.storage !== null) {\n if (isArrayOfStoreType(options.storage)) {\n // If the user only specified order of stores we will still apply filters and transformations e.g. not using localStorage if localStorageFallbackDisabled\n stores = options.storage.stores\n }\n }\n\n // Disable LocalStorage\n if (options.localStorageFallbackDisabled) {\n stores = stores.filter((s) => s !== StoreType.LocalStorage)\n }\n\n // Apply Additional filters\n if (filterStores) {\n stores = stores.filter(filterStores)\n }\n\n return new UniversalStorage(\n initializeStorages(applyCookieOptions(stores, cookieOpts))\n )\n }\n}\n\nconst groupDefaults: UserOptions = {\n persist: true,\n cookie: {\n key: 'htjs_group_id',\n },\n localStorage: {\n key: 'htjs_group_properties',\n },\n}\n\nexport class Group extends User {\n constructor(options: UserOptions = groupDefaults, cookie?: CookieOptions) {\n super({ ...groupDefaults, ...options }, cookie)\n autoBind(this)\n }\n\n anonymousId = (_id?: ID): ID => {\n return undefined\n }\n}\n","import { Analytics } from '../analytics'\nimport { Context } from '../context'\nimport { isThenable } from '../../lib/is-thenable'\nimport { HtEventsBrowserCore } from '../analytics/interfaces'\nimport { version } from '../../generated/version'\nimport { getGlobalAnalytics } from '../../lib/global-analytics-helper'\nimport {\n isBufferedPageContext,\n BufferedPageContext,\n getDefaultBufferedPageContext,\n createPageContext,\n PageContext,\n} from '../page'\n\n/**\n * The names of any HtEventsBrowser methods that also exist on Analytics\n */\nexport type PreInitMethodName =\n | 'screen'\n | 'register'\n | 'deregister'\n | 'user'\n | 'trackSubmit'\n | 'trackClick'\n | 'trackLink'\n | 'trackForm'\n | 'pageview'\n | 'identify'\n | 'reset'\n | 'group'\n | 'track'\n | 'ready'\n | 'alias'\n | 'debug'\n | 'page'\n | 'once'\n | 'off'\n | 'on'\n | 'addSourceMiddleware'\n | 'setAnonymousId'\n | 'addDestinationMiddleware'\n\n// Union of all analytics methods that _do not_ return a Promise\ntype SyncPreInitMethodName = {\n [MethodName in PreInitMethodName]: ReturnType<\n Analytics[MethodName]\n > extends Promise<any>\n ? never\n : MethodName\n}[PreInitMethodName]\n\nconst flushSyncAnalyticsCalls = (\n name: SyncPreInitMethodName,\n analytics: Analytics,\n buffer: PreInitMethodCallBuffer\n): void => {\n buffer.getCalls(name).forEach((c) => {\n // While the underlying methods are synchronous, the callAnalyticsMethod returns a promise,\n // which normalizes success and error states between async and non-async methods, with no perf penalty.\n callAnalyticsMethod(analytics, c).catch(console.error)\n })\n}\n\nexport const flushAddSourceMiddleware = async (\n analytics: Analytics,\n buffer: PreInitMethodCallBuffer\n) => {\n for (const c of buffer.getCalls('addSourceMiddleware')) {\n await callAnalyticsMethod(analytics, c).catch(console.error)\n }\n}\n\nexport const flushOn = flushSyncAnalyticsCalls.bind(this, 'on')\n\nexport const flushSetAnonymousID = flushSyncAnalyticsCalls.bind(\n this,\n 'setAnonymousId'\n)\n\nexport const flushAnalyticsCallsInNewTask = (\n analytics: Analytics,\n buffer: PreInitMethodCallBuffer\n): void => {\n buffer.toArray().forEach((m) => {\n setTimeout(() => {\n callAnalyticsMethod(analytics, m).catch(console.error)\n }, 0)\n })\n}\n\nexport const popPageContext = (args: unknown[]): PageContext | undefined => {\n if (hasBufferedPageContextAsLastArg(args)) {\n const ctx = args.pop() as BufferedPageContext\n return createPageContext(ctx)\n }\n}\n\nexport const hasBufferedPageContextAsLastArg = (\n args: unknown[]\n): args is [...unknown[], BufferedPageContext] | [BufferedPageContext] => {\n const lastArg = args[args.length - 1]\n return isBufferedPageContext(lastArg)\n}\n\n/**\n * Represents a buffered method call that occurred before initialization.\n */\nexport class PreInitMethodCall<\n MethodName extends PreInitMethodName = PreInitMethodName,\n> {\n method: MethodName\n args: PreInitMethodParams<MethodName>\n called: boolean\n resolve: (v: ReturnType<Analytics[MethodName]>) => void\n reject: (reason: any) => void\n constructor(\n method: PreInitMethodCall<MethodName>['method'],\n args: PreInitMethodParams<MethodName>,\n resolve: PreInitMethodCall<MethodName>['resolve'] = () => {},\n reject: PreInitMethodCall<MethodName>['reject'] = console.error\n ) {\n this.method = method\n this.resolve = resolve\n this.reject = reject\n this.called = false\n this.args = args\n }\n}\n\nexport type PreInitMethodParams<MethodName extends PreInitMethodName> =\n | [...Parameters<Analytics[MethodName]>, BufferedPageContext]\n | Parameters<Analytics[MethodName]>\n\n/**\n * Infer return type; if return type is promise, unwrap it.\n */\ntype ReturnTypeUnwrap<Fn> = Fn extends (...args: any[]) => infer ReturnT\n ? ReturnT extends PromiseLike<infer Unwrapped>\n ? Unwrapped\n : ReturnT\n : never\n\ntype MethodCallMap = Partial<Record<PreInitMethodName, PreInitMethodCall[]>>\n\ntype SnippetWindowBufferedMethodCall<\n MethodName extends PreInitMethodName = PreInitMethodName,\n> = [MethodName, ...PreInitMethodParams<MethodName>]\n\n/**\n * A list of the method calls before initialization for snippet users\n * For example, [[\"track\", \"foo\", {bar: 123}], [\"page\"], [\"on\", \"ready\", function(){..}]\n */\ntype SnippetBuffer = SnippetWindowBufferedMethodCall[]\n\n/**\n * Represents any and all the buffered method calls that occurred before initialization.\n */\nexport class PreInitMethodCallBuffer {\n private _callMap: MethodCallMap = {}\n\n constructor(...calls: PreInitMethodCall[]) {\n this.push(...calls)\n }\n\n /**\n * Pull any buffered method calls from the window object, and use them to hydrate the instance buffer.\n */\n private get calls() {\n this._pushSnippetWindowBuffer()\n return this._callMap\n }\n\n private set calls(calls: MethodCallMap) {\n this._callMap = calls\n }\n\n getCalls<T extends PreInitMethodName>(methodName: T): PreInitMethodCall<T>[] {\n return (this.calls[methodName] ?? []) as PreInitMethodCall<T>[]\n }\n\n push(...calls: PreInitMethodCall[]): void {\n calls.forEach((call) => {\n const eventsExpectingPageContext: PreInitMethodName[] = [\n 'track',\n 'screen',\n 'alias',\n 'group',\n 'page',\n 'identify',\n ]\n if (\n eventsExpectingPageContext.includes(call.method) &&\n !hasBufferedPageContextAsLastArg(call.args)\n ) {\n call.args = [...call.args, getDefaultBufferedPageContext()]\n }\n\n if (this.calls[call.method]) {\n this.calls[call.method]!.push(call)\n } else {\n this.calls[call.method] = [call]\n }\n })\n }\n\n clear(): void {\n // clear calls in the global snippet buffered array.\n this._pushSnippetWindowBuffer()\n // clear calls in this instance\n this.calls = {}\n }\n\n toArray(): PreInitMethodCall[] {\n return ([] as PreInitMethodCall[]).concat(...Object.values(this.calls))\n }\n\n /**\n * Fetch the buffered method calls from the window object,\n * normalize them, and use them to hydrate the buffer.\n * This removes existing buffered calls from the window object.\n */\n private _pushSnippetWindowBuffer(): void {\n const wa = getGlobalAnalytics()\n if (!Array.isArray(wa)) return undefined\n const buffered: SnippetBuffer = wa.splice(0, wa.length)\n const calls = buffered.map(\n ([methodName, ...args]) => new PreInitMethodCall(methodName, args)\n )\n this.push(...calls)\n }\n}\n\n/**\n * Call method and mark as \"called\"\n * This function should never throw an error\n */\nexport async function callAnalyticsMethod<T extends PreInitMethodName>(\n analytics: Analytics,\n call: PreInitMethodCall<T>\n): Promise<void> {\n try {\n if (call.called) {\n return undefined\n }\n call.called = true\n\n const result: ReturnType<Analytics[T]> = (\n analytics[call.method] as Function\n )(...call.args)\n\n if (isThenable(result)) {\n // do not defer for non-async methods\n await result\n }\n\n call.resolve(result)\n } catch (err) {\n call.reject(err)\n }\n}\n\nexport type AnalyticsLoader = (\n preInitBuffer: PreInitMethodCallBuffer\n) => Promise<[Analytics, Context]>\n\nexport class AnalyticsBuffered\n implements PromiseLike<[Analytics, Context]>, HtEventsBrowserCore\n{\n instance?: Analytics\n ctx?: Context\n private _preInitBuffer: PreInitMethodCallBuffer\n private _promise: Promise<[Analytics, Context]>\n constructor(loader: AnalyticsLoader) {\n this._preInitBuffer = new PreInitMethodCallBuffer()\n this._promise = loader(this._preInitBuffer)\n this._promise\n .then(([ajs, ctx]) => {\n this.instance = ajs\n this.ctx = ctx\n })\n .catch(() => {\n // intentionally do nothing...\n // this result of this promise will be caught by the 'catch' block on this class.\n })\n }\n\n then<T1, T2 = never>(\n ...args: [\n onfulfilled:\n | ((instance: [Analytics, Context]) => T1 | PromiseLike<T1>)\n | null\n | undefined,\n onrejected?: (reason: unknown) => T2 | PromiseLike<T2>,\n ]\n ) {\n return this._promise.then(...args)\n }\n\n catch<TResult = never>(\n ...args: [\n onrejected?:\n | ((reason: any) => TResult | PromiseLike<TResult>)\n | undefined\n | null,\n ]\n ) {\n return this._promise.catch(...args)\n }\n\n finally(...args: [onfinally?: (() => void) | undefined | null]) {\n return this._promise.finally(...args)\n }\n\n trackSubmit = this._createMethod('trackSubmit')\n trackClick = this._createMethod('trackClick')\n trackLink = this._createMethod('trackLink')\n pageView = this._createMethod('pageview')\n identify = this._createMethod('identify')\n reset = this._createMethod('reset')\n group = this._createMethod('group') as HtEventsBrowserCore['group']\n track = this._createMethod('track')\n ready = this._createMethod('ready')\n alias = this._createMethod('alias')\n debug = this._createChainableMethod('debug')\n page = this._createMethod('page')\n once = this._createChainableMethod('once')\n off = this._createChainableMethod('off')\n on = this._createChainableMethod('on')\n addSourceMiddleware = this._createMethod('addSourceMiddleware')\n setAnonymousId = this._createMethod('setAnonymousId')\n addDestinationMiddleware = this._createMethod('addDestinationMiddleware')\n\n screen = this._createMethod('screen')\n register = this._createMethod('register')\n deregister = this._createMethod('deregister')\n user = this._createMethod('user')\n readonly VERSION = version\n\n private _createMethod<T extends PreInitMethodName>(methodName: T) {\n return (\n ...args: Parameters<Analytics[T]>\n ): Promise<ReturnTypeUnwrap<Analytics[T]>> => {\n if (this.instance) {\n const result = (this.instance[methodName] as Function)(...args)\n return Promise.resolve(result)\n }\n return new Promise((resolve, reject) => {\n this._preInitBuffer.push(\n new PreInitMethodCall(methodName, args, resolve as any, reject)\n )\n })\n }\n }\n\n /**\n * These are for methods that where determining when the method gets \"flushed\" is not important.\n * These methods will resolve when analytics is fully initialized, and return type (other than Analytics)will not be available.\n */\n private _createChainableMethod<T extends PreInitMethodName>(methodName: T) {\n return (...args: Parameters<Analytics[T]>): AnalyticsBuffered => {\n if (this.instance) {\n void (this.instance[methodName] as Function)(...args)\n return this\n } else {\n this._preInitBuffer.push(new PreInitMethodCall(methodName, args))\n }\n\n return this\n }\n }\n}\n","/**\n * Check if thenable\n * (instanceof Promise doesn't respect realms)\n */\nexport const isThenable = (value: unknown): boolean =>\n typeof value === 'object' &&\n value !== null &&\n 'then' in value &&\n typeof (value as any).then === 'function'\n","import {\n AliasParams,\n DispatchedEvent,\n EventParams,\n GroupParams,\n PageParams,\n resolveAliasArguments,\n resolveArguments,\n resolvePageArguments,\n resolveUserArguments,\n IdentifyParams,\n} from '../arguments-resolver'\nimport type { FormArgs, LinkArgs } from '../auto-track'\nimport { isOffline } from '../connection'\nimport { Context } from '../context'\nimport { dispatch, Emitter } from '@ht-sdks/events-sdk-js-core'\nimport {\n Callback,\n EventFactory,\n Integrations,\n Plan,\n EventProperties,\n HightouchEvent,\n} from '../events'\nimport type { Plugin } from '../plugin'\nimport { EventQueue } from '../queue/event-queue'\nimport { Group, ID, User, UserOptions } from '../user'\nimport autoBind from '../../lib/bind-all'\nimport { PersistedPriorityQueue } from '../../lib/priority-queue/persisted'\nimport type { LegacyDestination } from '../../plugins/ajs-destination'\nimport type {\n LegacyIntegration,\n ClassicIntegrationSource,\n} from '../../plugins/ajs-destination/types'\nimport type {\n DestinationMiddlewareFunction,\n MiddlewareFunction,\n} from '../../plugins/middleware'\nimport { version } from '../../generated/version'\nimport { PriorityQueue } from '../../lib/priority-queue'\nimport { getGlobal } from '../../lib/get-global'\nimport { AnalyticsClassic, AnalyticsCore } from './interfaces'\nimport { HighEntropyHint } from '../../lib/client-hints/interfaces'\nimport type { LegacySettings } from '../../browser'\nimport {\n CookieOptions,\n MemoryStorage,\n UniversalStorage,\n StorageSettings,\n StoreType,\n applyCookieOptions,\n initializeStorages,\n isArrayOfStoreType,\n} from '../storage'\nimport { PluginFactory } from '../../plugins/remote-loader'\nimport { setGlobalAnalytics } from '../../lib/global-analytics-helper'\nimport { popPageContext } from '../buffer'\nimport type {\n HTTPCookieService,\n HTTPCookieServiceOptions,\n} from '../http-cookies'\nimport type { DestinationSettings } from '../../plugins/destinations'\n\nconst deprecationWarning =\n 'This is being deprecated and will be not be available in future releases of Analytics JS'\n\n// reference any pre-existing \"analytics\" object so a user can restore the reference\nconst global: any = getGlobal()\nconst _analytics = global?.analytics\n\nfunction createDefaultQueue(\n name: string,\n retryQueue = false,\n disablePersistance = false\n) {\n const maxAttempts = retryQueue ? 4 : 1\n const priorityQueue = disablePersistance\n ? new PriorityQueue(maxAttempts, [])\n : new PersistedPriorityQueue(maxAttempts, name)\n return new EventQueue(priorityQueue)\n}\n\nexport interface AnalyticsSettings {\n writeKey: string\n timeout?: number\n plugins?: (Plugin | PluginFactory)[]\n classicIntegrations?: ClassicIntegrationSource[]\n}\n\nexport interface InitOptions {\n /**\n * Disables storing any data on the client-side via cookies or localstorage.\n * Defaults to `false`.\n *\n */\n disableClientPersistence?: boolean\n /**\n * Disables automatically converting ISO string event properties into Dates.\n * ISO string to Date conversions occur right before sending events to a classic device mode integration,\n * after any destination middleware have been ran.\n * Defaults to `false`.\n */\n disableAutoISOConversion?: boolean\n initialPageview?: boolean\n cookie?: CookieOptions\n storage?: StorageSettings\n user?: UserOptions\n group?: UserOptions\n integrations?: Integrations\n plan?: Plan\n retryQueue?: boolean\n obfuscate?: boolean\n /**\n * This callback allows you to update/mutate CDN Settings.\n * This is called directly after settings are fetched from the CDN.\n */\n updateCDNSettings?: (settings: LegacySettings) => LegacySettings\n /**\n * Disables or sets constraints on processing of query string parameters\n */\n useQueryString?:\n | boolean\n | {\n aid?: RegExp\n uid?: RegExp\n }\n /**\n * Array of high entropy Client Hints to request. These may be rejected by the user agent - only required hints should be requested.\n */\n highEntropyValuesClientHints?: HighEntropyHint[]\n /**\n * When using the snippet, this is the key that points to the global analytics instance (e.g. window.htevents).\n * default: analytics\n */\n globalAnalyticsKey?: string\n\n /**\n * Allows specifying plugins as configuration. Used to load plugins in `plugins/destinations/*`.\n */\n destinations?: Record<string, DestinationSettings>\n\n /**\n * When setting httpCookieServiceOptions, an HTTPCookieService is automatically created\n */\n httpCookieServiceOptions?: HTTPCookieServiceOptions\n /**\n * When not setting httpCookieServiceOptions, you may pass your own instance of HTTPCookieService\n */\n httpCookieService?: HTTPCookieService\n\n /**\n * Shortcuts for overriding the default Hightouch.io integration settings\n */\n apiHost?: string // Defaults to us-east-1.hightouch-events.com\n protocol?: string // Defaults to https\n batching?: boolean // Defaults to false\n}\n\n/* analytics-classic stubs */\nfunction _stub(this: never) {\n console.warn(deprecationWarning)\n}\n\nexport class Analytics\n extends Emitter\n implements AnalyticsCore, AnalyticsClassic\n{\n protected settings: AnalyticsSettings\n private _user: User\n private _group: Group\n private eventFactory: EventFactory\n private _debug = false\n private _universalStorage: UniversalStorage\n\n initialized = false\n integrations: Integrations\n options: InitOptions\n queue: EventQueue\n\n constructor(\n settings: AnalyticsSettings,\n options?: InitOptions,\n queue?: EventQueue,\n user?: User,\n group?: Group\n ) {\n super()\n const cookieOptions = options?.cookie\n const disablePersistance = options?.disableClientPersistence ?? false\n this.settings = settings\n this.settings.timeout = this.settings.timeout ?? 300\n this.queue =\n queue ??\n createDefaultQueue(\n `${settings.writeKey}:event-queue`,\n options?.retryQueue,\n disablePersistance\n )\n\n const storageSetting = options?.storage\n this._universalStorage = this.createStore(\n disablePersistance,\n storageSetting,\n cookieOptions\n )\n\n this._user =\n user ??\n new User(\n {\n persist: !disablePersistance,\n storage: options?.storage,\n httpCookieService: options?.httpCookieService,\n // Any User specific options override everything else\n ...options?.user,\n },\n cookieOptions\n ).load()\n this._group =\n group ??\n new Group(\n {\n persist: !disablePersistance,\n storage: options?.storage,\n // Any group specific options override everything else\n ...options?.group,\n },\n cookieOptions\n ).load()\n this.eventFactory = new EventFactory(this._user)\n this.integrations = options?.integrations ?? {}\n this.options = options ?? {}\n autoBind(this)\n }\n\n user = (): User => {\n return this._user\n }\n\n /**\n * Creates the storage system based on the settings received\n * @returns Storage\n */\n private createStore(\n disablePersistance: boolean,\n storageSetting: InitOptions['storage'],\n cookieOptions?: CookieOptions | undefined\n ): UniversalStorage {\n // DisablePersistance option overrides all, no storage will be used outside of memory even if specified\n if (disablePersistance) {\n return new UniversalStorage([new MemoryStorage()])\n } else {\n if (storageSetting) {\n if (isArrayOfStoreType(storageSetting)) {\n // We will create the store with the priority for customer settings\n return new UniversalStorage(\n initializeStorages(\n applyCookieOptions(storageSetting.stores, cookieOptions)\n )\n )\n }\n }\n }\n // We default to our multi storage with priority\n return new UniversalStorage(\n initializeStorages([\n StoreType.LocalStorage,\n {\n name: StoreType.Cookie,\n settings: cookieOptions,\n },\n StoreType.Memory,\n ])\n )\n }\n\n get storage(): UniversalStorage {\n return this._universalStorage\n }\n\n async track(...args: EventParams): Promise<DispatchedEvent> {\n const pageCtx = popPageContext(args)\n const [name, data, opts, cb] = resolveArguments(...args)\n\n const hightouchEvent = this.eventFactory.track(\n name,\n data as EventProperties,\n opts,\n this.integrations,\n pageCtx\n )\n\n return this._dispatch(hightouchEvent, cb).then((ctx) => {\n this.emit('track', name, ctx.event.properties, ctx.event.options)\n return ctx\n })\n }\n\n async page(...args: PageParams): Promise<DispatchedEvent> {\n const pageCtx = popPageContext(args)\n const [category, page, properties, options, callback] =\n resolvePageArguments(...args)\n\n const hightouchEvent = this.eventFactory.page(\n category,\n page,\n properties,\n options,\n this.integrations,\n pageCtx\n )\n\n return this._dispatch(hightouchEvent, callback).then((ctx) => {\n this.emit('page', category, page, ctx.event.properties, ctx.event.options)\n return ctx\n })\n }\n\n async identify(...args: IdentifyParams): Promise<DispatchedEvent> {\n const pageCtx = popPageContext(args)\n const [id, _traits, options, callback] = resolveUserArguments(this._user)(\n ...args\n )\n\n this._user.identify(id, _traits)\n const hightouchEvent = this.eventFactory.identify(\n this._user.id(),\n this._user.traits(),\n options,\n this.integrations,\n pageCtx\n )\n\n return this._dispatch(hightouchEvent, callback).then((ctx) => {\n this.emit(\n 'identify',\n ctx.event.userId,\n ctx.event.traits,\n ctx.event.options\n )\n return ctx\n })\n }\n\n group(): Group\n group(...args: GroupParams): Promise<DispatchedEvent>\n group(...args: GroupParams): Promise<DispatchedEvent> | Group {\n const pageCtx = popPageContext(args)\n if (args.length === 0) {\n return this._group\n }\n\n const [id, _traits, options, callback] = resolveUserArguments(this._group)(\n ...args\n )\n\n this._group.identify(id, _traits)\n const groupId = this._group.id()\n const groupTraits = this._group.traits()\n\n const hightouchEvent = this.eventFactory.group(\n groupId,\n groupTraits,\n options,\n this.integrations,\n pageCtx\n )\n\n return this._dispatch(hightouchEvent, callback).then((ctx) => {\n this.emit('group', ctx.event.groupId, ctx.event.traits, ctx.event.options)\n return ctx\n })\n }\n\n async alias(...args: AliasParams): Promise<DispatchedEvent> {\n const pageCtx = popPageContext(args)\n const [to, from, options, callback] = resolveAliasArguments(...args)\n const hightouchEvent = this.eventFactory.alias(\n to,\n from,\n options,\n this.integrations,\n pageCtx\n )\n return this._dispatch(hightouchEvent, callback).then((ctx) => {\n this.emit('alias', to, from, ctx.event.options)\n return ctx\n })\n }\n\n async screen(...args: PageParams): Promise<DispatchedEvent> {\n const pageCtx = popPageContext(args)\n const [category, page, properties, options, callback] =\n resolvePageArguments(...args)\n\n const hightouchEvent = this.eventFactory.screen(\n category,\n page,\n properties,\n options,\n this.integrations,\n pageCtx\n )\n return this._dispatch(hightouchEvent, callback).then((ctx) => {\n this.emit(\n 'screen',\n category,\n page,\n ctx.event.properties,\n ctx.event.options\n )\n return ctx\n })\n }\n\n async trackClick(...args: LinkArgs): Promise<Analytics> {\n const autotrack = await import(\n /* webpackChunkName: \"auto-track\" */ '../auto-track'\n )\n return autotrack.link.call(this, ...args)\n }\n\n async trackLink(...args: LinkArgs): Promise<Analytics> {\n const autotrack = await import(\n /* webpackChunkName: \"auto-track\" */ '../auto-track'\n )\n return autotrack.link.call(this, ...args)\n }\n\n async trackSubmit(...args: FormArgs): Promise<Analytics> {\n const autotrack = await import(\n /* webpackChunkName: \"auto-track\" */ '../auto-track'\n )\n return autotrack.form.call(this, ...args)\n }\n\n async trackForm(...args: FormArgs): Promise<Analytics> {\n const autotrack = await import(\n /* webpackChunkName: \"auto-track\" */ '../auto-track'\n )\n return autotrack.form.call(this, ...args)\n }\n\n async register(...plugins: Plugin[]): Promise<Context> {\n const ctx = Context.system()\n\n const registrations = plugins.map((xt) =>\n this.queue.register(ctx, xt, this)\n )\n await Promise.all(registrations)\n\n return ctx\n }\n\n async deregister(...plugins: string[]): Promise<Context> {\n const ctx = Context.system()\n\n const deregistrations = plugins.map((pl) => {\n const plugin = this.queue.plugins.find((p) => p.name === pl)\n if (plugin) {\n return this.queue.deregister(ctx, plugin, this)\n } else {\n ctx.log('warn', `plugin ${pl} not found`)\n }\n })\n\n await Promise.all(deregistrations)\n\n return ctx\n }\n\n debug(toggle: boolean): Analytics {\n // Make sure legacy ajs debug gets turned off if it was enabled before upgrading.\n if (toggle === false && localStorage.getItem('debug')) {\n localStorage.removeItem('debug')\n }\n this._debug = toggle\n return this\n }\n\n startSession(sessionId?: number): void {\n this._user.startManualSession(sessionId)\n }\n\n endSession(): void {\n this._user.endManualSession()\n }\n\n getSessionId(): number | null {\n return this._user.sessionId() ?? null\n }\n\n reset(): void {\n this._user.reset()\n this._group.reset()\n this.emit('reset')\n }\n\n timeout(timeout: number): void {\n this.settings.timeout = timeout\n }\n\n private async _dispatch(\n event: HightouchEvent,\n callback?: Callback\n ): Promise<DispatchedEvent> {\n const ctx = new Context(event)\n if (isOffline() && !this.options.retryQueue) {\n return ctx\n }\n return dispatch(ctx, this.queue, this, {\n callback,\n debug: this._debug,\n timeout: this.settings.timeout,\n })\n }\n\n async addSourceMiddleware(fn: MiddlewareFunction): Promise<Analytics> {\n await this.queue.criticalTasks.run(async () => {\n const { sourceMiddlewarePlugin } = await import(\n /* webpackChunkName: \"middleware\" */ '../../plugins/middleware'\n )\n\n const integrations: Record<string, boolean> = {}\n this.queue.plugins.forEach((plugin) => {\n if (plugin.type === 'destination') {\n return (integrations[plugin.name] = true)\n }\n })\n\n const plugin = sourceMiddlewarePlugin(fn, integrations)\n await this.register(plugin)\n })\n\n return this\n }\n\n /* TODO: This does not have to return a promise? */\n addDestinationMiddleware(\n integrationName: string,\n ...middlewares: DestinationMiddlewareFunction[]\n ): Promise<Analytics> {\n const legacyDestinations = this.queue.plugins.filter(\n (xt) => xt.name.toLowerCase() === integrationName.toLowerCase()\n ) as LegacyDestination[]\n\n legacyDestinations.forEach((destination) => {\n destination.addMiddleware(...middlewares)\n })\n return Promise.resolve(this)\n }\n\n setAnonymousId(id?: string): ID {\n return this._user.anonymousId(id)\n }\n\n async queryString(query: string): Promise<Context[]> {\n if (this.options.useQueryString === false) {\n return []\n }\n\n const { queryString } = await import(\n /* webpackChunkName: \"queryString\" */ '../query-string'\n )\n return queryString(this, query)\n }\n\n /**\n * @deprecated This function does not register a destination plugin.\n *\n * Instantiates a legacy Analytics.js destination.\n *\n * This function does not register the destination as an Analytics.JS plugin,\n * all the it does it to invoke the factory function back.\n */\n use(legacyPluginFactory: (analytics: Analytics) => void): Analytics {\n legacyPluginFactory(this)\n return this\n }\n\n async ready(\n callback: Function = (res: Promise<unknown>[]): Promise<unknown>[] => res\n ): Promise<unknown> {\n return Promise.all(\n this.queue.plugins.map((i) => (i.ready ? i.ready() : Promise.resolve()))\n ).then((res) => {\n callback(res)\n return res\n })\n }\n\n // analytics-classic api\n\n noConflict(): Analytics {\n console.warn(deprecationWarning)\n setGlobalAnalytics(_analytics ?? this)\n return this\n }\n\n normalize(msg: HightouchEvent): HightouchEvent {\n console.warn(deprecationWarning)\n return this.eventFactory.normalize(msg)\n }\n\n get failedInitializations(): string[] {\n console.warn(deprecationWarning)\n return this.queue.failedInitializations\n }\n\n get VERSION(): string {\n return version\n }\n\n /* @deprecated - noop */\n async initialize(\n _settings?: AnalyticsSettings,\n _options?: InitOptions\n ): Promise<Analytics> {\n console.warn(deprecationWarning)\n return Promise.resolve(this)\n }\n\n init = this.initialize.bind(this)\n\n async pageview(url: string): Promise<Analytics> {\n console.warn(deprecationWarning)\n await this.page({ path: url })\n return this\n }\n\n get plugins() {\n console.warn(deprecationWarning)\n // @ts-expect-error\n return this._plugins ?? {}\n }\n\n get Integrations() {\n console.warn(deprecationWarning)\n const integrations = this.queue.plugins\n .filter((plugin) => plugin.type === 'destination')\n .reduce(\n (acc, plugin) => {\n const name = `${plugin.name\n .toLowerCase()\n .replace('.', '')\n .split(' ')\n .join('-')}Integration`\n\n // @ts-expect-error\n const integration = window[name] as\n | (LegacyIntegration & { Integration?: LegacyIntegration })\n | undefined\n\n if (!integration) {\n return acc\n }\n\n const nested = integration.Integration // hack - Google Analytics function resides in the \"Integration\" field\n if (nested) {\n acc[plugin.name] = nested\n return acc\n }\n\n acc[plugin.name] = integration as LegacyIntegration\n return acc\n },\n {} as Record<string, LegacyIntegration>\n )\n\n return integrations\n }\n\n log = _stub\n addIntegrationMiddleware = _stub\n listeners = _stub\n addEventListener = _stub\n removeAllListeners = _stub\n removeListener = _stub\n removeEventListener = _stub\n hasListeners = _stub\n add = _stub\n addIntegration = _stub\n\n // snippet function\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n push(args: any[]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const an = this as any\n const method = args.shift()\n if (method) {\n if (!an[method]) return\n }\n an[method].apply(this, args)\n }\n}\n","import { fetch } from '../../lib/fetch'\n\ntype DeferredRequest = () => Promise<Response>\n\nexport type HTTPCookieServiceOptions = {\n renewUrl: string\n clearUrl: string\n retries?: number\n backoff?: number\n flushInterval?: number\n}\n\n/**\n * `HTTPCookieService.load(...)` should be awaited inside `loadAnalytics(...)`.\n * If the server can recreate an expired \"Browser Cookie\", by inspecting existing\n * \"Server Cookies\", we should delay dispatching events until receiving the Cookie.\n *\n * dispatch$Method class methods should be used after any cookie interactions:\n * `dispatchCreate()` should be called after creating any new browser cookies.\n * `dispatchClear()` should be called after clearing any browser cookies.\n *\n * Manual `startQueueConsumer()` or `stopQueueConsumer()` is not usually necessary.\n *\n * Glossary:\n * \"Server Cookies\": `HTTPOnly:true`, stored on client, but only server can access.\n * \"Browser Cookies\": `HTTPOnly:false`, stored on client, and both client and server can access.\n */\nexport class HTTPCookieService {\n private queue: DeferredRequest[]\n private renewUrl: string\n private clearUrl: string\n private retries: number\n private backoff: number\n private flushInterval: number\n private flushIntervalId?: NodeJS.Timer\n\n private constructor(options: HTTPCookieServiceOptions) {\n const urls = HTTPCookieService.urlHelper(options)\n this.renewUrl = urls.renewUrl\n this.clearUrl = urls.clearUrl\n\n this.backoff = options.backoff ?? 300\n this.retries = options.retries ?? 3\n this.flushInterval = options.flushInterval ?? 1000\n this.queue = []\n }\n\n static urlHelper(options: HTTPCookieServiceOptions): {\n renewUrl: string\n clearUrl: string\n } {\n const origin = window.location.origin\n return {\n renewUrl: new URL(options.renewUrl, origin).href,\n clearUrl: new URL(options.clearUrl, origin).href,\n }\n }\n\n static async load(\n options: HTTPCookieServiceOptions\n ): Promise<HTTPCookieService> {\n const cookieService = new HTTPCookieService(options)\n\n // renew any existing HTTPCookies already on the device\n // we want `load()` to block on this, so await directly instead of calling dispatch\n const req = cookieService.sendHTTPCookies(cookieService.renewUrl)\n await retry(req, cookieService.retries, cookieService.backoff).catch(\n console.error\n )\n\n // consume HTTPCookie actions, sequentially, as needed\n cookieService.startQueueConsumer()\n\n return cookieService\n }\n\n dispatchCreate() {\n this.queue.push(this.sendHTTPCookies(this.renewUrl))\n }\n\n dispatchClear() {\n this.queue.push(this.sendHTTPCookies(this.clearUrl))\n }\n\n startQueueConsumer() {\n if (this.flushIntervalId) {\n console.error('HTTPCookie queue consumer is already running.')\n return\n }\n const bound = this.consumeQueue.bind(this)\n this.flushIntervalId = setInterval(\n () => bound().catch(console.error),\n this.flushInterval\n )\n }\n\n stopQueueConsumer() {\n if (!this.flushIntervalId) {\n console.error('HTTPCookie queue consumer is already stopped.')\n return\n }\n clearInterval(this.flushIntervalId)\n this.flushIntervalId = undefined\n }\n\n private sendHTTPCookies(serviceUrl: string): DeferredRequest {\n return async function (): Promise<Response> {\n return await fetch(serviceUrl, {\n credentials: 'include',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'post',\n body: JSON.stringify({\n sentAt: new Date().toISOString(),\n }),\n })\n }\n }\n\n /**\n * This queue exists to avoid race conditions.\n *\n * Customer-developers may not `await` all promises.\n *\n * Therefore, introducing async code into analytics.track(), etc\n * could create race conditions in customer code.\n *\n * The queue enforces: if someone calls analytics.clear()\n * before calling analytics.identify(), the cookie service\n * will consume those actions, sequentially, even if no promises\n * are awaited.\n */\n private async consumeQueue() {\n while (this.queue.length > 0) {\n const req = this.queue.shift() as DeferredRequest\n await retry(req, this.retries, this.backoff).catch(console.error)\n }\n }\n}\n\nasync function sleep(delayMS: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, delayMS))\n}\n\nasync function retry(\n req: DeferredRequest,\n retries: number,\n backoff: number\n): Promise<Response> {\n while (retries >= 0) {\n try {\n return await req().then((res) => {\n if (res.ok) return res\n throw new Error(`Status: ${res.status} ${res.statusText}`)\n })\n } catch (error) {\n retries -= 1\n if (retries <= 0) throw error\n await sleep(backoff)\n }\n }\n throw Error('HtEvents: Problem with DeferredRequest')\n}\n","import jar from 'js-cookie'\nimport type { Context } from '../../core/context'\nimport type { Plugin } from '../../core/plugin'\nimport { version } from '../../generated/version'\nimport { HightouchEvent } from '../../core/events'\nimport { Campaign, PluginType } from '@ht-sdks/events-sdk-js-core'\nimport { getVersionType } from '../../lib/version-type'\nimport { tld } from '../../core/user/tld'\nimport { gracefulDecodeURIComponent } from '../../core/query-string/gracefulDecodeURIComponent'\nimport { CookieStorage, UniversalStorage } from '../../core/storage'\nimport { Analytics } from '../../core/analytics'\nimport { clientHints } from '../../lib/client-hints'\nimport { UADataValues } from '../../lib/client-hints/interfaces'\n\nlet cookieOptions: jar.CookieAttributes | undefined\nfunction getCookieOptions(): jar.CookieAttributes {\n if (cookieOptions) {\n return cookieOptions\n }\n\n const domain = tld(window.location.href)\n cookieOptions = {\n expires: 31536000000, // 1 year\n secure: false,\n path: '/',\n }\n if (domain) {\n cookieOptions.domain = domain\n }\n\n return cookieOptions\n}\n\ntype Ad = { id: string; type: string }\n\nfunction ads(query: string): Ad | undefined {\n const queryIds: Record<string, string> = {\n btid: 'dataxu',\n urid: 'millennial-media',\n }\n\n if (query.startsWith('?')) {\n query = query.substring(1)\n }\n query = query.replace(/\\?/g, '&')\n const parts = query.split('&')\n\n for (const part of parts) {\n const [k, v] = part.split('=')\n if (queryIds[k]) {\n return {\n id: v,\n type: queryIds[k],\n }\n }\n }\n}\n\nexport function utm(query: string): Campaign {\n if (query.startsWith('?')) {\n query = query.substring(1)\n }\n query = query.replace(/\\?/g, '&')\n\n return query.split('&').reduce((acc, str) => {\n const [k, v = ''] = str.split('=')\n if (k.startsWith('utm_') && k.length > 4) {\n let utmParam = k.slice(4) as keyof Campaign\n if (utmParam === 'campaign') {\n utmParam = 'name'\n }\n acc[utmParam] = gracefulDecodeURIComponent(v)\n }\n return acc\n }, {} as Campaign)\n}\n\nexport function ampId(): string | undefined {\n const ampId = jar.get('_ga')\n if (ampId && ampId.startsWith('amp')) {\n return ampId\n }\n}\n\nfunction referrerId(\n query: string,\n ctx: HightouchEvent['context'],\n disablePersistance: boolean\n): void {\n const storage = new UniversalStorage<{\n 's:context.referrer': Ad\n }>(disablePersistance ? [] : [new CookieStorage(getCookieOptions())])\n\n const stored = storage.get('s:context.referrer')\n\n const ad = ads(query) ?? stored\n\n if (!ad) {\n return\n }\n\n if (ctx) {\n ctx.referrer = { ...ctx.referrer, ...ad }\n }\n\n storage.set('s:context.referrer', ad)\n}\n\n/**\n *\n * @param obj e.g. { foo: 'b', bar: 'd', baz: ['123', '456']}\n * @returns e.g. 'foo=b&bar=d&baz=123&baz=456'\n */\nconst objectToQueryString = (\n obj: Record<string, string | string[]>\n): string => {\n try {\n const searchParams = new URLSearchParams()\n Object.entries(obj).forEach(([k, v]) => {\n if (Array.isArray(v)) {\n v.forEach((value) => searchParams.append(k, value))\n } else {\n searchParams.append(k, v)\n }\n })\n return searchParams.toString()\n } catch {\n return ''\n }\n}\n\nclass EnvironmentEnrichmentPlugin implements Plugin {\n private instance!: Analytics\n private userAgentData: UADataValues | undefined\n\n name = 'Page Enrichment'\n type: PluginType = 'before'\n version = '0.1.0'\n isLoaded = () => true\n load = async (_ctx: Context, instance: Analytics) => {\n this.instance = instance\n try {\n this.userAgentData = await clientHints(\n this.instance.options.highEntropyValuesClientHints\n )\n } catch (_) {\n // if client hints API doesn't return anything leave undefined\n }\n return Promise.resolve()\n }\n\n private enrich = (ctx: Context): Context => {\n // Note: Types are off - context should never be undefined here, since it is set as part of event creation.\n const evtCtx = ctx.event.context!\n\n const search = evtCtx.page!.search || ''\n\n const query =\n typeof search === 'object' ? objectToQueryString(search) : search\n\n evtCtx.userAgent = navigator.userAgent\n evtCtx.userAgentData = this.userAgentData\n\n // @ts-ignore\n const locale = navigator.userLanguage || navigator.language\n\n if (typeof evtCtx.locale === 'undefined' && typeof locale !== 'undefined') {\n evtCtx.locale = locale\n }\n\n evtCtx.library ??= {\n name: 'events-sdk-js',\n version: `${getVersionType() === 'web' ? 'web' : 'npm'}-${version}`,\n }\n\n if (query && !evtCtx.campaign) {\n evtCtx.campaign = utm(query)\n }\n\n const amp = ampId()\n if (amp) {\n evtCtx.amp = { id: amp }\n }\n\n referrerId(\n query,\n evtCtx,\n this.instance.options.disableClientPersistence ?? false\n )\n\n try {\n evtCtx.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone\n } catch (_) {\n // If browser doesn't have support leave timezone undefined\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\nexport const envEnrichment = new EnvironmentEnrichmentPlugin()\n","import { HighEntropyHint, NavigatorUAData, UADataValues } from './interfaces'\n\n// Tolerate Pascal-cased `Brand` / `Version` aliases emitted by some polyfills\n// and enterprise wrappers on `brands` entries. The W3C spec only defines\n// lowercase `brand` / `version`\n// (https://wicg.github.io/ua-client-hints/#dictdef-navigatoruabrandversion),\n// and downstream consumers read those, so we coerce to lowercase here.\nfunction normalizeBrands(\n brands: UADataValues['brands']\n): UADataValues['brands'] {\n return brands?.map(({ Brand, Version, brand, version, ...rest }: any) => ({\n ...rest,\n brand: brand ?? Brand,\n version: version ?? Version,\n }))\n}\n\nexport async function clientHints(\n hints?: HighEntropyHint[]\n): Promise<UADataValues | undefined> {\n const userAgentData = (navigator as any).userAgentData as\n | NavigatorUAData\n | undefined\n\n if (!userAgentData) return undefined\n\n const data = !hints\n ? userAgentData.toJSON()\n : await userAgentData\n .getHighEntropyValues(hints)\n .catch(() => userAgentData.toJSON())\n\n return { ...data, brands: normalizeBrands(data.brands) }\n}\n","import type { Integrations } from '../../core/events/interfaces'\nimport { LegacySettings } from '../../browser'\nimport { JSONObject, JSONValue } from '../../core/events'\nimport { DestinationPlugin, Plugin } from '../../core/plugin'\nimport { loadScript } from '../../lib/load-script'\nimport { getCDN } from '../../lib/parse-cdn'\nimport {\n applyDestinationMiddleware,\n DestinationMiddlewareFunction,\n} from '../middleware'\nimport { Context, ContextCancelation } from '../../core/context'\nimport { Analytics } from '../../core/analytics'\n\nexport interface RemotePlugin {\n /** The name of the remote plugin */\n name: string\n /** The creation name of the remote plugin */\n creationName: string\n /** The url of the javascript file to load */\n url: string\n /** The UMD/global name the plugin uses. Plugins are expected to exist here with the `PluginFactory` method signature */\n libraryName: string\n /** The settings related to this plugin. */\n settings: JSONObject\n}\n\nexport class ActionDestination implements DestinationPlugin {\n name: string // destination name\n version = '1.0.0'\n type: Plugin['type']\n\n alternativeNames: string[] = []\n\n middleware: DestinationMiddlewareFunction[] = []\n\n action: Plugin\n\n constructor(name: string, action: Plugin) {\n this.action = action\n this.name = name\n this.type = action.type\n this.alternativeNames.push(action.name)\n }\n\n addMiddleware(...fn: DestinationMiddlewareFunction[]): void {\n if (this.type === 'destination') {\n this.middleware.push(...fn)\n }\n }\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(\n methodName: 'track' | 'page' | 'identify' | 'alias' | 'group' | 'screen'\n ) {\n return async (ctx: Context): Promise<Context> => {\n if (!this.action[methodName]) return ctx\n\n let transformedContext: Context = ctx\n // Transformations only allowed for destination plugins. Other plugin types support mutating events.\n if (this.type === 'destination') {\n transformedContext = await this.transform(ctx)\n }\n\n await this.action[methodName]!(transformedContext)\n\n return ctx\n }\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 /* --- PASSTHROUGH METHODS --- */\n isLoaded(): boolean {\n return this.action.isLoaded()\n }\n\n ready(): Promise<unknown> {\n return this.action.ready ? this.action.ready() : Promise.resolve()\n }\n\n load(ctx: Context, analytics: Analytics): Promise<unknown> {\n return this.action.load(ctx, analytics)\n }\n\n unload(ctx: Context, analytics: Analytics): Promise<unknown> | unknown {\n return this.action.unload?.(ctx, analytics)\n }\n}\n\nexport type PluginFactory = {\n (settings: JSONValue): Plugin | Plugin[] | Promise<Plugin | Plugin[]>\n pluginName: string\n}\n\nfunction validate(pluginLike: unknown): pluginLike is Plugin[] {\n if (!Array.isArray(pluginLike)) {\n throw new Error('Not a valid list of plugins')\n }\n\n const required = ['load', 'isLoaded', 'name', 'version', 'type']\n pluginLike.forEach((plugin) => {\n required.forEach((method) => {\n if (plugin[method] === undefined) {\n throw new Error(\n `Plugin: ${\n plugin.name ?? 'unknown'\n } missing required function ${method}`\n )\n }\n })\n })\n\n return true\n}\n\nfunction isPluginDisabled(\n userIntegrations: Integrations,\n remotePlugin: RemotePlugin\n) {\n const creationNameEnabled = userIntegrations[remotePlugin.creationName]\n const currentNameEnabled = userIntegrations[remotePlugin.name]\n\n // Check that the plugin isn't explicitly enabled when All: false\n if (\n userIntegrations.All === false &&\n !creationNameEnabled &&\n !currentNameEnabled\n ) {\n return true\n }\n\n // Check that the plugin isn't explicitly disabled\n if (creationNameEnabled === false || currentNameEnabled === false) {\n return true\n }\n\n return false\n}\n\nasync function loadPluginFactory(\n remotePlugin: RemotePlugin,\n obfuscate?: boolean\n): Promise<void | PluginFactory> {\n const defaultCdn = new RegExp('https://cdn.hightouch-events.(com|build)')\n const cdn = getCDN()\n\n if (obfuscate) {\n const urlSplit = remotePlugin.url.split('/')\n const name = urlSplit[urlSplit.length - 2]\n const obfuscatedURL = remotePlugin.url.replace(\n name,\n btoa(name).replace(/=/g, '')\n )\n try {\n await loadScript(obfuscatedURL.replace(defaultCdn, cdn))\n } catch (error) {\n // Due to syncing concerns it is possible that the obfuscated action destination (or requested version) might not exist.\n // We should use the unobfuscated version as a fallback.\n await loadScript(remotePlugin.url.replace(defaultCdn, cdn))\n }\n } else {\n await loadScript(remotePlugin.url.replace(defaultCdn, cdn))\n }\n\n // @ts-expect-error\n if (typeof window[remotePlugin.libraryName] === 'function') {\n // @ts-expect-error\n return window[remotePlugin.libraryName] as PluginFactory\n }\n}\n\nexport async function remoteLoader(\n settings: LegacySettings,\n userIntegrations: Integrations,\n mergedIntegrations: Record<string, JSONObject>,\n obfuscate?: boolean,\n routingMiddleware?: DestinationMiddlewareFunction,\n pluginSources?: PluginFactory[]\n): Promise<Plugin[]> {\n const allPlugins: Plugin[] = []\n\n const routingRules = settings.middlewareSettings?.routingRules ?? []\n\n const pluginPromises = (settings.remotePlugins ?? []).map(\n async (remotePlugin) => {\n if (isPluginDisabled(userIntegrations, remotePlugin)) return\n\n try {\n const pluginFactory =\n pluginSources?.find(\n ({ pluginName }) => pluginName === remotePlugin.name\n ) || (await loadPluginFactory(remotePlugin, obfuscate))\n\n if (pluginFactory) {\n const plugin = await pluginFactory({\n ...remotePlugin.settings,\n ...mergedIntegrations[remotePlugin.name],\n })\n const plugins = Array.isArray(plugin) ? plugin : [plugin]\n\n validate(plugins)\n\n const routing = routingRules.filter(\n (rule) => rule.destinationName === remotePlugin.creationName\n )\n\n plugins.forEach((plugin) => {\n const wrapper = new ActionDestination(\n remotePlugin.creationName,\n plugin\n )\n\n /** Make sure we only apply destination filters to actions of the \"destination\" type to avoid causing issues for hybrid destinations */\n if (\n routing.length &&\n routingMiddleware &&\n plugin.type === 'destination'\n ) {\n wrapper.addMiddleware(routingMiddleware)\n }\n\n allPlugins.push(wrapper)\n })\n }\n } catch (error) {\n console.warn('Failed to load Remote Plugin', error)\n }\n }\n )\n\n await Promise.all(pluginPromises)\n return allPlugins.filter(Boolean)\n}\n","import { HightouchEvent } from '../../core/events'\nimport { fetch } from '../../lib/fetch'\nimport { onPageChange } from '../../lib/on-page-change'\n\nexport type BatchingDispatchConfig = {\n size?: number\n timeout?: number\n}\n\nconst MAX_PAYLOAD_SIZE = 500\n\nfunction kilobytes(buffer: unknown): number {\n const size = encodeURI(JSON.stringify(buffer)).split(/%..|./).length - 1\n return size / 1024\n}\n\n/**\n * Checks if the payload is over or close to\n * the maximum payload size allowed by tracking\n * API.\n */\nfunction approachingTrackingAPILimit(buffer: unknown): boolean {\n return kilobytes(buffer) >= MAX_PAYLOAD_SIZE - 50\n}\n\nfunction chunks(batch: object[]): Array<object[]> {\n const result: object[][] = []\n let index = 0\n\n batch.forEach((item) => {\n const size = kilobytes(result[index])\n if (size >= 64) {\n index++\n }\n\n if (result[index]) {\n result[index].push(item)\n } else {\n result[index] = [item]\n }\n })\n\n return result\n}\n\nexport default function batch(\n apiHost: string,\n config?: BatchingDispatchConfig,\n protocol = 'https'\n) {\n let buffer: object[] = []\n let pageUnloaded = false\n\n const limit = config?.size ?? 10\n const timeout = config?.timeout ?? 5000\n\n function sendBatch(batch: object[]) {\n if (batch.length === 0) {\n return\n }\n\n const writeKey = (batch[0] as HightouchEvent)?.writeKey\n\n // Remove sentAt from every event as batching only needs a single timestamp\n const updatedBatch = batch.map((event) => {\n const { sentAt, ...newEvent } = event as HightouchEvent\n return newEvent\n })\n\n return fetch(`${protocol}://${apiHost}/v1/batch`, {\n keepalive: pageUnloaded,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'post',\n body: JSON.stringify({\n writeKey,\n batch: updatedBatch,\n sentAt: new Date().toISOString(),\n }),\n })\n }\n\n async function flush(): Promise<unknown> {\n if (buffer.length) {\n const batch = buffer\n buffer = []\n return sendBatch(batch)\n }\n }\n\n let schedule: NodeJS.Timeout | undefined\n\n function scheduleFlush(): void {\n if (schedule) {\n return\n }\n\n schedule = setTimeout(() => {\n schedule = undefined\n flush().catch(console.error)\n }, timeout)\n }\n\n onPageChange((unloaded) => {\n pageUnloaded = unloaded\n\n if (pageUnloaded && buffer.length) {\n const reqs = chunks(buffer).map(sendBatch)\n Promise.all(reqs).catch(console.error)\n }\n })\n\n async function dispatch(_url: string, body: object): Promise<unknown> {\n buffer.push(body)\n\n const bufferOverflow =\n buffer.length >= limit || approachingTrackingAPILimit(buffer)\n\n return bufferOverflow || pageUnloaded ? flush() : scheduleFlush()\n }\n\n return {\n dispatch,\n }\n}\n","/**\n * Register event listener on document that fires when:\n * * tab change or tab close (in mobile or desktop)\n * * click back / forward button\n * * click any link or perform any other navigation action\n * * soft refresh / hard refresh\n *\n * adapted from https://stackoverflow.com/questions/3239834/window-onbeforeunload-not-working-on-the-ipad/52864508#52864508,\n */\nexport const onPageChange = (cb: (unloaded: boolean) => void) => {\n let unloaded = false // prevents double firing if both are supported\n\n window.addEventListener('pagehide', () => {\n if (unloaded) return\n unloaded = true\n cb(unloaded)\n })\n\n // using document instead of window because of bug affecting browsers before safari 14 (detail in footnotes https://caniuse.com/?search=visibilitychange)\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState == 'hidden') {\n if (unloaded) return\n unloaded = true\n } else {\n unloaded = false\n }\n cb(unloaded)\n })\n}\n","import { Analytics } from '../../core/analytics'\nimport { LegacySettings } from '../../browser'\nimport { SegmentFacade } from '../../lib/to-facade'\nimport { HightouchioSettings } from './index'\n\nexport function normalize(\n analytics: Analytics,\n json: ReturnType<SegmentFacade['json']>,\n settings?: HightouchioSettings,\n integrations?: LegacySettings['integrations']\n): object {\n const user = analytics.user()\n\n delete json.options\n\n json.writeKey = settings?.apiKey\n\n json.userId = json.userId || user.id()\n json.anonymousId = json.anonymousId || user.anonymousId()\n\n json.sentAt = new Date()\n\n const failed = analytics.queue.failedInitializations || []\n if (failed.length > 0) {\n json._metadata = { failedInitializations: failed }\n }\n\n const bundled: string[] = []\n const unbundled: string[] = []\n\n for (const key in integrations) {\n const integration = integrations[key]\n if (key === 'Hightouch.io') {\n bundled.push(key)\n }\n if (integration.bundlingStatus === 'bundled') {\n bundled.push(key)\n }\n if (integration.bundlingStatus === 'unbundled') {\n unbundled.push(key)\n }\n }\n\n // This will make sure that the disabled cloud mode destinations will be\n // included in the unbundled list.\n for (const settingsUnbundled of settings?.unbundledIntegrations || []) {\n if (!unbundled.includes(settingsUnbundled)) {\n unbundled.push(settingsUnbundled)\n }\n }\n\n const configIds = settings?.maybeBundledConfigIds ?? {}\n const bundledConfigIds: string[] = []\n\n bundled.sort().forEach((name) => {\n ;(configIds[name] ?? []).forEach((id) => {\n bundledConfigIds.push(id)\n })\n })\n\n if (settings?.addBundledMetadata !== false) {\n json._metadata = {\n ...json._metadata,\n bundled: bundled.sort(),\n unbundled: unbundled.sort(),\n bundledIds: bundledConfigIds,\n }\n }\n\n return json\n}\n","import { isOffline } from '../../core/connection'\nimport { Context } from '../../core/context'\nimport { Plugin } from '../../core/plugin'\nimport { attempt } from '@ht-sdks/events-sdk-js-core'\nimport { pWhile } from '../../lib/p-while'\nimport { PriorityQueue } from '../../lib/priority-queue'\n\nasync function flushQueue(\n xt: Plugin,\n queue: PriorityQueue<Context>\n): Promise<PriorityQueue<Context>> {\n const failedQueue: Context[] = []\n if (isOffline()) {\n return queue\n }\n\n await pWhile(\n () => queue.length > 0 && !isOffline(),\n async () => {\n const ctx = queue.pop()\n if (!ctx) {\n return\n }\n\n const result = await attempt(ctx, xt)\n const success = result instanceof Context\n if (!success) {\n failedQueue.push(ctx)\n }\n }\n )\n // re-add failed tasks\n failedQueue.map((failed) => queue.pushWithBackoff(failed))\n return queue\n}\n\nexport function scheduleFlush(\n flushing: boolean,\n buffer: PriorityQueue<Context>,\n xt: Plugin,\n scheduleFlush: Function\n): void {\n if (flushing) {\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n setTimeout(async () => {\n let isFlushing = true\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const newBuffer = await flushQueue(xt, buffer)\n isFlushing = false\n\n if (buffer.todo > 0) {\n scheduleFlush(isFlushing, newBuffer, xt, scheduleFlush)\n }\n }, Math.random() * 5000)\n}\n","import { Facade } from '@segment/facade'\nimport { Analytics } from '../../core/analytics'\nimport { LegacySettings } from '../../browser'\nimport { isOffline } from '../../core/connection'\nimport { Context } from '../../core/context'\nimport { Plugin } from '../../core/plugin'\nimport { PriorityQueue } from '../../lib/priority-queue'\nimport { PersistedPriorityQueue } from '../../lib/priority-queue/persisted'\nimport { toFacade } from '../../lib/to-facade'\nimport batch, { BatchingDispatchConfig } from './batched-dispatcher'\nimport standard, { StandardDispatcherConfig } from './fetch-dispatcher'\nimport { normalize } from './normalize'\nimport { scheduleFlush } from './schedule-flush'\nimport { HIGHTOUCH_API_HOST } from '../../core/constants'\n\ntype DeliveryStrategy =\n | {\n strategy?: 'standard'\n config?: StandardDispatcherConfig\n }\n | {\n strategy?: 'batching'\n config?: BatchingDispatchConfig\n }\n\nexport type HightouchioSettings = {\n apiKey: string\n apiHost?: string\n protocol?: 'http' | 'https'\n\n addBundledMetadata?: boolean\n unbundledIntegrations?: string[]\n bundledConfigIds?: string[]\n unbundledConfigIds?: string[]\n\n maybeBundledConfigIds?: Record<string, string[]>\n\n deliveryStrategy?: DeliveryStrategy\n}\n\ntype JSON = ReturnType<Facade['json']>\n\nfunction onAlias(analytics: Analytics, json: JSON): JSON {\n const user = analytics.user()\n json.previousId =\n json.previousId ?? json.from ?? user.id() ?? user.anonymousId()\n json.userId = json.userId ?? json.to\n delete json.from\n delete json.to\n return json\n}\n\nexport function hightouchio(\n analytics: Analytics,\n settings?: HightouchioSettings,\n integrations?: LegacySettings['integrations']\n): Plugin {\n // Attach `pagehide` before buffer is created so that inflight events are added\n // to the buffer before the buffer persists events in its own `pagehide` handler.\n window.addEventListener('pagehide', () => {\n buffer.push(...Array.from(inflightEvents))\n inflightEvents.clear()\n })\n\n const writeKey = settings?.apiKey ?? ''\n\n const buffer = analytics.options.disableClientPersistence\n ? new PriorityQueue<Context>(analytics.queue.queue.maxAttempts, [])\n : new PersistedPriorityQueue(\n analytics.queue.queue.maxAttempts,\n `${writeKey}:dest-Hightouch.io`\n )\n\n const inflightEvents = new Set<Context>()\n const flushing = false\n\n const apiHost = settings?.apiHost ?? HIGHTOUCH_API_HOST\n const protocol = settings?.protocol ?? 'https'\n const remote = `${protocol}://${apiHost}`\n\n const deliveryStrategy = settings?.deliveryStrategy\n const client =\n deliveryStrategy?.strategy === 'batching'\n ? batch(apiHost, deliveryStrategy.config, protocol)\n : standard(deliveryStrategy?.config as StandardDispatcherConfig)\n\n async function send(ctx: Context): Promise<Context> {\n if (isOffline()) {\n buffer.push(ctx)\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n scheduleFlush(flushing, buffer, hightouch, scheduleFlush)\n return ctx\n }\n\n inflightEvents.add(ctx)\n\n const eventType = ctx.event.type\n\n let json = toFacade(ctx.event).json()\n\n if (ctx.event.type === 'track') {\n delete json.traits\n }\n\n if (ctx.event.type === 'alias') {\n json = onAlias(analytics, json)\n }\n\n return client\n .dispatch(\n `${remote}/v1/${eventType}`,\n normalize(analytics, json, settings, integrations)\n )\n .then(() => ctx)\n .catch(() => {\n buffer.pushWithBackoff(ctx)\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n scheduleFlush(flushing, buffer, hightouch, scheduleFlush)\n return ctx\n })\n .finally(() => {\n inflightEvents.delete(ctx)\n })\n }\n\n const hightouch: Plugin = {\n name: 'Hightouch.io',\n type: 'after',\n version: '0.1.0',\n isLoaded: (): boolean => true,\n load: (): Promise<void> => Promise.resolve(),\n track: send,\n identify: send,\n page: send,\n alias: send,\n group: send,\n screen: send,\n }\n\n // Buffer may already have items if they were previously stored in localStorage.\n // Start flushing them immediately.\n if (buffer.todo) {\n scheduleFlush(flushing, buffer, hightouch, scheduleFlush)\n }\n\n return hightouch\n}\n","import { fetch } from '../../lib/fetch'\n\nexport type Dispatcher = (url: string, body: object) => Promise<unknown>\n\nexport type StandardDispatcherConfig = {\n keepalive?: boolean\n}\n\nexport default function (config?: StandardDispatcherConfig): {\n dispatch: Dispatcher\n} {\n function dispatch(url: string, body: object): Promise<unknown> {\n return fetch(url, {\n keepalive: config?.keepalive,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'post',\n body: JSON.stringify(body),\n })\n }\n\n return {\n dispatch,\n }\n}\n","import { __extends } from \"tslib\";\nvar ValidationError = /** @class */ (function (_super) {\n __extends(ValidationError, _super);\n function ValidationError(field, message) {\n var _this = _super.call(this, \"\".concat(field, \" \").concat(message)) || this;\n _this.field = field;\n return _this;\n }\n return ValidationError;\n}(Error));\nexport { ValidationError };\n//# sourceMappingURL=errors.js.map","import { ValidationError } from './errors';\nimport { isString, isPlainObject, exists } from './helpers';\nvar stringError = 'is not a string';\nvar objError = 'is not an object';\nvar nilError = 'is nil';\nexport function assertUserIdentity(event) {\n var USER_FIELD_NAME = '.userId/anonymousId/previousId/groupId';\n var getAnyUserId = function (event) { var _a, _b, _c; return (_c = (_b = (_a = event.userId) !== null && _a !== void 0 ? _a : event.anonymousId) !== null && _b !== void 0 ? _b : event.groupId) !== null && _c !== void 0 ? _c : event.previousId; };\n var id = getAnyUserId(event);\n if (!exists(id)) {\n throw new ValidationError(USER_FIELD_NAME, nilError);\n }\n else if (!isString(id)) {\n throw new ValidationError(USER_FIELD_NAME, stringError);\n }\n}\nexport function assertEventExists(event) {\n if (!exists(event)) {\n throw new ValidationError('Event', nilError);\n }\n if (typeof event !== 'object') {\n throw new ValidationError('Event', objError);\n }\n}\nexport function assertEventType(event) {\n if (!isString(event.type)) {\n throw new ValidationError('.type', stringError);\n }\n}\nexport function assertTrackEventName(event) {\n if (!isString(event.event)) {\n throw new ValidationError('.event', stringError);\n }\n}\nexport function assertTrackEventProperties(event) {\n if (!isPlainObject(event.properties)) {\n throw new ValidationError('.properties', objError);\n }\n}\nexport function assertTraits(event) {\n if (!isPlainObject(event.traits)) {\n throw new ValidationError('.traits', objError);\n }\n}\nexport function validateEvent(event) {\n assertEventExists(event);\n assertEventType(event);\n if (event.type === 'track') {\n assertTrackEventName(event);\n assertTrackEventProperties(event);\n }\n if (['group', 'identify'].includes(event.type)) {\n assertTraits(event);\n }\n assertUserIdentity(event);\n}\n//# sourceMappingURL=assertions.js.map","import type { Plugin } from '../../core/plugin'\nimport type { Context } from '../../core/context'\nimport {\n assertUserIdentity,\n isPlainObject,\n ValidationError,\n assertEventExists,\n assertEventType,\n assertTrackEventName,\n} from '@ht-sdks/events-sdk-js-core'\n\nfunction validate(ctx: Context): Context {\n const event = ctx.event\n assertEventExists(event)\n assertEventType(event)\n\n if (event.type === 'track') {\n assertTrackEventName(event)\n }\n\n const props = event.properties ?? event.traits\n if (event.type !== 'alias' && !isPlainObject(props)) {\n throw new ValidationError('.properties', 'is not an object')\n }\n\n assertUserIdentity(event)\n return ctx\n}\n\nexport const validation: Plugin = {\n name: 'Event Validation',\n type: 'before',\n version: '1.0.0',\n\n isLoaded: () => true,\n load: () => Promise.resolve(),\n\n track: validate,\n identify: validate,\n page: validate,\n alias: validate,\n group: validate,\n screen: validate,\n}\n","import { getGlobal } from '../../lib/get-global'\nimport type { Analytics } from '../analytics'\n\nconst env = getGlobal()\n\n// The code below assumes the inspector extension will use Object.assign\n// to add the inspect interface on to this object reference (unless the\n// extension code ran first and has already set up the variable)\nconst inspectorHost: {\n attach: (analytics: Analytics) => void\n} = ((env as any)['__HIGHTOUCH_INSPECTOR__'] ??= {})\n\nexport const attachInspector = (analytics: Analytics) =>\n inspectorHost.attach?.(analytics as any)\n","import type { DestinationSettings } from './types'\nimport { Destination } from './destination'\n\nexport { Destination }\nexport type { DestinationSettings }\n\nexport async function createDestination(\n name: string,\n settings: DestinationSettings\n): Promise<Destination | undefined> {\n switch (name) {\n case 'gtag':\n return import(/* webpackChunkName: \"gtag\" */ './gtag').then((mod) =>\n mod.default(settings as any)\n )\n case 'Google Tag Manager':\n return import(\n /* webpackChunkName: \"google-tag-manager\" */ './google-tag-manager'\n ).then((mod) => mod.default(settings as any))\n default:\n return undefined\n }\n}\n","import { getProcessEnv } from '../lib/get-process-env'\nimport { getCDN, setGlobalCDNUrl } from '../lib/parse-cdn'\n\nimport { fetch } from '../lib/fetch'\nimport { Analytics, AnalyticsSettings, InitOptions } from '../core/analytics'\nimport { Context } from '../core/context'\nimport { HTTPCookieService } from '../core/http-cookies'\nimport { Plan } from '../core/events'\nimport { Plugin } from '../core/plugin'\nimport { MetricsOptions } from '../core/stats/remote-metrics'\nimport { mergedOptions } from '../lib/merged-options'\nimport { createDeferred } from '../lib/create-deferred'\nimport { envEnrichment } from '../plugins/env-enrichment'\nimport {\n PluginFactory,\n remoteLoader,\n RemotePlugin,\n} from '../plugins/remote-loader'\nimport type { RoutingRule } from '../plugins/routing-middleware'\nimport { hightouchio, HightouchioSettings } from '../plugins/hightouchio'\nimport { validation } from '../plugins/validation'\nimport {\n AnalyticsBuffered,\n PreInitMethodCallBuffer,\n flushAnalyticsCallsInNewTask,\n flushAddSourceMiddleware,\n flushSetAnonymousID,\n flushOn,\n} from '../core/buffer'\nimport { ClassicIntegrationSource } from '../plugins/ajs-destination/types'\nimport { attachInspector } from '../core/inspector'\nimport { setGlobalAnalyticsKey } from '../lib/global-analytics-helper'\nimport { createDestination } from '../plugins/destinations'\n\nexport interface LegacyIntegrationConfiguration {\n /* @deprecated - This does not indicate browser types anymore */\n type?: string\n\n versionSettings?: {\n version?: string\n override?: string\n componentTypes?: Array<'browser' | 'android' | 'ios' | 'server'>\n }\n\n bundlingStatus?: string\n\n /**\n * Consent settings for the integration\n */\n consentSettings?: {\n /**\n * Consent categories for the integration\n * @example [\"Analytics\", \"Advertising\", \"CAT001\"]\n */\n categories: string[]\n }\n\n // Hightouch.io specific\n retryQueue?: boolean\n\n // any extra unknown settings\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any\n}\n\nexport interface LegacySettings {\n integrations: {\n [name: string]: LegacyIntegrationConfiguration\n }\n\n middlewareSettings?: {\n routingRules: RoutingRule[]\n }\n\n enabledMiddleware?: Record<string, boolean>\n metrics?: MetricsOptions\n\n plan?: Plan\n\n legacyVideoPluginsEnabled?: boolean\n\n remotePlugins?: RemotePlugin[]\n\n /**\n * Top level consent settings\n */\n consentSettings?: {\n /**\n * All unique consent categories.\n * There can be categories in this array that are important for consent that are not included in any integration (e.g. 2 cloud mode categories).\n * @example [\"Analytics\", \"Advertising\", \"CAT001\"]\n */\n allCategories: string[]\n }\n}\n\nexport interface HtEventsBrowserSettings extends AnalyticsSettings {\n /**\n * The settings for the Hightouch Source.\n * If provided, `HtEventsBrowser` will not fetch remote settings\n * for the source.\n */\n cdnSettings?: LegacySettings & Record<string, unknown>\n /**\n * If provided, will override the default Hightouch CDN (https://cdn.hightouch-events.com) for this application.\n */\n cdnURL?: string\n}\n\nexport function loadLegacySettings(\n writeKey: string,\n cdnURL?: string\n): Promise<LegacySettings> {\n const baseUrl = cdnURL ?? getCDN()\n\n return fetch(`${baseUrl}/v1/projects/${writeKey}/settings`)\n .then((res) => {\n if (!res.ok) {\n return res.text().then((errorResponseMessage) => {\n throw new Error(errorResponseMessage)\n })\n }\n return res.json()\n })\n .catch((err) => {\n console.error(err.message)\n throw err\n })\n}\n\nfunction hasLegacyDestinations(settings: LegacySettings): boolean {\n return (\n getProcessEnv().NODE_ENV !== 'test' &&\n // just one integration means hightouchio\n Object.keys(settings.integrations).length > 1\n )\n}\n\nfunction hasTsubMiddleware(settings: LegacySettings): boolean {\n return (\n getProcessEnv().NODE_ENV !== 'test' &&\n (settings.middlewareSettings?.routingRules?.length ?? 0) > 0\n )\n}\n\n/**\n * With AJS classic, we allow users to call setAnonymousId before the library initialization.\n * This is important because some of the destinations will use the anonymousId during the initialization,\n * and if we set anonId afterwards, that wouldn’t impact the destination.\n *\n * Also Ensures events can be registered before library initialization.\n * This is important so users can register to 'initialize' and any events that may fire early during setup.\n */\nfunction flushPreBuffer(\n analytics: Analytics,\n buffer: PreInitMethodCallBuffer\n): void {\n flushSetAnonymousID(analytics, buffer)\n flushOn(analytics, buffer)\n}\n\n/**\n * Finish flushing buffer and cleanup.\n */\nasync function flushFinalBuffer(\n analytics: Analytics,\n buffer: PreInitMethodCallBuffer\n): Promise<void> {\n // Call popSnippetWindowBuffer before each flush task since there may be\n // analytics calls during async function calls.\n await flushAddSourceMiddleware(analytics, buffer)\n flushAnalyticsCallsInNewTask(analytics, buffer)\n // Clear buffer, just in case analytics is loaded twice; we don't want to fire events off again.\n buffer.clear()\n}\n\nasync function registerPlugins(\n writeKey: string,\n legacySettings: LegacySettings,\n analytics: Analytics,\n opts: InitOptions,\n options: InitOptions,\n pluginLikes: (Plugin | PluginFactory)[] = [],\n legacyIntegrationSources: ClassicIntegrationSource[]\n): Promise<Context> {\n const plugins = pluginLikes?.filter(\n (pluginLike) => typeof pluginLike === 'object'\n ) as Plugin[]\n\n const pluginSources = pluginLikes?.filter(\n (pluginLike) =>\n typeof pluginLike === 'function' &&\n typeof pluginLike.pluginName === 'string'\n ) as PluginFactory[]\n\n const tsubMiddleware = hasTsubMiddleware(legacySettings)\n ? await import(\n /* webpackChunkName: \"tsub-middleware\" */ '../plugins/routing-middleware'\n ).then((mod) => {\n return mod.tsubMiddleware(\n legacySettings.middlewareSettings!.routingRules\n )\n })\n : undefined\n\n const legacyDestinations =\n hasLegacyDestinations(legacySettings) || legacyIntegrationSources.length > 0\n ? await import(\n /* webpackChunkName: \"ajs-destination\" */ '../plugins/ajs-destination'\n ).then((mod) => {\n return mod.ajsDestinations(\n writeKey,\n legacySettings,\n analytics.integrations,\n opts,\n tsubMiddleware,\n legacyIntegrationSources\n )\n })\n : []\n\n if (legacySettings.legacyVideoPluginsEnabled) {\n await import(\n /* webpackChunkName: \"legacyVideos\" */ '../plugins/legacy-video-plugins'\n ).then((mod) => {\n return mod.loadLegacyVideoPlugins(analytics)\n })\n }\n\n const schemaFilter = opts.plan?.track\n ? await import(\n /* webpackChunkName: \"schemaFilter\" */ '../plugins/schema-filter'\n ).then((mod) => {\n return mod.schemaFilter(opts.plan?.track, legacySettings)\n })\n : undefined\n\n const mergedSettings = mergedOptions(legacySettings, options)\n const remotePlugins = await remoteLoader(\n legacySettings,\n analytics.integrations,\n mergedSettings,\n options.obfuscate,\n tsubMiddleware,\n pluginSources\n ).catch(() => [])\n\n const toRegister = [\n validation,\n envEnrichment,\n ...plugins,\n ...legacyDestinations,\n ...remotePlugins,\n ]\n\n if (schemaFilter) {\n toRegister.push(schemaFilter)\n }\n\n const shouldIgnoreHightouchio =\n (opts.integrations?.All === false && !opts.integrations['Hightouch.io']) ||\n (opts.integrations && opts.integrations['Hightouch.io'] === false)\n\n if (!shouldIgnoreHightouchio) {\n toRegister.push(\n await hightouchio(\n analytics,\n mergedSettings['Hightouch.io'] as HightouchioSettings,\n legacySettings.integrations\n )\n )\n }\n\n // destination plugins\n await Promise.allSettled(\n Object.entries(options.destinations ?? {}).map(async ([name, settings]) => {\n const plugin = await createDestination(name, settings)\n if (plugin) {\n toRegister.push(plugin)\n } else {\n console.warn(`failed to load destination plugin: ${name}`)\n }\n })\n )\n\n const ctx = await analytics.register(...toRegister)\n\n if (\n Object.entries(legacySettings.enabledMiddleware ?? {}).some(\n ([, enabled]) => enabled\n )\n ) {\n await import(\n /* webpackChunkName: \"remoteMiddleware\" */ '../plugins/remote-middleware'\n ).then(async ({ remoteMiddlewares }) => {\n const middleware = await remoteMiddlewares(\n ctx,\n legacySettings,\n options.obfuscate\n )\n const promises = middleware.map((mdw) =>\n analytics.addSourceMiddleware(mdw)\n )\n return Promise.all(promises)\n })\n }\n\n return ctx\n}\n\nconst defaultHightouchIntegration: HightouchioSettings = {\n apiKey: 'WRITE_KEY',\n apiHost: 'us-east-1.hightouch-events.com',\n protocol: 'https',\n unbundledIntegrations: [],\n addBundledMetadata: false,\n maybeBundledConfigIds: {},\n deliveryStrategy: {\n strategy: 'standard',\n },\n}\n\nconst defaultSettings: LegacySettings = {\n integrations: {},\n plan: {\n track: { __default: { enabled: true, integrations: {} } },\n identify: { __default: { enabled: true } },\n group: { __default: { enabled: true } },\n },\n enabledMiddleware: {},\n metrics: { sampleRate: 0.0 },\n legacyVideoPluginsEnabled: false,\n remotePlugins: [],\n}\n\nasync function loadAnalytics(\n settings: HtEventsBrowserSettings,\n options: InitOptions = {},\n preInitBuffer: PreInitMethodCallBuffer\n): Promise<[Analytics, Context]> {\n if (options.globalAnalyticsKey)\n setGlobalAnalyticsKey(options.globalAnalyticsKey)\n // this is an ugly side-effect, but it's for the benefits of the plugins that get their cdn via getCDN()\n if (settings.cdnURL) setGlobalCDNUrl(settings.cdnURL)\n\n let legacySettings\n if (settings.cdnSettings) {\n legacySettings = settings.cdnSettings\n } else {\n defaultSettings.integrations['Hightouch.io'] = {\n ...defaultHightouchIntegration,\n ...(settings.writeKey ? { apiKey: settings.writeKey } : {}),\n ...(options.apiHost ? { apiHost: options.apiHost } : {}),\n ...(options.protocol ? { protocol: options.protocol } : {}),\n // defaultHightouchIntegration defaults to 'standard'\n // allow a simple options override to turn on 'batching'\n ...(options.batching == true\n ? {\n deliveryStrategy: {\n strategy: 'batching',\n config: { timeout: 1000, size: 10 }, // 1 second or 10 items\n } as HightouchioSettings['deliveryStrategy'],\n }\n : {}),\n }\n legacySettings = defaultSettings\n }\n\n if (options.updateCDNSettings) {\n legacySettings = options.updateCDNSettings(legacySettings)\n }\n\n const retryQueue: boolean =\n legacySettings.integrations['Hightouch.io']?.retryQueue ?? true\n\n if (!options.disableClientPersistence && options.httpCookieServiceOptions) {\n options.httpCookieService = await HTTPCookieService.load(\n options.httpCookieServiceOptions\n ).catch((err): undefined => console.error(err) as undefined)\n }\n\n const opts: InitOptions = { retryQueue, ...options }\n const analytics = new Analytics(settings, opts)\n\n attachInspector(analytics)\n\n const plugins = settings.plugins ?? []\n\n const classicIntegrations = settings.classicIntegrations ?? []\n\n // Uncomment to re-enable RemoteMetrics -- also see standalone.ts RemoteMetrics usage\n // Stats.initRemoteMetrics(legacySettings.metrics)\n\n // needs to be flushed before plugins are registered\n flushPreBuffer(analytics, preInitBuffer)\n\n const ctx = await registerPlugins(\n settings.writeKey,\n legacySettings,\n analytics,\n opts,\n options,\n plugins,\n classicIntegrations\n )\n\n const search = window.location.search ?? ''\n const hash = window.location.hash ?? ''\n\n const term = search.length ? search : hash.replace(/(?=#).*(?=\\?)/, '')\n\n if (term.includes('ajs_')) {\n await analytics.queryString(term).catch(console.error)\n }\n\n analytics.initialized = true\n analytics.emit('initialize', settings, options)\n\n if (options.initialPageview) {\n analytics.page().catch(console.error)\n }\n\n await flushFinalBuffer(analytics, preInitBuffer)\n\n return [analytics, ctx]\n}\n\n/**\n * The public browser interface for Hightouch Events\n *\n * @example\n * ```ts\n * export const htevents = new HtEventsBrowser()\n * htevents.load({ writeKey: 'foo' })\n * ```\n * @link https://github.com/ht-sdks/events-sdk-js-mono/tree/master/packages/browser#readme\n */\nexport class HtEventsBrowser extends AnalyticsBuffered {\n private _resolveLoadStart: (\n settings: HtEventsBrowserSettings,\n options: InitOptions\n ) => void\n\n constructor() {\n const { promise: loadStart, resolve: resolveLoadStart } =\n createDeferred<Parameters<HtEventsBrowser['load']>>()\n\n super((buffer) =>\n loadStart.then(([settings, options]) =>\n loadAnalytics(settings, options, buffer)\n )\n )\n\n this._resolveLoadStart = (settings, options) =>\n resolveLoadStart([settings, options])\n }\n\n /**\n * Fully initialize an analytics instance, including:\n *\n * * Fetching settings from the CDN (by default).\n * * Fetching all remote destinations configured by the user (if applicable).\n * * Flushing buffered analytics events.\n * * Loading all middleware.\n *\n * Note:️ This method should only be called *once* in your application.\n *\n * @example\n * ```ts\n * export const analytics = new HtEventsBrowser()\n * analytics.load({ writeKey: 'foo' })\n * ```\n */\n load(\n settings: HtEventsBrowserSettings,\n options: InitOptions = {}\n ): HtEventsBrowser {\n this._resolveLoadStart(settings, options)\n return this\n }\n\n /**\n * Instantiates an object exposing Analytics methods.\n *\n * @example\n * ```ts\n * const ajs = HtEventsBrowser.load({ writeKey: '<YOUR_WRITE_KEY>' })\n *\n * ajs.track(\"foo\")\n * ...\n * ```\n */\n static load(\n settings: HtEventsBrowserSettings,\n options: InitOptions = {}\n ): HtEventsBrowser {\n return new HtEventsBrowser().load(settings, options)\n }\n\n static standalone(\n writeKey: string,\n options?: InitOptions\n ): Promise<Analytics> {\n return HtEventsBrowser.load({ writeKey }, options).then((res) => res[0])\n }\n}\n","/**\n * Return a promise that can be externally resolved\n */\nexport const createDeferred = <T>() => {\n let resolve!: (value: T | PromiseLike<T>) => void\n let reject!: (reason: any) => void\n const promise = new Promise<T>((_resolve, _reject) => {\n resolve = _resolve\n reject = _reject\n })\n return {\n resolve,\n reject,\n promise,\n }\n}\n","import { getCDN, setGlobalCDNUrl } from '../lib/parse-cdn'\nimport { setVersionType } from '../lib/version-type'\n\nif (process.env.ASSET_PATH) {\n if (process.env.ASSET_PATH === '/dist/umd/') {\n // @ts-ignore\n __webpack_public_path__ = '/dist/umd/'\n } else {\n const cdn = getCDN()\n setGlobalCDNUrl(cdn) // preserving original behavior -- TODO: neccessary?\n // @ts-ignore\n __webpack_public_path__ =\n cdn + `/${process.env.PATH_PREFIX}/${process.env.PATH_VERSION}/`\n }\n}\n\nsetVersionType('web')\n\nexport * from '.'\n"],"names":["root","factory","exports","module","define","amd","self","leafPrototypes","getProto","inProgress","dataWebpackPrefix","__importDefault","this","mod","__esModule","Object","defineProperty","value","obj_case_1","trait","a","b","traits","props","properties","default","proto","zip","country","street","state","city","region","Alias","inherits_1","facade_1","dictionary","opts","Facade","call","prototype","action","type","previousId","field","from","userId","to","clone","toString","temp","key","Array","isArray","map","Delete","address_1","clone_1","is_enabled_1","new_date_1","isodate_traverse_1","obj","raw","traverse","timestamp","Date","f","transform","proxy","fields","split","shift","length","join","multi","path","one","json","ret","rawEvent","options","integration","context","enabled","integrations","allEnabled","providers","hasOwnProperty","settings","active","anonymousId","sessionId","groupId","aliases","id","alias","library","name","version","device","indexOf","userAgent","timezone","channel","ip","Group","is_email_1","g","created","email","industry","employees","Identify","trim","str","i","companyCreated","companyName","firstName","lastName","space","substr","uid","username","description","age","date","birthday","getFullYear","avatar","position","website","websites","phone","phones","address","gender","__assign","assign","t","s","n","arguments","p","apply","Screen","Page","Track","enumerable","get","alias_1","group_1","identify_1","track_1","page_1","screen_1","delete_1","matcher","string","test","disabled","Salesforce","category","title","url","referrer","fullName","event","track","productId","promotionId","cartId","checkoutId","paymentId","couponId","wishlistId","reviewId","orderId","sku","tax","price","total","repeat","coupon","shipping","discount","shippingMethod","paymentMethod","plan","subtotal","revenue","products","filter","item","quantity","currency","query","match","val","replace","parseFloat","isNaN","cents","identify","isodate","input","strict","undefined","keys","forEach","traverseObject","arr","index","traverseArray","is","parse","iso","numericKeys","exec","offset","parseInt","substring","getTimezoneOffset","millis","UTC","create","ctor","superCtor","super_","constructor","writable","configurable","TempCtor","milliseconds","seconds","toStr","isNumber","num","multiple","fn","normalize","isFunction","normalizer","defaultNormalize","finished","loop","normalizedKey","charAt","child","del","toLowerCase","find","hex_chr","md5cycle","x","k","c","d","md5blk","md5blks","charCodeAt","md5blk_array","md51","tail","tmp","lo","hi","md51_array","subarray","Uint8Array","rhex","j","hex","toUtf8","unescape","encodeURIComponent","utf8Str2ArrayBuffer","returnUInt8Array","buff","ArrayBuffer","arrayBuffer2Utf8Str","String","fromCharCode","concatenateArrayBuffers","first","second","result","byteLength","set","buffer","hexToBinaryString","bytes","push","SparkMD5","reset","slice","clamp","Math","max","min","target","targetArray","sourceArray","begin","end","append","appendBinary","contents","_buff","_length","_hash","_finish","getState","hash","setState","destroy","hashBinary","content","isOnline","window","navigator","onLine","isOffline","HIGHTOUCH_API_HOST","logError","err","console","error","remoteMetrics","host","sampleRate","flushTimer","maxQueueSize","queue","flush","catch","setTimeout","increment","metric","tags","includes","random","remoteMetric","versionType","formattedTags","reduce","acc","v","library_version","createRemoteMetric","Promise","send","payload","series","headers","Accept","fetch","body","JSON","stringify","method","initRemoteMetrics","RemoteMetrics","by","Stats","system","isBrowser","isServer","gracefulDecodeURIComponent","encodedURIComponent","decodeURIComponent","e","r","XMLHttpRequest","o","u","ok","status","statusText","responseURL","text","resolve","responseText","blob","Blob","response","entries","has","l","open","onload","getAllResponseHeaders","onerror","withCredentials","credentials","setRequestHeader","global","unfetch","args","getGlobal","globalThis","_globalAnalyticsKey","getGlobalAnalytics","setGlobalAnalyticsKey","setGlobalAnalytics","analytics","findScript","src","document","querySelectorAll","loadScript","attributes","found","getAttribute","reject","addEventListener","script","createElement","async","setAttribute","Error","tag","getElementsByTagName","parentElement","insertBefore","unloadScript","remove","mergedOptions","optionOverrides","overrides","integrationSettings","pWhile","condition","actionResult","_globalCDN","analyticsScriptRegex","setGlobalCDNUrl","cdn","globalAnalytics","_cdn","getCDN","globalCdnUrl","cdnFromScriptTag","getNextIntegrationsURL","loc","getItem","setItem","removeItem","localStorage","warn","persisted","items","seen","stored","mutex","onUnlock","attempt","lockKey","rawLock","lock","allowed","getTime","expired","maxAttempts","itemsKey","seenKey","saved","lastSeen","todo","future","existing","merged","values","persistItems","memory","persistSeen","toFacade","evt","fcd","_version","setVersionType","getVersionType","applyDestinationMiddleware","destination","middleware","applyMiddleware","nextCalled","returnedEvent","next","modifiedEvent","md","sourceMiddlewarePlugin","ctx","retry","reason","isLoaded","load","page","group","pTimeout","promise","timeout","timeoutId","then","clearTimeout","invokeCallback","callback","delay","timeoutInMs","cb","log","stats","CoreLogger","_logs","level","message","extras","time","logs","formatted","_a","_b","_c","line","toISOString","concat","table","logEntry","ContextCancelation","CoreContext","logger","attempts","_id","isSame","other","cancel","updateEvent","integrationName","failedDelivery","_failedDelivery","setFailedDelivery","toJSON","metrics","Emitter","callbacks","on","once","_this","_i","off","without","emit","ON_REMOVE_FROM_FUTURE","PriorityQueue","_super","accepted","operation","updateAttempts","sort","getAttempts","pushWithBackoff","params","minTimeout","factor","maxTimeout","Infinity","pow","backoff","Boolean","pop","plugin","start","hook","err_1","label","trys","sent","tryAsync","done","gauge","ensure","newContext","CoreStats","now","m","serialize","counter","NullStats","_args","isString","exists","isPlainObject","BUFFER","IDX","HEX","v4","out","dset","extendStatics","setPrototypeOf","__proto__","__extends","TypeError","__","__rest","getOwnPropertySymbols","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","fulfilled","step","rejected","__generator","y","_","ops","Iterator","verb","Symbol","iterator","op","__spreadArray","pack","ar","SuppressedError","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","getPrototypeOf","mode","ns","def","current","getOwnPropertyNames","definition","chunkId","all","promises","prop","needAttach","scripts","charset","nc","onScriptComplete","prev","doneFns","parentNode","removeChild","bind","head","appendChild","toStringTag","installedChunks","installedChunkData","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","data","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","getProcessEnv","process","env","resolveArguments","eventName","resolvePageArguments","resolvedCategory","resolvedName","strings","resolvedCallback","objects","resolvedProperties","resolvedOptions","resolveUserArguments","user","orderStack","arg","resolveAliasArguments","aliasTo","aliasFrom","dispatch","emitter","startTime","dispatched","isEmpty","dispatchSingle","startTimeInEpochMS","timeoutInMS","elapsedTime","debug","createBufferedPageContext","canonicalUrl","search","__t","BUFFERED_PAGE_CONTEXT_KEYS","createPageContext","href","hashIdx","pathname","newPath","URL","_e","parseCanonicalPath","newUrl","searchParams","createCanonicalURL","getDefaultBufferedPageContext","querySelector","location","addPageContext","pageCtx","pageContextFromEventProps","object","evtCtx","globalIntegrations","baseEvent","screen","base","optionsKeys","providedOptionsKeys","integrationBooleans","integrationNames","allIntegrations","rest","newEvent","messageId","session","getAndUpdateSession","CoreEventQueue","priorityQueue","taskCompletionPromise","resolvePromise","count","criticalTasks","run","returnValue","res","finally","plugins","failedInitializations","flushing","scheduleFlush","register","instance","deregister","e_1","unload","willDeliver","subscribeToDelivery","onDeliver","flushed","delivered","deliver","enqueuRetry","flushOne","err_2","isReady","availableExtensions","denyList","grouper","results","available","alternativeNameMatch","alternativeNames","All","suggestedKey","Function","before","enrichment","_d","after","destinations","before_1","beforeWare","enrichment_1","enrichmentWare","afterCalls","_f","nameOrQueue","bindAll","desc","getOwnPropertyDescriptor","StoreType","Cookie","LocalStorage","Memory","_logStoreKeyError","store","stores","clear","getAndSync","coercedValue","cache","isArrayOfStoreType","every","source","api","init","converter","defaultAttributes","expires","toUTCString","escape","stringifiedAttributes","attributeName","cookie","write","cookies","jar","parts","foundKey","read","withAttributes","withConverter","freeze","tld","parsedUrl","parseUrl","lvls","hostname","last","levels","cname","round","domain","sameSite","CookieStorage","defaults","maxage","secure","localStorageWarning","initializeStorages","isStoreTypeWithSettings","MemoryStorage","applyCookieOptions","storeTypes","cookieOptions","randomWordArray","crypto","frames","nBytes","words","getRandomValues","Uint32Array","WordArray","m_w","_m_w","_m_z","mask","rcache","_r","mixIn","sigBytes","typedArray","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Float32Array","Float64Array","byteOffset","typedArrayByteLength","_words","encoder","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","thatByte","ceil","Base","Hex","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","utf8Str","_minBufferSize","_data","_nDataBytes","_append","m_data","_process","doFlush","processedWords","blockSize","dataWords","dataSigBytes","nBlocksReady","nWordsReady","nBytesReady","_doProcessBlock","splice","cfg","_createHelper","SubHasher","finalize","_createHmacHelper","HMAC","_doReset","update","messageUpdate","_doFinalize","BufferedBlockAlgorithm","hasher","_hasher","_key","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","Base64","_map","base64Chars","triplet","paddingChar","base64Str","base64StrLength","reverseMap","_reverseMap","paddingIndex","bitsCombined","parseLoop","T","abs","sin","FF","GG","HH","II","M","_M","offset_i","M_offset_i","H","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","nBitsTotal","nBitsLeft","nBitsTotalH","floor","nBitsTotalL","H_i","Hasher","MD5Algo","keySize","iterations","compute","password","salt","block","derivedKey","derivedKeyWords","xformMode","_xformMode","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","SubCipher","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","encrypt","decrypt","ciphertext","dataUpdate","Cipher","ivSize","xorBlock","iv","_iv","_prevBlock","cipher","_cipher","Encryptor","Decryptor","CBC","processBlock","encryptBlock","thisBlock","decryptBlock","Pkcs7","pad","blockSizeBytes","nPaddingBytes","paddingWord","paddingWords","padding","unpad","modeCreator","_mode","__creator","finalProcessedBlocks","cipherParams","formatter","OpenSSLFormatter","openSSLStr","ciphertextWords","CipherParams","_cfg","encryptor","cipherCfg","algorithm","format","_ciphertext","_parse","OpenSSLKdf","execute","_salt","EvpKDFAlgo","derivedParams","kdf","_SBOX","INV_SBOX","_SUB_MIX_0","_SUB_MIX_1","_SUB_MIX_2","_SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","xi","sx","x2","x4","x8","RCON","_nRounds","_keyPriorReset","keyWords","ksRows","_keySchedule","keySchedule","ksRow","_invKeySchedule","invKeySchedule","invKsRow","_doCryptBlock","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","SBOX","nRounds","s0","s1","s2","s3","t0","t1","t2","t3","BlockCipher","AESAlgo","AES","fromBase64","TextDecoder","decode","atob","char","base64ToBytes","rudderHtPrefix","rudderPrefixV1","rudderPrefixV3","generateAutoTrackingSession","sessionTimeout","expiresAt","sessionStart","autoTrack","generateManualTrackingSession","startsWith","isManualSessionIdValid","manualTrack","persist","oldKey","sessions","disable","prevId","identityStore","idKey","clearingIdentity","changingIdentity","creatingIdentity","httpCookieService","dispatchClear","dispatchCreate","retId","retLeg","legacyUserStore","anonKey","migrated","decryptRudderHtValue","parsed","decryptRudderValue","legacySIO","clearedVal","syncedVal","traitsStore","traitsKey","seshKey","createStorage","sessionStore","legacyUser","currentId","startManualSession","endManualSession","getAndUpdateSessionInfo","updateSessionExpiration","sessionInfo","logout","User","save","cookieOpts","filterStores","UniversalStorage","storage","localStorageFallbackDisabled","groupDefaults","flushSyncAnalyticsCalls","getCalls","callAnalyticsMethod","flushAddSourceMiddleware","flushOn","flushSetAnonymousID","popPageContext","hasBufferedPageContextAsLastArg","bufferedPageCtx","isBufferedPageContext","called","_callMap","calls","_pushSnippetWindowBuffer","methodName","toArray","wa","PreInitMethodCall","loader","trackSubmit","_createMethod","trackClick","trackLink","pageView","ready","_createChainableMethod","addSourceMiddleware","setAnonymousId","addDestinationMiddleware","VERSION","_preInitBuffer","PreInitMethodCallBuffer","_promise","ajs","deprecationWarning","_analytics","_stub","_debug","initialized","_user","initialize","addIntegrationMiddleware","listeners","removeAllListeners","removeListener","removeEventListener","hasListeners","add","addIntegration","disablePersistance","disableClientPersistence","retryQueue","EventQueue","createDefaultQueue","writeKey","storageSetting","_universalStorage","createStore","_group","eventFactory","EventFactory","hightouchEvent","_dispatch","_traits","groupTraits","autotrack","link","form","trackForm","registrations","xt","deregistrations","pl","toggle","startSession","endSession","getSessionId","addMiddleware","middlewares","queryString","useQueryString","use","legacyPluginFactory","noConflict","msg","_settings","_options","pageview","_plugins","nested","Integration","urls","HTTPCookieService","urlHelper","renewUrl","clearUrl","retries","flushInterval","origin","cookieService","sendHTTPCookies","startQueueConsumer","flushIntervalId","bound","consumeQueue","setInterval","stopQueueConsumer","clearInterval","serviceUrl","sentAt","sleep","delayMS","req","clientHints","hints","userAgentData","getHighEntropyValues","brands","Brand","Version","brand","getCookieOptions","_ctx","highEntropyValuesClientHints","enrich","URLSearchParams","objectToQueryString","locale","userLanguage","language","campaign","utmParam","utm","amp","ampId","ad","queryIds","btid","urid","ads","referrerId","Intl","DateTimeFormat","timeZone","envEnrichment","EnvironmentEnrichmentPlugin","transformedContext","loadPluginFactory","remotePlugin","obfuscate","defaultCdn","RegExp","urlSplit","obfuscatedURL","btoa","libraryName","remoteLoader","userIntegrations","mergedIntegrations","routingMiddleware","pluginSources","allPlugins","routingRules","middlewareSettings","pluginPromises","remotePlugins","creationNameEnabled","creationName","currentNameEnabled","isPluginDisabled","pluginFactory","pluginLike","required","validate","rule","destinationName","wrapper","ActionDestination","kilobytes","encodeURI","batch","apiHost","config","protocol","schedule","unloaded","pageUnloaded","limit","size","sendBatch","updatedBatch","keepalive","reqs","chunks","visibilityState","_url","bufferOverflow","MAX_PAYLOAD_SIZE","approachingTrackingAPILimit","apiKey","failed","_metadata","bundled","unbundled","bundlingStatus","unbundledIntegrations","settingsUnbundled","configIds","maybeBundledConfigIds","bundledConfigIds","addBundledMetadata","bundledIds","flushQueue","failedQueue","isFlushing","newBuffer","hightouchio","inflightEvents","Set","remote","deliveryStrategy","client","strategy","hightouch","eventType","onAlias","delete","ValidationError","stringError","objError","nilError","assertUserIdentity","USER_FIELD_NAME","getAnyUserId","assertEventExists","assertEventType","assertTrackEventName","validation","inspectorHost","createDestination","loadLegacySettings","cdnURL","baseUrl","errorResponseMessage","flushFinalBuffer","flushAnalyticsCallsInNewTask","registerPlugins","legacySettings","pluginLikes","legacyIntegrationSources","pluginName","NODE_ENV","hasTsubMiddleware","tsubMiddleware","ajsDestinations","legacyDestinations","legacyVideoPluginsEnabled","loadLegacyVideoPlugins","schemaFilter","mergedSettings","toRegister","allSettled","enabledMiddleware","remoteMiddlewares","mdw","defaultHightouchIntegration","defaultSettings","__default","loadAnalytics","preInitBuffer","globalAnalyticsKey","cdnSettings","batching","updateCDNSettings","httpCookieServiceOptions","attach","attachInspector","Analytics","classicIntegrations","flushPreBuffer","term","initialPageview","_resolve","_reject","loadStart","resolveLoadStart","_resolveLoadStart","HtEventsBrowser","standalone","AnalyticsBuffered"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"index.js","mappings":"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","sources":["webpack://@ht-sdks/events-sdk-js-browser/webpack/universalModuleDefinition","webpack://@ht-sdks/events-sdk-js-browser/webpack/runtime/create fake namespace object","webpack://@ht-sdks/events-sdk-js-browser/webpack/runtime/load script","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/address.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/alias.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/clone.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/delete.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/facade.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/group.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/identify.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/index.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/is-email.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/is-enabled.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/page.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/screen.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/facade/dist/track.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/isodate-traverse/lib/index.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@segment/isodate/lib/index.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/inherits/inherits_browser.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/new-date/lib/index.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/new-date/lib/milliseconds.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/new-date/lib/seconds.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/obj-case/index.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/spark-md5/spark-md5.js","webpack://@ht-sdks/events-sdk-js-browser/./src/core/connection/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/constants/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/stats/remote-metrics.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/stats/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/context/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/environment/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/query-string/gracefulDecodeURIComponent.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/generated/version.ts","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/unfetch/dist/unfetch.mjs","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/fetch.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/get-global.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/global-analytics-helper.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/load-script.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/merged-options.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/p-while.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/parse-cdn.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/priority-queue/persisted.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/to-facade.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/version-type.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/middleware/index.ts","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/callback/index.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/logger/index.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/context/index.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/emitter/index.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/priority-queue/index.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/priority-queue/backoff.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/queue/delivery.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/stats/index.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/validation/helpers.js","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/@lukeed/uuid/dist/index.mjs","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/dset/dist/index.mjs","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/tslib/tslib.es6.mjs","webpack://@ht-sdks/events-sdk-js-browser/webpack/bootstrap","webpack://@ht-sdks/events-sdk-js-browser/webpack/runtime/compat get default export","webpack://@ht-sdks/events-sdk-js-browser/webpack/runtime/define property getters","webpack://@ht-sdks/events-sdk-js-browser/webpack/runtime/ensure chunk","webpack://@ht-sdks/events-sdk-js-browser/webpack/runtime/get javascript chunk filename","webpack://@ht-sdks/events-sdk-js-browser/webpack/runtime/hasOwnProperty shorthand","webpack://@ht-sdks/events-sdk-js-browser/webpack/runtime/make namespace object","webpack://@ht-sdks/events-sdk-js-browser/webpack/runtime/publicPath","webpack://@ht-sdks/events-sdk-js-browser/webpack/runtime/jsonp chunk loading","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/get-process-env.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/arguments-resolver/index.ts","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/analytics/dispatch.js","webpack://@ht-sdks/events-sdk-js-browser/./src/core/page/get-page-context.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/page/add-page-context.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/pick.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/events/index.ts","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/queue/event-queue.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/task/task-group.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/utils/is-thenable.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/utils/group-by.js","webpack://@ht-sdks/events-sdk-js-browser/./src/core/queue/event-queue.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/bind-all.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/storage/types.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/storage/universalStorage.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/storage/memoryStorage.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/storage/settings.ts","webpack://@ht-sdks/events-sdk-js-browser/../../node_modules/js-cookie/dist/js.cookie.mjs","webpack://@ht-sdks/events-sdk-js-browser/./src/core/user/tld.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/storage/cookieStorage.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/storage/localStorage.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/storage/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/user/vendor/crypto-es/lib/core.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/user/vendor/crypto-es/lib/md5.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/user/vendor/crypto-es/lib/enc-base64.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/user/vendor/crypto-es/lib/evpkdf.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/user/vendor/crypto-es/lib/cipher-core.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/user/vendor/crypto-es/lib/aes.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/user/migrate.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/session/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/user/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/buffer/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/is-thenable.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/analytics/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/http-cookies/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/env-enrichment/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/client-hints/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/remote-loader/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/hightouchio/batched-dispatcher.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/on-page-change.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/hightouchio/normalize.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/hightouchio/schedule-flush.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/hightouchio/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/hightouchio/fetch-dispatcher.ts","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/validation/errors.js","webpack://@ht-sdks/events-sdk-js-browser/../core/dist/esm/validation/assertions.js","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/validation/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/core/inspector/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/destinations/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/plugins/built-in-plugins.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/browser/index.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/browser/dedupe-plugin-likes.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/lib/create-deferred.ts","webpack://@ht-sdks/events-sdk-js-browser/./src/browser/browser-umd.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"HtEvents\"] = factory();\n\telse\n\t\troot[\"HtEvents\"] = factory();\n})(self, function() {\nreturn ","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; (typeof current == 'object' || typeof current == 'function') && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"@ht-sdks/events-sdk-js-browser:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar obj_case_1 = __importDefault(require(\"obj-case\"));\nfunction trait(a, b) {\n return function () {\n var traits = this.traits();\n var props = this.properties ? this.properties() : {};\n return (obj_case_1.default(traits, \"address.\" + a) ||\n obj_case_1.default(traits, a) ||\n (b ? obj_case_1.default(traits, \"address.\" + b) : null) ||\n (b ? obj_case_1.default(traits, b) : null) ||\n obj_case_1.default(props, \"address.\" + a) ||\n obj_case_1.default(props, a) ||\n (b ? obj_case_1.default(props, \"address.\" + b) : null) ||\n (b ? obj_case_1.default(props, b) : null));\n };\n}\nfunction default_1(proto) {\n proto.zip = trait(\"postalCode\", \"zip\");\n proto.country = trait(\"country\");\n proto.street = trait(\"street\");\n proto.state = trait(\"state\");\n proto.city = trait(\"city\");\n proto.region = trait(\"region\");\n}\nexports.default = default_1;\n//# sourceMappingURL=address.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Alias = void 0;\nvar inherits_1 = __importDefault(require(\"inherits\"));\nvar facade_1 = require(\"./facade\");\nfunction Alias(dictionary, opts) {\n facade_1.Facade.call(this, dictionary, opts);\n}\nexports.Alias = Alias;\ninherits_1.default(Alias, facade_1.Facade);\nAlias.prototype.action = function () {\n return \"alias\";\n};\nAlias.prototype.type = Alias.prototype.action;\nAlias.prototype.previousId = function () {\n return this.field(\"previousId\") || this.field(\"from\");\n};\nAlias.prototype.from = Alias.prototype.previousId;\nAlias.prototype.userId = function () {\n return this.field(\"userId\") || this.field(\"to\");\n};\nAlias.prototype.to = Alias.prototype.userId;\n//# sourceMappingURL=alias.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.clone = void 0;\nfunction clone(properties) {\n if (Object.prototype.toString.call(properties) === '[object Object]') {\n var temp = {};\n for (var key in properties) {\n temp[key] = clone(properties[key]);\n }\n return temp;\n }\n else if (Array.isArray(properties)) {\n return properties.map(clone);\n }\n else {\n return properties;\n }\n}\nexports.clone = clone;\n//# sourceMappingURL=clone.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Delete = void 0;\nvar inherits_1 = __importDefault(require(\"inherits\"));\nvar facade_1 = require(\"./facade\");\nfunction Delete(dictionary, opts) {\n facade_1.Facade.call(this, dictionary, opts);\n}\nexports.Delete = Delete;\ninherits_1.default(Delete, facade_1.Facade);\nDelete.prototype.type = function () {\n return \"delete\";\n};\n//# sourceMappingURL=delete.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Facade = void 0;\nvar address_1 = __importDefault(require(\"./address\"));\nvar clone_1 = require(\"./clone\");\nvar is_enabled_1 = __importDefault(require(\"./is-enabled\"));\nvar new_date_1 = __importDefault(require(\"new-date\"));\nvar obj_case_1 = __importDefault(require(\"obj-case\"));\nvar isodate_traverse_1 = __importDefault(require(\"@segment/isodate-traverse\"));\nfunction Facade(obj, opts) {\n opts = opts || {};\n this.raw = clone_1.clone(obj);\n if (!(\"clone\" in opts))\n opts.clone = true;\n if (opts.clone)\n obj = clone_1.clone(obj);\n if (!(\"traverse\" in opts))\n opts.traverse = true;\n if (!(\"timestamp\" in obj))\n obj.timestamp = new Date();\n else\n obj.timestamp = new_date_1.default(obj.timestamp);\n if (opts.traverse)\n isodate_traverse_1.default(obj);\n this.opts = opts;\n this.obj = obj;\n}\nexports.Facade = Facade;\nvar f = Facade.prototype;\nf.proxy = function (field) {\n var fields = field.split(\".\");\n field = fields.shift();\n var obj = this[field] || this.field(field);\n if (!obj)\n return obj;\n if (typeof obj === \"function\")\n obj = obj.call(this) || {};\n if (fields.length === 0)\n return this.opts.clone ? transform(obj) : obj;\n obj = obj_case_1.default(obj, fields.join(\".\"));\n return this.opts.clone ? transform(obj) : obj;\n};\nf.field = function (field) {\n var obj = this.obj[field];\n return this.opts.clone ? transform(obj) : obj;\n};\nFacade.proxy = function (field) {\n return function () {\n return this.proxy(field);\n };\n};\nFacade.field = function (field) {\n return function () {\n return this.field(field);\n };\n};\nFacade.multi = function (path) {\n return function () {\n var multi = this.proxy(path + \"s\");\n if (Array.isArray(multi))\n return multi;\n var one = this.proxy(path);\n if (one)\n one = [this.opts.clone ? clone_1.clone(one) : one];\n return one || [];\n };\n};\nFacade.one = function (path) {\n return function () {\n var one = this.proxy(path);\n if (one)\n return one;\n var multi = this.proxy(path + \"s\");\n if (Array.isArray(multi))\n return multi[0];\n };\n};\nf.json = function () {\n var ret = this.opts.clone ? clone_1.clone(this.obj) : this.obj;\n if (this.type)\n ret.type = this.type();\n return ret;\n};\nf.rawEvent = function () {\n return this.raw;\n};\nf.options = function (integration) {\n var obj = this.obj.options || this.obj.context || {};\n var options = this.opts.clone ? clone_1.clone(obj) : obj;\n if (!integration)\n return options;\n if (!this.enabled(integration))\n return;\n var integrations = this.integrations();\n var value = integrations[integration] || obj_case_1.default(integrations, integration);\n if (typeof value !== \"object\")\n value = obj_case_1.default(this.options(), integration);\n return typeof value === \"object\" ? value : {};\n};\nf.context = f.options;\nf.enabled = function (integration) {\n var allEnabled = this.proxy(\"options.providers.all\");\n if (typeof allEnabled !== \"boolean\")\n allEnabled = this.proxy(\"options.all\");\n if (typeof allEnabled !== \"boolean\")\n allEnabled = this.proxy(\"integrations.all\");\n if (typeof allEnabled !== \"boolean\")\n allEnabled = true;\n var enabled = allEnabled && is_enabled_1.default(integration);\n var options = this.integrations();\n if (options.providers && options.providers.hasOwnProperty(integration)) {\n enabled = options.providers[integration];\n }\n if (options.hasOwnProperty(integration)) {\n var settings = options[integration];\n if (typeof settings === \"boolean\") {\n enabled = settings;\n }\n else {\n enabled = true;\n }\n }\n return !!enabled;\n};\nf.integrations = function () {\n return (this.obj.integrations || this.proxy(\"options.providers\") || this.options());\n};\nf.active = function () {\n var active = this.proxy(\"options.active\");\n if (active === null || active === undefined)\n active = true;\n return active;\n};\nf.anonymousId = function () {\n return this.field(\"anonymousId\") || this.field(\"sessionId\");\n};\nf.sessionId = f.anonymousId;\nf.groupId = Facade.proxy(\"options.groupId\");\nf.traits = function (aliases) {\n var ret = this.proxy(\"options.traits\") || {};\n var id = this.userId();\n aliases = aliases || {};\n if (id)\n ret.id = id;\n for (var alias in aliases) {\n var value = this[alias] == null\n ? this.proxy(\"options.traits.\" + alias)\n : this[alias]();\n if (value == null)\n continue;\n ret[aliases[alias]] = value;\n delete ret[alias];\n }\n return ret;\n};\nf.library = function () {\n var library = this.proxy(\"options.library\");\n if (!library)\n return { name: \"unknown\", version: null };\n if (typeof library === \"string\")\n return { name: library, version: null };\n return library;\n};\nf.device = function () {\n var device = this.proxy(\"context.device\");\n if (typeof device !== \"object\" || device === null) {\n device = {};\n }\n var library = this.library().name;\n if (device.type)\n return device;\n if (library.indexOf(\"ios\") > -1)\n device.type = \"ios\";\n if (library.indexOf(\"android\") > -1)\n device.type = \"android\";\n return device;\n};\nf.userAgent = Facade.proxy(\"context.userAgent\");\nf.timezone = Facade.proxy(\"context.timezone\");\nf.timestamp = Facade.field(\"timestamp\");\nf.channel = Facade.field(\"channel\");\nf.ip = Facade.proxy(\"context.ip\");\nf.userId = Facade.field(\"userId\");\naddress_1.default(f);\nfunction transform(obj) {\n return clone_1.clone(obj);\n}\n//# sourceMappingURL=facade.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Group = void 0;\nvar inherits_1 = __importDefault(require(\"inherits\"));\nvar is_email_1 = __importDefault(require(\"./is-email\"));\nvar new_date_1 = __importDefault(require(\"new-date\"));\nvar facade_1 = require(\"./facade\");\nfunction Group(dictionary, opts) {\n facade_1.Facade.call(this, dictionary, opts);\n}\nexports.Group = Group;\ninherits_1.default(Group, facade_1.Facade);\nvar g = Group.prototype;\ng.action = function () {\n return \"group\";\n};\ng.type = g.action;\ng.groupId = facade_1.Facade.field(\"groupId\");\ng.created = function () {\n var created = this.proxy(\"traits.createdAt\") ||\n this.proxy(\"traits.created\") ||\n this.proxy(\"properties.createdAt\") ||\n this.proxy(\"properties.created\");\n if (created)\n return new_date_1.default(created);\n};\ng.email = function () {\n var email = this.proxy(\"traits.email\");\n if (email)\n return email;\n var groupId = this.groupId();\n if (is_email_1.default(groupId))\n return groupId;\n};\ng.traits = function (aliases) {\n var ret = this.properties();\n var id = this.groupId();\n aliases = aliases || {};\n if (id)\n ret.id = id;\n for (var alias in aliases) {\n var value = this[alias] == null ? this.proxy(\"traits.\" + alias) : this[alias]();\n if (value == null)\n continue;\n ret[aliases[alias]] = value;\n delete ret[alias];\n }\n return ret;\n};\ng.name = facade_1.Facade.proxy(\"traits.name\");\ng.industry = facade_1.Facade.proxy(\"traits.industry\");\ng.employees = facade_1.Facade.proxy(\"traits.employees\");\ng.properties = function () {\n return this.field(\"traits\") || this.field(\"properties\") || {};\n};\n//# sourceMappingURL=group.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Identify = void 0;\nvar facade_1 = require(\"./facade\");\nvar obj_case_1 = __importDefault(require(\"obj-case\"));\nvar inherits_1 = __importDefault(require(\"inherits\"));\nvar is_email_1 = __importDefault(require(\"./is-email\"));\nvar new_date_1 = __importDefault(require(\"new-date\"));\nvar trim = function (str) { return str.trim(); };\nfunction Identify(dictionary, opts) {\n facade_1.Facade.call(this, dictionary, opts);\n}\nexports.Identify = Identify;\ninherits_1.default(Identify, facade_1.Facade);\nvar i = Identify.prototype;\ni.action = function () {\n return \"identify\";\n};\ni.type = i.action;\ni.traits = function (aliases) {\n var ret = this.field(\"traits\") || {};\n var id = this.userId();\n aliases = aliases || {};\n if (id)\n ret.id = id;\n for (var alias in aliases) {\n var value = this[alias] == null ? this.proxy(\"traits.\" + alias) : this[alias]();\n if (value == null)\n continue;\n ret[aliases[alias]] = value;\n if (alias !== aliases[alias])\n delete ret[alias];\n }\n return ret;\n};\ni.email = function () {\n var email = this.proxy(\"traits.email\");\n if (email)\n return email;\n var userId = this.userId();\n if (is_email_1.default(userId))\n return userId;\n};\ni.created = function () {\n var created = this.proxy(\"traits.created\") || this.proxy(\"traits.createdAt\");\n if (created)\n return new_date_1.default(created);\n};\ni.companyCreated = function () {\n var created = this.proxy(\"traits.company.created\") ||\n this.proxy(\"traits.company.createdAt\");\n if (created) {\n return new_date_1.default(created);\n }\n};\ni.companyName = function () {\n return this.proxy(\"traits.company.name\");\n};\ni.name = function () {\n var name = this.proxy(\"traits.name\");\n if (typeof name === \"string\") {\n return trim(name);\n }\n var firstName = this.firstName();\n var lastName = this.lastName();\n if (firstName && lastName) {\n return trim(firstName + \" \" + lastName);\n }\n};\ni.firstName = function () {\n var firstName = this.proxy(\"traits.firstName\");\n if (typeof firstName === \"string\") {\n return trim(firstName);\n }\n var name = this.proxy(\"traits.name\");\n if (typeof name === \"string\") {\n return trim(name).split(\" \")[0];\n }\n};\ni.lastName = function () {\n var lastName = this.proxy(\"traits.lastName\");\n if (typeof lastName === \"string\") {\n return trim(lastName);\n }\n var name = this.proxy(\"traits.name\");\n if (typeof name !== \"string\") {\n return;\n }\n var space = trim(name).indexOf(\" \");\n if (space === -1) {\n return;\n }\n return trim(name.substr(space + 1));\n};\ni.uid = function () {\n return this.userId() || this.username() || this.email();\n};\ni.description = function () {\n return this.proxy(\"traits.description\") || this.proxy(\"traits.background\");\n};\ni.age = function () {\n var date = this.birthday();\n var age = obj_case_1.default(this.traits(), \"age\");\n if (age != null)\n return age;\n if (!(date instanceof Date))\n return;\n var now = new Date();\n return now.getFullYear() - date.getFullYear();\n};\ni.avatar = function () {\n var traits = this.traits();\n return (obj_case_1.default(traits, \"avatar\") || obj_case_1.default(traits, \"photoUrl\") || obj_case_1.default(traits, \"avatarUrl\"));\n};\ni.position = function () {\n var traits = this.traits();\n return obj_case_1.default(traits, \"position\") || obj_case_1.default(traits, \"jobTitle\");\n};\ni.username = facade_1.Facade.proxy(\"traits.username\");\ni.website = facade_1.Facade.one(\"traits.website\");\ni.websites = facade_1.Facade.multi(\"traits.website\");\ni.phone = facade_1.Facade.one(\"traits.phone\");\ni.phones = facade_1.Facade.multi(\"traits.phone\");\ni.address = facade_1.Facade.proxy(\"traits.address\");\ni.gender = facade_1.Facade.proxy(\"traits.gender\");\ni.birthday = facade_1.Facade.proxy(\"traits.birthday\");\n//# sourceMappingURL=identify.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Delete = exports.Screen = exports.Page = exports.Track = exports.Identify = exports.Group = exports.Alias = exports.Facade = void 0;\nvar facade_1 = require(\"./facade\");\nObject.defineProperty(exports, \"Facade\", { enumerable: true, get: function () { return facade_1.Facade; } });\nvar alias_1 = require(\"./alias\");\nObject.defineProperty(exports, \"Alias\", { enumerable: true, get: function () { return alias_1.Alias; } });\nvar group_1 = require(\"./group\");\nObject.defineProperty(exports, \"Group\", { enumerable: true, get: function () { return group_1.Group; } });\nvar identify_1 = require(\"./identify\");\nObject.defineProperty(exports, \"Identify\", { enumerable: true, get: function () { return identify_1.Identify; } });\nvar track_1 = require(\"./track\");\nObject.defineProperty(exports, \"Track\", { enumerable: true, get: function () { return track_1.Track; } });\nvar page_1 = require(\"./page\");\nObject.defineProperty(exports, \"Page\", { enumerable: true, get: function () { return page_1.Page; } });\nvar screen_1 = require(\"./screen\");\nObject.defineProperty(exports, \"Screen\", { enumerable: true, get: function () { return screen_1.Screen; } });\nvar delete_1 = require(\"./delete\");\nObject.defineProperty(exports, \"Delete\", { enumerable: true, get: function () { return delete_1.Delete; } });\nexports.default = __assign(__assign({}, facade_1.Facade), { Alias: alias_1.Alias,\n Group: group_1.Group,\n Identify: identify_1.Identify,\n Track: track_1.Track,\n Page: page_1.Page,\n Screen: screen_1.Screen,\n Delete: delete_1.Delete });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar matcher = /.+\\@.+\\..+/;\nfunction isEmail(string) {\n return matcher.test(string);\n}\nexports.default = isEmail;\n//# sourceMappingURL=is-email.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar disabled = {\n Salesforce: true,\n};\nfunction default_1(integration) {\n return !disabled[integration];\n}\nexports.default = default_1;\n//# sourceMappingURL=is-enabled.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Page = void 0;\nvar inherits_1 = __importDefault(require(\"inherits\"));\nvar facade_1 = require(\"./facade\");\nvar track_1 = require(\"./track\");\nvar is_email_1 = __importDefault(require(\"./is-email\"));\nfunction Page(dictionary, opts) {\n facade_1.Facade.call(this, dictionary, opts);\n}\nexports.Page = Page;\ninherits_1.default(Page, facade_1.Facade);\nvar p = Page.prototype;\np.action = function () {\n return \"page\";\n};\np.type = p.action;\np.category = facade_1.Facade.field(\"category\");\np.name = facade_1.Facade.field(\"name\");\np.title = facade_1.Facade.proxy(\"properties.title\");\np.path = facade_1.Facade.proxy(\"properties.path\");\np.url = facade_1.Facade.proxy(\"properties.url\");\np.referrer = function () {\n return (this.proxy(\"context.referrer.url\") ||\n this.proxy(\"context.page.referrer\") ||\n this.proxy(\"properties.referrer\"));\n};\np.properties = function (aliases) {\n var props = this.field(\"properties\") || {};\n var category = this.category();\n var name = this.name();\n aliases = aliases || {};\n if (category)\n props.category = category;\n if (name)\n props.name = name;\n for (var alias in aliases) {\n var value = this[alias] == null ? this.proxy(\"properties.\" + alias) : this[alias]();\n if (value == null)\n continue;\n props[aliases[alias]] = value;\n if (alias !== aliases[alias])\n delete props[alias];\n }\n return props;\n};\np.email = function () {\n var email = this.proxy(\"context.traits.email\") || this.proxy(\"properties.email\");\n if (email)\n return email;\n var userId = this.userId();\n if (is_email_1.default(userId))\n return userId;\n};\np.fullName = function () {\n var category = this.category();\n var name = this.name();\n return name && category ? category + \" \" + name : name;\n};\np.event = function (name) {\n return name ? \"Viewed \" + name + \" Page\" : \"Loaded a Page\";\n};\np.track = function (name) {\n var json = this.json();\n json.event = this.event(name);\n json.timestamp = this.timestamp();\n json.properties = this.properties();\n return new track_1.Track(json, this.opts);\n};\n//# sourceMappingURL=page.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Screen = void 0;\nvar inherits_1 = __importDefault(require(\"inherits\"));\nvar page_1 = require(\"./page\");\nvar track_1 = require(\"./track\");\nfunction Screen(dictionary, opts) {\n page_1.Page.call(this, dictionary, opts);\n}\nexports.Screen = Screen;\ninherits_1.default(Screen, page_1.Page);\nScreen.prototype.action = function () {\n return \"screen\";\n};\nScreen.prototype.type = Screen.prototype.action;\nScreen.prototype.event = function (name) {\n return name ? \"Viewed \" + name + \" Screen\" : \"Loaded a Screen\";\n};\nScreen.prototype.track = function (name) {\n var json = this.json();\n json.event = this.event(name);\n json.timestamp = this.timestamp();\n json.properties = this.properties();\n return new track_1.Track(json, this.opts);\n};\n//# sourceMappingURL=screen.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Track = void 0;\nvar inherits_1 = __importDefault(require(\"inherits\"));\nvar facade_1 = require(\"./facade\");\nvar identify_1 = require(\"./identify\");\nvar is_email_1 = __importDefault(require(\"./is-email\"));\nvar obj_case_1 = __importDefault(require(\"obj-case\"));\nfunction Track(dictionary, opts) {\n facade_1.Facade.call(this, dictionary, opts);\n}\nexports.Track = Track;\ninherits_1.default(Track, facade_1.Facade);\nvar t = Track.prototype;\nt.action = function () {\n return \"track\";\n};\nt.type = t.action;\nt.event = facade_1.Facade.field(\"event\");\nt.value = facade_1.Facade.proxy(\"properties.value\");\nt.category = facade_1.Facade.proxy(\"properties.category\");\nt.id = facade_1.Facade.proxy(\"properties.id\");\nt.productId = function () {\n return (this.proxy(\"properties.product_id\") || this.proxy(\"properties.productId\"));\n};\nt.promotionId = function () {\n return (this.proxy(\"properties.promotion_id\") ||\n this.proxy(\"properties.promotionId\"));\n};\nt.cartId = function () {\n return this.proxy(\"properties.cart_id\") || this.proxy(\"properties.cartId\");\n};\nt.checkoutId = function () {\n return (this.proxy(\"properties.checkout_id\") || this.proxy(\"properties.checkoutId\"));\n};\nt.paymentId = function () {\n return (this.proxy(\"properties.payment_id\") || this.proxy(\"properties.paymentId\"));\n};\nt.couponId = function () {\n return (this.proxy(\"properties.coupon_id\") || this.proxy(\"properties.couponId\"));\n};\nt.wishlistId = function () {\n return (this.proxy(\"properties.wishlist_id\") || this.proxy(\"properties.wishlistId\"));\n};\nt.reviewId = function () {\n return (this.proxy(\"properties.review_id\") || this.proxy(\"properties.reviewId\"));\n};\nt.orderId = function () {\n return (this.proxy(\"properties.id\") ||\n this.proxy(\"properties.order_id\") ||\n this.proxy(\"properties.orderId\"));\n};\nt.sku = facade_1.Facade.proxy(\"properties.sku\");\nt.tax = facade_1.Facade.proxy(\"properties.tax\");\nt.name = facade_1.Facade.proxy(\"properties.name\");\nt.price = facade_1.Facade.proxy(\"properties.price\");\nt.total = facade_1.Facade.proxy(\"properties.total\");\nt.repeat = facade_1.Facade.proxy(\"properties.repeat\");\nt.coupon = facade_1.Facade.proxy(\"properties.coupon\");\nt.shipping = facade_1.Facade.proxy(\"properties.shipping\");\nt.discount = facade_1.Facade.proxy(\"properties.discount\");\nt.shippingMethod = function () {\n return (this.proxy(\"properties.shipping_method\") ||\n this.proxy(\"properties.shippingMethod\"));\n};\nt.paymentMethod = function () {\n return (this.proxy(\"properties.payment_method\") ||\n this.proxy(\"properties.paymentMethod\"));\n};\nt.description = facade_1.Facade.proxy(\"properties.description\");\nt.plan = facade_1.Facade.proxy(\"properties.plan\");\nt.subtotal = function () {\n var subtotal = obj_case_1.default(this.properties(), \"subtotal\");\n var total = this.total() || this.revenue();\n if (subtotal)\n return subtotal;\n if (!total)\n return 0;\n if (this.total()) {\n var n = this.tax();\n if (n)\n total -= n;\n n = this.shipping();\n if (n)\n total -= n;\n n = this.discount();\n if (n)\n total += n;\n }\n return total;\n};\nt.products = function () {\n var props = this.properties();\n var products = obj_case_1.default(props, \"products\");\n if (Array.isArray(products)) {\n return products.filter(function (item) { return item !== null; });\n }\n return [];\n};\nt.quantity = function () {\n var props = this.obj.properties || {};\n return props.quantity || 1;\n};\nt.currency = function () {\n var props = this.obj.properties || {};\n return props.currency || \"USD\";\n};\nt.referrer = function () {\n return (this.proxy(\"context.referrer.url\") ||\n this.proxy(\"context.page.referrer\") ||\n this.proxy(\"properties.referrer\"));\n};\nt.query = facade_1.Facade.proxy(\"options.query\");\nt.properties = function (aliases) {\n var ret = this.field(\"properties\") || {};\n aliases = aliases || {};\n for (var alias in aliases) {\n var value = this[alias] == null ? this.proxy(\"properties.\" + alias) : this[alias]();\n if (value == null)\n continue;\n ret[aliases[alias]] = value;\n delete ret[alias];\n }\n return ret;\n};\nt.username = function () {\n return (this.proxy(\"traits.username\") ||\n this.proxy(\"properties.username\") ||\n this.userId() ||\n this.sessionId());\n};\nt.email = function () {\n var email = this.proxy(\"traits.email\") ||\n this.proxy(\"properties.email\") ||\n this.proxy(\"options.traits.email\");\n if (email)\n return email;\n var userId = this.userId();\n if (is_email_1.default(userId))\n return userId;\n};\nt.revenue = function () {\n var revenue = this.proxy(\"properties.revenue\");\n var event = this.event();\n var orderCompletedRegExp = /^[ _]?completed[ _]?order[ _]?|^[ _]?order[ _]?completed[ _]?$/i;\n if (!revenue && event && event.match(orderCompletedRegExp)) {\n revenue = this.proxy(\"properties.total\");\n }\n return currency(revenue);\n};\nt.cents = function () {\n var revenue = this.revenue();\n return typeof revenue !== \"number\" ? this.value() || 0 : revenue * 100;\n};\nt.identify = function () {\n var json = this.json();\n json.traits = this.traits();\n return new identify_1.Identify(json, this.opts);\n};\nfunction currency(val) {\n if (!val)\n return;\n if (typeof val === \"number\") {\n return val;\n }\n if (typeof val !== \"string\") {\n return;\n }\n val = val.replace(/\\$/g, \"\");\n val = parseFloat(val);\n if (!isNaN(val)) {\n return val;\n }\n}\n//# sourceMappingURL=track.js.map","'use strict';\n\nvar isodate = require('@segment/isodate');\n\n/**\n * Expose `traverse`.\n */\nmodule.exports = traverse;\n\n/**\n * Recursively traverse an object or array, and convert\n * all ISO date strings parse into Date objects.\n *\n * @param {Object} input - object, array, or string to convert\n * @param {Boolean} strict - only convert strings with year, month, and date\n * @return {Object}\n */\nfunction traverse(input, strict) {\n if (strict === undefined) strict = true;\n if (input && typeof input === 'object') {\n return traverseObject(input, strict);\n } else if (Array.isArray(input)) {\n return traverseArray(input, strict);\n } else if (isodate.is(input, strict)) {\n return isodate.parse(input);\n }\n return input;\n}\n\n/**\n * Object traverser helper function.\n *\n * @param {Object} obj - object to traverse\n * @param {Boolean} strict - only convert strings with year, month, and date\n * @return {Object}\n */\nfunction traverseObject(obj, strict) {\n Object.keys(obj).forEach(function(key) {\n obj[key] = traverse(obj[key], strict);\n });\n return obj;\n}\n\n/**\n * Array traverser helper function\n *\n * @param {Array} arr - array to traverse\n * @param {Boolean} strict - only convert strings with year, month, and date\n * @return {Array}\n */\nfunction traverseArray(arr, strict) {\n arr.forEach(function(value, index) {\n arr[index] = traverse(value, strict);\n });\n return arr;\n}\n","'use strict';\n\n/**\n * Matcher, slightly modified from:\n *\n * https://github.com/csnover/js-iso8601/blob/lax/iso8601.js\n */\n\nvar matcher = /^(\\d{4})(?:-?(\\d{2})(?:-?(\\d{2}))?)?(?:([ T])(\\d{2}):?(\\d{2})(?::?(\\d{2})(?:[,\\.](\\d{1,}))?)?(?:(Z)|([+\\-])(\\d{2})(?::?(\\d{2}))?)?)?$/;\n\n/**\n * Convert an ISO date string to a date. Fallback to native `Date.parse`.\n *\n * https://github.com/csnover/js-iso8601/blob/lax/iso8601.js\n *\n * @param {String} iso\n * @return {Date}\n */\n\nexports.parse = function(iso) {\n var numericKeys = [1, 5, 6, 7, 11, 12];\n var arr = matcher.exec(iso);\n var offset = 0;\n\n // fallback to native parsing\n if (!arr) {\n return new Date(iso);\n }\n\n /* eslint-disable no-cond-assign */\n // remove undefined values\n for (var i = 0, val; val = numericKeys[i]; i++) {\n arr[val] = parseInt(arr[val], 10) || 0;\n }\n /* eslint-enable no-cond-assign */\n\n // allow undefined days and months\n arr[2] = parseInt(arr[2], 10) || 1;\n arr[3] = parseInt(arr[3], 10) || 1;\n\n // month is 0-11\n arr[2]--;\n\n // allow abitrary sub-second precision\n arr[8] = arr[8] ? (arr[8] + '00').substring(0, 3) : 0;\n\n // apply timezone if one exists\n if (arr[4] === ' ') {\n offset = new Date().getTimezoneOffset();\n } else if (arr[9] !== 'Z' && arr[10]) {\n offset = arr[11] * 60 + arr[12];\n if (arr[10] === '+') {\n offset = 0 - offset;\n }\n }\n\n var millis = Date.UTC(arr[1], arr[2], arr[3], arr[5], arr[6] + offset, arr[7], arr[8]);\n return new Date(millis);\n};\n\n\n/**\n * Checks whether a `string` is an ISO date string. `strict` mode requires that\n * the date string at least have a year, month and date.\n *\n * @param {String} string\n * @param {Boolean} strict\n * @return {Boolean}\n */\n\nexports.is = function(string, strict) {\n if (typeof string !== 'string') {\n return false;\n }\n if (strict && (/^\\d{4}-\\d{2}-\\d{2}/).test(string) === false) {\n return false;\n }\n return matcher.test(string);\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","\"use strict\";\n\nvar isodate = require(\"@segment/isodate\");\nvar milliseconds = require(\"./milliseconds\");\nvar seconds = require(\"./seconds\");\n\nvar objProto = Object.prototype;\nvar toStr = objProto.toString;\n\nfunction isDate(value) {\n return toStr.call(value) === \"[object Date]\";\n}\n\nfunction isNumber(value) {\n return toStr.call(value) === \"[object Number]\";\n}\n\n/**\n * Returns a new Javascript Date object, allowing a variety of extra input types\n * over the native Date constructor.\n *\n * @param {Date|string|number} val\n */\nmodule.exports = function newDate(val) {\n if (isDate(val)) return val;\n if (isNumber(val)) return new Date(toMs(val));\n\n // date strings\n if (isodate.is(val)) {\n return isodate.parse(val);\n }\n if (milliseconds.is(val)) {\n return milliseconds.parse(val);\n }\n if (seconds.is(val)) {\n return seconds.parse(val);\n }\n\n // fallback to Date.parse\n return new Date(val);\n};\n\n/**\n * If the number passed val is seconds from the epoch, turn it into milliseconds.\n * Milliseconds would be greater than 31557600000 (December 31, 1970).\n *\n * @param {number} num\n */\nfunction toMs(num) {\n if (num < 31557600000) return num * 1000;\n return num;\n}\n","\"use strict\";\n\n/**\n * Matcher.\n */\n\nvar matcher = /\\d{13}/;\n\n/**\n * Check whether a string is a millisecond date string.\n *\n * @param {string} string\n * @return {boolean}\n */\nexports.is = function (string) {\n return matcher.test(string);\n};\n\n/**\n * Convert a millisecond string to a date.\n *\n * @param {string} millis\n * @return {Date}\n */\nexports.parse = function (millis) {\n millis = parseInt(millis, 10);\n return new Date(millis);\n};\n","\"use strict\";\n\n/**\n * Matcher.\n */\n\nvar matcher = /\\d{10}/;\n\n/**\n * Check whether a string is a second date string.\n *\n * @param {string} string\n * @return {Boolean}\n */\nexports.is = function (string) {\n return matcher.test(string);\n};\n\n/**\n * Convert a second string to a date.\n *\n * @param {string} seconds\n * @return {Date}\n */\nexports.parse = function (seconds) {\n var millis = parseInt(seconds, 10) * 1000;\n return new Date(millis);\n};\n","\nvar identity = function(_){ return _; };\n\n\n/**\n * Module exports, export\n */\n\nmodule.exports = multiple(find);\nmodule.exports.find = module.exports;\n\n\n/**\n * Export the replacement function, return the modified object\n */\n\nmodule.exports.replace = function (obj, key, val, options) {\n multiple(replace).call(this, obj, key, val, options);\n return obj;\n};\n\n\n/**\n * Export the delete function, return the modified object\n */\n\nmodule.exports.del = function (obj, key, options) {\n multiple(del).call(this, obj, key, null, options);\n return obj;\n};\n\n\n/**\n * Compose applying the function to a nested key\n */\n\nfunction multiple (fn) {\n return function (obj, path, val, options) {\n var normalize = options && isFunction(options.normalizer) ? options.normalizer : defaultNormalize;\n path = normalize(path);\n\n var key;\n var finished = false;\n\n while (!finished) loop();\n\n function loop() {\n for (key in obj) {\n var normalizedKey = normalize(key);\n if (0 === path.indexOf(normalizedKey)) {\n var temp = path.substr(normalizedKey.length);\n if (temp.charAt(0) === '.' || temp.length === 0) {\n path = temp.substr(1);\n var child = obj[key];\n\n // we're at the end and there is nothing.\n if (null == child) {\n finished = true;\n return;\n }\n\n // we're at the end and there is something.\n if (!path.length) {\n finished = true;\n return;\n }\n\n // step into child\n obj = child;\n\n // but we're done here\n return;\n }\n }\n }\n\n key = undefined;\n // if we found no matching properties\n // on the current object, there's no match.\n finished = true;\n }\n\n if (!key) return;\n if (null == obj) return obj;\n\n // the `obj` and `key` is one above the leaf object and key, so\n // start object: { a: { 'b.c': 10 } }\n // end object: { 'b.c': 10 }\n // end key: 'b.c'\n // this way, you can do `obj[key]` and get `10`.\n return fn(obj, key, val);\n };\n}\n\n\n/**\n * Find an object by its key\n *\n * find({ first_name : 'Calvin' }, 'firstName')\n */\n\nfunction find (obj, key) {\n if (obj.hasOwnProperty(key)) return obj[key];\n}\n\n\n/**\n * Delete a value for a given key\n *\n * del({ a : 'b', x : 'y' }, 'X' }) -> { a : 'b' }\n */\n\nfunction del (obj, key) {\n if (obj.hasOwnProperty(key)) delete obj[key];\n return obj;\n}\n\n\n/**\n * Replace an objects existing value with a new one\n *\n * replace({ a : 'b' }, 'a', 'c') -> { a : 'c' }\n */\n\nfunction replace (obj, key, val) {\n if (obj.hasOwnProperty(key)) obj[key] = val;\n return obj;\n}\n\n/**\n * Normalize a `dot.separated.path`.\n *\n * A.HELL(!*&#(!)O_WOR LD.bar => ahelloworldbar\n *\n * @param {String} path\n * @return {String}\n */\n\nfunction defaultNormalize(path) {\n return path.replace(/[^a-zA-Z0-9\\.]+/g, '').toLowerCase();\n}\n\n/**\n * Check if a value is a function.\n *\n * @param {*} val\n * @return {boolean} Returns `true` if `val` is a function, otherwise `false`.\n */\n\nfunction isFunction(val) {\n return typeof val === 'function';\n}\n","(function (factory) {\n if (typeof exports === 'object') {\n // Node/CommonJS\n module.exports = factory();\n } else if (typeof define === 'function' && define.amd) {\n // AMD\n define(factory);\n } else {\n // Browser globals (with support for web workers)\n var glob;\n\n try {\n glob = window;\n } catch (e) {\n glob = self;\n }\n\n glob.SparkMD5 = factory();\n }\n}(function (undefined) {\n\n 'use strict';\n\n /*\n * Fastest md5 implementation around (JKM md5).\n * Credits: Joseph Myers\n *\n * @see http://www.myersdaily.org/joseph/javascript/md5-text.html\n * @see http://jsperf.com/md5-shootout/7\n */\n\n /* this function is much faster,\n so if possible we use it. Some IEs\n are the only ones I know of that\n need the idiotic second function,\n generated by an if clause. */\n var add32 = function (a, b) {\n return (a + b) & 0xFFFFFFFF;\n },\n hex_chr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];\n\n\n function cmn(q, a, b, x, s, t) {\n a = add32(add32(a, q), add32(x, t));\n return add32((a << s) | (a >>> (32 - s)), b);\n }\n\n function md5cycle(x, k) {\n var a = x[0],\n b = x[1],\n c = x[2],\n d = x[3];\n\n a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[10] - 42063 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n a = (a << 7 | a >>> 25) + b | 0;\n d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n d = (d << 12 | d >>> 20) + a | 0;\n c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n c = (c << 17 | c >>> 15) + d | 0;\n b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n b = (b << 22 | b >>> 10) + c | 0;\n\n a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n a = (a << 5 | a >>> 27) + b | 0;\n d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n d = (d << 9 | d >>> 23) + a | 0;\n c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n c = (c << 14 | c >>> 18) + d | 0;\n b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n b = (b << 20 | b >>> 12) + c | 0;\n\n a += (b ^ c ^ d) + k[5] - 378558 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n a = (a << 4 | a >>> 28) + b | 0;\n d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n d = (d << 11 | d >>> 21) + a | 0;\n c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n c = (c << 16 | c >>> 16) + d | 0;\n b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n b = (b << 23 | b >>> 9) + c | 0;\n\n a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n b = (b << 21 |b >>> 11) + c | 0;\n a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n a = (a << 6 | a >>> 26) + b | 0;\n d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n d = (d << 10 | d >>> 22) + a | 0;\n c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n c = (c << 15 | c >>> 17) + d | 0;\n b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n b = (b << 21 | b >>> 11) + c | 0;\n\n x[0] = a + x[0] | 0;\n x[1] = b + x[1] | 0;\n x[2] = c + x[2] | 0;\n x[3] = d + x[3] | 0;\n }\n\n function md5blk(s) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n }\n return md5blks;\n }\n\n function md5blk_array(a) {\n var md5blks = [],\n i; /* Andy King said do it this way. */\n\n for (i = 0; i < 64; i += 4) {\n md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n }\n return md5blks;\n }\n\n function md51(s) {\n var n = s.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk(s.substring(i - 64, i)));\n }\n s = s.substring(i - 64);\n length = s.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);\n }\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n return state;\n }\n\n function md51_array(a) {\n var n = a.length,\n state = [1732584193, -271733879, -1732584194, 271733878],\n i,\n length,\n tail,\n tmp,\n lo,\n hi;\n\n for (i = 64; i <= n; i += 64) {\n md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n }\n\n // Not sure if it is a bug, however IE10 will always produce a sub array of length 1\n // containing the last element of the parent array if the sub array specified starts\n // beyond the length of the parent array - weird.\n // https://connect.microsoft.com/IE/feedback/details/771452/typed-array-subarray-issue\n a = (i - 64) < n ? a.subarray(i - 64) : new Uint8Array(0);\n\n length = a.length;\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= a[i] << ((i % 4) << 3);\n }\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(state, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Beware that the final length might not fit in 32 bits so we take care of that\n tmp = n * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n\n md5cycle(state, tail);\n\n return state;\n }\n\n function rhex(n) {\n var s = '',\n j;\n for (j = 0; j < 4; j += 1) {\n s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F];\n }\n return s;\n }\n\n function hex(x) {\n var i;\n for (i = 0; i < x.length; i += 1) {\n x[i] = rhex(x[i]);\n }\n return x.join('');\n }\n\n // In some cases the fast add32 function cannot be used..\n if (hex(md51('hello')) !== '5d41402abc4b2a76b9719d911017c592') {\n add32 = function (x, y) {\n var lsw = (x & 0xFFFF) + (y & 0xFFFF),\n msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return (msw << 16) | (lsw & 0xFFFF);\n };\n }\n\n // ---------------------------------------------------\n\n /**\n * ArrayBuffer slice polyfill.\n *\n * @see https://github.com/ttaubert/node-arraybuffer-slice\n */\n\n if (typeof ArrayBuffer !== 'undefined' && !ArrayBuffer.prototype.slice) {\n (function () {\n function clamp(val, length) {\n val = (val | 0) || 0;\n\n if (val < 0) {\n return Math.max(val + length, 0);\n }\n\n return Math.min(val, length);\n }\n\n ArrayBuffer.prototype.slice = function (from, to) {\n var length = this.byteLength,\n begin = clamp(from, length),\n end = length,\n num,\n target,\n targetArray,\n sourceArray;\n\n if (to !== undefined) {\n end = clamp(to, length);\n }\n\n if (begin > end) {\n return new ArrayBuffer(0);\n }\n\n num = end - begin;\n target = new ArrayBuffer(num);\n targetArray = new Uint8Array(target);\n\n sourceArray = new Uint8Array(this, begin, num);\n targetArray.set(sourceArray);\n\n return target;\n };\n })();\n }\n\n // ---------------------------------------------------\n\n /**\n * Helpers.\n */\n\n function toUtf8(str) {\n if (/[\\u0080-\\uFFFF]/.test(str)) {\n str = unescape(encodeURIComponent(str));\n }\n\n return str;\n }\n\n function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n var length = str.length,\n buff = new ArrayBuffer(length),\n arr = new Uint8Array(buff),\n i;\n\n for (i = 0; i < length; i += 1) {\n arr[i] = str.charCodeAt(i);\n }\n\n return returnUInt8Array ? arr : buff;\n }\n\n function arrayBuffer2Utf8Str(buff) {\n return String.fromCharCode.apply(null, new Uint8Array(buff));\n }\n\n function concatenateArrayBuffers(first, second, returnUInt8Array) {\n var result = new Uint8Array(first.byteLength + second.byteLength);\n\n result.set(new Uint8Array(first));\n result.set(new Uint8Array(second), first.byteLength);\n\n return returnUInt8Array ? result : result.buffer;\n }\n\n function hexToBinaryString(hex) {\n var bytes = [],\n length = hex.length,\n x;\n\n for (x = 0; x < length - 1; x += 2) {\n bytes.push(parseInt(hex.substr(x, 2), 16));\n }\n\n return String.fromCharCode.apply(String, bytes);\n }\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation.\n *\n * Use this class to perform an incremental md5, otherwise use the\n * static methods instead.\n */\n\n function SparkMD5() {\n // call reset to init the instance\n this.reset();\n }\n\n /**\n * Appends a string.\n * A conversion will be applied if an utf8 string is detected.\n *\n * @param {String} str The string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.append = function (str) {\n // Converts the string to utf8 bytes if necessary\n // Then append as binary\n this.appendBinary(toUtf8(str));\n\n return this;\n };\n\n /**\n * Appends a binary string.\n *\n * @param {String} contents The binary string to be appended\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.appendBinary = function (contents) {\n this._buff += contents;\n this._length += contents.length;\n\n var length = this._buff.length,\n i;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n }\n\n this._buff = this._buff.substring(i - 64);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n i,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff.charCodeAt(i) << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.reset = function () {\n this._buff = '';\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.prototype.getState = function () {\n return {\n buff: this._buff,\n length: this._length,\n hash: this._hash.slice()\n };\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5} The instance itself\n */\n SparkMD5.prototype.setState = function (state) {\n this._buff = state.buff;\n this._length = state.length;\n this._hash = state.hash;\n\n return this;\n };\n\n /**\n * Releases memory used by the incremental buffer and other additional\n * resources. If you plan to use the instance again, use reset instead.\n */\n SparkMD5.prototype.destroy = function () {\n delete this._hash;\n delete this._buff;\n delete this._length;\n };\n\n /**\n * Finish the final calculation based on the tail.\n *\n * @param {Array} tail The tail (will be modified)\n * @param {Number} length The length of the remaining buffer\n */\n SparkMD5.prototype._finish = function (tail, length) {\n var i = length,\n tmp,\n lo,\n hi;\n\n tail[i >> 2] |= 0x80 << ((i % 4) << 3);\n if (i > 55) {\n md5cycle(this._hash, tail);\n for (i = 0; i < 16; i += 1) {\n tail[i] = 0;\n }\n }\n\n // Do the final computation based on the tail and length\n // Beware that the final length may not fit in 32 bits so we take care of that\n tmp = this._length * 8;\n tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n lo = parseInt(tmp[2], 16);\n hi = parseInt(tmp[1], 16) || 0;\n\n tail[14] = lo;\n tail[15] = hi;\n md5cycle(this._hash, tail);\n };\n\n /**\n * Performs the md5 hash on a string.\n * A conversion will be applied if utf8 string is detected.\n *\n * @param {String} str The string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hash = function (str, raw) {\n // Converts the string to utf8 bytes if necessary\n // Then compute it using the binary function\n return SparkMD5.hashBinary(toUtf8(str), raw);\n };\n\n /**\n * Performs the md5 hash on a binary string.\n *\n * @param {String} content The binary string\n * @param {Boolean} [raw] True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.hashBinary = function (content, raw) {\n var hash = md51(content),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n // ---------------------------------------------------\n\n /**\n * SparkMD5 OOP implementation for array buffers.\n *\n * Use this class to perform an incremental md5 ONLY for array buffers.\n */\n SparkMD5.ArrayBuffer = function () {\n // call reset to init the instance\n this.reset();\n };\n\n /**\n * Appends an array buffer.\n *\n * @param {ArrayBuffer} arr The array to be appended\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.append = function (arr) {\n var buff = concatenateArrayBuffers(this._buff.buffer, arr, true),\n length = buff.length,\n i;\n\n this._length += arr.byteLength;\n\n for (i = 64; i <= length; i += 64) {\n md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n }\n\n this._buff = (i - 64) < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n\n return this;\n };\n\n /**\n * Finishes the incremental computation, reseting the internal state and\n * returning the result.\n *\n * @param {Boolean} raw True to get the raw string, false to get the hex string\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.prototype.end = function (raw) {\n var buff = this._buff,\n length = buff.length,\n tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n i,\n ret;\n\n for (i = 0; i < length; i += 1) {\n tail[i >> 2] |= buff[i] << ((i % 4) << 3);\n }\n\n this._finish(tail, length);\n ret = hex(this._hash);\n\n if (raw) {\n ret = hexToBinaryString(ret);\n }\n\n this.reset();\n\n return ret;\n };\n\n /**\n * Resets the internal state of the computation.\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.reset = function () {\n this._buff = new Uint8Array(0);\n this._length = 0;\n this._hash = [1732584193, -271733879, -1732584194, 271733878];\n\n return this;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @return {Object} The state\n */\n SparkMD5.ArrayBuffer.prototype.getState = function () {\n var state = SparkMD5.prototype.getState.call(this);\n\n // Convert buffer to a string\n state.buff = arrayBuffer2Utf8Str(state.buff);\n\n return state;\n };\n\n /**\n * Gets the internal state of the computation.\n *\n * @param {Object} state The state\n *\n * @return {SparkMD5.ArrayBuffer} The instance itself\n */\n SparkMD5.ArrayBuffer.prototype.setState = function (state) {\n // Convert string to buffer\n state.buff = utf8Str2ArrayBuffer(state.buff, true);\n\n return SparkMD5.prototype.setState.call(this, state);\n };\n\n SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n\n SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n\n /**\n * Performs the md5 hash on an array buffer.\n *\n * @param {ArrayBuffer} arr The array buffer\n * @param {Boolean} [raw] True to get the raw string, false to get the hex one\n *\n * @return {String} The result\n */\n SparkMD5.ArrayBuffer.hash = function (arr, raw) {\n var hash = md51_array(new Uint8Array(arr)),\n ret = hex(hash);\n\n return raw ? hexToBinaryString(ret) : ret;\n };\n\n return SparkMD5;\n}));\n","import { isBrowser } from '../environment'\n\nexport function isOnline(): boolean {\n if (isBrowser()) {\n return window.navigator.onLine\n }\n\n return true\n}\n\nexport function isOffline(): boolean {\n return !isOnline()\n}\n","export const HIGHTOUCH_API_HOST = 'us-east-1.hightouch-events.com'\n","import { fetch } from '../../lib/fetch'\nimport { version } from '../../generated/version'\nimport { getVersionType } from '../../lib/version-type'\nimport { HIGHTOUCH_API_HOST } from '../constants'\n\nexport interface MetricsOptions {\n host?: string\n sampleRate?: number\n flushTimer?: number\n maxQueueSize?: number\n}\n\n/**\n * Type expected by the hightouch metrics API endpoint\n */\ntype RemoteMetric = {\n type: 'Counter'\n metric: string\n value: 1\n tags: {\n library: string\n library_version: string\n [key: string]: string\n }\n}\n\nconst createRemoteMetric = (\n metric: string,\n tags: string[],\n versionType: 'web' | 'npm'\n): RemoteMetric => {\n const formattedTags = tags.reduce(\n (acc, t) => {\n const [k, v] = t.split(':')\n acc[k] = v\n return acc\n },\n {} as Record<string, string>\n )\n\n return {\n type: 'Counter',\n metric,\n value: 1,\n tags: {\n ...formattedTags,\n library: 'analytics.js',\n library_version:\n versionType === 'web' ? `next-${version}` : `npm:next-${version}`,\n },\n }\n}\n\nfunction logError(err: unknown): void {\n console.error('Error sending hightouch performance metrics', err)\n}\n\nexport class RemoteMetrics {\n private host: string\n private flushTimer: number\n private maxQueueSize: number\n\n sampleRate: number\n queue: RemoteMetric[]\n\n constructor(options?: MetricsOptions) {\n this.host = options?.host ?? HIGHTOUCH_API_HOST\n this.sampleRate = options?.sampleRate ?? 1\n this.flushTimer = options?.flushTimer ?? 30 * 1000 /* 30s */\n this.maxQueueSize = options?.maxQueueSize ?? 20\n\n this.queue = []\n\n if (this.sampleRate > 0) {\n let flushing = false\n\n const run = (): void => {\n if (flushing) {\n return\n }\n\n flushing = true\n this.flush().catch(logError)\n\n flushing = false\n\n setTimeout(run, this.flushTimer)\n }\n run()\n }\n }\n\n increment(metric: string, tags: string[]): void {\n // All metrics are part of an allow list in Tracking API\n if (!metric.includes('analytics_js.')) {\n return\n }\n\n // /m doesn't like empty tags\n if (tags.length === 0) {\n return\n }\n\n if (Math.random() > this.sampleRate) {\n return\n }\n\n if (this.queue.length >= this.maxQueueSize) {\n return\n }\n\n const remoteMetric = createRemoteMetric(metric, tags, getVersionType())\n this.queue.push(remoteMetric)\n\n if (metric.includes('error')) {\n this.flush().catch(logError)\n }\n }\n\n async flush(): Promise<void> {\n if (this.queue.length <= 0) {\n return\n }\n\n await this.send().catch((error) => {\n logError(error)\n this.sampleRate = 0\n })\n }\n\n private async send(): Promise<Response> {\n const payload = { series: this.queue }\n this.queue = []\n\n const headers = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n }\n const url = `https://${this.host}/v1/m`\n\n return fetch(url, {\n headers,\n body: JSON.stringify(payload),\n method: 'POST',\n })\n }\n}\n","import { CoreStats } from '@ht-sdks/events-sdk-js-core'\nimport { MetricsOptions, RemoteMetrics } from './remote-metrics'\n\nlet remoteMetrics: RemoteMetrics | undefined\n\nexport class Stats extends CoreStats {\n static initRemoteMetrics(options?: MetricsOptions) {\n remoteMetrics = new RemoteMetrics(options)\n }\n\n override increment(metric: string, by?: number, tags?: string[]): void {\n super.increment(metric, by, tags)\n remoteMetrics?.increment(metric, tags ?? [])\n }\n}\n","import {\n CoreContext,\n ContextCancelation,\n ContextFailedDelivery,\n SerializedContext,\n CancelationOptions,\n} from '@ht-sdks/events-sdk-js-core'\nimport { HightouchEvent } from '../events/interfaces'\nimport { Stats } from '../stats'\n\nexport class Context extends CoreContext<HightouchEvent> {\n static override system() {\n return new this({ type: 'track', event: 'system' })\n }\n constructor(event: HightouchEvent, id?: string) {\n super(event, id, new Stats())\n }\n}\n\nexport { ContextCancelation }\nexport type { ContextFailedDelivery, SerializedContext, CancelationOptions }\n","export function isBrowser(): boolean {\n return typeof window !== 'undefined'\n}\n\nexport function isServer(): boolean {\n return !isBrowser()\n}\n","/**\n * Tries to gets the unencoded version of an encoded component of a\n * Uniform Resource Identifier (URI). If input string is malformed,\n * returns it back as-is.\n *\n * Note: All occurences of the `+` character become ` ` (spaces).\n **/\nexport function gracefulDecodeURIComponent(\n encodedURIComponent: string\n): string {\n try {\n return decodeURIComponent(encodedURIComponent.replace(/\\+/g, ' '))\n } catch {\n return encodedURIComponent\n }\n}\n","// This file is generated.\nexport const version = '1.5.8'\n","export default function(e,n){return n=n||{},new Promise(function(t,r){var s=new XMLHttpRequest,o=[],u=[],i={},a=function(){return{ok:2==(s.status/100|0),statusText:s.statusText,status:s.status,url:s.responseURL,text:function(){return Promise.resolve(s.responseText)},json:function(){return Promise.resolve(JSON.parse(s.responseText))},blob:function(){return Promise.resolve(new Blob([s.response]))},clone:a,headers:{keys:function(){return o},entries:function(){return u},get:function(e){return i[e.toLowerCase()]},has:function(e){return e.toLowerCase()in i}}}};for(var l in s.open(n.method||\"get\",e,!0),s.onload=function(){s.getAllResponseHeaders().replace(/^(.*?):[^\\S\\n]*([\\s\\S]*?)$/gm,function(e,n,t){o.push(n=n.toLowerCase()),u.push([n,t]),i[n]=i[n]?i[n]+\",\"+t:t}),t(a())},s.onerror=r,s.withCredentials=\"include\"==n.credentials,n.headers)s.setRequestHeader(l,n.headers[l]);s.send(n.body||null)})}\n//# sourceMappingURL=unfetch.mjs.map\n","import unfetch from 'unfetch'\nimport { getGlobal } from './get-global'\n\n/**\n * Wrapper around native `fetch` containing `unfetch` fallback.\n */\nexport const fetch: typeof global.fetch = (...args) => {\n const global = getGlobal()\n return ((global && global.fetch) || unfetch)(...args)\n}\n","// This an imperfect polyfill for globalThis\nexport const getGlobal = () => {\n if (typeof globalThis !== 'undefined') {\n return globalThis\n }\n if (typeof self !== 'undefined') {\n return self\n }\n if (typeof window !== 'undefined') {\n return window\n }\n if (typeof global !== 'undefined') {\n return global\n }\n return null\n}\n","import { HtEventsSnippet } from '../browser/standalone-interface'\n\n/**\n * Stores the global window analytics key\n */\nlet _globalAnalyticsKey = 'htevents'\n\n/**\n * Gets the global analytics/buffer\n * @param key name of the window property where the buffer is stored (default: analytics)\n * @returns HtEventsSnippet\n */\nexport function getGlobalAnalytics(): HtEventsSnippet | undefined {\n return (window as any)[_globalAnalyticsKey]\n}\n\n/**\n * Replaces the global window key for the analytics/buffer object\n * @param key key name\n */\nexport function setGlobalAnalyticsKey(key: string) {\n _globalAnalyticsKey = key\n}\n\n/**\n * Sets the global analytics object\n * @param analytics analytics snippet\n */\nexport function setGlobalAnalytics(analytics: HtEventsSnippet): void {\n ;(window as any)[_globalAnalyticsKey] = analytics\n}\n","function findScript(src: string): HTMLScriptElement | undefined {\n const scripts = Array.prototype.slice.call(\n window.document.querySelectorAll('script')\n )\n return scripts.find((s) => s.src === src)\n}\n\nexport function loadScript(\n src: string,\n attributes?: Record<string, string>\n): Promise<HTMLScriptElement> {\n const found = findScript(src)\n\n if (found !== undefined) {\n const status = found?.getAttribute('status')\n\n if (status === 'loaded') {\n return Promise.resolve(found)\n }\n\n if (status === 'loading') {\n return new Promise((resolve, reject) => {\n found.addEventListener('load', () => resolve(found))\n found.addEventListener('error', (err) => reject(err))\n })\n }\n }\n\n return new Promise((resolve, reject) => {\n const script = window.document.createElement('script')\n\n script.type = 'text/javascript'\n script.src = src\n script.async = true\n\n script.setAttribute('status', 'loading')\n for (const [k, v] of Object.entries(attributes ?? {})) {\n script.setAttribute(k, v)\n }\n\n script.onload = (): void => {\n script.onerror = script.onload = null\n script.setAttribute('status', 'loaded')\n resolve(script)\n }\n\n script.onerror = (): void => {\n script.onerror = script.onload = null\n script.setAttribute('status', 'error')\n reject(new Error(`Failed to load ${src}`))\n }\n\n const tag = window.document.getElementsByTagName('script')[0]\n tag.parentElement?.insertBefore(script, tag)\n })\n}\n\nexport function unloadScript(src: string): Promise<void> {\n const found = findScript(src)\n\n if (found !== undefined) {\n found.remove()\n }\n\n return Promise.resolve()\n}\n","import { JSONObject, Options } from '../core/events/interfaces'\nimport { LegacySettings } from '../browser'\n\n/**\n * Merge legacy settings and initialized Integration option overrides.\n *\n * This will merge any options that were passed from initialization into\n * overrides for settings that are returned by the Hightouch CDN.\n *\n * i.e. this allows for passing options directly into destinations from\n * the Analytics constructor.\n */\nexport function mergedOptions(\n settings: LegacySettings,\n options: Options\n): Record<string, JSONObject> {\n const optionOverrides = Object.entries(options.integrations ?? {}).reduce(\n (overrides, [integration, options]) => {\n if (typeof options === 'object') {\n return {\n ...overrides,\n [integration]: options,\n }\n }\n\n return {\n ...overrides,\n [integration]: {},\n }\n },\n {} as Record<string, JSONObject>\n )\n\n return Object.entries(settings.integrations).reduce(\n (integrationSettings, [integration, settings]) => {\n return {\n ...integrationSettings,\n [integration]: {\n ...settings,\n ...optionOverrides[integration],\n },\n }\n },\n {} as Record<string, JSONObject>\n )\n}\n","export const pWhile = async <T>(\n condition: (value: T | undefined) => boolean,\n action: () => T | PromiseLike<T>\n): Promise<void> => {\n const loop = async (actionResult: T | undefined): Promise<void> => {\n if (condition(actionResult)) {\n return loop(await action())\n }\n }\n\n return loop(undefined)\n}\n","import { getGlobalAnalytics } from './global-analytics-helper'\n\nconst analyticsScriptRegex =\n /(https:\\/\\/.*)\\/analytics\\.js\\/v1\\/(?:.*?)\\/(?:platform|analytics.*)?/\nconst getCDNUrlFromScriptTag = (): string | undefined => {\n let cdn: string | undefined\n const scripts = Array.prototype.slice.call(\n document.querySelectorAll('script')\n )\n scripts.forEach((s) => {\n const src = s.getAttribute('src') ?? ''\n const result = analyticsScriptRegex.exec(src)\n\n if (result && result[1]) {\n cdn = result[1]\n }\n })\n return cdn\n}\n\nlet _globalCDN: string | undefined // set globalCDN as in-memory singleton\nconst getGlobalCDNUrl = (): string | undefined => {\n const result = _globalCDN ?? getGlobalAnalytics()?._cdn\n return result\n}\n\nexport const setGlobalCDNUrl = (cdn: string) => {\n const globalAnalytics = getGlobalAnalytics()\n if (globalAnalytics) {\n globalAnalytics._cdn = cdn\n }\n _globalCDN = cdn\n}\n\nexport const getCDN = (): string => {\n const globalCdnUrl = getGlobalCDNUrl()\n\n if (globalCdnUrl) return globalCdnUrl\n\n const cdnFromScriptTag = getCDNUrlFromScriptTag()\n\n if (cdnFromScriptTag) {\n return cdnFromScriptTag\n } else {\n // it's possible that the CDN is not found in the page because:\n // - the script is loaded through a proxy\n // - the script is removed after execution\n // in this case, we fall back to the default Hightouch CDN\n return `https://cdn.hightouch-events.com`\n }\n}\n\nexport const getNextIntegrationsURL = () => {\n const cdn = getCDN()\n return `${cdn}/next-integrations`\n}\n","import { PriorityQueue } from '@ht-sdks/events-sdk-js-core'\nimport { Context, SerializedContext } from '../../core/context'\nimport { isBrowser } from '../../core/environment'\n\nlet loc:\n | Storage\n | { getItem: () => void; setItem: () => void; removeItem: () => void } = {\n getItem() {},\n setItem() {},\n removeItem() {},\n}\n\ntry {\n loc = isBrowser() && window.localStorage ? window.localStorage : loc\n} catch (err) {\n console.warn('Unable to access localStorage', err)\n}\n\nfunction persisted(key: string): Context[] {\n const items = loc.getItem(key)\n return (items ? JSON.parse(items) : []).map(\n (p: SerializedContext) => new Context(p.event, p.id)\n )\n}\n\nfunction persistItems(key: string, items: Context[]): void {\n const existing = persisted(key)\n const all = [...items, ...existing]\n\n const merged = all.reduce(\n (acc, item) => {\n return {\n ...acc,\n [item.id]: item,\n }\n },\n {} as Record<string, Context>\n )\n\n loc.setItem(key, JSON.stringify(Object.values(merged)))\n}\n\nfunction seen(key: string): Record<string, number> {\n const stored = loc.getItem(key)\n return stored ? JSON.parse(stored) : {}\n}\n\nfunction persistSeen(key: string, memory: Record<string, number>): void {\n const stored = seen(key)\n\n loc.setItem(\n key,\n JSON.stringify({\n ...stored,\n ...memory,\n })\n )\n}\n\nfunction remove(key: string): void {\n loc.removeItem(key)\n}\n\nconst now = (): number => new Date().getTime()\n\nfunction mutex(key: string, onUnlock: Function, attempt = 0): void {\n const lockTimeout = 50\n const lockKey = `persisted-queue:v1:${key}:lock`\n\n const expired = (lock: number): boolean => new Date().getTime() > lock\n const rawLock = loc.getItem(lockKey)\n const lock = rawLock ? (JSON.parse(rawLock) as number) : null\n\n const allowed = lock === null || expired(lock)\n if (allowed) {\n loc.setItem(lockKey, JSON.stringify(now() + lockTimeout))\n onUnlock()\n loc.removeItem(lockKey)\n return\n }\n\n if (!allowed && attempt < 3) {\n setTimeout(() => {\n mutex(key, onUnlock, attempt + 1)\n }, lockTimeout)\n } else {\n console.error('Unable to retrieve lock')\n }\n}\n\nexport class PersistedPriorityQueue extends PriorityQueue<Context> {\n constructor(maxAttempts: number, key: string) {\n super(maxAttempts, [])\n\n const itemsKey = `persisted-queue:v1:${key}:items`\n const seenKey = `persisted-queue:v1:${key}:seen`\n\n let saved: Context[] = []\n let lastSeen: Record<string, number> = {}\n\n mutex(key, () => {\n try {\n saved = persisted(itemsKey)\n lastSeen = seen(seenKey)\n remove(itemsKey)\n remove(seenKey)\n\n this.queue = [...saved, ...this.queue]\n this.seen = { ...lastSeen, ...this.seen }\n } catch (err) {\n console.error(err)\n }\n })\n\n window.addEventListener('pagehide', () => {\n // we deliberately want to use the less powerful 'pagehide' API to only persist on events where the analytics instance gets destroyed, and not on tab away.\n if (this.todo > 0) {\n const items = [...this.queue, ...this.future]\n try {\n mutex(key, () => {\n persistItems(itemsKey, items)\n persistSeen(seenKey, this.seen)\n })\n } catch (err) {\n console.error(err)\n }\n }\n })\n }\n}\n","import {\n Alias,\n Facade,\n Group,\n Identify,\n Options,\n Page,\n Screen,\n Track,\n} from '@segment/facade'\nimport { HightouchEvent } from '../core/events'\n\nexport type SegmentFacade = Facade<HightouchEvent> & {\n obj: HightouchEvent\n}\n\nexport function toFacade(\n evt: HightouchEvent,\n options?: Options\n): SegmentFacade {\n let fcd = new Facade(evt, options)\n\n if (evt.type === 'track') {\n fcd = new Track(evt, options)\n }\n\n if (evt.type === 'identify') {\n fcd = new Identify(evt, options)\n }\n\n if (evt.type === 'page') {\n fcd = new Page(evt, options)\n }\n\n if (evt.type === 'alias') {\n fcd = new Alias(evt, options)\n }\n\n if (evt.type === 'group') {\n fcd = new Group(evt, options)\n }\n\n if (evt.type === 'screen') {\n fcd = new Screen(evt, options)\n }\n\n Object.defineProperty(fcd, 'obj', {\n value: evt,\n writable: true,\n })\n\n return fcd as SegmentFacade\n}\n","// Default value will be updated to 'web' in `bundle-umd.ts` for web build.\nlet _version: 'web' | 'npm' = 'npm'\n\nexport function setVersionType(version: typeof _version) {\n _version = version\n}\n\nexport function getVersionType(): typeof _version {\n return _version\n}\n","import { Context, ContextCancelation } from '../../core/context'\nimport { HightouchEvent } from '../../core/events'\nimport { Plugin } from '../../core/plugin'\nimport { SegmentFacade, toFacade } from '../../lib/to-facade'\n\nexport interface MiddlewareParams {\n payload: SegmentFacade\n\n integrations?: HightouchEvent['integrations']\n next: (payload: MiddlewareParams['payload'] | null) => void\n}\n\nexport interface DestinationMiddlewareParams {\n payload: SegmentFacade\n integration: string\n next: (payload: MiddlewareParams['payload'] | null) => void\n}\n\nexport type MiddlewareFunction = (\n middleware: MiddlewareParams\n) => void | Promise<void>\n\nexport type DestinationMiddlewareFunction = (\n middleware: DestinationMiddlewareParams\n) => void | Promise<void>\n\nexport async function applyDestinationMiddleware(\n destination: string,\n evt: HightouchEvent,\n middleware: DestinationMiddlewareFunction[]\n): Promise<HightouchEvent | null> {\n // Clone the event so mutations are localized to a single destination.\n let modifiedEvent = toFacade(evt, {\n clone: true,\n traverse: false,\n }).rawEvent() as HightouchEvent\n async function applyMiddleware(\n event: HightouchEvent,\n fn: DestinationMiddlewareFunction\n ): Promise<HightouchEvent | null> {\n let nextCalled = false\n let returnedEvent: HightouchEvent | null = null\n\n await fn({\n payload: toFacade(event, {\n clone: true,\n traverse: false,\n }),\n integration: destination,\n next(evt) {\n nextCalled = true\n\n if (evt === null) {\n returnedEvent = null\n }\n\n if (evt) {\n returnedEvent = evt.obj\n }\n },\n })\n\n if (!nextCalled && returnedEvent !== null) {\n returnedEvent = returnedEvent as HightouchEvent\n returnedEvent.integrations = {\n ...event.integrations,\n [destination]: false,\n }\n }\n\n return returnedEvent\n }\n\n for (const md of middleware) {\n const result = await applyMiddleware(modifiedEvent, md)\n if (result === null) {\n return null\n }\n modifiedEvent = result\n }\n\n return modifiedEvent\n}\n\nexport function sourceMiddlewarePlugin(\n fn: MiddlewareFunction,\n integrations: HightouchEvent['integrations']\n): Plugin {\n async function apply(ctx: Context): Promise<Context> {\n let nextCalled = false\n\n await fn({\n payload: toFacade(ctx.event, {\n clone: true,\n traverse: false,\n }),\n integrations: integrations ?? {},\n next(evt) {\n nextCalled = true\n if (evt) {\n ctx.event = evt.obj\n }\n },\n })\n\n if (!nextCalled) {\n throw new ContextCancelation({\n retry: false,\n type: 'middleware_cancellation',\n reason: 'Middleware `next` function skipped',\n })\n }\n\n return ctx\n }\n\n return {\n name: `Source Middleware ${fn.name}`,\n type: 'before',\n version: '0.1.0',\n\n isLoaded: (): boolean => true,\n load: (ctx): Promise<Context> => Promise.resolve(ctx),\n\n track: apply,\n page: apply,\n identify: apply,\n alias: apply,\n group: apply,\n }\n}\n","export function pTimeout(promise, timeout) {\n return new Promise(function (resolve, reject) {\n var timeoutId = setTimeout(function () {\n reject(Error('Promise timed out'));\n }, timeout);\n promise\n .then(function (val) {\n clearTimeout(timeoutId);\n return resolve(val);\n })\n .catch(reject);\n });\n}\nexport function sleep(timeoutInMs) {\n return new Promise(function (resolve) { return setTimeout(resolve, timeoutInMs); });\n}\n/**\n * @param ctx\n * @param callback - the function to invoke\n * @param delay - aka \"timeout\". The amount of time in ms to wait before invoking the callback.\n */\nexport function invokeCallback(ctx, callback, delay) {\n var cb = function () {\n try {\n return Promise.resolve(callback(ctx));\n }\n catch (err) {\n return Promise.reject(err);\n }\n };\n return (sleep(delay)\n // pTimeout ensures that the callback can't cause the context to hang\n .then(function () { return pTimeout(cb(), 1000); })\n .catch(function (err) {\n ctx === null || ctx === void 0 ? void 0 : ctx.log('warn', 'Callback Error', { error: err });\n ctx === null || ctx === void 0 ? void 0 : ctx.stats.increment('callback_error');\n })\n .then(function () { return ctx; }));\n}\n//# sourceMappingURL=index.js.map","import { __assign } from \"tslib\";\nvar CoreLogger = /** @class */ (function () {\n function CoreLogger() {\n this._logs = [];\n }\n CoreLogger.prototype.log = function (level, message, extras) {\n var time = new Date();\n this._logs.push({\n level: level,\n message: message,\n time: time,\n extras: extras,\n });\n };\n Object.defineProperty(CoreLogger.prototype, \"logs\", {\n get: function () {\n return this._logs;\n },\n enumerable: false,\n configurable: true\n });\n CoreLogger.prototype.flush = function () {\n if (this.logs.length > 1) {\n var formatted = this._logs.reduce(function (logs, log) {\n var _a;\n var _b, _c;\n var line = __assign(__assign({}, log), { json: JSON.stringify(log.extras, null, ' '), extras: log.extras });\n delete line['time'];\n var key = (_c = (_b = log.time) === null || _b === void 0 ? void 0 : _b.toISOString()) !== null && _c !== void 0 ? _c : '';\n if (logs[key]) {\n key = \"\".concat(key, \"-\").concat(Math.random());\n }\n return __assign(__assign({}, logs), (_a = {}, _a[key] = line, _a));\n }, {});\n // ie doesn't like console.table\n if (console.table) {\n console.table(formatted);\n }\n else {\n console.log(formatted);\n }\n }\n else {\n this.logs.forEach(function (logEntry) {\n var level = logEntry.level, message = logEntry.message, extras = logEntry.extras;\n if (level === 'info' || level === 'debug') {\n console.log(message, extras !== null && extras !== void 0 ? extras : '');\n }\n else {\n console[level](message, extras !== null && extras !== void 0 ? extras : '');\n }\n });\n }\n this._logs = [];\n };\n return CoreLogger;\n}());\nexport { CoreLogger };\n//# sourceMappingURL=index.js.map","import { v4 as uuid } from '@lukeed/uuid';\nimport { dset } from 'dset';\nimport { CoreLogger } from '../logger';\nimport { NullStats } from '../stats';\nvar ContextCancelation = /** @class */ (function () {\n function ContextCancelation(options) {\n var _a, _b, _c;\n this.retry = (_a = options.retry) !== null && _a !== void 0 ? _a : true;\n this.type = (_b = options.type) !== null && _b !== void 0 ? _b : 'plugin Error';\n this.reason = (_c = options.reason) !== null && _c !== void 0 ? _c : '';\n }\n return ContextCancelation;\n}());\nexport { ContextCancelation };\nvar CoreContext = /** @class */ (function () {\n function CoreContext(event, id, stats, logger) {\n if (id === void 0) { id = uuid(); }\n if (stats === void 0) { stats = new NullStats(); }\n if (logger === void 0) { logger = new CoreLogger(); }\n this.attempts = 0;\n this.event = event;\n this._id = id;\n this.logger = logger;\n this.stats = stats;\n }\n CoreContext.system = function () {\n // This should be overridden by the subclass to return an instance of the subclass.\n };\n CoreContext.prototype.isSame = function (other) {\n return other.id === this.id;\n };\n CoreContext.prototype.cancel = function (error) {\n if (error) {\n throw error;\n }\n throw new ContextCancelation({ reason: 'Context Cancel' });\n };\n CoreContext.prototype.log = function (level, message, extras) {\n this.logger.log(level, message, extras);\n };\n Object.defineProperty(CoreContext.prototype, \"id\", {\n get: function () {\n return this._id;\n },\n enumerable: false,\n configurable: true\n });\n CoreContext.prototype.updateEvent = function (path, val) {\n var _a;\n // Don't allow integrations that are set to false to be overwritten with integration settings.\n if (path.split('.')[0] === 'integrations') {\n var integrationName = path.split('.')[1];\n if (((_a = this.event.integrations) === null || _a === void 0 ? void 0 : _a[integrationName]) === false) {\n return this.event;\n }\n }\n dset(this.event, path, val);\n return this.event;\n };\n CoreContext.prototype.failedDelivery = function () {\n return this._failedDelivery;\n };\n CoreContext.prototype.setFailedDelivery = function (options) {\n this._failedDelivery = options;\n };\n CoreContext.prototype.logs = function () {\n return this.logger.logs;\n };\n CoreContext.prototype.flush = function () {\n this.logger.flush();\n this.stats.flush();\n };\n CoreContext.prototype.toJSON = function () {\n return {\n id: this._id,\n event: this.event,\n logs: this.logger.logs,\n metrics: this.stats.metrics,\n };\n };\n return CoreContext;\n}());\nexport { CoreContext };\n//# sourceMappingURL=index.js.map","/**\n * Event Emitter that takes the expected contract as a generic\n * @example\n * ```ts\n * type Contract = {\n * delivery_success: [DeliverySuccessResponse, Metrics],\n * delivery_failure: [DeliveryError]\n * }\n * new Emitter<Contract>()\n * .on('delivery_success', (res, metrics) => ...)\n * .on('delivery_failure', (err) => ...)\n * ```\n */\nvar Emitter = /** @class */ (function () {\n function Emitter() {\n this.callbacks = {};\n }\n Emitter.prototype.on = function (event, callback) {\n if (!this.callbacks[event]) {\n this.callbacks[event] = [callback];\n }\n else {\n this.callbacks[event].push(callback);\n }\n return this;\n };\n Emitter.prototype.once = function (event, callback) {\n var _this = this;\n var on = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this.off(event, on);\n callback.apply(_this, args);\n };\n this.on(event, on);\n return this;\n };\n Emitter.prototype.off = function (event, callback) {\n var _a;\n var fns = (_a = this.callbacks[event]) !== null && _a !== void 0 ? _a : [];\n var without = fns.filter(function (fn) { return fn !== callback; });\n this.callbacks[event] = without;\n return this;\n };\n Emitter.prototype.emit = function (event) {\n var _this = this;\n var _a;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var callbacks = (_a = this.callbacks[event]) !== null && _a !== void 0 ? _a : [];\n callbacks.forEach(function (callback) {\n callback.apply(_this, args);\n });\n return this;\n };\n return Emitter;\n}());\nexport { Emitter };\n//# sourceMappingURL=index.js.map","import { __extends } from \"tslib\";\nimport { Emitter } from '../emitter';\nimport { backoff } from './backoff';\n/**\n * @internal\n */\nexport var ON_REMOVE_FROM_FUTURE = 'onRemoveFromFuture';\nvar PriorityQueue = /** @class */ (function (_super) {\n __extends(PriorityQueue, _super);\n function PriorityQueue(maxAttempts, queue, seen) {\n var _this = _super.call(this) || this;\n _this.future = [];\n _this.maxAttempts = maxAttempts;\n _this.queue = queue;\n _this.seen = seen !== null && seen !== void 0 ? seen : {};\n return _this;\n }\n PriorityQueue.prototype.push = function () {\n var _this = this;\n var items = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n items[_i] = arguments[_i];\n }\n var accepted = items.map(function (operation) {\n var attempts = _this.updateAttempts(operation);\n if (attempts > _this.maxAttempts || _this.includes(operation)) {\n return false;\n }\n _this.queue.push(operation);\n return true;\n });\n this.queue = this.queue.sort(function (a, b) { return _this.getAttempts(a) - _this.getAttempts(b); });\n return accepted;\n };\n PriorityQueue.prototype.pushWithBackoff = function (item) {\n var _this = this;\n if (this.getAttempts(item) === 0) {\n return this.push(item)[0];\n }\n var attempt = this.updateAttempts(item);\n if (attempt > this.maxAttempts || this.includes(item)) {\n return false;\n }\n var timeout = backoff({ attempt: attempt - 1 });\n setTimeout(function () {\n _this.queue.push(item);\n // remove from future list\n _this.future = _this.future.filter(function (f) { return f.id !== item.id; });\n // Lets listeners know that a 'future' message is now available in the queue\n _this.emit(ON_REMOVE_FROM_FUTURE);\n }, timeout);\n this.future.push(item);\n return true;\n };\n PriorityQueue.prototype.getAttempts = function (item) {\n var _a;\n return (_a = this.seen[item.id]) !== null && _a !== void 0 ? _a : 0;\n };\n PriorityQueue.prototype.updateAttempts = function (item) {\n this.seen[item.id] = this.getAttempts(item) + 1;\n return this.getAttempts(item);\n };\n PriorityQueue.prototype.includes = function (item) {\n return (this.queue.includes(item) ||\n this.future.includes(item) ||\n Boolean(this.queue.find(function (i) { return i.id === item.id; })) ||\n Boolean(this.future.find(function (i) { return i.id === item.id; })));\n };\n PriorityQueue.prototype.pop = function () {\n return this.queue.shift();\n };\n Object.defineProperty(PriorityQueue.prototype, \"length\", {\n get: function () {\n return this.queue.length;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PriorityQueue.prototype, \"todo\", {\n get: function () {\n return this.queue.length + this.future.length;\n },\n enumerable: false,\n configurable: true\n });\n return PriorityQueue;\n}(Emitter));\nexport { PriorityQueue };\n//# sourceMappingURL=index.js.map","export function backoff(params) {\n var random = Math.random() + 1;\n var _a = params.minTimeout, minTimeout = _a === void 0 ? 500 : _a, _b = params.factor, factor = _b === void 0 ? 2 : _b, attempt = params.attempt, _c = params.maxTimeout, maxTimeout = _c === void 0 ? Infinity : _c;\n return Math.min(random * minTimeout * Math.pow(factor, attempt), maxTimeout);\n}\n//# sourceMappingURL=backoff.js.map","import { __awaiter, __generator } from \"tslib\";\nimport { CoreContext, ContextCancelation } from '../context';\nfunction tryAsync(fn) {\n return __awaiter(this, void 0, void 0, function () {\n var err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, , 3]);\n return [4 /*yield*/, fn()];\n case 1: return [2 /*return*/, _a.sent()];\n case 2:\n err_1 = _a.sent();\n return [2 /*return*/, Promise.reject(err_1)];\n case 3: return [2 /*return*/];\n }\n });\n });\n}\nexport function attempt(ctx, plugin) {\n ctx.log('debug', 'plugin', { plugin: plugin.name });\n var start = new Date().getTime();\n var hook = plugin[ctx.event.type];\n if (hook === undefined) {\n return Promise.resolve(ctx);\n }\n var newCtx = tryAsync(function () { return hook.apply(plugin, [ctx]); })\n .then(function (ctx) {\n var done = new Date().getTime() - start;\n ctx.stats.gauge('plugin_time', done, [\"plugin:\".concat(plugin.name)]);\n return ctx;\n })\n .catch(function (err) {\n if (err instanceof ContextCancelation &&\n err.type === 'middleware_cancellation') {\n throw err;\n }\n if (err instanceof ContextCancelation) {\n ctx.log('warn', err.type, {\n plugin: plugin.name,\n error: err,\n });\n return err;\n }\n ctx.log('error', 'plugin Error', {\n plugin: plugin.name,\n error: err,\n });\n ctx.stats.increment('plugin_error', 1, [\"plugin:\".concat(plugin.name)]);\n return err;\n });\n return newCtx;\n}\nexport function ensure(ctx, plugin) {\n return attempt(ctx, plugin).then(function (newContext) {\n if (newContext instanceof CoreContext) {\n return newContext;\n }\n ctx.log('debug', 'Context canceled');\n ctx.stats.increment('context_canceled');\n ctx.cancel(newContext);\n });\n}\n//# sourceMappingURL=delivery.js.map","import { __assign, __extends } from \"tslib\";\nvar compactMetricType = function (type) {\n var enums = {\n gauge: 'g',\n counter: 'c',\n };\n return enums[type];\n};\nvar CoreStats = /** @class */ (function () {\n function CoreStats() {\n this.metrics = [];\n }\n CoreStats.prototype.increment = function (metric, by, tags) {\n if (by === void 0) { by = 1; }\n this.metrics.push({\n metric: metric,\n value: by,\n tags: tags !== null && tags !== void 0 ? tags : [],\n type: 'counter',\n timestamp: Date.now(),\n });\n };\n CoreStats.prototype.gauge = function (metric, value, tags) {\n this.metrics.push({\n metric: metric,\n value: value,\n tags: tags !== null && tags !== void 0 ? tags : [],\n type: 'gauge',\n timestamp: Date.now(),\n });\n };\n CoreStats.prototype.flush = function () {\n var formatted = this.metrics.map(function (m) { return (__assign(__assign({}, m), { tags: m.tags.join(',') })); });\n // ie doesn't like console.table\n if (console.table) {\n console.table(formatted);\n }\n else {\n console.log(formatted);\n }\n this.metrics = [];\n };\n /**\n * compact keys for smaller payload\n */\n CoreStats.prototype.serialize = function () {\n return this.metrics.map(function (m) {\n return {\n m: m.metric,\n v: m.value,\n t: m.tags,\n k: compactMetricType(m.type),\n e: m.timestamp,\n };\n });\n };\n return CoreStats;\n}());\nexport { CoreStats };\nvar NullStats = /** @class */ (function (_super) {\n __extends(NullStats, _super);\n function NullStats() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NullStats.prototype.gauge = function () {\n var _args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n _args[_i] = arguments[_i];\n }\n };\n NullStats.prototype.increment = function () {\n var _args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n _args[_i] = arguments[_i];\n }\n };\n NullStats.prototype.flush = function () {\n var _args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n _args[_i] = arguments[_i];\n }\n };\n NullStats.prototype.serialize = function () {\n var _args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n _args[_i] = arguments[_i];\n }\n return [];\n };\n return NullStats;\n}(CoreStats));\nexport { NullStats };\n//# sourceMappingURL=index.js.map","export function isString(obj) {\n return typeof obj === 'string';\n}\nexport function isNumber(obj) {\n return typeof obj === 'number';\n}\nexport function isFunction(obj) {\n return typeof obj === 'function';\n}\nexport function exists(val) {\n return val !== undefined && val !== null;\n}\nexport function isPlainObject(obj) {\n return (Object.prototype.toString.call(obj).slice(8, -1).toLowerCase() === 'object');\n}\n//# sourceMappingURL=helpers.js.map","var IDX=256, HEX=[], BUFFER;\nwhile (IDX--) HEX[IDX] = (IDX + 256).toString(16).substring(1);\n\nexport function v4() {\n\tvar i=0, num, out='';\n\n\tif (!BUFFER || ((IDX + 16) > 256)) {\n\t\tBUFFER = Array(i=256);\n\t\twhile (i--) BUFFER[i] = 256 * Math.random() | 0;\n\t\ti = IDX = 0;\n\t}\n\n\tfor (; i < 16; i++) {\n\t\tnum = BUFFER[IDX + i];\n\t\tif (i==6) out += HEX[num & 15 | 64];\n\t\telse if (i==8) out += HEX[num & 63 | 128];\n\t\telse out += HEX[num];\n\n\t\tif (i & 1 && i > 1 && i < 11) out += '-';\n\t}\n\n\tIDX++;\n\treturn out;\n}\n","export function dset(obj, keys, val) {\n\tkeys.split && (keys=keys.split('.'));\n\tvar i=0, l=keys.length, t=obj, x, k;\n\twhile (i < l) {\n\t\tk = ''+keys[i++];\n\t\tif (k === '__proto__' || k === 'constructor' || k === 'prototype') break;\n\t\tt = t[k] = (i === l) ? val : (typeof(x=t[k])===typeof(keys)) ? x : (keys[i]*0 !== 0 || !!~(''+keys[i]).indexOf('.')) ? {} : [];\n\t}\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + ({\"10\":\"tsub-middleware\",\"50\":\"ajs-destination\",\"104\":\"schemaFilter\",\"248\":\"auto-track\",\"391\":\"google-tag-manager\",\"521\":\"remoteMiddleware\",\"538\":\"queryString\",\"666\":\"gtag\",\"694\":\"legacyVideos\",\"734\":\"facebook-params\",\"838\":\"meta-param-builder\"}[chunkId] || chunkId) + \".bundle.\" + {\"10\":\"b717b62fe947259b0454\",\"50\":\"b5407b09b321c1d47d7c\",\"104\":\"babb6cdbe396c20dc88f\",\"248\":\"68ce13c2007188a9368d\",\"391\":\"5dbd0ff300a5c429a406\",\"407\":\"5cd2d2d625cfaa9e2f6e\",\"521\":\"9945b0dd526dedecf614\",\"538\":\"b86b3b6ef44fbbb98ec4\",\"666\":\"fa18b007fc2891339158\",\"694\":\"d1d6291274937f505b12\",\"734\":\"bc6597a53dc18e288950\",\"838\":\"aab3a6e0c91673752d5a\"}[chunkId] + \".js\";\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t57: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_ht_sdks_events_sdk_js_browser\"] = self[\"webpackChunk_ht_sdks_events_sdk_js_browser\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","/**\n * Returns `process.env` if it is available in the environment.\n * Always returns an object make it similarly easy to use as `process.env`.\n */\nexport function getProcessEnv(): { [key: string]: string | undefined } {\n if (typeof process === 'undefined' || !process.env) {\n return {}\n }\n\n return process.env\n}\n","import {\n isFunction,\n isPlainObject,\n isString,\n isNumber,\n} from '@ht-sdks/events-sdk-js-core'\nimport { Context } from '../context'\nimport {\n Callback,\n JSONObject,\n Options,\n EventProperties,\n HightouchEvent,\n Traits,\n GroupTraits,\n UserTraits,\n} from '../events'\nimport { ID, User } from '../user'\n\n/**\n * Helper for the track method\n */\nexport function resolveArguments(\n eventName: string | HightouchEvent,\n properties?: EventProperties | Callback,\n options?: Options | Callback,\n callback?: Callback\n): [string, EventProperties | Callback, Options, Callback | undefined] {\n const args = [eventName, properties, options, callback]\n\n const name = isPlainObject(eventName) ? eventName.event : eventName\n if (!name || !isString(name)) {\n throw new Error('Event missing')\n }\n\n const data = isPlainObject(eventName)\n ? (eventName.properties ?? {})\n : isPlainObject(properties)\n ? properties\n : {}\n\n let opts: Options = {}\n if (!isFunction(options)) {\n opts = options ?? {}\n }\n\n if (isPlainObject(eventName) && !isFunction(properties)) {\n opts = properties ?? {}\n }\n\n const cb = args.find(isFunction) as Callback | undefined\n return [name, data, opts, cb]\n}\n\n/**\n * Helper for page, screen methods\n */\nexport function resolvePageArguments(\n category?: string | object,\n name?: string | object | Callback,\n properties?: EventProperties | Options | Callback | null,\n options?: Options | Callback,\n callback?: Callback\n): [\n string | null,\n string | null,\n EventProperties,\n Options,\n Callback | undefined,\n] {\n let resolvedCategory: string | undefined | null = null\n let resolvedName: string | undefined | null = null\n const args = [category, name, properties, options, callback]\n\n const strings = args.filter(isString)\n if (strings[0] !== undefined && strings[1] !== undefined) {\n resolvedCategory = strings[0]\n resolvedName = strings[1]\n }\n\n if (strings.length === 1) {\n resolvedCategory = null\n resolvedName = strings[0]\n }\n\n const resolvedCallback = args.find(isFunction) as Callback | undefined\n\n const objects = args.filter((obj) => {\n if (resolvedName === null) {\n return isPlainObject(obj)\n }\n return isPlainObject(obj) || obj === null\n }) as Array<JSONObject | null>\n\n const resolvedProperties = (objects[0] ?? {}) as EventProperties\n const resolvedOptions = (objects[1] ?? {}) as Options\n\n return [\n resolvedCategory,\n resolvedName,\n resolvedProperties,\n resolvedOptions,\n resolvedCallback,\n ]\n}\n\n/**\n * Helper for group, identify methods\n */\nexport const resolveUserArguments = <T extends Traits, U extends User>(\n user: U\n): ResolveUser<T> => {\n return (...args): ReturnType<ResolveUser<T>> => {\n const values: {\n id?: ID\n traits?: T | null\n options?: Options\n callback?: Callback\n } = {}\n // It's a stack so it's reversed so that we go through each of the expected arguments\n const orderStack: Array<keyof typeof values> = [\n 'callback',\n 'options',\n 'traits',\n 'id',\n ]\n\n // Read each argument and eval the possible values here\n for (const arg of args) {\n let current = orderStack.pop()\n if (current === 'id') {\n if (isString(arg) || isNumber(arg)) {\n values.id = arg.toString()\n continue\n }\n if (arg === null || arg === undefined) {\n continue\n }\n // First argument should always be the id, if it is not a valid value we can skip it\n current = orderStack.pop()\n }\n\n // Traits and Options\n if (\n (current === 'traits' || current === 'options') &&\n (arg === null || arg === undefined || isPlainObject(arg))\n ) {\n values[current] = arg as T\n }\n\n // Callback\n if (isFunction(arg)) {\n values.callback = arg as Callback\n break // This is always the last argument\n }\n }\n\n return [\n values.id ?? user.id(),\n (values.traits ?? {}) as T,\n values.options ?? {},\n values.callback,\n ]\n }\n}\n\n/**\n * Helper for alias method\n */\nexport function resolveAliasArguments(\n to: string | number,\n from?: string | number | Options,\n options?: Options | Callback,\n callback?: Callback\n): [string, string | null, Options, Callback | undefined] {\n if (isNumber(to)) to = to.toString() // Legacy behaviour - allow integers for alias calls\n if (isNumber(from)) from = from.toString()\n const args = [to, from, options, callback]\n\n const [aliasTo = to, aliasFrom = null] = args.filter(isString)\n const [opts = {}] = args.filter(isPlainObject)\n const resolvedCallback = args.find(isFunction) as Callback | undefined\n\n return [aliasTo, aliasFrom, opts, resolvedCallback]\n}\n\ntype ResolveUser<T extends Traits> = (\n id?: ID | object,\n traits?: T | Callback | null,\n options?: Options | Callback,\n callback?: Callback\n) => [ID, T, Options, Callback | undefined]\n\nexport type IdentifyParams = Parameters<ResolveUser<UserTraits>>\nexport type GroupParams = Parameters<ResolveUser<GroupTraits>>\nexport type EventParams = Parameters<typeof resolveArguments>\nexport type PageParams = Parameters<typeof resolvePageArguments>\nexport type AliasParams = Parameters<typeof resolveAliasArguments>\n\nexport type DispatchedEvent = Context\n","import { __awaiter, __generator } from \"tslib\";\nimport { invokeCallback } from '../callback';\n/* The amount of time in ms to wait before invoking the callback. */\nexport var getDelay = function (startTimeInEpochMS, timeoutInMS) {\n var elapsedTime = Date.now() - startTimeInEpochMS;\n // increasing the timeout increases the delay by almost the same amount -- this is weird legacy behavior.\n return Math.max((timeoutInMS !== null && timeoutInMS !== void 0 ? timeoutInMS : 300) - elapsedTime, 0);\n};\n/**\n * Push an event into the dispatch queue and invoke any callbacks.\n *\n * @param event - Hightouch event to enqueue.\n * @param queue - Queue to dispatch against.\n * @param emitter - This is typically an instance of \"Analytics\" -- used for metrics / progress information.\n * @param options\n */\nexport function dispatch(ctx, queue, emitter, options) {\n return __awaiter(this, void 0, void 0, function () {\n var startTime, dispatched;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n emitter.emit('dispatch_start', ctx);\n startTime = Date.now();\n if (!queue.isEmpty()) return [3 /*break*/, 2];\n return [4 /*yield*/, queue.dispatchSingle(ctx)];\n case 1:\n dispatched = _a.sent();\n return [3 /*break*/, 4];\n case 2: return [4 /*yield*/, queue.dispatch(ctx)];\n case 3:\n dispatched = _a.sent();\n _a.label = 4;\n case 4:\n if (!(options === null || options === void 0 ? void 0 : options.callback)) return [3 /*break*/, 6];\n return [4 /*yield*/, invokeCallback(dispatched, options.callback, getDelay(startTime, options.timeout))];\n case 5:\n dispatched = _a.sent();\n _a.label = 6;\n case 6:\n if (options === null || options === void 0 ? void 0 : options.debug) {\n dispatched.flush();\n }\n return [2 /*return*/, dispatched];\n }\n });\n });\n}\n//# sourceMappingURL=dispatch.js.map","import { isPlainObject } from '@ht-sdks/events-sdk-js-core'\n\n/**\n * Final Page Context object expected in the Hightouch Event context\n */\nexport interface PageContext {\n path: string\n referrer: string\n search: string\n title: string\n url: string\n}\n\ntype CanonicalUrl = string | undefined\n\nexport const BufferedPageContextDiscriminant = 'bpc' as const\n/**\n * Page Context expected to be built by the snippet.\n * Note: The key names are super short because we want to keep the strings in the html snippet short to save bytes.\n */\nexport interface BufferedPageContext {\n __t: typeof BufferedPageContextDiscriminant // for extra uniqeness\n c: CanonicalUrl\n p: PageContext['path']\n u: PageContext['url']\n s: PageContext['search']\n t: PageContext['title']\n r: PageContext['referrer']\n}\n\n/**\n * `BufferedPageContext` object builder\n */\nexport const createBufferedPageContext = (\n url: string,\n canonicalUrl: CanonicalUrl,\n search: string,\n path: string,\n title: string,\n referrer: string\n): BufferedPageContext => ({\n __t: BufferedPageContextDiscriminant,\n c: canonicalUrl,\n p: path,\n u: url,\n s: search,\n t: title,\n r: referrer,\n})\n\n// my clever/dubious way of making sure this type guard does not get out sync with the type definition\nconst BUFFERED_PAGE_CONTEXT_KEYS = Object.keys(\n createBufferedPageContext('', '', '', '', '', '')\n) as (keyof BufferedPageContext)[]\n\nexport function isBufferedPageContext(\n bufferedPageCtx: unknown\n): bufferedPageCtx is BufferedPageContext {\n if (!isPlainObject(bufferedPageCtx)) return false\n if (bufferedPageCtx.__t !== BufferedPageContextDiscriminant) return false\n\n // ensure obj has all the keys we expect, and none we don't.\n for (const k in bufferedPageCtx) {\n if (!BUFFERED_PAGE_CONTEXT_KEYS.includes(k as keyof BufferedPageContext)) {\n return false\n }\n }\n return true\n}\n\n// Legacy logic: we are we appending search parameters to the canonical URL -- I guess the canonical URL is \"not canonical enough\" (lol)\nconst createCanonicalURL = (canonicalUrl: string, searchParams: string) => {\n return canonicalUrl.indexOf('?') > -1\n ? canonicalUrl\n : canonicalUrl + searchParams\n}\n\n/**\n * Strips hash from URL.\n * http://www.hightouch.local#test -> http://www.hightouch.local\n */\nconst removeHash = (href: string) => {\n const hashIdx = href.indexOf('#')\n return hashIdx === -1 ? href : href.slice(0, hashIdx)\n}\n\nconst parseCanonicalPath = (canonicalUrl: string): string => {\n try {\n return new URL(canonicalUrl).pathname\n } catch (_e) {\n // this is classic behavior -- we assume that if the canonical URL is invalid, it's a raw path.\n return canonicalUrl[0] === '/' ? canonicalUrl : '/' + canonicalUrl\n }\n}\n\n/**\n * Create a `PageContext` from a `BufferedPageContext`.\n * `BufferedPageContext` keys are minified to save bytes in the snippet.\n */\nexport const createPageContext = ({\n c: canonicalUrl,\n p: pathname,\n s: search,\n u: url,\n r: referrer,\n t: title,\n}: BufferedPageContext): PageContext => {\n const newPath = canonicalUrl ? parseCanonicalPath(canonicalUrl) : pathname\n const newUrl = canonicalUrl\n ? createCanonicalURL(canonicalUrl, search)\n : removeHash(url)\n return {\n path: newPath,\n referrer,\n search,\n title,\n url: newUrl,\n }\n}\n\n/**\n * Get page properties from the browser window/document.\n */\nexport const getDefaultBufferedPageContext = (): BufferedPageContext => {\n const c = document.querySelector(\"link[rel='canonical']\")\n return createBufferedPageContext(\n location.href,\n (c && c.getAttribute('href')) || undefined,\n location.search,\n location.pathname,\n document.title,\n document.referrer\n )\n}\n\n/**\n * Get page properties from the browser window/document.\n */\nexport const getDefaultPageContext = (): PageContext =>\n createPageContext(getDefaultBufferedPageContext())\n","import { pick } from '../../lib/pick'\nimport { EventProperties, HightouchEvent } from '../events'\nimport { getDefaultPageContext } from './get-page-context'\n\n/**\n * Augments an event with information about the current page.\n * Page information like URL changes frequently, so this is meant to be captured as close to the event call as possible.\n * Things like `userAgent` do not change, so they can be added later in the flow.\n * We prefer not to add this information to this function, as it increases the main bundle size.\n */\nexport const addPageContext = (\n event: HightouchEvent,\n pageCtx = getDefaultPageContext()\n): void => {\n const evtCtx = event.context! // Context should be set earlier in the flow\n let pageContextFromEventProps: Pick<EventProperties, string> | undefined\n if (event.type === 'page') {\n pageContextFromEventProps =\n event.properties && pick(event.properties, Object.keys(pageCtx))\n\n event.properties = {\n ...pageCtx,\n ...event.properties,\n ...(event.name ? { name: event.name } : {}),\n }\n }\n\n evtCtx.page = {\n ...pageCtx,\n ...pageContextFromEventProps,\n ...evtCtx.page,\n }\n}\n","export function pick<T extends Record<string, any>, K extends keyof T>(\n object: T,\n keys: readonly K[]\n): Pick<T, K>\n\nexport function pick<T extends Record<string, any>>(\n object: T,\n keys: string[]\n): Partial<T>\n\n/**\n * @example\n * pick({ 'a': 1, 'b': '2', 'c': 3 }, ['a', 'c'])\n * => { 'a': 1, 'c': 3 }\n */\nexport function pick<T extends Record<string, any>, K extends keyof T>(\n object: T,\n keys: string[] | K[] | readonly K[]\n) {\n return Object.assign(\n {},\n ...keys.map((key) => {\n if (object && Object.prototype.hasOwnProperty.call(object, key)) {\n return { [key]: object[key] }\n }\n })\n )\n}\n","import { v4 as uuid } from '@lukeed/uuid'\nimport { dset } from 'dset'\nimport { ID, User } from '../user'\nimport {\n Options,\n Integrations,\n EventProperties,\n Traits,\n HightouchEvent,\n} from './interfaces'\nimport md5 from 'spark-md5'\nimport { addPageContext, PageContext } from '../page'\n\nexport * from './interfaces'\n\nexport class EventFactory {\n constructor(public user: User) {}\n\n track(\n event: string,\n properties?: EventProperties,\n options?: Options,\n globalIntegrations?: Integrations,\n pageCtx?: PageContext\n ): HightouchEvent {\n return this.normalize(\n {\n ...this.baseEvent(),\n event,\n type: 'track' as const,\n properties,\n options: { ...options },\n integrations: { ...globalIntegrations },\n },\n pageCtx\n )\n }\n\n page(\n category: string | null,\n page: string | null,\n properties?: EventProperties,\n options?: Options,\n globalIntegrations?: Integrations,\n pageCtx?: PageContext\n ): HightouchEvent {\n const event: Partial<HightouchEvent> = {\n type: 'page' as const,\n properties: { ...properties },\n options: { ...options },\n integrations: { ...globalIntegrations },\n }\n\n if (category !== null) {\n event.category = category\n event.properties = event.properties ?? {}\n event.properties.category = category\n }\n\n if (page !== null) {\n event.name = page\n }\n\n return this.normalize(\n {\n ...this.baseEvent(),\n ...event,\n } as HightouchEvent,\n pageCtx\n )\n }\n\n screen(\n category: string | null,\n screen: string | null,\n properties?: EventProperties,\n options?: Options,\n globalIntegrations?: Integrations,\n pageCtx?: PageContext\n ): HightouchEvent {\n const event: Partial<HightouchEvent> = {\n type: 'screen' as const,\n properties: { ...properties },\n options: { ...options },\n integrations: { ...globalIntegrations },\n }\n\n if (category !== null) {\n event.category = category\n }\n\n if (screen !== null) {\n event.name = screen\n }\n return this.normalize(\n {\n ...this.baseEvent(),\n ...event,\n } as HightouchEvent,\n pageCtx\n )\n }\n\n identify(\n userId: ID,\n traits?: Traits,\n options?: Options,\n globalIntegrations?: Integrations,\n pageCtx?: PageContext\n ): HightouchEvent {\n return this.normalize(\n {\n ...this.baseEvent(),\n type: 'identify' as const,\n userId,\n traits,\n options: { ...options },\n integrations: { ...globalIntegrations },\n },\n pageCtx\n )\n }\n\n group(\n groupId: ID,\n traits?: Traits,\n options?: Options,\n globalIntegrations?: Integrations,\n pageCtx?: PageContext\n ): HightouchEvent {\n return this.normalize(\n {\n ...this.baseEvent(),\n type: 'group' as const,\n traits,\n options: { ...options },\n integrations: { ...globalIntegrations },\n groupId,\n },\n pageCtx\n )\n }\n\n alias(\n to: string,\n from: string | null,\n options?: Options,\n globalIntegrations?: Integrations,\n pageCtx?: PageContext\n ): HightouchEvent {\n const base: Partial<HightouchEvent> = {\n userId: to,\n type: 'alias' as const,\n options: { ...options },\n integrations: { ...globalIntegrations },\n }\n\n if (from !== null) {\n base.previousId = from\n }\n\n if (to === undefined) {\n return this.normalize({\n ...base,\n ...this.baseEvent(),\n } as HightouchEvent)\n }\n\n return this.normalize(\n {\n ...this.baseEvent(),\n ...base,\n } as HightouchEvent,\n pageCtx\n )\n }\n\n private baseEvent(): Partial<HightouchEvent> {\n const base: Partial<HightouchEvent> = {\n integrations: {},\n options: {},\n }\n\n const user = this.user\n\n if (user.id()) {\n base.userId = user.id()\n }\n\n if (user.anonymousId()) {\n base.anonymousId = user.anonymousId()\n }\n\n return base\n }\n\n /**\n * Builds the context part of an event based on \"foreign\" keys that\n * are provided in the `Options` parameter for an Event\n */\n private context(event: HightouchEvent): [object, object] {\n const optionsKeys = ['integrations', 'anonymousId', 'timestamp', 'userId']\n\n const options = event.options ?? {}\n delete options['integrations']\n\n const providedOptionsKeys = Object.keys(options)\n\n const context = event.options?.context ?? {}\n const overrides = {}\n\n providedOptionsKeys.forEach((key) => {\n if (key === 'context') {\n return\n }\n\n if (optionsKeys.includes(key)) {\n dset(overrides, key, options[key])\n } else {\n dset(context, key, options[key])\n }\n })\n\n return [context, overrides]\n }\n\n public normalize(\n event: HightouchEvent,\n pageCtx?: PageContext\n ): HightouchEvent {\n // set anonymousId globally if we encounter an override\n event.options?.anonymousId &&\n this.user.anonymousId(event.options.anonymousId)\n\n const integrationBooleans = Object.keys(event.integrations ?? {}).reduce(\n (integrationNames, name) => {\n return {\n ...integrationNames,\n [name]: Boolean(event.integrations?.[name]),\n }\n },\n {} as Record<string, boolean>\n )\n\n // This is pretty trippy, but here's what's going on:\n // - a) We don't pass initial integration options as part of the event, only if they're true or false\n // - b) We do accept per integration overrides (like integrations.Amplitude.sessionId) at the event level\n // Hence the need to convert base integration options to booleans, but maintain per event integration overrides\n const allIntegrations = {\n // Base config integrations object as booleans\n ...integrationBooleans,\n\n // Per event overrides, for things like amplitude sessionId, for example\n ...event.options?.integrations,\n }\n\n const [context, overrides] = this.context(event)\n const { options, ...rest } = event\n\n const newEvent: HightouchEvent = {\n timestamp: new Date(),\n ...rest,\n context,\n integrations: allIntegrations,\n ...overrides,\n messageId: md5.hash(JSON.stringify(event) + uuid()),\n }\n addPageContext(newEvent, pageCtx)\n\n const session = this.user.getAndUpdateSession()\n if (session != null) {\n newEvent.context = {\n ...newEvent.context,\n ...session,\n }\n }\n\n return newEvent\n }\n}\n","import { __awaiter, __extends, __generator } from \"tslib\";\nimport { groupBy } from '../utils/group-by';\nimport { ON_REMOVE_FROM_FUTURE } from '../priority-queue';\nimport { CoreContext, ContextCancelation } from '../context';\nimport { Emitter } from '../emitter';\nimport { createTaskGroup } from '../task/task-group';\nimport { attempt, ensure } from './delivery';\nvar CoreEventQueue = /** @class */ (function (_super) {\n __extends(CoreEventQueue, _super);\n function CoreEventQueue(priorityQueue) {\n var _this = _super.call(this) || this;\n /**\n * All event deliveries get suspended until all the tasks in this task group are complete.\n * For example: a middleware that augments the event object should be loaded safely as a\n * critical task, this way, event queue will wait for it to be ready before sending events.\n *\n * This applies to all the events already in the queue, and the upcoming ones\n */\n _this.criticalTasks = createTaskGroup();\n _this.plugins = [];\n _this.failedInitializations = [];\n _this.flushing = false;\n _this.queue = priorityQueue;\n _this.queue.on(ON_REMOVE_FROM_FUTURE, function () {\n _this.scheduleFlush(0);\n });\n return _this;\n }\n CoreEventQueue.prototype.register = function (ctx, plugin, instance) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, Promise.resolve(plugin.load(ctx, instance))\n .then(function () {\n _this.plugins.push(plugin);\n })\n .catch(function (err) {\n if (plugin.type === 'destination') {\n _this.failedInitializations.push(plugin.name);\n console.warn(plugin.name, err);\n ctx.log('warn', 'Failed to load destination', {\n plugin: plugin.name,\n error: err,\n });\n return;\n }\n throw err;\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n CoreEventQueue.prototype.deregister = function (ctx, plugin, instance) {\n return __awaiter(this, void 0, void 0, function () {\n var e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 3, , 4]);\n if (!plugin.unload) return [3 /*break*/, 2];\n return [4 /*yield*/, Promise.resolve(plugin.unload(ctx, instance))];\n case 1:\n _a.sent();\n _a.label = 2;\n case 2:\n this.plugins = this.plugins.filter(function (p) { return p.name !== plugin.name; });\n return [3 /*break*/, 4];\n case 3:\n e_1 = _a.sent();\n ctx.log('warn', 'Failed to unload destination', {\n plugin: plugin.name,\n error: e_1,\n });\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n CoreEventQueue.prototype.dispatch = function (ctx) {\n return __awaiter(this, void 0, void 0, function () {\n var willDeliver;\n return __generator(this, function (_a) {\n ctx.log('debug', 'Dispatching');\n ctx.stats.increment('message_dispatched');\n this.queue.push(ctx);\n willDeliver = this.subscribeToDelivery(ctx);\n this.scheduleFlush(0);\n return [2 /*return*/, willDeliver];\n });\n });\n };\n CoreEventQueue.prototype.subscribeToDelivery = function (ctx) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve) {\n var onDeliver = function (flushed, delivered) {\n if (flushed.isSame(ctx)) {\n _this.off('flush', onDeliver);\n if (delivered) {\n resolve(flushed);\n }\n else {\n resolve(flushed);\n }\n }\n };\n _this.on('flush', onDeliver);\n })];\n });\n });\n };\n CoreEventQueue.prototype.dispatchSingle = function (ctx) {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n ctx.log('debug', 'Dispatching');\n ctx.stats.increment('message_dispatched');\n this.queue.updateAttempts(ctx);\n ctx.attempts = 1;\n return [2 /*return*/, this.deliver(ctx).catch(function (err) {\n var accepted = _this.enqueuRetry(err, ctx);\n if (!accepted) {\n ctx.setFailedDelivery({ reason: err });\n return ctx;\n }\n return _this.subscribeToDelivery(ctx);\n })];\n });\n });\n };\n CoreEventQueue.prototype.isEmpty = function () {\n return this.queue.length === 0;\n };\n CoreEventQueue.prototype.scheduleFlush = function (timeout) {\n var _this = this;\n if (timeout === void 0) { timeout = 500; }\n if (this.flushing) {\n return;\n }\n this.flushing = true;\n setTimeout(function () {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n _this.flush().then(function () {\n setTimeout(function () {\n _this.flushing = false;\n if (_this.queue.length) {\n _this.scheduleFlush(0);\n }\n }, 0);\n });\n }, timeout);\n };\n CoreEventQueue.prototype.deliver = function (ctx) {\n return __awaiter(this, void 0, void 0, function () {\n var start, done, err_1, error;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.criticalTasks.done()];\n case 1:\n _a.sent();\n start = Date.now();\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 5]);\n return [4 /*yield*/, this.flushOne(ctx)];\n case 3:\n ctx = _a.sent();\n done = Date.now() - start;\n this.emit('delivery_success', ctx);\n ctx.stats.gauge('delivered', done);\n ctx.log('debug', 'Delivered', ctx.event);\n return [2 /*return*/, ctx];\n case 4:\n err_1 = _a.sent();\n error = err_1;\n ctx.log('error', 'Failed to deliver', error);\n this.emit('delivery_failure', ctx, error);\n ctx.stats.increment('delivery_failed');\n throw err_1;\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n CoreEventQueue.prototype.enqueuRetry = function (err, ctx) {\n var retriable = !(err instanceof ContextCancelation) || err.retry;\n if (!retriable) {\n return false;\n }\n return this.queue.pushWithBackoff(ctx);\n };\n CoreEventQueue.prototype.flush = function () {\n return __awaiter(this, void 0, void 0, function () {\n var ctx, err_2, accepted;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.queue.length === 0) {\n return [2 /*return*/, []];\n }\n ctx = this.queue.pop();\n if (!ctx) {\n return [2 /*return*/, []];\n }\n ctx.attempts = this.queue.getAttempts(ctx);\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.deliver(ctx)];\n case 2:\n ctx = _a.sent();\n this.emit('flush', ctx, true);\n return [3 /*break*/, 4];\n case 3:\n err_2 = _a.sent();\n accepted = this.enqueuRetry(err_2, ctx);\n if (!accepted) {\n ctx.setFailedDelivery({ reason: err_2 });\n this.emit('flush', ctx, false);\n }\n return [2 /*return*/, []];\n case 4: return [2 /*return*/, [ctx]];\n }\n });\n });\n };\n CoreEventQueue.prototype.isReady = function () {\n // return this.plugins.every((p) => p.isLoaded())\n // should we wait for every plugin to load?\n return true;\n };\n CoreEventQueue.prototype.availableExtensions = function (denyList) {\n var available = this.plugins.filter(function (p) {\n var _a, _b, _c;\n // Only filter out destination plugins or the Hightouch.io plugin\n if (p.type !== 'destination' && p.name !== 'Hightouch.io') {\n return true;\n }\n var alternativeNameMatch = undefined;\n (_a = p.alternativeNames) === null || _a === void 0 ? void 0 : _a.forEach(function (name) {\n if (denyList[name] !== undefined) {\n alternativeNameMatch = denyList[name];\n }\n });\n // Explicit integration option takes precedence, `All: false` does not apply to Hightouch.io\n return ((_c = (_b = denyList[p.name]) !== null && _b !== void 0 ? _b : alternativeNameMatch) !== null && _c !== void 0 ? _c : (p.name === 'Hightouch.io' ? true : denyList.All) !== false);\n });\n var _a = groupBy(available, 'type'), _b = _a.before, before = _b === void 0 ? [] : _b, _c = _a.enrichment, enrichment = _c === void 0 ? [] : _c, _d = _a.destination, destination = _d === void 0 ? [] : _d, _e = _a.after, after = _e === void 0 ? [] : _e;\n return {\n before: before,\n enrichment: enrichment,\n destinations: destination,\n after: after,\n };\n };\n CoreEventQueue.prototype.flushOne = function (ctx) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, before, enrichment, _i, before_1, beforeWare, temp, _b, enrichment_1, enrichmentWare, temp, _c, destinations, after, afterCalls;\n var _d, _e;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n if (!this.isReady()) {\n throw new Error('Not ready');\n }\n if (ctx.attempts > 1) {\n this.emit('delivery_retry', ctx);\n }\n _a = this.availableExtensions((_d = ctx.event.integrations) !== null && _d !== void 0 ? _d : {}), before = _a.before, enrichment = _a.enrichment;\n _i = 0, before_1 = before;\n _f.label = 1;\n case 1:\n if (!(_i < before_1.length)) return [3 /*break*/, 4];\n beforeWare = before_1[_i];\n return [4 /*yield*/, ensure(ctx, beforeWare)];\n case 2:\n temp = _f.sent();\n if (temp instanceof CoreContext) {\n ctx = temp;\n }\n this.emit('message_enriched', ctx, beforeWare);\n _f.label = 3;\n case 3:\n _i++;\n return [3 /*break*/, 1];\n case 4:\n _b = 0, enrichment_1 = enrichment;\n _f.label = 5;\n case 5:\n if (!(_b < enrichment_1.length)) return [3 /*break*/, 8];\n enrichmentWare = enrichment_1[_b];\n return [4 /*yield*/, attempt(ctx, enrichmentWare)];\n case 6:\n temp = _f.sent();\n if (temp instanceof CoreContext) {\n ctx = temp;\n }\n this.emit('message_enriched', ctx, enrichmentWare);\n _f.label = 7;\n case 7:\n _b++;\n return [3 /*break*/, 5];\n case 8:\n _c = this.availableExtensions((_e = ctx.event.integrations) !== null && _e !== void 0 ? _e : {}), destinations = _c.destinations, after = _c.after;\n return [4 /*yield*/, new Promise(function (resolve, reject) {\n setTimeout(function () {\n var attempts = destinations.map(function (destination) {\n return attempt(ctx, destination);\n });\n Promise.all(attempts).then(resolve).catch(reject);\n }, 0);\n })];\n case 9:\n _f.sent();\n ctx.stats.increment('message_delivered');\n this.emit('message_delivered', ctx);\n afterCalls = after.map(function (after) { return attempt(ctx, after); });\n return [4 /*yield*/, Promise.all(afterCalls)];\n case 10:\n _f.sent();\n return [2 /*return*/, ctx];\n }\n });\n });\n };\n return CoreEventQueue;\n}(Emitter));\nexport { CoreEventQueue };\n//# sourceMappingURL=event-queue.js.map","import { isThenable } from '../utils/is-thenable';\nexport var createTaskGroup = function () {\n var taskCompletionPromise;\n var resolvePromise;\n var count = 0;\n return {\n done: function () { return taskCompletionPromise; },\n run: function (op) {\n var returnValue = op();\n if (isThenable(returnValue)) {\n if (++count === 1) {\n taskCompletionPromise = new Promise(function (res) { return (resolvePromise = res); });\n }\n returnValue.finally(function () { return --count === 0 && resolvePromise(); });\n }\n return returnValue;\n },\n };\n};\n//# sourceMappingURL=task-group.js.map","/**\n * Check if thenable\n * (instanceof Promise doesn't respect realms)\n */\nexport var isThenable = function (value) {\n return typeof value === 'object' &&\n value !== null &&\n 'then' in value &&\n typeof value.then === 'function';\n};\n//# sourceMappingURL=is-thenable.js.map","import { __spreadArray } from \"tslib\";\nexport function groupBy(collection, grouper) {\n var results = {};\n collection.forEach(function (item) {\n var _a;\n var key = undefined;\n if (typeof grouper === 'string') {\n var suggestedKey = item[grouper];\n key =\n typeof suggestedKey !== 'string'\n ? JSON.stringify(suggestedKey)\n : suggestedKey;\n }\n else if (grouper instanceof Function) {\n key = grouper(item);\n }\n if (key === undefined) {\n return;\n }\n results[key] = __spreadArray(__spreadArray([], ((_a = results[key]) !== null && _a !== void 0 ? _a : []), true), [item], false);\n });\n return results;\n}\n//# sourceMappingURL=group-by.js.map","import { PriorityQueue } from '../../lib/priority-queue'\nimport { PersistedPriorityQueue } from '../../lib/priority-queue/persisted'\nimport { Context } from '../context'\nimport { AnyBrowserPlugin } from '../plugin'\nimport { CoreEventQueue } from '@ht-sdks/events-sdk-js-core'\nimport { isOffline } from '../connection'\n\nexport class EventQueue extends CoreEventQueue<Context, AnyBrowserPlugin> {\n constructor(name: string)\n constructor(priorityQueue: PriorityQueue<Context>)\n constructor(nameOrQueue: string | PriorityQueue<Context>) {\n super(\n typeof nameOrQueue === 'string'\n ? new PersistedPriorityQueue(4, nameOrQueue)\n : nameOrQueue\n )\n }\n async flush(): Promise<Context[]> {\n if (isOffline()) return []\n return super.flush()\n }\n}\n","export default function bindAll<\n ObjType extends { [key: string]: any },\n KeyType extends keyof ObjType,\n>(obj: ObjType): ObjType {\n const proto = obj.constructor.prototype\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key !== 'constructor') {\n const desc = Object.getOwnPropertyDescriptor(\n obj.constructor.prototype,\n key\n )\n if (!!desc && typeof desc.value === 'function') {\n obj[key as KeyType] = obj[key].bind(obj)\n }\n }\n }\n\n return obj\n}\n","import { CookieOptions } from './cookieStorage'\n\nexport const StoreType = {\n Cookie: 'cookie',\n LocalStorage: 'localStorage',\n Memory: 'memory',\n} as const\n\n/**\n * Known Storage Types\n *\n * Convenience settings for storage systems that AJS includes support for\n */\nexport type StoreType = (typeof StoreType)[keyof typeof StoreType]\n\nexport type StorageObject = Record<string, unknown>\n\n/**\n * Defines a Storage object for use in AJS Client.\n */\nexport interface Store<Data extends StorageObject = StorageObject> {\n /**\n * get value for the key from the stores. it will return the first value found in the stores\n * @param key key for the value to be retrieved\n * @returns value for the key or null if not found\n */\n get<K extends keyof Data & string>(key: K): Data[K] | null\n\n /**\n * it will set the value for the key in all the stores\n * @param key key for the value to be stored\n * @param value value to be stored\n * @returns value that was stored\n */\n set<K extends keyof Data & string>(key: K, value: Data[K] | null): void\n /**\n * remove the value for the key from all the stores\n * @param key key for the value to be removed\n * @param storeTypes optional array of store types to be used for removing the value\n */\n remove<K extends keyof Data & string>(key: K): void\n}\n\nexport interface StoreTypeWithSettings<T extends StoreType = StoreType> {\n name: T\n settings?: T extends 'cookie' ? CookieOptions : never\n}\n\nexport type InitializeStorageArgs = (StoreTypeWithSettings | StoreType)[]\n","import { Store, StorageObject } from './types'\n\n// not adding to private method because those method names do not get minified atm, and does not use 'this'\nconst _logStoreKeyError = (\n store: Store,\n action: 'set' | 'get' | 'remove',\n key: string,\n err: unknown\n) => {\n console.warn(\n `${store.constructor.name}: Can't ${action} key \"${key}\" | Err: ${err}`\n )\n}\n\n/**\n * Uses multiple storages in a priority list to get/set values in the order they are specified.\n */\nexport class UniversalStorage<Data extends StorageObject = StorageObject> {\n private stores: Store[]\n\n constructor(stores: Store[]) {\n this.stores = stores\n }\n\n get<K extends keyof Data & string>(key: K): Data[K] | null {\n let val: Data[K] | null = null\n\n for (const store of this.stores) {\n try {\n val = store.get(key) as Data[K] | null\n if (val !== undefined && val !== null) {\n return val\n }\n } catch (e) {\n _logStoreKeyError(store, 'get', key, e)\n }\n }\n return null\n }\n\n set<K extends keyof Data & string>(key: K, value: Data[K] | null): void {\n this.stores.forEach((store) => {\n try {\n store.set(key, value)\n } catch (e) {\n _logStoreKeyError(store, 'set', key, e)\n }\n })\n }\n\n clear<K extends keyof Data & string>(key: K): void {\n this.stores.forEach((store) => {\n try {\n store.remove(key)\n } catch (e) {\n _logStoreKeyError(store, 'remove', key, e)\n }\n })\n }\n\n /*\n This is to support few scenarios where:\n - value exist in one of the stores ( as a result of other stores being cleared from browser ) and we want to resync them\n - read values in AJS 1.0 format ( for customers after 1.0 --> 2.0 migration ) and then re-write them in AJS 2.0 format\n */\n getAndSync<K extends keyof Data & string>(key: K): Data[K] | null {\n const val = this.get(key)\n\n // legacy behavior, getAndSync can change the type of a value from number to string (AJS 1.0 stores numerical values as a number)\n const coercedValue = (typeof val === 'number' ? val.toString() : val) as\n | Data[K]\n | null\n\n this.set(key, coercedValue)\n\n return coercedValue\n }\n}\n","import { Store, StorageObject } from './types'\n\n/**\n * Data Storage using in memory object\n */\nexport class MemoryStorage<\n Data extends StorageObject = StorageObject,\n> implements Store<Data> {\n private cache: Record<string, unknown> = {}\n\n get<K extends keyof Data & string>(key: K): Data[K] | null {\n return (this.cache[key] ?? null) as Data[K] | null\n }\n\n set<K extends keyof Data & string>(key: K, value: Data[K] | null): void {\n this.cache[key] = value\n }\n\n remove<K extends keyof Data & string>(key: K): void {\n delete this.cache[key]\n }\n}\n","import { StoreType, StoreTypeWithSettings } from './types'\n\nexport type UniversalStorageSettings = { stores: StoreType[] }\n\n// This is setup this way to permit eventually a different set of settings for custom storage\nexport type StorageSettings = UniversalStorageSettings\n\nexport function isArrayOfStoreType(\n s: StorageSettings\n): s is UniversalStorageSettings {\n return (\n s &&\n s.stores &&\n Array.isArray(s.stores) &&\n s.stores.every((e) => Object.values(StoreType).includes(e))\n )\n}\n\nexport function isStoreTypeWithSettings(\n s: StoreTypeWithSettings | StoreType\n): s is StoreTypeWithSettings {\n return typeof s === 'object' && s.name !== undefined\n}\n","/*! js-cookie v3.0.1 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (key, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n key = encodeURIComponent(key)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n key + '=' + converter.write(value, key) + stringifiedAttributes)\n }\n\n function get (key) {\n if (typeof document === 'undefined' || (arguments.length && !key)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var foundKey = decodeURIComponent(parts[0]);\n jar[foundKey] = converter.read(value, foundKey);\n\n if (key === foundKey) {\n break\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar\n }\n\n return Object.create(\n {\n set: set,\n get: get,\n remove: function (key, attributes) {\n set(\n key,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport default api;\n","import cookie, { CookieAttributes } from 'js-cookie'\n\n/**\n * Levels returns all levels of the given url.\n *\n * @param {string} url\n * @return {Array}\n * @api public\n */\nfunction levels(url: URL): string[] {\n const host = url.hostname\n const parts = host.split('.')\n const last = parts[parts.length - 1]\n const levels: string[] = []\n\n // Ip address.\n if (parts.length === 4 && parseInt(last, 10) > 0) {\n return levels\n }\n\n // Localhost.\n if (parts.length <= 1) {\n return levels\n }\n\n // Create levels.\n for (let i = parts.length - 2; i >= 0; --i) {\n levels.push(parts.slice(i).join('.'))\n }\n\n return levels\n}\n\nfunction parseUrl(url: string): URL | undefined {\n try {\n return new URL(url)\n } catch {\n return\n }\n}\n\nexport function tld(url: string): string | undefined {\n const parsedUrl = parseUrl(url)\n if (!parsedUrl) return\n\n const lvls = levels(parsedUrl)\n\n // Test for the top most domain that the browser allows\n for (let i = 0; i < lvls.length; ++i) {\n const cname = '__tld__'\n const domain = lvls[i]\n const opts = {\n domain: '.' + domain,\n path: '/',\n sameSite: 'Lax',\n } as CookieAttributes\n\n try {\n // cookie access throw an error if the library is ran inside a sandboxed environment (e.g. sandboxed iframe)\n cookie.set(cname, '1', opts)\n if (cookie.get(cname)) {\n cookie.remove(cname, opts)\n return domain\n }\n } catch (_) {\n return\n }\n }\n}\n","import { Store, StorageObject } from './types'\nimport jar from 'js-cookie'\nimport { tld } from '../user/tld'\n\nconst ONE_YEAR = 365\n\nexport interface CookieOptions {\n maxage?: number\n domain?: string\n path?: string\n secure?: boolean\n sameSite?: string\n}\n\n/**\n * Data storage using browser cookies\n */\nexport class CookieStorage<\n Data extends StorageObject = StorageObject,\n> implements Store<Data> {\n static get defaults(): CookieOptions {\n return {\n maxage: ONE_YEAR,\n domain: tld(window.location.href),\n path: '/',\n sameSite: 'Lax',\n }\n }\n\n private options: Required<CookieOptions>\n\n constructor(options: CookieOptions = CookieStorage.defaults) {\n this.options = {\n ...CookieStorage.defaults,\n ...options,\n } as Required<CookieOptions>\n }\n\n private opts(): jar.CookieAttributes {\n return {\n sameSite: this.options.sameSite as jar.CookieAttributes['sameSite'],\n expires: this.options.maxage,\n domain: this.options.domain,\n path: this.options.path,\n secure: this.options.secure,\n }\n }\n\n get<K extends keyof Data & string>(key: K): Data[K] | null {\n try {\n const value = jar.get(key)\n\n if (value === undefined || value === null) {\n return null\n }\n\n try {\n return JSON.parse(value) ?? null\n } catch (e) {\n return (value ?? null) as unknown as Data[K] | null\n }\n } catch (e) {\n return null\n }\n }\n\n set<K extends keyof Data & string>(key: K, value: Data[K] | null): void {\n if (typeof value === 'string') {\n jar.set(key, value, this.opts())\n } else if (value === null) {\n jar.remove(key, this.opts())\n } else {\n jar.set(key, JSON.stringify(value), this.opts())\n }\n }\n\n remove<K extends keyof Data & string>(key: K): void {\n return jar.remove(key, this.opts())\n }\n}\n","import { StorageObject, Store } from './types'\n\n/**\n * Data storage using browser's localStorage\n */\nexport class LocalStorage<\n Data extends StorageObject = StorageObject,\n> implements Store<Data> {\n private localStorageWarning(\n key: keyof Data & string,\n state: 'full' | 'unavailable'\n ) {\n console.warn(`Unable to access ${key}, localStorage may be ${state}`)\n }\n\n get<K extends keyof Data & string>(key: K): Data[K] | null {\n try {\n const val = localStorage.getItem(key)\n if (val === null) {\n return null\n }\n try {\n return JSON.parse(val) ?? null\n } catch (e) {\n return (val ?? null) as unknown as Data[K] | null\n }\n } catch (err) {\n this.localStorageWarning(key, 'unavailable')\n return null\n }\n }\n\n set<K extends keyof Data & string>(key: K, value: Data[K] | null): void {\n try {\n localStorage.setItem(key, JSON.stringify(value))\n } catch {\n this.localStorageWarning(key, 'full')\n }\n }\n\n remove<K extends keyof Data & string>(key: K): void {\n try {\n return localStorage.removeItem(key)\n } catch (err) {\n this.localStorageWarning(key, 'unavailable')\n }\n }\n}\n","import { CookieOptions, CookieStorage } from './cookieStorage'\nimport { LocalStorage } from './localStorage'\nimport { MemoryStorage } from './memoryStorage'\nimport { isStoreTypeWithSettings } from './settings'\nimport { StoreType, Store, InitializeStorageArgs } from './types'\n\nexport * from './types'\nexport * from './localStorage'\nexport * from './cookieStorage'\nexport * from './memoryStorage'\nexport * from './universalStorage'\nexport * from './settings'\n\n/**\n * Creates multiple storage systems from an array of StoreType and options\n * @param args StoreType and options\n * @returns Storage array\n */\nexport function initializeStorages(args: InitializeStorageArgs): Store[] {\n const storages = args.map((s) => {\n let type: StoreType\n let settings\n\n if (isStoreTypeWithSettings(s)) {\n type = s.name\n settings = s.settings\n } else {\n type = s\n }\n\n switch (type) {\n case StoreType.Cookie:\n return new CookieStorage(settings)\n case StoreType.LocalStorage:\n return new LocalStorage()\n case StoreType.Memory:\n return new MemoryStorage()\n default:\n throw new Error(`Unknown Store Type: ${s}`)\n }\n })\n return storages\n}\n\n/**\n * Injects the CookieOptions into a the arguments for initializeStorage\n * @param storeTypes list of storeType\n * @param cookieOptions cookie Options\n * @returns arguments for initializeStorage\n */\nexport function applyCookieOptions(\n storeTypes: StoreType[],\n cookieOptions?: CookieOptions\n): InitializeStorageArgs {\n return storeTypes.map((s) => {\n if (cookieOptions && s === StoreType.Cookie) {\n return {\n name: s,\n settings: cookieOptions,\n }\n }\n return s\n })\n}\n","//@ts-nocheck\n/* eslint-disable no-use-before-define */\n\nconst crypto =\n (typeof globalThis != 'undefined' ? globalThis : void 0)?.crypto ||\n (typeof global != 'undefined' ? global : void 0)?.crypto ||\n (typeof window != 'undefined' ? window : void 0)?.crypto ||\n (typeof self != 'undefined' ? self : void 0)?.crypto ||\n (typeof frames != 'undefined' ? frames : void 0)?.[0]?.crypto\n\nlet randomWordArray\n\nif (crypto) {\n randomWordArray = (nBytes) => {\n const words = []\n\n for (let i = 0, rcache; i < nBytes; i += 4) {\n words.push(crypto.getRandomValues(new Uint32Array(1))[0])\n }\n\n return new WordArray(words, nBytes)\n }\n} else {\n // Because there is no global crypto property in this context, cryptographically unsafe Math.random() is used.\n\n randomWordArray = (nBytes) => {\n const words = []\n\n const r = (m_w) => {\n let _m_w = m_w\n let _m_z = 0x3ade68b1\n const mask = 0xffffffff\n\n return () => {\n _m_z = (0x9069 * (_m_z & 0xffff) + (_m_z >> 0x10)) & mask\n _m_w = (0x4650 * (_m_w & 0xffff) + (_m_w >> 0x10)) & mask\n let result = ((_m_z << 0x10) + _m_w) & mask\n result /= 0x100000000\n result += 0.5\n return result * (Math.random() > 0.5 ? 1 : -1)\n }\n }\n\n for (let i = 0, rcache; i < nBytes; i += 4) {\n const _r = r((rcache || Math.random()) * 0x100000000)\n\n rcache = _r() * 0x3ade67b7\n words.push((_r() * 0x100000000) | 0)\n }\n\n return new WordArray(words, nBytes)\n }\n}\n\n/**\n * Base class for inheritance.\n */\nexport class Base {\n /**\n * Extends this object and runs the init method.\n * Arguments to create() will be passed to init().\n *\n * @return {Object} The new object.\n *\n * @static\n *\n * @example\n *\n * var instance = MyType.create();\n */\n static create(...args) {\n return new this(...args)\n }\n\n /**\n * Copies properties into this object.\n *\n * @param {Object} properties The properties to mix in.\n *\n * @example\n *\n * MyType.mixIn({\n * field: 'value'\n * });\n */\n mixIn(properties) {\n return Object.assign(this, properties)\n }\n\n /**\n * Creates a copy of this object.\n *\n * @return {Object} The clone.\n *\n * @example\n *\n * var clone = instance.clone();\n */\n clone() {\n const clone = new this.constructor()\n Object.assign(clone, this)\n return clone\n }\n}\n\n/**\n * An array of 32-bit words.\n *\n * @property {Array} words The array of 32-bit words.\n * @property {number} sigBytes The number of significant bytes in this word array.\n */\nexport class WordArray extends Base {\n /**\n * Initializes a newly created word array.\n *\n * @param {Array} words (Optional) An array of 32-bit words.\n * @param {number} sigBytes (Optional) The number of significant bytes in the words.\n *\n * @example\n *\n * var wordArray = CryptoJS.lib.WordArray.create();\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607]);\n * var wordArray = CryptoJS.lib.WordArray.create([0x00010203, 0x04050607], 6);\n */\n constructor(words = [], sigBytes = words.length * 4) {\n super()\n\n let typedArray = words\n // Convert buffers to uint8\n if (typedArray instanceof ArrayBuffer) {\n typedArray = new Uint8Array(typedArray)\n }\n\n // Convert other array views to uint8\n if (\n typedArray instanceof Int8Array ||\n typedArray instanceof Uint8ClampedArray ||\n typedArray instanceof Int16Array ||\n typedArray instanceof Uint16Array ||\n typedArray instanceof Int32Array ||\n typedArray instanceof Uint32Array ||\n typedArray instanceof Float32Array ||\n typedArray instanceof Float64Array\n ) {\n typedArray = new Uint8Array(\n typedArray.buffer,\n typedArray.byteOffset,\n typedArray.byteLength\n )\n }\n\n // Handle Uint8Array\n if (typedArray instanceof Uint8Array) {\n // Shortcut\n const typedArrayByteLength = typedArray.byteLength\n\n // Extract bytes\n const _words = []\n for (let i = 0; i < typedArrayByteLength; i += 1) {\n _words[i >>> 2] |= typedArray[i] << (24 - (i % 4) * 8)\n }\n\n // Initialize this word array\n this.words = _words\n this.sigBytes = typedArrayByteLength\n } else {\n // Else call normal init\n this.words = words\n this.sigBytes = sigBytes\n }\n }\n\n /**\n * Creates a word array filled with random bytes.\n *\n * @param {number} nBytes The number of random bytes to generate.\n *\n * @return {WordArray} The random word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.lib.WordArray.random(16);\n */\n static random = randomWordArray\n\n /**\n * Converts this word array to a string.\n *\n * @param {Encoder} encoder (Optional) The encoding strategy to use. Default: CryptoJS.enc.Hex\n *\n * @return {string} The stringified word array.\n *\n * @example\n *\n * var string = wordArray + '';\n * var string = wordArray.toString();\n * var string = wordArray.toString(CryptoJS.enc.Utf8);\n */\n toString(encoder = Hex) {\n return encoder.stringify(this)\n }\n\n /**\n * Concatenates a word array to this word array.\n *\n * @param {WordArray} wordArray The word array to append.\n *\n * @return {WordArray} This word array.\n *\n * @example\n *\n * wordArray1.concat(wordArray2);\n */\n concat(wordArray) {\n // Shortcuts\n const thisWords = this.words\n const thatWords = wordArray.words\n const thisSigBytes = this.sigBytes\n const thatSigBytes = wordArray.sigBytes\n\n // Clamp excess bits\n this.clamp()\n\n // Concat\n if (thisSigBytes % 4) {\n // Copy one byte at a time\n for (let i = 0; i < thatSigBytes; i += 1) {\n const thatByte = (thatWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff\n thisWords[(thisSigBytes + i) >>> 2] |=\n thatByte << (24 - ((thisSigBytes + i) % 4) * 8)\n }\n } else {\n // Copy one word at a time\n for (let i = 0; i < thatSigBytes; i += 4) {\n thisWords[(thisSigBytes + i) >>> 2] = thatWords[i >>> 2]\n }\n }\n this.sigBytes += thatSigBytes\n\n // Chainable\n return this\n }\n\n /**\n * Removes insignificant bits.\n *\n * @example\n *\n * wordArray.clamp();\n */\n clamp() {\n // Shortcuts\n const { words, sigBytes } = this\n\n // Clamp\n words[sigBytes >>> 2] &= 0xffffffff << (32 - (sigBytes % 4) * 8)\n words.length = Math.ceil(sigBytes / 4)\n }\n\n /**\n * Creates a copy of this word array.\n *\n * @return {WordArray} The clone.\n *\n * @example\n *\n * var clone = wordArray.clone();\n */\n clone() {\n const clone = super.clone.call(this)\n clone.words = this.words.slice(0)\n\n return clone\n }\n}\n\n/**\n * Hex encoding strategy.\n */\nexport const Hex = {\n /**\n * Converts a word array to a hex string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The hex string.\n *\n * @static\n *\n * @example\n *\n * var hexString = CryptoJS.enc.Hex.stringify(wordArray);\n */\n stringify(wordArray) {\n // Shortcuts\n const { words, sigBytes } = wordArray\n\n // Convert\n const hexChars = []\n for (let i = 0; i < sigBytes; i += 1) {\n const bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff\n hexChars.push((bite >>> 4).toString(16))\n hexChars.push((bite & 0x0f).toString(16))\n }\n\n return hexChars.join('')\n },\n\n /**\n * Converts a hex string to a word array.\n *\n * @param {string} hexStr The hex string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Hex.parse(hexString);\n */\n parse(hexStr) {\n // Shortcut\n const hexStrLength = hexStr.length\n\n // Convert\n const words = []\n for (let i = 0; i < hexStrLength; i += 2) {\n words[i >>> 3] |= parseInt(hexStr.substr(i, 2), 16) << (24 - (i % 8) * 4)\n }\n\n return new WordArray(words, hexStrLength / 2)\n },\n}\n\n/**\n * Latin1 encoding strategy.\n */\nexport const Latin1 = {\n /**\n * Converts a word array to a Latin1 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Latin1 string.\n *\n * @static\n *\n * @example\n *\n * var latin1String = CryptoJS.enc.Latin1.stringify(wordArray);\n */\n stringify(wordArray) {\n // Shortcuts\n const { words, sigBytes } = wordArray\n\n // Convert\n const latin1Chars = []\n for (let i = 0; i < sigBytes; i += 1) {\n const bite = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff\n latin1Chars.push(String.fromCharCode(bite))\n }\n\n return latin1Chars.join('')\n },\n\n /**\n * Converts a Latin1 string to a word array.\n *\n * @param {string} latin1Str The Latin1 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Latin1.parse(latin1String);\n */\n parse(latin1Str) {\n // Shortcut\n const latin1StrLength = latin1Str.length\n\n // Convert\n const words = []\n for (let i = 0; i < latin1StrLength; i += 1) {\n words[i >>> 2] |= (latin1Str.charCodeAt(i) & 0xff) << (24 - (i % 4) * 8)\n }\n\n return new WordArray(words, latin1StrLength)\n },\n}\n\n/**\n * UTF-8 encoding strategy.\n */\nexport const Utf8 = {\n /**\n * Converts a word array to a UTF-8 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The UTF-8 string.\n *\n * @static\n *\n * @example\n *\n * var utf8String = CryptoJS.enc.Utf8.stringify(wordArray);\n */\n stringify(wordArray) {\n try {\n return decodeURIComponent(escape(Latin1.stringify(wordArray)))\n } catch (e) {\n throw new Error('Malformed UTF-8 data')\n }\n },\n\n /**\n * Converts a UTF-8 string to a word array.\n *\n * @param {string} utf8Str The UTF-8 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * var wordArray = CryptoJS.enc.Utf8.parse(utf8String);\n */\n parse(utf8Str) {\n return Latin1.parse(unescape(encodeURIComponent(utf8Str)))\n },\n}\n\n/**\n * Abstract buffered block algorithm template.\n *\n * The property blockSize must be implemented in a concrete subtype.\n *\n * @property {number} _minBufferSize\n *\n * The number of blocks that should be kept unprocessed in the buffer. Default: 0\n */\nexport class BufferedBlockAlgorithm extends Base {\n constructor() {\n super()\n this._minBufferSize = 0\n }\n\n /**\n * Resets this block algorithm's data buffer to its initial state.\n *\n * @example\n *\n * bufferedBlockAlgorithm.reset();\n */\n reset() {\n // Initial values\n this._data = new WordArray()\n this._nDataBytes = 0\n }\n\n /**\n * Adds new data to this block algorithm's buffer.\n *\n * @param {WordArray|string} data\n *\n * The data to append. Strings are converted to a WordArray using UTF-8.\n *\n * @example\n *\n * bufferedBlockAlgorithm._append('data');\n * bufferedBlockAlgorithm._append(wordArray);\n */\n _append(data) {\n let m_data = data\n\n // Convert string to WordArray, else assume WordArray already\n if (typeof m_data === 'string') {\n m_data = Utf8.parse(m_data)\n }\n\n // Append\n this._data.concat(m_data)\n this._nDataBytes += m_data.sigBytes\n }\n\n /**\n * Processes available data blocks.\n *\n * This method invokes _doProcessBlock(offset), which must be implemented by a concrete subtype.\n *\n * @param {boolean} doFlush Whether all blocks and partial blocks should be processed.\n *\n * @return {WordArray} The processed data.\n *\n * @example\n *\n * var processedData = bufferedBlockAlgorithm._process();\n * var processedData = bufferedBlockAlgorithm._process(!!'flush');\n */\n _process(doFlush) {\n let processedWords\n\n // Shortcuts\n const { _data: data, blockSize } = this\n const dataWords = data.words\n const dataSigBytes = data.sigBytes\n const blockSizeBytes = blockSize * 4\n\n // Count blocks ready\n let nBlocksReady = dataSigBytes / blockSizeBytes\n if (doFlush) {\n // Round up to include partial blocks\n nBlocksReady = Math.ceil(nBlocksReady)\n } else {\n // Round down to include only full blocks,\n // less the number of blocks that must remain in the buffer\n nBlocksReady = Math.max((nBlocksReady | 0) - this._minBufferSize, 0)\n }\n\n // Count words ready\n const nWordsReady = nBlocksReady * blockSize\n\n // Count bytes ready\n const nBytesReady = Math.min(nWordsReady * 4, dataSigBytes)\n\n // Process blocks\n if (nWordsReady) {\n for (let offset = 0; offset < nWordsReady; offset += blockSize) {\n // Perform concrete-algorithm logic\n this._doProcessBlock(dataWords, offset)\n }\n\n // Remove processed words\n processedWords = dataWords.splice(0, nWordsReady)\n data.sigBytes -= nBytesReady\n }\n\n // Return processed words\n return new WordArray(processedWords, nBytesReady)\n }\n\n /**\n * Creates a copy of this object.\n *\n * @return {Object} The clone.\n *\n * @example\n *\n * var clone = bufferedBlockAlgorithm.clone();\n */\n clone() {\n const clone = super.clone.call(this)\n clone._data = this._data.clone()\n\n return clone\n }\n}\n\n/**\n * Abstract hasher template.\n *\n * @property {number} blockSize\n *\n * The number of 32-bit words this hasher operates on. Default: 16 (512 bits)\n */\nexport class Hasher extends BufferedBlockAlgorithm {\n constructor(cfg) {\n super()\n\n this.blockSize = 512 / 32\n\n /**\n * Configuration options.\n */\n this.cfg = Object.assign(new Base(), cfg)\n\n // Set initial values\n this.reset()\n }\n\n /**\n * Creates a shortcut function to a hasher's object interface.\n *\n * @param {Hasher} SubHasher The hasher to create a helper for.\n *\n * @return {Function} The shortcut function.\n *\n * @static\n *\n * @example\n *\n * var SHA256 = CryptoJS.lib.Hasher._createHelper(CryptoJS.algo.SHA256);\n */\n static _createHelper(SubHasher) {\n return (message, cfg) => new SubHasher(cfg).finalize(message)\n }\n\n /**\n * Creates a shortcut function to the HMAC's object interface.\n *\n * @param {Hasher} SubHasher The hasher to use in this HMAC helper.\n *\n * @return {Function} The shortcut function.\n *\n * @static\n *\n * @example\n *\n * var HmacSHA256 = CryptoJS.lib.Hasher._createHmacHelper(CryptoJS.algo.SHA256);\n */\n static _createHmacHelper(SubHasher) {\n return (message, key) => new HMAC(SubHasher, key).finalize(message)\n }\n\n /**\n * Resets this hasher to its initial state.\n *\n * @example\n *\n * hasher.reset();\n */\n reset() {\n // Reset data buffer\n super.reset.call(this)\n\n // Perform concrete-hasher logic\n this._doReset()\n }\n\n /**\n * Updates this hasher with a message.\n *\n * @param {WordArray|string} messageUpdate The message to append.\n *\n * @return {Hasher} This hasher.\n *\n * @example\n *\n * hasher.update('message');\n * hasher.update(wordArray);\n */\n update(messageUpdate) {\n // Append\n this._append(messageUpdate)\n\n // Update the hash\n this._process()\n\n // Chainable\n return this\n }\n\n /**\n * Finalizes the hash computation.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\n *\n * @return {WordArray} The hash.\n *\n * @example\n *\n * var hash = hasher.finalize();\n * var hash = hasher.finalize('message');\n * var hash = hasher.finalize(wordArray);\n */\n finalize(messageUpdate) {\n // Final message update\n if (messageUpdate) {\n this._append(messageUpdate)\n }\n\n // Perform concrete-hasher logic\n const hash = this._doFinalize()\n\n return hash\n }\n}\n\n/**\n * HMAC algorithm.\n */\nexport class HMAC extends Base {\n /**\n * Initializes a newly created HMAC.\n *\n * @param {Hasher} SubHasher The hash algorithm to use.\n * @param {WordArray|string} key The secret key.\n *\n * @example\n *\n * var hmacHasher = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, key);\n */\n constructor(SubHasher, key) {\n super()\n\n const hasher = new SubHasher()\n this._hasher = hasher\n\n // Convert string to WordArray, else assume WordArray already\n let _key = key\n if (typeof _key === 'string') {\n _key = Utf8.parse(_key)\n }\n\n // Shortcuts\n const hasherBlockSize = hasher.blockSize\n const hasherBlockSizeBytes = hasherBlockSize * 4\n\n // Allow arbitrary length keys\n if (_key.sigBytes > hasherBlockSizeBytes) {\n _key = hasher.finalize(key)\n }\n\n // Clamp excess bits\n _key.clamp()\n\n // Clone key for inner and outer pads\n const oKey = _key.clone()\n this._oKey = oKey\n const iKey = _key.clone()\n this._iKey = iKey\n\n // Shortcuts\n const oKeyWords = oKey.words\n const iKeyWords = iKey.words\n\n // XOR keys with pad constants\n for (let i = 0; i < hasherBlockSize; i += 1) {\n oKeyWords[i] ^= 0x5c5c5c5c\n iKeyWords[i] ^= 0x36363636\n }\n oKey.sigBytes = hasherBlockSizeBytes\n iKey.sigBytes = hasherBlockSizeBytes\n\n // Set initial values\n this.reset()\n }\n\n /**\n * Resets this HMAC to its initial state.\n *\n * @example\n *\n * hmacHasher.reset();\n */\n reset() {\n // Shortcut\n const hasher = this._hasher\n\n // Reset\n hasher.reset()\n hasher.update(this._iKey)\n }\n\n /**\n * Updates this HMAC with a message.\n *\n * @param {WordArray|string} messageUpdate The message to append.\n *\n * @return {HMAC} This HMAC instance.\n *\n * @example\n *\n * hmacHasher.update('message');\n * hmacHasher.update(wordArray);\n */\n update(messageUpdate) {\n this._hasher.update(messageUpdate)\n\n // Chainable\n return this\n }\n\n /**\n * Finalizes the HMAC computation.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} messageUpdate (Optional) A final message update.\n *\n * @return {WordArray} The HMAC.\n *\n * @example\n *\n * var hmac = hmacHasher.finalize();\n * var hmac = hmacHasher.finalize('message');\n * var hmac = hmacHasher.finalize(wordArray);\n */\n finalize(messageUpdate) {\n // Shortcut\n const hasher = this._hasher\n\n // Compute HMAC\n const innerHash = hasher.finalize(messageUpdate)\n hasher.reset()\n const hmac = hasher.finalize(this._oKey.clone().concat(innerHash))\n\n return hmac\n }\n}\n","//@ts-nocheck\nimport { WordArray, Hasher } from './core'\n\n// Constants table\nconst T = []\n\n// Compute constants\nfor (let i = 0; i < 64; i += 1) {\n T[i] = (Math.abs(Math.sin(i + 1)) * 0x100000000) | 0\n}\n\nconst FF = (a, b, c, d, x, s, t) => {\n const n = a + ((b & c) | (~b & d)) + x + t\n return ((n << s) | (n >>> (32 - s))) + b\n}\n\nconst GG = (a, b, c, d, x, s, t) => {\n const n = a + ((b & d) | (c & ~d)) + x + t\n return ((n << s) | (n >>> (32 - s))) + b\n}\n\nconst HH = (a, b, c, d, x, s, t) => {\n const n = a + (b ^ c ^ d) + x + t\n return ((n << s) | (n >>> (32 - s))) + b\n}\n\nconst II = (a, b, c, d, x, s, t) => {\n const n = a + (c ^ (b | ~d)) + x + t\n return ((n << s) | (n >>> (32 - s))) + b\n}\n\n/**\n * MD5 hash algorithm.\n */\nexport class MD5Algo extends Hasher {\n _doReset() {\n this._hash = new WordArray([0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476])\n }\n\n _doProcessBlock(M, offset) {\n const _M = M\n\n // Swap endian\n for (let i = 0; i < 16; i += 1) {\n // Shortcuts\n const offset_i = offset + i\n const M_offset_i = M[offset_i]\n\n _M[offset_i] =\n (((M_offset_i << 8) | (M_offset_i >>> 24)) & 0x00ff00ff) |\n (((M_offset_i << 24) | (M_offset_i >>> 8)) & 0xff00ff00)\n }\n\n // Shortcuts\n const H = this._hash.words\n\n const M_offset_0 = _M[offset + 0]\n const M_offset_1 = _M[offset + 1]\n const M_offset_2 = _M[offset + 2]\n const M_offset_3 = _M[offset + 3]\n const M_offset_4 = _M[offset + 4]\n const M_offset_5 = _M[offset + 5]\n const M_offset_6 = _M[offset + 6]\n const M_offset_7 = _M[offset + 7]\n const M_offset_8 = _M[offset + 8]\n const M_offset_9 = _M[offset + 9]\n const M_offset_10 = _M[offset + 10]\n const M_offset_11 = _M[offset + 11]\n const M_offset_12 = _M[offset + 12]\n const M_offset_13 = _M[offset + 13]\n const M_offset_14 = _M[offset + 14]\n const M_offset_15 = _M[offset + 15]\n\n // Working varialbes\n let a = H[0]\n let b = H[1]\n let c = H[2]\n let d = H[3]\n\n // Computation\n a = FF(a, b, c, d, M_offset_0, 7, T[0])\n d = FF(d, a, b, c, M_offset_1, 12, T[1])\n c = FF(c, d, a, b, M_offset_2, 17, T[2])\n b = FF(b, c, d, a, M_offset_3, 22, T[3])\n a = FF(a, b, c, d, M_offset_4, 7, T[4])\n d = FF(d, a, b, c, M_offset_5, 12, T[5])\n c = FF(c, d, a, b, M_offset_6, 17, T[6])\n b = FF(b, c, d, a, M_offset_7, 22, T[7])\n a = FF(a, b, c, d, M_offset_8, 7, T[8])\n d = FF(d, a, b, c, M_offset_9, 12, T[9])\n c = FF(c, d, a, b, M_offset_10, 17, T[10])\n b = FF(b, c, d, a, M_offset_11, 22, T[11])\n a = FF(a, b, c, d, M_offset_12, 7, T[12])\n d = FF(d, a, b, c, M_offset_13, 12, T[13])\n c = FF(c, d, a, b, M_offset_14, 17, T[14])\n b = FF(b, c, d, a, M_offset_15, 22, T[15])\n\n a = GG(a, b, c, d, M_offset_1, 5, T[16])\n d = GG(d, a, b, c, M_offset_6, 9, T[17])\n c = GG(c, d, a, b, M_offset_11, 14, T[18])\n b = GG(b, c, d, a, M_offset_0, 20, T[19])\n a = GG(a, b, c, d, M_offset_5, 5, T[20])\n d = GG(d, a, b, c, M_offset_10, 9, T[21])\n c = GG(c, d, a, b, M_offset_15, 14, T[22])\n b = GG(b, c, d, a, M_offset_4, 20, T[23])\n a = GG(a, b, c, d, M_offset_9, 5, T[24])\n d = GG(d, a, b, c, M_offset_14, 9, T[25])\n c = GG(c, d, a, b, M_offset_3, 14, T[26])\n b = GG(b, c, d, a, M_offset_8, 20, T[27])\n a = GG(a, b, c, d, M_offset_13, 5, T[28])\n d = GG(d, a, b, c, M_offset_2, 9, T[29])\n c = GG(c, d, a, b, M_offset_7, 14, T[30])\n b = GG(b, c, d, a, M_offset_12, 20, T[31])\n\n a = HH(a, b, c, d, M_offset_5, 4, T[32])\n d = HH(d, a, b, c, M_offset_8, 11, T[33])\n c = HH(c, d, a, b, M_offset_11, 16, T[34])\n b = HH(b, c, d, a, M_offset_14, 23, T[35])\n a = HH(a, b, c, d, M_offset_1, 4, T[36])\n d = HH(d, a, b, c, M_offset_4, 11, T[37])\n c = HH(c, d, a, b, M_offset_7, 16, T[38])\n b = HH(b, c, d, a, M_offset_10, 23, T[39])\n a = HH(a, b, c, d, M_offset_13, 4, T[40])\n d = HH(d, a, b, c, M_offset_0, 11, T[41])\n c = HH(c, d, a, b, M_offset_3, 16, T[42])\n b = HH(b, c, d, a, M_offset_6, 23, T[43])\n a = HH(a, b, c, d, M_offset_9, 4, T[44])\n d = HH(d, a, b, c, M_offset_12, 11, T[45])\n c = HH(c, d, a, b, M_offset_15, 16, T[46])\n b = HH(b, c, d, a, M_offset_2, 23, T[47])\n\n a = II(a, b, c, d, M_offset_0, 6, T[48])\n d = II(d, a, b, c, M_offset_7, 10, T[49])\n c = II(c, d, a, b, M_offset_14, 15, T[50])\n b = II(b, c, d, a, M_offset_5, 21, T[51])\n a = II(a, b, c, d, M_offset_12, 6, T[52])\n d = II(d, a, b, c, M_offset_3, 10, T[53])\n c = II(c, d, a, b, M_offset_10, 15, T[54])\n b = II(b, c, d, a, M_offset_1, 21, T[55])\n a = II(a, b, c, d, M_offset_8, 6, T[56])\n d = II(d, a, b, c, M_offset_15, 10, T[57])\n c = II(c, d, a, b, M_offset_6, 15, T[58])\n b = II(b, c, d, a, M_offset_13, 21, T[59])\n a = II(a, b, c, d, M_offset_4, 6, T[60])\n d = II(d, a, b, c, M_offset_11, 10, T[61])\n c = II(c, d, a, b, M_offset_2, 15, T[62])\n b = II(b, c, d, a, M_offset_9, 21, T[63])\n\n // Intermediate hash value\n H[0] = (H[0] + a) | 0\n H[1] = (H[1] + b) | 0\n H[2] = (H[2] + c) | 0\n H[3] = (H[3] + d) | 0\n }\n /* eslint-ensable no-param-reassign */\n\n _doFinalize() {\n // Shortcuts\n const data = this._data\n const dataWords = data.words\n\n const nBitsTotal = this._nDataBytes * 8\n const nBitsLeft = data.sigBytes * 8\n\n // Add padding\n dataWords[nBitsLeft >>> 5] |= 0x80 << (24 - (nBitsLeft % 32))\n\n const nBitsTotalH = Math.floor(nBitsTotal / 0x100000000)\n const nBitsTotalL = nBitsTotal\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 15] =\n (((nBitsTotalH << 8) | (nBitsTotalH >>> 24)) & 0x00ff00ff) |\n (((nBitsTotalH << 24) | (nBitsTotalH >>> 8)) & 0xff00ff00)\n dataWords[(((nBitsLeft + 64) >>> 9) << 4) + 14] =\n (((nBitsTotalL << 8) | (nBitsTotalL >>> 24)) & 0x00ff00ff) |\n (((nBitsTotalL << 24) | (nBitsTotalL >>> 8)) & 0xff00ff00)\n\n data.sigBytes = (dataWords.length + 1) * 4\n\n // Hash final blocks\n this._process()\n\n // Shortcuts\n const hash = this._hash\n const H = hash.words\n\n // Swap endian\n for (let i = 0; i < 4; i += 1) {\n // Shortcut\n const H_i = H[i]\n\n H[i] =\n (((H_i << 8) | (H_i >>> 24)) & 0x00ff00ff) |\n (((H_i << 24) | (H_i >>> 8)) & 0xff00ff00)\n }\n\n // Return final computed hash\n return hash\n }\n\n clone() {\n const clone = super.clone.call(this)\n clone._hash = this._hash.clone()\n\n return clone\n }\n}\n\n/**\n * Shortcut function to the hasher's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n *\n * @return {WordArray} The hash.\n *\n * @static\n *\n * @example\n *\n * var hash = CryptoJS.MD5('message');\n * var hash = CryptoJS.MD5(wordArray);\n */\nexport const MD5 = Hasher._createHelper(MD5Algo)\n\n/**\n * Shortcut function to the HMAC's object interface.\n *\n * @param {WordArray|string} message The message to hash.\n * @param {WordArray|string} key The secret key.\n *\n * @return {WordArray} The HMAC.\n *\n * @static\n *\n * @example\n *\n * var hmac = CryptoJS.HmacMD5(message, key);\n */\nexport const HmacMD5 = Hasher._createHmacHelper(MD5Algo)\n","//@ts-nocheck\nimport { WordArray } from './core'\n\nexport const parseLoop = (base64Str, base64StrLength, reverseMap) => {\n const words = []\n let nBytes = 0\n for (let i = 0; i < base64StrLength; i += 1) {\n if (i % 4) {\n const bits1 = reverseMap[base64Str.charCodeAt(i - 1)] << ((i % 4) * 2)\n const bits2 = reverseMap[base64Str.charCodeAt(i)] >>> (6 - (i % 4) * 2)\n const bitsCombined = bits1 | bits2\n words[nBytes >>> 2] |= bitsCombined << (24 - (nBytes % 4) * 8)\n nBytes += 1\n }\n }\n return WordArray.create(words, nBytes)\n}\n\n/**\n * Base64 encoding strategy.\n */\nexport const Base64 = {\n /**\n * Converts a word array to a Base64 string.\n *\n * @param {WordArray} wordArray The word array.\n *\n * @return {string} The Base64 string.\n *\n * @static\n *\n * @example\n *\n * const base64String = CryptoJS.enc.Base64.stringify(wordArray);\n */\n stringify(wordArray) {\n // Shortcuts\n const { words, sigBytes } = wordArray\n const map = this._map\n\n // Clamp excess bits\n wordArray.clamp()\n\n // Convert\n const base64Chars = []\n for (let i = 0; i < sigBytes; i += 3) {\n const byte1 = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff\n const byte2 = (words[(i + 1) >>> 2] >>> (24 - ((i + 1) % 4) * 8)) & 0xff\n const byte3 = (words[(i + 2) >>> 2] >>> (24 - ((i + 2) % 4) * 8)) & 0xff\n\n const triplet = (byte1 << 16) | (byte2 << 8) | byte3\n\n for (let j = 0; j < 4 && i + j * 0.75 < sigBytes; j += 1) {\n base64Chars.push(map.charAt((triplet >>> (6 * (3 - j))) & 0x3f))\n }\n }\n\n // Add padding\n const paddingChar = map.charAt(64)\n if (paddingChar) {\n while (base64Chars.length % 4) {\n base64Chars.push(paddingChar)\n }\n }\n\n return base64Chars.join('')\n },\n\n /**\n * Converts a Base64 string to a word array.\n *\n * @param {string} base64Str The Base64 string.\n *\n * @return {WordArray} The word array.\n *\n * @static\n *\n * @example\n *\n * const wordArray = CryptoJS.enc.Base64.parse(base64String);\n */\n parse(base64Str) {\n // Shortcuts\n let base64StrLength = base64Str.length\n const map = this._map\n let reverseMap = this._reverseMap\n\n if (!reverseMap) {\n this._reverseMap = []\n reverseMap = this._reverseMap\n for (let j = 0; j < map.length; j += 1) {\n reverseMap[map.charCodeAt(j)] = j\n }\n }\n\n // Ignore padding\n const paddingChar = map.charAt(64)\n if (paddingChar) {\n const paddingIndex = base64Str.indexOf(paddingChar)\n if (paddingIndex !== -1) {\n base64StrLength = paddingIndex\n }\n }\n\n // Convert\n return parseLoop(base64Str, base64StrLength, reverseMap)\n },\n\n _map: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',\n}\n","//@ts-nocheck\nimport { Base, WordArray } from './core'\nimport { MD5Algo } from './md5'\n\n/**\n * This key derivation function is meant to conform with EVP_BytesToKey.\n * www.openssl.org/docs/crypto/EVP_BytesToKey.html\n */\nexport class EvpKDFAlgo extends Base {\n /**\n * Initializes a newly created key derivation function.\n *\n * @param {Object} cfg (Optional) The configuration options to use for the derivation.\n *\n * @example\n *\n * const kdf = CryptoJS.algo.EvpKDF.create();\n * const kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8 });\n * const kdf = CryptoJS.algo.EvpKDF.create({ keySize: 8, iterations: 1000 });\n */\n constructor(cfg) {\n super()\n\n /**\n * Configuration options.\n *\n * @property {number} keySize The key size in words to generate. Default: 4 (128 bits)\n * @property {Hasher} hasher The hash algorithm to use. Default: MD5\n * @property {number} iterations The number of iterations to perform. Default: 1\n */\n this.cfg = Object.assign(\n new Base(),\n {\n keySize: 128 / 32,\n hasher: MD5Algo,\n iterations: 1,\n },\n cfg\n )\n }\n\n /**\n * Derives a key from a password.\n *\n * @param {WordArray|string} password The password.\n * @param {WordArray|string} salt A salt.\n *\n * @return {WordArray} The derived key.\n *\n * @example\n *\n * const key = kdf.compute(password, salt);\n */\n compute(password, salt) {\n let block\n\n // Shortcut\n const { cfg } = this\n\n // Init hasher\n const hasher = cfg.hasher.create()\n\n // Initial values\n const derivedKey = WordArray.create()\n\n // Shortcuts\n const derivedKeyWords = derivedKey.words\n const { keySize, iterations } = cfg\n\n // Generate key\n while (derivedKeyWords.length < keySize) {\n if (block) {\n hasher.update(block)\n }\n block = hasher.update(password).finalize(salt)\n hasher.reset()\n\n // Iterations\n for (let i = 1; i < iterations; i += 1) {\n block = hasher.finalize(block)\n hasher.reset()\n }\n\n derivedKey.concat(block)\n }\n derivedKey.sigBytes = keySize * 4\n\n return derivedKey\n }\n}\n\n/**\n * Derives a key from a password.\n *\n * @param {WordArray|string} password The password.\n * @param {WordArray|string} salt A salt.\n * @param {Object} cfg (Optional) The configuration options to use for this computation.\n *\n * @return {WordArray} The derived key.\n *\n * @static\n *\n * @example\n *\n * var key = CryptoJS.EvpKDF(password, salt);\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8 });\n * var key = CryptoJS.EvpKDF(password, salt, { keySize: 8, iterations: 1000 });\n */\nexport const EvpKDF = (password, salt, cfg) =>\n EvpKDFAlgo.create(cfg).compute(password, salt)\n","//@ts-nocheck\n/* eslint-disable no-use-before-define */\n\nimport { Base, WordArray, BufferedBlockAlgorithm } from './core'\nimport { Base64 } from './enc-base64'\nimport { EvpKDFAlgo } from './evpkdf'\n\n/**\n * Abstract base cipher template.\n *\n * @property {number} keySize This cipher's key size. Default: 4 (128 bits)\n * @property {number} ivSize This cipher's IV size. Default: 4 (128 bits)\n * @property {number} _ENC_XFORM_MODE A constant representing encryption mode.\n * @property {number} _DEC_XFORM_MODE A constant representing decryption mode.\n */\nexport class Cipher extends BufferedBlockAlgorithm {\n /**\n * Initializes a newly created cipher.\n *\n * @param {number} xformMode Either the encryption or decryption transormation mode constant.\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @example\n *\n * const cipher = CryptoJS.algo.AES.create(\n * CryptoJS.algo.AES._ENC_XFORM_MODE, keyWordArray, { iv: ivWordArray }\n * );\n */\n constructor(xformMode, key, cfg) {\n super()\n\n /**\n * Configuration options.\n *\n * @property {WordArray} iv The IV to use for this operation.\n */\n this.cfg = Object.assign(new Base(), cfg)\n\n // Store transform mode and key\n this._xformMode = xformMode\n this._key = key\n\n // Set initial values\n this.reset()\n }\n\n /**\n * Creates this cipher in encryption mode.\n *\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {Cipher} A cipher instance.\n *\n * @static\n *\n * @example\n *\n * const cipher = CryptoJS.algo.AES.createEncryptor(keyWordArray, { iv: ivWordArray });\n */\n static createEncryptor(key, cfg) {\n return this.create(this._ENC_XFORM_MODE, key, cfg)\n }\n\n /**\n * Creates this cipher in decryption mode.\n *\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {Cipher} A cipher instance.\n *\n * @static\n *\n * @example\n *\n * const cipher = CryptoJS.algo.AES.createDecryptor(keyWordArray, { iv: ivWordArray });\n */\n static createDecryptor(key, cfg) {\n return this.create(this._DEC_XFORM_MODE, key, cfg)\n }\n\n /**\n * Creates shortcut functions to a cipher's object interface.\n *\n * @param {Cipher} cipher The cipher to create a helper for.\n *\n * @return {Object} An object with encrypt and decrypt shortcut functions.\n *\n * @static\n *\n * @example\n *\n * const AES = CryptoJS.lib.Cipher._createHelper(CryptoJS.algo.AES);\n */\n static _createHelper(SubCipher) {\n const selectCipherStrategy = (key) => {\n if (typeof key === 'string') {\n return PasswordBasedCipher\n }\n return SerializableCipher\n }\n\n return {\n encrypt(message, key, cfg) {\n return selectCipherStrategy(key).encrypt(SubCipher, message, key, cfg)\n },\n\n decrypt(ciphertext, key, cfg) {\n return selectCipherStrategy(key).decrypt(\n SubCipher,\n ciphertext,\n key,\n cfg\n )\n },\n }\n }\n\n /**\n * Resets this cipher to its initial state.\n *\n * @example\n *\n * cipher.reset();\n */\n reset() {\n // Reset data buffer\n super.reset.call(this)\n\n // Perform concrete-cipher logic\n this._doReset()\n }\n\n /**\n * Adds data to be encrypted or decrypted.\n *\n * @param {WordArray|string} dataUpdate The data to encrypt or decrypt.\n *\n * @return {WordArray} The data after processing.\n *\n * @example\n *\n * const encrypted = cipher.process('data');\n * const encrypted = cipher.process(wordArray);\n */\n process(dataUpdate) {\n // Append\n this._append(dataUpdate)\n\n // Process available blocks\n return this._process()\n }\n\n /**\n * Finalizes the encryption or decryption process.\n * Note that the finalize operation is effectively a destructive, read-once operation.\n *\n * @param {WordArray|string} dataUpdate The final data to encrypt or decrypt.\n *\n * @return {WordArray} The data after final processing.\n *\n * @example\n *\n * const encrypted = cipher.finalize();\n * const encrypted = cipher.finalize('data');\n * const encrypted = cipher.finalize(wordArray);\n */\n finalize(dataUpdate) {\n // Final data update\n if (dataUpdate) {\n this._append(dataUpdate)\n }\n\n // Perform concrete-cipher logic\n const finalProcessedData = this._doFinalize()\n\n return finalProcessedData\n }\n}\nCipher._ENC_XFORM_MODE = 1\nCipher._DEC_XFORM_MODE = 2\nCipher.keySize = 128 / 32\nCipher.ivSize = 128 / 32\n\n/**\n * Abstract base stream cipher template.\n *\n * @property {number} blockSize\n *\n * The number of 32-bit words this cipher operates on. Default: 1 (32 bits)\n */\nexport class StreamCipher extends Cipher {\n constructor(...args) {\n super(...args)\n\n this.blockSize = 1\n }\n\n _doFinalize() {\n // Process partial blocks\n const finalProcessedBlocks = this._process(!!'flush')\n\n return finalProcessedBlocks\n }\n}\n\n/**\n * Abstract base block cipher mode template.\n */\nexport class BlockCipherMode extends Base {\n /**\n * Initializes a newly created mode.\n *\n * @param {Cipher} cipher A block cipher instance.\n * @param {Array} iv The IV words.\n *\n * @example\n *\n * const mode = CryptoJS.mode.CBC.Encryptor.create(cipher, iv.words);\n */\n constructor(cipher, iv) {\n super()\n\n this._cipher = cipher\n this._iv = iv\n }\n\n /**\n * Creates this mode for encryption.\n *\n * @param {Cipher} cipher A block cipher instance.\n * @param {Array} iv The IV words.\n *\n * @static\n *\n * @example\n *\n * const mode = CryptoJS.mode.CBC.createEncryptor(cipher, iv.words);\n */\n static createEncryptor(cipher, iv) {\n return this.Encryptor.create(cipher, iv)\n }\n\n /**\n * Creates this mode for decryption.\n *\n * @param {Cipher} cipher A block cipher instance.\n * @param {Array} iv The IV words.\n *\n * @static\n *\n * @example\n *\n * const mode = CryptoJS.mode.CBC.createDecryptor(cipher, iv.words);\n */\n static createDecryptor(cipher, iv) {\n return this.Decryptor.create(cipher, iv)\n }\n}\n\nfunction xorBlock(words, offset, blockSize) {\n const _words = words\n let block\n\n // Shortcut\n const iv = this._iv\n\n // Choose mixing block\n if (iv) {\n block = iv\n\n // Remove IV for subsequent blocks\n this._iv = undefined\n } else {\n block = this._prevBlock\n }\n\n // XOR blocks\n for (let i = 0; i < blockSize; i += 1) {\n _words[offset + i] ^= block[i]\n }\n}\n\n/**\n * Cipher Block Chaining mode.\n */\n\n/**\n * Abstract base CBC mode.\n */\nexport class CBC extends BlockCipherMode {}\n/**\n * CBC encryptor.\n */\nCBC.Encryptor = class extends CBC {\n /**\n * Processes the data block at offset.\n *\n * @param {Array} words The data words to operate on.\n * @param {number} offset The offset where the block starts.\n *\n * @example\n *\n * mode.processBlock(data.words, offset);\n */\n processBlock(words, offset) {\n // Shortcuts\n const cipher = this._cipher\n const { blockSize } = cipher\n\n // XOR and encrypt\n xorBlock.call(this, words, offset, blockSize)\n cipher.encryptBlock(words, offset)\n\n // Remember this block to use with next block\n this._prevBlock = words.slice(offset, offset + blockSize)\n }\n}\n/**\n * CBC decryptor.\n */\nCBC.Decryptor = class extends CBC {\n /**\n * Processes the data block at offset.\n *\n * @param {Array} words The data words to operate on.\n * @param {number} offset The offset where the block starts.\n *\n * @example\n *\n * mode.processBlock(data.words, offset);\n */\n processBlock(words, offset) {\n // Shortcuts\n const cipher = this._cipher\n const { blockSize } = cipher\n\n // Remember this block to use with next block\n const thisBlock = words.slice(offset, offset + blockSize)\n\n // Decrypt and XOR\n cipher.decryptBlock(words, offset)\n xorBlock.call(this, words, offset, blockSize)\n\n // This block becomes the previous block\n this._prevBlock = thisBlock\n }\n}\n\n/**\n * PKCS #5/7 padding strategy.\n */\nexport const Pkcs7 = {\n /**\n * Pads data using the algorithm defined in PKCS #5/7.\n *\n * @param {WordArray} data The data to pad.\n * @param {number} blockSize The multiple that the data should be padded to.\n *\n * @static\n *\n * @example\n *\n * CryptoJS.pad.Pkcs7.pad(wordArray, 4);\n */\n pad(data, blockSize) {\n // Shortcut\n const blockSizeBytes = blockSize * 4\n\n // Count padding bytes\n const nPaddingBytes = blockSizeBytes - (data.sigBytes % blockSizeBytes)\n\n // Create padding word\n const paddingWord =\n (nPaddingBytes << 24) |\n (nPaddingBytes << 16) |\n (nPaddingBytes << 8) |\n nPaddingBytes\n\n // Create padding\n const paddingWords = []\n for (let i = 0; i < nPaddingBytes; i += 4) {\n paddingWords.push(paddingWord)\n }\n const padding = WordArray.create(paddingWords, nPaddingBytes)\n\n // Add padding\n data.concat(padding)\n },\n\n /**\n * Unpads data that had been padded using the algorithm defined in PKCS #5/7.\n *\n * @param {WordArray} data The data to unpad.\n *\n * @static\n *\n * @example\n *\n * CryptoJS.pad.Pkcs7.unpad(wordArray);\n */\n unpad(data) {\n const _data = data\n\n // Get number of padding bytes from last byte\n const nPaddingBytes = _data.words[(_data.sigBytes - 1) >>> 2] & 0xff\n\n // Remove padding\n _data.sigBytes -= nPaddingBytes\n },\n}\n\n/**\n * Abstract base block cipher template.\n *\n * @property {number} blockSize\n *\n * The number of 32-bit words this cipher operates on. Default: 4 (128 bits)\n */\nexport class BlockCipher extends Cipher {\n constructor(xformMode, key, cfg) {\n /**\n * Configuration options.\n *\n * @property {Mode} mode The block mode to use. Default: CBC\n * @property {Padding} padding The padding strategy to use. Default: Pkcs7\n */\n super(\n xformMode,\n key,\n Object.assign(\n {\n mode: CBC,\n padding: Pkcs7,\n },\n cfg\n )\n )\n\n this.blockSize = 128 / 32\n }\n\n reset() {\n let modeCreator\n\n // Reset cipher\n super.reset.call(this)\n\n // Shortcuts\n const { cfg } = this\n const { iv, mode } = cfg\n\n // Reset block mode\n if (this._xformMode === this.constructor._ENC_XFORM_MODE) {\n modeCreator = mode.createEncryptor\n } /* if (this._xformMode == this._DEC_XFORM_MODE) */ else {\n modeCreator = mode.createDecryptor\n // Keep at least one block in the buffer for unpadding\n this._minBufferSize = 1\n }\n\n this._mode = modeCreator.call(mode, this, iv && iv.words)\n this._mode.__creator = modeCreator\n }\n\n _doProcessBlock(words, offset) {\n this._mode.processBlock(words, offset)\n }\n\n _doFinalize() {\n let finalProcessedBlocks\n\n // Shortcut\n const { padding } = this.cfg\n\n // Finalize\n if (this._xformMode === this.constructor._ENC_XFORM_MODE) {\n // Pad data\n padding.pad(this._data, this.blockSize)\n\n // Process final blocks\n finalProcessedBlocks = this._process(!!'flush')\n } /* if (this._xformMode == this._DEC_XFORM_MODE) */ else {\n // Process final blocks\n finalProcessedBlocks = this._process(!!'flush')\n\n // Unpad data\n padding.unpad(finalProcessedBlocks)\n }\n\n return finalProcessedBlocks\n }\n}\n\n/**\n * A collection of cipher parameters.\n *\n * @property {WordArray} ciphertext The raw ciphertext.\n * @property {WordArray} key The key to this ciphertext.\n * @property {WordArray} iv The IV used in the ciphering operation.\n * @property {WordArray} salt The salt used with a key derivation function.\n * @property {Cipher} algorithm The cipher algorithm.\n * @property {Mode} mode The block mode used in the ciphering operation.\n * @property {Padding} padding The padding scheme used in the ciphering operation.\n * @property {number} blockSize The block size of the cipher.\n * @property {Format} formatter\n * The default formatting strategy to convert this cipher params object to a string.\n */\nexport class CipherParams extends Base {\n /**\n * Initializes a newly created cipher params object.\n *\n * @param {Object} cipherParams An object with any of the possible cipher parameters.\n *\n * @example\n *\n * var cipherParams = CryptoJS.lib.CipherParams.create({\n * ciphertext: ciphertextWordArray,\n * key: keyWordArray,\n * iv: ivWordArray,\n * salt: saltWordArray,\n * algorithm: CryptoJS.algo.AES,\n * mode: CryptoJS.mode.CBC,\n * padding: CryptoJS.pad.PKCS7,\n * blockSize: 4,\n * formatter: CryptoJS.format.OpenSSL\n * });\n */\n constructor(cipherParams) {\n super()\n\n this.mixIn(cipherParams)\n }\n\n /**\n * Converts this cipher params object to a string.\n *\n * @param {Format} formatter (Optional) The formatting strategy to use.\n *\n * @return {string} The stringified cipher params.\n *\n * @throws Error If neither the formatter nor the default formatter is set.\n *\n * @example\n *\n * var string = cipherParams + '';\n * var string = cipherParams.toString();\n * var string = cipherParams.toString(CryptoJS.format.OpenSSL);\n */\n toString(formatter) {\n return (formatter || this.formatter).stringify(this)\n }\n}\n\n/**\n * OpenSSL formatting strategy.\n */\nexport const OpenSSLFormatter = {\n /**\n * Converts a cipher params object to an OpenSSL-compatible string.\n *\n * @param {CipherParams} cipherParams The cipher params object.\n *\n * @return {string} The OpenSSL-compatible string.\n *\n * @static\n *\n * @example\n *\n * var openSSLString = CryptoJS.format.OpenSSL.stringify(cipherParams);\n */\n stringify(cipherParams) {\n let wordArray\n\n // Shortcuts\n const { ciphertext, salt } = cipherParams\n\n // Format\n if (salt) {\n wordArray = WordArray.create([0x53616c74, 0x65645f5f])\n .concat(salt)\n .concat(ciphertext)\n } else {\n wordArray = ciphertext\n }\n\n return wordArray.toString(Base64)\n },\n\n /**\n * Converts an OpenSSL-compatible string to a cipher params object.\n *\n * @param {string} openSSLStr The OpenSSL-compatible string.\n *\n * @return {CipherParams} The cipher params object.\n *\n * @static\n *\n * @example\n *\n * var cipherParams = CryptoJS.format.OpenSSL.parse(openSSLString);\n */\n parse(openSSLStr) {\n let salt\n\n // Parse base64\n const ciphertext = Base64.parse(openSSLStr)\n\n // Shortcut\n const ciphertextWords = ciphertext.words\n\n // Test for salt\n if (\n ciphertextWords[0] === 0x53616c74 &&\n ciphertextWords[1] === 0x65645f5f\n ) {\n // Extract salt\n salt = WordArray.create(ciphertextWords.slice(2, 4))\n\n // Remove salt from ciphertext\n ciphertextWords.splice(0, 4)\n ciphertext.sigBytes -= 16\n }\n\n return CipherParams.create({ ciphertext, salt })\n },\n}\n\n/**\n * A cipher wrapper that returns ciphertext as a serializable cipher params object.\n */\nexport class SerializableCipher extends Base {\n /**\n * Encrypts a message.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {WordArray|string} message The message to encrypt.\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {CipherParams} A cipher params object.\n *\n * @static\n *\n * @example\n *\n * var ciphertextParams = CryptoJS.lib.SerializableCipher\n * .encrypt(CryptoJS.algo.AES, message, key);\n * var ciphertextParams = CryptoJS.lib.SerializableCipher\n * .encrypt(CryptoJS.algo.AES, message, key, { iv: iv });\n * var ciphertextParams = CryptoJS.lib.SerializableCipher\n * .encrypt(CryptoJS.algo.AES, message, key, { iv: iv, format: CryptoJS.format.OpenSSL });\n */\n static encrypt(cipher, message, key, cfg) {\n // Apply config defaults\n const _cfg = Object.assign(new Base(), this.cfg, cfg)\n\n // Encrypt\n const encryptor = cipher.createEncryptor(key, _cfg)\n const ciphertext = encryptor.finalize(message)\n\n // Shortcut\n const cipherCfg = encryptor.cfg\n\n // Create and return serializable cipher params\n return CipherParams.create({\n ciphertext,\n key,\n iv: cipherCfg.iv,\n algorithm: cipher,\n mode: cipherCfg.mode,\n padding: cipherCfg.padding,\n blockSize: encryptor.blockSize,\n formatter: _cfg.format,\n })\n }\n\n /**\n * Decrypts serialized ciphertext.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n * @param {WordArray} key The key.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {WordArray} The plaintext.\n *\n * @static\n *\n * @example\n *\n * var plaintext = CryptoJS.lib.SerializableCipher\n * .decrypt(CryptoJS.algo.AES, formattedCiphertext, key,\n * { iv: iv, format: CryptoJS.format.OpenSSL });\n * var plaintext = CryptoJS.lib.SerializableCipher\n * .decrypt(CryptoJS.algo.AES, ciphertextParams, key,\n * { iv: iv, format: CryptoJS.format.OpenSSL });\n */\n static decrypt(cipher, ciphertext, key, cfg) {\n let _ciphertext = ciphertext\n\n // Apply config defaults\n const _cfg = Object.assign(new Base(), this.cfg, cfg)\n\n // Convert string to CipherParams\n _ciphertext = this._parse(_ciphertext, _cfg.format)\n\n // Decrypt\n const plaintext = cipher\n .createDecryptor(key, _cfg)\n .finalize(_ciphertext.ciphertext)\n\n return plaintext\n }\n\n /**\n * Converts serialized ciphertext to CipherParams,\n * else assumed CipherParams already and returns ciphertext unchanged.\n *\n * @param {CipherParams|string} ciphertext The ciphertext.\n * @param {Formatter} format The formatting strategy to use to parse serialized ciphertext.\n *\n * @return {CipherParams} The unserialized ciphertext.\n *\n * @static\n *\n * @example\n *\n * var ciphertextParams = CryptoJS.lib.SerializableCipher\n * ._parse(ciphertextStringOrParams, format);\n */\n static _parse(ciphertext, format) {\n if (typeof ciphertext === 'string') {\n return format.parse(ciphertext, this)\n }\n return ciphertext\n }\n}\n/**\n * Configuration options.\n *\n * @property {Formatter} format\n *\n * The formatting strategy to convert cipher param objects to and from a string.\n * Default: OpenSSL\n */\nSerializableCipher.cfg = Object.assign(new Base(), { format: OpenSSLFormatter })\n\n/**\n * OpenSSL key derivation function.\n */\nexport const OpenSSLKdf = {\n /**\n * Derives a key and IV from a password.\n *\n * @param {string} password The password to derive from.\n * @param {number} keySize The size in words of the key to generate.\n * @param {number} ivSize The size in words of the IV to generate.\n * @param {WordArray|string} salt\n * (Optional) A 64-bit salt to use. If omitted, a salt will be generated randomly.\n *\n * @return {CipherParams} A cipher params object with the key, IV, and salt.\n *\n * @static\n *\n * @example\n *\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32);\n * var derivedParams = CryptoJS.kdf.OpenSSL.execute('Password', 256/32, 128/32, 'saltsalt');\n */\n execute(password, keySize, ivSize, salt, hasher) {\n let _salt = salt\n\n // Generate random salt\n if (!_salt) {\n _salt = WordArray.random(64 / 8)\n }\n\n // Derive key and IV\n let key\n if (!hasher) {\n key = EvpKDFAlgo.create({ keySize: keySize + ivSize }).compute(\n password,\n _salt\n )\n } else {\n key = EvpKDFAlgo.create({ keySize: keySize + ivSize, hasher }).compute(\n password,\n _salt\n )\n }\n\n // Separate key and IV\n const iv = WordArray.create(key.words.slice(keySize), ivSize * 4)\n key.sigBytes = keySize * 4\n\n // Return params\n return CipherParams.create({ key, iv, salt: _salt })\n },\n}\n\n/**\n * A serializable cipher wrapper that derives the key from a password,\n * and returns ciphertext as a serializable cipher params object.\n */\nexport class PasswordBasedCipher extends SerializableCipher {\n /**\n * Encrypts a message using a password.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {WordArray|string} message The message to encrypt.\n * @param {string} password The password.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {CipherParams} A cipher params object.\n *\n * @static\n *\n * @example\n *\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher\n * .encrypt(CryptoJS.algo.AES, message, 'password');\n * var ciphertextParams = CryptoJS.lib.PasswordBasedCipher\n * .encrypt(CryptoJS.algo.AES, message, 'password', { format: CryptoJS.format.OpenSSL });\n */\n static encrypt(cipher, message, password, cfg) {\n // Apply config defaults\n const _cfg = Object.assign(new Base(), this.cfg, cfg)\n\n // Derive key and other params\n const derivedParams = _cfg.kdf.execute(\n password,\n cipher.keySize,\n cipher.ivSize,\n _cfg.salt,\n _cfg.hasher\n )\n\n // Add IV to config\n _cfg.iv = derivedParams.iv\n\n // Encrypt\n const ciphertext = SerializableCipher.encrypt.call(\n this,\n cipher,\n message,\n derivedParams.key,\n _cfg\n )\n\n // Mix in derived params\n ciphertext.mixIn(derivedParams)\n\n return ciphertext\n }\n\n /**\n * Decrypts serialized ciphertext using a password.\n *\n * @param {Cipher} cipher The cipher algorithm to use.\n * @param {CipherParams|string} ciphertext The ciphertext to decrypt.\n * @param {string} password The password.\n * @param {Object} cfg (Optional) The configuration options to use for this operation.\n *\n * @return {WordArray} The plaintext.\n *\n * @static\n *\n * @example\n *\n * var plaintext = CryptoJS.lib.PasswordBasedCipher\n * .decrypt(CryptoJS.algo.AES, formattedCiphertext, 'password',\n * { format: CryptoJS.format.OpenSSL });\n * var plaintext = CryptoJS.lib.PasswordBasedCipher\n * .decrypt(CryptoJS.algo.AES, ciphertextParams, 'password',\n * { format: CryptoJS.format.OpenSSL });\n */\n static decrypt(cipher, ciphertext, password, cfg) {\n let _ciphertext = ciphertext\n\n // Apply config defaults\n const _cfg = Object.assign(new Base(), this.cfg, cfg)\n\n // Convert string to CipherParams\n _ciphertext = this._parse(_ciphertext, _cfg.format)\n\n // Derive key and other params\n const derivedParams = _cfg.kdf.execute(\n password,\n cipher.keySize,\n cipher.ivSize,\n _ciphertext.salt,\n _cfg.hasher\n )\n\n // Add IV to config\n _cfg.iv = derivedParams.iv\n\n // Decrypt\n const plaintext = SerializableCipher.decrypt.call(\n this,\n cipher,\n _ciphertext,\n derivedParams.key,\n _cfg\n )\n\n return plaintext\n }\n}\n/**\n * Configuration options.\n *\n * @property {KDF} kdf\n * The key derivation function to use to generate a key and IV from a password.\n * Default: OpenSSL\n */\nPasswordBasedCipher.cfg = Object.assign(SerializableCipher.cfg, {\n kdf: OpenSSLKdf,\n})\n","//@ts-nocheck\nimport { BlockCipher } from './cipher-core'\n\n// Lookup tables\nconst _SBOX = []\nconst INV_SBOX = []\nconst _SUB_MIX_0 = []\nconst _SUB_MIX_1 = []\nconst _SUB_MIX_2 = []\nconst _SUB_MIX_3 = []\nconst INV_SUB_MIX_0 = []\nconst INV_SUB_MIX_1 = []\nconst INV_SUB_MIX_2 = []\nconst INV_SUB_MIX_3 = []\n\n// Compute lookup tables\n\n// Compute double table\nconst d = []\nfor (let i = 0; i < 256; i += 1) {\n if (i < 128) {\n d[i] = i << 1\n } else {\n d[i] = (i << 1) ^ 0x11b\n }\n}\n\n// Walk GF(2^8)\nlet x = 0\nlet xi = 0\nfor (let i = 0; i < 256; i += 1) {\n // Compute sbox\n let sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n _SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n const x2 = d[x]\n const x4 = d[x2]\n const x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n let t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n _SUB_MIX_0[x] = (t << 24) | (t >>> 8)\n _SUB_MIX_1[x] = (t << 16) | (t >>> 16)\n _SUB_MIX_2[x] = (t << 8) | (t >>> 24)\n _SUB_MIX_3[x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX_0[sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX_1[sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX_2[sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX_3[sx] = t\n\n // Compute next counter\n if (!x) {\n xi = 1\n x = xi\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n}\n\n// Precomputed Rcon lookup\nconst RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\n\n/**\n * AES block cipher algorithm.\n */\nexport class AESAlgo extends BlockCipher {\n _doReset() {\n let t\n\n // Skip reset of nRounds has been set before and key did not change\n if (this._nRounds && this._keyPriorReset === this._key) {\n return\n }\n\n // Shortcuts\n this._keyPriorReset = this._key\n const key = this._keyPriorReset\n const keyWords = key.words\n const keySize = key.sigBytes / 4\n\n // Compute number of rounds\n this._nRounds = keySize + 6\n const nRounds = this._nRounds\n\n // Compute number of key schedule rows\n const ksRows = (nRounds + 1) * 4\n\n // Compute key schedule\n this._keySchedule = []\n const keySchedule = this._keySchedule\n for (let ksRow = 0; ksRow < ksRows; ksRow += 1) {\n if (ksRow < keySize) {\n keySchedule[ksRow] = keyWords[ksRow]\n } else {\n t = keySchedule[ksRow - 1]\n\n if (!(ksRow % keySize)) {\n // Rot word\n t = (t << 8) | (t >>> 24)\n\n // Sub word\n t =\n (_SBOX[t >>> 24] << 24) |\n (_SBOX[(t >>> 16) & 0xff] << 16) |\n (_SBOX[(t >>> 8) & 0xff] << 8) |\n _SBOX[t & 0xff]\n\n // Mix Rcon\n t ^= RCON[(ksRow / keySize) | 0] << 24\n } else if (keySize > 6 && ksRow % keySize === 4) {\n // Sub word\n t =\n (_SBOX[t >>> 24] << 24) |\n (_SBOX[(t >>> 16) & 0xff] << 16) |\n (_SBOX[(t >>> 8) & 0xff] << 8) |\n _SBOX[t & 0xff]\n }\n\n keySchedule[ksRow] = keySchedule[ksRow - keySize] ^ t\n }\n }\n\n // Compute inv key schedule\n this._invKeySchedule = []\n const invKeySchedule = this._invKeySchedule\n for (let invKsRow = 0; invKsRow < ksRows; invKsRow += 1) {\n const ksRow = ksRows - invKsRow\n\n if (invKsRow % 4) {\n t = keySchedule[ksRow]\n } else {\n t = keySchedule[ksRow - 4]\n }\n\n if (invKsRow < 4 || ksRow <= 4) {\n invKeySchedule[invKsRow] = t\n } else {\n invKeySchedule[invKsRow] =\n INV_SUB_MIX_0[_SBOX[t >>> 24]] ^\n INV_SUB_MIX_1[_SBOX[(t >>> 16) & 0xff]] ^\n INV_SUB_MIX_2[_SBOX[(t >>> 8) & 0xff]] ^\n INV_SUB_MIX_3[_SBOX[t & 0xff]]\n }\n }\n }\n\n encryptBlock(M, offset) {\n this._doCryptBlock(\n M,\n offset,\n this._keySchedule,\n _SUB_MIX_0,\n _SUB_MIX_1,\n _SUB_MIX_2,\n _SUB_MIX_3,\n _SBOX\n )\n }\n\n decryptBlock(M, offset) {\n const _M = M\n\n // Swap 2nd and 4th rows\n let t = _M[offset + 1]\n _M[offset + 1] = _M[offset + 3]\n _M[offset + 3] = t\n\n this._doCryptBlock(\n _M,\n offset,\n this._invKeySchedule,\n INV_SUB_MIX_0,\n INV_SUB_MIX_1,\n INV_SUB_MIX_2,\n INV_SUB_MIX_3,\n INV_SBOX\n )\n\n // Inv swap 2nd and 4th rows\n t = _M[offset + 1]\n _M[offset + 1] = _M[offset + 3]\n _M[offset + 3] = t\n }\n\n _doCryptBlock(\n M,\n offset,\n keySchedule,\n SUB_MIX_0,\n SUB_MIX_1,\n SUB_MIX_2,\n SUB_MIX_3,\n SBOX\n ) {\n const _M = M\n\n // Shortcut\n const nRounds = this._nRounds\n\n // Get input, add round key\n let s0 = _M[offset] ^ keySchedule[0]\n let s1 = _M[offset + 1] ^ keySchedule[1]\n let s2 = _M[offset + 2] ^ keySchedule[2]\n let s3 = _M[offset + 3] ^ keySchedule[3]\n\n // Key schedule row counter\n let ksRow = 4\n\n // Rounds\n for (let round = 1; round < nRounds; round += 1) {\n // Shift rows, sub bytes, mix columns, add round key\n const t0 =\n SUB_MIX_0[s0 >>> 24] ^\n SUB_MIX_1[(s1 >>> 16) & 0xff] ^\n SUB_MIX_2[(s2 >>> 8) & 0xff] ^\n SUB_MIX_3[s3 & 0xff] ^\n keySchedule[ksRow]\n ksRow += 1\n const t1 =\n SUB_MIX_0[s1 >>> 24] ^\n SUB_MIX_1[(s2 >>> 16) & 0xff] ^\n SUB_MIX_2[(s3 >>> 8) & 0xff] ^\n SUB_MIX_3[s0 & 0xff] ^\n keySchedule[ksRow]\n ksRow += 1\n const t2 =\n SUB_MIX_0[s2 >>> 24] ^\n SUB_MIX_1[(s3 >>> 16) & 0xff] ^\n SUB_MIX_2[(s0 >>> 8) & 0xff] ^\n SUB_MIX_3[s1 & 0xff] ^\n keySchedule[ksRow]\n ksRow += 1\n const t3 =\n SUB_MIX_0[s3 >>> 24] ^\n SUB_MIX_1[(s0 >>> 16) & 0xff] ^\n SUB_MIX_2[(s1 >>> 8) & 0xff] ^\n SUB_MIX_3[s2 & 0xff] ^\n keySchedule[ksRow]\n ksRow += 1\n\n // Update state\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n // Shift rows, sub bytes, add round key\n const t0 =\n ((SBOX[s0 >>> 24] << 24) |\n (SBOX[(s1 >>> 16) & 0xff] << 16) |\n (SBOX[(s2 >>> 8) & 0xff] << 8) |\n SBOX[s3 & 0xff]) ^\n keySchedule[ksRow]\n ksRow += 1\n const t1 =\n ((SBOX[s1 >>> 24] << 24) |\n (SBOX[(s2 >>> 16) & 0xff] << 16) |\n (SBOX[(s3 >>> 8) & 0xff] << 8) |\n SBOX[s0 & 0xff]) ^\n keySchedule[ksRow]\n ksRow += 1\n const t2 =\n ((SBOX[s2 >>> 24] << 24) |\n (SBOX[(s3 >>> 16) & 0xff] << 16) |\n (SBOX[(s0 >>> 8) & 0xff] << 8) |\n SBOX[s1 & 0xff]) ^\n keySchedule[ksRow]\n ksRow += 1\n const t3 =\n ((SBOX[s3 >>> 24] << 24) |\n (SBOX[(s0 >>> 16) & 0xff] << 16) |\n (SBOX[(s1 >>> 8) & 0xff] << 8) |\n SBOX[s2 & 0xff]) ^\n keySchedule[ksRow]\n ksRow += 1\n\n // Set output\n _M[offset] = t0\n _M[offset + 1] = t1\n _M[offset + 2] = t2\n _M[offset + 3] = t3\n }\n}\nAESAlgo.keySize = 256 / 32\n\n/**\n * Shortcut functions to the cipher's object interface.\n *\n * @example\n *\n * var ciphertext = CryptoJS.AES.encrypt(message, key, cfg);\n * var plaintext = CryptoJS.AES.decrypt(ciphertext, key, cfg);\n */\nexport const AES = BlockCipher._createHelper(AESAlgo)\n","import { AES } from './vendor/crypto-es/lib/aes'\nimport { Utf8 } from './vendor/crypto-es/lib/core'\n\n// https://github.com/rudderlabs/rudder-sdk-js/blob/5494b0acbc6da3df088884b2d10a2d22c0811ffb/LICENSE\n// MIT License\n\n// Copyright (c) 2021 RudderStack\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\n/**\n * Converts a base64 encoded string to bytes array\n * @param base64Str base64 encoded string\n * @returns bytes array\n */\nconst base64ToBytes = (base64Str: string): Uint8Array => {\n const binString = (window as any)?.atob(base64Str) ?? ''\n const bytes = binString.split('').map((char: string) => char.charCodeAt(0))\n return new Uint8Array(bytes)\n}\n\n/**\n * Decodes a base64 encoded string\n * @param value base64 encoded string\n * @returns decoded string\n */\nconst fromBase64 = (value: string): string =>\n new TextDecoder().decode(base64ToBytes(value))\n\n/**\n * JSON parse the value\n * @param {*} value\n */\nfunction parse(value: any) {\n // if not parsable, return as is without json parse\n try {\n return value ? JSON.parse(value) : null\n } catch (e) {\n return value || null\n }\n}\n\nconst rudderHtEncryptKey = 'HTEV'\nexport const rudderHtPrefix = 'HtEvEncrypt:'\n\n/**\n * DEPRECATED\n * decrypt value originally made by Ht fork of rudder v1 encryption\n */\nexport function decryptRudderHtValue(value: string): string | null {\n try {\n if (!value || typeof value !== 'string' || value.trim() === '') {\n return null\n }\n\n // Try if its hightouch-fork-of-rudder v1 encrypted\n // We should be able to delete this shortly\n // We do not intend to encrypt future anonymousIds\n if (value.substring(0, rudderHtPrefix.length) === rudderHtPrefix) {\n return parse(\n // @ts-ignore 2554\n AES.decrypt(\n value.substring(rudderHtPrefix.length),\n rudderHtEncryptKey\n ).toString(Utf8)\n )\n }\n } catch (error) {\n console.error(error)\n }\n return value\n}\n\nconst rudderEncryptKey = 'Rudder'\nconst rudderPrefixV1 = 'RudderEncrypt:'\nconst rudderPrefixV3 = 'RS_ENC_v3_'\n\n/**\n * decrypt value originally made by rudder v1 or v3 encryption\n */\nexport function decryptRudderValue(value: string): string | null {\n try {\n if (!value || typeof value !== 'string' || value.trim() === '') {\n return null\n }\n\n // Try if its rudder v1 encrypted\n if (value.substring(0, rudderPrefixV1.length) === rudderPrefixV1) {\n return parse(\n // @ts-ignore 2554\n AES.decrypt(\n value.substring(rudderPrefixV1.length),\n rudderEncryptKey\n ).toString(Utf8)\n )\n }\n\n // Try if its rudder v3 encrypted\n if (value.substring(0, rudderPrefixV3.length) === rudderPrefixV3) {\n const parsed = parse(fromBase64(value.substring(rudderPrefixV3.length)))\n if (!parsed || typeof parsed !== 'string' || parsed.trim() === '') {\n return null\n }\n return parsed\n }\n } catch (error) {\n console.error(error)\n }\n return value\n}\n","// https://github.com/rudderlabs/rudder-sdk-js/blob/3a818accd24e6b3667c75a6b60fb12aba36bdf7e/packages/analytics-js/LICENSE\n// MIT License\n\n// Copyright (c) 2021 RudderStack\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\nexport type SessionInfo = {\n autoTrack?: boolean\n manualTrack?: boolean\n timeout?: number\n expiresAt?: number\n id?: number\n sessionStart?: boolean\n}\n\nexport type SessionContext = {\n sessionId?: number\n sessionStart?: boolean\n}\n\n/**\n * A function to validate current session and return true/false depending on that\n * @returns boolean\n */\nexport const hasSessionExpired = (expiresAt: number): boolean => {\n const timestamp = Date.now()\n return Boolean(timestamp > expiresAt)\n}\n\nconst generateSessionId = (): number => Date.now()\n\nexport const isManualSessionIdValid = (sessionId?: number): boolean => {\n if (\n !sessionId ||\n sessionId.toString().startsWith('-') ||\n sessionId.toString().length < 10\n ) {\n return false\n }\n return true\n}\n\nconst MIN_SESSION_TIMEOUT_MS = 10 * 1000 // 10 seconds\nconst DEFAULT_SESSION_TIMEOUT_MS = 30 * 60 * 1000 // 30 minutes\n\n/**\n * A function to generate new auto tracking session\n * @param sessionTimeout current timestamp\n * @returns SessionInfo\n */\nexport const generateAutoTrackingSession = (\n sessionTimeout?: number\n): SessionInfo => {\n const timestamp = Date.now()\n const timeout: number = sessionTimeout || DEFAULT_SESSION_TIMEOUT_MS\n if (timeout < MIN_SESSION_TIMEOUT_MS) {\n console.warn('Session timeouts of less than 10 seconds are not recommended')\n }\n return {\n id: timestamp, // set the current timestamp\n expiresAt: timestamp + timeout, // set the expiry time of the session\n timeout,\n sessionStart: true,\n autoTrack: true,\n }\n}\n\n/**\n * A function to generate new manual tracking session\n * @param id Provided sessionId\n * @returns SessionInfo\n */\nexport const generateManualTrackingSession = (id?: number): SessionInfo => {\n const sessionId: number = isManualSessionIdValid(id)\n ? (id as number)\n : generateSessionId()\n return {\n id: sessionId,\n sessionStart: true,\n manualTrack: true,\n }\n}\n\nexport const updateSessionExpiration = (session: SessionInfo): SessionInfo => {\n session.sessionStart = false\n if (session.autoTrack) {\n // extend session by `timeout`\n session.expiresAt = Date.now() + session.timeout!\n }\n return session\n}\n","import { v4 as uuid } from '@lukeed/uuid'\nimport autoBind from '../../lib/bind-all'\nimport { Traits } from '../events'\nimport {\n CookieOptions,\n UniversalStorage,\n MemoryStorage,\n StorageObject,\n StorageSettings,\n StoreType,\n applyCookieOptions,\n initializeStorages,\n isArrayOfStoreType,\n} from '../storage'\nimport { decryptRudderValue, decryptRudderHtValue } from './migrate'\nimport {\n SessionContext,\n SessionInfo,\n generateAutoTrackingSession,\n generateManualTrackingSession,\n hasSessionExpired,\n updateSessionExpiration,\n} from '../session'\nimport type { HTTPCookieService } from '../http-cookies'\n\nexport type ID = string | null | undefined\n\nexport interface UserOptions {\n /**\n * Disables storing any data about the user.\n */\n disable?: boolean\n localStorageFallbackDisabled?: boolean\n persist?: boolean\n\n /**\n * Replicates \"BrowserCookie\" actions against a matching \"ServerCookie\".\n */\n httpCookieService?: HTTPCookieService\n\n cookie?: {\n key?: string\n oldKey?: string\n }\n\n localStorage?: {\n key: string\n }\n\n sessions?: {\n autoTrack?: boolean\n timeout?: number // milliseconds\n }\n\n /**\n * Store priority\n * @example stores: [StoreType.Cookie, StoreType.Memory]\n */\n storage?: StorageSettings\n}\n\nconst defaults = {\n persist: true,\n cookie: {\n key: 'htjs_user_id',\n oldKey: 'ajs_user',\n },\n localStorage: {\n key: 'htjs_user_traits',\n },\n sessions: {\n autoTrack: true,\n },\n}\n\nconst sessionKey = 'htjs_sesh'\nconst anonymousIdKey = 'htjs_anonymous_id'\nconst rudderHtAnonymousIdKey = 'htev_anonymous_id'\nconst segmentAnonymousIdKey = 'ajs_anonymous_id'\nconst rudderAnonymousIdKey = 'rl_anonymous_id'\n\nexport class User {\n static defaults = defaults\n\n private idKey: string\n private traitsKey: string\n private anonKey: string\n private seshKey: string\n private cookieOptions?: CookieOptions\n\n private legacyUserStore: UniversalStorage<{\n [k: string]:\n | {\n id?: string\n traits?: Traits\n }\n | string\n }>\n private traitsStore: UniversalStorage<{\n [k: string]: Traits\n }>\n\n private identityStore: UniversalStorage<{\n [k: string]: string\n }>\n\n private sessionStore: UniversalStorage<{ [k: string]: SessionInfo }>\n\n options: UserOptions = {}\n\n constructor(options: UserOptions = defaults, cookieOptions?: CookieOptions) {\n this.options = { ...defaults, ...options }\n this.cookieOptions = cookieOptions\n\n this.idKey = options.cookie?.key ?? defaults.cookie.key\n this.traitsKey = options.localStorage?.key ?? defaults.localStorage.key\n this.anonKey = anonymousIdKey\n this.seshKey = sessionKey\n\n this.identityStore = this.createStorage(this.options, cookieOptions)\n\n this.sessionStore = this.createStorage(this.options, cookieOptions)\n\n // using only cookies for legacy user store\n this.legacyUserStore = this.createStorage(\n this.options,\n cookieOptions,\n (s) => s === StoreType.Cookie\n )\n\n // using only localStorage / memory for traits store\n this.traitsStore = this.createStorage(\n this.options,\n cookieOptions,\n (s) => s !== StoreType.Cookie\n )\n\n const legacyUser = this.legacyUserStore.get(defaults.cookie.oldKey)\n if (legacyUser && typeof legacyUser === 'object') {\n legacyUser.id && this.id(legacyUser.id)\n legacyUser.traits && this.traits(legacyUser.traits)\n }\n\n // HTTPCookies require that localStorage values be synced to cookies\n if (this.options.httpCookieService) {\n this.identityStore.getAndSync(this.anonKey)\n this.identityStore.getAndSync(this.idKey)\n this.options.httpCookieService?.dispatchCreate()\n }\n\n autoBind(this)\n }\n\n id = (id?: ID): ID => {\n if (this.options.disable) {\n return null\n }\n\n const prevId = this.identityStore.getAndSync(this.idKey)\n\n if (id !== undefined) {\n const clearingIdentity = id === null\n const changingIdentity = id !== prevId && prevId !== null && id !== null\n const creatingIdentity = id !== prevId && prevId === null && id !== null\n\n this.identityStore.set(this.idKey, id)\n\n if (clearingIdentity) {\n this.options?.httpCookieService?.dispatchClear()\n }\n\n if (changingIdentity) {\n this.anonymousId(null) // this also runs dispatchClear()\n }\n\n if (changingIdentity || creatingIdentity) {\n this.options?.httpCookieService?.dispatchCreate()\n }\n }\n\n const retId = this.identityStore.getAndSync(this.idKey)\n if (retId) return retId\n\n const retLeg = this.legacyUserStore.get(defaults.cookie.oldKey)\n return retLeg ? (typeof retLeg === 'object' ? retLeg.id : retLeg) : null\n }\n\n private legacySIO(): [string, string] | null {\n const val = this.legacyUserStore.get('_sio') as string\n if (!val) {\n return null\n }\n const [anon, user] = val.split('----')\n return [anon, user]\n }\n\n anonymousId = (id?: ID): ID => {\n if (this.options.disable) {\n return null\n }\n\n if (id === undefined) {\n let val = this.identityStore.getAndSync(this.anonKey)\n let migrated = false\n\n // support anonymousId migration from other analytics providers\n if (!val) {\n val = decryptRudderHtValue(\n this.identityStore.getAndSync(rudderHtAnonymousIdKey) ?? ''\n )\n migrated = Boolean(val)\n if (val) this.identityStore.set(this.anonKey, val)\n }\n if (!val) {\n val = this.identityStore.getAndSync(segmentAnonymousIdKey)\n migrated = Boolean(val)\n if (val) this.identityStore.set(this.anonKey, val)\n }\n if (!val) {\n val = decryptRudderValue(\n this.identityStore.getAndSync(rudderAnonymousIdKey) ?? ''\n )\n migrated = Boolean(val)\n if (val) this.identityStore.set(this.anonKey, val)\n }\n if (!val) {\n val = this.legacySIO()?.[0] ?? null\n }\n\n if (migrated) {\n this.options?.httpCookieService?.dispatchCreate()\n }\n\n if (val) {\n return val\n }\n }\n\n if (id === null) {\n this.identityStore.set(this.anonKey, null)\n const clearedVal = this.identityStore.getAndSync(this.anonKey)\n this.options?.httpCookieService?.dispatchClear()\n return clearedVal\n }\n\n this.identityStore.set(this.anonKey, id ?? uuid())\n const syncedVal = this.identityStore.getAndSync(this.anonKey)\n\n this.options?.httpCookieService?.dispatchCreate()\n return syncedVal\n }\n\n traits = (traits?: Traits | null): Traits | undefined => {\n if (this.options.disable) {\n return\n }\n\n if (traits === null) {\n traits = {}\n }\n\n if (traits) {\n this.traitsStore.set(this.traitsKey, traits ?? {})\n }\n\n return this.traitsStore.get(this.traitsKey) ?? {}\n }\n\n identify(id?: ID, traits?: Traits): void {\n if (this.options.disable) {\n return\n }\n\n traits = traits ?? {}\n const currentId = this.id()\n\n if (currentId === null || currentId === id) {\n traits = {\n ...this.traits(),\n ...traits,\n }\n }\n\n if (id) {\n this.id(id)\n }\n\n this.traits(traits)\n }\n\n startManualSession(sessionId?: number) {\n if (this.options.disable) {\n return\n }\n this.sessionStore.clear(this.seshKey)\n const session = generateManualTrackingSession(sessionId)\n this.sessionStore.set(this.seshKey, session)\n }\n\n endManualSession() {\n this.sessionStore.clear(this.seshKey)\n }\n\n private getAndUpdateSessionInfo(): SessionInfo | null {\n if (this.options.disable) {\n return null\n }\n\n let session = this.sessionStore.getAndSync(this.seshKey)\n\n if (session == null) {\n if (this.options?.sessions?.autoTrack) {\n session = generateAutoTrackingSession(this.options?.sessions?.timeout)\n this.sessionStore.set(this.seshKey, session)\n return session\n }\n return null\n }\n\n if (session?.autoTrack && hasSessionExpired(session.expiresAt!)) {\n session = generateAutoTrackingSession(this.options?.sessions?.timeout)\n this.sessionStore.set(this.seshKey, session)\n return session\n }\n\n session = updateSessionExpiration(session)\n this.sessionStore.set(this.seshKey, session)\n return session\n }\n\n getAndUpdateSession(): SessionContext | null {\n const sessionInfo = this.getAndUpdateSessionInfo()\n const session: SessionContext = {}\n if (sessionInfo?.id) session.sessionId = sessionInfo.id\n if (sessionInfo?.sessionStart)\n session.sessionStart = sessionInfo.sessionStart\n return session\n }\n\n sessionId(): number | null {\n const session = this.sessionStore.getAndSync(this.seshKey)\n return session?.id ?? null\n }\n\n logout(): void {\n this.anonymousId(null)\n this.id(null)\n this.traits({})\n }\n\n reset(): void {\n this.logout()\n this.identityStore.clear(this.idKey)\n this.identityStore.clear(this.anonKey)\n this.sessionStore.clear(this.seshKey)\n this.traitsStore.clear(this.traitsKey)\n }\n\n load(): User {\n return new User(this.options, this.cookieOptions)\n }\n\n save(): boolean {\n return true\n }\n\n /**\n * Creates the right storage system applying all the user options, cookie options and particular filters\n * @param options UserOptions\n * @param cookieOpts CookieOptions\n * @param filterStores filter function to apply to any StoreTypes (skipped if options specify using a custom storage)\n * @returns a Storage object\n */\n private createStorage<T extends StorageObject = StorageObject>(\n options: UserOptions,\n cookieOpts?: CookieOptions,\n filterStores?: (value: StoreType) => boolean\n ): UniversalStorage<T> {\n let stores: StoreType[] = [\n StoreType.LocalStorage,\n StoreType.Cookie,\n StoreType.Memory,\n ]\n\n // If disabled we won't have any storage functionality\n if (options.disable) {\n return new UniversalStorage<T>([])\n }\n\n // If persistance is disabled we will always fallback to Memory Storage\n if (!options.persist) {\n return new UniversalStorage<T>([new MemoryStorage<T>()])\n }\n\n if (options.storage !== undefined && options.storage !== null) {\n if (isArrayOfStoreType(options.storage)) {\n // If the user only specified order of stores we will still apply filters and transformations e.g. not using localStorage if localStorageFallbackDisabled\n stores = options.storage.stores\n }\n }\n\n // Disable LocalStorage\n if (options.localStorageFallbackDisabled) {\n stores = stores.filter((s) => s !== StoreType.LocalStorage)\n }\n\n // Apply Additional filters\n if (filterStores) {\n stores = stores.filter(filterStores)\n }\n\n return new UniversalStorage(\n initializeStorages(applyCookieOptions(stores, cookieOpts))\n )\n }\n}\n\nconst groupDefaults: UserOptions = {\n persist: true,\n cookie: {\n key: 'htjs_group_id',\n },\n localStorage: {\n key: 'htjs_group_properties',\n },\n}\n\nexport class Group extends User {\n constructor(options: UserOptions = groupDefaults, cookie?: CookieOptions) {\n super({ ...groupDefaults, ...options }, cookie)\n autoBind(this)\n }\n\n anonymousId = (_id?: ID): ID => {\n return undefined\n }\n}\n","import { Analytics } from '../analytics'\nimport { Context } from '../context'\nimport { isThenable } from '../../lib/is-thenable'\nimport { HtEventsBrowserCore } from '../analytics/interfaces'\nimport { version } from '../../generated/version'\nimport { getGlobalAnalytics } from '../../lib/global-analytics-helper'\nimport {\n isBufferedPageContext,\n BufferedPageContext,\n getDefaultBufferedPageContext,\n createPageContext,\n PageContext,\n} from '../page'\n\n/**\n * The names of any HtEventsBrowser methods that also exist on Analytics\n */\nexport type PreInitMethodName =\n | 'screen'\n | 'register'\n | 'deregister'\n | 'user'\n | 'trackSubmit'\n | 'trackClick'\n | 'trackLink'\n | 'trackForm'\n | 'pageview'\n | 'identify'\n | 'reset'\n | 'group'\n | 'track'\n | 'ready'\n | 'alias'\n | 'debug'\n | 'page'\n | 'once'\n | 'off'\n | 'on'\n | 'addSourceMiddleware'\n | 'setAnonymousId'\n | 'addDestinationMiddleware'\n\n// Union of all analytics methods that _do not_ return a Promise\ntype SyncPreInitMethodName = {\n [MethodName in PreInitMethodName]: ReturnType<\n Analytics[MethodName]\n > extends Promise<any>\n ? never\n : MethodName\n}[PreInitMethodName]\n\nconst flushSyncAnalyticsCalls = (\n name: SyncPreInitMethodName,\n analytics: Analytics,\n buffer: PreInitMethodCallBuffer\n): void => {\n buffer.getCalls(name).forEach((c) => {\n // While the underlying methods are synchronous, the callAnalyticsMethod returns a promise,\n // which normalizes success and error states between async and non-async methods, with no perf penalty.\n callAnalyticsMethod(analytics, c).catch(console.error)\n })\n}\n\nexport const flushAddSourceMiddleware = async (\n analytics: Analytics,\n buffer: PreInitMethodCallBuffer\n) => {\n for (const c of buffer.getCalls('addSourceMiddleware')) {\n await callAnalyticsMethod(analytics, c).catch(console.error)\n }\n}\n\nexport const flushOn = flushSyncAnalyticsCalls.bind(this, 'on')\n\nexport const flushSetAnonymousID = flushSyncAnalyticsCalls.bind(\n this,\n 'setAnonymousId'\n)\n\nexport const flushAnalyticsCallsInNewTask = (\n analytics: Analytics,\n buffer: PreInitMethodCallBuffer\n): void => {\n buffer.toArray().forEach((m) => {\n setTimeout(() => {\n callAnalyticsMethod(analytics, m).catch(console.error)\n }, 0)\n })\n}\n\nexport const popPageContext = (args: unknown[]): PageContext | undefined => {\n if (hasBufferedPageContextAsLastArg(args)) {\n const ctx = args.pop() as BufferedPageContext\n return createPageContext(ctx)\n }\n}\n\nexport const hasBufferedPageContextAsLastArg = (\n args: unknown[]\n): args is [...unknown[], BufferedPageContext] | [BufferedPageContext] => {\n const lastArg = args[args.length - 1]\n return isBufferedPageContext(lastArg)\n}\n\n/**\n * Represents a buffered method call that occurred before initialization.\n */\nexport class PreInitMethodCall<\n MethodName extends PreInitMethodName = PreInitMethodName,\n> {\n method: MethodName\n args: PreInitMethodParams<MethodName>\n called: boolean\n resolve: (v: ReturnType<Analytics[MethodName]>) => void\n reject: (reason: any) => void\n constructor(\n method: PreInitMethodCall<MethodName>['method'],\n args: PreInitMethodParams<MethodName>,\n resolve: PreInitMethodCall<MethodName>['resolve'] = () => {},\n reject: PreInitMethodCall<MethodName>['reject'] = console.error\n ) {\n this.method = method\n this.resolve = resolve\n this.reject = reject\n this.called = false\n this.args = args\n }\n}\n\nexport type PreInitMethodParams<MethodName extends PreInitMethodName> =\n | [...Parameters<Analytics[MethodName]>, BufferedPageContext]\n | Parameters<Analytics[MethodName]>\n\n/**\n * Infer return type; if return type is promise, unwrap it.\n */\ntype ReturnTypeUnwrap<Fn> = Fn extends (...args: any[]) => infer ReturnT\n ? ReturnT extends PromiseLike<infer Unwrapped>\n ? Unwrapped\n : ReturnT\n : never\n\ntype MethodCallMap = Partial<Record<PreInitMethodName, PreInitMethodCall[]>>\n\ntype SnippetWindowBufferedMethodCall<\n MethodName extends PreInitMethodName = PreInitMethodName,\n> = [MethodName, ...PreInitMethodParams<MethodName>]\n\n/**\n * A list of the method calls before initialization for snippet users\n * For example, [[\"track\", \"foo\", {bar: 123}], [\"page\"], [\"on\", \"ready\", function(){..}]\n */\ntype SnippetBuffer = SnippetWindowBufferedMethodCall[]\n\n/**\n * Represents any and all the buffered method calls that occurred before initialization.\n */\nexport class PreInitMethodCallBuffer {\n private _callMap: MethodCallMap = {}\n\n constructor(...calls: PreInitMethodCall[]) {\n this.push(...calls)\n }\n\n /**\n * Pull any buffered method calls from the window object, and use them to hydrate the instance buffer.\n */\n private get calls() {\n this._pushSnippetWindowBuffer()\n return this._callMap\n }\n\n private set calls(calls: MethodCallMap) {\n this._callMap = calls\n }\n\n getCalls<T extends PreInitMethodName>(methodName: T): PreInitMethodCall<T>[] {\n return (this.calls[methodName] ?? []) as PreInitMethodCall<T>[]\n }\n\n push(...calls: PreInitMethodCall[]): void {\n calls.forEach((call) => {\n const eventsExpectingPageContext: PreInitMethodName[] = [\n 'track',\n 'screen',\n 'alias',\n 'group',\n 'page',\n 'identify',\n ]\n if (\n eventsExpectingPageContext.includes(call.method) &&\n !hasBufferedPageContextAsLastArg(call.args)\n ) {\n call.args = [...call.args, getDefaultBufferedPageContext()]\n }\n\n if (this.calls[call.method]) {\n this.calls[call.method]!.push(call)\n } else {\n this.calls[call.method] = [call]\n }\n })\n }\n\n clear(): void {\n // clear calls in the global snippet buffered array.\n this._pushSnippetWindowBuffer()\n // clear calls in this instance\n this.calls = {}\n }\n\n toArray(): PreInitMethodCall[] {\n return ([] as PreInitMethodCall[]).concat(...Object.values(this.calls))\n }\n\n /**\n * Fetch the buffered method calls from the window object,\n * normalize them, and use them to hydrate the buffer.\n * This removes existing buffered calls from the window object.\n */\n private _pushSnippetWindowBuffer(): void {\n const wa = getGlobalAnalytics()\n if (!Array.isArray(wa)) return undefined\n const buffered: SnippetBuffer = wa.splice(0, wa.length)\n const calls = buffered.map(\n ([methodName, ...args]) => new PreInitMethodCall(methodName, args)\n )\n this.push(...calls)\n }\n}\n\n/**\n * Call method and mark as \"called\"\n * This function should never throw an error\n */\nexport async function callAnalyticsMethod<T extends PreInitMethodName>(\n analytics: Analytics,\n call: PreInitMethodCall<T>\n): Promise<void> {\n try {\n if (call.called) {\n return undefined\n }\n call.called = true\n\n const result: ReturnType<Analytics[T]> = (\n analytics[call.method] as Function\n )(...call.args)\n\n if (isThenable(result)) {\n // do not defer for non-async methods\n await result\n }\n\n call.resolve(result)\n } catch (err) {\n call.reject(err)\n }\n}\n\nexport type AnalyticsLoader = (\n preInitBuffer: PreInitMethodCallBuffer\n) => Promise<[Analytics, Context]>\n\nexport class AnalyticsBuffered\n implements PromiseLike<[Analytics, Context]>, HtEventsBrowserCore\n{\n instance?: Analytics\n ctx?: Context\n private _preInitBuffer: PreInitMethodCallBuffer\n private _promise: Promise<[Analytics, Context]>\n constructor(loader: AnalyticsLoader) {\n this._preInitBuffer = new PreInitMethodCallBuffer()\n this._promise = loader(this._preInitBuffer)\n this._promise\n .then(([ajs, ctx]) => {\n this.instance = ajs\n this.ctx = ctx\n })\n .catch(() => {\n // intentionally do nothing...\n // this result of this promise will be caught by the 'catch' block on this class.\n })\n }\n\n then<T1, T2 = never>(\n ...args: [\n onfulfilled:\n | ((instance: [Analytics, Context]) => T1 | PromiseLike<T1>)\n | null\n | undefined,\n onrejected?: (reason: unknown) => T2 | PromiseLike<T2>,\n ]\n ) {\n return this._promise.then(...args)\n }\n\n catch<TResult = never>(\n ...args: [\n onrejected?:\n | ((reason: any) => TResult | PromiseLike<TResult>)\n | undefined\n | null,\n ]\n ) {\n return this._promise.catch(...args)\n }\n\n finally(...args: [onfinally?: (() => void) | undefined | null]) {\n return this._promise.finally(...args)\n }\n\n trackSubmit = this._createMethod('trackSubmit')\n trackClick = this._createMethod('trackClick')\n trackLink = this._createMethod('trackLink')\n pageView = this._createMethod('pageview')\n identify = this._createMethod('identify')\n reset = this._createMethod('reset')\n group = this._createMethod('group') as HtEventsBrowserCore['group']\n track = this._createMethod('track')\n ready = this._createMethod('ready')\n alias = this._createMethod('alias')\n debug = this._createChainableMethod('debug')\n page = this._createMethod('page')\n once = this._createChainableMethod('once')\n off = this._createChainableMethod('off')\n on = this._createChainableMethod('on')\n addSourceMiddleware = this._createMethod('addSourceMiddleware')\n setAnonymousId = this._createMethod('setAnonymousId')\n addDestinationMiddleware = this._createMethod('addDestinationMiddleware')\n\n screen = this._createMethod('screen')\n register = this._createMethod('register')\n deregister = this._createMethod('deregister')\n user = this._createMethod('user')\n readonly VERSION = version\n\n private _createMethod<T extends PreInitMethodName>(methodName: T) {\n return (\n ...args: Parameters<Analytics[T]>\n ): Promise<ReturnTypeUnwrap<Analytics[T]>> => {\n if (this.instance) {\n const result = (this.instance[methodName] as Function)(...args)\n return Promise.resolve(result)\n }\n return new Promise((resolve, reject) => {\n this._preInitBuffer.push(\n new PreInitMethodCall(methodName, args, resolve as any, reject)\n )\n })\n }\n }\n\n /**\n * These are for methods that where determining when the method gets \"flushed\" is not important.\n * These methods will resolve when analytics is fully initialized, and return type (other than Analytics)will not be available.\n */\n private _createChainableMethod<T extends PreInitMethodName>(methodName: T) {\n return (...args: Parameters<Analytics[T]>): AnalyticsBuffered => {\n if (this.instance) {\n void (this.instance[methodName] as Function)(...args)\n return this\n } else {\n this._preInitBuffer.push(new PreInitMethodCall(methodName, args))\n }\n\n return this\n }\n }\n}\n","/**\n * Check if thenable\n * (instanceof Promise doesn't respect realms)\n */\nexport const isThenable = (value: unknown): boolean =>\n typeof value === 'object' &&\n value !== null &&\n 'then' in value &&\n typeof (value as any).then === 'function'\n","import {\n AliasParams,\n DispatchedEvent,\n EventParams,\n GroupParams,\n PageParams,\n resolveAliasArguments,\n resolveArguments,\n resolvePageArguments,\n resolveUserArguments,\n IdentifyParams,\n} from '../arguments-resolver'\nimport type { FormArgs, LinkArgs } from '../auto-track'\nimport { isOffline } from '../connection'\nimport { Context } from '../context'\nimport { dispatch, Emitter } from '@ht-sdks/events-sdk-js-core'\nimport {\n Callback,\n EventFactory,\n Integrations,\n Plan,\n EventProperties,\n HightouchEvent,\n} from '../events'\nimport type { Plugin } from '../plugin'\nimport { EventQueue } from '../queue/event-queue'\nimport { Group, ID, User, UserOptions } from '../user'\nimport autoBind from '../../lib/bind-all'\nimport { PersistedPriorityQueue } from '../../lib/priority-queue/persisted'\nimport type { LegacyDestination } from '../../plugins/ajs-destination'\nimport type {\n LegacyIntegration,\n ClassicIntegrationSource,\n} from '../../plugins/ajs-destination/types'\nimport type {\n DestinationMiddlewareFunction,\n MiddlewareFunction,\n} from '../../plugins/middleware'\nimport { version } from '../../generated/version'\nimport { PriorityQueue } from '../../lib/priority-queue'\nimport { getGlobal } from '../../lib/get-global'\nimport { AnalyticsClassic, AnalyticsCore } from './interfaces'\nimport { HighEntropyHint } from '../../lib/client-hints/interfaces'\nimport type { LegacySettings } from '../../browser'\nimport {\n CookieOptions,\n MemoryStorage,\n UniversalStorage,\n StorageSettings,\n StoreType,\n applyCookieOptions,\n initializeStorages,\n isArrayOfStoreType,\n} from '../storage'\nimport { PluginFactory } from '../../plugins/remote-loader'\nimport { setGlobalAnalytics } from '../../lib/global-analytics-helper'\nimport { popPageContext } from '../buffer'\nimport type {\n HTTPCookieService,\n HTTPCookieServiceOptions,\n} from '../http-cookies'\nimport type { DestinationSettings } from '../../plugins/destinations'\nimport type { BuiltInPluginName } from '../../plugins/built-in-plugins'\n\nconst deprecationWarning =\n 'This is being deprecated and will be not be available in future releases of Analytics JS'\n\n// reference any pre-existing \"analytics\" object so a user can restore the reference\nconst global: any = getGlobal()\nconst _analytics = global?.analytics\n\nfunction createDefaultQueue(\n name: string,\n retryQueue = false,\n disablePersistance = false\n) {\n const maxAttempts = retryQueue ? 4 : 1\n const priorityQueue = disablePersistance\n ? new PriorityQueue(maxAttempts, [])\n : new PersistedPriorityQueue(maxAttempts, name)\n return new EventQueue(priorityQueue)\n}\n\nexport interface AnalyticsSettings {\n writeKey: string\n timeout?: number\n plugins?: (Plugin | PluginFactory | BuiltInPluginName)[]\n classicIntegrations?: ClassicIntegrationSource[]\n}\n\nexport interface InitOptions {\n /**\n * Disables storing any data on the client-side via cookies or localstorage.\n * Defaults to `false`.\n *\n */\n disableClientPersistence?: boolean\n /**\n * Disables automatically converting ISO string event properties into Dates.\n * ISO string to Date conversions occur right before sending events to a classic device mode integration,\n * after any destination middleware have been ran.\n * Defaults to `false`.\n */\n disableAutoISOConversion?: boolean\n initialPageview?: boolean\n cookie?: CookieOptions\n storage?: StorageSettings\n user?: UserOptions\n group?: UserOptions\n integrations?: Integrations\n plan?: Plan\n retryQueue?: boolean\n obfuscate?: boolean\n /**\n * This callback allows you to update/mutate CDN Settings.\n * This is called directly after settings are fetched from the CDN.\n */\n updateCDNSettings?: (settings: LegacySettings) => LegacySettings\n /**\n * Disables or sets constraints on processing of query string parameters\n */\n useQueryString?:\n | boolean\n | {\n aid?: RegExp\n uid?: RegExp\n }\n /**\n * Array of high entropy Client Hints to request. These may be rejected by the user agent - only required hints should be requested.\n */\n highEntropyValuesClientHints?: HighEntropyHint[]\n /**\n * When using the snippet, this is the key that points to the global analytics instance (e.g. window.htevents).\n * default: analytics\n */\n globalAnalyticsKey?: string\n\n /**\n * Allows specifying plugins as configuration. Used to load plugins in `plugins/destinations/*`.\n */\n destinations?: Record<string, DestinationSettings>\n\n /**\n * Array of plugins to load. Can be plugin instances, plugin factories, or built-in plugin names.\n * Built-in names are resolved via createPlugin() for code-split loading.\n */\n plugins?: (Plugin | PluginFactory | BuiltInPluginName)[]\n\n /**\n * When setting httpCookieServiceOptions, an HTTPCookieService is automatically created\n */\n httpCookieServiceOptions?: HTTPCookieServiceOptions\n /**\n * When not setting httpCookieServiceOptions, you may pass your own instance of HTTPCookieService\n */\n httpCookieService?: HTTPCookieService\n\n /**\n * Shortcuts for overriding the default Hightouch.io integration settings\n */\n apiHost?: string // Defaults to us-east-1.hightouch-events.com\n protocol?: string // Defaults to https\n batching?: boolean // Defaults to false\n}\n\n/* analytics-classic stubs */\nfunction _stub(this: never) {\n console.warn(deprecationWarning)\n}\n\nexport class Analytics\n extends Emitter\n implements AnalyticsCore, AnalyticsClassic\n{\n protected settings: AnalyticsSettings\n private _user: User\n private _group: Group\n private eventFactory: EventFactory\n private _debug = false\n private _universalStorage: UniversalStorage\n\n initialized = false\n integrations: Integrations\n options: InitOptions\n queue: EventQueue\n\n constructor(\n settings: AnalyticsSettings,\n options?: InitOptions,\n queue?: EventQueue,\n user?: User,\n group?: Group\n ) {\n super()\n const cookieOptions = options?.cookie\n const disablePersistance = options?.disableClientPersistence ?? false\n this.settings = settings\n this.settings.timeout = this.settings.timeout ?? 300\n this.queue =\n queue ??\n createDefaultQueue(\n `${settings.writeKey}:event-queue`,\n options?.retryQueue,\n disablePersistance\n )\n\n const storageSetting = options?.storage\n this._universalStorage = this.createStore(\n disablePersistance,\n storageSetting,\n cookieOptions\n )\n\n this._user =\n user ??\n new User(\n {\n persist: !disablePersistance,\n storage: options?.storage,\n httpCookieService: options?.httpCookieService,\n // Any User specific options override everything else\n ...options?.user,\n },\n cookieOptions\n ).load()\n this._group =\n group ??\n new Group(\n {\n persist: !disablePersistance,\n storage: options?.storage,\n // Any group specific options override everything else\n ...options?.group,\n },\n cookieOptions\n ).load()\n this.eventFactory = new EventFactory(this._user)\n this.integrations = options?.integrations ?? {}\n this.options = options ?? {}\n autoBind(this)\n }\n\n user = (): User => {\n return this._user\n }\n\n /**\n * Creates the storage system based on the settings received\n * @returns Storage\n */\n private createStore(\n disablePersistance: boolean,\n storageSetting: InitOptions['storage'],\n cookieOptions?: CookieOptions | undefined\n ): UniversalStorage {\n // DisablePersistance option overrides all, no storage will be used outside of memory even if specified\n if (disablePersistance) {\n return new UniversalStorage([new MemoryStorage()])\n } else {\n if (storageSetting) {\n if (isArrayOfStoreType(storageSetting)) {\n // We will create the store with the priority for customer settings\n return new UniversalStorage(\n initializeStorages(\n applyCookieOptions(storageSetting.stores, cookieOptions)\n )\n )\n }\n }\n }\n // We default to our multi storage with priority\n return new UniversalStorage(\n initializeStorages([\n StoreType.LocalStorage,\n {\n name: StoreType.Cookie,\n settings: cookieOptions,\n },\n StoreType.Memory,\n ])\n )\n }\n\n get storage(): UniversalStorage {\n return this._universalStorage\n }\n\n async track(...args: EventParams): Promise<DispatchedEvent> {\n const pageCtx = popPageContext(args)\n const [name, data, opts, cb] = resolveArguments(...args)\n\n const hightouchEvent = this.eventFactory.track(\n name,\n data as EventProperties,\n opts,\n this.integrations,\n pageCtx\n )\n\n return this._dispatch(hightouchEvent, cb).then((ctx) => {\n this.emit('track', name, ctx.event.properties, ctx.event.options)\n return ctx\n })\n }\n\n async page(...args: PageParams): Promise<DispatchedEvent> {\n const pageCtx = popPageContext(args)\n const [category, page, properties, options, callback] =\n resolvePageArguments(...args)\n\n const hightouchEvent = this.eventFactory.page(\n category,\n page,\n properties,\n options,\n this.integrations,\n pageCtx\n )\n\n return this._dispatch(hightouchEvent, callback).then((ctx) => {\n this.emit('page', category, page, ctx.event.properties, ctx.event.options)\n return ctx\n })\n }\n\n async identify(...args: IdentifyParams): Promise<DispatchedEvent> {\n const pageCtx = popPageContext(args)\n const [id, _traits, options, callback] = resolveUserArguments(this._user)(\n ...args\n )\n\n this._user.identify(id, _traits)\n const hightouchEvent = this.eventFactory.identify(\n this._user.id(),\n this._user.traits(),\n options,\n this.integrations,\n pageCtx\n )\n\n return this._dispatch(hightouchEvent, callback).then((ctx) => {\n this.emit(\n 'identify',\n ctx.event.userId,\n ctx.event.traits,\n ctx.event.options\n )\n return ctx\n })\n }\n\n group(): Group\n group(...args: GroupParams): Promise<DispatchedEvent>\n group(...args: GroupParams): Promise<DispatchedEvent> | Group {\n const pageCtx = popPageContext(args)\n if (args.length === 0) {\n return this._group\n }\n\n const [id, _traits, options, callback] = resolveUserArguments(this._group)(\n ...args\n )\n\n this._group.identify(id, _traits)\n const groupId = this._group.id()\n const groupTraits = this._group.traits()\n\n const hightouchEvent = this.eventFactory.group(\n groupId,\n groupTraits,\n options,\n this.integrations,\n pageCtx\n )\n\n return this._dispatch(hightouchEvent, callback).then((ctx) => {\n this.emit('group', ctx.event.groupId, ctx.event.traits, ctx.event.options)\n return ctx\n })\n }\n\n async alias(...args: AliasParams): Promise<DispatchedEvent> {\n const pageCtx = popPageContext(args)\n const [to, from, options, callback] = resolveAliasArguments(...args)\n const hightouchEvent = this.eventFactory.alias(\n to,\n from,\n options,\n this.integrations,\n pageCtx\n )\n return this._dispatch(hightouchEvent, callback).then((ctx) => {\n this.emit('alias', to, from, ctx.event.options)\n return ctx\n })\n }\n\n async screen(...args: PageParams): Promise<DispatchedEvent> {\n const pageCtx = popPageContext(args)\n const [category, page, properties, options, callback] =\n resolvePageArguments(...args)\n\n const hightouchEvent = this.eventFactory.screen(\n category,\n page,\n properties,\n options,\n this.integrations,\n pageCtx\n )\n return this._dispatch(hightouchEvent, callback).then((ctx) => {\n this.emit(\n 'screen',\n category,\n page,\n ctx.event.properties,\n ctx.event.options\n )\n return ctx\n })\n }\n\n async trackClick(...args: LinkArgs): Promise<Analytics> {\n const autotrack = await import(\n /* webpackChunkName: \"auto-track\" */ '../auto-track'\n )\n return autotrack.link.call(this, ...args)\n }\n\n async trackLink(...args: LinkArgs): Promise<Analytics> {\n const autotrack = await import(\n /* webpackChunkName: \"auto-track\" */ '../auto-track'\n )\n return autotrack.link.call(this, ...args)\n }\n\n async trackSubmit(...args: FormArgs): Promise<Analytics> {\n const autotrack = await import(\n /* webpackChunkName: \"auto-track\" */ '../auto-track'\n )\n return autotrack.form.call(this, ...args)\n }\n\n async trackForm(...args: FormArgs): Promise<Analytics> {\n const autotrack = await import(\n /* webpackChunkName: \"auto-track\" */ '../auto-track'\n )\n return autotrack.form.call(this, ...args)\n }\n\n async register(...plugins: Plugin[]): Promise<Context> {\n const ctx = Context.system()\n\n const registrations = plugins.map((xt) =>\n this.queue.register(ctx, xt, this)\n )\n await Promise.all(registrations)\n\n return ctx\n }\n\n async deregister(...plugins: string[]): Promise<Context> {\n const ctx = Context.system()\n\n const deregistrations = plugins.map((pl) => {\n const plugin = this.queue.plugins.find((p) => p.name === pl)\n if (plugin) {\n return this.queue.deregister(ctx, plugin, this)\n } else {\n ctx.log('warn', `plugin ${pl} not found`)\n }\n })\n\n await Promise.all(deregistrations)\n\n return ctx\n }\n\n debug(toggle: boolean): Analytics {\n // Make sure legacy ajs debug gets turned off if it was enabled before upgrading.\n if (toggle === false && localStorage.getItem('debug')) {\n localStorage.removeItem('debug')\n }\n this._debug = toggle\n return this\n }\n\n startSession(sessionId?: number): void {\n this._user.startManualSession(sessionId)\n }\n\n endSession(): void {\n this._user.endManualSession()\n }\n\n getSessionId(): number | null {\n return this._user.sessionId() ?? null\n }\n\n reset(): void {\n this._user.reset()\n this._group.reset()\n this.emit('reset')\n }\n\n timeout(timeout: number): void {\n this.settings.timeout = timeout\n }\n\n private async _dispatch(\n event: HightouchEvent,\n callback?: Callback\n ): Promise<DispatchedEvent> {\n const ctx = new Context(event)\n if (isOffline() && !this.options.retryQueue) {\n return ctx\n }\n return dispatch(ctx, this.queue, this, {\n callback,\n debug: this._debug,\n timeout: this.settings.timeout,\n })\n }\n\n async addSourceMiddleware(fn: MiddlewareFunction): Promise<Analytics> {\n await this.queue.criticalTasks.run(async () => {\n const { sourceMiddlewarePlugin } = await import(\n /* webpackChunkName: \"middleware\" */ '../../plugins/middleware'\n )\n\n const integrations: Record<string, boolean> = {}\n this.queue.plugins.forEach((plugin) => {\n if (plugin.type === 'destination') {\n return (integrations[plugin.name] = true)\n }\n })\n\n const plugin = sourceMiddlewarePlugin(fn, integrations)\n await this.register(plugin)\n })\n\n return this\n }\n\n /* TODO: This does not have to return a promise? */\n addDestinationMiddleware(\n integrationName: string,\n ...middlewares: DestinationMiddlewareFunction[]\n ): Promise<Analytics> {\n const legacyDestinations = this.queue.plugins.filter(\n (xt) => xt.name.toLowerCase() === integrationName.toLowerCase()\n ) as LegacyDestination[]\n\n legacyDestinations.forEach((destination) => {\n destination.addMiddleware(...middlewares)\n })\n return Promise.resolve(this)\n }\n\n setAnonymousId(id?: string): ID {\n return this._user.anonymousId(id)\n }\n\n async queryString(query: string): Promise<Context[]> {\n if (this.options.useQueryString === false) {\n return []\n }\n\n const { queryString } = await import(\n /* webpackChunkName: \"queryString\" */ '../query-string'\n )\n return queryString(this, query)\n }\n\n /**\n * @deprecated This function does not register a destination plugin.\n *\n * Instantiates a legacy Analytics.js destination.\n *\n * This function does not register the destination as an Analytics.JS plugin,\n * all the it does it to invoke the factory function back.\n */\n use(legacyPluginFactory: (analytics: Analytics) => void): Analytics {\n legacyPluginFactory(this)\n return this\n }\n\n async ready(\n callback: Function = (res: Promise<unknown>[]): Promise<unknown>[] => res\n ): Promise<unknown> {\n return Promise.all(\n this.queue.plugins.map((i) => (i.ready ? i.ready() : Promise.resolve()))\n ).then((res) => {\n callback(res)\n return res\n })\n }\n\n // analytics-classic api\n\n noConflict(): Analytics {\n console.warn(deprecationWarning)\n setGlobalAnalytics(_analytics ?? this)\n return this\n }\n\n normalize(msg: HightouchEvent): HightouchEvent {\n console.warn(deprecationWarning)\n return this.eventFactory.normalize(msg)\n }\n\n get failedInitializations(): string[] {\n console.warn(deprecationWarning)\n return this.queue.failedInitializations\n }\n\n get VERSION(): string {\n return version\n }\n\n /* @deprecated - noop */\n async initialize(\n _settings?: AnalyticsSettings,\n _options?: InitOptions\n ): Promise<Analytics> {\n console.warn(deprecationWarning)\n return Promise.resolve(this)\n }\n\n init = this.initialize.bind(this)\n\n async pageview(url: string): Promise<Analytics> {\n console.warn(deprecationWarning)\n await this.page({ path: url })\n return this\n }\n\n get plugins() {\n console.warn(deprecationWarning)\n // @ts-expect-error\n return this._plugins ?? {}\n }\n\n get Integrations() {\n console.warn(deprecationWarning)\n const integrations = this.queue.plugins\n .filter((plugin) => plugin.type === 'destination')\n .reduce(\n (acc, plugin) => {\n const name = `${plugin.name\n .toLowerCase()\n .replace('.', '')\n .split(' ')\n .join('-')}Integration`\n\n // @ts-expect-error\n const integration = window[name] as\n | (LegacyIntegration & { Integration?: LegacyIntegration })\n | undefined\n\n if (!integration) {\n return acc\n }\n\n const nested = integration.Integration // hack - Google Analytics function resides in the \"Integration\" field\n if (nested) {\n acc[plugin.name] = nested\n return acc\n }\n\n acc[plugin.name] = integration as LegacyIntegration\n return acc\n },\n {} as Record<string, LegacyIntegration>\n )\n\n return integrations\n }\n\n log = _stub\n addIntegrationMiddleware = _stub\n listeners = _stub\n addEventListener = _stub\n removeAllListeners = _stub\n removeListener = _stub\n removeEventListener = _stub\n hasListeners = _stub\n add = _stub\n addIntegration = _stub\n\n // snippet function\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n push(args: any[]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const an = this as any\n const method = args.shift()\n if (method) {\n if (!an[method]) return\n }\n an[method].apply(this, args)\n }\n}\n","import { fetch } from '../../lib/fetch'\n\ntype DeferredRequest = () => Promise<Response>\n\nexport type HTTPCookieServiceOptions = {\n renewUrl: string\n clearUrl: string\n retries?: number\n backoff?: number\n flushInterval?: number\n}\n\n/**\n * `HTTPCookieService.load(...)` should be awaited inside `loadAnalytics(...)`.\n * If the server can recreate an expired \"Browser Cookie\", by inspecting existing\n * \"Server Cookies\", we should delay dispatching events until receiving the Cookie.\n *\n * dispatch$Method class methods should be used after any cookie interactions:\n * `dispatchCreate()` should be called after creating any new browser cookies.\n * `dispatchClear()` should be called after clearing any browser cookies.\n *\n * Manual `startQueueConsumer()` or `stopQueueConsumer()` is not usually necessary.\n *\n * Glossary:\n * \"Server Cookies\": `HTTPOnly:true`, stored on client, but only server can access.\n * \"Browser Cookies\": `HTTPOnly:false`, stored on client, and both client and server can access.\n */\nexport class HTTPCookieService {\n private queue: DeferredRequest[]\n private renewUrl: string\n private clearUrl: string\n private retries: number\n private backoff: number\n private flushInterval: number\n private flushIntervalId?: NodeJS.Timer\n\n private constructor(options: HTTPCookieServiceOptions) {\n const urls = HTTPCookieService.urlHelper(options)\n this.renewUrl = urls.renewUrl\n this.clearUrl = urls.clearUrl\n\n this.backoff = options.backoff ?? 300\n this.retries = options.retries ?? 3\n this.flushInterval = options.flushInterval ?? 1000\n this.queue = []\n }\n\n static urlHelper(options: HTTPCookieServiceOptions): {\n renewUrl: string\n clearUrl: string\n } {\n const origin = window.location.origin\n return {\n renewUrl: new URL(options.renewUrl, origin).href,\n clearUrl: new URL(options.clearUrl, origin).href,\n }\n }\n\n static async load(\n options: HTTPCookieServiceOptions\n ): Promise<HTTPCookieService> {\n const cookieService = new HTTPCookieService(options)\n\n // renew any existing HTTPCookies already on the device\n // we want `load()` to block on this, so await directly instead of calling dispatch\n const req = cookieService.sendHTTPCookies(cookieService.renewUrl)\n await retry(req, cookieService.retries, cookieService.backoff).catch(\n console.error\n )\n\n // consume HTTPCookie actions, sequentially, as needed\n cookieService.startQueueConsumer()\n\n return cookieService\n }\n\n dispatchCreate() {\n this.queue.push(this.sendHTTPCookies(this.renewUrl))\n }\n\n dispatchClear() {\n this.queue.push(this.sendHTTPCookies(this.clearUrl))\n }\n\n startQueueConsumer() {\n if (this.flushIntervalId) {\n console.error('HTTPCookie queue consumer is already running.')\n return\n }\n const bound = this.consumeQueue.bind(this)\n this.flushIntervalId = setInterval(\n () => bound().catch(console.error),\n this.flushInterval\n )\n }\n\n stopQueueConsumer() {\n if (!this.flushIntervalId) {\n console.error('HTTPCookie queue consumer is already stopped.')\n return\n }\n clearInterval(this.flushIntervalId)\n this.flushIntervalId = undefined\n }\n\n private sendHTTPCookies(serviceUrl: string): DeferredRequest {\n return async function (): Promise<Response> {\n return await fetch(serviceUrl, {\n credentials: 'include',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'post',\n body: JSON.stringify({\n sentAt: new Date().toISOString(),\n }),\n })\n }\n }\n\n /**\n * This queue exists to avoid race conditions.\n *\n * Customer-developers may not `await` all promises.\n *\n * Therefore, introducing async code into analytics.track(), etc\n * could create race conditions in customer code.\n *\n * The queue enforces: if someone calls analytics.clear()\n * before calling analytics.identify(), the cookie service\n * will consume those actions, sequentially, even if no promises\n * are awaited.\n */\n private async consumeQueue() {\n while (this.queue.length > 0) {\n const req = this.queue.shift() as DeferredRequest\n await retry(req, this.retries, this.backoff).catch(console.error)\n }\n }\n}\n\nasync function sleep(delayMS: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, delayMS))\n}\n\nasync function retry(\n req: DeferredRequest,\n retries: number,\n backoff: number\n): Promise<Response> {\n while (retries >= 0) {\n try {\n return await req().then((res) => {\n if (res.ok) return res\n throw new Error(`Status: ${res.status} ${res.statusText}`)\n })\n } catch (error) {\n retries -= 1\n if (retries <= 0) throw error\n await sleep(backoff)\n }\n }\n throw Error('HtEvents: Problem with DeferredRequest')\n}\n","import jar from 'js-cookie'\nimport type { Context } from '../../core/context'\nimport type { Plugin } from '../../core/plugin'\nimport { version } from '../../generated/version'\nimport { HightouchEvent } from '../../core/events'\nimport { Campaign, PluginType } from '@ht-sdks/events-sdk-js-core'\nimport { getVersionType } from '../../lib/version-type'\nimport { tld } from '../../core/user/tld'\nimport { gracefulDecodeURIComponent } from '../../core/query-string/gracefulDecodeURIComponent'\nimport { CookieStorage, UniversalStorage } from '../../core/storage'\nimport { Analytics } from '../../core/analytics'\nimport { clientHints } from '../../lib/client-hints'\nimport { UADataValues } from '../../lib/client-hints/interfaces'\n\nlet cookieOptions: jar.CookieAttributes | undefined\nfunction getCookieOptions(): jar.CookieAttributes {\n if (cookieOptions) {\n return cookieOptions\n }\n\n const domain = tld(window.location.href)\n cookieOptions = {\n expires: 31536000000, // 1 year\n secure: false,\n path: '/',\n }\n if (domain) {\n cookieOptions.domain = domain\n }\n\n return cookieOptions\n}\n\ntype Ad = { id: string; type: string }\n\nfunction ads(query: string): Ad | undefined {\n const queryIds: Record<string, string> = {\n btid: 'dataxu',\n urid: 'millennial-media',\n }\n\n if (query.startsWith('?')) {\n query = query.substring(1)\n }\n query = query.replace(/\\?/g, '&')\n const parts = query.split('&')\n\n for (const part of parts) {\n const [k, v] = part.split('=')\n if (queryIds[k]) {\n return {\n id: v,\n type: queryIds[k],\n }\n }\n }\n}\n\nexport function utm(query: string): Campaign {\n if (query.startsWith('?')) {\n query = query.substring(1)\n }\n query = query.replace(/\\?/g, '&')\n\n return query.split('&').reduce((acc, str) => {\n const [k, v = ''] = str.split('=')\n if (k.startsWith('utm_') && k.length > 4) {\n let utmParam = k.slice(4) as keyof Campaign\n if (utmParam === 'campaign') {\n utmParam = 'name'\n }\n acc[utmParam] = gracefulDecodeURIComponent(v)\n }\n return acc\n }, {} as Campaign)\n}\n\nexport function ampId(): string | undefined {\n const ampId = jar.get('_ga')\n if (ampId && ampId.startsWith('amp')) {\n return ampId\n }\n}\n\nfunction referrerId(\n query: string,\n ctx: HightouchEvent['context'],\n disablePersistance: boolean\n): void {\n const storage = new UniversalStorage<{\n 's:context.referrer': Ad\n }>(disablePersistance ? [] : [new CookieStorage(getCookieOptions())])\n\n const stored = storage.get('s:context.referrer')\n\n const ad = ads(query) ?? stored\n\n if (!ad) {\n return\n }\n\n if (ctx) {\n ctx.referrer = { ...ctx.referrer, ...ad }\n }\n\n storage.set('s:context.referrer', ad)\n}\n\n/**\n *\n * @param obj e.g. { foo: 'b', bar: 'd', baz: ['123', '456']}\n * @returns e.g. 'foo=b&bar=d&baz=123&baz=456'\n */\nconst objectToQueryString = (\n obj: Record<string, string | string[]>\n): string => {\n try {\n const searchParams = new URLSearchParams()\n Object.entries(obj).forEach(([k, v]) => {\n if (Array.isArray(v)) {\n v.forEach((value) => searchParams.append(k, value))\n } else {\n searchParams.append(k, v)\n }\n })\n return searchParams.toString()\n } catch {\n return ''\n }\n}\n\nclass EnvironmentEnrichmentPlugin implements Plugin {\n private instance!: Analytics\n private userAgentData: UADataValues | undefined\n\n name = 'Page Enrichment'\n type: PluginType = 'before'\n version = '0.1.0'\n isLoaded = () => true\n load = async (_ctx: Context, instance: Analytics) => {\n this.instance = instance\n try {\n this.userAgentData = await clientHints(\n this.instance.options.highEntropyValuesClientHints\n )\n } catch (_) {\n // if client hints API doesn't return anything leave undefined\n }\n return Promise.resolve()\n }\n\n private enrich = (ctx: Context): Context => {\n // Note: Types are off - context should never be undefined here, since it is set as part of event creation.\n const evtCtx = ctx.event.context!\n\n const search = evtCtx.page!.search || ''\n\n const query =\n typeof search === 'object' ? objectToQueryString(search) : search\n\n evtCtx.userAgent = navigator.userAgent\n evtCtx.userAgentData = this.userAgentData\n\n // @ts-ignore\n const locale = navigator.userLanguage || navigator.language\n\n if (typeof evtCtx.locale === 'undefined' && typeof locale !== 'undefined') {\n evtCtx.locale = locale\n }\n\n evtCtx.library ??= {\n name: 'events-sdk-js',\n version: `${getVersionType() === 'web' ? 'web' : 'npm'}-${version}`,\n }\n\n if (query && !evtCtx.campaign) {\n evtCtx.campaign = utm(query)\n }\n\n const amp = ampId()\n if (amp) {\n evtCtx.amp = { id: amp }\n }\n\n referrerId(\n query,\n evtCtx,\n this.instance.options.disableClientPersistence ?? false\n )\n\n try {\n evtCtx.timezone = Intl.DateTimeFormat().resolvedOptions().timeZone\n } catch (_) {\n // If browser doesn't have support leave timezone undefined\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\nexport const envEnrichment = new EnvironmentEnrichmentPlugin()\n","import { HighEntropyHint, NavigatorUAData, UADataValues } from './interfaces'\n\n// Tolerate Pascal-cased `Brand` / `Version` aliases emitted by some polyfills\n// and enterprise wrappers on `brands` entries. The W3C spec only defines\n// lowercase `brand` / `version`\n// (https://wicg.github.io/ua-client-hints/#dictdef-navigatoruabrandversion),\n// and downstream consumers read those, so we coerce to lowercase here.\nfunction normalizeBrands(\n brands: UADataValues['brands']\n): UADataValues['brands'] {\n return brands?.map(({ Brand, Version, brand, version, ...rest }: any) => ({\n ...rest,\n brand: brand ?? Brand,\n version: version ?? Version,\n }))\n}\n\nexport async function clientHints(\n hints?: HighEntropyHint[]\n): Promise<UADataValues | undefined> {\n const userAgentData = (navigator as any).userAgentData as\n | NavigatorUAData\n | undefined\n\n if (!userAgentData) return undefined\n\n const data = !hints\n ? userAgentData.toJSON()\n : await userAgentData\n .getHighEntropyValues(hints)\n .catch(() => userAgentData.toJSON())\n\n return { ...data, brands: normalizeBrands(data.brands) }\n}\n","import type { Integrations } from '../../core/events/interfaces'\nimport { LegacySettings } from '../../browser'\nimport { JSONObject, JSONValue } from '../../core/events'\nimport { DestinationPlugin, Plugin } from '../../core/plugin'\nimport { loadScript } from '../../lib/load-script'\nimport { getCDN } from '../../lib/parse-cdn'\nimport {\n applyDestinationMiddleware,\n DestinationMiddlewareFunction,\n} from '../middleware'\nimport { Context, ContextCancelation } from '../../core/context'\nimport { Analytics } from '../../core/analytics'\n\nexport interface RemotePlugin {\n /** The name of the remote plugin */\n name: string\n /** The creation name of the remote plugin */\n creationName: string\n /** The url of the javascript file to load */\n url: string\n /** The UMD/global name the plugin uses. Plugins are expected to exist here with the `PluginFactory` method signature */\n libraryName: string\n /** The settings related to this plugin. */\n settings: JSONObject\n}\n\nexport class ActionDestination implements DestinationPlugin {\n name: string // destination name\n version = '1.0.0'\n type: Plugin['type']\n\n alternativeNames: string[] = []\n\n middleware: DestinationMiddlewareFunction[] = []\n\n action: Plugin\n\n constructor(name: string, action: Plugin) {\n this.action = action\n this.name = name\n this.type = action.type\n this.alternativeNames.push(action.name)\n }\n\n addMiddleware(...fn: DestinationMiddlewareFunction[]): void {\n if (this.type === 'destination') {\n this.middleware.push(...fn)\n }\n }\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(\n methodName: 'track' | 'page' | 'identify' | 'alias' | 'group' | 'screen'\n ) {\n return async (ctx: Context): Promise<Context> => {\n if (!this.action[methodName]) return ctx\n\n let transformedContext: Context = ctx\n // Transformations only allowed for destination plugins. Other plugin types support mutating events.\n if (this.type === 'destination') {\n transformedContext = await this.transform(ctx)\n }\n\n await this.action[methodName]!(transformedContext)\n\n return ctx\n }\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 /* --- PASSTHROUGH METHODS --- */\n isLoaded(): boolean {\n return this.action.isLoaded()\n }\n\n ready(): Promise<unknown> {\n return this.action.ready ? this.action.ready() : Promise.resolve()\n }\n\n load(ctx: Context, analytics: Analytics): Promise<unknown> {\n return this.action.load(ctx, analytics)\n }\n\n unload(ctx: Context, analytics: Analytics): Promise<unknown> | unknown {\n return this.action.unload?.(ctx, analytics)\n }\n}\n\nexport type PluginFactory = {\n (settings: JSONValue): Plugin | Plugin[] | Promise<Plugin | Plugin[]>\n pluginName: string\n}\n\nfunction validate(pluginLike: unknown): pluginLike is Plugin[] {\n if (!Array.isArray(pluginLike)) {\n throw new Error('Not a valid list of plugins')\n }\n\n const required = ['load', 'isLoaded', 'name', 'version', 'type']\n pluginLike.forEach((plugin) => {\n required.forEach((method) => {\n if (plugin[method] === undefined) {\n throw new Error(\n `Plugin: ${\n plugin.name ?? 'unknown'\n } missing required function ${method}`\n )\n }\n })\n })\n\n return true\n}\n\nfunction isPluginDisabled(\n userIntegrations: Integrations,\n remotePlugin: RemotePlugin\n) {\n const creationNameEnabled = userIntegrations[remotePlugin.creationName]\n const currentNameEnabled = userIntegrations[remotePlugin.name]\n\n // Check that the plugin isn't explicitly enabled when All: false\n if (\n userIntegrations.All === false &&\n !creationNameEnabled &&\n !currentNameEnabled\n ) {\n return true\n }\n\n // Check that the plugin isn't explicitly disabled\n if (creationNameEnabled === false || currentNameEnabled === false) {\n return true\n }\n\n return false\n}\n\nasync function loadPluginFactory(\n remotePlugin: RemotePlugin,\n obfuscate?: boolean\n): Promise<void | PluginFactory> {\n const defaultCdn = new RegExp('https://cdn.hightouch-events.(com|build)')\n const cdn = getCDN()\n\n if (obfuscate) {\n const urlSplit = remotePlugin.url.split('/')\n const name = urlSplit[urlSplit.length - 2]\n const obfuscatedURL = remotePlugin.url.replace(\n name,\n btoa(name).replace(/=/g, '')\n )\n try {\n await loadScript(obfuscatedURL.replace(defaultCdn, cdn))\n } catch (error) {\n // Due to syncing concerns it is possible that the obfuscated action destination (or requested version) might not exist.\n // We should use the unobfuscated version as a fallback.\n await loadScript(remotePlugin.url.replace(defaultCdn, cdn))\n }\n } else {\n await loadScript(remotePlugin.url.replace(defaultCdn, cdn))\n }\n\n // @ts-expect-error\n if (typeof window[remotePlugin.libraryName] === 'function') {\n // @ts-expect-error\n return window[remotePlugin.libraryName] as PluginFactory\n }\n}\n\nexport async function remoteLoader(\n settings: LegacySettings,\n userIntegrations: Integrations,\n mergedIntegrations: Record<string, JSONObject>,\n obfuscate?: boolean,\n routingMiddleware?: DestinationMiddlewareFunction,\n pluginSources?: PluginFactory[]\n): Promise<Plugin[]> {\n const allPlugins: Plugin[] = []\n\n const routingRules = settings.middlewareSettings?.routingRules ?? []\n\n const pluginPromises = (settings.remotePlugins ?? []).map(\n async (remotePlugin) => {\n if (isPluginDisabled(userIntegrations, remotePlugin)) return\n\n try {\n const pluginFactory =\n pluginSources?.find(\n ({ pluginName }) => pluginName === remotePlugin.name\n ) || (await loadPluginFactory(remotePlugin, obfuscate))\n\n if (pluginFactory) {\n const plugin = await pluginFactory({\n ...remotePlugin.settings,\n ...mergedIntegrations[remotePlugin.name],\n })\n const plugins = Array.isArray(plugin) ? plugin : [plugin]\n\n validate(plugins)\n\n const routing = routingRules.filter(\n (rule) => rule.destinationName === remotePlugin.creationName\n )\n\n plugins.forEach((plugin) => {\n const wrapper = new ActionDestination(\n remotePlugin.creationName,\n plugin\n )\n\n /** Make sure we only apply destination filters to actions of the \"destination\" type to avoid causing issues for hybrid destinations */\n if (\n routing.length &&\n routingMiddleware &&\n plugin.type === 'destination'\n ) {\n wrapper.addMiddleware(routingMiddleware)\n }\n\n allPlugins.push(wrapper)\n })\n }\n } catch (error) {\n console.warn('Failed to load Remote Plugin', error)\n }\n }\n )\n\n await Promise.all(pluginPromises)\n return allPlugins.filter(Boolean)\n}\n","import { HightouchEvent } from '../../core/events'\nimport { fetch } from '../../lib/fetch'\nimport { onPageChange } from '../../lib/on-page-change'\n\nexport type BatchingDispatchConfig = {\n size?: number\n timeout?: number\n}\n\nconst MAX_PAYLOAD_SIZE = 500\n\nfunction kilobytes(buffer: unknown): number {\n const size = encodeURI(JSON.stringify(buffer)).split(/%..|./).length - 1\n return size / 1024\n}\n\n/**\n * Checks if the payload is over or close to\n * the maximum payload size allowed by tracking\n * API.\n */\nfunction approachingTrackingAPILimit(buffer: unknown): boolean {\n return kilobytes(buffer) >= MAX_PAYLOAD_SIZE - 50\n}\n\nfunction chunks(batch: object[]): Array<object[]> {\n const result: object[][] = []\n let index = 0\n\n batch.forEach((item) => {\n const size = kilobytes(result[index])\n if (size >= 64) {\n index++\n }\n\n if (result[index]) {\n result[index].push(item)\n } else {\n result[index] = [item]\n }\n })\n\n return result\n}\n\nexport default function batch(\n apiHost: string,\n config?: BatchingDispatchConfig,\n protocol = 'https'\n) {\n let buffer: object[] = []\n let pageUnloaded = false\n\n const limit = config?.size ?? 10\n const timeout = config?.timeout ?? 5000\n\n function sendBatch(batch: object[]) {\n if (batch.length === 0) {\n return\n }\n\n const writeKey = (batch[0] as HightouchEvent)?.writeKey\n\n // Remove sentAt from every event as batching only needs a single timestamp\n const updatedBatch = batch.map((event) => {\n const { sentAt, ...newEvent } = event as HightouchEvent\n return newEvent\n })\n\n return fetch(`${protocol}://${apiHost}/v1/batch`, {\n keepalive: pageUnloaded,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'post',\n body: JSON.stringify({\n writeKey,\n batch: updatedBatch,\n sentAt: new Date().toISOString(),\n }),\n })\n }\n\n async function flush(): Promise<unknown> {\n if (buffer.length) {\n const batch = buffer\n buffer = []\n return sendBatch(batch)\n }\n }\n\n let schedule: NodeJS.Timeout | undefined\n\n function scheduleFlush(): void {\n if (schedule) {\n return\n }\n\n schedule = setTimeout(() => {\n schedule = undefined\n flush().catch(console.error)\n }, timeout)\n }\n\n onPageChange((unloaded) => {\n pageUnloaded = unloaded\n\n if (pageUnloaded && buffer.length) {\n const reqs = chunks(buffer).map(sendBatch)\n Promise.all(reqs).catch(console.error)\n }\n })\n\n async function dispatch(_url: string, body: object): Promise<unknown> {\n buffer.push(body)\n\n const bufferOverflow =\n buffer.length >= limit || approachingTrackingAPILimit(buffer)\n\n return bufferOverflow || pageUnloaded ? flush() : scheduleFlush()\n }\n\n return {\n dispatch,\n }\n}\n","/**\n * Register event listener on document that fires when:\n * * tab change or tab close (in mobile or desktop)\n * * click back / forward button\n * * click any link or perform any other navigation action\n * * soft refresh / hard refresh\n *\n * adapted from https://stackoverflow.com/questions/3239834/window-onbeforeunload-not-working-on-the-ipad/52864508#52864508,\n */\nexport const onPageChange = (cb: (unloaded: boolean) => void) => {\n let unloaded = false // prevents double firing if both are supported\n\n window.addEventListener('pagehide', () => {\n if (unloaded) return\n unloaded = true\n cb(unloaded)\n })\n\n // using document instead of window because of bug affecting browsers before safari 14 (detail in footnotes https://caniuse.com/?search=visibilitychange)\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState == 'hidden') {\n if (unloaded) return\n unloaded = true\n } else {\n unloaded = false\n }\n cb(unloaded)\n })\n}\n","import { Analytics } from '../../core/analytics'\nimport { LegacySettings } from '../../browser'\nimport { SegmentFacade } from '../../lib/to-facade'\nimport { HightouchioSettings } from './index'\n\nexport function normalize(\n analytics: Analytics,\n json: ReturnType<SegmentFacade['json']>,\n settings?: HightouchioSettings,\n integrations?: LegacySettings['integrations']\n): object {\n const user = analytics.user()\n\n delete json.options\n\n json.writeKey = settings?.apiKey\n\n json.userId = json.userId || user.id()\n json.anonymousId = json.anonymousId || user.anonymousId()\n\n json.sentAt = new Date()\n\n const failed = analytics.queue.failedInitializations || []\n if (failed.length > 0) {\n json._metadata = { failedInitializations: failed }\n }\n\n const bundled: string[] = []\n const unbundled: string[] = []\n\n for (const key in integrations) {\n const integration = integrations[key]\n if (key === 'Hightouch.io') {\n bundled.push(key)\n }\n if (integration.bundlingStatus === 'bundled') {\n bundled.push(key)\n }\n if (integration.bundlingStatus === 'unbundled') {\n unbundled.push(key)\n }\n }\n\n // This will make sure that the disabled cloud mode destinations will be\n // included in the unbundled list.\n for (const settingsUnbundled of settings?.unbundledIntegrations || []) {\n if (!unbundled.includes(settingsUnbundled)) {\n unbundled.push(settingsUnbundled)\n }\n }\n\n const configIds = settings?.maybeBundledConfigIds ?? {}\n const bundledConfigIds: string[] = []\n\n bundled.sort().forEach((name) => {\n ;(configIds[name] ?? []).forEach((id) => {\n bundledConfigIds.push(id)\n })\n })\n\n if (settings?.addBundledMetadata !== false) {\n json._metadata = {\n ...json._metadata,\n bundled: bundled.sort(),\n unbundled: unbundled.sort(),\n bundledIds: bundledConfigIds,\n }\n }\n\n return json\n}\n","import { isOffline } from '../../core/connection'\nimport { Context } from '../../core/context'\nimport { Plugin } from '../../core/plugin'\nimport { attempt } from '@ht-sdks/events-sdk-js-core'\nimport { pWhile } from '../../lib/p-while'\nimport { PriorityQueue } from '../../lib/priority-queue'\n\nasync function flushQueue(\n xt: Plugin,\n queue: PriorityQueue<Context>\n): Promise<PriorityQueue<Context>> {\n const failedQueue: Context[] = []\n if (isOffline()) {\n return queue\n }\n\n await pWhile(\n () => queue.length > 0 && !isOffline(),\n async () => {\n const ctx = queue.pop()\n if (!ctx) {\n return\n }\n\n const result = await attempt(ctx, xt)\n const success = result instanceof Context\n if (!success) {\n failedQueue.push(ctx)\n }\n }\n )\n // re-add failed tasks\n failedQueue.map((failed) => queue.pushWithBackoff(failed))\n return queue\n}\n\nexport function scheduleFlush(\n flushing: boolean,\n buffer: PriorityQueue<Context>,\n xt: Plugin,\n scheduleFlush: Function\n): void {\n if (flushing) {\n return\n }\n\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n setTimeout(async () => {\n let isFlushing = true\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const newBuffer = await flushQueue(xt, buffer)\n isFlushing = false\n\n if (buffer.todo > 0) {\n scheduleFlush(isFlushing, newBuffer, xt, scheduleFlush)\n }\n }, Math.random() * 5000)\n}\n","import { Facade } from '@segment/facade'\nimport { Analytics } from '../../core/analytics'\nimport { LegacySettings } from '../../browser'\nimport { isOffline } from '../../core/connection'\nimport { Context } from '../../core/context'\nimport { Plugin } from '../../core/plugin'\nimport { PriorityQueue } from '../../lib/priority-queue'\nimport { PersistedPriorityQueue } from '../../lib/priority-queue/persisted'\nimport { toFacade } from '../../lib/to-facade'\nimport batch, { BatchingDispatchConfig } from './batched-dispatcher'\nimport standard, { StandardDispatcherConfig } from './fetch-dispatcher'\nimport { normalize } from './normalize'\nimport { scheduleFlush } from './schedule-flush'\nimport { HIGHTOUCH_API_HOST } from '../../core/constants'\n\ntype DeliveryStrategy =\n | {\n strategy?: 'standard'\n config?: StandardDispatcherConfig\n }\n | {\n strategy?: 'batching'\n config?: BatchingDispatchConfig\n }\n\nexport type HightouchioSettings = {\n apiKey: string\n apiHost?: string\n protocol?: 'http' | 'https'\n\n addBundledMetadata?: boolean\n unbundledIntegrations?: string[]\n bundledConfigIds?: string[]\n unbundledConfigIds?: string[]\n\n maybeBundledConfigIds?: Record<string, string[]>\n\n deliveryStrategy?: DeliveryStrategy\n}\n\ntype JSON = ReturnType<Facade['json']>\n\nfunction onAlias(analytics: Analytics, json: JSON): JSON {\n const user = analytics.user()\n json.previousId =\n json.previousId ?? json.from ?? user.id() ?? user.anonymousId()\n json.userId = json.userId ?? json.to\n delete json.from\n delete json.to\n return json\n}\n\nexport function hightouchio(\n analytics: Analytics,\n settings?: HightouchioSettings,\n integrations?: LegacySettings['integrations']\n): Plugin {\n // Attach `pagehide` before buffer is created so that inflight events are added\n // to the buffer before the buffer persists events in its own `pagehide` handler.\n window.addEventListener('pagehide', () => {\n buffer.push(...Array.from(inflightEvents))\n inflightEvents.clear()\n })\n\n const writeKey = settings?.apiKey ?? ''\n\n const buffer = analytics.options.disableClientPersistence\n ? new PriorityQueue<Context>(analytics.queue.queue.maxAttempts, [])\n : new PersistedPriorityQueue(\n analytics.queue.queue.maxAttempts,\n `${writeKey}:dest-Hightouch.io`\n )\n\n const inflightEvents = new Set<Context>()\n const flushing = false\n\n const apiHost = settings?.apiHost ?? HIGHTOUCH_API_HOST\n const protocol = settings?.protocol ?? 'https'\n const remote = `${protocol}://${apiHost}`\n\n const deliveryStrategy = settings?.deliveryStrategy\n const client =\n deliveryStrategy?.strategy === 'batching'\n ? batch(apiHost, deliveryStrategy.config, protocol)\n : standard(deliveryStrategy?.config as StandardDispatcherConfig)\n\n async function send(ctx: Context): Promise<Context> {\n if (isOffline()) {\n buffer.push(ctx)\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n scheduleFlush(flushing, buffer, hightouch, scheduleFlush)\n return ctx\n }\n\n inflightEvents.add(ctx)\n\n const eventType = ctx.event.type\n\n let json = toFacade(ctx.event).json()\n\n if (ctx.event.type === 'track') {\n delete json.traits\n }\n\n if (ctx.event.type === 'alias') {\n json = onAlias(analytics, json)\n }\n\n return client\n .dispatch(\n `${remote}/v1/${eventType}`,\n normalize(analytics, json, settings, integrations)\n )\n .then(() => ctx)\n .catch(() => {\n buffer.pushWithBackoff(ctx)\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n scheduleFlush(flushing, buffer, hightouch, scheduleFlush)\n return ctx\n })\n .finally(() => {\n inflightEvents.delete(ctx)\n })\n }\n\n const hightouch: Plugin = {\n name: 'Hightouch.io',\n type: 'after',\n version: '0.1.0',\n isLoaded: (): boolean => true,\n load: (): Promise<void> => Promise.resolve(),\n track: send,\n identify: send,\n page: send,\n alias: send,\n group: send,\n screen: send,\n }\n\n // Buffer may already have items if they were previously stored in localStorage.\n // Start flushing them immediately.\n if (buffer.todo) {\n scheduleFlush(flushing, buffer, hightouch, scheduleFlush)\n }\n\n return hightouch\n}\n","import { fetch } from '../../lib/fetch'\n\nexport type Dispatcher = (url: string, body: object) => Promise<unknown>\n\nexport type StandardDispatcherConfig = {\n keepalive?: boolean\n}\n\nexport default function (config?: StandardDispatcherConfig): {\n dispatch: Dispatcher\n} {\n function dispatch(url: string, body: object): Promise<unknown> {\n return fetch(url, {\n keepalive: config?.keepalive,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n method: 'post',\n body: JSON.stringify(body),\n })\n }\n\n return {\n dispatch,\n }\n}\n","import { __extends } from \"tslib\";\nvar ValidationError = /** @class */ (function (_super) {\n __extends(ValidationError, _super);\n function ValidationError(field, message) {\n var _this = _super.call(this, \"\".concat(field, \" \").concat(message)) || this;\n _this.field = field;\n return _this;\n }\n return ValidationError;\n}(Error));\nexport { ValidationError };\n//# sourceMappingURL=errors.js.map","import { ValidationError } from './errors';\nimport { isString, isPlainObject, exists } from './helpers';\nvar stringError = 'is not a string';\nvar objError = 'is not an object';\nvar nilError = 'is nil';\nexport function assertUserIdentity(event) {\n var USER_FIELD_NAME = '.userId/anonymousId/previousId/groupId';\n var getAnyUserId = function (event) { var _a, _b, _c; return (_c = (_b = (_a = event.userId) !== null && _a !== void 0 ? _a : event.anonymousId) !== null && _b !== void 0 ? _b : event.groupId) !== null && _c !== void 0 ? _c : event.previousId; };\n var id = getAnyUserId(event);\n if (!exists(id)) {\n throw new ValidationError(USER_FIELD_NAME, nilError);\n }\n else if (!isString(id)) {\n throw new ValidationError(USER_FIELD_NAME, stringError);\n }\n}\nexport function assertEventExists(event) {\n if (!exists(event)) {\n throw new ValidationError('Event', nilError);\n }\n if (typeof event !== 'object') {\n throw new ValidationError('Event', objError);\n }\n}\nexport function assertEventType(event) {\n if (!isString(event.type)) {\n throw new ValidationError('.type', stringError);\n }\n}\nexport function assertTrackEventName(event) {\n if (!isString(event.event)) {\n throw new ValidationError('.event', stringError);\n }\n}\nexport function assertTrackEventProperties(event) {\n if (!isPlainObject(event.properties)) {\n throw new ValidationError('.properties', objError);\n }\n}\nexport function assertTraits(event) {\n if (!isPlainObject(event.traits)) {\n throw new ValidationError('.traits', objError);\n }\n}\nexport function validateEvent(event) {\n assertEventExists(event);\n assertEventType(event);\n if (event.type === 'track') {\n assertTrackEventName(event);\n assertTrackEventProperties(event);\n }\n if (['group', 'identify'].includes(event.type)) {\n assertTraits(event);\n }\n assertUserIdentity(event);\n}\n//# sourceMappingURL=assertions.js.map","import type { Plugin } from '../../core/plugin'\nimport type { Context } from '../../core/context'\nimport {\n assertUserIdentity,\n isPlainObject,\n ValidationError,\n assertEventExists,\n assertEventType,\n assertTrackEventName,\n} from '@ht-sdks/events-sdk-js-core'\n\nfunction validate(ctx: Context): Context {\n const event = ctx.event\n assertEventExists(event)\n assertEventType(event)\n\n if (event.type === 'track') {\n assertTrackEventName(event)\n }\n\n const props = event.properties ?? event.traits\n if (event.type !== 'alias' && !isPlainObject(props)) {\n throw new ValidationError('.properties', 'is not an object')\n }\n\n assertUserIdentity(event)\n return ctx\n}\n\nexport const validation: Plugin = {\n name: 'Event Validation',\n type: 'before',\n version: '1.0.0',\n\n isLoaded: () => true,\n load: () => Promise.resolve(),\n\n track: validate,\n identify: validate,\n page: validate,\n alias: validate,\n group: validate,\n screen: validate,\n}\n","import { getGlobal } from '../../lib/get-global'\nimport type { Analytics } from '../analytics'\n\nconst env = getGlobal()\n\n// The code below assumes the inspector extension will use Object.assign\n// to add the inspect interface on to this object reference (unless the\n// extension code ran first and has already set up the variable)\nconst inspectorHost: {\n attach: (analytics: Analytics) => void\n} = ((env as any)['__HIGHTOUCH_INSPECTOR__'] ??= {})\n\nexport const attachInspector = (analytics: Analytics) =>\n inspectorHost.attach?.(analytics as any)\n","import type { DestinationSettings } from './types'\nimport { Destination } from './destination'\n\nexport { Destination }\nexport type { DestinationSettings }\n\nexport async function createDestination(\n name: string,\n settings: DestinationSettings\n): Promise<Destination | undefined> {\n switch (name) {\n case 'gtag':\n return import(/* webpackChunkName: \"gtag\" */ './gtag').then((mod) =>\n mod.default(settings as any)\n )\n case 'Google Tag Manager':\n return import(\n /* webpackChunkName: \"google-tag-manager\" */ './google-tag-manager'\n ).then((mod) => mod.default(settings as any))\n default:\n return undefined\n }\n}\n","import type { Plugin } from '../core/plugin'\nimport type { BuiltInPluginName } from './built-in-plugins'\n\n/**\n * Creates a plugin instance from a string name.\n * This allows script tag users to specify plugins by name without importing them.\n *\n * @param name - The name of the plugin to load\n * @returns A promise that resolves to the plugin instance, or undefined if not found\n */\nexport async function createPlugin(\n name: BuiltInPluginName\n): Promise<Plugin | undefined> {\n switch (name) {\n case 'facebook-params':\n return import(\n /* webpackChunkName: \"facebook-params\" */ './facebook-params'\n ).then((mod) => mod.facebookParams)\n default:\n return undefined\n }\n}\n","export const BUILT_IN_PLUGINS = ['facebook-params'] as const\n\nexport type BuiltInPluginName = (typeof BUILT_IN_PLUGINS)[number]\n","import { getProcessEnv } from '../lib/get-process-env'\nimport { getCDN, setGlobalCDNUrl } from '../lib/parse-cdn'\n\nimport { fetch } from '../lib/fetch'\nimport { Analytics, AnalyticsSettings, InitOptions } from '../core/analytics'\nimport { Context } from '../core/context'\nimport { HTTPCookieService } from '../core/http-cookies'\nimport { Plan } from '../core/events'\nimport { Plugin } from '../core/plugin'\nimport { MetricsOptions } from '../core/stats/remote-metrics'\nimport { mergedOptions } from '../lib/merged-options'\nimport { createDeferred } from '../lib/create-deferred'\nimport { envEnrichment } from '../plugins/env-enrichment'\nimport {\n PluginFactory,\n remoteLoader,\n RemotePlugin,\n} from '../plugins/remote-loader'\nimport type { RoutingRule } from '../plugins/routing-middleware'\nimport { hightouchio, HightouchioSettings } from '../plugins/hightouchio'\nimport { validation } from '../plugins/validation'\nimport {\n AnalyticsBuffered,\n PreInitMethodCallBuffer,\n flushAnalyticsCallsInNewTask,\n flushAddSourceMiddleware,\n flushSetAnonymousID,\n flushOn,\n} from '../core/buffer'\nimport { ClassicIntegrationSource } from '../plugins/ajs-destination/types'\nimport { attachInspector } from '../core/inspector'\nimport { setGlobalAnalyticsKey } from '../lib/global-analytics-helper'\nimport { createDestination } from '../plugins/destinations'\nimport { createPlugin } from '../plugins'\nimport {\n BUILT_IN_PLUGINS,\n type BuiltInPluginName,\n} from '../plugins/built-in-plugins'\nimport {\n dedupePluginFactories,\n dedupePlugins,\n dedupeStringPluginNames,\n} from './dedupe-plugin-likes'\n\nexport interface LegacyIntegrationConfiguration {\n /* @deprecated - This does not indicate browser types anymore */\n type?: string\n\n versionSettings?: {\n version?: string\n override?: string\n componentTypes?: Array<'browser' | 'android' | 'ios' | 'server'>\n }\n\n bundlingStatus?: string\n\n /**\n * Consent settings for the integration\n */\n consentSettings?: {\n /**\n * Consent categories for the integration\n * @example [\"Analytics\", \"Advertising\", \"CAT001\"]\n */\n categories: string[]\n }\n\n // Hightouch.io specific\n retryQueue?: boolean\n\n // any extra unknown settings\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any\n}\n\nexport interface LegacySettings {\n integrations: {\n [name: string]: LegacyIntegrationConfiguration\n }\n\n middlewareSettings?: {\n routingRules: RoutingRule[]\n }\n\n enabledMiddleware?: Record<string, boolean>\n metrics?: MetricsOptions\n\n plan?: Plan\n\n legacyVideoPluginsEnabled?: boolean\n\n remotePlugins?: RemotePlugin[]\n\n /**\n * Top level consent settings\n */\n consentSettings?: {\n /**\n * All unique consent categories.\n * There can be categories in this array that are important for consent that are not included in any integration (e.g. 2 cloud mode categories).\n * @example [\"Analytics\", \"Advertising\", \"CAT001\"]\n */\n allCategories: string[]\n }\n}\n\nexport interface HtEventsBrowserSettings extends AnalyticsSettings {\n /**\n * The settings for the Hightouch Source.\n * If provided, `HtEventsBrowser` will not fetch remote settings\n * for the source.\n */\n cdnSettings?: LegacySettings & Record<string, unknown>\n /**\n * If provided, will override the default Hightouch CDN (https://cdn.hightouch-events.com) for this application.\n */\n cdnURL?: string\n}\n\nexport function loadLegacySettings(\n writeKey: string,\n cdnURL?: string\n): Promise<LegacySettings> {\n const baseUrl = cdnURL ?? getCDN()\n\n return fetch(`${baseUrl}/v1/projects/${writeKey}/settings`)\n .then((res) => {\n if (!res.ok) {\n return res.text().then((errorResponseMessage) => {\n throw new Error(errorResponseMessage)\n })\n }\n return res.json()\n })\n .catch((err) => {\n console.error(err.message)\n throw err\n })\n}\n\nfunction hasLegacyDestinations(settings: LegacySettings): boolean {\n return (\n getProcessEnv().NODE_ENV !== 'test' &&\n // just one integration means hightouchio\n Object.keys(settings.integrations).length > 1\n )\n}\n\nfunction hasTsubMiddleware(settings: LegacySettings): boolean {\n return (\n getProcessEnv().NODE_ENV !== 'test' &&\n (settings.middlewareSettings?.routingRules?.length ?? 0) > 0\n )\n}\n\n/**\n * With AJS classic, we allow users to call setAnonymousId before the library initialization.\n * This is important because some of the destinations will use the anonymousId during the initialization,\n * and if we set anonId afterwards, that wouldn’t impact the destination.\n *\n * Also Ensures events can be registered before library initialization.\n * This is important so users can register to 'initialize' and any events that may fire early during setup.\n */\nfunction flushPreBuffer(\n analytics: Analytics,\n buffer: PreInitMethodCallBuffer\n): void {\n flushSetAnonymousID(analytics, buffer)\n flushOn(analytics, buffer)\n}\n\n/**\n * Finish flushing buffer and cleanup.\n */\nasync function flushFinalBuffer(\n analytics: Analytics,\n buffer: PreInitMethodCallBuffer\n): Promise<void> {\n // Call popSnippetWindowBuffer before each flush task since there may be\n // analytics calls during async function calls.\n await flushAddSourceMiddleware(analytics, buffer)\n flushAnalyticsCallsInNewTask(analytics, buffer)\n // Clear buffer, just in case analytics is loaded twice; we don't want to fire events off again.\n buffer.clear()\n}\n\nasync function registerPlugins(\n writeKey: string,\n legacySettings: LegacySettings,\n analytics: Analytics,\n opts: InitOptions,\n options: InitOptions,\n pluginLikes: (Plugin | PluginFactory | BuiltInPluginName)[] = [],\n legacyIntegrationSources: ClassicIntegrationSource[]\n): Promise<Context> {\n const stringPluginNames: BuiltInPluginName[] = []\n const plugins: Plugin[] = []\n const pluginSources: PluginFactory[] = []\n\n for (const pluginLike of pluginLikes) {\n if (typeof pluginLike === 'string') {\n if (BUILT_IN_PLUGINS.includes(pluginLike)) {\n stringPluginNames.push(pluginLike)\n } else {\n console.warn(`failed to load plugin: ${pluginLike}`)\n }\n } else if (typeof pluginLike === 'object' && pluginLike !== null) {\n plugins.push(pluginLike)\n } else if (\n typeof pluginLike === 'function' &&\n typeof pluginLike.pluginName === 'string'\n ) {\n pluginSources.push(pluginLike)\n } else {\n console.warn(`failed to load plugin: ${pluginLike}`)\n continue\n }\n }\n\n const uniqueStringPluginNames = dedupeStringPluginNames(stringPluginNames)\n const uniquePlugins = dedupePlugins(plugins)\n const uniquePluginSources = dedupePluginFactories(pluginSources)\n\n const tsubMiddleware = hasTsubMiddleware(legacySettings)\n ? await import(\n /* webpackChunkName: \"tsub-middleware\" */ '../plugins/routing-middleware'\n ).then((mod) => {\n return mod.tsubMiddleware(\n legacySettings.middlewareSettings!.routingRules\n )\n })\n : undefined\n\n const legacyDestinations =\n hasLegacyDestinations(legacySettings) || legacyIntegrationSources.length > 0\n ? await import(\n /* webpackChunkName: \"ajs-destination\" */ '../plugins/ajs-destination'\n ).then((mod) => {\n return mod.ajsDestinations(\n writeKey,\n legacySettings,\n analytics.integrations,\n opts,\n tsubMiddleware,\n legacyIntegrationSources\n )\n })\n : []\n\n if (legacySettings.legacyVideoPluginsEnabled) {\n await import(\n /* webpackChunkName: \"legacyVideos\" */ '../plugins/legacy-video-plugins'\n ).then((mod) => {\n return mod.loadLegacyVideoPlugins(analytics)\n })\n }\n\n const schemaFilter = opts.plan?.track\n ? await import(\n /* webpackChunkName: \"schemaFilter\" */ '../plugins/schema-filter'\n ).then((mod) => {\n return mod.schemaFilter(opts.plan?.track, legacySettings)\n })\n : undefined\n\n const mergedSettings = mergedOptions(legacySettings, options)\n const remotePlugins = await remoteLoader(\n legacySettings,\n analytics.integrations,\n mergedSettings,\n options.obfuscate,\n tsubMiddleware,\n uniquePluginSources\n ).catch(() => [])\n\n // Load string-based plugins\n const loadedStringPlugins = await Promise.allSettled(\n uniqueStringPluginNames.map(async (name) => {\n const plugin = await createPlugin(name)\n if (plugin) {\n return plugin\n } else {\n console.warn(`failed to load plugin: ${name}`)\n return null\n }\n })\n )\n\n const resolvedStringPlugins = loadedStringPlugins\n .map((result, index) => {\n if (result.status === 'fulfilled') {\n return result.value\n }\n console.error(\n `failed to load plugin: ${uniqueStringPluginNames[index]}`,\n result.reason\n )\n return null\n })\n .filter((plugin): plugin is Plugin => plugin !== null)\n\n const toRegister = [\n validation,\n envEnrichment,\n ...uniquePlugins,\n ...resolvedStringPlugins,\n ...legacyDestinations,\n ...remotePlugins,\n ]\n\n if (schemaFilter) {\n toRegister.push(schemaFilter)\n }\n\n const shouldIgnoreHightouchio =\n (opts.integrations?.All === false && !opts.integrations['Hightouch.io']) ||\n (opts.integrations && opts.integrations['Hightouch.io'] === false)\n\n if (!shouldIgnoreHightouchio) {\n toRegister.push(\n await hightouchio(\n analytics,\n mergedSettings['Hightouch.io'] as HightouchioSettings,\n legacySettings.integrations\n )\n )\n }\n\n // destination plugins\n await Promise.allSettled(\n Object.entries(options.destinations ?? {}).map(async ([name, settings]) => {\n const plugin = await createDestination(name, settings)\n if (plugin) {\n toRegister.push(plugin)\n } else {\n console.warn(`failed to load destination plugin: ${name}`)\n }\n })\n )\n\n const ctx = await analytics.register(...toRegister)\n\n if (\n Object.entries(legacySettings.enabledMiddleware ?? {}).some(\n ([, enabled]) => enabled\n )\n ) {\n await import(\n /* webpackChunkName: \"remoteMiddleware\" */ '../plugins/remote-middleware'\n ).then(async ({ remoteMiddlewares }) => {\n const middleware = await remoteMiddlewares(\n ctx,\n legacySettings,\n options.obfuscate\n )\n const promises = middleware.map((mdw) =>\n analytics.addSourceMiddleware(mdw)\n )\n return Promise.all(promises)\n })\n }\n\n return ctx\n}\n\nconst defaultHightouchIntegration: HightouchioSettings = {\n apiKey: 'WRITE_KEY',\n apiHost: 'us-east-1.hightouch-events.com',\n protocol: 'https',\n unbundledIntegrations: [],\n addBundledMetadata: false,\n maybeBundledConfigIds: {},\n deliveryStrategy: {\n strategy: 'standard',\n },\n}\n\nconst defaultSettings: LegacySettings = {\n integrations: {},\n plan: {\n track: { __default: { enabled: true, integrations: {} } },\n identify: { __default: { enabled: true } },\n group: { __default: { enabled: true } },\n },\n enabledMiddleware: {},\n metrics: { sampleRate: 0.0 },\n legacyVideoPluginsEnabled: false,\n remotePlugins: [],\n}\n\nasync function loadAnalytics(\n settings: HtEventsBrowserSettings,\n options: InitOptions = {},\n preInitBuffer: PreInitMethodCallBuffer\n): Promise<[Analytics, Context]> {\n if (options.globalAnalyticsKey)\n setGlobalAnalyticsKey(options.globalAnalyticsKey)\n // this is an ugly side-effect, but it's for the benefits of the plugins that get their cdn via getCDN()\n if (settings.cdnURL) setGlobalCDNUrl(settings.cdnURL)\n\n let legacySettings\n if (settings.cdnSettings) {\n legacySettings = settings.cdnSettings\n } else {\n defaultSettings.integrations['Hightouch.io'] = {\n ...defaultHightouchIntegration,\n ...(settings.writeKey ? { apiKey: settings.writeKey } : {}),\n ...(options.apiHost ? { apiHost: options.apiHost } : {}),\n ...(options.protocol ? { protocol: options.protocol } : {}),\n // defaultHightouchIntegration defaults to 'standard'\n // allow a simple options override to turn on 'batching'\n ...(options.batching == true\n ? {\n deliveryStrategy: {\n strategy: 'batching',\n config: { timeout: 1000, size: 10 }, // 1 second or 10 items\n } as HightouchioSettings['deliveryStrategy'],\n }\n : {}),\n }\n legacySettings = defaultSettings\n }\n\n if (options.updateCDNSettings) {\n legacySettings = options.updateCDNSettings(legacySettings)\n }\n\n const retryQueue: boolean =\n legacySettings.integrations['Hightouch.io']?.retryQueue ?? true\n\n if (!options.disableClientPersistence && options.httpCookieServiceOptions) {\n options.httpCookieService = await HTTPCookieService.load(\n options.httpCookieServiceOptions\n ).catch((err): undefined => console.error(err) as undefined)\n }\n\n const opts: InitOptions = { retryQueue, ...options }\n const analytics = new Analytics(settings, opts)\n\n attachInspector(analytics)\n\n // Merge plugins from both settings and options\n // This allows plugins to be specified in either place:\n // - settings.plugins (when using HtEventsBrowser.load({ writeKey, plugins: [...] }))\n // - options.plugins (when using snippet pattern: htevents.load(writeKey, { plugins: [...] }))\n const plugins = [...(settings.plugins ?? []), ...(options.plugins ?? [])]\n\n const classicIntegrations = settings.classicIntegrations ?? []\n\n // Uncomment to re-enable RemoteMetrics -- also see standalone.ts RemoteMetrics usage\n // Stats.initRemoteMetrics(legacySettings.metrics)\n\n // needs to be flushed before plugins are registered\n flushPreBuffer(analytics, preInitBuffer)\n\n const ctx = await registerPlugins(\n settings.writeKey,\n legacySettings,\n analytics,\n opts,\n options,\n plugins,\n classicIntegrations\n )\n\n const search = window.location.search ?? ''\n const hash = window.location.hash ?? ''\n\n const term = search.length ? search : hash.replace(/(?=#).*(?=\\?)/, '')\n\n if (term.includes('ajs_')) {\n await analytics.queryString(term).catch(console.error)\n }\n\n analytics.initialized = true\n analytics.emit('initialize', settings, options)\n\n if (options.initialPageview) {\n analytics.page().catch(console.error)\n }\n\n await flushFinalBuffer(analytics, preInitBuffer)\n\n return [analytics, ctx]\n}\n\n/**\n * The public browser interface for Hightouch Events\n *\n * @example\n * ```ts\n * export const htevents = new HtEventsBrowser()\n * htevents.load({ writeKey: 'foo' })\n * ```\n * @link https://github.com/ht-sdks/events-sdk-js-mono/tree/master/packages/browser#readme\n */\nexport class HtEventsBrowser extends AnalyticsBuffered {\n private _resolveLoadStart: (\n settings: HtEventsBrowserSettings,\n options: InitOptions\n ) => void\n\n constructor() {\n const { promise: loadStart, resolve: resolveLoadStart } =\n createDeferred<Parameters<HtEventsBrowser['load']>>()\n\n super((buffer) =>\n loadStart.then(([settings, options]) =>\n loadAnalytics(settings, options, buffer)\n )\n )\n\n this._resolveLoadStart = (settings, options) =>\n resolveLoadStart([settings, options])\n }\n\n /**\n * Fully initialize an analytics instance, including:\n *\n * * Fetching settings from the CDN (by default).\n * * Fetching all remote destinations configured by the user (if applicable).\n * * Flushing buffered analytics events.\n * * Loading all middleware.\n *\n * Note:️ This method should only be called *once* in your application.\n *\n * @example\n * ```ts\n * export const analytics = new HtEventsBrowser()\n * analytics.load({ writeKey: 'foo' })\n * ```\n */\n load(\n settings: HtEventsBrowserSettings,\n options: InitOptions = {}\n ): HtEventsBrowser {\n this._resolveLoadStart(settings, options)\n return this\n }\n\n /**\n * Instantiates an object exposing Analytics methods.\n *\n * @example\n * ```ts\n * const ajs = HtEventsBrowser.load({ writeKey: '<YOUR_WRITE_KEY>' })\n *\n * ajs.track(\"foo\")\n * ...\n * ```\n */\n static load(\n settings: HtEventsBrowserSettings,\n options: InitOptions = {}\n ): HtEventsBrowser {\n return new HtEventsBrowser().load(settings, options)\n }\n\n static standalone(\n writeKey: string,\n options?: InitOptions\n ): Promise<Analytics> {\n return HtEventsBrowser.load({ writeKey }, options).then((res) => res[0])\n }\n}\n","import { Plugin } from '../core/plugin'\nimport { PluginFactory } from '../plugins/remote-loader'\nimport type { BuiltInPluginName } from '../plugins/built-in-plugins'\n\nexport function dedupeStringPluginNames(\n names: BuiltInPluginName[]\n): BuiltInPluginName[] {\n const seen = new Set<BuiltInPluginName>()\n const unique: BuiltInPluginName[] = []\n\n for (const name of names) {\n if (seen.has(name)) {\n console.warn(`duplicate plugin ignored: ${name}`)\n continue\n }\n seen.add(name)\n unique.push(name)\n }\n\n return unique\n}\n\nexport function dedupePluginFactories(\n factories: PluginFactory[]\n): PluginFactory[] {\n const seen = new Set<string>()\n const unique: PluginFactory[] = []\n\n for (const factory of factories) {\n if (seen.has(factory.pluginName)) {\n console.warn(`duplicate plugin factory ignored: ${factory.pluginName}`)\n continue\n }\n seen.add(factory.pluginName)\n unique.push(factory)\n }\n\n return unique\n}\n\nexport function dedupePlugins(plugins: Plugin[]): Plugin[] {\n const seenRefs = new Set<Plugin>()\n const seenNames = new Set<string>()\n const unique: Plugin[] = []\n\n for (const plugin of plugins) {\n if (seenRefs.has(plugin)) {\n continue\n }\n\n if (seenNames.has(plugin.name)) {\n console.warn(`duplicate plugin ignored: ${plugin.name}`)\n continue\n }\n\n seenRefs.add(plugin)\n seenNames.add(plugin.name)\n unique.push(plugin)\n }\n\n return unique\n}\n","/**\n * Return a promise that can be externally resolved\n */\nexport const createDeferred = <T>() => {\n let resolve!: (value: T | PromiseLike<T>) => void\n let reject!: (reason: any) => void\n const promise = new Promise<T>((_resolve, _reject) => {\n resolve = _resolve\n reject = _reject\n })\n return {\n resolve,\n reject,\n promise,\n }\n}\n","import { getCDN, setGlobalCDNUrl } from '../lib/parse-cdn'\nimport { setVersionType } from '../lib/version-type'\n\nif (process.env.ASSET_PATH) {\n if (process.env.ASSET_PATH === '/dist/umd/') {\n // @ts-ignore\n __webpack_public_path__ = '/dist/umd/'\n } else {\n const cdn = getCDN()\n setGlobalCDNUrl(cdn) // preserving original behavior -- TODO: neccessary?\n // @ts-ignore\n __webpack_public_path__ =\n cdn + `/${process.env.PATH_PREFIX}/${process.env.PATH_VERSION}/`\n }\n}\n\nsetVersionType('web')\n\nexport * from '.'\n"],"names":["root","factory","exports","module","define","amd","self","leafPrototypes","getProto","inProgress","dataWebpackPrefix","__importDefault","this","mod","__esModule","Object","defineProperty","value","obj_case_1","trait","a","b","traits","props","properties","default","proto","zip","country","street","state","city","region","Alias","inherits_1","facade_1","dictionary","opts","Facade","call","prototype","action","type","previousId","field","from","userId","to","clone","toString","temp","key","Array","isArray","map","Delete","address_1","clone_1","is_enabled_1","new_date_1","isodate_traverse_1","obj","raw","traverse","timestamp","Date","f","transform","proxy","fields","split","shift","length","join","multi","path","one","json","ret","rawEvent","options","integration","context","enabled","integrations","allEnabled","providers","hasOwnProperty","settings","active","anonymousId","sessionId","groupId","aliases","id","alias","library","name","version","device","indexOf","userAgent","timezone","channel","ip","Group","is_email_1","g","created","email","industry","employees","Identify","trim","str","i","companyCreated","companyName","firstName","lastName","space","substr","uid","username","description","age","date","birthday","getFullYear","avatar","position","website","websites","phone","phones","address","gender","__assign","assign","t","s","n","arguments","p","apply","Screen","Page","Track","enumerable","get","alias_1","group_1","identify_1","track_1","page_1","screen_1","delete_1","matcher","string","test","disabled","Salesforce","category","title","url","referrer","fullName","event","track","productId","promotionId","cartId","checkoutId","paymentId","couponId","wishlistId","reviewId","orderId","sku","tax","price","total","repeat","coupon","shipping","discount","shippingMethod","paymentMethod","plan","subtotal","revenue","products","filter","item","quantity","currency","query","match","val","replace","parseFloat","isNaN","cents","identify","isodate","input","strict","undefined","keys","forEach","traverseObject","arr","index","traverseArray","is","parse","iso","numericKeys","exec","offset","parseInt","substring","getTimezoneOffset","millis","UTC","create","ctor","superCtor","super_","constructor","writable","configurable","TempCtor","milliseconds","seconds","toStr","isNumber","num","multiple","fn","normalize","isFunction","normalizer","defaultNormalize","finished","loop","normalizedKey","charAt","child","del","toLowerCase","find","hex_chr","md5cycle","x","k","c","d","md5blk","md5blks","charCodeAt","md5blk_array","md51","tail","tmp","lo","hi","md51_array","subarray","Uint8Array","rhex","j","hex","toUtf8","unescape","encodeURIComponent","utf8Str2ArrayBuffer","returnUInt8Array","buff","ArrayBuffer","arrayBuffer2Utf8Str","String","fromCharCode","concatenateArrayBuffers","first","second","result","byteLength","set","buffer","hexToBinaryString","bytes","push","SparkMD5","reset","slice","clamp","Math","max","min","target","targetArray","sourceArray","begin","end","append","appendBinary","contents","_buff","_length","_hash","_finish","getState","hash","setState","destroy","hashBinary","content","isOnline","window","navigator","onLine","isOffline","HIGHTOUCH_API_HOST","logError","err","console","error","remoteMetrics","host","sampleRate","flushTimer","maxQueueSize","queue","flush","catch","setTimeout","increment","metric","tags","includes","random","remoteMetric","versionType","formattedTags","reduce","acc","v","library_version","createRemoteMetric","Promise","send","payload","series","headers","Accept","fetch","body","JSON","stringify","method","initRemoteMetrics","RemoteMetrics","by","Stats","system","isBrowser","isServer","gracefulDecodeURIComponent","encodedURIComponent","decodeURIComponent","e","r","XMLHttpRequest","o","u","ok","status","statusText","responseURL","text","resolve","responseText","blob","Blob","response","entries","has","l","open","onload","getAllResponseHeaders","onerror","withCredentials","credentials","setRequestHeader","global","unfetch","args","getGlobal","globalThis","_globalAnalyticsKey","getGlobalAnalytics","setGlobalAnalyticsKey","setGlobalAnalytics","analytics","findScript","src","document","querySelectorAll","loadScript","attributes","found","getAttribute","reject","addEventListener","script","createElement","async","setAttribute","Error","tag","getElementsByTagName","parentElement","insertBefore","unloadScript","remove","mergedOptions","optionOverrides","overrides","integrationSettings","pWhile","condition","actionResult","_globalCDN","analyticsScriptRegex","setGlobalCDNUrl","cdn","globalAnalytics","_cdn","getCDN","globalCdnUrl","cdnFromScriptTag","getNextIntegrationsURL","loc","getItem","setItem","removeItem","localStorage","warn","persisted","items","seen","stored","mutex","onUnlock","attempt","lockKey","rawLock","lock","allowed","getTime","expired","maxAttempts","itemsKey","seenKey","saved","lastSeen","todo","future","existing","merged","values","persistItems","memory","persistSeen","toFacade","evt","fcd","_version","setVersionType","getVersionType","applyDestinationMiddleware","destination","middleware","applyMiddleware","nextCalled","returnedEvent","next","modifiedEvent","md","sourceMiddlewarePlugin","ctx","retry","reason","isLoaded","load","page","group","pTimeout","promise","timeout","timeoutId","then","clearTimeout","invokeCallback","callback","delay","timeoutInMs","cb","log","stats","CoreLogger","_logs","level","message","extras","time","logs","formatted","_a","_b","_c","line","toISOString","concat","table","logEntry","ContextCancelation","CoreContext","logger","attempts","_id","isSame","other","cancel","updateEvent","integrationName","failedDelivery","_failedDelivery","setFailedDelivery","toJSON","metrics","Emitter","callbacks","on","once","_this","_i","off","without","emit","ON_REMOVE_FROM_FUTURE","PriorityQueue","_super","accepted","operation","updateAttempts","sort","getAttempts","pushWithBackoff","params","minTimeout","factor","maxTimeout","Infinity","pow","backoff","Boolean","pop","plugin","start","hook","err_1","label","trys","sent","tryAsync","done","gauge","ensure","newContext","CoreStats","now","m","serialize","counter","NullStats","_args","isString","exists","isPlainObject","BUFFER","IDX","HEX","v4","out","dset","extendStatics","setPrototypeOf","__proto__","__extends","TypeError","__","__rest","getOwnPropertySymbols","propertyIsEnumerable","__awaiter","thisArg","_arguments","P","generator","fulfilled","step","rejected","__generator","y","_","ops","Iterator","verb","Symbol","iterator","op","__spreadArray","pack","ar","SuppressedError","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","getPrototypeOf","mode","ns","def","current","getOwnPropertyNames","definition","chunkId","all","promises","prop","needAttach","scripts","charset","nc","onScriptComplete","prev","doneFns","parentNode","removeChild","bind","head","appendChild","toStringTag","installedChunks","installedChunkData","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","data","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","getProcessEnv","process","env","resolveArguments","eventName","resolvePageArguments","resolvedCategory","resolvedName","strings","resolvedCallback","objects","resolvedProperties","resolvedOptions","resolveUserArguments","user","orderStack","arg","resolveAliasArguments","aliasTo","aliasFrom","dispatch","emitter","startTime","dispatched","isEmpty","dispatchSingle","startTimeInEpochMS","timeoutInMS","elapsedTime","debug","createBufferedPageContext","canonicalUrl","search","__t","BUFFERED_PAGE_CONTEXT_KEYS","createPageContext","href","hashIdx","pathname","newPath","URL","_e","parseCanonicalPath","newUrl","searchParams","createCanonicalURL","getDefaultBufferedPageContext","querySelector","location","addPageContext","pageCtx","pageContextFromEventProps","object","evtCtx","globalIntegrations","baseEvent","screen","base","optionsKeys","providedOptionsKeys","integrationBooleans","integrationNames","allIntegrations","rest","newEvent","messageId","session","getAndUpdateSession","CoreEventQueue","priorityQueue","taskCompletionPromise","resolvePromise","count","criticalTasks","run","returnValue","res","finally","plugins","failedInitializations","flushing","scheduleFlush","register","instance","deregister","e_1","unload","willDeliver","subscribeToDelivery","onDeliver","flushed","delivered","deliver","enqueuRetry","flushOne","err_2","isReady","availableExtensions","denyList","grouper","results","available","alternativeNameMatch","alternativeNames","All","suggestedKey","Function","before","enrichment","_d","after","destinations","before_1","beforeWare","enrichment_1","enrichmentWare","afterCalls","_f","nameOrQueue","bindAll","desc","getOwnPropertyDescriptor","StoreType","Cookie","LocalStorage","Memory","_logStoreKeyError","store","stores","clear","getAndSync","coercedValue","cache","isArrayOfStoreType","every","source","api","init","converter","defaultAttributes","expires","toUTCString","escape","stringifiedAttributes","attributeName","cookie","write","cookies","jar","parts","foundKey","read","withAttributes","withConverter","freeze","tld","parsedUrl","parseUrl","lvls","hostname","last","levels","cname","domain","sameSite","CookieStorage","defaults","maxage","secure","localStorageWarning","initializeStorages","isStoreTypeWithSettings","MemoryStorage","applyCookieOptions","storeTypes","cookieOptions","randomWordArray","crypto","frames","nBytes","words","getRandomValues","Uint32Array","WordArray","m_w","_m_w","_m_z","mask","rcache","_r","mixIn","sigBytes","typedArray","Int8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Float32Array","Float64Array","byteOffset","typedArrayByteLength","_words","encoder","wordArray","thisWords","thatWords","thisSigBytes","thatSigBytes","thatByte","ceil","Base","Hex","hexChars","bite","hexStr","hexStrLength","Latin1","latin1Chars","latin1Str","latin1StrLength","Utf8","utf8Str","_minBufferSize","_data","_nDataBytes","_append","m_data","_process","doFlush","processedWords","blockSize","dataWords","dataSigBytes","nBlocksReady","nWordsReady","nBytesReady","_doProcessBlock","splice","cfg","_createHelper","SubHasher","finalize","_createHmacHelper","HMAC","_doReset","update","messageUpdate","_doFinalize","BufferedBlockAlgorithm","hasher","_hasher","_key","hasherBlockSize","hasherBlockSizeBytes","oKey","_oKey","iKey","_iKey","oKeyWords","iKeyWords","innerHash","Base64","_map","base64Chars","triplet","paddingChar","base64Str","base64StrLength","reverseMap","_reverseMap","paddingIndex","bitsCombined","parseLoop","T","abs","sin","FF","GG","HH","II","M","_M","offset_i","M_offset_i","H","M_offset_0","M_offset_1","M_offset_2","M_offset_3","M_offset_4","M_offset_5","M_offset_6","M_offset_7","M_offset_8","M_offset_9","M_offset_10","M_offset_11","M_offset_12","M_offset_13","M_offset_14","M_offset_15","nBitsTotal","nBitsLeft","nBitsTotalH","floor","nBitsTotalL","H_i","Hasher","MD5Algo","keySize","iterations","compute","password","salt","block","derivedKey","derivedKeyWords","xformMode","_xformMode","createEncryptor","_ENC_XFORM_MODE","createDecryptor","_DEC_XFORM_MODE","SubCipher","selectCipherStrategy","PasswordBasedCipher","SerializableCipher","encrypt","decrypt","ciphertext","dataUpdate","Cipher","ivSize","xorBlock","iv","_iv","_prevBlock","cipher","_cipher","Encryptor","Decryptor","CBC","processBlock","encryptBlock","thisBlock","decryptBlock","Pkcs7","pad","blockSizeBytes","nPaddingBytes","paddingWord","paddingWords","padding","unpad","modeCreator","_mode","__creator","finalProcessedBlocks","cipherParams","formatter","OpenSSLFormatter","openSSLStr","ciphertextWords","CipherParams","_cfg","encryptor","cipherCfg","algorithm","format","_ciphertext","_parse","OpenSSLKdf","execute","_salt","EvpKDFAlgo","derivedParams","kdf","_SBOX","INV_SBOX","_SUB_MIX_0","_SUB_MIX_1","_SUB_MIX_2","_SUB_MIX_3","INV_SUB_MIX_0","INV_SUB_MIX_1","INV_SUB_MIX_2","INV_SUB_MIX_3","xi","sx","x2","x4","x8","RCON","_nRounds","_keyPriorReset","keyWords","ksRows","_keySchedule","keySchedule","ksRow","_invKeySchedule","invKeySchedule","invKsRow","_doCryptBlock","SUB_MIX_0","SUB_MIX_1","SUB_MIX_2","SUB_MIX_3","SBOX","nRounds","s0","s1","s2","s3","round","t0","t1","t2","t3","BlockCipher","AESAlgo","AES","fromBase64","TextDecoder","decode","atob","char","base64ToBytes","rudderHtPrefix","rudderPrefixV1","rudderPrefixV3","generateAutoTrackingSession","sessionTimeout","expiresAt","sessionStart","autoTrack","generateManualTrackingSession","startsWith","isManualSessionIdValid","manualTrack","persist","oldKey","sessions","disable","prevId","identityStore","idKey","clearingIdentity","changingIdentity","creatingIdentity","httpCookieService","dispatchClear","dispatchCreate","retId","retLeg","legacyUserStore","anonKey","migrated","decryptRudderHtValue","parsed","decryptRudderValue","legacySIO","clearedVal","syncedVal","traitsStore","traitsKey","seshKey","createStorage","sessionStore","legacyUser","currentId","startManualSession","endManualSession","getAndUpdateSessionInfo","updateSessionExpiration","sessionInfo","logout","User","save","cookieOpts","filterStores","UniversalStorage","storage","localStorageFallbackDisabled","groupDefaults","flushSyncAnalyticsCalls","getCalls","callAnalyticsMethod","flushAddSourceMiddleware","flushOn","flushSetAnonymousID","popPageContext","hasBufferedPageContextAsLastArg","bufferedPageCtx","isBufferedPageContext","called","_callMap","calls","_pushSnippetWindowBuffer","methodName","toArray","wa","PreInitMethodCall","loader","trackSubmit","_createMethod","trackClick","trackLink","pageView","ready","_createChainableMethod","addSourceMiddleware","setAnonymousId","addDestinationMiddleware","VERSION","_preInitBuffer","PreInitMethodCallBuffer","_promise","ajs","deprecationWarning","_analytics","_stub","_debug","initialized","_user","initialize","addIntegrationMiddleware","listeners","removeAllListeners","removeListener","removeEventListener","hasListeners","add","addIntegration","disablePersistance","disableClientPersistence","retryQueue","EventQueue","createDefaultQueue","writeKey","storageSetting","_universalStorage","createStore","_group","eventFactory","EventFactory","hightouchEvent","_dispatch","_traits","groupTraits","autotrack","link","form","trackForm","registrations","xt","deregistrations","pl","toggle","startSession","endSession","getSessionId","addMiddleware","middlewares","queryString","useQueryString","use","legacyPluginFactory","noConflict","msg","_settings","_options","pageview","_plugins","nested","Integration","urls","HTTPCookieService","urlHelper","renewUrl","clearUrl","retries","flushInterval","origin","cookieService","sendHTTPCookies","startQueueConsumer","flushIntervalId","bound","consumeQueue","setInterval","stopQueueConsumer","clearInterval","serviceUrl","sentAt","sleep","delayMS","req","clientHints","hints","userAgentData","getHighEntropyValues","brands","Brand","Version","brand","getCookieOptions","_ctx","highEntropyValuesClientHints","enrich","URLSearchParams","objectToQueryString","locale","userLanguage","language","campaign","utmParam","utm","amp","ampId","ad","queryIds","btid","urid","ads","referrerId","Intl","DateTimeFormat","timeZone","envEnrichment","EnvironmentEnrichmentPlugin","transformedContext","loadPluginFactory","remotePlugin","obfuscate","defaultCdn","RegExp","urlSplit","obfuscatedURL","btoa","libraryName","remoteLoader","userIntegrations","mergedIntegrations","routingMiddleware","pluginSources","allPlugins","routingRules","middlewareSettings","pluginPromises","remotePlugins","creationNameEnabled","creationName","currentNameEnabled","isPluginDisabled","pluginFactory","pluginLike","required","validate","rule","destinationName","wrapper","ActionDestination","kilobytes","encodeURI","batch","apiHost","config","protocol","schedule","unloaded","pageUnloaded","limit","size","sendBatch","updatedBatch","keepalive","reqs","chunks","visibilityState","_url","bufferOverflow","MAX_PAYLOAD_SIZE","approachingTrackingAPILimit","apiKey","failed","_metadata","bundled","unbundled","bundlingStatus","unbundledIntegrations","settingsUnbundled","configIds","maybeBundledConfigIds","bundledConfigIds","addBundledMetadata","bundledIds","flushQueue","failedQueue","isFlushing","newBuffer","hightouchio","inflightEvents","Set","remote","deliveryStrategy","client","strategy","hightouch","eventType","onAlias","delete","ValidationError","stringError","objError","nilError","assertUserIdentity","USER_FIELD_NAME","getAnyUserId","assertEventExists","assertEventType","assertTrackEventName","validation","inspectorHost","createDestination","createPlugin","facebookParams","BUILT_IN_PLUGINS","loadLegacySettings","cdnURL","baseUrl","errorResponseMessage","flushFinalBuffer","flushAnalyticsCallsInNewTask","registerPlugins","legacySettings","pluginLikes","legacyIntegrationSources","stringPluginNames","pluginName","uniqueStringPluginNames","names","unique","dedupeStringPluginNames","uniquePlugins","seenRefs","seenNames","dedupePlugins","uniquePluginSources","factories","dedupePluginFactories","NODE_ENV","hasTsubMiddleware","tsubMiddleware","ajsDestinations","legacyDestinations","legacyVideoPluginsEnabled","loadLegacyVideoPlugins","schemaFilter","mergedSettings","allSettled","loadedStringPlugins","resolvedStringPlugins","toRegister","enabledMiddleware","remoteMiddlewares","mdw","defaultHightouchIntegration","defaultSettings","__default","loadAnalytics","preInitBuffer","globalAnalyticsKey","cdnSettings","batching","updateCDNSettings","httpCookieServiceOptions","attach","attachInspector","Analytics","classicIntegrations","flushPreBuffer","term","initialPageview","_resolve","_reject","loadStart","resolveLoadStart","_resolveLoadStart","HtEventsBrowser","standalone","AnalyticsBuffered"],"sourceRoot":""}
|