{"version":3,"file":"aws-rum-helper-bundle.js","sources":["../../ClientApp/node_modules/@smithy/protocol-http/node_modules/@smithy/types/dist-es/auth.js","../../ClientApp/node_modules/@smithy/protocol-http/node_modules/@smithy/types/dist-es/endpoint.js","../../ClientApp/node_modules/@smithy/protocol-http/node_modules/@smithy/types/dist-es/http.js","../../ClientApp/node_modules/@smithy/protocol-http/node_modules/@smithy/types/dist-es/transfer.js","../../ClientApp/node_modules/@smithy/protocol-http/dist-es/httpRequest.js","../../ClientApp/node_modules/@smithy/protocol-http/dist-es/httpResponse.js","../../ClientApp/node_modules/@smithy/util-uri-escape/dist-es/escape-uri.js","../../ClientApp/node_modules/@smithy/querystring-builder/dist-es/index.js","../../ClientApp/node_modules/@smithy/fetch-http-handler/dist-es/request-timeout.js","../../ClientApp/node_modules/@smithy/fetch-http-handler/dist-es/fetch-http-handler.js","../../ClientApp/node_modules/@smithy/util-base64/dist-es/constants.browser.js","../../ClientApp/node_modules/aws-rum-web/dist/es/dispatch/utils.js","../../ClientApp/node_modules/aws-rum-web/dist/es/dispatch/StsClient.js","../../ClientApp/node_modules/aws-rum-web/dist/es/utils/constants.js","../../ClientApp/node_modules/aws-rum-web/dist/es/dispatch/CognitoIdentityClient.js","../../ClientApp/node_modules/aws-rum-web/dist/es/dispatch/Authentication.js","../../ClientApp/node_modules/aws-rum-web/dist/es/dispatch/BasicAuthentication.js","../../ClientApp/node_modules/aws-rum-web/dist/es/dispatch/EnhancedAuthentication.js","../../ClientApp/node_modules/aws-rum-web/dist/es/plugins/utils/constant.js","../../ClientApp/node_modules/aws-rum-web/dist/es/plugins/InternalPlugin.js","../../ClientApp/node_modules/aws-rum-web/dist/es/plugins/PluginManager.js","../../ClientApp/node_modules/aws-rum-web/dist/es/plugins/event-plugins/DomEventPlugin.js","../../ClientApp/node_modules/aws-rum-web/dist/es/plugins/utils/js-error-utils.js","../../ClientApp/node_modules/aws-rum-web/dist/es/plugins/event-plugins/JsErrorPlugin.js","../../ClientApp/node_modules/aws-rum-web/dist/es/utils/cookies-utils.js","../../ClientApp/node_modules/uuid/dist/esm-browser/rng.js","../../ClientApp/node_modules/uuid/dist/esm-browser/stringify.js","../../ClientApp/node_modules/uuid/dist/esm-browser/native.js","../../ClientApp/node_modules/uuid/dist/esm-browser/v4.js","../../ClientApp/node_modules/ua-parser-js/src/ua-parser.js","../../ClientApp/node_modules/aws-rum-web/dist/es/sessions/SessionManager.js","../../ClientApp/node_modules/shimmer/index.js","../../ClientApp/node_modules/aws-rum-web/dist/es/plugins/MonkeyPatched.js","../../ClientApp/node_modules/aws-rum-web/dist/es/sessions/VirtualPageLoadTimer.js","../../ClientApp/node_modules/aws-rum-web/dist/es/sessions/PageManager.js","../../ClientApp/node_modules/aws-rum-web/dist/es/event-bus/EventBus.js","../../ClientApp/node_modules/aws-rum-web/dist/es/event-cache/EventCache.js","../../ClientApp/node_modules/@smithy/util-hex-encoding/dist-es/index.js","../../ClientApp/node_modules/tslib/tslib.es6.js","../../ClientApp/node_modules/@aws-sdk/util-utf8-browser/dist-es/pureJs.js","../../ClientApp/node_modules/@aws-sdk/util-utf8-browser/dist-es/whatwgEncodingApi.js","../../ClientApp/node_modules/@aws-sdk/util-utf8-browser/dist-es/index.js","../../ClientApp/node_modules/@aws-crypto/crc32/node_modules/@aws-crypto/util/build/convertToBuffer.js","../../ClientApp/node_modules/@aws-crypto/crc32/node_modules/@aws-crypto/util/build/isEmptyData.js","../../ClientApp/node_modules/@aws-crypto/crc32/node_modules/@aws-crypto/util/build/numToUint8.js","../../ClientApp/node_modules/@aws-crypto/crc32/node_modules/@aws-crypto/util/build/uint32ArrayFrom.js","../../ClientApp/node_modules/@aws-crypto/crc32/node_modules/@aws-crypto/util/build/index.js","../../ClientApp/node_modules/@aws-crypto/crc32/build/aws_crc32.js","../../ClientApp/node_modules/@aws-crypto/crc32/build/index.js","../../ClientApp/node_modules/@smithy/eventstream-codec/dist-es/Int64.js","../../ClientApp/node_modules/@smithy/eventstream-codec/dist-es/HeaderMarshaller.js","../../ClientApp/node_modules/@smithy/util-middleware/dist-es/normalizeProvider.js","../../ClientApp/node_modules/@smithy/util-utf8/dist-es/fromUtf8.browser.js","../../ClientApp/node_modules/@smithy/util-utf8/dist-es/toUint8Array.js","../../ClientApp/node_modules/@smithy/util-utf8/dist-es/toUtf8.browser.js","../../ClientApp/node_modules/@smithy/signature-v4/dist-es/constants.js","../../ClientApp/node_modules/@smithy/signature-v4/dist-es/credentialDerivation.js","../../ClientApp/node_modules/@smithy/signature-v4/dist-es/getCanonicalHeaders.js","../../ClientApp/node_modules/@smithy/signature-v4/dist-es/getCanonicalQuery.js","../../ClientApp/node_modules/@smithy/is-array-buffer/dist-es/index.js","../../ClientApp/node_modules/@smithy/signature-v4/dist-es/getPayloadHash.js","../../ClientApp/node_modules/@smithy/signature-v4/dist-es/headerUtil.js","../../ClientApp/node_modules/@smithy/signature-v4/dist-es/cloneRequest.js","../../ClientApp/node_modules/@smithy/signature-v4/dist-es/moveHeadersToQuery.js","../../ClientApp/node_modules/@smithy/signature-v4/dist-es/prepareRequest.js","../../ClientApp/node_modules/@smithy/signature-v4/dist-es/utilDate.js","../../ClientApp/node_modules/@smithy/signature-v4/dist-es/SignatureV4.js","../../ClientApp/node_modules/@aws-crypto/sha256-js/build/constants.js","../../ClientApp/node_modules/@aws-crypto/sha256-js/build/RawSha256.js","../../ClientApp/node_modules/@aws-crypto/util/build/convertToBuffer.js","../../ClientApp/node_modules/@aws-crypto/util/build/isEmptyData.js","../../ClientApp/node_modules/@aws-crypto/util/build/numToUint8.js","../../ClientApp/node_modules/@aws-crypto/util/build/uint32ArrayFrom.js","../../ClientApp/node_modules/@aws-crypto/util/build/index.js","../../ClientApp/node_modules/@aws-crypto/sha256-js/build/jsSha256.js","../../ClientApp/node_modules/@aws-crypto/sha256-js/build/index.js","../../ClientApp/node_modules/aws-rum-web/dist/es/dispatch/DataPlaneClient.js","../../ClientApp/node_modules/aws-rum-web/dist/es/dispatch/BeaconHttpHandler.js","../../ClientApp/node_modules/aws-rum-web/dist/es/dispatch/request-timeout.js","../../ClientApp/node_modules/aws-rum-web/dist/es/dispatch/FetchHttpHandler.js","../../ClientApp/node_modules/aws-rum-web/dist/es/utils/random.js","../../ClientApp/node_modules/aws-rum-web/dist/es/plugins/utils/http-utils.js","../../ClientApp/node_modules/aws-rum-web/dist/es/dispatch/RetryHttpHandler.js","../../ClientApp/node_modules/aws-rum-web/dist/es/dispatch/Dispatch.js","../../ClientApp/node_modules/aws-rum-web/dist/es/utils/common-utils.js","../../ClientApp/node_modules/aws-rum-web/dist/es/plugins/utils/performance-utils.js","../../ClientApp/node_modules/aws-rum-web/dist/es/plugins/event-plugins/NavigationPlugin.js","../../ClientApp/node_modules/aws-rum-web/dist/es/plugins/event-plugins/ResourcePlugin.js","../../ClientApp/node_modules/web-vitals/dist/web-vitals.attribution.js","../../ClientApp/node_modules/aws-rum-web/dist/es/plugins/event-plugins/WebVitalsPlugin.js","../../ClientApp/node_modules/aws-rum-web/dist/es/errors/XhrError.js","../../ClientApp/node_modules/aws-rum-web/dist/es/plugins/event-plugins/XhrPlugin.js","../../ClientApp/node_modules/aws-rum-web/dist/es/plugins/event-plugins/FetchPlugin.js","../../ClientApp/node_modules/aws-rum-web/dist/es/plugins/event-plugins/PageViewPlugin.js","../../ClientApp/node_modules/aws-rum-web/dist/es/orchestration/Orchestration.js","../../ClientApp/js/aws-rum-helper.js"],"sourcesContent":["export var HttpAuthLocation;\n(function (HttpAuthLocation) {\n HttpAuthLocation[\"HEADER\"] = \"header\";\n HttpAuthLocation[\"QUERY\"] = \"query\";\n})(HttpAuthLocation || (HttpAuthLocation = {}));\n","export var EndpointURLScheme;\n(function (EndpointURLScheme) {\n EndpointURLScheme[\"HTTP\"] = \"http\";\n EndpointURLScheme[\"HTTPS\"] = \"https\";\n})(EndpointURLScheme || (EndpointURLScheme = {}));\n","export var FieldPosition;\n(function (FieldPosition) {\n FieldPosition[FieldPosition[\"HEADER\"] = 0] = \"HEADER\";\n FieldPosition[FieldPosition[\"TRAILER\"] = 1] = \"TRAILER\";\n})(FieldPosition || (FieldPosition = {}));\n","export var RequestHandlerProtocol;\n(function (RequestHandlerProtocol) {\n RequestHandlerProtocol[\"HTTP_0_9\"] = \"http/0.9\";\n RequestHandlerProtocol[\"HTTP_1_0\"] = \"http/1.0\";\n RequestHandlerProtocol[\"TDS_8_0\"] = \"tds/8.0\";\n})(RequestHandlerProtocol || (RequestHandlerProtocol = {}));\n","export class HttpRequest {\n constructor(options) {\n this.method = options.method || \"GET\";\n this.hostname = options.hostname || \"localhost\";\n this.port = options.port;\n this.query = options.query || {};\n this.headers = options.headers || {};\n this.body = options.body;\n this.protocol = options.protocol\n ? options.protocol.slice(-1) !== \":\"\n ? `${options.protocol}:`\n : options.protocol\n : \"https:\";\n this.path = options.path ? (options.path.charAt(0) !== \"/\" ? `/${options.path}` : options.path) : \"/\";\n this.username = options.username;\n this.password = options.password;\n this.fragment = options.fragment;\n }\n static isInstance(request) {\n if (!request)\n return false;\n const req = request;\n return (\"method\" in req &&\n \"protocol\" in req &&\n \"hostname\" in req &&\n \"path\" in req &&\n typeof req[\"query\"] === \"object\" &&\n typeof req[\"headers\"] === \"object\");\n }\n clone() {\n const cloned = new HttpRequest({\n ...this,\n headers: { ...this.headers },\n });\n if (cloned.query)\n cloned.query = cloneQuery(cloned.query);\n return cloned;\n }\n}\nfunction cloneQuery(query) {\n return Object.keys(query).reduce((carry, paramName) => {\n const param = query[paramName];\n return {\n ...carry,\n [paramName]: Array.isArray(param) ? [...param] : param,\n };\n }, {});\n}\n","export class HttpResponse {\n constructor(options) {\n this.statusCode = options.statusCode;\n this.reason = options.reason;\n this.headers = options.headers || {};\n this.body = options.body;\n }\n static isInstance(response) {\n if (!response)\n return false;\n const resp = response;\n return typeof resp.statusCode === \"number\" && typeof resp.headers === \"object\";\n }\n}\n","export const escapeUri = (uri) => encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode);\nconst hexEncode = (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`;\n","import { escapeUri } from \"@smithy/util-uri-escape\";\nexport function buildQueryString(query) {\n const parts = [];\n for (let key of Object.keys(query).sort()) {\n const value = query[key];\n key = escapeUri(key);\n if (Array.isArray(value)) {\n for (let i = 0, iLen = value.length; i < iLen; i++) {\n parts.push(`${key}=${escapeUri(value[i])}`);\n }\n }\n else {\n let qsEntry = key;\n if (value || typeof value === \"string\") {\n qsEntry += `=${escapeUri(value)}`;\n }\n parts.push(qsEntry);\n }\n }\n return parts.join(\"&\");\n}\n","export function requestTimeout(timeoutInMs = 0) {\n return new Promise((resolve, reject) => {\n if (timeoutInMs) {\n setTimeout(() => {\n const timeoutError = new Error(`Request did not complete within ${timeoutInMs} ms`);\n timeoutError.name = \"TimeoutError\";\n reject(timeoutError);\n }, timeoutInMs);\n }\n });\n}\n","import { HttpResponse } from \"@smithy/protocol-http\";\nimport { buildQueryString } from \"@smithy/querystring-builder\";\nimport { requestTimeout } from \"./request-timeout\";\nexport class FetchHttpHandler {\n constructor(options) {\n if (typeof options === \"function\") {\n this.configProvider = options().then((opts) => opts || {});\n }\n else {\n this.config = options ?? {};\n this.configProvider = Promise.resolve(this.config);\n }\n }\n destroy() {\n }\n async handle(request, { abortSignal } = {}) {\n if (!this.config) {\n this.config = await this.configProvider;\n }\n const requestTimeoutInMs = this.config.requestTimeout;\n if (abortSignal?.aborted) {\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n return Promise.reject(abortError);\n }\n let path = request.path;\n const queryString = buildQueryString(request.query || {});\n if (queryString) {\n path += `?${queryString}`;\n }\n if (request.fragment) {\n path += `#${request.fragment}`;\n }\n let auth = \"\";\n if (request.username != null || request.password != null) {\n const username = request.username ?? \"\";\n const password = request.password ?? \"\";\n auth = `${username}:${password}@`;\n }\n const { port, method } = request;\n const url = `${request.protocol}//${auth}${request.hostname}${port ? `:${port}` : \"\"}${path}`;\n const body = method === \"GET\" || method === \"HEAD\" ? undefined : request.body;\n const requestOptions = {\n body,\n headers: new Headers(request.headers),\n method: method,\n };\n if (typeof AbortController !== \"undefined\") {\n requestOptions[\"signal\"] = abortSignal;\n }\n const fetchRequest = new Request(url, requestOptions);\n const raceOfPromises = [\n fetch(fetchRequest).then((response) => {\n const fetchHeaders = response.headers;\n const transformedHeaders = {};\n for (const pair of fetchHeaders.entries()) {\n transformedHeaders[pair[0]] = pair[1];\n }\n const hasReadableStream = response.body != undefined;\n if (!hasReadableStream) {\n return response.blob().then((body) => ({\n response: new HttpResponse({\n headers: transformedHeaders,\n reason: response.statusText,\n statusCode: response.status,\n body,\n }),\n }));\n }\n return {\n response: new HttpResponse({\n headers: transformedHeaders,\n reason: response.statusText,\n statusCode: response.status,\n body: response.body,\n }),\n };\n }),\n requestTimeout(requestTimeoutInMs),\n ];\n if (abortSignal) {\n raceOfPromises.push(new Promise((resolve, reject) => {\n abortSignal.onabort = () => {\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n reject(abortError);\n };\n }));\n }\n return Promise.race(raceOfPromises);\n }\n}\n","const alphabetByEncoding = {};\nconst alphabetByValue = new Array(64);\nfor (let i = 0, start = \"A\".charCodeAt(0), limit = \"Z\".charCodeAt(0); i + start <= limit; i++) {\n const char = String.fromCharCode(i + start);\n alphabetByEncoding[char] = i;\n alphabetByValue[i] = char;\n}\nfor (let i = 0, start = \"a\".charCodeAt(0), limit = \"z\".charCodeAt(0); i + start <= limit; i++) {\n const char = String.fromCharCode(i + start);\n const index = i + 26;\n alphabetByEncoding[char] = index;\n alphabetByValue[index] = char;\n}\nfor (let i = 0; i < 10; i++) {\n alphabetByEncoding[i.toString(10)] = i + 52;\n const char = i.toString(10);\n const index = i + 52;\n alphabetByEncoding[char] = index;\n alphabetByValue[index] = char;\n}\nalphabetByEncoding[\"+\"] = 62;\nalphabetByValue[62] = \"+\";\nalphabetByEncoding[\"/\"] = 63;\nalphabetByValue[63] = \"/\";\nconst bitsPerLetter = 6;\nconst bitsPerByte = 8;\nconst maxLetterValue = 0b111111;\nexport { alphabetByEncoding, alphabetByValue, bitsPerLetter, bitsPerByte, maxLetterValue };\n","var __awaiter = (this && this.__awaiter) || function (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};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"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 (_) 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};\nexport var responseToJson = function (response) { return __awaiter(void 0, void 0, void 0, function () {\n var value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, response.body.getReader().read()];\n case 1:\n value = (_a.sent()).value;\n return [2 /*return*/, JSON.parse(String.fromCharCode.apply(null, value))];\n }\n });\n}); };\nexport var responseToString = function (response) { return __awaiter(void 0, void 0, void 0, function () {\n var value;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, response.body.getReader().read()];\n case 1:\n value = (_a.sent()).value;\n return [2 /*return*/, String.fromCharCode.apply(null, value)];\n }\n });\n}); };\n","var __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};\nvar __awaiter = (this && this.__awaiter) || function (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};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"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 (_) 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};\nimport { HttpRequest } from '@aws-sdk/protocol-http';\nimport { responseToString } from './utils';\nvar METHOD = 'POST';\nvar CONTENT_TYPE = 'application/x-www-form-urlencoded';\nvar PROTOCOL = 'https:';\nvar ACTION = 'AssumeRoleWithWebIdentity';\nvar VERSION = '2011-06-15';\nvar StsClient = /** @class */ (function () {\n function StsClient(config) {\n var _this = this;\n this.assumeRoleWithWebIdentity = function (request) { return __awaiter(_this, void 0, void 0, function () {\n var requestObject, encodedBody, STSRequest, response, xmlResponse, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 3, , 4]);\n requestObject = __assign(__assign({}, request), { Action: ACTION, Version: VERSION });\n encodedBody = new URLSearchParams(Object.entries(requestObject)).toString();\n STSRequest = new HttpRequest({\n method: METHOD,\n headers: {\n 'content-type': CONTENT_TYPE,\n host: this.hostname\n },\n protocol: PROTOCOL,\n hostname: this.hostname,\n body: encodedBody\n });\n return [4 /*yield*/, this.fetchRequestHandler.handle(STSRequest)];\n case 1:\n response = (_a.sent()).response;\n return [4 /*yield*/, responseToString(response)];\n case 2:\n xmlResponse = _a.sent();\n return [2 /*return*/, {\n accessKeyId: xmlResponse\n .split('')[1]\n .split('')[0],\n secretAccessKey: xmlResponse\n .split('')[1]\n .split('')[0],\n sessionToken: xmlResponse\n .split('')[1]\n .split('')[0],\n expiration: new Date(xmlResponse\n .split('')[1]\n .split('')[0])\n }];\n case 3:\n e_1 = _a.sent();\n throw new Error(\"CWR: Failed to retrieve credentials from STS: \".concat(e_1));\n case 4: return [2 /*return*/];\n }\n });\n }); };\n this.hostname = \"sts.\".concat(config.region, \".amazonaws.com\");\n this.fetchRequestHandler = config.fetchRequestHandler;\n }\n return StsClient;\n}());\nexport { StsClient };\n","export var CRED_KEY = 'cwr_c';\nexport var IDENTITY_KEY = 'cwr_i';\nexport var SESSION_COOKIE_NAME = 'cwr_s';\nexport var USER_COOKIE_NAME = 'cwr_u';\nexport var CRED_RENEW_MS = 30000;\nexport var INSTALL_SCRIPT = 'arw-script';\nexport var INSTALL_MODULE = 'arw-module';\nexport var DEFAULT_PAGE_ATTRIBUTES = ['pageId', 'pageTags'];\n","var __awaiter = (this && this.__awaiter) || function (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};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"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 (_) 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/* eslint-disable no-underscore-dangle */\nimport { HttpRequest } from '@aws-sdk/protocol-http';\nimport { responseToJson } from './utils';\nimport { IDENTITY_KEY } from '../utils/constants';\nvar METHOD = 'POST';\nvar CONTENT_TYPE = 'application/x-amz-json-1.1';\nvar PROTOCOL = 'https:';\n// Targets\nvar GET_ID_TARGET = 'AWSCognitoIdentityService.GetId';\nvar GET_TOKEN_TARGET = 'AWSCognitoIdentityService.GetOpenIdToken';\nvar GET_CREDENTIALS_TARGET = 'AWSCognitoIdentityService.GetCredentialsForIdentity';\nvar CognitoIdentityClient = /** @class */ (function () {\n function CognitoIdentityClient(config) {\n var _this = this;\n this.getId = function (request) { return __awaiter(_this, void 0, void 0, function () {\n var getIdResponse, requestPayload, idRequest, getIdResponse_1, _a, e_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n getIdResponse = null;\n try {\n getIdResponse = JSON.parse(localStorage.getItem(IDENTITY_KEY));\n }\n catch (e) {\n // Ignore -- we will get a new identity Id from Cognito\n }\n if (getIdResponse && getIdResponse.IdentityId) {\n return [2 /*return*/, Promise.resolve(getIdResponse)];\n }\n _b.label = 1;\n case 1:\n _b.trys.push([1, 4, , 5]);\n requestPayload = JSON.stringify(request);\n idRequest = this.getHttpRequest(GET_ID_TARGET, requestPayload);\n _a = responseToJson;\n return [4 /*yield*/, this.fetchRequestHandler.handle(idRequest)];\n case 2: return [4 /*yield*/, _a.apply(void 0, [(_b.sent()).response])];\n case 3:\n getIdResponse_1 = (_b.sent());\n try {\n localStorage.setItem(IDENTITY_KEY, JSON.stringify({ IdentityId: getIdResponse_1.IdentityId }));\n }\n catch (e) {\n // Ignore\n }\n return [2 /*return*/, getIdResponse_1];\n case 4:\n e_1 = _b.sent();\n throw new Error(\"CWR: Failed to retrieve Cognito identity: \".concat(e_1));\n case 5: return [2 /*return*/];\n }\n });\n }); };\n this.getOpenIdToken = function (request) { return __awaiter(_this, void 0, void 0, function () {\n var requestPayload, tokenRequest, response, _a, e_2;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 3, , 4]);\n requestPayload = JSON.stringify(request);\n tokenRequest = this.getHttpRequest(GET_TOKEN_TARGET, requestPayload);\n return [4 /*yield*/, this.fetchRequestHandler.handle(tokenRequest)];\n case 1:\n response = (_b.sent()).response;\n _a = this.validateOpenIdTokenResponse;\n return [4 /*yield*/, responseToJson(response)];\n case 2: return [2 /*return*/, _a.apply(this, [_b.sent()])];\n case 3:\n e_2 = _b.sent();\n localStorage.removeItem(IDENTITY_KEY);\n throw new Error(\"CWR: Failed to retrieve Cognito OpenId token: \".concat(e_2));\n case 4: return [2 /*return*/];\n }\n });\n }); };\n this.getCredentialsForIdentity = function (identityId) { return __awaiter(_this, void 0, void 0, function () {\n var requestPayload, credentialRequest, response, _a, AccessKeyId, Expiration, SecretKey, SessionToken, _b, e_3;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _c.trys.push([0, 3, , 4]);\n requestPayload = JSON.stringify({ IdentityId: identityId });\n credentialRequest = this.getHttpRequest(GET_CREDENTIALS_TARGET, requestPayload);\n return [4 /*yield*/, this.fetchRequestHandler.handle(credentialRequest)];\n case 1:\n response = (_c.sent()).response;\n _b = this.validateCredenentialsResponse;\n return [4 /*yield*/, responseToJson(response)];\n case 2:\n _a = _b.apply(this, [_c.sent()]), AccessKeyId = _a.AccessKeyId, Expiration = _a.Expiration, SecretKey = _a.SecretKey, SessionToken = _a.SessionToken;\n return [2 /*return*/, {\n accessKeyId: AccessKeyId,\n secretAccessKey: SecretKey,\n sessionToken: SessionToken,\n expiration: new Date(Expiration * 1000)\n }];\n case 3:\n e_3 = _c.sent();\n localStorage.removeItem(IDENTITY_KEY);\n throw new Error(\"CWR: Failed to retrieve credentials for Cognito identity: \".concat(e_3));\n case 4: return [2 /*return*/];\n }\n });\n }); };\n this.validateOpenIdTokenResponse = function (r) {\n if ('IdentityId' in r && 'Token' in r) {\n return r;\n }\n else if (r && '__type' in r && 'message' in r) {\n // The request may have failed because of ValidationException or\n // ResourceNotFoundException, which means the identity Id is bad. In\n // any case, we invalidate the identity Id so the entire process can\n // be re-tried.\n throw new Error(\"\".concat(r.__type, \": \").concat(r.message));\n }\n else {\n // We don't recognize ths response format.\n throw new Error('Unknown OpenIdToken response');\n }\n };\n this.validateCredenentialsResponse = function (r) {\n if ('IdentityId' in r && 'Credentials' in r) {\n return r.Credentials;\n }\n else if (r && '__type' in r && 'message' in r) {\n // The request may have failed because of ValidationException or\n // ResourceNotFoundException, which means the identity Id is bad. In\n // any case, we invalidate the identity Id so the entire process can\n // be re-tried.\n throw new Error(\"\".concat(r.__type, \": \").concat(r.message));\n }\n else {\n // We don't recognize ths response format.\n throw new Error('Unknown Credentials response');\n }\n };\n this.getHttpRequest = function (target, payload) {\n return new HttpRequest({\n method: METHOD,\n headers: {\n 'content-type': CONTENT_TYPE,\n 'x-amz-target': target\n },\n protocol: PROTOCOL,\n hostname: _this.hostname,\n body: payload\n });\n };\n this.hostname = \"cognito-identity.\".concat(config.region, \".amazonaws.com\");\n this.fetchRequestHandler = config.fetchRequestHandler;\n }\n return CognitoIdentityClient;\n}());\nexport { CognitoIdentityClient };\n","var __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};\nvar __awaiter = (this && this.__awaiter) || function (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};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"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 (_) 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};\nimport { CognitoIdentityClient } from './CognitoIdentityClient';\nimport { FetchHttpHandler } from '@aws-sdk/fetch-http-handler';\nimport { CRED_KEY, CRED_RENEW_MS } from '../utils/constants';\nvar Authentication = /** @class */ (function () {\n function Authentication(config) {\n var _this = this;\n /**\n * A credential provider which provides AWS credentials for an anonymous\n * (guest) user. These credentials are retrieved from the first successful\n * provider in a chain.\n *\n * Credentials are stored in and retrieved from localStorage. This prevents the client from having to\n * re-authenticate every time the client loads, which (1) improves the performance of the RUM web client and (2)\n * reduces the load on AWS services Cognito and STS.\n *\n * While storing credentials in localStorage puts the credential at greater risk of being leaked through an\n * XSS attack, there is no impact if the credentials were to be leaked. This is because (1) the identity pool ID\n * and role ARN are public and (2) the credentials are for an anonymous (guest) user.\n *\n * Regarding (1), the identity pool ID and role ARN are, by necessity, public. These identifiers are shipped with\n * each application as part of Cognito's Basic (Classic) authentication flow. The identity pool ID and role ARN\n * are not secret.\n *\n * Regarding (2), the authentication chain implemented in this file only supports anonymous (guest)\n * authentication. When the Cognito authentication flow is executed, {@code AnonymousCognitoCredentialsProvider}\n * does not communicate with a login provider such as Amazon, Facebook or Google. Instead, it relies on (a) the\n * identity pool supporting unauthenticated identities and (b) the IAM role policy enabling login through the\n * identity pool. If the identity pool does not support unauthenticated identities, this authentication chain\n * will not succeed.\n *\n * Taken together, (1) and (2) mean that if these temporary credentials were to be leaked, the leaked credentials\n * would not allow a bad actor to gain access to anything which they did not already have public access to.\n *\n * Implements AwsCredentialIdentityProvider = Provider\n */\n this.ChainAnonymousCredentialsProvider = function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this.AnonymousCredentialsProvider()\n .catch(this.AnonymousStorageCredentialsProvider)\n .catch(this.AnonymousCognitoCredentialsProvider)];\n });\n }); };\n /**\n * Provides credentials for an anonymous (guest) user. These credentials are read from a member variable.\n *\n * Implements AwsCredentialIdentityProvider = Provider\n */\n this.AnonymousCredentialsProvider = function () { 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, reject) {\n if (_this.renewCredentials()) {\n // The credentials have expired.\n return reject();\n }\n resolve(_this.credentials);\n })];\n });\n }); };\n /**\n * Provides credentials for an anonymous (guest) user. These credentials are read from localStorage.\n *\n * Implements AwsCredentialIdentityProvider = Provider\n */\n this.AnonymousStorageCredentialsProvider = function () { 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, reject) {\n var credentials;\n try {\n credentials = JSON.parse(localStorage.getItem(CRED_KEY));\n }\n catch (e) {\n // Error retrieving, decoding or parsing the cred string -- abort\n return reject();\n }\n // The expiration property of Credentials has a date type. Because the date was serialized as a string,\n // we need to convert it back into a date, otherwise the AWS SDK signing middleware\n // (@aws-sdk/middleware-signing) will throw an exception and no credentials will be returned.\n _this.credentials = __assign(__assign({}, credentials), { expiration: new Date(credentials.expiration) });\n if (_this.renewCredentials()) {\n // The credentials have expired.\n return reject();\n }\n resolve(_this.credentials);\n })];\n });\n }); };\n var region = config.identityPoolId.split(':')[0];\n this.config = config;\n this.cognitoIdentityClient = new CognitoIdentityClient({\n fetchRequestHandler: new FetchHttpHandler(),\n region: region\n });\n }\n /**\n * Returns {@code true} when the credentials need to be renewed.\n */\n Authentication.prototype.renewCredentials = function () {\n if (!this.credentials || !this.credentials.expiration) {\n return true;\n }\n var renewalTime = new Date(this.credentials.expiration.getTime() - CRED_RENEW_MS);\n return new Date() > renewalTime;\n };\n return Authentication;\n}());\nexport { Authentication };\n","var __extends = (this && this.__extends) || (function () {\n var 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 return function (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})();\nvar __awaiter = (this && this.__awaiter) || function (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};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"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 (_) 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};\nimport { FetchHttpHandler } from '@aws-sdk/fetch-http-handler';\nimport { StsClient } from './StsClient';\nimport { CRED_KEY } from '../utils/constants';\nimport { Authentication } from './Authentication';\nvar BasicAuthentication = /** @class */ (function (_super) {\n __extends(BasicAuthentication, _super);\n function BasicAuthentication(config) {\n var _this = _super.call(this, config) || this;\n /**\n * Provides credentials for an anonymous (guest) user. These credentials are retrieved from Cognito's basic\n * (classic) authflow.\n *\n * See https://docs.aws.amazon.com/cognito/latest/developerguide/authentication-flow.html\n *\n * Implements AwsCredentialIdentityProvider = Provider\n */\n _this.AnonymousCognitoCredentialsProvider = function () { return __awaiter(_this, void 0, void 0, function () {\n var retries, getIdResponse, getOpenIdTokenResponse, credentials, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n retries = 1;\n _a.label = 1;\n case 1:\n if (!true) return [3 /*break*/, 8];\n _a.label = 2;\n case 2:\n _a.trys.push([2, 6, , 7]);\n return [4 /*yield*/, this.cognitoIdentityClient.getId({\n IdentityPoolId: this.config.identityPoolId\n })];\n case 3:\n getIdResponse = _a.sent();\n return [4 /*yield*/, this.cognitoIdentityClient.getOpenIdToken(getIdResponse)];\n case 4:\n getOpenIdTokenResponse = _a.sent();\n return [4 /*yield*/, this.stsClient.assumeRoleWithWebIdentity({\n RoleArn: this.config.guestRoleArn,\n RoleSessionName: 'cwr',\n WebIdentityToken: getOpenIdTokenResponse.Token\n })];\n case 5:\n credentials = _a.sent();\n this.credentials = credentials;\n try {\n localStorage.setItem(CRED_KEY, JSON.stringify(credentials));\n }\n catch (e) {\n // Ignore\n }\n return [2 /*return*/, credentials];\n case 6:\n e_1 = _a.sent();\n if (retries) {\n retries--;\n }\n else {\n throw e_1;\n }\n return [3 /*break*/, 7];\n case 7: return [3 /*break*/, 1];\n case 8: return [2 /*return*/];\n }\n });\n }); };\n var region = config.identityPoolId.split(':')[0];\n _this.stsClient = new StsClient({\n fetchRequestHandler: new FetchHttpHandler(),\n region: region\n });\n return _this;\n }\n return BasicAuthentication;\n}(Authentication));\nexport { BasicAuthentication };\n","var __extends = (this && this.__extends) || (function () {\n var 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 return function (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})();\nvar __awaiter = (this && this.__awaiter) || function (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};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"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 (_) 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};\nimport { CRED_KEY } from '../utils/constants';\nimport { Authentication } from './Authentication';\nvar EnhancedAuthentication = /** @class */ (function (_super) {\n __extends(EnhancedAuthentication, _super);\n function EnhancedAuthentication(config) {\n var _this = _super.call(this, config) || this;\n /**\n * Provides credentials for an anonymous (guest) user. These credentials are retrieved from Cognito's enhanced\n * authflow.\n *\n * See https://docs.aws.amazon.com/cognito/latest/developerguide/authentication-flow.html\n *\n * Implements AwsCredentialIdentityProvider = Provider\n */\n _this.AnonymousCognitoCredentialsProvider = function () { return __awaiter(_this, void 0, void 0, function () {\n var retries, getIdResponse, credentials, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n retries = 1;\n _a.label = 1;\n case 1:\n if (!true) return [3 /*break*/, 7];\n _a.label = 2;\n case 2:\n _a.trys.push([2, 5, , 6]);\n return [4 /*yield*/, this.cognitoIdentityClient.getId({\n IdentityPoolId: this.config.identityPoolId\n })];\n case 3:\n getIdResponse = _a.sent();\n return [4 /*yield*/, this.cognitoIdentityClient.getCredentialsForIdentity(getIdResponse.IdentityId)];\n case 4:\n credentials = _a.sent();\n this.credentials = credentials;\n try {\n localStorage.setItem(CRED_KEY, JSON.stringify(credentials));\n }\n catch (e) {\n // Ignore\n }\n return [2 /*return*/, credentials];\n case 5:\n e_1 = _a.sent();\n if (retries) {\n retries--;\n }\n else {\n throw e_1;\n }\n return [3 /*break*/, 6];\n case 6: return [3 /*break*/, 1];\n case 7: return [2 /*return*/];\n }\n });\n }); };\n return _this;\n }\n return EnhancedAuthentication;\n}(Authentication));\nexport { EnhancedAuthentication };\n","export var UNKNOWN = 'unknown';\nexport var RUM_AMZ_PREFIX = 'com.amazon.rum';\nexport var RUM_AWS_PREFIX = 'com.amazonaws.rum';\n// Http request event schemas\nexport var HTTP_EVENT_TYPE = \"\".concat(RUM_AMZ_PREFIX, \".http_event\");\nexport var XRAY_TRACE_EVENT_TYPE = \"\".concat(RUM_AMZ_PREFIX, \".xray_trace_event\");\n// Web vitals event schemas\nexport var LCP_EVENT_TYPE = \"\".concat(RUM_AMZ_PREFIX, \".largest_contentful_paint_event\");\nexport var FID_EVENT_TYPE = \"\".concat(RUM_AMZ_PREFIX, \".first_input_delay_event\");\nexport var CLS_EVENT_TYPE = \"\".concat(RUM_AMZ_PREFIX, \".cumulative_layout_shift_event\");\n// Page load event schemas\nexport var PERFORMANCE_NAVIGATION_EVENT_TYPE = \"\".concat(RUM_AMZ_PREFIX, \".performance_navigation_event\");\nexport var PERFORMANCE_RESOURCE_EVENT_TYPE = \"\".concat(RUM_AMZ_PREFIX, \".performance_resource_event\");\n// DOM event schemas\nexport var DOM_EVENT_TYPE = \"\".concat(RUM_AMZ_PREFIX, \".dom_event\");\n// JS error event schemas\nexport var JS_ERROR_EVENT_TYPE = \"\".concat(RUM_AMZ_PREFIX, \".js_error_event\");\n// Page view event\nexport var PAGE_VIEW_EVENT_TYPE = \"\".concat(RUM_AMZ_PREFIX, \".page_view_event\");\n// Session start event\nexport var SESSION_START_EVENT_TYPE = \"\".concat(RUM_AMZ_PREFIX, \".session_start_event\");\n// Time to interactive event\nexport var TIME_TO_INTERACTIVE_EVENT_TYPE = \"\".concat(RUM_AMZ_PREFIX, \".time_to_interactive_event\");\n","import { RUM_AWS_PREFIX } from './utils/constant';\nvar InternalPlugin = /** @class */ (function () {\n function InternalPlugin(name) {\n this.enabled = true;\n this.pluginId = InternalPlugin.generatePluginId(name);\n }\n InternalPlugin.generatePluginId = function (name) {\n return \"\".concat(InternalPlugin.idPrefix, \".\").concat(name);\n };\n InternalPlugin.prototype.load = function (context) {\n var _a;\n this.context = context;\n (_a = this.onload) === null || _a === void 0 ? void 0 : _a.call(this);\n };\n InternalPlugin.prototype.getPluginId = function () {\n return this.pluginId;\n };\n InternalPlugin.idPrefix = RUM_AWS_PREFIX;\n return InternalPlugin;\n}());\nexport { InternalPlugin };\n","import { InternalPlugin } from './InternalPlugin';\n/**\n * The plugin manager maintains a list of plugins\n * and notifies plugins of configuration or lifecycle changes.\n */\nvar PluginManager = /** @class */ (function () {\n function PluginManager(context) {\n this.context = context;\n this.plugins = new Map();\n }\n /**\n * Add an event plugin to PluginManager and initialize the plugin.\n *\n * @param plugin The plugin which adheres to the RUM web client's plugin interface.\n */\n PluginManager.prototype.addPlugin = function (plugin) {\n var pluginId = plugin.getPluginId();\n if (this.hasPlugin(pluginId)) {\n throw new Error(\"Plugin \\\"\".concat(pluginId, \"\\\" already defined in the PluginManager\"));\n }\n this.plugins.set(pluginId, plugin);\n // initialize plugin\n plugin.load(this.context);\n };\n /**\n * Update an event plugin\n *\n * @param pluginId\n * @param updateWith The config to update the plugin with.\n */\n PluginManager.prototype.updatePlugin = function (pluginId, updateWith) {\n var _a;\n var plugin = this.getPlugin(pluginId);\n (_a = plugin === null || plugin === void 0 ? void 0 : plugin.update) === null || _a === void 0 ? void 0 : _a.call(plugin, updateWith);\n };\n /**\n * Enable all event plugins.\n */\n PluginManager.prototype.enable = function () {\n this.plugins.forEach(function (p) { return p.enable(); });\n };\n /**\n * Disable all event plugins.\n */\n PluginManager.prototype.disable = function () {\n this.plugins.forEach(function (p) { return p.disable(); });\n };\n /**\n * Return if a plugin exists.\n *\n * @param pluginId a unique identifier for the plugin\n */\n PluginManager.prototype.hasPlugin = function (pluginId) {\n return Boolean(this.getPlugin(pluginId));\n };\n /**\n * Manually record data using a plugin.\n *\n * @param pluginId The unique identifier for the plugin being configured.\n * @param data The data to be recorded by the plugin.\n */\n PluginManager.prototype.record = function (pluginId, data) {\n var plugin = this.getPlugin(pluginId);\n if ((plugin === null || plugin === void 0 ? void 0 : plugin.record) instanceof Function) {\n plugin.record(data);\n }\n else {\n throw new Error('AWS RUM Client record: Invalid plugin ID');\n }\n };\n PluginManager.prototype.getPlugin = function (id) {\n var _a;\n return ((_a = this.plugins.get(id)) !== null && _a !== void 0 ? _a : this.plugins.get(InternalPlugin.generatePluginId(id)));\n };\n return PluginManager;\n}());\nexport { PluginManager };\n","var __extends = (this && this.__extends) || (function () {\n var 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 return function (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})();\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};\nimport { InternalPlugin } from '../InternalPlugin';\nimport { DOM_EVENT_TYPE } from '../utils/constant';\nexport var DOM_EVENT_PLUGIN_ID = 'dom-event';\nvar defaultConfig = {\n interactionId: function () { return ''; },\n enableMutationObserver: false,\n events: []\n};\nvar DomEventPlugin = /** @class */ (function (_super) {\n __extends(DomEventPlugin, _super);\n function DomEventPlugin(config) {\n var _this = _super.call(this, DOM_EVENT_PLUGIN_ID) || this;\n _this.enabled = false;\n _this.eventListenerMap = new Map();\n _this.config = __assign(__assign({}, defaultConfig), config);\n return _this;\n }\n DomEventPlugin.getElementInfo = function (event) {\n var elementInfo = { name: 'UNKNOWN' };\n if (event.target instanceof Node) {\n elementInfo.name = event.target.nodeName;\n }\n if (event.target instanceof Element && event.target.id) {\n elementInfo.id = event.target.id;\n }\n return elementInfo;\n };\n DomEventPlugin.prototype.enable = function () {\n var _this = this;\n if (document.readyState !== 'complete') {\n window.addEventListener('load', function () { return _this.enable(); });\n return;\n }\n if (this.enabled) {\n return;\n }\n this.addListeners();\n if (this.config.enableMutationObserver) {\n this.observeDOMMutation();\n }\n this.enabled = true;\n };\n DomEventPlugin.prototype.disable = function () {\n if (!this.enabled) {\n return;\n }\n this.removeListeners();\n if (this.observer) {\n this.observer.disconnect();\n }\n this.enabled = false;\n };\n DomEventPlugin.prototype.update = function (events) {\n var _this = this;\n events.forEach(function (domEvent) {\n _this.addEventHandler(domEvent);\n _this.config.events.push(domEvent);\n });\n };\n DomEventPlugin.prototype.onload = function () {\n this.enable();\n };\n DomEventPlugin.prototype.removeListeners = function () {\n var _this = this;\n this.config.events.forEach(function (domEvent) {\n return _this.removeEventHandler(domEvent);\n });\n };\n DomEventPlugin.prototype.addListeners = function () {\n var _this = this;\n this.config.events.forEach(function (domEvent) {\n return _this.addEventHandler(domEvent);\n });\n };\n DomEventPlugin.prototype.getEventListener = function (cssLocator) {\n var _this = this;\n return function (event) {\n var _a;\n var elementInfo = DomEventPlugin.getElementInfo(event);\n var interactionId = _this.config.interactionId(event);\n var eventData = __assign(__assign(__assign({ version: '1.1.0', event: event.type, element: elementInfo.name }, (elementInfo.id ? { elementId: elementInfo.id } : {})), (interactionId ? { interactionId: interactionId } : {})), (cssLocator ? { cssLocator: cssLocator } : {}));\n if ((_a = _this.context) === null || _a === void 0 ? void 0 : _a.record) {\n _this.context.record(DOM_EVENT_TYPE, eventData);\n }\n };\n };\n DomEventPlugin.prototype.addEventHandler = function (domEvent) {\n var eventType = domEvent.event;\n var eventListener = this.getEventListener(domEvent.cssLocator);\n var identifiedElementList = [];\n var elementEventListenerList = this.eventListenerMap.has(domEvent)\n ? this.eventListenerMap.get(domEvent)\n : [];\n // first add event listener to all elements identified by the CSS locator\n if (domEvent.cssLocator) {\n var cssLocatedElements = document.querySelectorAll(domEvent.cssLocator);\n cssLocatedElements.forEach(function (element) {\n identifiedElementList.push(element);\n });\n }\n else if (domEvent.elementId) {\n var identifiedElement = document.getElementById(domEvent.elementId);\n if (identifiedElement) {\n identifiedElementList.push(identifiedElement);\n }\n }\n else if (domEvent.element) {\n identifiedElementList.push(domEvent.element);\n }\n identifiedElementList.forEach(function (element) {\n element.addEventListener(eventType, eventListener);\n elementEventListenerList.push({ element: element, eventListener: eventListener });\n });\n this.eventListenerMap.set(domEvent, elementEventListenerList);\n };\n DomEventPlugin.prototype.removeEventHandler = function (domEvent) {\n var elementEventListenerList = this.eventListenerMap.get(domEvent);\n if (elementEventListenerList) {\n elementEventListenerList.forEach(function (elementEventListener) {\n var element = elementEventListener.element;\n var eventListener = elementEventListener.eventListener;\n element.removeEventListener(domEvent.event, eventListener);\n });\n this.eventListenerMap.delete(domEvent);\n }\n };\n DomEventPlugin.prototype.observeDOMMutation = function () {\n var _this = this;\n this.observer = new MutationObserver(function () {\n _this.removeListeners();\n _this.addListeners();\n });\n // we track only changes to nodes/DOM elements, not attributes or characterData\n this.observer.observe(document, { childList: true, subtree: true });\n };\n return DomEventPlugin;\n}(InternalPlugin));\nexport { DomEventPlugin };\n","var isObject = function (error) {\n var type = typeof error;\n return (type === 'object' || type === 'function') && !!error;\n};\nvar buildBaseJsErrorEvent = function (errorEvent) {\n var rumEvent = {\n version: '1.0.0',\n type: 'undefined',\n message: 'undefined'\n };\n if (errorEvent.type !== undefined) {\n rumEvent.type = errorEvent.type;\n }\n if (errorEvent.message !== undefined) {\n rumEvent.message = errorEvent.message;\n }\n if (errorEvent.filename !== undefined) {\n rumEvent.filename = errorEvent.filename;\n }\n if (errorEvent.lineno !== undefined) {\n rumEvent.lineno = errorEvent.lineno;\n }\n if (errorEvent.colno !== undefined) {\n rumEvent.colno = errorEvent.colno;\n }\n return rumEvent;\n};\nvar appendErrorPrimitiveDetails = function (rumEvent, error) {\n // Keep unhandledrejection as type as it will write to rumEvent.message\n if (rumEvent.type !== 'unhandledrejection') {\n rumEvent.type = error.toString();\n }\n rumEvent.message = error.toString();\n};\nvar appendErrorObjectDetails = function (rumEvent, error, stackTraceLength) {\n // error may extend Error here, but it is not guaranteed (i.e., it could\n // be any object)\n if (error.name) {\n rumEvent.type = error.name;\n }\n if (error.message) {\n rumEvent.message = error.message;\n }\n if (error.fileName) {\n rumEvent.filename = error.fileName;\n }\n if (error.lineNumber) {\n rumEvent.lineno = error.lineNumber;\n }\n if (error.columnNumber) {\n rumEvent.colno = error.columnNumber;\n }\n if (stackTraceLength && error.stack) {\n rumEvent.stack =\n error.stack.length > stackTraceLength\n ? error.stack.substring(0, stackTraceLength) + '...'\n : error.stack;\n }\n};\nexport var isErrorPrimitive = function (error) {\n return error !== Object(error) && error !== undefined && error !== null;\n};\nexport var errorEventToJsErrorEvent = function (errorEvent, stackTraceLength) {\n var rumEvent = buildBaseJsErrorEvent(errorEvent);\n var error = errorEvent.error;\n if (isObject(error)) {\n appendErrorObjectDetails(rumEvent, error, stackTraceLength);\n }\n else if (isErrorPrimitive(error)) {\n appendErrorPrimitiveDetails(rumEvent, error);\n }\n return rumEvent;\n};\n","var __extends = (this && this.__extends) || (function () {\n var 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 return function (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})();\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};\nimport { InternalPlugin } from '../InternalPlugin';\nimport { JS_ERROR_EVENT_TYPE } from '../utils/constant';\nimport { errorEventToJsErrorEvent } from '../utils/js-error-utils';\nexport var JS_ERROR_EVENT_PLUGIN_ID = 'js-error';\nvar defaultConfig = {\n stackTraceLength: 1000,\n ignore: function () { return false; }\n};\nvar JsErrorPlugin = /** @class */ (function (_super) {\n __extends(JsErrorPlugin, _super);\n function JsErrorPlugin(config) {\n var _this = _super.call(this, JS_ERROR_EVENT_PLUGIN_ID) || this;\n _this.eventHandler = function (errorEvent) {\n if (!_this.config.ignore(errorEvent)) {\n _this.recordJsErrorEvent(errorEvent);\n }\n };\n _this.promiseRejectEventHandler = function (event) {\n if (!_this.config.ignore(event)) {\n _this.recordJsErrorEvent({\n type: event.type,\n error: event.reason\n });\n }\n };\n _this.config = __assign(__assign({}, defaultConfig), config);\n return _this;\n }\n JsErrorPlugin.prototype.enable = function () {\n if (this.enabled) {\n return;\n }\n this.addEventHandler();\n this.enabled = true;\n };\n JsErrorPlugin.prototype.disable = function () {\n if (!this.enabled) {\n return;\n }\n this.removeEventHandler();\n this.enabled = false;\n };\n JsErrorPlugin.prototype.record = function (error) {\n if (error instanceof ErrorEvent) {\n this.recordJsErrorEvent(error);\n }\n else {\n this.recordJsErrorEvent({ type: 'error', error: error });\n }\n };\n JsErrorPlugin.prototype.onload = function () {\n this.addEventHandler();\n };\n JsErrorPlugin.prototype.recordJsErrorEvent = function (error) {\n var _a;\n (_a = this.context) === null || _a === void 0 ? void 0 : _a.record(JS_ERROR_EVENT_TYPE, errorEventToJsErrorEvent(error, this.config.stackTraceLength));\n };\n JsErrorPlugin.prototype.addEventHandler = function () {\n window.addEventListener('error', this.eventHandler);\n window.addEventListener('unhandledrejection', this.promiseRejectEventHandler);\n };\n JsErrorPlugin.prototype.removeEventHandler = function () {\n window.removeEventListener('error', this.eventHandler);\n window.removeEventListener('unhandledrejection', this.promiseRejectEventHandler);\n };\n return JsErrorPlugin;\n}(InternalPlugin));\nexport { JsErrorPlugin };\n","/**\n * Stores a cookie.\n *\n * @param name The cookie's name.\n * @param value The cookie's value.\n * @param attributes The domain where the cookie will be stored.\n * @param ttl Time to live -- expiry date is current date + ttl (do not use with {@code expires}).\n * @param expires The expiry date for the cookie (do not use with {@code ttl})\n */\nexport var storeCookie = function (name, value, attributes, ttl, expires) {\n var cookie = name + '=';\n cookie += value || '';\n if (expires !== undefined) {\n cookie += \"; Expires=\".concat(expires.toUTCString());\n }\n else if (ttl !== undefined) {\n cookie += \"; Expires=\".concat(getExpiryDate(ttl).toUTCString());\n }\n cookie += \"; Domain=\".concat(attributes.domain);\n cookie += \"; Path=\".concat(attributes.path);\n cookie += \"; SameSite=\".concat(attributes.sameSite);\n cookie += attributes.secure ? '; Secure' : '';\n document.cookie = cookie;\n};\n/**\n * Returns the current date + TTL\n *\n * @param ttl seconds to live\n */\nexport var getExpiryDate = function (ttl) {\n return new Date(new Date().getTime() + ttl * 1000);\n};\n/**\n * Removes a cookie by setting its expiry in the past.\n *\n * @param name The cookie's name.\n */\nexport var removeCookie = function (name, attributes) {\n var cookie = name + '=';\n cookie += \"; Expires=\".concat(new Date(0));\n cookie += \"; Domain=\".concat(attributes.domain);\n cookie += \"; Path=\".concat(attributes.path);\n cookie += \"; SameSite=\".concat(attributes.sameSite);\n cookie += attributes.secure ? 'Secure' : '';\n document.cookie = cookie;\n};\n/**\n * Get a cookie with a given name\n *\n * @param name The cookie's name.\n */\nexport var getCookie = function (name) {\n var cookies = document.cookie.split('; ');\n for (var _i = 0, cookies_1 = cookies; _i < cookies_1.length; _i++) {\n var cookie = cookies_1[_i];\n var split = cookie.split('=');\n if (split[0] === name) {\n return split[1];\n }\n }\n return '';\n};\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v1.0.38\n Copyright © 2012-2021 Faisal Salman \n MIT License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://faisalman.github.io/ua-parser-js\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '1.0.38',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major',\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded',\n UA_MAX_LENGTH = 500;\n\n var AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n BROWSER = 'Browser',\n CHROME = 'Chrome',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n OPERA = 'Opera',\n SAMSUNG = 'Samsung',\n SHARP = 'Sharp',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n FACEBOOK = 'Facebook',\n CHROMIUM_OS = 'Chromium OS',\n MAC_OS = 'Mac OS';\n\n ///////////\n // Helper\n //////////\n\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return str;\n };\n\n ///////////////\n // String map\n //////////////\n\n // Safari < 3.0\n var oldSafariMap = {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n },\n windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var regexes = {\n\n browser : [[\n\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bop(?:rg)?x\\/([\\w\\.]+)/i // Opera GX\n ], [VERSION, [NAME, OPERA+' GX']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i // Baidu\n ], [VERSION, [NAME, 'Baidu']], [\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer\n // Trident based\n /(avant|iemobile|slim)\\s?(?:browser)?[\\/ ]?([\\w\\.]*)/i, // Avant/IEMobile/SlimBrowser\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\\/([-\\w\\.]+)/i,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ\n /(heytap|ovi)browser\\/([\\d\\.]+)/i, // Heytap/Ovi\n /(weibo)__([\\d\\.]+)/i // Weibo\n ], [NAME, VERSION], [\n /\\bddg\\/([\\w\\.]+)/i // DuckDuckGo\n ], [VERSION, [NAME, 'DuckDuckGo']], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UC'+BROWSER]], [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i, // WeChat Desktop for Windows Built-in Browser\n /\\bqbcore\\/([\\w\\.]+).+microm/i,\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /ya(?:search)?browser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /slbrowser\\/([\\w\\.]+)/i // Smart Lenovo Browser\n ], [VERSION, [NAME, 'Smart Lenovo '+BROWSER]], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI '+BROWSER]], [\n /fxios\\/([-\\w\\.]+)/i // Firefox for iOS\n ], [VERSION, [NAME, FIREFOX]], [\n /\\bqihu|(qi?ho?o?|360)browser/i // 360\n ], [[NAME, '360 ' + BROWSER]], [\n /(oculus|sailfish|huawei|vivo)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1 ' + BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser\n /samsungbrowser\\/([\\w\\.]+)/i // Samsung Internet\n ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n /(comodo_dragon)\\/([\\w\\.]+)/i // Comodo Dragon\n ], [[NAME, /_/g, ' '], VERSION], [\n /metasr[\\/ ]?([\\d\\.]+)/i // Sogou Explorer\n ], [VERSION, [NAME, 'Sogou Explorer']], [\n /(sogou)mo\\w+\\/([\\d\\.]+)/i // Sogou Mobile\n ], [[NAME, 'Sogou Mobile'], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|2345Explorer)[\\/ ]?([\\w\\.]+)/i // QQBrowser/2345 Browser\n ], [NAME, VERSION], [\n /(lbbrowser)/i, // LieBao Browser\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ], [NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION], [\n /(Klarna)\\/([\\w\\.]+)/i, // Klarna Shopping Browser for iOS & Android\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, // Naver InApp\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(alipay)client\\/([\\w\\.]+)/i, // Alipay\n /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i, // Twitter\n /(chromium|instagram|snapchat)[\\/ ]([-\\w\\.]+)/i // Chromium/Instagram/Snapchat\n ], [NAME, VERSION], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA']], [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i // TikTok\n ], [VERSION, [NAME, 'TikTok']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n /version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser\n /(links) \\(([\\w\\.]+)/i, // Links\n /panasonic;(viera)/i // Panasonic Viera\n ], [NAME, VERSION], [\n \n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ], [NAME, [VERSION, /master.|lts./, \"\"]]\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows (ce|mobile); ppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n /////////////////////////\n\n // Samsung\n /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]([-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n /(macintosh);/i\n ], [MODEL, [VENDOR, APPLE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n // Huawei\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei|honor)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i, // Xiaomi Redmi 'numeric' models\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i // Xiaomi Mi\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n /oid[^\\)]+; (2\\d{4}(283|rpbf)[cgl])( bui|\\))/i, // Redmi Pad\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n /\\b(opd2\\d{3}a?) bui/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, TABLET]], [\n\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n // Nokia\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n // Google\n /(pixel c)\\b/i // Google Pixel C\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /droid.+ (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i, // Kindle Fire without Silk / Echo Show\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n \n // Ulefone\n /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i, // Asus\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w]+)/i, // Lenovo\n /(jolla)/i, // Jolla\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(kobo)\\s(ereader|touch)/i, // Kobo\n /(archos) (gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i, // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i, // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i, // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i, // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i // Vodafone\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /(u304aa)/i // AT&T\n ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n /\\bsie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n /\\b(rct\\w+) b/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n /\\b(venue[\\d ]{2,7}) b/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n /\\b(q(?:mv|ta)\\w+) b/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n /\\b(tm\\d{3}\\w+) b/i\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n /\\b(k88) b/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n /\\b(nx\\d{3}j) b/i // ZTE Nubia\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n /\\b(gen\\d{3}) b.+49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n /\\b(zur\\d{3}) b/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n /\\b((zeki)?tb.*\\b) b/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n /\\b(ns-?\\w{0,9}) b/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n /\\b((nxa|next)-?\\w{0,9}) b/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n /\\b(lvtel\\-)?(v1[12]) b/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n /\\b(ph-1) /i // Essential PH-1\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n /\\b(trio[-\\w\\. ]+) b/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n /\\btu_(1491) b/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n /(shield[\\w ]+) b/i // Nvidia Shield Tablets\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast\n ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /droid.+aft(\\w+)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i // Sharp\n ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n /(bravia[\\w ]+)( bui|\\))/i // Sony\n ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n /(mitv-\\w{5}) bui/i // Xiaomi\n ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n /Hbbtv.*(technisat) (.*);/i // TechniSAT\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i // SmartTV from Unidentified Vendors\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) ([wids3utch]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield) bui/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n /(playstation [345portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /((pebble))app/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i // Apple Watch\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n /(quest( \\d| pro)?)/i // Oculus Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n /(aeobc)\\b/i // Echo Dot\n ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\n ], [MODEL, [TYPE, MOBILE]], [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ], [MODEL, [TYPE, TABLET]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /(android[-\\w\\. ]{0,9});.+buil/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, // iCab\n /\\b(libweb)/i\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i // Windows Phone\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /windows nt 6\\.2; (arm)/i, // Windows RT\n /windows[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i,\n /(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[VERSION, strMapper, windowsVersionMap], [NAME, 'Windows']], [\n\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS\n ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i, // Tizen/KaiOS\n /\\((series40);/i // Series 40\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i // watchOS\n ], [VERSION, [NAME, 'watchOS']], [\n\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ], [VERSION, [NAME, CHROME+'cast']], [\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i // Chromium OS\n ], [[NAME, CHROMIUM_OS], VERSION],[\n\n // Smart TVs\n /panasonic;(viera)/i, // Panasonic Viera\n /(netrange)mmh/i, // Netrange\n /(nettv)\\/(\\d+\\.[\\w\\.]+)/i, // NetTV\n\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux) ?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n var UAParser = function (ua, extensions) {\n\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _navigator = (typeof window !== UNDEF_TYPE && window.navigator) ? window.navigator : undefined;\n var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);\n var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined;\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n var _isSelfNav = _navigator && _navigator.userAgent == _ua;\n\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser[MAJOR] = majorize(_browser[VERSION]);\n // Brave-specific detection\n if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {\n _browser[NAME] = 'Brave';\n }\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {\n _device[TYPE] = MOBILE;\n }\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {\n _device[MODEL] = 'iPad';\n _device[TYPE] = TABLET;\n }\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n if (_isSelfNav && !_os[NAME] && _uach && _uach.platform && _uach.platform != 'Unknown') {\n _os[NAME] = _uach.platform \n .replace(/chrome os/i, CHROMIUM_OS)\n .replace(/macos/i, MAC_OS); // backward compatibility\n }\n return _os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n","var __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};\nimport { storeCookie, getCookie } from '../utils/cookies-utils';\nimport { v4 } from 'uuid';\nimport { UAParser } from 'ua-parser-js';\nimport { SESSION_COOKIE_NAME, USER_COOKIE_NAME } from '../utils/constants';\nexport var NIL_UUID = '00000000-0000-0000-0000-000000000000';\nexport var UNKNOWN = 'unknown';\nexport var DESKTOP_DEVICE_TYPE = 'desktop';\nexport var WEB_PLATFORM_TYPE = 'web';\nexport var SESSION_START_EVENT_TYPE = 'com.amazon.rum.session_start_event';\nexport var RUM_SESSION_START = 'rum_session_start';\nexport var RUM_SESSION_EXPIRE = 'rum_session_expire';\n/**\n * The session handler handles user id and session id.\n *\n * A session is the {user id, session id} tuple which groups events that occur on a single browser over a continuous\n * period of time. A session begins when no session exists or the last session has expired. If user id does not exist,\n * session handler will assign a new one and store it in cookie. If session id does not exist or has expired, session\n * handler will assign a new one and store it in cookie. Session handler detects user interactions and updates session\n * id expiration time.\n */\nvar SessionManager = /** @class */ (function () {\n function SessionManager(appMonitorDetails, config, record, pageManager) {\n this.appMonitorDetails = appMonitorDetails;\n this.config = config;\n this.record = record;\n this.pageManager = pageManager;\n // Initialize the session to the nil session\n this.session = {\n sessionId: NIL_UUID,\n record: this.sample(),\n eventCount: 0\n };\n // Initialize or restore the user\n this.initializeUser();\n // Collect the user agent and domain\n this.collectAttributes();\n // Set custom session attributes\n this.addSessionAttributes(this.config.sessionAttributes);\n // Attempt to restore the previous session\n this.getSessionFromCookie();\n }\n /**\n * Returns true if the session is sampled, false otherwise.\n */\n SessionManager.prototype.isSampled = function () {\n return this.session.record;\n };\n /**\n * Returns the session ID. If no session ID exists, one will be created.\n */\n SessionManager.prototype.getSession = function () {\n if (this.session.sessionId === NIL_UUID) {\n // The session does not exist. Create a new one.\n // If it is created before the page view is recorded, the session start event metadata will\n // not have page attributes as the page does not exist yet.\n this.createSession();\n }\n else if (this.session.sessionId !== NIL_UUID &&\n new Date() > this.sessionExpiry) {\n // The session has expired. Create a new one.\n this.createSession();\n }\n return this.session;\n };\n SessionManager.prototype.getAttributes = function () {\n return this.attributes;\n };\n /**\n * Adds custom session attributes to the session's attributes\n *\n * @param sessionAttributes object containing custom attribute data in the form of key, value pairs\n */\n SessionManager.prototype.addSessionAttributes = function (sessionAttributes) {\n this.attributes = __assign(__assign({}, this.attributes), sessionAttributes);\n };\n SessionManager.prototype.getUserId = function () {\n if (this.useCookies()) {\n return this.userId;\n }\n return NIL_UUID;\n };\n SessionManager.prototype.incrementSessionEventCount = function () {\n this.session.eventCount++;\n this.renewSession();\n };\n SessionManager.prototype.initializeUser = function () {\n var userId = '';\n this.userExpiry = new Date();\n this.userExpiry.setDate(this.userExpiry.getDate() + this.config.userIdRetentionDays);\n if (this.config.userIdRetentionDays <= 0) {\n // Use the 'nil' UUID when the user ID will not be retained\n this.userId = '00000000-0000-0000-0000-000000000000';\n }\n else if (this.useCookies()) {\n userId = this.getUserIdCookie();\n this.userId = userId ? userId : v4();\n this.createOrRenewUserCookie(userId, this.userExpiry);\n }\n else {\n this.userId = v4();\n }\n };\n SessionManager.prototype.createOrRenewSessionCookie = function (session, expires) {\n if (btoa) {\n storeCookie(this.sessionCookieName(), btoa(JSON.stringify(session)), this.config.cookieAttributes, undefined, expires);\n }\n };\n SessionManager.prototype.createOrRenewUserCookie = function (userId, expires) {\n storeCookie(USER_COOKIE_NAME, userId, this.config.cookieAttributes, undefined, expires);\n };\n SessionManager.prototype.getUserIdCookie = function () {\n return getCookie(USER_COOKIE_NAME);\n };\n SessionManager.prototype.getSessionFromCookie = function () {\n if (this.useCookies()) {\n var cookie = getCookie(this.sessionCookieName());\n if (cookie && atob) {\n try {\n this.session = JSON.parse(atob(cookie));\n this.pageManager.resumeSession(this.session.page);\n }\n catch (e) {\n // Error decoding or parsing the cookie -- ignore\n }\n }\n }\n };\n SessionManager.prototype.storeSessionAsCookie = function () {\n if (this.useCookies() && this.config.userIdRetentionDays > 0) {\n this.createOrRenewUserCookie(this.userId, this.userExpiry);\n }\n if (this.useCookies()) {\n // Set the user cookie in case useCookies() has changed from false to true.\n this.createOrRenewSessionCookie(this.session, this.sessionExpiry);\n }\n };\n SessionManager.prototype.createSession = function () {\n // The semantics of the nil session (created during initialization) are that there is no session.\n // We ensure the nil session and new session created right after initialization have the same sampling decision.\n // Otherwise, we will always reevaluate the sample decision.\n this.session = {\n sessionId: v4(),\n record: this.session.sessionId === NIL_UUID\n ? this.session.record\n : this.sample(),\n eventCount: 0\n };\n this.session.page = this.pageManager.getPage();\n this.sessionExpiry = new Date(new Date().getTime() + this.config.sessionLengthSeconds * 1000);\n this.storeSessionAsCookie();\n this.record(this.session, SESSION_START_EVENT_TYPE, {\n version: '1.0.0'\n });\n };\n SessionManager.prototype.renewSession = function () {\n this.sessionExpiry = new Date(new Date().getTime() + this.config.sessionLengthSeconds * 1000);\n this.session.page = this.pageManager.getPage();\n this.storeSessionAsCookie();\n };\n SessionManager.prototype.collectAttributes = function () {\n var ua = new UAParser(navigator.userAgent).getResult();\n this.attributes = {\n browserLanguage: navigator.language,\n browserName: ua.browser.name ? ua.browser.name : UNKNOWN,\n browserVersion: ua.browser.version ? ua.browser.version : UNKNOWN,\n osName: ua.os.name ? ua.os.name : UNKNOWN,\n osVersion: ua.os.version ? ua.os.version : UNKNOWN,\n // Possible device types include {console, mobile, tablet, smarttv, wearable, embedded}. If the device\n // type is undefined, there was no information indicating the device is anything other than a desktop,\n // so we assume the device is a desktop.\n deviceType: ua.device.type ? ua.device.type : DESKTOP_DEVICE_TYPE,\n // This client is used exclusively in web applications.\n platformType: WEB_PLATFORM_TYPE,\n domain: window.location.hostname\n };\n };\n /**\n * Returns true when cookies should be used to store user ID and session ID.\n */\n SessionManager.prototype.useCookies = function () {\n return navigator.cookieEnabled && this.config.allowCookies;\n };\n /**\n * Returns {@code true} when the session has been selected to be recorded.\n */\n SessionManager.prototype.sample = function () {\n return Math.random() < this.config.sessionSampleRate;\n };\n SessionManager.prototype.sessionCookieName = function () {\n if (this.config.cookieAttributes.unique) {\n return \"\".concat(SESSION_COOKIE_NAME, \"_\").concat(this.appMonitorDetails.id);\n }\n return SESSION_COOKIE_NAME;\n };\n return SessionManager;\n}());\nexport { SessionManager };\n","'use strict'\n\nfunction isFunction (funktion) {\n return typeof funktion === 'function'\n}\n\n// Default to complaining loudly when things don't go according to plan.\nvar logger = console.error.bind(console)\n\n// Sets a property on an object, preserving its enumerability.\n// This function assumes that the property is already writable.\nfunction defineProperty (obj, name, value) {\n var enumerable = !!obj[name] && obj.propertyIsEnumerable(name)\n Object.defineProperty(obj, name, {\n configurable: true,\n enumerable: enumerable,\n writable: true,\n value: value\n })\n}\n\n// Keep initialization idempotent.\nfunction shimmer (options) {\n if (options && options.logger) {\n if (!isFunction(options.logger)) logger(\"new logger isn't a function, not replacing\")\n else logger = options.logger\n }\n}\n\nfunction wrap (nodule, name, wrapper) {\n if (!nodule || !nodule[name]) {\n logger('no original function ' + name + ' to wrap')\n return\n }\n\n if (!wrapper) {\n logger('no wrapper function')\n logger((new Error()).stack)\n return\n }\n\n if (!isFunction(nodule[name]) || !isFunction(wrapper)) {\n logger('original object and wrapper must be functions')\n return\n }\n\n var original = nodule[name]\n var wrapped = wrapper(original, name)\n\n defineProperty(wrapped, '__original', original)\n defineProperty(wrapped, '__unwrap', function () {\n if (nodule[name] === wrapped) defineProperty(nodule, name, original)\n })\n defineProperty(wrapped, '__wrapped', true)\n\n defineProperty(nodule, name, wrapped)\n return wrapped\n}\n\nfunction massWrap (nodules, names, wrapper) {\n if (!nodules) {\n logger('must provide one or more modules to patch')\n logger((new Error()).stack)\n return\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules]\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to wrap on modules')\n return\n }\n\n nodules.forEach(function (nodule) {\n names.forEach(function (name) {\n wrap(nodule, name, wrapper)\n })\n })\n}\n\nfunction unwrap (nodule, name) {\n if (!nodule || !nodule[name]) {\n logger('no function to unwrap.')\n logger((new Error()).stack)\n return\n }\n\n if (!nodule[name].__unwrap) {\n logger('no original to unwrap to -- has ' + name + ' already been unwrapped?')\n } else {\n return nodule[name].__unwrap()\n }\n}\n\nfunction massUnwrap (nodules, names) {\n if (!nodules) {\n logger('must provide one or more modules to patch')\n logger((new Error()).stack)\n return\n } else if (!Array.isArray(nodules)) {\n nodules = [nodules]\n }\n\n if (!(names && Array.isArray(names))) {\n logger('must provide one or more functions to unwrap on modules')\n return\n }\n\n nodules.forEach(function (nodule) {\n names.forEach(function (name) {\n unwrap(nodule, name)\n })\n })\n}\n\nshimmer.wrap = wrap\nshimmer.massWrap = massWrap\nshimmer.unwrap = unwrap\nshimmer.massUnwrap = massUnwrap\n\nmodule.exports = shimmer\n","var __extends = (this && this.__extends) || (function () {\n var 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 return function (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})();\nimport * as shimmer from 'shimmer';\nimport { InternalPlugin } from './InternalPlugin';\nvar MonkeyPatched = /** @class */ (function (_super) {\n __extends(MonkeyPatched, _super);\n function MonkeyPatched() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.enable = _this.patch.bind(_this, true);\n _this.disable = _this.patch.bind(_this, false);\n _this.enabled = false;\n return _this;\n }\n MonkeyPatched.prototype.patchAll = function () {\n var wrap = shimmer.wrap.bind(shimmer);\n for (var _i = 0, _a = this.patches; _i < _a.length; _i++) {\n var patch = _a[_i];\n wrap(patch.nodule, patch.name, patch.wrapper());\n }\n };\n MonkeyPatched.prototype.unpatchAll = function () {\n var unwrap = shimmer.unwrap.bind(shimmer);\n for (var _i = 0, _a = this.patches; _i < _a.length; _i++) {\n var patch = _a[_i];\n unwrap(patch.nodule, patch.name);\n }\n };\n MonkeyPatched.prototype.patch = function (shouldPatch) {\n if (shouldPatch === void 0) { shouldPatch = true; }\n if (this.enabled !== shouldPatch) {\n this.enabled = shouldPatch;\n if (shouldPatch) {\n this.patchAll();\n }\n else {\n this.unpatchAll();\n }\n }\n };\n return MonkeyPatched;\n}(InternalPlugin));\nexport { MonkeyPatched };\n","var __extends = (this && this.__extends) || (function () {\n var 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 return function (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})();\nimport { PERFORMANCE_NAVIGATION_EVENT_TYPE } from '../plugins/utils/constant';\nimport { MonkeyPatched } from '../plugins/MonkeyPatched';\n/**\n * Maintains the core logic for virtual page load timing functionality.\n * (1) Holds all virtual page load timing related resources\n * (2) Intercepts outgoing XMLHttpRequests and Fetch requests and listens for DOM changes\n * (3) Records virtual page load\n */\nvar VirtualPageLoadTimer = /** @class */ (function (_super) {\n __extends(VirtualPageLoadTimer, _super);\n function VirtualPageLoadTimer(pageManager, config, record) {\n var _this = _super.call(this, 'virtual-page-load-timer') || this;\n _this.sendWrapper = function () {\n var self = _this;\n return function (original) {\n return function () {\n self.recordXhr(this);\n this.addEventListener('loadend', self.endTracking);\n return original.apply(this, arguments);\n };\n };\n };\n /**\n * Removes the current event from either requestBuffer or ongoingRequests set.\n *\n * @param event\n */\n _this.endTracking = function (e) {\n var currTime = Date.now();\n var xhr = e.target;\n xhr.removeEventListener('loadend', _this.endTracking);\n _this.removeXhr(xhr, currTime);\n };\n _this.fetch = function (original, thisArg, argsArray) {\n return original\n .apply(thisArg, argsArray)\n .catch(function (error) {\n throw error;\n })\n .finally(_this.decrementFetchCounter);\n };\n /**\n * Increment the fetch counter in PageManager when fetch is beginning\n */\n _this.fetchWrapper = function () {\n var self = _this;\n return function (original) {\n return function (input, init) {\n self.fetchCounter += 1;\n return self.fetch(original, this, arguments);\n };\n };\n };\n _this.decrementFetchCounter = function () {\n if (!_this.isPageLoaded) {\n _this.latestEndTime = Date.now();\n }\n _this.fetchCounter -= 1;\n };\n /**\n * Checks whether the virtual page is still being loaded.\n * If completed:\n * (1) Clear the timers\n * (2) Record data using NavigationEvent\n * (3) Indicate current page has finished loading\n */\n _this.checkLoadStatus = function () {\n if (_this.ongoingRequests.size === 0 && _this.fetchCounter === 0) {\n clearInterval(_this.periodicCheckerId);\n clearTimeout(_this.timeoutCheckerId);\n _this.domMutationObserver.disconnect();\n _this.recordRouteChangeNavigationEvent(_this.pageManager.getPage());\n _this.periodicCheckerId = undefined;\n _this.timeoutCheckerId = undefined;\n _this.isPageLoaded = true;\n }\n };\n /** Clears timers and disconnects observer to stop page timing. */\n _this.declareTimeout = function () {\n clearInterval(_this.periodicCheckerId);\n _this.periodicCheckerId = undefined;\n _this.timeoutCheckerId = undefined;\n _this.domMutationObserver.disconnect();\n _this.isPageLoaded = true;\n };\n _this.resetInterval = function () {\n _this.latestEndTime = Date.now();\n clearInterval(_this.periodicCheckerId);\n _this.periodicCheckerId = setInterval(_this.checkLoadStatus, _this.config.routeChangeComplete);\n };\n _this.moveItemsFromBuffer = function (item) {\n _this.ongoingRequests.add(item);\n };\n _this.updateLatestInteractionTime = function (e) {\n _this.latestInteractionTime = Date.now();\n };\n _this.periodicCheckerId = undefined;\n _this.timeoutCheckerId = undefined;\n _this.domMutationObserver = new MutationObserver(_this.resetInterval);\n _this.ongoingRequests = new Set();\n _this.requestBuffer = new Set();\n _this.fetchCounter = 0;\n _this.isPageLoaded = true;\n _this.latestEndTime = 0;\n _this.latestInteractionTime = 0;\n _this.config = config;\n _this.pageManager = pageManager;\n _this.record = record;\n _this.enable();\n // Start tracking the timestamps\n document.addEventListener('mousedown', _this.updateLatestInteractionTime);\n document.addEventListener('keydown', _this.updateLatestInteractionTime);\n return _this;\n }\n Object.defineProperty(VirtualPageLoadTimer.prototype, \"patches\", {\n get: function () {\n return [\n {\n nodule: XMLHttpRequest.prototype,\n name: 'send',\n wrapper: this.sendWrapper\n },\n {\n nodule: window,\n name: 'fetch',\n wrapper: this.fetchWrapper\n }\n ];\n },\n enumerable: false,\n configurable: true\n });\n /** Initializes timing related resources for current page. */\n VirtualPageLoadTimer.prototype.startTiming = function () {\n this.latestEndTime = Date.now();\n // Clean up existing timer objects and mutationObserver\n if (this.periodicCheckerId) {\n clearInterval(this.periodicCheckerId);\n }\n if (this.timeoutCheckerId) {\n clearTimeout(this.timeoutCheckerId);\n }\n this.domMutationObserver.disconnect();\n // Initialize timer objects and start observing\n this.periodicCheckerId = setInterval(this.checkLoadStatus, this.config.routeChangeComplete);\n this.timeoutCheckerId = setTimeout(this.declareTimeout, this.config.routeChangeTimeout);\n // observing the add/delete of nodes\n this.domMutationObserver.observe(document, {\n subtree: true,\n childList: true,\n attributes: false,\n characterData: false\n });\n // Indicate page has not loaded, and carry over buffered requests.\n this.isPageLoaded = false;\n this.requestBuffer.forEach(this.moveItemsFromBuffer);\n this.requestBuffer.clear();\n };\n VirtualPageLoadTimer.prototype.recordXhr = function (item) {\n var page = this.pageManager.getPage();\n if (page && this.isPageLoaded === false) {\n this.ongoingRequests.add(item);\n }\n else {\n this.requestBuffer.add(item);\n }\n };\n VirtualPageLoadTimer.prototype.removeXhr = function (item, currTime) {\n var page = this.pageManager.getPage();\n if (page && this.ongoingRequests.has(item)) {\n this.ongoingRequests.delete(item);\n this.latestEndTime = currTime;\n }\n else if (this.requestBuffer.has(item)) {\n this.requestBuffer.delete(item);\n }\n };\n VirtualPageLoadTimer.prototype.recordRouteChangeNavigationEvent = function (page) {\n var virtualPageNavigationEvent = {\n version: '1.0.0',\n initiatorType: 'route_change',\n navigationType: 'navigate',\n startTime: page.start,\n duration: this.latestEndTime - page.start\n };\n if (this.record) {\n this.record(PERFORMANCE_NAVIGATION_EVENT_TYPE, virtualPageNavigationEvent);\n }\n };\n return VirtualPageLoadTimer;\n}(MonkeyPatched));\nexport { VirtualPageLoadTimer };\n","var __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};\nimport { VirtualPageLoadTimer } from '../sessions/VirtualPageLoadTimer';\nimport { PAGE_VIEW_EVENT_TYPE } from '../plugins/utils/constant';\n/**\n * The page manager keeps the state of the current page and interaction level.\n *\n * A page is a unique view (user interface) of the application. For 'multi page' applications (i.e., 'classic' web\n * applications that have multiple html files), the page changes when the user navigates to a new web page. For\n * 'single page' applications (i.e., 'ajax' web applications that have a single html file), the page changes when (1)\n * the popstate event emitted, or (2) the application indicates a new page has loaded using the RUM agent API.\n *\n * The interaction level is the order of a page in the sequence of pages sorted by the time they were viewed.\n */\nvar PageManager = /** @class */ (function () {\n function PageManager(config, record) {\n this.TIMEOUT = 1000;\n this.config = config;\n this.record = record;\n this.page = undefined;\n this.resumed = false;\n this.recordInteraction = false;\n this.virtualPageLoadTimer = new VirtualPageLoadTimer(this, config, record);\n }\n PageManager.prototype.getPage = function () {\n return this.page;\n };\n PageManager.prototype.getAttributes = function () {\n return this.attributes;\n };\n PageManager.prototype.resumeSession = function (page) {\n this.recordInteraction = true;\n if (page) {\n this.page = page;\n this.resumed = true;\n }\n };\n PageManager.prototype.recordPageView = function (payload) {\n var pageId;\n if (typeof payload === 'string') {\n pageId = payload;\n }\n else {\n pageId = payload.pageId;\n }\n if (this.useCookies()) {\n this.recordInteraction = true;\n }\n if (!this.page) {\n this.createLandingPage(pageId);\n }\n else if (this.page.pageId !== pageId) {\n this.createNextPage(this.page, pageId);\n }\n else if (this.resumed) {\n // Update attributes state in PageManager for event metadata\n this.collectAttributes(this.page, typeof payload === 'object' ? payload : undefined);\n return;\n }\n else {\n // The view has not changed.\n return;\n }\n // this.page is guaranteed to have been initialized\n // Attributes will be added to all events as meta data\n this.collectAttributes(this.page, typeof payload === 'object' ? payload : undefined);\n // The SessionManager will update its cookie with the new page\n this.recordPageViewEvent(this.page);\n };\n PageManager.prototype.createNextPage = function (currentPage, pageId) {\n var startTime = Date.now();\n var interactionTime = this.virtualPageLoadTimer.latestInteractionTime;\n // The latest interaction time (latest) is not guaranteed to be the\n // interaction that triggered the route change (actual). There are two\n // cases to consider:\n //\n // 1. Latest is older than actual. This can happen if the user navigates\n // with the browser back/forward button, or if the interaction is not a\n // click/keyup event.\n //\n // 2. Latest is newer than actual. This can happen if the user clicks or\n // types in the time between actual and when recordPageView is called.\n //\n // We believe that case (1) has a high risk of skewing route change\n // timing metrics because (a) browser navigation is common and (b) there\n // is no limit on when the latest interaction may have occurred. To\n // help mitigate this, if the route change is already longer than 1000ms,\n // then we do not bother timing the route change.\n //\n // We do not believe that case (2) has a high risk of skewing route\n // change timing, and therefore ignore case (2).\n if (!this.resumed && startTime - interactionTime <= this.TIMEOUT) {\n startTime = interactionTime;\n this.virtualPageLoadTimer.startTiming();\n }\n this.timeOnParentPage = startTime - currentPage.start;\n this.resumed = false;\n this.page = {\n pageId: pageId,\n parentPageId: currentPage.pageId,\n interaction: currentPage.interaction + 1,\n referrer: document.referrer,\n referrerDomain: this.getDomainFromReferrer(),\n start: startTime\n };\n };\n PageManager.prototype.createLandingPage = function (pageId) {\n this.page = {\n pageId: pageId,\n interaction: 0,\n referrer: document.referrer,\n referrerDomain: this.getDomainFromReferrer(),\n start: Date.now()\n };\n };\n PageManager.prototype.collectAttributes = function (page, customPageAttributes) {\n var _a;\n this.attributes = {\n title: ((_a = customPageAttributes === null || customPageAttributes === void 0 ? void 0 : customPageAttributes.pageAttributes) === null || _a === void 0 ? void 0 : _a.title)\n ? customPageAttributes.pageAttributes.title\n : document.title,\n pageId: page.pageId\n };\n if (this.recordInteraction) {\n this.attributes.interaction = page.interaction;\n if (page.parentPageId !== undefined) {\n this.attributes.parentPageId = page.parentPageId;\n }\n }\n if (customPageAttributes === null || customPageAttributes === void 0 ? void 0 : customPageAttributes.pageTags) {\n this.attributes['pageTags'] =\n customPageAttributes['pageTags'];\n }\n if (customPageAttributes === null || customPageAttributes === void 0 ? void 0 : customPageAttributes.pageAttributes) {\n this.attributes = __assign(__assign({}, customPageAttributes.pageAttributes), this.attributes);\n }\n };\n PageManager.prototype.createPageViewEvent = function (page) {\n var pageViewEvent = {\n version: '1.0.0',\n pageId: page.pageId\n };\n if (this.recordInteraction) {\n pageViewEvent.interaction = page.interaction;\n pageViewEvent.pageInteractionId =\n page.pageId + '-' + page.interaction;\n if (page.parentPageId !== undefined) {\n pageViewEvent.parentPageInteractionId =\n page.parentPageId + '-' + (page.interaction - 1);\n pageViewEvent.timeOnParentPage = this.timeOnParentPage;\n }\n pageViewEvent.referrer = document.referrer;\n pageViewEvent.referrerDomain = this.getDomainFromReferrer();\n }\n return pageViewEvent;\n };\n PageManager.prototype.recordPageViewEvent = function (page) {\n this.record(PAGE_VIEW_EVENT_TYPE, this.createPageViewEvent(page));\n };\n /**\n * Returns true when cookies should be used to store user ID and session ID.\n */\n PageManager.prototype.useCookies = function () {\n return navigator.cookieEnabled && this.config.allowCookies;\n };\n /*\n Parses the domain from the referrer, if it is available\n */\n PageManager.prototype.getDomainFromReferrer = function () {\n try {\n return new URL(document.referrer).hostname;\n }\n catch (e) {\n return document.referrer === 'localhost' ? document.referrer : '';\n }\n };\n return PageManager;\n}());\nexport { PageManager };\n","export var Topic;\n(function (Topic) {\n Topic[\"EVENT\"] = \"event\";\n})(Topic || (Topic = {}));\n/** A topic-based event bus to facilitate communication between plugins */\nvar EventBus = /** @class */ (function () {\n function EventBus() {\n // map\n this.subscribers = new Map();\n }\n EventBus.prototype.subscribe = function (topic, subscriber) {\n var _a;\n var list = (_a = this.subscribers.get(topic)) !== null && _a !== void 0 ? _a : [];\n if (!list.length) {\n this.subscribers.set(topic, list);\n }\n list.push(subscriber);\n };\n EventBus.prototype.unsubscribe = function (topic, subscriber) {\n var list = this.subscribers.get(topic);\n if (list) {\n for (var i = 0; i < list.length; i++) {\n if (list[i] === subscriber) {\n list.splice(i, 1);\n return true;\n }\n }\n }\n return false;\n };\n EventBus.prototype.dispatch = function (topic, message) {\n var list = this.subscribers.get(topic);\n if (list) {\n for (var _i = 0, list_1 = list; _i < list_1.length; _i++) {\n var subscriber = list_1[_i];\n subscriber(message);\n }\n }\n };\n return EventBus;\n}());\nexport default EventBus;\n","var __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};\nimport { SessionManager } from '../sessions/SessionManager';\nimport { v4 } from 'uuid';\nimport { PageManager } from '../sessions/PageManager';\nimport EventBus, { Topic } from '../event-bus/EventBus';\nvar webClientVersion = '1.18.0';\n/**\n * A cache which stores events generated by telemetry plugins.\n *\n * The event cache stores meta data and events until they are dispatched to the\n * data plane. The event cache removes the oldest event once the cache is full\n * and a new event is added.\n */\nvar EventCache = /** @class */ (function () {\n /**\n * @param applicationDetails Application identity and version.\n * @param batchLimit The maximum number of events that will be returned in a batch.\n * @param eventCacheSize The maximum number of events the cache can contain before dropping events.\n * @param sessionManager The sessionManager returns user id, session id and handles session timeout.\n * @param pageManager The pageManager returns page id.\n */\n function EventCache(applicationDetails, config, eventBus) {\n if (eventBus === void 0) { eventBus = new EventBus(); }\n var _this = this;\n this.eventBus = eventBus;\n this.events = [];\n /**\n * Update the current page interaction for the session.\n */\n this.recordPageView = function (payload) {\n if (_this.isCurrentUrlAllowed()) {\n _this.pageManager.recordPageView(payload);\n }\n };\n /**\n * Add an event to the cache and reset the session timer.\n *\n * If the session is being recorded, the event will be recorded.\n * If the session is not being recorded, the event will not be recorded.\n *\n * @param type The event schema.\n */\n this.recordEvent = function (type, eventData) {\n if (!_this.enabled) {\n return;\n }\n if (_this.isCurrentUrlAllowed()) {\n var session = _this.sessionManager.getSession();\n _this.sessionManager.incrementSessionEventCount();\n if (_this.canRecord(session)) {\n _this.addRecordToCache(type, eventData);\n }\n }\n };\n /**\n * Returns the current session (1) if a session exists and (2) if the\n * current URL is allowed. Returns undefined otherwise.\n */\n this.getSession = function () {\n if (_this.isCurrentUrlAllowed()) {\n return _this.sessionManager.getSession();\n }\n return undefined;\n };\n /**\n * Add a session start event to the cache.\n */\n this.recordSessionInitEvent = function (session, type, eventData) {\n if (!_this.enabled) {\n return;\n }\n _this.sessionManager.incrementSessionEventCount();\n if (_this.canRecord(session)) {\n _this.addRecordToCache(type, eventData);\n }\n };\n this.canRecord = function (session) {\n return (session.record &&\n (session.eventCount <= _this.config.sessionEventLimit ||\n _this.config.sessionEventLimit <= 0));\n };\n /**\n * Add an event to the cache.\n *\n * @param type The event schema.\n */\n this.addRecordToCache = function (type, eventData) {\n if (!_this.enabled) {\n return;\n }\n if (_this.events.length === _this.config.eventCacheSize) {\n // Drop newest event and keep the older ones\n // 1. Older events tend to be more relevant, such as session start\n // or performance entries that are attributed to web vitals\n // 2. Dropping an old event requires linear time\n return;\n }\n // The data plane service model (i.e., LogEvents) does not adhere to the\n // RUM agent data model, where sessions and pages are first class\n // objects with their own attribute sets. Instead, we store session\n // attributes and page attributes together as 'meta data'.\n var metaData = __assign(__assign(__assign({}, _this.sessionManager.getAttributes()), _this.pageManager.getAttributes()), { version: '1.0.0', 'aws:client': _this.installationMethod, 'aws:clientVersion': webClientVersion });\n var partialEvent = {\n id: v4(),\n timestamp: new Date(),\n type: type\n };\n _this.eventBus.dispatch(Topic.EVENT, __assign(__assign({}, partialEvent), { details: eventData, metadata: metaData }));\n _this.events.push(__assign(__assign({}, partialEvent), { details: JSON.stringify(eventData), metadata: JSON.stringify(metaData) }));\n };\n this.appMonitorDetails = applicationDetails;\n this.config = config;\n this.enabled = true;\n this.pageManager = new PageManager(config, this.recordEvent);\n this.sessionManager = new SessionManager(applicationDetails, config, this.recordSessionInitEvent, this.pageManager);\n this.installationMethod = config.client;\n }\n /**\n * The event cache will record new events or new meta data.\n */\n EventCache.prototype.enable = function () {\n this.enabled = true;\n };\n /**\n * The event cache will not record new events or new meta data. Events and\n * meta data which are already in the cache will still be accessible.\n */\n EventCache.prototype.disable = function () {\n this.enabled = false;\n };\n /**\n * Returns true if the session is sampled, false otherwise.\n */\n EventCache.prototype.isSessionSampled = function () {\n return this.sessionManager.isSampled();\n };\n /**\n * Returns true if there are one or more events in the cache.\n */\n EventCache.prototype.hasEvents = function () {\n return this.events.length !== 0;\n };\n /**\n * Removes and returns the next batch of events.\n */\n EventCache.prototype.getEventBatch = function () {\n var rumEvents = [];\n if (this.events.length === 0) {\n return rumEvents;\n }\n if (this.events.length <= this.config.batchLimit) {\n // Return all events.\n rumEvents = this.events;\n this.events = [];\n }\n else {\n // Dispatch the front of the array and retain the back of the array.\n rumEvents = this.events.splice(0, this.config.batchLimit);\n }\n return rumEvents;\n };\n /**\n * Returns an object containing the AppMonitor ID and application version.\n */\n EventCache.prototype.getAppMonitorDetails = function () {\n return this.appMonitorDetails;\n };\n /**\n * Returns an object containing the session ID and user ID.\n */\n EventCache.prototype.getUserDetails = function () {\n return {\n userId: this.sessionManager.getUserId(),\n sessionId: this.sessionManager.getSession().sessionId\n };\n };\n /**\n * Set custom session attributes to add them to all event metadata.\n *\n * @param payload object containing custom attribute data in the form of key, value pairs\n */\n EventCache.prototype.addSessionAttributes = function (sessionAttributes) {\n this.sessionManager.addSessionAttributes(sessionAttributes);\n };\n /**\n * Returns {@code true} if the current url matches one of the allowedPages\n * and does not match any of the deniedPages; returns {@code false}\n * otherwise.\n */\n EventCache.prototype.isCurrentUrlAllowed = function () {\n var location = document.location.toString();\n var exclude = this.config.pagesToExclude.some(function (re) {\n return re.test(location);\n });\n var include = this.config.pagesToInclude.some(function (re) {\n return re.test(location);\n });\n return include && !exclude;\n };\n return EventCache;\n}());\nexport { EventCache };\n","const SHORT_TO_HEX = {};\nconst HEX_TO_SHORT = {};\nfor (let i = 0; i < 256; i++) {\n let encodedByte = i.toString(16).toLowerCase();\n if (encodedByte.length === 1) {\n encodedByte = `0${encodedByte}`;\n }\n SHORT_TO_HEX[i] = encodedByte;\n HEX_TO_SHORT[encodedByte] = i;\n}\nexport function fromHex(encoded) {\n if (encoded.length % 2 !== 0) {\n throw new Error(\"Hex encoded strings must have an even number length\");\n }\n const out = new Uint8Array(encoded.length / 2);\n for (let i = 0; i < encoded.length; i += 2) {\n const encodedByte = encoded.slice(i, i + 2).toLowerCase();\n if (encodedByte in HEX_TO_SHORT) {\n out[i / 2] = HEX_TO_SHORT[encodedByte];\n }\n else {\n throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`);\n }\n }\n return out;\n}\nexport function toHex(bytes) {\n let out = \"\";\n for (let i = 0; i < bytes.byteLength; i++) {\n out += SHORT_TO_HEX[bytes[i]];\n }\n return out;\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\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);\r\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); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","export const fromUtf8 = (input) => {\n const bytes = [];\n for (let i = 0, len = input.length; i < len; i++) {\n const value = input.charCodeAt(i);\n if (value < 0x80) {\n bytes.push(value);\n }\n else if (value < 0x800) {\n bytes.push((value >> 6) | 0b11000000, (value & 0b111111) | 0b10000000);\n }\n else if (i + 1 < input.length && (value & 0xfc00) === 0xd800 && (input.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\n const surrogatePair = 0x10000 + ((value & 0b1111111111) << 10) + (input.charCodeAt(++i) & 0b1111111111);\n bytes.push((surrogatePair >> 18) | 0b11110000, ((surrogatePair >> 12) & 0b111111) | 0b10000000, ((surrogatePair >> 6) & 0b111111) | 0b10000000, (surrogatePair & 0b111111) | 0b10000000);\n }\n else {\n bytes.push((value >> 12) | 0b11100000, ((value >> 6) & 0b111111) | 0b10000000, (value & 0b111111) | 0b10000000);\n }\n }\n return Uint8Array.from(bytes);\n};\nexport const toUtf8 = (input) => {\n let decoded = \"\";\n for (let i = 0, len = input.length; i < len; i++) {\n const byte = input[i];\n if (byte < 0x80) {\n decoded += String.fromCharCode(byte);\n }\n else if (0b11000000 <= byte && byte < 0b11100000) {\n const nextByte = input[++i];\n decoded += String.fromCharCode(((byte & 0b11111) << 6) | (nextByte & 0b111111));\n }\n else if (0b11110000 <= byte && byte < 0b101101101) {\n const surrogatePair = [byte, input[++i], input[++i], input[++i]];\n const encoded = \"%\" + surrogatePair.map((byteValue) => byteValue.toString(16)).join(\"%\");\n decoded += decodeURIComponent(encoded);\n }\n else {\n decoded += String.fromCharCode(((byte & 0b1111) << 12) | ((input[++i] & 0b111111) << 6) | (input[++i] & 0b111111));\n }\n }\n return decoded;\n};\n","export function fromUtf8(input) {\n return new TextEncoder().encode(input);\n}\nexport function toUtf8(input) {\n return new TextDecoder(\"utf-8\").decode(input);\n}\n","import { fromUtf8 as jsFromUtf8, toUtf8 as jsToUtf8 } from \"./pureJs\";\nimport { fromUtf8 as textEncoderFromUtf8, toUtf8 as textEncoderToUtf8 } from \"./whatwgEncodingApi\";\nexport const fromUtf8 = (input) => typeof TextEncoder === \"function\" ? textEncoderFromUtf8(input) : jsFromUtf8(input);\nexport const toUtf8 = (input) => typeof TextDecoder === \"function\" ? textEncoderToUtf8(input) : jsToUtf8(input);\n","\"use strict\";\n// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertToBuffer = void 0;\nvar util_utf8_browser_1 = require(\"@aws-sdk/util-utf8-browser\");\n// Quick polyfill\nvar fromUtf8 = typeof Buffer !== \"undefined\" && Buffer.from\n ? function (input) { return Buffer.from(input, \"utf8\"); }\n : util_utf8_browser_1.fromUtf8;\nfunction convertToBuffer(data) {\n // Already a Uint8, do nothing\n if (data instanceof Uint8Array)\n return data;\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n return new Uint8Array(data);\n}\nexports.convertToBuffer = convertToBuffer;\n//# sourceMappingURL=convertToBuffer.js.map","\"use strict\";\n// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isEmptyData = void 0;\nfunction isEmptyData(data) {\n if (typeof data === \"string\") {\n return data.length === 0;\n }\n return data.byteLength === 0;\n}\nexports.isEmptyData = isEmptyData;\n//# sourceMappingURL=isEmptyData.js.map","\"use strict\";\n// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.numToUint8 = void 0;\nfunction numToUint8(num) {\n return new Uint8Array([\n (num & 0xff000000) >> 24,\n (num & 0x00ff0000) >> 16,\n (num & 0x0000ff00) >> 8,\n num & 0x000000ff,\n ]);\n}\nexports.numToUint8 = numToUint8;\n//# sourceMappingURL=numToUint8.js.map","\"use strict\";\n// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.uint32ArrayFrom = void 0;\n// IE 11 does not support Array.from, so we do it manually\nfunction uint32ArrayFrom(a_lookUpTable) {\n if (!Uint32Array.from) {\n var return_array = new Uint32Array(a_lookUpTable.length);\n var a_index = 0;\n while (a_index < a_lookUpTable.length) {\n return_array[a_index] = a_lookUpTable[a_index];\n a_index += 1;\n }\n return return_array;\n }\n return Uint32Array.from(a_lookUpTable);\n}\nexports.uint32ArrayFrom = uint32ArrayFrom;\n//# sourceMappingURL=uint32ArrayFrom.js.map","\"use strict\";\n// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.uint32ArrayFrom = exports.numToUint8 = exports.isEmptyData = exports.convertToBuffer = void 0;\nvar convertToBuffer_1 = require(\"./convertToBuffer\");\nObject.defineProperty(exports, \"convertToBuffer\", { enumerable: true, get: function () { return convertToBuffer_1.convertToBuffer; } });\nvar isEmptyData_1 = require(\"./isEmptyData\");\nObject.defineProperty(exports, \"isEmptyData\", { enumerable: true, get: function () { return isEmptyData_1.isEmptyData; } });\nvar numToUint8_1 = require(\"./numToUint8\");\nObject.defineProperty(exports, \"numToUint8\", { enumerable: true, get: function () { return numToUint8_1.numToUint8; } });\nvar uint32ArrayFrom_1 = require(\"./uint32ArrayFrom\");\nObject.defineProperty(exports, \"uint32ArrayFrom\", { enumerable: true, get: function () { return uint32ArrayFrom_1.uint32ArrayFrom; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\n// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AwsCrc32 = void 0;\nvar tslib_1 = require(\"tslib\");\nvar util_1 = require(\"@aws-crypto/util\");\nvar index_1 = require(\"./index\");\nvar AwsCrc32 = /** @class */ (function () {\n function AwsCrc32() {\n this.crc32 = new index_1.Crc32();\n }\n AwsCrc32.prototype.update = function (toHash) {\n if ((0, util_1.isEmptyData)(toHash))\n return;\n this.crc32.update((0, util_1.convertToBuffer)(toHash));\n };\n AwsCrc32.prototype.digest = function () {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n return [2 /*return*/, (0, util_1.numToUint8)(this.crc32.digest())];\n });\n });\n };\n AwsCrc32.prototype.reset = function () {\n this.crc32 = new index_1.Crc32();\n };\n return AwsCrc32;\n}());\nexports.AwsCrc32 = AwsCrc32;\n//# sourceMappingURL=aws_crc32.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AwsCrc32 = exports.Crc32 = exports.crc32 = void 0;\nvar tslib_1 = require(\"tslib\");\nvar util_1 = require(\"@aws-crypto/util\");\nfunction crc32(data) {\n return new Crc32().update(data).digest();\n}\nexports.crc32 = crc32;\nvar Crc32 = /** @class */ (function () {\n function Crc32() {\n this.checksum = 0xffffffff;\n }\n Crc32.prototype.update = function (data) {\n var e_1, _a;\n try {\n for (var data_1 = tslib_1.__values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) {\n var byte = data_1_1.value;\n this.checksum =\n (this.checksum >>> 8) ^ lookupTable[(this.checksum ^ byte) & 0xff];\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return this;\n };\n Crc32.prototype.digest = function () {\n return (this.checksum ^ 0xffffffff) >>> 0;\n };\n return Crc32;\n}());\nexports.Crc32 = Crc32;\n// prettier-ignore\nvar a_lookUpTable = [\n 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA,\n 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,\n 0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988,\n 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,\n 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,\n 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,\n 0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC,\n 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,\n 0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172,\n 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940,\n 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,\n 0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116,\n 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,\n 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,\n 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,\n 0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A,\n 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,\n 0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818,\n 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E,\n 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,\n 0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C,\n 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,\n 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,\n 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,\n 0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0,\n 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,\n 0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086,\n 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4,\n 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,\n 0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A,\n 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,\n 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,\n 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,\n 0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE,\n 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,\n 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC,\n 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252,\n 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,\n 0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60,\n 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,\n 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,\n 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,\n 0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04,\n 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,\n 0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A,\n 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38,\n 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,\n 0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E,\n 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,\n 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,\n 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,\n 0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2,\n 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,\n 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0,\n 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6,\n 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,\n 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94,\n 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D,\n];\nvar lookupTable = (0, util_1.uint32ArrayFrom)(a_lookUpTable);\nvar aws_crc32_1 = require(\"./aws_crc32\");\nObject.defineProperty(exports, \"AwsCrc32\", { enumerable: true, get: function () { return aws_crc32_1.AwsCrc32; } });\n//# sourceMappingURL=index.js.map","import { toHex } from \"@smithy/util-hex-encoding\";\nexport class Int64 {\n constructor(bytes) {\n this.bytes = bytes;\n if (bytes.byteLength !== 8) {\n throw new Error(\"Int64 buffers must be exactly 8 bytes\");\n }\n }\n static fromNumber(number) {\n if (number > 9223372036854776000 || number < -9223372036854776000) {\n throw new Error(`${number} is too large (or, if negative, too small) to represent as an Int64`);\n }\n const bytes = new Uint8Array(8);\n for (let i = 7, remaining = Math.abs(Math.round(number)); i > -1 && remaining > 0; i--, remaining /= 256) {\n bytes[i] = remaining;\n }\n if (number < 0) {\n negate(bytes);\n }\n return new Int64(bytes);\n }\n valueOf() {\n const bytes = this.bytes.slice(0);\n const negative = bytes[0] & 0b10000000;\n if (negative) {\n negate(bytes);\n }\n return parseInt(toHex(bytes), 16) * (negative ? -1 : 1);\n }\n toString() {\n return String(this.valueOf());\n }\n}\nfunction negate(bytes) {\n for (let i = 0; i < 8; i++) {\n bytes[i] ^= 0xff;\n }\n for (let i = 7; i > -1; i--) {\n bytes[i]++;\n if (bytes[i] !== 0)\n break;\n }\n}\n","import { fromHex, toHex } from \"@smithy/util-hex-encoding\";\nimport { Int64 } from \"./Int64\";\nexport class HeaderMarshaller {\n constructor(toUtf8, fromUtf8) {\n this.toUtf8 = toUtf8;\n this.fromUtf8 = fromUtf8;\n }\n format(headers) {\n const chunks = [];\n for (const headerName of Object.keys(headers)) {\n const bytes = this.fromUtf8(headerName);\n chunks.push(Uint8Array.from([bytes.byteLength]), bytes, this.formatHeaderValue(headers[headerName]));\n }\n const out = new Uint8Array(chunks.reduce((carry, bytes) => carry + bytes.byteLength, 0));\n let position = 0;\n for (const chunk of chunks) {\n out.set(chunk, position);\n position += chunk.byteLength;\n }\n return out;\n }\n formatHeaderValue(header) {\n switch (header.type) {\n case \"boolean\":\n return Uint8Array.from([header.value ? 0 : 1]);\n case \"byte\":\n return Uint8Array.from([2, header.value]);\n case \"short\":\n const shortView = new DataView(new ArrayBuffer(3));\n shortView.setUint8(0, 3);\n shortView.setInt16(1, header.value, false);\n return new Uint8Array(shortView.buffer);\n case \"integer\":\n const intView = new DataView(new ArrayBuffer(5));\n intView.setUint8(0, 4);\n intView.setInt32(1, header.value, false);\n return new Uint8Array(intView.buffer);\n case \"long\":\n const longBytes = new Uint8Array(9);\n longBytes[0] = 5;\n longBytes.set(header.value.bytes, 1);\n return longBytes;\n case \"binary\":\n const binView = new DataView(new ArrayBuffer(3 + header.value.byteLength));\n binView.setUint8(0, 6);\n binView.setUint16(1, header.value.byteLength, false);\n const binBytes = new Uint8Array(binView.buffer);\n binBytes.set(header.value, 3);\n return binBytes;\n case \"string\":\n const utf8Bytes = this.fromUtf8(header.value);\n const strView = new DataView(new ArrayBuffer(3 + utf8Bytes.byteLength));\n strView.setUint8(0, 7);\n strView.setUint16(1, utf8Bytes.byteLength, false);\n const strBytes = new Uint8Array(strView.buffer);\n strBytes.set(utf8Bytes, 3);\n return strBytes;\n case \"timestamp\":\n const tsBytes = new Uint8Array(9);\n tsBytes[0] = 8;\n tsBytes.set(Int64.fromNumber(header.value.valueOf()).bytes, 1);\n return tsBytes;\n case \"uuid\":\n if (!UUID_PATTERN.test(header.value)) {\n throw new Error(`Invalid UUID received: ${header.value}`);\n }\n const uuidBytes = new Uint8Array(17);\n uuidBytes[0] = 9;\n uuidBytes.set(fromHex(header.value.replace(/\\-/g, \"\")), 1);\n return uuidBytes;\n }\n }\n parse(headers) {\n const out = {};\n let position = 0;\n while (position < headers.byteLength) {\n const nameLength = headers.getUint8(position++);\n const name = this.toUtf8(new Uint8Array(headers.buffer, headers.byteOffset + position, nameLength));\n position += nameLength;\n switch (headers.getUint8(position++)) {\n case 0:\n out[name] = {\n type: BOOLEAN_TAG,\n value: true,\n };\n break;\n case 1:\n out[name] = {\n type: BOOLEAN_TAG,\n value: false,\n };\n break;\n case 2:\n out[name] = {\n type: BYTE_TAG,\n value: headers.getInt8(position++),\n };\n break;\n case 3:\n out[name] = {\n type: SHORT_TAG,\n value: headers.getInt16(position, false),\n };\n position += 2;\n break;\n case 4:\n out[name] = {\n type: INT_TAG,\n value: headers.getInt32(position, false),\n };\n position += 4;\n break;\n case 5:\n out[name] = {\n type: LONG_TAG,\n value: new Int64(new Uint8Array(headers.buffer, headers.byteOffset + position, 8)),\n };\n position += 8;\n break;\n case 6:\n const binaryLength = headers.getUint16(position, false);\n position += 2;\n out[name] = {\n type: BINARY_TAG,\n value: new Uint8Array(headers.buffer, headers.byteOffset + position, binaryLength),\n };\n position += binaryLength;\n break;\n case 7:\n const stringLength = headers.getUint16(position, false);\n position += 2;\n out[name] = {\n type: STRING_TAG,\n value: this.toUtf8(new Uint8Array(headers.buffer, headers.byteOffset + position, stringLength)),\n };\n position += stringLength;\n break;\n case 8:\n out[name] = {\n type: TIMESTAMP_TAG,\n value: new Date(new Int64(new Uint8Array(headers.buffer, headers.byteOffset + position, 8)).valueOf()),\n };\n position += 8;\n break;\n case 9:\n const uuidBytes = new Uint8Array(headers.buffer, headers.byteOffset + position, 16);\n position += 16;\n out[name] = {\n type: UUID_TAG,\n value: `${toHex(uuidBytes.subarray(0, 4))}-${toHex(uuidBytes.subarray(4, 6))}-${toHex(uuidBytes.subarray(6, 8))}-${toHex(uuidBytes.subarray(8, 10))}-${toHex(uuidBytes.subarray(10))}`,\n };\n break;\n default:\n throw new Error(`Unrecognized header type tag`);\n }\n }\n return out;\n }\n}\nvar HEADER_VALUE_TYPE;\n(function (HEADER_VALUE_TYPE) {\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"boolTrue\"] = 0] = \"boolTrue\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"boolFalse\"] = 1] = \"boolFalse\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"byte\"] = 2] = \"byte\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"short\"] = 3] = \"short\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"integer\"] = 4] = \"integer\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"long\"] = 5] = \"long\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"byteArray\"] = 6] = \"byteArray\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"string\"] = 7] = \"string\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"timestamp\"] = 8] = \"timestamp\";\n HEADER_VALUE_TYPE[HEADER_VALUE_TYPE[\"uuid\"] = 9] = \"uuid\";\n})(HEADER_VALUE_TYPE || (HEADER_VALUE_TYPE = {}));\nconst BOOLEAN_TAG = \"boolean\";\nconst BYTE_TAG = \"byte\";\nconst SHORT_TAG = \"short\";\nconst INT_TAG = \"integer\";\nconst LONG_TAG = \"long\";\nconst BINARY_TAG = \"binary\";\nconst STRING_TAG = \"string\";\nconst TIMESTAMP_TAG = \"timestamp\";\nconst UUID_TAG = \"uuid\";\nconst UUID_PATTERN = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;\n","export const normalizeProvider = (input) => {\n if (typeof input === \"function\")\n return input;\n const promisified = Promise.resolve(input);\n return () => promisified;\n};\n","export const fromUtf8 = (input) => new TextEncoder().encode(input);\n","import { fromUtf8 } from \"./fromUtf8\";\nexport const toUint8Array = (data) => {\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n return new Uint8Array(data);\n};\n","export const toUtf8 = (input) => new TextDecoder(\"utf-8\").decode(input);\n","export const ALGORITHM_QUERY_PARAM = \"X-Amz-Algorithm\";\nexport const CREDENTIAL_QUERY_PARAM = \"X-Amz-Credential\";\nexport const AMZ_DATE_QUERY_PARAM = \"X-Amz-Date\";\nexport const SIGNED_HEADERS_QUERY_PARAM = \"X-Amz-SignedHeaders\";\nexport const EXPIRES_QUERY_PARAM = \"X-Amz-Expires\";\nexport const SIGNATURE_QUERY_PARAM = \"X-Amz-Signature\";\nexport const TOKEN_QUERY_PARAM = \"X-Amz-Security-Token\";\nexport const REGION_SET_PARAM = \"X-Amz-Region-Set\";\nexport const AUTH_HEADER = \"authorization\";\nexport const AMZ_DATE_HEADER = AMZ_DATE_QUERY_PARAM.toLowerCase();\nexport const DATE_HEADER = \"date\";\nexport const GENERATED_HEADERS = [AUTH_HEADER, AMZ_DATE_HEADER, DATE_HEADER];\nexport const SIGNATURE_HEADER = SIGNATURE_QUERY_PARAM.toLowerCase();\nexport const SHA256_HEADER = \"x-amz-content-sha256\";\nexport const TOKEN_HEADER = TOKEN_QUERY_PARAM.toLowerCase();\nexport const HOST_HEADER = \"host\";\nexport const ALWAYS_UNSIGNABLE_HEADERS = {\n authorization: true,\n \"cache-control\": true,\n connection: true,\n expect: true,\n from: true,\n \"keep-alive\": true,\n \"max-forwards\": true,\n pragma: true,\n referer: true,\n te: true,\n trailer: true,\n \"transfer-encoding\": true,\n upgrade: true,\n \"user-agent\": true,\n \"x-amzn-trace-id\": true,\n};\nexport const PROXY_HEADER_PATTERN = /^proxy-/;\nexport const SEC_HEADER_PATTERN = /^sec-/;\nexport const UNSIGNABLE_PATTERNS = [/^proxy-/i, /^sec-/i];\nexport const ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256\";\nexport const ALGORITHM_IDENTIFIER_V4A = \"AWS4-ECDSA-P256-SHA256\";\nexport const EVENT_ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256-PAYLOAD\";\nexport const UNSIGNED_PAYLOAD = \"UNSIGNED-PAYLOAD\";\nexport const MAX_CACHE_SIZE = 50;\nexport const KEY_TYPE_IDENTIFIER = \"aws4_request\";\nexport const MAX_PRESIGNED_TTL = 60 * 60 * 24 * 7;\n","import { toHex } from \"@smithy/util-hex-encoding\";\nimport { toUint8Array } from \"@smithy/util-utf8\";\nimport { KEY_TYPE_IDENTIFIER, MAX_CACHE_SIZE } from \"./constants\";\nconst signingKeyCache = {};\nconst cacheQueue = [];\nexport const createScope = (shortDate, region, service) => `${shortDate}/${region}/${service}/${KEY_TYPE_IDENTIFIER}`;\nexport const getSigningKey = async (sha256Constructor, credentials, shortDate, region, service) => {\n const credsHash = await hmac(sha256Constructor, credentials.secretAccessKey, credentials.accessKeyId);\n const cacheKey = `${shortDate}:${region}:${service}:${toHex(credsHash)}:${credentials.sessionToken}`;\n if (cacheKey in signingKeyCache) {\n return signingKeyCache[cacheKey];\n }\n cacheQueue.push(cacheKey);\n while (cacheQueue.length > MAX_CACHE_SIZE) {\n delete signingKeyCache[cacheQueue.shift()];\n }\n let key = `AWS4${credentials.secretAccessKey}`;\n for (const signable of [shortDate, region, service, KEY_TYPE_IDENTIFIER]) {\n key = await hmac(sha256Constructor, key, signable);\n }\n return (signingKeyCache[cacheKey] = key);\n};\nexport const clearCredentialCache = () => {\n cacheQueue.length = 0;\n Object.keys(signingKeyCache).forEach((cacheKey) => {\n delete signingKeyCache[cacheKey];\n });\n};\nconst hmac = (ctor, secret, data) => {\n const hash = new ctor(secret);\n hash.update(toUint8Array(data));\n return hash.digest();\n};\n","import { ALWAYS_UNSIGNABLE_HEADERS, PROXY_HEADER_PATTERN, SEC_HEADER_PATTERN } from \"./constants\";\nexport const getCanonicalHeaders = ({ headers }, unsignableHeaders, signableHeaders) => {\n const canonical = {};\n for (const headerName of Object.keys(headers).sort()) {\n if (headers[headerName] == undefined) {\n continue;\n }\n const canonicalHeaderName = headerName.toLowerCase();\n if (canonicalHeaderName in ALWAYS_UNSIGNABLE_HEADERS ||\n unsignableHeaders?.has(canonicalHeaderName) ||\n PROXY_HEADER_PATTERN.test(canonicalHeaderName) ||\n SEC_HEADER_PATTERN.test(canonicalHeaderName)) {\n if (!signableHeaders || (signableHeaders && !signableHeaders.has(canonicalHeaderName))) {\n continue;\n }\n }\n canonical[canonicalHeaderName] = headers[headerName].trim().replace(/\\s+/g, \" \");\n }\n return canonical;\n};\n","import { escapeUri } from \"@smithy/util-uri-escape\";\nimport { SIGNATURE_HEADER } from \"./constants\";\nexport const getCanonicalQuery = ({ query = {} }) => {\n const keys = [];\n const serialized = {};\n for (const key of Object.keys(query).sort()) {\n if (key.toLowerCase() === SIGNATURE_HEADER) {\n continue;\n }\n keys.push(key);\n const value = query[key];\n if (typeof value === \"string\") {\n serialized[key] = `${escapeUri(key)}=${escapeUri(value)}`;\n }\n else if (Array.isArray(value)) {\n serialized[key] = value\n .slice(0)\n .sort()\n .reduce((encoded, value) => encoded.concat([`${escapeUri(key)}=${escapeUri(value)}`]), [])\n .join(\"&\");\n }\n }\n return keys\n .map((key) => serialized[key])\n .filter((serialized) => serialized)\n .join(\"&\");\n};\n","export const isArrayBuffer = (arg) => (typeof ArrayBuffer === \"function\" && arg instanceof ArrayBuffer) ||\n Object.prototype.toString.call(arg) === \"[object ArrayBuffer]\";\n","import { isArrayBuffer } from \"@smithy/is-array-buffer\";\nimport { toHex } from \"@smithy/util-hex-encoding\";\nimport { toUint8Array } from \"@smithy/util-utf8\";\nimport { SHA256_HEADER, UNSIGNED_PAYLOAD } from \"./constants\";\nexport const getPayloadHash = async ({ headers, body }, hashConstructor) => {\n for (const headerName of Object.keys(headers)) {\n if (headerName.toLowerCase() === SHA256_HEADER) {\n return headers[headerName];\n }\n }\n if (body == undefined) {\n return \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\";\n }\n else if (typeof body === \"string\" || ArrayBuffer.isView(body) || isArrayBuffer(body)) {\n const hashCtor = new hashConstructor();\n hashCtor.update(toUint8Array(body));\n return toHex(await hashCtor.digest());\n }\n return UNSIGNED_PAYLOAD;\n};\n","export const hasHeader = (soughtHeader, headers) => {\n soughtHeader = soughtHeader.toLowerCase();\n for (const headerName of Object.keys(headers)) {\n if (soughtHeader === headerName.toLowerCase()) {\n return true;\n }\n }\n return false;\n};\nexport const getHeaderValue = (soughtHeader, headers) => {\n soughtHeader = soughtHeader.toLowerCase();\n for (const headerName of Object.keys(headers)) {\n if (soughtHeader === headerName.toLowerCase()) {\n return headers[headerName];\n }\n }\n return undefined;\n};\nexport const deleteHeader = (soughtHeader, headers) => {\n soughtHeader = soughtHeader.toLowerCase();\n for (const headerName of Object.keys(headers)) {\n if (soughtHeader === headerName.toLowerCase()) {\n delete headers[headerName];\n }\n }\n};\n","export const cloneRequest = ({ headers, query, ...rest }) => ({\n ...rest,\n headers: { ...headers },\n query: query ? cloneQuery(query) : undefined,\n});\nexport const cloneQuery = (query) => Object.keys(query).reduce((carry, paramName) => {\n const param = query[paramName];\n return {\n ...carry,\n [paramName]: Array.isArray(param) ? [...param] : param,\n };\n}, {});\n","import { cloneRequest } from \"./cloneRequest\";\nexport const moveHeadersToQuery = (request, options = {}) => {\n const { headers, query = {} } = typeof request.clone === \"function\" ? request.clone() : cloneRequest(request);\n for (const name of Object.keys(headers)) {\n const lname = name.toLowerCase();\n if (lname.slice(0, 6) === \"x-amz-\" && !options.unhoistableHeaders?.has(lname)) {\n query[name] = headers[name];\n delete headers[name];\n }\n }\n return {\n ...request,\n headers,\n query,\n };\n};\n","import { cloneRequest } from \"./cloneRequest\";\nimport { GENERATED_HEADERS } from \"./constants\";\nexport const prepareRequest = (request) => {\n request = typeof request.clone === \"function\" ? request.clone() : cloneRequest(request);\n for (const headerName of Object.keys(request.headers)) {\n if (GENERATED_HEADERS.indexOf(headerName.toLowerCase()) > -1) {\n delete request.headers[headerName];\n }\n }\n return request;\n};\n","export const iso8601 = (time) => toDate(time)\n .toISOString()\n .replace(/\\.\\d{3}Z$/, \"Z\");\nexport const toDate = (time) => {\n if (typeof time === \"number\") {\n return new Date(time * 1000);\n }\n if (typeof time === \"string\") {\n if (Number(time)) {\n return new Date(Number(time) * 1000);\n }\n return new Date(time);\n }\n return time;\n};\n","import { HeaderMarshaller } from \"@smithy/eventstream-codec\";\nimport { toHex } from \"@smithy/util-hex-encoding\";\nimport { normalizeProvider } from \"@smithy/util-middleware\";\nimport { fromUtf8, toUint8Array, toUtf8 } from \"@smithy/util-utf8\";\nimport { ALGORITHM_IDENTIFIER, ALGORITHM_QUERY_PARAM, AMZ_DATE_HEADER, AMZ_DATE_QUERY_PARAM, AUTH_HEADER, CREDENTIAL_QUERY_PARAM, EVENT_ALGORITHM_IDENTIFIER, EXPIRES_QUERY_PARAM, MAX_PRESIGNED_TTL, SHA256_HEADER, SIGNATURE_QUERY_PARAM, SIGNED_HEADERS_QUERY_PARAM, TOKEN_HEADER, TOKEN_QUERY_PARAM, } from \"./constants\";\nimport { createScope, getSigningKey } from \"./credentialDerivation\";\nimport { getCanonicalHeaders } from \"./getCanonicalHeaders\";\nimport { getCanonicalQuery } from \"./getCanonicalQuery\";\nimport { getPayloadHash } from \"./getPayloadHash\";\nimport { hasHeader } from \"./headerUtil\";\nimport { moveHeadersToQuery } from \"./moveHeadersToQuery\";\nimport { prepareRequest } from \"./prepareRequest\";\nimport { iso8601 } from \"./utilDate\";\nexport class SignatureV4 {\n constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath = true, }) {\n this.headerMarshaller = new HeaderMarshaller(toUtf8, fromUtf8);\n this.service = service;\n this.sha256 = sha256;\n this.uriEscapePath = uriEscapePath;\n this.applyChecksum = typeof applyChecksum === \"boolean\" ? applyChecksum : true;\n this.regionProvider = normalizeProvider(region);\n this.credentialProvider = normalizeProvider(credentials);\n }\n async presign(originalRequest, options = {}) {\n const { signingDate = new Date(), expiresIn = 3600, unsignableHeaders, unhoistableHeaders, signableHeaders, signingRegion, signingService, } = options;\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion ?? (await this.regionProvider());\n const { longDate, shortDate } = formatDate(signingDate);\n if (expiresIn > MAX_PRESIGNED_TTL) {\n return Promise.reject(\"Signature version 4 presigned URLs\" + \" must have an expiration date less than one week in\" + \" the future\");\n }\n const scope = createScope(shortDate, region, signingService ?? this.service);\n const request = moveHeadersToQuery(prepareRequest(originalRequest), { unhoistableHeaders });\n if (credentials.sessionToken) {\n request.query[TOKEN_QUERY_PARAM] = credentials.sessionToken;\n }\n request.query[ALGORITHM_QUERY_PARAM] = ALGORITHM_IDENTIFIER;\n request.query[CREDENTIAL_QUERY_PARAM] = `${credentials.accessKeyId}/${scope}`;\n request.query[AMZ_DATE_QUERY_PARAM] = longDate;\n request.query[EXPIRES_QUERY_PARAM] = expiresIn.toString(10);\n const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders);\n request.query[SIGNED_HEADERS_QUERY_PARAM] = getCanonicalHeaderList(canonicalHeaders);\n request.query[SIGNATURE_QUERY_PARAM] = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request, canonicalHeaders, await getPayloadHash(originalRequest, this.sha256)));\n return request;\n }\n async sign(toSign, options) {\n if (typeof toSign === \"string\") {\n return this.signString(toSign, options);\n }\n else if (toSign.headers && toSign.payload) {\n return this.signEvent(toSign, options);\n }\n else if (toSign.message) {\n return this.signMessage(toSign, options);\n }\n else {\n return this.signRequest(toSign, options);\n }\n }\n async signEvent({ headers, payload }, { signingDate = new Date(), priorSignature, signingRegion, signingService }) {\n const region = signingRegion ?? (await this.regionProvider());\n const { shortDate, longDate } = formatDate(signingDate);\n const scope = createScope(shortDate, region, signingService ?? this.service);\n const hashedPayload = await getPayloadHash({ headers: {}, body: payload }, this.sha256);\n const hash = new this.sha256();\n hash.update(headers);\n const hashedHeaders = toHex(await hash.digest());\n const stringToSign = [\n EVENT_ALGORITHM_IDENTIFIER,\n longDate,\n scope,\n priorSignature,\n hashedHeaders,\n hashedPayload,\n ].join(\"\\n\");\n return this.signString(stringToSign, { signingDate, signingRegion: region, signingService });\n }\n async signMessage(signableMessage, { signingDate = new Date(), signingRegion, signingService }) {\n const promise = this.signEvent({\n headers: this.headerMarshaller.format(signableMessage.message.headers),\n payload: signableMessage.message.body,\n }, {\n signingDate,\n signingRegion,\n signingService,\n priorSignature: signableMessage.priorSignature,\n });\n return promise.then((signature) => {\n return { message: signableMessage.message, signature };\n });\n }\n async signString(stringToSign, { signingDate = new Date(), signingRegion, signingService } = {}) {\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion ?? (await this.regionProvider());\n const { shortDate } = formatDate(signingDate);\n const hash = new this.sha256(await this.getSigningKey(credentials, region, shortDate, signingService));\n hash.update(toUint8Array(stringToSign));\n return toHex(await hash.digest());\n }\n async signRequest(requestToSign, { signingDate = new Date(), signableHeaders, unsignableHeaders, signingRegion, signingService, } = {}) {\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion ?? (await this.regionProvider());\n const request = prepareRequest(requestToSign);\n const { longDate, shortDate } = formatDate(signingDate);\n const scope = createScope(shortDate, region, signingService ?? this.service);\n request.headers[AMZ_DATE_HEADER] = longDate;\n if (credentials.sessionToken) {\n request.headers[TOKEN_HEADER] = credentials.sessionToken;\n }\n const payloadHash = await getPayloadHash(request, this.sha256);\n if (!hasHeader(SHA256_HEADER, request.headers) && this.applyChecksum) {\n request.headers[SHA256_HEADER] = payloadHash;\n }\n const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders);\n const signature = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request, canonicalHeaders, payloadHash));\n request.headers[AUTH_HEADER] =\n `${ALGORITHM_IDENTIFIER} ` +\n `Credential=${credentials.accessKeyId}/${scope}, ` +\n `SignedHeaders=${getCanonicalHeaderList(canonicalHeaders)}, ` +\n `Signature=${signature}`;\n return request;\n }\n createCanonicalRequest(request, canonicalHeaders, payloadHash) {\n const sortedHeaders = Object.keys(canonicalHeaders).sort();\n return `${request.method}\n${this.getCanonicalPath(request)}\n${getCanonicalQuery(request)}\n${sortedHeaders.map((name) => `${name}:${canonicalHeaders[name]}`).join(\"\\n\")}\n\n${sortedHeaders.join(\";\")}\n${payloadHash}`;\n }\n async createStringToSign(longDate, credentialScope, canonicalRequest) {\n const hash = new this.sha256();\n hash.update(toUint8Array(canonicalRequest));\n const hashedRequest = await hash.digest();\n return `${ALGORITHM_IDENTIFIER}\n${longDate}\n${credentialScope}\n${toHex(hashedRequest)}`;\n }\n getCanonicalPath({ path }) {\n if (this.uriEscapePath) {\n const normalizedPathSegments = [];\n for (const pathSegment of path.split(\"/\")) {\n if (pathSegment?.length === 0)\n continue;\n if (pathSegment === \".\")\n continue;\n if (pathSegment === \"..\") {\n normalizedPathSegments.pop();\n }\n else {\n normalizedPathSegments.push(pathSegment);\n }\n }\n const normalizedPath = `${path?.startsWith(\"/\") ? \"/\" : \"\"}${normalizedPathSegments.join(\"/\")}${normalizedPathSegments.length > 0 && path?.endsWith(\"/\") ? \"/\" : \"\"}`;\n const doubleEncoded = encodeURIComponent(normalizedPath);\n return doubleEncoded.replace(/%2F/g, \"/\");\n }\n return path;\n }\n async getSignature(longDate, credentialScope, keyPromise, canonicalRequest) {\n const stringToSign = await this.createStringToSign(longDate, credentialScope, canonicalRequest);\n const hash = new this.sha256(await keyPromise);\n hash.update(toUint8Array(stringToSign));\n return toHex(await hash.digest());\n }\n getSigningKey(credentials, region, shortDate, service) {\n return getSigningKey(this.sha256, credentials, shortDate, region, service || this.service);\n }\n validateResolvedCredentials(credentials) {\n if (typeof credentials !== \"object\" ||\n typeof credentials.accessKeyId !== \"string\" ||\n typeof credentials.secretAccessKey !== \"string\") {\n throw new Error(\"Resolved credential object is not valid\");\n }\n }\n}\nconst formatDate = (now) => {\n const longDate = iso8601(now).replace(/[\\-:]/g, \"\");\n return {\n longDate,\n shortDate: longDate.slice(0, 8),\n };\n};\nconst getCanonicalHeaderList = (headers) => Object.keys(headers).sort().join(\";\");\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MAX_HASHABLE_LENGTH = exports.INIT = exports.KEY = exports.DIGEST_LENGTH = exports.BLOCK_SIZE = void 0;\n/**\n * @internal\n */\nexports.BLOCK_SIZE = 64;\n/**\n * @internal\n */\nexports.DIGEST_LENGTH = 32;\n/**\n * @internal\n */\nexports.KEY = new Uint32Array([\n 0x428a2f98,\n 0x71374491,\n 0xb5c0fbcf,\n 0xe9b5dba5,\n 0x3956c25b,\n 0x59f111f1,\n 0x923f82a4,\n 0xab1c5ed5,\n 0xd807aa98,\n 0x12835b01,\n 0x243185be,\n 0x550c7dc3,\n 0x72be5d74,\n 0x80deb1fe,\n 0x9bdc06a7,\n 0xc19bf174,\n 0xe49b69c1,\n 0xefbe4786,\n 0x0fc19dc6,\n 0x240ca1cc,\n 0x2de92c6f,\n 0x4a7484aa,\n 0x5cb0a9dc,\n 0x76f988da,\n 0x983e5152,\n 0xa831c66d,\n 0xb00327c8,\n 0xbf597fc7,\n 0xc6e00bf3,\n 0xd5a79147,\n 0x06ca6351,\n 0x14292967,\n 0x27b70a85,\n 0x2e1b2138,\n 0x4d2c6dfc,\n 0x53380d13,\n 0x650a7354,\n 0x766a0abb,\n 0x81c2c92e,\n 0x92722c85,\n 0xa2bfe8a1,\n 0xa81a664b,\n 0xc24b8b70,\n 0xc76c51a3,\n 0xd192e819,\n 0xd6990624,\n 0xf40e3585,\n 0x106aa070,\n 0x19a4c116,\n 0x1e376c08,\n 0x2748774c,\n 0x34b0bcb5,\n 0x391c0cb3,\n 0x4ed8aa4a,\n 0x5b9cca4f,\n 0x682e6ff3,\n 0x748f82ee,\n 0x78a5636f,\n 0x84c87814,\n 0x8cc70208,\n 0x90befffa,\n 0xa4506ceb,\n 0xbef9a3f7,\n 0xc67178f2\n]);\n/**\n * @internal\n */\nexports.INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19\n];\n/**\n * @internal\n */\nexports.MAX_HASHABLE_LENGTH = Math.pow(2, 53) - 1;\n//# sourceMappingURL=constants.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RawSha256 = void 0;\nvar constants_1 = require(\"./constants\");\n/**\n * @internal\n */\nvar RawSha256 = /** @class */ (function () {\n function RawSha256() {\n this.state = Int32Array.from(constants_1.INIT);\n this.temp = new Int32Array(64);\n this.buffer = new Uint8Array(64);\n this.bufferLength = 0;\n this.bytesHashed = 0;\n /**\n * @internal\n */\n this.finished = false;\n }\n RawSha256.prototype.update = function (data) {\n if (this.finished) {\n throw new Error(\"Attempted to update an already finished hash.\");\n }\n var position = 0;\n var byteLength = data.byteLength;\n this.bytesHashed += byteLength;\n if (this.bytesHashed * 8 > constants_1.MAX_HASHABLE_LENGTH) {\n throw new Error(\"Cannot hash more than 2^53 - 1 bits\");\n }\n while (byteLength > 0) {\n this.buffer[this.bufferLength++] = data[position++];\n byteLength--;\n if (this.bufferLength === constants_1.BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n };\n RawSha256.prototype.digest = function () {\n if (!this.finished) {\n var bitsHashed = this.bytesHashed * 8;\n var bufferView = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n var undecoratedLength = this.bufferLength;\n bufferView.setUint8(this.bufferLength++, 0x80);\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % constants_1.BLOCK_SIZE >= constants_1.BLOCK_SIZE - 8) {\n for (var i = this.bufferLength; i < constants_1.BLOCK_SIZE; i++) {\n bufferView.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n for (var i = this.bufferLength; i < constants_1.BLOCK_SIZE - 8; i++) {\n bufferView.setUint8(i, 0);\n }\n bufferView.setUint32(constants_1.BLOCK_SIZE - 8, Math.floor(bitsHashed / 0x100000000), true);\n bufferView.setUint32(constants_1.BLOCK_SIZE - 4, bitsHashed);\n this.hashBuffer();\n this.finished = true;\n }\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n var out = new Uint8Array(constants_1.DIGEST_LENGTH);\n for (var i = 0; i < 8; i++) {\n out[i * 4] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n return out;\n };\n RawSha256.prototype.hashBuffer = function () {\n var _a = this, buffer = _a.buffer, state = _a.state;\n var state0 = state[0], state1 = state[1], state2 = state[2], state3 = state[3], state4 = state[4], state5 = state[5], state6 = state[6], state7 = state[7];\n for (var i = 0; i < constants_1.BLOCK_SIZE; i++) {\n if (i < 16) {\n this.temp[i] =\n ((buffer[i * 4] & 0xff) << 24) |\n ((buffer[i * 4 + 1] & 0xff) << 16) |\n ((buffer[i * 4 + 2] & 0xff) << 8) |\n (buffer[i * 4 + 3] & 0xff);\n }\n else {\n var u = this.temp[i - 2];\n var t1_1 = ((u >>> 17) | (u << 15)) ^ ((u >>> 19) | (u << 13)) ^ (u >>> 10);\n u = this.temp[i - 15];\n var t2_1 = ((u >>> 7) | (u << 25)) ^ ((u >>> 18) | (u << 14)) ^ (u >>> 3);\n this.temp[i] =\n ((t1_1 + this.temp[i - 7]) | 0) + ((t2_1 + this.temp[i - 16]) | 0);\n }\n var t1 = ((((((state4 >>> 6) | (state4 << 26)) ^\n ((state4 >>> 11) | (state4 << 21)) ^\n ((state4 >>> 25) | (state4 << 7))) +\n ((state4 & state5) ^ (~state4 & state6))) |\n 0) +\n ((state7 + ((constants_1.KEY[i] + this.temp[i]) | 0)) | 0)) |\n 0;\n var t2 = ((((state0 >>> 2) | (state0 << 30)) ^\n ((state0 >>> 13) | (state0 << 19)) ^\n ((state0 >>> 22) | (state0 << 10))) +\n ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) |\n 0;\n state7 = state6;\n state6 = state5;\n state5 = state4;\n state4 = (state3 + t1) | 0;\n state3 = state2;\n state2 = state1;\n state1 = state0;\n state0 = (t1 + t2) | 0;\n }\n state[0] += state0;\n state[1] += state1;\n state[2] += state2;\n state[3] += state3;\n state[4] += state4;\n state[5] += state5;\n state[6] += state6;\n state[7] += state7;\n };\n return RawSha256;\n}());\nexports.RawSha256 = RawSha256;\n//# sourceMappingURL=RawSha256.js.map","\"use strict\";\n// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertToBuffer = void 0;\nvar util_utf8_browser_1 = require(\"@aws-sdk/util-utf8-browser\");\n// Quick polyfill\nvar fromUtf8 = typeof Buffer !== \"undefined\" && Buffer.from\n ? function (input) { return Buffer.from(input, \"utf8\"); }\n : util_utf8_browser_1.fromUtf8;\nfunction convertToBuffer(data) {\n // Already a Uint8, do nothing\n if (data instanceof Uint8Array)\n return data;\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n return new Uint8Array(data);\n}\nexports.convertToBuffer = convertToBuffer;\n//# sourceMappingURL=convertToBuffer.js.map","\"use strict\";\n// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isEmptyData = void 0;\nfunction isEmptyData(data) {\n if (typeof data === \"string\") {\n return data.length === 0;\n }\n return data.byteLength === 0;\n}\nexports.isEmptyData = isEmptyData;\n//# sourceMappingURL=isEmptyData.js.map","\"use strict\";\n// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.numToUint8 = void 0;\nfunction numToUint8(num) {\n return new Uint8Array([\n (num & 0xff000000) >> 24,\n (num & 0x00ff0000) >> 16,\n (num & 0x0000ff00) >> 8,\n num & 0x000000ff,\n ]);\n}\nexports.numToUint8 = numToUint8;\n//# sourceMappingURL=numToUint8.js.map","\"use strict\";\n// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.uint32ArrayFrom = void 0;\n// IE 11 does not support Array.from, so we do it manually\nfunction uint32ArrayFrom(a_lookUpTable) {\n if (!Uint32Array.from) {\n var return_array = new Uint32Array(a_lookUpTable.length);\n var a_index = 0;\n while (a_index < a_lookUpTable.length) {\n return_array[a_index] = a_lookUpTable[a_index];\n a_index += 1;\n }\n return return_array;\n }\n return Uint32Array.from(a_lookUpTable);\n}\nexports.uint32ArrayFrom = uint32ArrayFrom;\n//# sourceMappingURL=uint32ArrayFrom.js.map","\"use strict\";\n// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.uint32ArrayFrom = exports.numToUint8 = exports.isEmptyData = exports.convertToBuffer = void 0;\nvar convertToBuffer_1 = require(\"./convertToBuffer\");\nObject.defineProperty(exports, \"convertToBuffer\", { enumerable: true, get: function () { return convertToBuffer_1.convertToBuffer; } });\nvar isEmptyData_1 = require(\"./isEmptyData\");\nObject.defineProperty(exports, \"isEmptyData\", { enumerable: true, get: function () { return isEmptyData_1.isEmptyData; } });\nvar numToUint8_1 = require(\"./numToUint8\");\nObject.defineProperty(exports, \"numToUint8\", { enumerable: true, get: function () { return numToUint8_1.numToUint8; } });\nvar uint32ArrayFrom_1 = require(\"./uint32ArrayFrom\");\nObject.defineProperty(exports, \"uint32ArrayFrom\", { enumerable: true, get: function () { return uint32ArrayFrom_1.uint32ArrayFrom; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sha256 = void 0;\nvar tslib_1 = require(\"tslib\");\nvar constants_1 = require(\"./constants\");\nvar RawSha256_1 = require(\"./RawSha256\");\nvar util_1 = require(\"@aws-crypto/util\");\nvar Sha256 = /** @class */ (function () {\n function Sha256(secret) {\n this.hash = new RawSha256_1.RawSha256();\n if (secret) {\n this.outer = new RawSha256_1.RawSha256();\n var inner = bufferFromSecret(secret);\n var outer = new Uint8Array(constants_1.BLOCK_SIZE);\n outer.set(inner);\n for (var i = 0; i < constants_1.BLOCK_SIZE; i++) {\n inner[i] ^= 0x36;\n outer[i] ^= 0x5c;\n }\n this.hash.update(inner);\n this.outer.update(outer);\n // overwrite the copied key in memory\n for (var i = 0; i < inner.byteLength; i++) {\n inner[i] = 0;\n }\n }\n }\n Sha256.prototype.update = function (toHash) {\n if ((0, util_1.isEmptyData)(toHash) || this.error) {\n return;\n }\n try {\n this.hash.update((0, util_1.convertToBuffer)(toHash));\n }\n catch (e) {\n this.error = e;\n }\n };\n /* This synchronous method keeps compatibility\n * with the v2 aws-sdk.\n */\n Sha256.prototype.digestSync = function () {\n if (this.error) {\n throw this.error;\n }\n if (this.outer) {\n if (!this.outer.finished) {\n this.outer.update(this.hash.digest());\n }\n return this.outer.digest();\n }\n return this.hash.digest();\n };\n /* The underlying digest method here is synchronous.\n * To keep the same interface with the other hash functions\n * the default is to expose this as an async method.\n * However, it can sometimes be useful to have a sync method.\n */\n Sha256.prototype.digest = function () {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n return [2 /*return*/, this.digestSync()];\n });\n });\n };\n return Sha256;\n}());\nexports.Sha256 = Sha256;\nfunction bufferFromSecret(secret) {\n var input = (0, util_1.convertToBuffer)(secret);\n if (input.byteLength > constants_1.BLOCK_SIZE) {\n var bufferHash = new RawSha256_1.RawSha256();\n bufferHash.update(input);\n input = bufferHash.digest();\n }\n var buffer = new Uint8Array(constants_1.BLOCK_SIZE);\n buffer.set(input);\n return buffer;\n}\n//# sourceMappingURL=jsSha256.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./jsSha256\"), exports);\n//# sourceMappingURL=index.js.map","var __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};\nvar __awaiter = (this && this.__awaiter) || function (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};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"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 (_) 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};\nimport { toHex } from '@aws-sdk/util-hex-encoding';\nimport { SignatureV4 } from '@aws-sdk/signature-v4';\nimport { Sha256 } from '@aws-crypto/sha256-js';\nimport { HttpRequest } from '@aws-sdk/protocol-http';\nvar SERVICE = 'rum';\nvar METHOD = 'POST';\nvar CONTENT_TYPE_JSON = 'application/json';\nvar CONTENT_TYPE_TEXT = 'text/plain;charset=UTF-8';\nvar REQUEST_PRESIGN_ARGS = { expiresIn: 60 };\nvar DataPlaneClient = /** @class */ (function () {\n function DataPlaneClient(config) {\n var _this = this;\n this.sendFetch = function (putRumEventsRequest) { return __awaiter(_this, void 0, void 0, function () {\n var options, request, httpResponse;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getHttpRequestOptions(putRumEventsRequest, CONTENT_TYPE_JSON)];\n case 1:\n options = _a.sent();\n request = new HttpRequest(options);\n if (!this.awsSigV4) return [3 /*break*/, 3];\n return [4 /*yield*/, this.awsSigV4.sign(request)];\n case 2:\n request = (_a.sent());\n _a.label = 3;\n case 3:\n httpResponse = this.config.fetchRequestHandler.handle(request);\n return [2 /*return*/, httpResponse];\n }\n });\n }); };\n this.sendBeacon = function (putRumEventsRequest) { return __awaiter(_this, void 0, void 0, function () {\n var options, request, httpResponse;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getHttpRequestOptions(putRumEventsRequest, CONTENT_TYPE_TEXT)];\n case 1:\n options = _a.sent();\n request = new HttpRequest(options);\n if (!this.awsSigV4) return [3 /*break*/, 3];\n return [4 /*yield*/, this.awsSigV4.presign(request, REQUEST_PRESIGN_ARGS)];\n case 2:\n request = (_a.sent());\n _a.label = 3;\n case 3:\n httpResponse = this.config.beaconRequestHandler.handle(request);\n return [2 /*return*/, httpResponse];\n }\n });\n }); };\n this.getHttpRequestOptions = function (putRumEventsRequest, contentType) { return __awaiter(_this, void 0, void 0, function () {\n var serializedRequest, path, options, _a, _b, _c;\n var _d, _e;\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n serializedRequest = JSON.stringify(serializeRequest(putRumEventsRequest));\n path = this.config.endpoint.pathname.replace(/\\/$/, '');\n options = {\n method: METHOD,\n protocol: this.config.endpoint.protocol,\n headers: {\n 'content-type': contentType,\n host: this.config.endpoint.host\n },\n hostname: this.config.endpoint.hostname,\n path: \"\".concat(path, \"/appmonitors/\").concat(putRumEventsRequest.AppMonitorDetails.id),\n body: serializedRequest\n };\n if (!this.awsSigV4) return [3 /*break*/, 2];\n _a = [__assign({}, options)];\n _d = {};\n _b = [__assign({}, options.headers)];\n _e = {};\n _c = 'X-Amz-Content-Sha256';\n return [4 /*yield*/, hashAndEncode(serializedRequest)];\n case 1: return [2 /*return*/, __assign.apply(void 0, _a.concat([(_d.headers = __assign.apply(void 0, _b.concat([(_e[_c] = _f.sent(), _e)])), _d)]))];\n case 2: return [2 /*return*/, options];\n }\n });\n }); };\n this.config = config;\n if (config.credentials) {\n this.awsSigV4 = new SignatureV4({\n applyChecksum: true,\n credentials: config.credentials,\n region: config.region,\n service: SERVICE,\n uriEscapePath: true,\n sha256: Sha256\n });\n }\n }\n return DataPlaneClient;\n}());\nexport { DataPlaneClient };\nvar serializeRequest = function (request) {\n // If we were using the AWS SDK client here then the serialization would be handled for us through a generated\n // serialization/deserialization library. However, since much of the generated code is unnecessary, we do the\n // serialization ourselves with this function.\n var serializedRumEvents = [];\n request.RumEvents.forEach(function (e) {\n return serializedRumEvents.push(serializeEvent(e));\n });\n var serializedRequest = {\n BatchId: request.BatchId,\n AppMonitorDetails: request.AppMonitorDetails,\n UserDetails: request.UserDetails,\n RumEvents: serializedRumEvents\n };\n return serializedRequest;\n};\nvar serializeEvent = function (event) {\n return {\n id: event.id,\n // Dates must be converted to timestamps before serialization.\n timestamp: Math.round(event.timestamp.getTime() / 1000),\n type: event.type,\n metadata: event.metadata,\n details: event.details\n };\n};\nvar hashAndEncode = function (payload) { return __awaiter(void 0, void 0, void 0, function () {\n var sha256, _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n sha256 = new Sha256();\n sha256.update(payload);\n _a = toHex;\n return [4 /*yield*/, sha256.digest()];\n case 1: return [2 /*return*/, _a.apply(void 0, [_b.sent()]).toLowerCase()];\n }\n });\n}); };\n","import { HttpResponse } from '@aws-sdk/protocol-http';\nimport { buildQueryString } from '@aws-sdk/querystring-builder';\nvar BeaconHttpHandler = /** @class */ (function () {\n function BeaconHttpHandler() {\n }\n BeaconHttpHandler.prototype.handle = function (request) {\n var queued = this.sendBeacon(request);\n return new Promise(function (resolve, reject) {\n if (queued) {\n resolve({\n response: new HttpResponse({ statusCode: 200 })\n });\n }\n else {\n reject();\n }\n });\n };\n BeaconHttpHandler.prototype.sendBeacon = function (signedRequest) {\n var path = signedRequest.path;\n if (signedRequest.query) {\n var queryString = buildQueryString(signedRequest.query);\n if (queryString) {\n path += \"?\".concat(queryString);\n }\n }\n var port = signedRequest.port;\n var url = \"\".concat(signedRequest.protocol, \"//\").concat(signedRequest.hostname).concat(port ? \":\".concat(port) : '').concat(path);\n return navigator.sendBeacon(url, signedRequest.body);\n };\n return BeaconHttpHandler;\n}());\nexport { BeaconHttpHandler };\n","export var requestTimeout = function (timeoutInMs) {\n if (timeoutInMs === void 0) { timeoutInMs = 0; }\n return new Promise(function (resolve, reject) {\n if (timeoutInMs) {\n setTimeout(function () {\n var timeoutError = new Error(\"Request did not complete within \".concat(timeoutInMs, \" ms\"));\n timeoutError.name = 'TimeoutError';\n reject(timeoutError);\n }, timeoutInMs);\n }\n });\n};\n","import { HttpResponse } from '@aws-sdk/protocol-http';\nimport { buildQueryString } from '@aws-sdk/querystring-builder';\nimport { requestTimeout } from './request-timeout';\nvar FetchHttpHandler = /** @class */ (function () {\n function FetchHttpHandler(_a) {\n var _b = _a === void 0 ? {} : _a, fetchFunction = _b.fetchFunction, requestTimeout = _b.requestTimeout;\n this.requestTimeout = requestTimeout;\n this.fetchFunction = fetchFunction;\n }\n FetchHttpHandler.prototype.destroy = function () {\n // Do nothing. TLS and HTTP/2 connection pooling is handled by the browser.\n };\n FetchHttpHandler.prototype.handle = function (request, _a) {\n var _b = _a === void 0 ? {} : _a, abortSignal = _b.abortSignal;\n var requestTimeoutInMs = this.requestTimeout;\n // if the request was already aborted, prevent doing extra work\n if (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) {\n var abortError = new Error('Request aborted');\n abortError.name = 'AbortError';\n return Promise.reject(abortError);\n }\n var path = request.path;\n if (request.query) {\n var queryString = buildQueryString(request.query);\n if (queryString) {\n path += \"?\".concat(queryString);\n }\n }\n var port = request.port, method = request.method;\n var url = \"\".concat(request.protocol, \"//\").concat(request.hostname).concat(port ? \":\".concat(port) : '').concat(path);\n // Request constructor doesn't allow GET/HEAD request with body\n // ref: https://github.com/whatwg/fetch/issues/551\n var body = method === 'GET' || method === 'HEAD' ? undefined : request.body;\n var requestOptions = {\n body: body,\n headers: new Headers(request.headers),\n method: method\n };\n // some browsers support abort signal\n if (typeof AbortController !== 'undefined') {\n requestOptions.signal = abortSignal;\n }\n var fetchRequest = new Request(url, requestOptions);\n var raceOfPromises = [\n this.fetchFunction.apply(window, [fetchRequest]).then(function (response) {\n var fetchHeaders = response.headers;\n var transformedHeaders = {};\n for (var _i = 0, _a = fetchHeaders.entries(); _i < _a.length; _i++) {\n var pair = _a[_i];\n transformedHeaders[pair[0]] = pair[1];\n }\n var hasReadableStream = response.body !== undefined;\n // Return the response with buffered body\n if (!hasReadableStream) {\n return response.blob().then(function (body) { return ({\n response: new HttpResponse({\n headers: transformedHeaders,\n statusCode: response.status,\n body: body\n })\n }); });\n }\n // Return the response with streaming body\n return {\n response: new HttpResponse({\n headers: transformedHeaders,\n statusCode: response.status,\n body: response.body\n })\n };\n }),\n requestTimeout(requestTimeoutInMs)\n ];\n if (abortSignal) {\n raceOfPromises.push(new Promise(function (resolve, reject) {\n abortSignal.onabort = function () {\n var abortError = new Error('Request aborted');\n abortError.name = 'AbortError';\n reject(abortError);\n };\n }));\n }\n return Promise.race(raceOfPromises);\n };\n return FetchHttpHandler;\n}());\nexport { FetchHttpHandler };\n","export var getRandomValues = function (holder) {\n if (crypto) {\n return crypto.getRandomValues(holder);\n }\n else if (msCrypto) {\n return msCrypto.getRandomValues(holder);\n }\n else {\n throw new Error('No crypto library found.');\n }\n};\n","import { getRandomValues } from '../../utils/random';\n// All one-byte hex strings from 0x00 to 0xff.\nexport var byteToHex = [];\nfor (var i = 0; i < 256; i++) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\nexport var X_AMZN_TRACE_ID = 'X-Amzn-Trace-Id';\nexport var isTraceIdHeaderEnabled = function (url, addXrayTraceIdHeader) {\n if (Array.isArray(addXrayTraceIdHeader)) {\n return addXrayTraceIdHeader.some(function (matcher) { return matcher.test(url); });\n }\n return addXrayTraceIdHeader;\n};\nexport var defaultConfig = {\n logicalServiceName: 'rum.aws.amazon.com',\n urlsToInclude: [/.*/],\n urlsToExclude: [\n // Cognito endpoints https://docs.aws.amazon.com/general/latest/gr/cognito_identity.html\n /cognito\\-identity\\.([^\\.]*\\.)?amazonaws\\.com/,\n // STS endpoints https://docs.aws.amazon.com/general/latest/gr/sts.html\n /sts\\.([^\\.]*\\.)?amazonaws\\.com/\n ],\n stackTraceLength: 200,\n recordAllRequests: false,\n addXRayTraceIdHeader: false\n};\nexport var is2xx = function (status) { return 200 <= status && status < 300; };\nexport var is4xx = function (status) {\n return Math.floor(status / 100) === 4;\n};\nexport var is5xx = function (status) {\n return Math.floor(status / 100) === 5;\n};\nexport var is429 = function (status) {\n return status === 429;\n};\nexport var isUrlAllowed = function (url, config) {\n var include = config.urlsToInclude.some(function (urlPattern) {\n return urlPattern.test(url);\n });\n var exclude = config.urlsToExclude.some(function (urlPattern) {\n return urlPattern.test(url);\n });\n return include && !exclude;\n};\n/**\n * Returns the current time, in floating point seconds in epoch time, accurate to milliseconds.\n */\nexport var epochTime = function () {\n return Date.now() / 1000;\n};\nexport var createXRayTraceEventHttp = function (input, init, traced) {\n var http = { request: {} };\n http.request.method = (init === null || init === void 0 ? void 0 : init.method) ? init.method : 'GET';\n http.request.traced = traced;\n http.request.url = resourceToUrlString(input);\n return http;\n};\nexport var createXRayTraceEvent = function (name, startTime, http) {\n var traceEvent = {\n version: '1.0.0',\n name: name,\n origin: 'AWS::RUM::AppMonitor',\n id: generateSegmentId(),\n start_time: startTime,\n trace_id: generateTraceId(),\n end_time: undefined,\n subsegments: [],\n in_progress: false\n };\n if (http) {\n traceEvent.http = http;\n }\n return traceEvent;\n};\nexport var createXRaySubsegment = function (name, startTime, http) {\n var subsegment = {\n id: generateSegmentId(),\n name: name,\n start_time: startTime,\n end_time: undefined,\n in_progress: false,\n namespace: name.endsWith('amazonaws.com') ? 'aws' : 'remote'\n };\n if (http) {\n subsegment.http = http;\n }\n return subsegment;\n};\nexport var requestInfoToHostname = function (request) {\n try {\n if (request.hostname) {\n return request.hostname;\n }\n else if (request.url) {\n return new URL(request.url).hostname;\n }\n else {\n return new URL(request.toString()).hostname;\n }\n }\n catch (e) {\n // The URL could not be parsed. This library's convention is to fail\n // silently to limit the risk of impacting the application being\n // monitored. We will use the hostname of the current page instead.\n return window.location.hostname;\n }\n};\nexport var addAmznTraceIdHeaderToInit = function (init, traceId, segmentId) {\n if (!init.headers) {\n init.headers = {};\n }\n init.headers[X_AMZN_TRACE_ID] = getAmznTraceIdHeaderValue(traceId, segmentId);\n};\nexport var addAmznTraceIdHeaderToHeaders = function (headers, traceId, segmentId) {\n headers.set(X_AMZN_TRACE_ID, getAmznTraceIdHeaderValue(traceId, segmentId));\n};\nexport var getAmznTraceIdHeaderValue = function (traceId, segmentId) {\n return 'Root=' + traceId + ';Parent=' + segmentId + ';Sampled=1';\n};\nexport var getTraceHeader = function (headers) {\n var _a;\n var traceHeader = {};\n if (headers) {\n var headerComponents = (_a = headers.get(X_AMZN_TRACE_ID)) === null || _a === void 0 ? void 0 : _a.split(';');\n if ((headerComponents === null || headerComponents === void 0 ? void 0 : headerComponents.length) === 3) {\n traceHeader.traceId = headerComponents[0].split('Root=')[1];\n traceHeader.segmentId = headerComponents[1].split('Parent=')[1];\n }\n }\n return traceHeader;\n};\n/**\n * Extracts an URL string from the fetch resource parameter.\n */\nexport var resourceToUrlString = function (resource) {\n return resource.url\n ? resource.url\n : resource.toString();\n};\n/**\n * Generate a globally unique trace ID.\n *\n * See https://docs.aws.amazon.com/xray/latest/devguide/xray-api-sendingdata.html\n *\n * @returns a trace id with the form '1-[unix epoch time in 8 hex digits]-[random in 24 hex digits]'\n */\nvar generateTraceId = function () {\n return \"1-\".concat(hexTime(), \"-\").concat(guid());\n};\n/**\n * Generate a segment ID that is unique within a trace.\n *\n * See https://docs.aws.amazon.com/xray/latest/devguide/xray-api-sendingdata.html\n *\n * @returns a segment id, which is 16 random hex digits\n */\nvar generateSegmentId = function () {\n var randomBytes = new Uint8Array(8);\n getRandomValues(randomBytes);\n return uint8ArrayToHexString(randomBytes);\n};\nvar hexTime = function () {\n return Math.floor(Date.now() / 1000).toString(16);\n};\nvar guid = function () {\n var randomBytes = new Uint8Array(12);\n getRandomValues(randomBytes);\n return uint8ArrayToHexString(randomBytes);\n};\nvar uint8ArrayToHexString = function (bytes) {\n var hexString = '';\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (var i = 0; i < bytes.length; i++) {\n hexString += byteToHex[bytes[i]];\n }\n return hexString;\n};\n","var __awaiter = (this && this.__awaiter) || function (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};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"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 (_) 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};\nimport { is2xx, is429, is5xx } from '../plugins/utils/http-utils';\n/**\n * An HttpHandler which wraps other HttpHandlers to retry requests.\n *\n * Requests will be retried if (1) there is an error (e.g., with the network or\n * credentials) and the promise rejects, or (2) the response status is not 2xx.\n */\nvar RetryHttpHandler = /** @class */ (function () {\n function RetryHttpHandler(handler, retries, backoff) {\n if (backoff === void 0) { backoff = function (n) { return 2000 * Math.pow(2, n - 1); }; }\n this.handler = handler;\n this.retries = retries;\n this.backoff = backoff;\n }\n RetryHttpHandler.prototype.handle = function (request) {\n return __awaiter(this, void 0, void 0, function () {\n var retriesLeft, response, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n retriesLeft = this.retries;\n _a.label = 1;\n case 1:\n if (!true) return [3 /*break*/, 7];\n _a.label = 2;\n case 2:\n _a.trys.push([2, 4, , 6]);\n return [4 /*yield*/, this.handler.handle(request)];\n case 3:\n response = _a.sent();\n if (is2xx(response.response.statusCode)) {\n return [2 /*return*/, response];\n }\n throw response.response.statusCode;\n case 4:\n e_1 = _a.sent();\n if (typeof e_1 === 'number' && !is429(e_1) && !is5xx(e_1)) {\n // Fail immediately on client errors because they will never succeed.\n // Only retry when request is throttled (429) or received server error (5xx).\n throw new Error(\"\".concat(e_1));\n }\n if (retriesLeft <= 0) {\n throw e_1;\n }\n retriesLeft--;\n return [4 /*yield*/, this.sleep(this.backoff(this.retries - retriesLeft))];\n case 5:\n _a.sent();\n return [3 /*break*/, 6];\n case 6: return [3 /*break*/, 1];\n case 7: return [2 /*return*/];\n }\n });\n });\n };\n RetryHttpHandler.prototype.sleep = function (milliseconds) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve) {\n return setTimeout(resolve, milliseconds);\n })];\n });\n });\n };\n return RetryHttpHandler;\n}());\nexport { RetryHttpHandler };\n","var __awaiter = (this && this.__awaiter) || function (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};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"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 (_) 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};\nimport { DataPlaneClient } from './DataPlaneClient';\nimport { BeaconHttpHandler } from './BeaconHttpHandler';\nimport { FetchHttpHandler } from './FetchHttpHandler';\nimport { v4 } from 'uuid';\nimport { RetryHttpHandler } from './RetryHttpHandler';\nvar NO_CRED_MSG = 'CWR: Cannot dispatch; no AWS credentials.';\nvar Dispatch = /** @class */ (function () {\n function Dispatch(region, endpoint, eventCache, config) {\n var _this = this;\n this.disableCodes = ['403', '404'];\n /**\n * Send meta data and events to the AWS RUM data plane service via fetch.\n */\n this.dispatchFetch = function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (this.doRequest()) {\n return [2 /*return*/, this.rum\n .sendFetch(this.createRequest())\n .catch(this.handleReject)];\n }\n return [2 /*return*/];\n });\n }); };\n /**\n * Send meta data and events to the AWS RUM data plane service via beacon.\n */\n this.dispatchBeacon = function () { return __awaiter(_this, void 0, void 0, function () {\n var request_1;\n var _this = this;\n return __generator(this, function (_a) {\n if (this.doRequest()) {\n request_1 = this.createRequest();\n return [2 /*return*/, this.rum\n .sendBeacon(request_1)\n .catch(function () { return _this.rum.sendFetch(request_1); })];\n }\n return [2 /*return*/];\n });\n }); };\n /**\n * Send meta data and events to the AWS RUM data plane service via fetch.\n *\n * Returns undefined on failure.\n */\n this.dispatchFetchFailSilent = function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n return [2 /*return*/, this.dispatchFetch().catch(function () { })];\n });\n }); };\n /**\n * Send meta data and events to the AWS RUM data plane service via beacon.\n *\n * Returns undefined on failure.\n */\n this.dispatchBeaconFailSilent = function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n return [2 /*return*/, this.dispatchBeacon().catch(function () { })];\n });\n }); };\n this.handleReject = function (e) {\n if (e instanceof Error && _this.disableCodes.includes(e.message)) {\n // RUM disables only when dispatch fails and we are certain\n // that subsequent attempts will not succeed, such as when\n // credentials are invalid or the app monitor does not exist.\n _this.disable();\n }\n throw e;\n };\n /**\n * The default method for creating data plane service clients.\n *\n * @param endpoint Service endpoint.\n * @param region Service region.\n * @param credentials AWS credentials.\n */\n this.defaultClientBuilder = function (endpoint, region, credentials) {\n return new DataPlaneClient({\n fetchRequestHandler: new RetryHttpHandler(new FetchHttpHandler({\n fetchFunction: _this.config.fetchFunction\n }), _this.config.retries),\n beaconRequestHandler: new BeaconHttpHandler(),\n endpoint: endpoint,\n region: region,\n credentials: credentials\n });\n };\n this.region = region;\n this.endpoint = endpoint;\n this.eventCache = eventCache;\n this.enabled = true;\n this.buildClient = config.clientBuilder || this.defaultClientBuilder;\n this.config = config;\n this.startDispatchTimer();\n if (config.signing) {\n this.rum = {\n sendFetch: function () {\n return Promise.reject(new Error(NO_CRED_MSG));\n },\n sendBeacon: function () {\n return Promise.reject(new Error(NO_CRED_MSG));\n }\n };\n }\n else {\n this.rum = this.buildClient(this.endpoint, this.region, undefined);\n }\n }\n /**\n * Dispatch will send requests to data plane.\n */\n Dispatch.prototype.enable = function () {\n this.enabled = true;\n this.startDispatchTimer();\n };\n /**\n * Dispatch will not send requests to data plane.\n */\n Dispatch.prototype.disable = function () {\n this.stopDispatchTimer();\n this.enabled = false;\n };\n /**\n * Set the authentication token that will be used to authenticate with the\n * data plane service (AWS auth).\n *\n * @param credentials A set of AWS credentials from the application's authflow.\n */\n Dispatch.prototype.setAwsCredentials = function (credentialProvider) {\n this.rum = this.buildClient(this.endpoint, this.region, credentialProvider);\n if (typeof credentialProvider === 'function') {\n // In case a beacon in the first dispatch, we must pre-fetch credentials into a cookie so there is no delay\n // to fetch credentials while the page is closing.\n credentialProvider();\n }\n };\n /**\n * Automatically dispatch cached events.\n */\n Dispatch.prototype.startDispatchTimer = function () {\n document.addEventListener('visibilitychange', \n // The page is moving to the hidden state, which means it may be\n // unloaded. The sendBeacon API would typically be used in this\n // case. However, ad-blockers prevent sendBeacon from functioning.\n // We therefore have two bad options:\n //\n // (1) Use sendBeacon. Data will be lost when ad blockers are\n // used and the page loses visibility\n // (2) Use fetch. Data will be lost when the page is unloaded\n // before fetch completes\n //\n // A third option is to send both, however this would increase\n // bandwitch and require deduping server side.\n this.config.useBeacon\n ? this.dispatchBeaconFailSilent\n : this.dispatchFetchFailSilent);\n // Using 'pagehide' is redundant most of the time (visibilitychange is\n // always fired before pagehide) but older browsers may support\n // 'pagehide' but not 'visibilitychange'.\n document.addEventListener('pagehide', this.config.useBeacon\n ? this.dispatchBeaconFailSilent\n : this.dispatchFetchFailSilent);\n if (this.config.dispatchInterval <= 0 || this.dispatchTimerId) {\n return;\n }\n this.dispatchTimerId = window.setInterval(this.dispatchFetchFailSilent, this.config.dispatchInterval);\n };\n /**\n * Stop automatically dispatching cached events.\n */\n Dispatch.prototype.stopDispatchTimer = function () {\n document.removeEventListener('visibilitychange', this.config.useBeacon\n ? this.dispatchBeaconFailSilent\n : this.dispatchFetchFailSilent);\n document.removeEventListener('pagehide', this.config.useBeacon\n ? this.dispatchBeaconFailSilent\n : this.dispatchFetchFailSilent);\n if (this.dispatchTimerId) {\n window.clearInterval(this.dispatchTimerId);\n this.dispatchTimerId = undefined;\n }\n };\n Dispatch.prototype.doRequest = function () {\n return this.enabled && this.eventCache.hasEvents();\n };\n Dispatch.prototype.createRequest = function () {\n return {\n BatchId: v4(),\n AppMonitorDetails: this.eventCache.getAppMonitorDetails(),\n UserDetails: this.eventCache.getUserDetails(),\n RumEvents: this.eventCache.getEventBatch()\n };\n };\n return Dispatch;\n}());\nexport { Dispatch };\n","export var ResourceType;\n(function (ResourceType) {\n ResourceType[\"OTHER\"] = \"other\";\n ResourceType[\"STYLESHEET\"] = \"stylesheet\";\n ResourceType[\"DOCUMENT\"] = \"document\";\n ResourceType[\"SCRIPT\"] = \"script\";\n ResourceType[\"IMAGE\"] = \"image\";\n ResourceType[\"FONT\"] = \"font\";\n})(ResourceType || (ResourceType = {}));\n/**\n * https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/initiatorType\n */\nexport var InitiatorType;\n(function (InitiatorType) {\n /**\n * IMAGES\n * PerformanceResourceTiming with initiatorType=Input must be an image\n * Per MDN docs: \"if the request was initiated by an element of type image.\"\"\n */\n InitiatorType[\"IMG\"] = \"img\";\n InitiatorType[\"IMAGE\"] = \"image\";\n InitiatorType[\"INPUT\"] = \"input\";\n /**\n * DOCUMENTS\n */\n InitiatorType[\"IFRAME\"] = \"iframe\";\n InitiatorType[\"FRAME\"] = \"frame\";\n /**\n * SCRIPTS\n */\n InitiatorType[\"SCRIPT\"] = \"script\";\n /**\n * STYLESHEETS\n */\n InitiatorType[\"CSS\"] = \"css\";\n})(InitiatorType || (InitiatorType = {}));\n/**\n * Creates key to link a RumEvent to the PerformanceEntry that it is sourced from\n * e.g. performanceKey(ResourceEvent) === performanceKey(PerformanceResourceTiming).\n * There is some worry of collision when startTime or duration are zero, such as when\n * resources are cached. But timestamps have not been observed to be zero in these cases.\n */\nexport var performanceKey = function (details) {\n return [details.startTime, details.duration].join('#');\n};\nvar extensions = [\n {\n name: ResourceType.STYLESHEET,\n list: ['css', 'less']\n },\n {\n name: ResourceType.DOCUMENT,\n list: ['htm', 'html', 'ts', 'doc', 'docx', 'pdf', 'xls', 'xlsx']\n },\n {\n name: ResourceType.SCRIPT,\n list: ['js']\n },\n {\n name: ResourceType.IMAGE,\n list: [\n 'ai',\n 'bmp',\n 'gif',\n 'ico',\n 'jpeg',\n 'jpg',\n 'png',\n 'ps',\n 'psd',\n 'svg',\n 'tif',\n 'tiff'\n ]\n },\n {\n name: ResourceType.FONT,\n list: ['fnt', 'fon', 'otf', 'ttf', 'woff']\n }\n];\nexport var shuffle = function (a) {\n for (var i = a.length - 1; i > 0; i--) {\n var j = Math.floor(Math.random() * (i + 1));\n var v = a[i];\n a[i] = a[j];\n a[j] = v;\n }\n};\nexport var getResourceFileType = function (url, initiatorType) {\n var ext = ResourceType.OTHER;\n if (url) {\n var filename = url.substring(url.lastIndexOf('/') + 1);\n var extension_1 = filename\n .substring(filename.lastIndexOf('.') + 1)\n .split(/[?#]/)[0];\n extensions.forEach(function (type) {\n if (type.list.indexOf(extension_1) > -1) {\n ext = type.name;\n }\n });\n }\n /**\n * Resource name sometimes does not have the correct file extension names due to redirects.\n * In these cases, they are mislablled as \"other\". In these cases, we can infer the correct\n * fileType from the initiator.\n */\n if (initiatorType && ext === ResourceType.OTHER) {\n switch (initiatorType) {\n case InitiatorType.IMAGE:\n case InitiatorType.IMG:\n case InitiatorType.INPUT:\n ext = ResourceType.IMAGE;\n break;\n case InitiatorType.IFRAME:\n case InitiatorType.FRAME:\n ext = ResourceType.DOCUMENT;\n break;\n case InitiatorType.SCRIPT:\n ext = ResourceType.SCRIPT;\n break;\n case InitiatorType.CSS:\n ext = ResourceType.STYLESHEET;\n break;\n }\n }\n return ext;\n};\n/* Helpers */\nexport var httpStatusText = {\n '0': 'Abort Request',\n '200': 'OK',\n '201': 'Created',\n '202': 'Accepted',\n '203': 'Non-Authoritative Information',\n '204': 'No Content',\n '205': 'Reset Content',\n '206': 'Partial Content',\n '300': 'Multiple Choices',\n '301': 'Moved Permanently',\n '302': 'Found',\n '303': 'See Other',\n '304': 'Not Modified',\n '305': 'Use Proxy',\n '306': 'Unused',\n '307': 'Temporary Redirect',\n '400': 'Bad Request',\n '401': 'Unauthorized',\n '402': 'Payment Required',\n '403': 'Forbidden',\n '404': 'Not Found',\n '405': 'Method Not Allowed',\n '406': 'Not Acceptable',\n '407': 'Proxy Authentication Required',\n '408': 'Request Timeout',\n '409': 'Conflict',\n '410': 'Gone',\n '411': 'Length Required',\n '412': 'Precondition Required',\n '413': 'Request Entry Too Large',\n '414': 'Request-URI Too Long',\n '415': 'Unsupported Media Type',\n '416': 'Requested Range Not Satisfiable',\n '417': 'Expectation Failed',\n '418': 'I\"m a teapot',\n '500': 'Internal Server Error',\n '501': 'Not Implemented',\n '502': 'Bad Gateway',\n '503': 'Service Unavailable',\n '504': 'Gateway Timeout',\n '505': 'HTTP Version Not Supported'\n};\n/** Checks at runtime if the web vitals package will record LCP\n * If PerformanceAPI ever changes this API, or if WebVitals package implements a polyfill,\n * then this needs to be updated\n *\n * Reference code from web vitals package:\n * https://github.com/GoogleChrome/web-vitals/blob/main/src/lib/observe.ts#L46\n * Discussion for context:\n * https://github.com/aws-observability/aws-rum-web/pull/448#issuecomment-1734314463\n */\nexport var isLCPSupported = function () {\n return PerformanceObserver.supportedEntryTypes.includes('largest-contentful-paint');\n};\nexport var isFCPSupported = function () {\n return PerformanceObserver.supportedEntryTypes.includes('paint');\n};\nexport var isLongTaskSupported = function () {\n return PerformanceObserver.supportedEntryTypes.includes('longtask');\n};\n/** PutRumEvents regex pattern */\nvar putRumEventsPattern = /.*\\/application\\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\/events/;\nexport var isPutRumEventsCall = function (url, endpointHost) {\n try {\n return (new URL(url).hostname === endpointHost &&\n putRumEventsPattern.test(url));\n }\n catch (_) {\n // Ignore invalid URLs\n return false;\n }\n};\n","import { ResourceType } from '../../utils/common-utils';\nexport var defaultIgnore = function (entry) {\n return entry.entryType === 'resource' &&\n (!/^https?:/.test(entry.name) ||\n /^(fetch|xmlhttprequest)$/.test(entry.initiatorType));\n};\nexport var defaultPerformancePluginConfig = {\n eventLimit: 10,\n ignore: defaultIgnore,\n recordAllTypes: [\n ResourceType.DOCUMENT,\n ResourceType.SCRIPT,\n ResourceType.STYLESHEET,\n ResourceType.FONT\n ],\n sampleTypes: [ResourceType.IMAGE, ResourceType.OTHER]\n};\n","var __extends = (this && this.__extends) || (function () {\n var 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 return function (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})();\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};\nimport { InternalPlugin } from '../InternalPlugin';\nimport { PERFORMANCE_NAVIGATION_EVENT_TYPE } from '../utils/constant';\nimport { defaultPerformancePluginConfig } from '../utils/performance-utils';\nexport var NAVIGATION_EVENT_PLUGIN_ID = 'navigation';\nvar NAVIGATION = 'navigation';\nvar LOAD = 'load';\n/**\n * This plugin records performance timing events generated during every page load/re-load activity.\n * Paint, resource and performance event types make sense only if all or none are included.\n * For RUM, these event types are inter-dependent. So they are recorded under one plugin.\n */\nvar NavigationPlugin = /** @class */ (function (_super) {\n __extends(NavigationPlugin, _super);\n function NavigationPlugin(config) {\n var _this = _super.call(this, NAVIGATION_EVENT_PLUGIN_ID) || this;\n /**\n * Use Navigation timing Level 1 for all browsers by default -\n * https://developer.mozilla.org/en-US/docs/Web/API/Performance/timing\n *\n * If browser provides support, use Navigation Timing Level 2 specification -\n * https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming\n *\n * Only the current document resource is included in the performance timeline;\n * there is only one PerformanceNavigationTiming object in the performance timeline.\n * https://www.w3.org/TR/navigation-timing-2/\n */\n _this.eventListener = function () {\n if (performance.getEntriesByType(NAVIGATION).length === 0) {\n _this.performanceNavigationEventHandlerTimingLevel1();\n }\n else {\n var navigationObserver = new PerformanceObserver(function (list) {\n list.getEntries()\n .filter(function (e) { return e.entryType === NAVIGATION; })\n .filter(function (e) { return !_this.config.ignore(e); })\n .forEach(function (event) {\n _this.performanceNavigationEventHandlerTimingLevel2(event);\n });\n });\n navigationObserver.observe({\n entryTypes: [NAVIGATION]\n });\n }\n };\n /**\n * W3C specification: https://www.w3.org/TR/navigation-timing/#sec-navigation-timing-interface\n */\n _this.performanceNavigationEventHandlerTimingLevel1 = function () {\n var recordNavigation = function () {\n var _a;\n var entryData = performance.timing;\n var origin = entryData.navigationStart;\n var eventDataNavigationTimingLevel1 = {\n version: '1.0.0',\n initiatorType: 'navigation',\n startTime: 0,\n unloadEventStart: entryData.unloadEventStart > 0\n ? entryData.unloadEventStart - origin\n : 0,\n promptForUnload: entryData.unloadEventEnd - entryData.unloadEventStart,\n redirectStart: entryData.redirectStart > 0\n ? entryData.redirectStart - origin\n : 0,\n redirectTime: entryData.redirectEnd - entryData.redirectStart,\n fetchStart: entryData.fetchStart > 0\n ? entryData.fetchStart - origin\n : 0,\n domainLookupStart: entryData.domainLookupStart > 0\n ? entryData.domainLookupStart - origin\n : 0,\n dns: entryData.domainLookupEnd - entryData.domainLookupStart,\n connectStart: entryData.connectStart > 0\n ? entryData.connectStart - origin\n : 0,\n connect: entryData.connectEnd - entryData.connectStart,\n secureConnectionStart: entryData.secureConnectionStart > 0\n ? entryData.secureConnectionStart - origin\n : 0,\n tlsTime: entryData.secureConnectionStart > 0\n ? entryData.connectEnd - entryData.secureConnectionStart\n : 0,\n requestStart: entryData.requestStart > 0\n ? entryData.requestStart - origin\n : 0,\n timeToFirstByte: entryData.responseStart - entryData.requestStart,\n responseStart: entryData.responseStart > 0\n ? entryData.responseStart - origin\n : 0,\n responseTime: entryData.responseStart > 0\n ? entryData.responseEnd - entryData.responseStart\n : 0,\n domInteractive: entryData.domInteractive > 0\n ? entryData.domInteractive - origin\n : 0,\n domContentLoadedEventStart: entryData.domContentLoadedEventStart > 0\n ? entryData.domContentLoadedEventStart - origin\n : 0,\n domContentLoaded: entryData.domContentLoadedEventEnd -\n entryData.domContentLoadedEventStart,\n domComplete: entryData.domComplete > 0\n ? entryData.domComplete - origin\n : 0,\n domProcessingTime: entryData.loadEventStart - entryData.responseEnd,\n loadEventStart: entryData.loadEventStart > 0\n ? entryData.loadEventStart - origin\n : 0,\n loadEventTime: entryData.loadEventEnd - entryData.loadEventStart,\n duration: entryData.loadEventEnd - entryData.navigationStart,\n navigationTimingLevel: 1\n };\n if ((_a = _this.context) === null || _a === void 0 ? void 0 : _a.record) {\n _this.context.record(PERFORMANCE_NAVIGATION_EVENT_TYPE, eventDataNavigationTimingLevel1);\n }\n };\n // Timeout is required for loadEventEnd to complete\n setTimeout(recordNavigation, 0);\n };\n /**\n * W3C specification: https://www.w3.org/TR/navigation-timing-2/#bib-navigation-timing\n */\n _this.performanceNavigationEventHandlerTimingLevel2 = function (entryData) {\n var _a;\n var eventDataNavigationTimingLevel2 = {\n version: '1.0.0',\n initiatorType: entryData.initiatorType,\n navigationType: entryData.type,\n startTime: entryData.startTime,\n unloadEventStart: entryData.unloadEventStart,\n promptForUnload: entryData.unloadEventEnd - entryData.unloadEventStart,\n redirectCount: entryData.redirectCount,\n redirectStart: entryData.redirectStart,\n redirectTime: entryData.redirectEnd - entryData.redirectStart,\n workerStart: entryData.workerStart,\n workerTime: entryData.workerStart > 0\n ? entryData.fetchStart - entryData.workerStart\n : 0,\n fetchStart: entryData.fetchStart,\n domainLookupStart: entryData.domainLookupStart,\n dns: entryData.domainLookupEnd - entryData.domainLookupStart,\n nextHopProtocol: entryData.nextHopProtocol,\n connectStart: entryData.connectStart,\n connect: entryData.connectEnd - entryData.connectStart,\n secureConnectionStart: entryData.secureConnectionStart,\n tlsTime: entryData.secureConnectionStart > 0\n ? entryData.connectEnd - entryData.secureConnectionStart\n : 0,\n requestStart: entryData.requestStart,\n timeToFirstByte: entryData.responseStart - entryData.requestStart,\n responseStart: entryData.responseStart,\n responseTime: entryData.responseStart > 0\n ? entryData.responseEnd - entryData.responseStart\n : 0,\n domInteractive: entryData.domInteractive,\n domContentLoadedEventStart: entryData.domContentLoadedEventStart,\n domContentLoaded: entryData.domContentLoadedEventEnd -\n entryData.domContentLoadedEventStart,\n domComplete: entryData.domComplete,\n domProcessingTime: entryData.loadEventStart - entryData.responseEnd,\n loadEventStart: entryData.loadEventStart,\n loadEventTime: entryData.loadEventEnd - entryData.loadEventStart,\n duration: entryData.duration,\n headerSize: entryData.transferSize > 0\n ? entryData.transferSize - entryData.encodedBodySize\n : 0,\n transferSize: entryData.transferSize,\n compressionRatio: entryData.encodedBodySize > 0\n ? entryData.decodedBodySize / entryData.encodedBodySize\n : 0,\n navigationTimingLevel: 2\n };\n if ((_a = _this.context) === null || _a === void 0 ? void 0 : _a.record) {\n _this.context.record(PERFORMANCE_NAVIGATION_EVENT_TYPE, eventDataNavigationTimingLevel2);\n }\n };\n _this.config = __assign(__assign({}, defaultPerformancePluginConfig), config);\n return _this;\n }\n NavigationPlugin.prototype.enable = function () {\n if (this.enabled) {\n return;\n }\n this.enabled = true;\n window.addEventListener(LOAD, this.eventListener);\n };\n NavigationPlugin.prototype.disable = function () {\n if (!this.enabled) {\n return;\n }\n this.enabled = false;\n if (this.eventListener) {\n window.removeEventListener(LOAD, this.eventListener);\n }\n };\n /**\n * Use the loadEventEnd field from window.performance to check if the website\n * has loaded already.\n *\n * @returns boolean\n */\n NavigationPlugin.prototype.hasTheWindowLoadEventFired = function () {\n if (window.performance &&\n window.performance.getEntriesByType(NAVIGATION).length) {\n var navData = window.performance.getEntriesByType(NAVIGATION)[0];\n return Boolean(navData.loadEventEnd);\n }\n return false;\n };\n /**\n * loadEventEnd is populated as 0 if the web page has not loaded completely, even though LOAD has been fired.\n * As a result, if loadEventEnd is populated, we can ignore eventListener and record the data directly.\n * On the other hand, if not, we have to use eventListener to initializes PerformanceObserver.\n * PerformanceObserver will act as a second check for the final load timings.\n */\n NavigationPlugin.prototype.onload = function () {\n var _this = this;\n if (this.enabled) {\n if (this.hasTheWindowLoadEventFired()) {\n window.performance\n .getEntriesByType(NAVIGATION)\n .filter(function (e) { return !_this.config.ignore(e); })\n .forEach(function (event) {\n return _this.performanceNavigationEventHandlerTimingLevel2(event);\n });\n }\n else {\n window.addEventListener(LOAD, this.eventListener);\n }\n }\n };\n return NavigationPlugin;\n}(InternalPlugin));\nexport { NavigationPlugin };\n","var __extends = (this && this.__extends) || (function () {\n var 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 return function (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})();\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};\nimport { InternalPlugin } from '../InternalPlugin';\nimport { getResourceFileType, isPutRumEventsCall, shuffle } from '../../utils/common-utils';\nimport { PERFORMANCE_RESOURCE_EVENT_TYPE } from '../utils/constant';\nimport { defaultPerformancePluginConfig } from '../utils/performance-utils';\nexport var RESOURCE_EVENT_PLUGIN_ID = 'resource';\nvar RESOURCE = 'resource';\n/**\n * This plugin records resource performance timing events generated during every page load/re-load.\n */\nvar ResourcePlugin = /** @class */ (function (_super) {\n __extends(ResourcePlugin, _super);\n function ResourcePlugin(config) {\n var _this = _super.call(this, RESOURCE_EVENT_PLUGIN_ID) || this;\n _this.performanceEntryHandler = function (list) {\n _this.recordPerformanceEntries(list.getEntries());\n };\n _this.recordPerformanceEntries = function (list) {\n var recordAll = [];\n var sample = [];\n list.filter(function (e) { return e.entryType === RESOURCE; })\n .filter(function (e) { return !_this.config.ignore(e); })\n .forEach(function (event) {\n var _a = event, name = _a.name, initiatorType = _a.initiatorType;\n var type = getResourceFileType(name, initiatorType);\n if (_this.config.recordAllTypes.includes(type)) {\n recordAll.push(event);\n }\n else if (_this.config.sampleTypes.includes(type)) {\n sample.push(event);\n }\n });\n // Record all events for resources in recordAllTypes\n recordAll.forEach(function (r) {\n return _this.recordResourceEvent(r);\n });\n // Record events from resources in sample until we hit the resource limit\n shuffle(sample);\n while (sample.length > 0 && _this.eventCount < _this.config.eventLimit) {\n _this.recordResourceEvent(sample.pop());\n _this.eventCount++;\n }\n };\n _this.recordResourceEvent = function (_a) {\n var _b;\n var name = _a.name, startTime = _a.startTime, initiatorType = _a.initiatorType, duration = _a.duration, transferSize = _a.transferSize;\n if (isPutRumEventsCall(name, _this.context.config.endpointUrl.hostname)) {\n // Ignore calls to PutRumEvents (i.e., the CloudWatch RUM data\n // plane), otherwise we end up in an infinite loop of recording\n // PutRumEvents.\n return;\n }\n if ((_b = _this.context) === null || _b === void 0 ? void 0 : _b.record) {\n var eventData = {\n version: '1.0.0',\n initiatorType: initiatorType,\n startTime: startTime,\n duration: duration,\n fileType: getResourceFileType(name, initiatorType),\n transferSize: transferSize\n };\n if (_this.context.config.recordResourceUrl) {\n eventData.targetUrl = name;\n }\n _this.context.record(PERFORMANCE_RESOURCE_EVENT_TYPE, eventData);\n }\n };\n _this.config = __assign(__assign({}, defaultPerformancePluginConfig), config);\n _this.eventCount = 0;\n _this.resourceObserver = new PerformanceObserver(_this.performanceEntryHandler);\n return _this;\n }\n ResourcePlugin.prototype.enable = function () {\n if (this.enabled) {\n return;\n }\n this.enabled = true;\n this.resourceObserver.observe({\n type: RESOURCE,\n buffered: true\n });\n };\n ResourcePlugin.prototype.disable = function () {\n if (!this.enabled) {\n return;\n }\n this.enabled = false;\n this.resourceObserver.disconnect();\n };\n ResourcePlugin.prototype.onload = function () {\n // We need to set `buffered: true`, so the observer also records past\n // resource entries. However, there is a limited buffer size, so we may\n // not be able to collect all resource entries.\n this.resourceObserver.observe({\n type: RESOURCE,\n buffered: true\n });\n };\n return ResourcePlugin;\n}(InternalPlugin));\nexport { ResourcePlugin };\n","var e,t,n,r,i,a=function(){return window.performance&&performance.getEntriesByType&&performance.getEntriesByType(\"navigation\")[0]},o=function(e){if(\"loading\"===document.readyState)return\"loading\";var t=a();if(t){if(e(t||100)-1)return n||i;if(n=n?i+\">\"+n:i,r.id)break;e=r.parentNode}}catch(e){}return n},s=-1,f=function(){return s},d=function(e){addEventListener(\"pageshow\",(function(t){t.persisted&&(s=t.timeStamp,e(t))}),!0)},l=function(){var e=a();return e&&e.activationStart||0},m=function(e,t){var n=a(),r=\"navigate\";f()>=0?r=\"back-forward-cache\":n&&(document.prerendering||l()>0?r=\"prerender\":document.wasDiscarded?r=\"restore\":n.type&&(r=n.type.replace(/_/g,\"-\")));return{name:e,value:void 0===t?-1:t,rating:\"good\",delta:0,entries:[],id:\"v3-\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:r}},v=function(e,t,n){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver((function(e){Promise.resolve().then((function(){t(e.getEntries())}))}));return r.observe(Object.assign({type:e,buffered:!0},n||{})),r}}catch(e){}},p=function(e,t,n,r){var i,a;return function(o){t.value>=0&&(o||r)&&((a=t.value-(i||0))||void 0===i)&&(i=t.value,t.delta=a,t.rating=function(e,t){return e>t[1]?\"poor\":e>t[0]?\"needs-improvement\":\"good\"}(t.value,n),e(t))}},h=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},g=function(e){var t=function(t){\"pagehide\"!==t.type&&\"hidden\"!==document.visibilityState||e(t)};addEventListener(\"visibilitychange\",t,!0),addEventListener(\"pagehide\",t,!0)},T=function(e){var t=!1;return function(n){t||(e(n),t=!0)}},y=-1,E=function(){return\"hidden\"!==document.visibilityState||document.prerendering?1/0:0},S=function(e){\"hidden\"===document.visibilityState&&y>-1&&(y=\"visibilitychange\"===e.type?e.timeStamp:0,b())},L=function(){addEventListener(\"visibilitychange\",S,!0),addEventListener(\"prerenderingchange\",S,!0)},b=function(){removeEventListener(\"visibilitychange\",S,!0),removeEventListener(\"prerenderingchange\",S,!0)},C=function(){return y<0&&(y=E(),L(),d((function(){setTimeout((function(){y=E(),L()}),0)}))),{get firstHiddenTime(){return y}}},w=function(e){document.prerendering?addEventListener(\"prerenderingchange\",(function(){return e()}),!0):e()},M=[1800,3e3],x=function(e,t){t=t||{},w((function(){var n,r=C(),i=m(\"FCP\"),a=v(\"paint\",(function(e){e.forEach((function(e){\"first-contentful-paint\"===e.name&&(a.disconnect(),e.startTimer.value&&(r.value=i,r.entries=a,n())},u=v(\"layout-shift\",o);u&&(n=p(e,r,A,t.reportAllChanges),g((function(){o(u.takeRecords()),n(!0)})),d((function(){i=0,r=m(\"CLS\",0),n=p(e,r,A,t.reportAllChanges),h((function(){return n()}))})),setTimeout(n,0))})))}((function(t){!function(e){if(e.entries.length){var t=e.entries.reduce((function(e,t){return e&&e.value>t.value?e:t}));if(t&&t.sources&&t.sources.length){var n=(r=t.sources).find((function(e){return e.node&&1===e.node.nodeType}))||r[0];if(n)return void(e.attribution={largestShiftTarget:c(n.node),largestShiftTime:t.startTime,largestShiftValue:t.value,largestShiftSource:n,largestShiftEntry:t,loadState:o(t.startTime)})}}var r;e.attribution={}}(t),e(t)}),t)},I=function(e,t){x((function(t){!function(e){if(e.entries.length){var t=a(),n=e.entries[e.entries.length-1];if(t){var r=t.activationStart||0,i=Math.max(0,t.responseStart-r);return void(e.attribution={timeToFirstByte:i,firstByteToFCP:e.value-i,loadState:o(e.entries[0].startTime),navigationEntry:t,fcpEntry:n})}}e.attribution={timeToFirstByte:0,firstByteToFCP:e.value,loadState:o(f())}}(t),e(t)}),t)},P={passive:!0,capture:!0},B=new Date,D=function(r,i){e||(e=i,t=r,n=new Date,q(removeEventListener),k())},k=function(){if(t>=0&&t1e12?new Date:performance.now())-e.timeStamp;\"pointerdown\"==e.type?function(e,t){var n=function(){D(e,t),i()},r=function(){i()},i=function(){removeEventListener(\"pointerup\",n,P),removeEventListener(\"pointercancel\",r,P)};addEventListener(\"pointerup\",n,P),addEventListener(\"pointercancel\",r,P)}(t,e):D(t,e)}},q=function(e){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(t){return e(t,R,P)}))},H=[100,300],N=function(n,i){i=i||{},w((function(){var a,o=C(),u=m(\"FID\"),c=function(e){e.startTimet.latency){if(n)n.entries.push(e),n.latency=Math.max(n.latency,e.duration);else{var r={id:e.interactionId,latency:e.duration,entries:[e]};X[r.id]=r,W.push(r)}W.sort((function(e,t){return t.latency-e.latency})),W.splice(10).forEach((function(e){delete X[e.id]}))}},Z=function(e,t){t=t||{},w((function(){var n;G();var r,i=m(\"INP\"),a=function(e){e.forEach((function(e){(e.interactionId&&Y(e),\"first-input\"===e.entryType)&&(!W.some((function(t){return t.entries.some((function(t){return e.duration===t.duration&&e.startTime===t.startTime}))}))&&Y(e))}));var t,n=(t=Math.min(W.length-1,Math.floor(Q()/50)),W[t]);n&&n.latency!==i.value&&(i.value=n.latency,i.entries=n.entries,r())},o=v(\"event\",a,{durationThreshold:null!==(n=t.durationThreshold)&&void 0!==n?n:40});r=p(e,i,J,t.reportAllChanges),o&&(\"PerformanceEventTiming\"in window&&\"interactionId\"in PerformanceEventTiming.prototype&&o.observe({type:\"first-input\",buffered:!0}),g((function(){a(o.takeRecords()),i.value<0&&Q()>0&&(i.value=0,i.entries=[]),r(!0)})),d((function(){W=[],K=z(),i=m(\"INP\"),r=p(e,i,J,t.reportAllChanges)})))}))},$=function(e,t){Z((function(t){!function(e){if(e.entries.length){var t=e.entries.sort((function(e,t){return t.duration-e.duration||t.processingEnd-t.processingStart-(e.processingEnd-e.processingStart)}))[0],n=e.entries.find((function(e){return e.target}));e.attribution={eventTarget:c(n&&n.target),eventType:t.name,eventTime:t.startTime,eventEntry:t,loadState:o(t.startTime)}}else e.attribution={}}(t),e(t)}),t)},ee=[2500,4e3],te={},ne=function(e,t){!function(e,t){t=t||{},w((function(){var n,r=C(),i=m(\"LCP\"),a=function(e){var t=e[e.length-1];t&&t.startTimeperformance.now())return;n.value=Math.max(o-l(),0),n.entries=[i],r(!0),d((function(){n=m(\"TTFB\",0),(r=p(e,n,re,t.reportAllChanges))(!0)}))}}))},oe=function(e,t){ae((function(t){!function(e){if(e.entries.length){var t=e.entries[0],n=t.activationStart||0,r=Math.max(t.domainLookupStart-n,0),i=Math.max(t.connectStart-n,0),a=Math.max(t.requestStart-n,0);e.attribution={waitingTime:r,dnsTime:i-r,connectionTime:a-i,requestTime:e.value-a,navigationEntry:t}}else e.attribution={waitingTime:0,dnsTime:0,connectionTime:0,requestTime:0}}(t),e(t)}),t)};export{A as CLSThresholds,M as FCPThresholds,H as FIDThresholds,J as INPThresholds,ee as LCPThresholds,re as TTFBThresholds,F as onCLS,I as onFCP,O as onFID,$ as onINP,ne as onLCP,oe as onTTFB};\n","var __extends = (this && this.__extends) || (function () {\n var 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 return function (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})();\nimport { InternalPlugin } from '../InternalPlugin';\nimport { onCLS, onFID, onLCP } from 'web-vitals/attribution';\nimport { CLS_EVENT_TYPE, FID_EVENT_TYPE, LCP_EVENT_TYPE, PERFORMANCE_NAVIGATION_EVENT_TYPE, PERFORMANCE_RESOURCE_EVENT_TYPE } from '../utils/constant';\nimport { Topic } from '../../event-bus/EventBus';\nimport { ResourceType, performanceKey, isLCPSupported } from '../../utils/common-utils';\nexport var WEB_VITAL_EVENT_PLUGIN_ID = 'web-vitals';\nvar WebVitalsPlugin = /** @class */ (function (_super) {\n __extends(WebVitalsPlugin, _super);\n function WebVitalsPlugin() {\n var _this = _super.call(this, WEB_VITAL_EVENT_PLUGIN_ID) || this;\n _this.resourceEventIds = new Map();\n _this.cacheLCPCandidates = isLCPSupported();\n _this.handleEvent = function (event) {\n switch (event.type) {\n // lcp resource is either image or text\n case PERFORMANCE_RESOURCE_EVENT_TYPE:\n var details = event.details;\n if (_this.cacheLCPCandidates &&\n details.fileType === ResourceType.IMAGE) {\n _this.resourceEventIds.set(performanceKey(event.details), event.id);\n }\n break;\n case PERFORMANCE_NAVIGATION_EVENT_TYPE:\n _this.navigationEventId = event.id;\n break;\n }\n };\n return _this;\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n WebVitalsPlugin.prototype.enable = function () { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n WebVitalsPlugin.prototype.disable = function () { };\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n WebVitalsPlugin.prototype.configure = function (config) { };\n WebVitalsPlugin.prototype.onload = function () {\n var _this = this;\n this.context.eventBus.subscribe(Topic.EVENT, this.handleEvent); // eslint-disable-line @typescript-eslint/unbound-method\n onLCP(function (metric) { return _this.handleLCP(metric); });\n onFID(function (metric) { return _this.handleFID(metric); });\n onCLS(function (metric) { return _this.handleCLS(metric); });\n };\n WebVitalsPlugin.prototype.handleLCP = function (metric) {\n var _a, _b;\n var a = metric.attribution;\n var attribution = {\n element: a.element,\n url: a.url,\n timeToFirstByte: a.timeToFirstByte,\n resourceLoadDelay: a.resourceLoadDelay,\n resourceLoadTime: a.resourceLoadTime,\n elementRenderDelay: a.elementRenderDelay\n };\n if (a.lcpResourceEntry) {\n var key = performanceKey(a.lcpResourceEntry);\n attribution.lcpResourceEntry = this.resourceEventIds.get(key);\n }\n if (this.navigationEventId) {\n attribution.navigationEntry = this.navigationEventId;\n }\n (_a = this.context) === null || _a === void 0 ? void 0 : _a.record(LCP_EVENT_TYPE, {\n version: '1.0.0',\n value: metric.value,\n attribution: attribution\n });\n // teardown\n (_b = this.context) === null || _b === void 0 ? void 0 : _b.eventBus.unsubscribe(Topic.EVENT, this.handleEvent); // eslint-disable-line\n this.resourceEventIds.clear();\n this.navigationEventId = undefined;\n };\n WebVitalsPlugin.prototype.handleCLS = function (metric) {\n var _a;\n var a = metric.attribution;\n (_a = this.context) === null || _a === void 0 ? void 0 : _a.record(CLS_EVENT_TYPE, {\n version: '1.0.0',\n value: metric.value,\n attribution: {\n largestShiftTarget: a.largestShiftTarget,\n largestShiftValue: a.largestShiftValue,\n largestShiftTime: a.largestShiftTime,\n loadState: a.loadState\n }\n });\n };\n WebVitalsPlugin.prototype.handleFID = function (metric) {\n var _a;\n var a = metric.attribution;\n (_a = this.context) === null || _a === void 0 ? void 0 : _a.record(FID_EVENT_TYPE, {\n version: '1.0.0',\n value: metric.value,\n attribution: {\n eventTarget: a.eventTarget,\n eventType: a.eventType,\n eventTime: a.eventTime,\n loadState: a.loadState\n }\n });\n };\n return WebVitalsPlugin;\n}(InternalPlugin));\nexport { WebVitalsPlugin };\n","var __extends = (this && this.__extends) || (function () {\n var 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 return function (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})();\nvar XhrError = /** @class */ (function (_super) {\n __extends(XhrError, _super);\n function XhrError(message) {\n var _this = _super.call(this, message) || this;\n _this.name = 'XMLHttpRequest error';\n return _this;\n }\n return XhrError;\n}(Error));\nexport { XhrError };\n","var __extends = (this && this.__extends) || (function () {\n var 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 return function (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})();\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};\nimport { MonkeyPatched } from '../MonkeyPatched';\nimport { defaultConfig, epochTime, createXRayTraceEvent, getAmznTraceIdHeaderValue, X_AMZN_TRACE_ID, isUrlAllowed, createXRaySubsegment, requestInfoToHostname, is429, is4xx, is5xx, isTraceIdHeaderEnabled } from '../utils/http-utils';\nimport { XhrError } from '../../errors/XhrError';\nimport { HTTP_EVENT_TYPE, XRAY_TRACE_EVENT_TYPE } from '../utils/constant';\nimport { errorEventToJsErrorEvent } from '../utils/js-error-utils';\nexport var XHR_PLUGIN_ID = 'xhr';\n/**\n * A plugin which initiates and records AWS X-Ray traces for XML HTTP requests (XMLHttpRequest).\n *\n * The XMLHttpRequest API is monkey patched using shimmer so all calls to XMLHttpRequest are intercepted. Only calls\n * to URLs which are on the allowlist and are not on the denylist are traced and recorded.\n *\n * The XHR events we use (i.e., onload, onerror, onabort, ontimeout) are only\n * supported by newer browsers. If we want to support older browsers we will\n * need to detect older browsers and use the onreadystatechange event.\n *\n * For example, the following sequence events occur for each case:\n *\n * Case 1: Request succeeds events\n * -------------------------------\n * readystatechange (state = 1, status = 0)\n * loadstart\n * readystatechange (state = 2, status = 200)\n * readystatechange (state = 3, status = 200)\n * readystatechange (state = 4, status = 200)\n * load\n * loadend\n *\n * Case 2: Request fails because of invalid domain or CORS failure\n * -------------------------------\n * readystatechange (state = 1, status = 0)\n * loadstart\n * readystatechange (state = 4, status = 0)\n * error\n * loadend\n *\n * Case 3: Request fails because of timeout\n * -------------------------------\n * readystatechange (state = 1, status = 0)\n * loadstart\n * readystatechange (state = 4, status = 0)\n * timeout\n * loadend\n *\n * Case 4: Request is aborted\n * -------------------------------\n * readystatechange (state = 1, status = 0)\n * loadstart\n * readystatechange (state = 2, status = 200)\n * readystatechange (state = 3, status = 200)\n * readystatechange (state = 4, status = 0)\n * abort\n * loadend\n *\n * See\n * - https://xhr.spec.whatwg.org/#event-handlers.\n * - https://xhr.spec.whatwg.org/#events\n */\nvar XhrPlugin = /** @class */ (function (_super) {\n __extends(XhrPlugin, _super);\n function XhrPlugin(config) {\n var _this = _super.call(this, XHR_PLUGIN_ID) || this;\n _this.addXRayTraceIdHeader = function (url) {\n return isTraceIdHeaderEnabled(url, _this.config.addXRayTraceIdHeader);\n };\n _this.isTracingEnabled = function () {\n return _this.context.config.enableXRay;\n };\n _this.isSessionRecorded = function () {\n var _a;\n return ((_a = _this.context.getSession()) === null || _a === void 0 ? void 0 : _a.record) || false;\n };\n _this.handleXhrLoadEvent = function (e) {\n var xhr = e.target;\n var xhrDetails = _this.xhrMap.get(xhr);\n if (xhrDetails) {\n var endTime = epochTime();\n xhrDetails.trace.end_time = endTime;\n xhrDetails.trace.subsegments[0].end_time = endTime;\n xhrDetails.trace.subsegments[0].http.response = {\n status: xhr.status\n };\n if (is429(xhr.status)) {\n xhrDetails.trace.subsegments[0].throttle = true;\n xhrDetails.trace.throttle = true;\n }\n else if (is4xx(xhr.status)) {\n xhrDetails.trace.subsegments[0].error = true;\n xhrDetails.trace.error = true;\n }\n else if (is5xx(xhr.status)) {\n xhrDetails.trace.subsegments[0].fault = true;\n xhrDetails.trace.fault = true;\n }\n var clStr = xhr.getResponseHeader('Content-Length');\n var cl = clStr ? parseInt(clStr, 10) : NaN;\n if (!isNaN(cl)) {\n xhrDetails.trace.subsegments[0].http.response.content_length =\n cl;\n }\n _this.recordTraceEvent(xhrDetails.trace);\n _this.recordHttpEventWithResponse(xhrDetails, xhr);\n }\n };\n _this.handleXhrErrorEvent = function (e) {\n var xhr = e.target;\n var xhrDetails = _this.xhrMap.get(xhr);\n var errorName = 'XMLHttpRequest error';\n var errorMessage = xhr.statusText\n ? xhr.status.toString() + ': ' + xhr.statusText\n : xhr.status.toString();\n if (xhrDetails) {\n var endTime = epochTime();\n // Guidance from X-Ray documentation:\n // > Record errors in segments when your application returns an\n // > error to the user, and in subsegments when a downstream call\n // > returns an error.\n xhrDetails.trace.fault = true;\n xhrDetails.trace.end_time = endTime;\n xhrDetails.trace.subsegments[0].end_time = endTime;\n xhrDetails.trace.subsegments[0].fault = true;\n xhrDetails.trace.subsegments[0].cause = {\n exceptions: [\n {\n type: errorName,\n message: errorMessage\n }\n ]\n };\n _this.recordTraceEvent(xhrDetails.trace);\n _this.recordHttpEventWithError(xhrDetails, xhr, new XhrError(errorMessage));\n }\n };\n _this.handleXhrAbortEvent = function (e) {\n var xhr = e.target;\n var xhrDetails = _this.xhrMap.get(xhr);\n if (xhrDetails) {\n _this.handleXhrDetailsOnError(xhrDetails, xhr, 'XMLHttpRequest abort');\n }\n };\n _this.handleXhrTimeoutEvent = function (e) {\n var xhr = e.target;\n var xhrDetails = _this.xhrMap.get(xhr);\n var errorName = 'XMLHttpRequest timeout';\n _this.handleXhrDetailsOnError(xhrDetails, xhr, errorName);\n };\n _this.initializeTrace = function (xhrDetails) {\n var startTime = epochTime();\n xhrDetails.trace = createXRayTraceEvent(_this.config.logicalServiceName, startTime);\n xhrDetails.trace.subsegments.push(createXRaySubsegment(requestInfoToHostname(xhrDetails.url), startTime, {\n request: {\n method: xhrDetails.method,\n url: xhrDetails.url,\n traced: true\n }\n }));\n };\n _this.sendWrapper = function () {\n var self = _this;\n return function (original) {\n return function () {\n var xhrDetails = self.xhrMap.get(this);\n if (xhrDetails) {\n this.addEventListener('load', self.handleXhrLoadEvent);\n this.addEventListener('error', self.handleXhrErrorEvent);\n this.addEventListener('abort', self.handleXhrAbortEvent);\n this.addEventListener('timeout', self.handleXhrTimeoutEvent);\n self.initializeTrace(xhrDetails);\n if (!self.isSyntheticsUA &&\n self.isTracingEnabled() &&\n self.addXRayTraceIdHeader(xhrDetails.url) &&\n self.isSessionRecorded()) {\n this.setRequestHeader(X_AMZN_TRACE_ID, getAmznTraceIdHeaderValue(xhrDetails.trace.trace_id, xhrDetails.trace.subsegments[0].id));\n }\n }\n return original.apply(this, arguments);\n };\n };\n };\n _this.openWrapper = function () {\n var self = _this;\n return function (original) {\n return function (method, url, async) {\n if (isUrlAllowed(url, self.config)) {\n self.xhrMap.set(this, { url: url, method: method, async: async });\n }\n return original.apply(this, arguments);\n };\n };\n };\n _this.config = __assign(__assign({}, defaultConfig), config);\n _this.xhrMap = new Map();\n _this.isSyntheticsUA = navigator.userAgent.includes('CloudWatchSynthetics');\n return _this;\n }\n XhrPlugin.prototype.onload = function () {\n this.enable();\n };\n Object.defineProperty(XhrPlugin.prototype, \"patches\", {\n get: function () {\n return [\n {\n nodule: XMLHttpRequest.prototype,\n name: 'send',\n wrapper: this.sendWrapper\n },\n {\n nodule: XMLHttpRequest.prototype,\n name: 'open',\n wrapper: this.openWrapper\n }\n ];\n },\n enumerable: false,\n configurable: true\n });\n XhrPlugin.prototype.handleXhrDetailsOnError = function (xhrDetails, xhr, errorName) {\n if (xhrDetails) {\n var endTime = epochTime();\n xhrDetails.trace.end_time = endTime;\n xhrDetails.trace.subsegments[0].end_time = endTime;\n xhrDetails.trace.subsegments[0].error = true;\n xhrDetails.trace.subsegments[0].cause = {\n exceptions: [\n {\n type: errorName\n }\n ]\n };\n this.recordTraceEvent(xhrDetails.trace);\n this.recordHttpEventWithError(xhrDetails, xhr, errorName);\n }\n };\n XhrPlugin.prototype.statusOk = function (status) {\n return status >= 200 && status < 300;\n };\n XhrPlugin.prototype.recordHttpEventWithResponse = function (xhrDetails, xhr) {\n this.xhrMap.delete(xhr);\n var httpEvent = {\n version: '1.0.0',\n request: { method: xhrDetails.method, url: xhrDetails.url },\n response: { status: xhr.status, statusText: xhr.statusText }\n };\n if (this.isTracingEnabled()) {\n httpEvent.trace_id = xhrDetails.trace.trace_id;\n httpEvent.segment_id = xhrDetails.trace.subsegments[0].id;\n }\n if (this.config.recordAllRequests || !this.statusOk(xhr.status)) {\n this.context.record(HTTP_EVENT_TYPE, httpEvent);\n }\n };\n XhrPlugin.prototype.recordHttpEventWithError = function (xhrDetails, xhr, error) {\n this.xhrMap.delete(xhr);\n var httpEvent = {\n version: '1.0.0',\n request: { method: xhrDetails.method, url: xhrDetails.url },\n error: errorEventToJsErrorEvent({\n type: 'error',\n error: error\n }, this.config.stackTraceLength)\n };\n if (this.isTracingEnabled()) {\n httpEvent.trace_id = xhrDetails.trace.trace_id;\n httpEvent.segment_id = xhrDetails.trace.subsegments[0].id;\n }\n this.context.record(HTTP_EVENT_TYPE, httpEvent);\n };\n XhrPlugin.prototype.recordTraceEvent = function (trace) {\n if (!this.isSyntheticsUA &&\n this.isTracingEnabled() &&\n this.isSessionRecorded()) {\n this.context.record(XRAY_TRACE_EVENT_TYPE, trace);\n }\n };\n return XhrPlugin;\n}(MonkeyPatched));\nexport { XhrPlugin };\n","var __extends = (this && this.__extends) || (function () {\n var 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 return function (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})();\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};\nimport { MonkeyPatched } from '../MonkeyPatched';\nimport { defaultConfig, epochTime, createXRayTraceEvent, addAmznTraceIdHeaderToInit, createXRayTraceEventHttp, isUrlAllowed, createXRaySubsegment, requestInfoToHostname, addAmznTraceIdHeaderToHeaders, resourceToUrlString, is429, is4xx, is5xx, getTraceHeader, isTraceIdHeaderEnabled } from '../utils/http-utils';\nimport { HTTP_EVENT_TYPE, XRAY_TRACE_EVENT_TYPE } from '../utils/constant';\nimport { errorEventToJsErrorEvent, isErrorPrimitive } from '../utils/js-error-utils';\nexport var FETCH_PLUGIN_ID = 'fetch';\n/**\n * A plugin which initiates and records AWS X-Ray traces for fetch HTTP requests.\n *\n * The fetch API is monkey patched using shimmer so all calls to fetch are intercepted. Only calls to URLs which are\n * on the allowlist and are not on the denylist are traced and recorded.\n */\nvar FetchPlugin = /** @class */ (function (_super) {\n __extends(FetchPlugin, _super);\n function FetchPlugin(config) {\n var _this = _super.call(this, FETCH_PLUGIN_ID) || this;\n _this.isTracingEnabled = function () {\n return _this.context.config.enableXRay;\n };\n _this.isSessionRecorded = function () {\n var _a;\n return ((_a = _this.context.getSession()) === null || _a === void 0 ? void 0 : _a.record) || false;\n };\n _this.beginTrace = function (input, init, argsArray) {\n var startTime = epochTime();\n var http = createXRayTraceEventHttp(input, init, true);\n var xRayTraceEvent = createXRayTraceEvent(_this.config.logicalServiceName, startTime);\n var subsegment = createXRaySubsegment(requestInfoToHostname(input), startTime, http);\n xRayTraceEvent.subsegments.push(subsegment);\n if (_this.isTraceIdHeaderEnabled(input)) {\n _this.addXRayTraceIdHeader(input, init, argsArray, xRayTraceEvent);\n }\n return xRayTraceEvent;\n };\n _this.addXRayTraceIdHeader = function (input, init, argsArray, xRayTraceEvent) {\n if (input.headers) {\n return addAmznTraceIdHeaderToHeaders(input.headers, xRayTraceEvent.trace_id, xRayTraceEvent.subsegments[0].id);\n }\n if (!init) {\n init = {};\n [].push.call(argsArray, init);\n }\n addAmznTraceIdHeaderToInit(init, xRayTraceEvent.trace_id, xRayTraceEvent.subsegments[0].id);\n };\n _this.endTrace = function (xRayTraceEvent, response, error) {\n if (xRayTraceEvent) {\n var endTime = epochTime();\n xRayTraceEvent.subsegments[0].end_time = endTime;\n xRayTraceEvent.end_time = endTime;\n if (response) {\n xRayTraceEvent.subsegments[0].http.response = {\n status: response.status\n };\n if (is429(response.status)) {\n xRayTraceEvent.subsegments[0].throttle = true;\n xRayTraceEvent.throttle = true;\n }\n else if (is4xx(response.status)) {\n xRayTraceEvent.subsegments[0].error = true;\n xRayTraceEvent.error = true;\n }\n else if (is5xx(response.status)) {\n xRayTraceEvent.subsegments[0].fault = true;\n xRayTraceEvent.fault = true;\n }\n var clStr = response.headers.get('Content-Length');\n var cl = clStr ? parseInt(clStr, 10) : NaN;\n if (!isNaN(cl)) {\n xRayTraceEvent.subsegments[0].http.response.content_length =\n cl;\n }\n }\n if (error) {\n // Guidance from X-Ray documentation:\n // > Record errors in segments when your application returns an\n // > error to the user, and in subsegments when a downstream call\n // > returns an error.\n xRayTraceEvent.fault = true;\n xRayTraceEvent.subsegments[0].fault = true;\n if (error instanceof Object) {\n _this.appendErrorCauseFromObject(xRayTraceEvent.subsegments[0], error);\n }\n else if (isErrorPrimitive(error)) {\n _this.appendErrorCauseFromPrimitive(xRayTraceEvent.subsegments[0], error.toString());\n }\n }\n _this.context.record(XRAY_TRACE_EVENT_TYPE, xRayTraceEvent);\n }\n };\n _this.createHttpEvent = function (input, init) {\n var request = input;\n return {\n version: '1.0.0',\n request: {\n url: resourceToUrlString(input),\n method: (init === null || init === void 0 ? void 0 : init.method)\n ? init.method\n : request.method\n ? request.method\n : 'GET'\n }\n };\n };\n _this.recordHttpEventWithResponse = function (httpEvent, response) {\n if (_this.config.recordAllRequests || !response.ok) {\n httpEvent.response = {\n status: response.status,\n statusText: response.statusText\n };\n _this.context.record(HTTP_EVENT_TYPE, httpEvent);\n }\n };\n _this.recordHttpEventWithError = function (httpEvent, error) {\n httpEvent.error = errorEventToJsErrorEvent({\n type: 'error',\n error: error\n }, _this.config.stackTraceLength);\n _this.context.record(HTTP_EVENT_TYPE, httpEvent);\n };\n _this.fetch = function (original, thisArg, argsArray, input, init) {\n var httpEvent = _this.createHttpEvent(input, init);\n var trace;\n if (!isUrlAllowed(resourceToUrlString(input), _this.config)) {\n return original.apply(thisArg, argsArray);\n }\n var traceHeader = getTraceHeader(input.headers);\n if (traceHeader.traceId && traceHeader.segmentId) {\n httpEvent.trace_id = traceHeader.traceId;\n httpEvent.segment_id = traceHeader.segmentId;\n }\n else if (_this.isTracingEnabled() && _this.isSessionRecorded()) {\n trace = _this.beginTrace(input, init, argsArray);\n httpEvent.trace_id = trace.trace_id;\n httpEvent.segment_id = trace.subsegments[0].id;\n }\n return original\n .apply(thisArg, argsArray)\n .then(function (response) {\n _this.endTrace(trace, response, undefined);\n _this.recordHttpEventWithResponse(httpEvent, response);\n return response;\n })\n .catch(function (error) {\n _this.endTrace(trace, undefined, error);\n _this.recordHttpEventWithError(httpEvent, error);\n throw error;\n });\n };\n _this.fetchWrapper = function () {\n var self = _this;\n return function (original) {\n return function (input, init) {\n return self.fetch(original, this, arguments, input, init);\n };\n };\n };\n _this.config = __assign(__assign({}, defaultConfig), config);\n return _this;\n }\n Object.defineProperty(FetchPlugin.prototype, \"patches\", {\n get: function () {\n return [\n {\n nodule: window,\n name: 'fetch',\n wrapper: this.fetchWrapper\n }\n ];\n },\n enumerable: false,\n configurable: true\n });\n FetchPlugin.prototype.onload = function () {\n this.enable();\n };\n FetchPlugin.prototype.isTraceIdHeaderEnabled = function (input) {\n var url = resourceToUrlString(input);\n return isTraceIdHeaderEnabled(url, this.config.addXRayTraceIdHeader);\n };\n FetchPlugin.prototype.appendErrorCauseFromPrimitive = function (subsegment, error) {\n subsegment.cause = {\n exceptions: [\n {\n type: error\n }\n ]\n };\n };\n FetchPlugin.prototype.appendErrorCauseFromObject = function (subsegment, error) {\n subsegment.cause = {\n exceptions: [\n {\n type: error.name,\n message: error.message\n }\n ]\n };\n };\n return FetchPlugin;\n}(MonkeyPatched));\nexport { FetchPlugin };\n","var __extends = (this && this.__extends) || (function () {\n var 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 return function (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})();\nimport { PageIdFormatEnum } from '../../orchestration/Orchestration';\nimport { MonkeyPatched } from '../MonkeyPatched';\nexport var PAGE_EVENT_PLUGIN_ID = 'page-view';\n/**\n * A plugin which records page view transitions.\n *\n * When a session is initialized, the PageManager records the landing page. When\n * subsequent pages are viewed, this plugin updates the page.\n */\nvar PageViewPlugin = /** @class */ (function (_super) {\n __extends(PageViewPlugin, _super);\n function PageViewPlugin() {\n var _this = _super.call(this, PAGE_EVENT_PLUGIN_ID) || this;\n _this.pushState = function () {\n var self = _this;\n return function (original) {\n return function (data, title, url) {\n var retVal = original.apply(this, arguments);\n self.recordPageView();\n return retVal;\n };\n };\n };\n _this.replaceState = function () {\n var self = _this;\n return function (original) {\n return function (data, title, url) {\n var retVal = original.apply(this, arguments);\n self.recordPageView();\n return retVal;\n };\n };\n };\n _this.popstateListener = function (event) {\n _this.recordPageView();\n };\n _this.recordPageView = function () {\n _this.context.recordPageView(_this.createIdForCurrentPage());\n };\n _this.enable();\n return _this;\n }\n PageViewPlugin.prototype.onload = function () {\n this.addListener();\n this.recordPageView();\n };\n Object.defineProperty(PageViewPlugin.prototype, \"patches\", {\n get: function () {\n return [\n {\n nodule: History.prototype,\n name: 'pushState',\n wrapper: this.pushState\n },\n {\n nodule: History.prototype,\n name: 'replaceState',\n wrapper: this.replaceState\n }\n ];\n },\n enumerable: false,\n configurable: true\n });\n PageViewPlugin.prototype.addListener = function () {\n // popstate will fire under the following conditions:\n // (1) The history back, forward or go APIs are used\n // (2) The URI's fragment (hash) changes\n window.addEventListener('popstate', this.popstateListener);\n };\n PageViewPlugin.prototype.createIdForCurrentPage = function () {\n var path = window.location.pathname;\n var hash = window.location.hash;\n switch (this.context.config.pageIdFormat) {\n case PageIdFormatEnum.PathAndHash:\n if (path && hash) {\n return path + hash;\n }\n else if (path) {\n return path;\n }\n else if (hash) {\n return hash;\n }\n return '';\n case PageIdFormatEnum.Hash:\n return hash ? hash : '';\n case PageIdFormatEnum.Path:\n default:\n return path ? path : '';\n }\n };\n return PageViewPlugin;\n}(MonkeyPatched));\nexport { PageViewPlugin };\n","var __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};\nvar __rest = (this && this.__rest) || function (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};\nvar __spreadArray = (this && this.__spreadArray) || function (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};\nimport { BasicAuthentication } from '../dispatch/BasicAuthentication';\nimport { EnhancedAuthentication } from '../dispatch/EnhancedAuthentication';\nimport { PluginManager } from '../plugins/PluginManager';\nimport { DomEventPlugin, DOM_EVENT_PLUGIN_ID } from '../plugins/event-plugins/DomEventPlugin';\nimport { JsErrorPlugin, JS_ERROR_EVENT_PLUGIN_ID } from '../plugins/event-plugins/JsErrorPlugin';\nimport { EventCache } from '../event-cache/EventCache';\nimport { Dispatch } from '../dispatch/Dispatch';\nimport { NavigationPlugin } from '../plugins/event-plugins/NavigationPlugin';\nimport { ResourcePlugin } from '../plugins/event-plugins/ResourcePlugin';\nimport { WebVitalsPlugin } from '../plugins/event-plugins/WebVitalsPlugin';\nimport { XhrPlugin } from '../plugins/event-plugins/XhrPlugin';\nimport { FetchPlugin } from '../plugins/event-plugins/FetchPlugin';\nimport { PageViewPlugin } from '../plugins/event-plugins/PageViewPlugin';\nimport { INSTALL_MODULE } from '../utils/constants';\nimport EventBus from '../event-bus/EventBus';\nvar DEFAULT_REGION = 'us-west-2';\nvar DEFAULT_ENDPOINT = \"https://dataplane.rum.\".concat(DEFAULT_REGION, \".amazonaws.com\");\nexport var TelemetryEnum;\n(function (TelemetryEnum) {\n TelemetryEnum[\"Errors\"] = \"errors\";\n TelemetryEnum[\"Performance\"] = \"performance\";\n TelemetryEnum[\"Interaction\"] = \"interaction\";\n TelemetryEnum[\"Http\"] = \"http\";\n})(TelemetryEnum || (TelemetryEnum = {}));\nexport var PageIdFormatEnum;\n(function (PageIdFormatEnum) {\n PageIdFormatEnum[\"Path\"] = \"PATH\";\n PageIdFormatEnum[\"Hash\"] = \"HASH\";\n PageIdFormatEnum[\"PathAndHash\"] = \"PATH_AND_HASH\";\n})(PageIdFormatEnum || (PageIdFormatEnum = {}));\nexport var defaultCookieAttributes = function () {\n return {\n unique: false,\n domain: window.location.hostname,\n path: '/',\n sameSite: 'Strict',\n secure: true\n };\n};\nexport var defaultConfig = function (cookieAttributes) {\n return {\n allowCookies: false,\n batchLimit: 100,\n client: INSTALL_MODULE,\n cookieAttributes: cookieAttributes,\n disableAutoPageView: false,\n dispatchInterval: 5 * 1000,\n enableRumClient: true,\n enableXRay: false,\n endpoint: DEFAULT_ENDPOINT,\n endpointUrl: new URL(DEFAULT_ENDPOINT),\n eventCacheSize: 200,\n eventPluginsToLoad: [],\n pageIdFormat: PageIdFormatEnum.Path,\n pagesToExclude: [],\n pagesToInclude: [/.*/],\n signing: true,\n recordResourceUrl: true,\n retries: 2,\n routeChangeComplete: 100,\n routeChangeTimeout: 10000,\n sessionAttributes: {},\n sessionEventLimit: 200,\n sessionLengthSeconds: 60 * 30,\n sessionSampleRate: 1,\n telemetries: [],\n useBeacon: true,\n userIdRetentionDays: 30\n };\n};\n/**\n * An orchestrator which (1) initializes cwr components and (2) provides the API for the application to interact\n * with the RUM web client. Depending on how the RUM web client was loaded, this class may be called directly, or\n * indirectly through the CommandQueue:\n * - If the client was loaded by an HTML script tag, Orchestration is called indirectly through the CommandQueue.\n * - If the client was loaded as an NPM module, Orchestration is called directly by the application.\n */\nvar Orchestration = /** @class */ (function () {\n /**\n * Instantiate the CloudWatch RUM web client and begin monitoring the\n * application.\n *\n * This constructor may throw a TypeError if not correctly configured. In\n * production code, wrap calls to this constructor in a try/catch block so\n * that this does not impact the application.\n *\n * @param applicationId A globally unique identifier for the CloudWatch RUM\n * app monitor which monitors your application.\n * @param applicationVersion Your application's semantic version. If you do\n * not wish to use this field then add any placeholder, such as '0.0.0'.\n * @param region The AWS region of the app monitor. For example, 'us-east-1'\n * or 'eu-west-2'.\n * @param configCookieAttributes\n * @param partialConfig An application-specific configuration for the web\n * client.\n */\n function Orchestration(applicationId, applicationVersion, region, _a) {\n if (_a === void 0) { _a = {}; }\n var configCookieAttributes = _a.cookieAttributes, partialConfig = __rest(_a, [\"cookieAttributes\"]);\n this.eventBus = new EventBus();\n if (typeof region === 'undefined') {\n // Provide temporary backwards compatibility if the region was not provided by the loader. This will be\n // removed when internal users have migrated to the new signature.\n region = 'us-west-2';\n }\n var cookieAttributes = __assign(__assign({}, defaultCookieAttributes()), configCookieAttributes);\n this.config = __assign(__assign({ fetchFunction: fetch }, defaultConfig(cookieAttributes)), partialConfig);\n this.config.endpoint = this.getDataPlaneEndpoint(region, partialConfig);\n // If the URL is not formatted correctly, a TypeError will be thrown.\n // This breaks our convention to fail-safe here for the sake of\n // debugging. It is expected that the application has wrapped the call\n // to the constructor in a try/catch block, as is done in the example\n // code.\n this.config.endpointUrl = new URL(this.config.endpoint);\n this.eventCache = this.initEventCache(applicationId, applicationVersion);\n this.dispatchManager = this.initDispatch(region);\n this.pluginManager = this.initPluginManager(applicationId, applicationVersion);\n if (this.config.enableRumClient) {\n this.enable();\n }\n else {\n this.disable();\n }\n }\n /**\n * Set the credential provider that will be used to authenticate with the\n * data plane service (AWS auth).\n *\n * @param credentials A provider of AWS credentials.\n */\n Orchestration.prototype.setAwsCredentials = function (credentials) {\n this.dispatchManager.setAwsCredentials(credentials);\n };\n /**\n * Set custom session attributes to add them to all event metadata.\n *\n * @param payload object containing custom attribute data in the form of key, value pairs\n */\n Orchestration.prototype.addSessionAttributes = function (sessionAttributes) {\n this.eventCache.addSessionAttributes(sessionAttributes);\n };\n /**\n * Add a telemetry plugin.\n *\n * @param plugin A plugin which adheres to the RUM web client's plugin interface.\n */\n Orchestration.prototype.addPlugin = function (plugin) {\n this.pluginManager.addPlugin(plugin);\n };\n /**\n * Force the client to immediately dispatch events to the collector.\n */\n Orchestration.prototype.dispatch = function () {\n this.dispatchManager.dispatchFetch();\n };\n /**\n * Force the client to immediately dispatch events to the collector using a beacon.\n */\n Orchestration.prototype.dispatchBeacon = function () {\n this.dispatchManager.dispatchBeacon();\n };\n /**\n * When enabled, the client records and dispatches events.\n */\n Orchestration.prototype.enable = function () {\n this.eventCache.enable();\n this.pluginManager.enable();\n this.dispatchManager.enable();\n };\n /**\n * When disabled, the client does not record or dispatch events.\n */\n Orchestration.prototype.disable = function () {\n this.dispatchManager.disable();\n this.pluginManager.disable();\n this.eventCache.disable();\n };\n /**\n * @param allow when {@code false}, the RUM web client will not store cookies or use localstorage.\n */\n Orchestration.prototype.allowCookies = function (allow) {\n this.config.allowCookies = allow;\n };\n /**\n * Update the current page the user is interacting with.\n *\n * @param payload Can be string or PageAttributes object\n * If string, payload is pageId (The unique ID for the page within the application).\n * If PageAttributes, payload contains pageId as well as page attributes to include in events with pageId\n */\n Orchestration.prototype.recordPageView = function (payload) {\n this.eventCache.recordPageView(payload);\n };\n /**\n * Record an error using the JS error plugin.\n *\n * @param error An ErrorEvent, Error or primitive.\n */\n Orchestration.prototype.recordError = function (error) {\n this.pluginManager.record(JS_ERROR_EVENT_PLUGIN_ID, error);\n };\n /**\n * Update DOM plugin to record the (additional) provided DOM events.\n *\n * @param events\n */\n Orchestration.prototype.registerDomEvents = function (events) {\n this.pluginManager.updatePlugin(DOM_EVENT_PLUGIN_ID, events);\n };\n /**\n * Records a custom event.\n *\n * @param type A unique name for the type of event being recorded.\n * @param eventData A JSON object containing the event's attributes.\n */\n Orchestration.prototype.recordEvent = function (eventType, eventData) {\n this.eventCache.recordEvent(eventType, eventData);\n };\n Orchestration.prototype.initEventCache = function (applicationId, applicationVersion) {\n return new EventCache({\n id: applicationId,\n version: applicationVersion\n }, this.config, this.eventBus);\n };\n Orchestration.prototype.initDispatch = function (region) {\n var dispatch = new Dispatch(region, this.config.endpointUrl, this.eventCache, this.config);\n // Only retrieves and sets credentials if the session is sampled.\n // The nil session created during initialization will have the same sampling decision as\n // the new session created when the first event is recorded.\n if (!this.eventCache.isSessionSampled()) {\n return dispatch;\n }\n if (this.config.identityPoolId && this.config.guestRoleArn) {\n dispatch.setAwsCredentials(new BasicAuthentication(this.config)\n .ChainAnonymousCredentialsProvider);\n }\n else if (this.config.identityPoolId) {\n dispatch.setAwsCredentials(new EnhancedAuthentication(this.config)\n .ChainAnonymousCredentialsProvider);\n }\n return dispatch;\n };\n Orchestration.prototype.initPluginManager = function (applicationId, applicationVersion) {\n var BUILTIN_PLUGINS = this.constructBuiltinPlugins();\n var PLUGINS = __spreadArray(__spreadArray([], BUILTIN_PLUGINS, true), this.config.eventPluginsToLoad, true);\n var pluginContext = {\n applicationId: applicationId,\n applicationVersion: applicationVersion,\n config: this.config,\n record: this.eventCache.recordEvent,\n recordPageView: this.eventCache.recordPageView,\n getSession: this.eventCache.getSession,\n eventBus: this.eventBus\n };\n // Initialize PluginManager\n var pluginManager = new PluginManager(pluginContext);\n // Load page view plugin\n if (!this.config.disableAutoPageView) {\n pluginManager.addPlugin(new PageViewPlugin());\n }\n // Load plugins\n PLUGINS.forEach(function (p) {\n pluginManager.addPlugin(p);\n });\n return pluginManager;\n };\n Orchestration.prototype.constructBuiltinPlugins = function () {\n var plugins = [];\n var functor = this.telemetryFunctor();\n this.config.telemetries.forEach(function (type) {\n if (typeof type === 'string' && functor[type.toLowerCase()]) {\n plugins = __spreadArray(__spreadArray([], plugins, true), functor[type.toLowerCase()]({}), true);\n }\n else if (Array.isArray(type) &&\n functor[type[0].toLowerCase()]) {\n plugins = __spreadArray(__spreadArray([], plugins, true), functor[type[0].toLowerCase()](type[1]), true);\n }\n });\n return plugins;\n };\n Orchestration.prototype.getDataPlaneEndpoint = function (region, partialConfig) {\n return partialConfig.endpoint\n ? partialConfig.endpoint\n : DEFAULT_ENDPOINT.replace(DEFAULT_REGION, region);\n };\n /**\n * Returns a functor which maps data collection categories to\n * instantiated plugins.\n */\n Orchestration.prototype.telemetryFunctor = function () {\n var _a;\n return _a = {},\n _a[TelemetryEnum.Errors] = function (config) {\n return [new JsErrorPlugin(config)];\n },\n _a[TelemetryEnum.Performance] = function (config) {\n return [\n new NavigationPlugin(config),\n new ResourcePlugin(config),\n new WebVitalsPlugin()\n ];\n },\n _a[TelemetryEnum.Interaction] = function (config) {\n return [new DomEventPlugin(config)];\n },\n _a[TelemetryEnum.Http] = function (config) {\n return [new XhrPlugin(config), new FetchPlugin(config)];\n },\n _a;\n };\n return Orchestration;\n}());\nexport { Orchestration };\n","import { AwsRum } from 'aws-rum-web';\nimport logger from 'loglevel';\n\nlogger.setDefaultLevel(logger.levels.INFO);\n\nconst awsRumHelper = () => {\n try {\n const runtimeEnvironment = import.meta.env.VITE_RUNTIME_ENVIRONMENT || 'development';\n if (runtimeEnvironment === 'development') {\n return;\n }\n \n const config = {\n sessionSampleRate: 1,\n identityPoolId: \"us-east-1:50c6363b-7882-4513-8c0d-7aeca250f010\",\n endpoint: \"https://dataplane.rum.us-east-1.amazonaws.com\",\n telemetries: [\"performance\", \"errors\", \"http\"],\n allowCookies: true,\n enableXRay: false\n };\n\n const APPLICATION_ID = import.meta.env.VITE_RUM_APPLICATION_ID || undefined;\n if (!APPLICATION_ID) {\n return; // Cannot initialize AWS RUM without an application ID\n }\n \n const APPLICATION_VERSION = '1.0.0';\n const APPLICATION_REGION = 'us-east-1';\n\n const awsRum = new AwsRum(\n APPLICATION_ID,\n APPLICATION_VERSION,\n APPLICATION_REGION,\n config\n );\n \n return awsRum;\n } catch (error) {\n // Ignore errors thrown during CloudWatch RUM web client initialization\n }\n}\n\n/**\n * Ship Log level error messages to AWS RUM as errors (because we are capturing Js errors with try...catch...log)\n * @param awsRum {AwsRum}\n */\nconst logLevelSendErrorsToAwsRum = (awsRum) => {\n const originalFactory = logger.methodFactory;\n logger.methodFactory = (methodName, logLevel, loggerName) => {\n const rawMethod = originalFactory(methodName, logLevel, loggerName);\n\n return (...args) => {\n if (methodName === 'error') {\n const message = Array.from(args).map(x => `${x}`).join(' ');\n awsRum.recordError(message);\n }\n\n rawMethod(...args);\n };\n };\n logger.rebuild(); // Rebuild the logger to apply the new methodFactory\n}\n\n(() => {\n const awsRum = awsRumHelper();\n if (awsRum) {\n logLevelSendErrorsToAwsRum(awsRum);\n } \n window.awsRum = awsRum;\n})();"],"names":["HttpAuthLocation","EndpointURLScheme","FieldPosition","RequestHandlerProtocol","HttpRequest","options","request","req","cloned","cloneQuery","query","carry","paramName","param","HttpResponse","response","resp","escapeUri","uri","hexEncode","c","buildQueryString","parts","key","value","i","iLen","qsEntry","requestTimeout","timeoutInMs","resolve","reject","timeoutError","FetchHttpHandler$1","opts","abortSignal","requestTimeoutInMs","abortError","path","queryString","auth","username","password","port","method","url","requestOptions","fetchRequest","raceOfPromises","fetchHeaders","transformedHeaders","pair","body","alphabetByEncoding","alphabetByValue","start","limit","char","index","__awaiter","thisArg","_arguments","P","generator","adopt","fulfilled","step","e","rejected","result","__generator","_","t","f","y","g","verb","n","v","op","responseToJson","_a","responseToString","__assign","s","p","METHOD","CONTENT_TYPE","PROTOCOL","ACTION","VERSION","StsClient","config","_this","requestObject","encodedBody","STSRequest","xmlResponse","e_1","CRED_KEY","IDENTITY_KEY","SESSION_COOKIE_NAME","USER_COOKIE_NAME","CRED_RENEW_MS","INSTALL_MODULE","GET_ID_TARGET","GET_TOKEN_TARGET","GET_CREDENTIALS_TARGET","CognitoIdentityClient","getIdResponse","requestPayload","idRequest","getIdResponse_1","_b","tokenRequest","e_2","identityId","credentialRequest","AccessKeyId","Expiration","SecretKey","SessionToken","e_3","_c","target","payload","Authentication","credentials","region","FetchHttpHandler","renewalTime","__extends","extendStatics","d","b","__","BasicAuthentication","_super","retries","getOpenIdTokenResponse","EnhancedAuthentication","RUM_AMZ_PREFIX","RUM_AWS_PREFIX","HTTP_EVENT_TYPE","XRAY_TRACE_EVENT_TYPE","LCP_EVENT_TYPE","FID_EVENT_TYPE","CLS_EVENT_TYPE","PERFORMANCE_NAVIGATION_EVENT_TYPE","PERFORMANCE_RESOURCE_EVENT_TYPE","DOM_EVENT_TYPE","JS_ERROR_EVENT_TYPE","PAGE_VIEW_EVENT_TYPE","InternalPlugin","name","context","PluginManager","plugin","pluginId","updateWith","data","id","DOM_EVENT_PLUGIN_ID","defaultConfig","DomEventPlugin","event","elementInfo","events","domEvent","cssLocator","interactionId","eventData","eventType","eventListener","identifiedElementList","elementEventListenerList","cssLocatedElements","element","identifiedElement","elementEventListener","isObject","error","type","buildBaseJsErrorEvent","errorEvent","rumEvent","appendErrorPrimitiveDetails","appendErrorObjectDetails","stackTraceLength","isErrorPrimitive","errorEventToJsErrorEvent","JS_ERROR_EVENT_PLUGIN_ID","JsErrorPlugin","storeCookie","attributes","ttl","expires","cookie","getExpiryDate","getCookie","cookies","_i","cookies_1","split","getRandomValues","rnds8","rng","byteToHex","unsafeStringify","arr","offset","randomUUID","native","v4","buf","rnds","window","undefined","LIBVERSION","EMPTY","UNKNOWN","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","NAME","TYPE","VENDOR","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","UA_MAX_LENGTH","AMAZON","APPLE","ASUS","BLACKBERRY","BROWSER","CHROME","EDGE","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","MAC_OS","extend","regexes","extensions","mergedRegexes","enumerize","enums","has","str1","str2","lowerize","str","majorize","version","trim","len","rgxMapper","ua","arrays","j","k","q","matches","match","regex","props","strMapper","map","oldSafariMap","windowsVersionMap","UAParser","_navigator","_ua","_uach","_rgxmap","_isSelfNav","_browser","_cpu","_device","_engine","_os","module","exports","define","$","parser","prop","this","NIL_UUID","DESKTOP_DEVICE_TYPE","WEB_PLATFORM_TYPE","SESSION_START_EVENT_TYPE","SessionManager","appMonitorDetails","record","pageManager","sessionAttributes","userId","session","isFunction","funktion","logger","defineProperty","obj","enumerable","shimmer","wrap","nodule","wrapper","original","wrapped","massWrap","nodules","names","unwrap","massUnwrap","shimmer_1","MonkeyPatched","shimmer.wrap","patch","shimmer.unwrap","shouldPatch","VirtualPageLoadTimer","self","currTime","xhr","argsArray","input","init","item","page","virtualPageNavigationEvent","PageManager","pageId","currentPage","startTime","interactionTime","customPageAttributes","pageViewEvent","Topic","EventBus","topic","subscriber","list","message","list_1","EventBus$1","webClientVersion","EventCache","applicationDetails","eventBus","metaData","partialEvent","rumEvents","location","exclude","re","include","SHORT_TO_HEX","HEX_TO_SHORT","encodedByte","fromHex","encoded","out","toHex","bytes","__rest","__decorate","decorators","desc","r","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","__createBinding","o","m","k2","__exportStar","__values","__read","ar","__spread","__spreadArrays","il","a","jl","__await","__asyncGenerator","resume","settle","fulfill","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__importStar","mod","__importDefault","__classPrivateFieldGet","receiver","privateMap","__classPrivateFieldSet","fromUtf8","surrogatePair","toUtf8","decoded","byte","nextByte","byteValue","textEncoderFromUtf8","jsFromUtf8","textEncoderToUtf8","jsToUtf8","convertToBuffer_1","util_utf8_browser_1","require$$0","convertToBuffer","isEmptyData_1","isEmptyData","numToUint8_1","numToUint8","num","uint32ArrayFrom_1","uint32ArrayFrom","a_lookUpTable","return_array","a_index","require$$1","require$$2","require$$3","aws_crc32","tslib_1","util_1","index_1","AwsCrc32","toHash","crc32","Crc32","data_1","data_1_1","lookupTable","e_1_1","aws_crc32_1","Int64","number","remaining","negate","negative","HeaderMarshaller","headers","chunks","headerName","position","chunk","header","shortView","intView","longBytes","binView","binBytes","utf8Bytes","strView","strBytes","tsBytes","UUID_PATTERN","uuidBytes","nameLength","BOOLEAN_TAG","BYTE_TAG","SHORT_TAG","INT_TAG","LONG_TAG","binaryLength","BINARY_TAG","stringLength","STRING_TAG","TIMESTAMP_TAG","UUID_TAG","HEADER_VALUE_TYPE","normalizeProvider","promisified","toUint8Array","ALGORITHM_QUERY_PARAM","CREDENTIAL_QUERY_PARAM","AMZ_DATE_QUERY_PARAM","SIGNED_HEADERS_QUERY_PARAM","EXPIRES_QUERY_PARAM","SIGNATURE_QUERY_PARAM","TOKEN_QUERY_PARAM","AUTH_HEADER","AMZ_DATE_HEADER","DATE_HEADER","GENERATED_HEADERS","SIGNATURE_HEADER","SHA256_HEADER","TOKEN_HEADER","ALWAYS_UNSIGNABLE_HEADERS","PROXY_HEADER_PATTERN","SEC_HEADER_PATTERN","ALGORITHM_IDENTIFIER","EVENT_ALGORITHM_IDENTIFIER","UNSIGNED_PAYLOAD","MAX_CACHE_SIZE","KEY_TYPE_IDENTIFIER","MAX_PRESIGNED_TTL","signingKeyCache","cacheQueue","createScope","shortDate","service","getSigningKey","sha256Constructor","credsHash","hmac","cacheKey","signable","ctor","secret","hash","getCanonicalHeaders","unsignableHeaders","signableHeaders","canonical","canonicalHeaderName","getCanonicalQuery","keys","serialized","isArrayBuffer","arg","getPayloadHash","hashConstructor","hashCtor","hasHeader","soughtHeader","cloneRequest","rest","moveHeadersToQuery","lname","prepareRequest","iso8601","time","toDate","SignatureV4","applyChecksum","sha256","uriEscapePath","originalRequest","signingDate","expiresIn","unhoistableHeaders","signingRegion","signingService","longDate","formatDate","scope","canonicalHeaders","getCanonicalHeaderList","toSign","priorSignature","hashedPayload","hashedHeaders","stringToSign","signableMessage","signature","requestToSign","payloadHash","sortedHeaders","credentialScope","canonicalRequest","hashedRequest","normalizedPathSegments","pathSegment","normalizedPath","keyPromise","now","constants","RawSha256_1","constants_1","RawSha256","byteLength","bitsHashed","bufferView","undecoratedLength","buffer","state","state0","state1","state2","state3","state4","state5","state6","state7","u","t1_1","t2_1","t1","t2","jsSha256","Sha256","inner","bufferFromSecret","outer","bufferHash","SERVICE","CONTENT_TYPE_JSON","CONTENT_TYPE_TEXT","REQUEST_PRESIGN_ARGS","DataPlaneClient","putRumEventsRequest","httpResponse","contentType","serializedRequest","_d","_e","_f","serializeRequest","hashAndEncode","serializedRumEvents","serializeEvent","BeaconHttpHandler","queued","signedRequest","fetchFunction","hasReadableStream","holder","X_AMZN_TRACE_ID","isTraceIdHeaderEnabled","addXrayTraceIdHeader","matcher","is2xx","status","is4xx","is5xx","is429","isUrlAllowed","urlPattern","epochTime","createXRayTraceEventHttp","traced","http","resourceToUrlString","createXRayTraceEvent","traceEvent","generateSegmentId","generateTraceId","createXRaySubsegment","subsegment","requestInfoToHostname","addAmznTraceIdHeaderToInit","traceId","segmentId","getAmznTraceIdHeaderValue","addAmznTraceIdHeaderToHeaders","getTraceHeader","traceHeader","headerComponents","resource","hexTime","guid","randomBytes","uint8ArrayToHexString","hexString","RetryHttpHandler","handler","backoff","retriesLeft","milliseconds","NO_CRED_MSG","Dispatch","endpoint","eventCache","request_1","credentialProvider","ResourceType","InitiatorType","performanceKey","details","shuffle","getResourceFileType","initiatorType","ext","filename","extension_1","isLCPSupported","putRumEventsPattern","isPutRumEventsCall","endpointHost","defaultIgnore","entry","defaultPerformancePluginConfig","NAVIGATION_EVENT_PLUGIN_ID","NAVIGATION","LOAD","NavigationPlugin","navigationObserver","recordNavigation","entryData","origin","eventDataNavigationTimingLevel1","eventDataNavigationTimingLevel2","navData","RESOURCE_EVENT_PLUGIN_ID","RESOURCE","ResourcePlugin","recordAll","sample","duration","transferSize","l","h","T","E","S","L","C","w","M","x","A","F","B","D","R","H","N","O","ee","te","ne","WEB_VITAL_EVENT_PLUGIN_ID","WebVitalsPlugin","onLCP","metric","onFID","onCLS","attribution","XhrError","XHR_PLUGIN_ID","XhrPlugin","xhrDetails","endTime","clStr","cl","errorName","errorMessage","async","httpEvent","trace","FETCH_PLUGIN_ID","FetchPlugin","xRayTraceEvent","PAGE_EVENT_PLUGIN_ID","PageViewPlugin","title","retVal","PageIdFormatEnum","__spreadArray","to","from","pack","DEFAULT_REGION","DEFAULT_ENDPOINT","TelemetryEnum","defaultCookieAttributes","cookieAttributes","Orchestration","applicationId","applicationVersion","configCookieAttributes","partialConfig","allow","dispatch","BUILTIN_PLUGINS","PLUGINS","pluginContext","pluginManager","plugins","functor","awsRumHelper","runtimeEnvironment","APPLICATION_ID","APPLICATION_VERSION","APPLICATION_REGION","AwsRum","logLevelSendErrorsToAwsRum","awsRum","originalFactory","methodName","logLevel","loggerName","rawMethod","args"],"mappings":"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AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AAAA,MACpC;AAAA,MAAY;AAAA,MAAY;AAAA,MAAY;AA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94]}