{"version":3,"file":"shared.js","mappings":"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","sources":["webpack://js-utils/./node_modules/@hendersonengineers/signalr/HubClient.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/_base/SignalRConnection.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/_base/SignalRMessage.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/_base/constants.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/_base/getSignalRConnection.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/emit.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/types/Environment.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/AbortablePromise.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/abortableFetch.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/convertToContextUri/convertUrl.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/convertToContextUri/index.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/convertToContextUri/shouldConvert.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/getEnvironment.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/getEventEmitter.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/getUUID.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/isDevServer.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/isDevelopment.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/isInternalUrl.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/isProduction.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/isStage.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/isTesting.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/makeRequest/generateBody.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/makeRequest/generateHeaders.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/makeRequest/generateQueryString.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/makeRequest/generateUrl.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/makeRequest/getHTTPVerb.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/makeRequest/getOrigin.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/makeRequest/index.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/makeRequest/requestHasBody.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/makeRequest/types/HTTPVerb.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/makeRequest/validateRequestOptions.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/signalRConnectionIdsCache.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/toasty/events.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/toasty/index.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/tokenAuth.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/tryParseDate.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/trySerializeDate.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/valueTransformers/ValueTransformer.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/valueTransformers/parseISODates.js","webpack://js-utils/./node_modules/@hendersonengineers/signalr/node_modules/@hendersonengineers/utils/valueTransformers/serializeDates.js","webpack://js-utils/./node_modules/@hendersonengineers/utils/getEventEmitter.js","webpack://js-utils/./node_modules/@hendersonengineers/utils/signalRConnectionIdsCache.js","webpack://js-utils/./node_modules/@hendersonengineers/utils/tryParseDate.js","webpack://js-utils/./node_modules/@hendersonengineers/utils/valueTransformers/ValueTransformer.js","webpack://js-utils/./node_modules/@hendersonengineers/utils/valueTransformers/parseISODates.js"],"sourcesContent":["var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst signalr_1 = require(\"@microsoft/signalr\");\nconst getSignalRConnection_1 = __importDefault(require(\"./_base/getSignalRConnection\"));\nconst parseISODates_1 = __importDefault(require(\"@hendersonengineers/utils/valueTransformers/parseISODates\"));\nconst signalRConnectionIdsCache_1 = require(\"@hendersonengineers/utils/signalRConnectionIdsCache\");\nclass HubClient {\n constructor(hubName) {\n this.hubName = hubName;\n this.hub = (0, getSignalRConnection_1.default)(hubName);\n this.started = false;\n this.wrapperMapping = new Map();\n this.hub.connection.onreconnected(connectionId => {\n (0, signalRConnectionIdsCache_1.addConnectionId)(connectionId);\n if (this.currentConnectionId) {\n (0, signalRConnectionIdsCache_1.removeConnectionId)(this.currentConnectionId);\n }\n this.currentConnectionId = connectionId;\n });\n }\n async start() {\n if (!this.started) {\n this.hub.registerListener();\n this.started = true;\n }\n if (this.hub.connection.state !== signalr_1.HubConnectionState.Disconnected) {\n return;\n }\n try {\n await this.hub.connection.start();\n this.currentConnectionId = this.hub.connection.connectionId;\n (0, signalRConnectionIdsCache_1.addConnectionId)(this.currentConnectionId);\n }\n catch (err) {\n console.error(`SignalR: connection to ${this.hubName} could not be started. ${err}`);\n this.hub.unregisterListener();\n this.started = false;\n }\n }\n async stop() {\n if (this.started) {\n this.hub.unregisterListener();\n this.started = false;\n }\n if (this.hub.connection.state === signalr_1.HubConnectionState.Disconnected) {\n return;\n }\n if (this.hub.canStop) {\n try {\n await this.hub.connection.stop();\n if (this.currentConnectionId) {\n (0, signalRConnectionIdsCache_1.removeConnectionId)(this.currentConnectionId);\n this.currentConnectionId = null;\n }\n }\n catch (err) {\n console.error(`SignalR: connection to ${this.hubName} could not be stopped. ${err}`);\n this.hub.registerListener();\n this.started = true;\n }\n }\n }\n on(messageName, callback) {\n const wrapper = (...args) => {\n const dateParsedArgs = args.map(arg => (0, parseISODates_1.default)(arg));\n if (callback) {\n callback(...dateParsedArgs);\n }\n };\n this.wrapperMapping.set(callback, wrapper);\n this.hub.connection.on(messageName, wrapper);\n return this;\n }\n off(messageName, callback) {\n const wrapper = this.wrapperMapping.get(callback) || callback;\n this.wrapperMapping.delete(callback);\n this.hub.connection.off(messageName, wrapper);\n return this;\n }\n}\nexports.default = HubClient;\n//# sourceMappingURL=HubClient.js.map","Object.defineProperty(exports, \"__esModule\", { value: true });\nconst signalr_1 = require(\"@microsoft/signalr\");\nconst tokenAuth_1 = require(\"@hendersonengineers/utils/tokenAuth\");\nconst constants_1 = require(\"./constants\");\nclass SignalRConnection {\n constructor(hubName) {\n this.connection = this.createHubConnection(hubName);\n this.numListeners = 0;\n }\n get canStop() {\n return this.numListeners === 0;\n }\n registerListener() {\n this.numListeners++;\n }\n unregisterListener() {\n this.numListeners--;\n }\n createHubConnection(hubName) {\n return new signalr_1.HubConnectionBuilder()\n .withUrl(`${constants_1.SIGNALR_URL}/hubs/${hubName}`, {\n accessTokenFactory: async () => {\n let accessToken = (0, tokenAuth_1.getAccessToken)();\n if (!accessToken) {\n accessToken = await (0, tokenAuth_1.getNewAccessToken)(true);\n }\n return accessToken;\n }\n })\n .withAutomaticReconnect({\n nextRetryDelayInMilliseconds: ({ elapsedMilliseconds, previousRetryCount }) => {\n console.log(previousRetryCount, elapsedMilliseconds);\n if (previousRetryCount === 0) {\n return 1; // retry immediately after a disconnect\n }\n if (previousRetryCount > 0 && elapsedMilliseconds < 35000) {\n return 3000; // if the initial retry attempt fails, retry every 3 seconds for the next 35 seconds\n }\n return 60000; // after the first 35 seconds, retry every minute until reconnected\n }\n })\n .withKeepAliveInterval(60000) // this should match KeepAliveInterval in the server config\n .withServerTimeout(120000) // this should match ClientTimeoutInterval in the server config\n .build();\n }\n}\nexports.default = SignalRConnection;\n//# sourceMappingURL=SignalRConnection.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst makeRequest_1 = __importDefault(require(\"@hendersonengineers/utils/makeRequest\"));\nconst constants_1 = require(\"./constants\");\nclass SignalRMessage {\n constructor(hubName, messageName, data) {\n this.hubName = hubName;\n this.messageName = messageName;\n this.data = data;\n }\n toAll() {\n return (0, makeRequest_1.default)(this.getRequestOptions('all'));\n }\n toOthers() {\n return (0, makeRequest_1.default)(this.getRequestOptions('others'));\n }\n toCaller() {\n return (0, makeRequest_1.default)(this.getRequestOptions('caller'));\n }\n toUsers(...usernames) {\n return (0, makeRequest_1.default)(this.getRequestOptions(usernames));\n }\n getRequestOptions(to) {\n const input = {\n hubName: this.hubName,\n messageName: this.messageName,\n data: this.data\n };\n let endpoint;\n if (typeof to === 'string') {\n endpoint = 'Emit';\n input.to = to;\n }\n else {\n endpoint = 'EmitToUsers';\n input.toUsernames = to;\n }\n return {\n action: 'Create',\n origin: constants_1.SIGNALR_URL,\n route: `API/${endpoint}`,\n data: input\n };\n }\n}\nexports.default = SignalRMessage;\n//# sourceMappingURL=SignalRMessage.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SIGNALR_URL = void 0;\nconst convertToContextUri_1 = __importDefault(require(\"@hendersonengineers/utils/convertToContextUri\"));\nexports.SIGNALR_URL = (0, convertToContextUri_1.default)('https://signalr.hendersonengineers.com');\n//# sourceMappingURL=constants.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst SignalRConnection_1 = __importDefault(require(\"./SignalRConnection\"));\nconst CACHE_KEY_PREFIX = 'henderson-signalr-connections-';\nfunction getSignalRConnection(hubName) {\n let connection = getCachedSignalRConnection(hubName);\n if (!connection) {\n connection = new SignalRConnection_1.default(hubName);\n cacheSignalRConnection(hubName, connection);\n }\n return connection;\n}\nfunction getCachedSignalRConnection(hubName) {\n return window[getCacheKey(hubName)];\n}\nfunction cacheSignalRConnection(hubName, connection) {\n window[getCacheKey(hubName)] = connection;\n}\nfunction getCacheKey(hubName) {\n return `${CACHE_KEY_PREFIX}-${hubName}`;\n}\nexports.default = getSignalRConnection;\n//# sourceMappingURL=getSignalRConnection.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst SignalRMessage_1 = __importDefault(require(\"./_base/SignalRMessage\"));\nfunction emit(hub, message, ...data) {\n return new SignalRMessage_1.default(hub, message, data);\n}\nexports.default = emit;\n//# sourceMappingURL=emit.js.map","Object.defineProperty(exports, \"__esModule\", { value: true });\nvar Environment;\n(function (Environment) {\n Environment[Environment[\"Development\"] = 2] = \"Development\";\n Environment[Environment[\"Stage\"] = 3] = \"Stage\";\n Environment[Environment[\"Production\"] = 4] = \"Production\";\n})(Environment || (Environment = {}));\nexports.default = Environment;\n//# sourceMappingURL=Environment.js.map","Object.defineProperty(exports, \"__esModule\", { value: true });\nclass AbortablePromise {\n get [Symbol.toStringTag]() {\n return 'promise';\n }\n constructor(executorOrPromise, aborter) {\n this.promise = null;\n this.controller = null;\n this.signal = null;\n this.aborter = null;\n if ('then' in executorOrPromise) {\n if (!aborter) {\n throw new Error('You must provide an `aborter` when supplying a `promise`');\n }\n this.promise = executorOrPromise;\n this.aborter = aborter;\n }\n else {\n if (aborter) {\n throw new Error('You cannot provide an `aborter` when supplying an `executor`');\n }\n this.controller = new AbortController();\n this.signal = this.controller.signal;\n this.promise = new Promise((resolve, reject) => {\n this.signal.addEventListener('abort', () => {\n reject(new DOMException('Aborted', 'AbortError'));\n });\n new Promise(executorOrPromise).then(resolve).catch(reject);\n });\n }\n }\n /**\n * Cancels the current network request. This will result in a DOMException with\n * the name 'AbortError' being thrown, so handle it accordingly. You can use the\n * `wasAborted` util to help in your catch handler.\n */\n abort() {\n if (this.aborter) {\n this.aborter();\n }\n else if (this.controller) {\n this.controller.abort();\n }\n }\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then(onfulfilled, onrejected) {\n const promise = this.promise.then(onfulfilled, onrejected);\n return new AbortablePromise(promise, () => this.abort());\n }\n /**\n * Attaches a callback for only the rejection of the Promise.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of the callback.\n */\n catch(onrejected) {\n const promise = this.promise.catch(onrejected);\n return new AbortablePromise(promise, () => this.abort());\n }\n /**\n * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The\n * resolved value cannot be modified from the callback.\n * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).\n * @returns A Promise for the completion of the callback.\n */\n finally(onfinally) {\n const promise = this.promise.finally(onfinally);\n return new AbortablePromise(promise, () => this.abort());\n }\n}\nexports.default = AbortablePromise;\n//# sourceMappingURL=AbortablePromise.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst AbortablePromise_1 = __importDefault(require(\"./AbortablePromise\"));\nfunction abortableFetch(input, init) {\n const controller = new AbortController();\n const signal = controller.signal;\n if (init) {\n init.signal = signal;\n }\n else {\n init = {\n signal: signal\n };\n }\n const aborter = () => controller.abort();\n return new AbortablePromise_1.default(fetch(input, init), aborter);\n}\nexports.default = abortableFetch;\n//# sourceMappingURL=abortableFetch.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Environment_1 = __importDefault(require(\"@hendersonengineers/types/Environment\"));\nconst isDevelopment_1 = require(\"../isDevelopment\");\nconst isStage_1 = require(\"../isStage\");\nconst isProduction_1 = require(\"../isProduction\");\nfunction convertUrl(url, targetEnv) {\n switch (targetEnv) {\n case Environment_1.default.Development:\n return url\n .replace(isDevelopment_1.DEVELOPMENT_PATTERN, 'hendersonengineers.com') //this ensures that replacing the production pattern below works correctly and we don't double-convert any dev urls.\n .replace(isStage_1.STAGE_PATTERN, 'dev.hendersonengineers.com')\n .replace(isProduction_1.OLD_PRODUCTION_PATTERN, 'dev.hendersonengineers.com')\n .replace(isProduction_1.PRODUCTION_PATTERN, 'dev.hendersonengineers.com');\n case Environment_1.default.Stage:\n return url\n .replace(isDevelopment_1.DEVELOPMENT_PATTERN, 'hendersonstage.com')\n .replace(isProduction_1.OLD_PRODUCTION_PATTERN, 'hendersonstage.com')\n .replace(isProduction_1.PRODUCTION_PATTERN, 'hendersonstage.com');\n case Environment_1.default.Production:\n return url\n .replace(isDevelopment_1.DEVELOPMENT_PATTERN, 'hendersonengineers.com')\n .replace(isStage_1.STAGE_PATTERN, 'hendersonengineers.com');\n }\n return url;\n}\nexports.default = convertUrl;\n//# sourceMappingURL=convertUrl.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst shouldConvert_1 = __importDefault(require(\"./shouldConvert\"));\nconst convertUrl_1 = __importDefault(require(\"./convertUrl\"));\nconst getEnvironment_1 = __importDefault(require(\"../getEnvironment\"));\nfunction convertToContextUri(url) {\n if (!(0, shouldConvert_1.default)(url)) {\n return url;\n }\n const targetEnv = (0, getEnvironment_1.default)();\n return (0, convertUrl_1.default)(url, targetEnv);\n}\nexports.default = convertToContextUri;\n//# sourceMappingURL=index.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst isInternalUrl_1 = __importDefault(require(\"../isInternalUrl\"));\nfunction shouldConvert(url) {\n return (\n // url must not be null\n !!url &&\n // don't convert these urls\n !/concur\\./i.test(url) &&\n !/ultipro\\./i.test(url) &&\n // make sure it's a henderson url\n (0, isInternalUrl_1.default)(url));\n}\nexports.default = shouldConvert;\n//# sourceMappingURL=shouldConvert.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Environment_1 = __importDefault(require(\"@hendersonengineers/types/Environment\"));\nconst isDevelopment_1 = __importDefault(require(\"./isDevelopment\"));\nconst isStage_1 = __importDefault(require(\"./isStage\"));\nconst isProduction_1 = __importDefault(require(\"./isProduction\"));\nconst ENVIRONMENT_CACHE_KEY = 'HENDERSON_CACHE_CURRENT_ENVIRONMENT';\nfunction getEnvironment(url) {\n if (!url) {\n if (!window[ENVIRONMENT_CACHE_KEY]) {\n window[ENVIRONMENT_CACHE_KEY] = _getEnvironment(window.location.href);\n }\n return window[ENVIRONMENT_CACHE_KEY];\n }\n return _getEnvironment(url);\n}\nfunction _getEnvironment(url) {\n if ((0, isDevelopment_1.default)(url)) {\n return Environment_1.default.Development;\n }\n if ((0, isStage_1.default)(url)) {\n return Environment_1.default.Stage;\n }\n if ((0, isProduction_1.default)(url)) {\n return Environment_1.default.Production;\n }\n return 1;\n}\nexports.default = getEnvironment;\n//# sourceMappingURL=getEnvironment.js.map","Object.defineProperty(exports, \"__esModule\", { value: true });\nexports.EventEmitter = void 0;\nfunction getEventEmitter(name = '') {\n const cacheKey = `henderson-event-emitter_${name}`;\n let eventEmitter = window[cacheKey];\n if (!eventEmitter) {\n window[cacheKey] = new EventEmitter();\n eventEmitter = window[cacheKey];\n }\n return eventEmitter;\n}\nexports.default = getEventEmitter;\nclass EventEmitter {\n constructor() {\n this.events = {};\n }\n emit(eventName, ...data) {\n setTimeout(() => {\n const event = this.events[eventName];\n if (event) {\n event.forEach(fn => {\n if (data && data.length > 0) {\n fn.call(null, ...data);\n }\n else {\n fn();\n }\n });\n }\n }, 1);\n }\n subscribe(eventName, fn) {\n if (!this.events[eventName]) {\n this.events[eventName] = [];\n }\n this.events[eventName].push(fn);\n return () => {\n this.events[eventName] = this.events[eventName].filter(eventFn => fn !== eventFn);\n };\n }\n}\nexports.EventEmitter = EventEmitter;\n//# sourceMappingURL=getEventEmitter.js.map","Object.defineProperty(exports, \"__esModule\", { value: true });\nfunction getUUID() {\n var d = Date.now();\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.floor((d + Math.random() * 16) % 16);\n d = Math.floor(d / 16);\n return (c === 'x' ? r : (r & 0x7) | 0x8).toString(16);\n });\n}\nexports.default = getUUID;\n//# sourceMappingURL=getUUID.js.map","Object.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEV_SERVER_PATTERN = void 0;\nexports.DEV_SERVER_PATTERN = /localhost[:]?/i;\nfunction isDevServer(url) {\n const urlToTest = url || window.location.host;\n return exports.DEV_SERVER_PATTERN.test(urlToTest);\n}\nexports.default = isDevServer;\n//# sourceMappingURL=isDevServer.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEVELOPMENT_PATTERN = void 0;\nconst isDevServer_1 = __importDefault(require(\"./isDevServer\"));\nexports.DEVELOPMENT_PATTERN = /dev\\.hendersonengineers\\.com/i;\nfunction isDevelopment(url) {\n const urlToTest = url || window.location.host;\n return (0, isDevServer_1.default)(urlToTest) || exports.DEVELOPMENT_PATTERN.test(urlToTest);\n}\nexports.default = isDevelopment;\n//# sourceMappingURL=isDevelopment.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst getEnvironment_1 = __importDefault(require(\"./getEnvironment\"));\nfunction isInternalUrl(url) {\n const env = (0, getEnvironment_1.default)(url);\n return env > 1;\n}\nexports.default = isInternalUrl;\n//# sourceMappingURL=isInternalUrl.js.map","Object.defineProperty(exports, \"__esModule\", { value: true });\nexports.PRODUCTION_PATTERN = exports.OLD_PRODUCTION_PATTERN = void 0;\nexports.OLD_PRODUCTION_PATTERN = /hei-eng\\.com/i;\nexports.PRODUCTION_PATTERN = /hendersonengineers\\.com/i;\nfunction isProduction(url) {\n const urlToTest = url || window.location.host;\n return exports.OLD_PRODUCTION_PATTERN.test(urlToTest) || exports.PRODUCTION_PATTERN.test(urlToTest);\n}\nexports.default = isProduction;\n//# sourceMappingURL=isProduction.js.map","Object.defineProperty(exports, \"__esModule\", { value: true });\nexports.STAGE_PATTERN = void 0;\nexports.STAGE_PATTERN = /hendersonstage\\.com/i;\nfunction isStage(url) {\n const urlToTest = url || window.location.host;\n return exports.STAGE_PATTERN.test(urlToTest);\n}\nexports.default = isStage;\n//# sourceMappingURL=isStage.js.map","Object.defineProperty(exports, \"__esModule\", { value: true });\nfunction isTesting() {\n let testing = false;\n try {\n testing = __TESTING__;\n }\n catch (_a) { }\n return testing;\n}\nexports.default = isTesting;\n//# sourceMappingURL=isTesting.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst requestHasBody_1 = __importDefault(require(\"./requestHasBody\"));\nconst serializeDates_1 = __importDefault(require(\"../valueTransformers/serializeDates\"));\nfunction generateBody(requestOptions) {\n const { action, data } = requestOptions;\n if (!(0, requestHasBody_1.default)(action)) {\n return null;\n }\n let body = null;\n if (action === 'Upload') {\n if (data instanceof FormData) {\n body = data;\n }\n else {\n body = new FormData();\n for (const file of data) {\n body.append('files[]', file, file.name);\n }\n }\n }\n else {\n const keys = data ? Object.keys(data) : [];\n const { includeTime } = requestOptions.requestOptions || {};\n const dataToPass = (0, serializeDates_1.default)(data, { includeTime });\n body = JSON.stringify(keys.length === 1 ? dataToPass[keys[0]] : dataToPass);\n }\n return body;\n}\nexports.default = generateBody;\n//# sourceMappingURL=generateBody.js.map","Object.defineProperty(exports, \"__esModule\", { value: true });\nconst signalRConnectionIdsCache_1 = require(\"../signalRConnectionIdsCache\");\nconst tokenAuth_1 = require(\"../tokenAuth\");\nfunction generateHeaders(options) {\n const { action, headers } = options;\n const finalHeaders = new Headers();\n if (action !== 'Upload') {\n finalHeaders.set('Content-Type', 'application/json');\n }\n finalHeaders.set('Accept', 'application/json');\n if (!options.doNotUserBearerAuth) {\n const token = (0, tokenAuth_1.getAccessToken)();\n if (!!token) {\n finalHeaders.set('Authorization', 'Bearer ' + token);\n }\n }\n const usernameHashInput = document.getElementById('__UsernameHash');\n if (usernameHashInput) {\n finalHeaders.set('User', usernameHashInput.value);\n }\n const signalRConnectionIds = (0, signalRConnectionIdsCache_1.getAllConnectionIds)();\n if (signalRConnectionIds.length > 0) {\n finalHeaders.set('SignalRConnectionIds', signalRConnectionIds.join('|'));\n }\n if (headers) {\n headers.forEach((value, name) => {\n finalHeaders.set(name, value);\n });\n }\n return finalHeaders;\n}\nexports.default = generateHeaders;\n//# sourceMappingURL=generateHeaders.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst trySerializeDate_1 = __importDefault(require(\"../trySerializeDate\"));\nfunction generateQueryString(data, includeTime) {\n if (!data) {\n return '';\n }\n return ('?' +\n getEncodedKeyValuePairs(data, includeTime)\n .map(kvp => kvp[0] + '=' + (kvp[1] === null ? '' : kvp[1]))\n .join('&'));\n}\nfunction getEncodedKeyValuePairs(data, includeTime, parentKeys) {\n const keys = Object.keys(data);\n if (!parentKeys) {\n parentKeys = [];\n }\n let keyValuePairs = [];\n keys.forEach(key => {\n if (data[key] === null || data[key] === undefined) {\n keyValuePairs.push([getEncodedKey(parentKeys, key), null]);\n }\n else if (data[key].constructor === Object) {\n const arrayParentKeys = parentKeys.slice(0);\n arrayParentKeys.push(key);\n keyValuePairs = keyValuePairs.concat(getEncodedKeyValuePairs(data[key], includeTime, arrayParentKeys));\n }\n else if (data[key].constructor === Array) {\n for (let i = 0; i < data[key].length; i++) {\n if (data[key][i] === null || data[key][i] === undefined) {\n keyValuePairs.push([getEncodedKey(parentKeys, key, i), 'null']);\n }\n else if (data[key][i].constructor === Object) {\n const arrayParentKeys = parentKeys.slice(0);\n arrayParentKeys.push(key);\n arrayParentKeys.push(i + '');\n keyValuePairs = keyValuePairs.concat(getEncodedKeyValuePairs(data[key][i], includeTime, arrayParentKeys));\n }\n else {\n keyValuePairs.push([getEncodedKey(parentKeys, key, i), getEncodedValue(data[key][i], includeTime)]);\n }\n }\n }\n else {\n keyValuePairs.push([getEncodedKey(parentKeys, key), getEncodedValue(data[key], includeTime)]);\n }\n });\n return keyValuePairs;\n}\nfunction getEncodedKey(parentKeys, key, arrayIndex) {\n let parentChain = '';\n if (parentKeys.length > 0) {\n parentChain = parentKeys.map((parentKey, i) => (i === 0 ? parentKey : '[' + parentKey + ']')).join('');\n }\n let newKey = parentChain + (parentChain ? '[' + key + ']' : key);\n if (arrayIndex !== undefined) {\n newKey += '[' + arrayIndex + ']';\n }\n return encodeURIComponent(newKey);\n}\nfunction getEncodedValue(value, includeTime) {\n let val = (0, trySerializeDate_1.default)(value, { includeTime });\n return encodeURIComponent(val);\n}\nexports.default = generateQueryString;\n//# sourceMappingURL=generateQueryString.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst requestHasBody_1 = __importDefault(require(\"./requestHasBody\"));\nconst generateQueryString_1 = __importDefault(require(\"./generateQueryString\"));\nconst getOrigin_1 = __importDefault(require(\"./getOrigin\"));\nfunction generateUrl(requestOptions) {\n const { action, route, data } = requestOptions;\n const { includeTime } = requestOptions.requestOptions || {};\n const origin = (0, getOrigin_1.default)(requestOptions);\n let url = origin + '/' + route;\n if (!(0, requestHasBody_1.default)(action)) {\n url = url + (0, generateQueryString_1.default)(data, includeTime);\n }\n if (url.length > 2048) {\n console.warn(`The generated URL is potentially too long. Maximum compatibility with different clients/servers requires staying under 2KB, although in practice these days it should largely work up to at least 2MB if not more.\n The current URL is ${url.length} characters long: ${url}\n You should consider switching to a POST request if you cannot ensure the url will be shorter.`);\n }\n return url;\n}\nexports.default = generateUrl;\n//# sourceMappingURL=generateUrl.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst HTTPVerb_1 = __importDefault(require(\"./types/HTTPVerb\"));\nfunction getHTTPVerb(action) {\n switch (action) {\n case 'Create':\n case 'Upload':\n return HTTPVerb_1.default.POST;\n case 'Get':\n return HTTPVerb_1.default.GET;\n case 'Update':\n return HTTPVerb_1.default.PUT;\n case 'Delete':\n return HTTPVerb_1.default.DELETE;\n case 'Check':\n return HTTPVerb_1.default.HEAD;\n }\n}\nexports.default = getHTTPVerb;\n//# sourceMappingURL=getHTTPVerb.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst convertToContextUri_1 = __importDefault(require(\"../convertToContextUri\"));\nfunction getOrigin(requestOptions) {\n const { origin = 'https://inet.hendersonengineers.com' } = requestOptions;\n return (0, convertToContextUri_1.default)(origin);\n}\nexports.default = getOrigin;\n//# sourceMappingURL=getOrigin.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst generateUrl_1 = __importDefault(require(\"./generateUrl\"));\nconst generateBody_1 = __importDefault(require(\"./generateBody\"));\nconst getHTTPVerb_1 = __importDefault(require(\"./getHTTPVerb\"));\nconst generateHeaders_1 = __importDefault(require(\"./generateHeaders\"));\nconst abortableFetch_1 = __importDefault(require(\"../abortableFetch\"));\nconst validateRequestOptions_1 = __importDefault(require(\"./validateRequestOptions\"));\nconst isTesting_1 = __importDefault(require(\"../isTesting\"));\nconst AbortablePromise_1 = __importDefault(require(\"../AbortablePromise\"));\nconst parseISODates_1 = __importDefault(require(\"../valueTransformers/parseISODates\"));\nconst tokenAuth_1 = require(\"../tokenAuth\");\nfunction makeRequest(requestOptions) {\n (0, validateRequestOptions_1.default)(requestOptions);\n const { timeout, mock } = requestOptions;\n if ((0, isTesting_1.default)()) {\n const mockValue = mock || null;\n return new AbortablePromise_1.default(Promise.resolve(mockValue), () => { });\n }\n const request = sendRequest(requestOptions).then(response => processResponse(response, requestOptions));\n request.catch(err => {\n if (err.message === '401') {\n (0, tokenAuth_1.handleAuthSite401Response)();\n }\n });\n if (timeout) {\n window.setTimeout(() => request.abort(), timeout);\n }\n return request;\n}\nfunction sendRequest(requestOptions) {\n const url = (0, generateUrl_1.default)(requestOptions);\n const headers = (0, generateHeaders_1.default)(requestOptions);\n const body = (0, generateBody_1.default)(requestOptions);\n const fetchOptions = {\n method: (0, getHTTPVerb_1.default)(requestOptions.action),\n headers,\n body,\n credentials: 'include'\n };\n if (requestOptions.noCors) {\n fetchOptions.mode = 'no-cors';\n }\n return (0, abortableFetch_1.default)(url, fetchOptions).then(response => handle401(response, requestOptions));\n}\nasync function handle401(response, requestOptions) {\n if (response.status !== 401) {\n return response;\n }\n if (requestOptions.doNotRetry) {\n throw Error('401');\n }\n await (0, tokenAuth_1.getNewAccessToken)(true).then(token => {\n (0, tokenAuth_1.saveToken)(token);\n });\n return sendRequest(Object.assign(Object.assign({}, requestOptions), { doNotRetry: true }));\n}\nasync function processResponse(response, requestOptions) {\n const responseContentType = response.headers.get('content-type');\n const isResponseJSON = responseContentType && /application\\/json/i.test(responseContentType);\n if (response.ok) {\n if (isResponseJSON) {\n let responseValue = await response.json();\n const { keepDatesAsStrings } = requestOptions.responseOptions || {};\n // apply any response filters here\n responseValue = (0, parseISODates_1.default)(responseValue, { keepDatesAsStrings });\n return responseValue;\n }\n if (response.status === 204) {\n return null;\n }\n return getBlobWithFileName(response);\n }\n if (response.type === 'opaque') {\n // special case for \"no-cors\" requests. You aren't allowed to read the response for those, so just don't do anything\n return;\n }\n // we've got an error, so normalize it, then throw it\n if (isResponseJSON) {\n const error = await response.json();\n if (error.hasOwnProperty('TimeStamp')) {\n const serviceError = new Error(error.Message);\n serviceError.name = 'ServiceError';\n serviceError.stack = `${serviceError.name}: ${serviceError.message}\\n${error.StackTrace}`;\n serviceError.data = error;\n throw serviceError;\n }\n const err = new Error(error.ExceptionMessage || error.Message || error.exceptionMessage || error.message);\n err.data = error;\n throw err;\n }\n else if (responseContentType && /text\\/plain/i.test(responseContentType)) {\n const errorMessage = await response.text();\n throw new Error(errorMessage);\n }\n throw new Error('ERROR: Network response was ' + response.status + ' - ' + response.statusText);\n}\nfunction getBlobWithFileName(response) {\n const responseContentDisposition = response.headers.get('content-disposition');\n let fileName = '';\n if (responseContentDisposition && responseContentDisposition.indexOf('attachment') > -1) {\n var filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n var matches = filenameRegex.exec(responseContentDisposition);\n if (matches != null && matches[1]) {\n fileName = matches[1].replace(/['\"]/g, '');\n }\n }\n return response.blob().then(blob => ({ blob, fileName }));\n}\nexports.default = makeRequest;\n//# sourceMappingURL=index.js.map","Object.defineProperty(exports, \"__esModule\", { value: true });\nfunction requestHasBody(action) {\n return action !== 'Get' && action !== 'Check';\n}\nexports.default = requestHasBody;\n//# sourceMappingURL=requestHasBody.js.map","Object.defineProperty(exports, \"__esModule\", { value: true });\nvar HTTPVerb;\n(function (HTTPVerb) {\n HTTPVerb[\"POST\"] = \"POST\";\n HTTPVerb[\"GET\"] = \"GET\";\n HTTPVerb[\"PUT\"] = \"PUT\";\n HTTPVerb[\"DELETE\"] = \"DELETE\";\n HTTPVerb[\"HEAD\"] = \"HEAD\";\n})(HTTPVerb || (HTTPVerb = {}));\nexports.default = HTTPVerb;\n//# sourceMappingURL=HTTPVerb.js.map","Object.defineProperty(exports, \"__esModule\", { value: true });\nfunction validateRequestOptions(requestOptions) {\n const { data } = requestOptions;\n const dataIsObject = data instanceof Object;\n const dataIsArray = data instanceof Array;\n if (data != null && (!dataIsObject || dataIsArray)) {\n throw new Error(\"[makeRequest] 'data' must be an object with keys and values\");\n }\n}\nexports.default = validateRequestOptions;\n//# sourceMappingURL=validateRequestOptions.js.map","Object.defineProperty(exports, \"__esModule\", { value: true });\nexports.getAllConnectionIds = exports.removeConnectionId = exports.addConnectionId = void 0;\nconst CACHE_KEY = 'henderson-signalr-connectionids';\nfunction addConnectionId(connectionId) {\n getConnectionIdCache().add(connectionId);\n}\nexports.addConnectionId = addConnectionId;\nfunction removeConnectionId(connectionId) {\n getConnectionIdCache().delete(connectionId);\n}\nexports.removeConnectionId = removeConnectionId;\nfunction getAllConnectionIds() {\n return [...getConnectionIdCache()];\n}\nexports.getAllConnectionIds = getAllConnectionIds;\nfunction getConnectionIdCache() {\n let connectionIds = window[CACHE_KEY];\n if (!connectionIds) {\n connectionIds = new Set();\n window[CACHE_KEY] = connectionIds;\n }\n return connectionIds;\n}\n//# sourceMappingURL=signalRConnectionIdsCache.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.onHideToasty = exports.onAddToasty = exports.hideToasty = exports.addToasty = void 0;\nconst getEventEmitter_1 = __importDefault(require(\"../getEventEmitter\"));\nconst EVENT_EMITTER_ID = 'henderson-toasty-event-emitter';\nvar Events;\n(function (Events) {\n Events[\"NEW_NOTIFICATION\"] = \"henderson-toasty-new-notification-event\";\n Events[\"HIDE_NOTIFICATION\"] = \"henderson-toasty-hide-notification-event\";\n})(Events || (Events = {}));\nconst eventEmitter = (0, getEventEmitter_1.default)(EVENT_EMITTER_ID);\nfunction addToasty(toasty) {\n eventEmitter.emit(Events.NEW_NOTIFICATION, toasty);\n}\nexports.addToasty = addToasty;\nfunction hideToasty(toasty) {\n eventEmitter.emit(Events.HIDE_NOTIFICATION, toasty);\n}\nexports.hideToasty = hideToasty;\nfunction onAddToasty(handler) {\n return eventEmitter.subscribe(Events.NEW_NOTIFICATION, handler);\n}\nexports.onAddToasty = onAddToasty;\nfunction onHideToasty(handler) {\n return eventEmitter.subscribe(Events.HIDE_NOTIFICATION, handler);\n}\nexports.onHideToasty = onHideToasty;\n//# sourceMappingURL=events.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.custom = exports.error = exports.success = exports.warning = exports.info = void 0;\nconst events_1 = require(\"./events\");\nconst getUUID_1 = __importDefault(require(\"../getUUID\"));\n/**\n * @param content can be `string | JSX.Element`\n */\nfunction info(content, options) {\n return internalAddToasty('info', content, options);\n}\nexports.info = info;\n/**\n * @param content can be `string | JSX.Element`\n */\nfunction warning(content, options) {\n return internalAddToasty('warning', content, options);\n}\nexports.warning = warning;\n/**\n * @param content can be `string | JSX.Element`\n */\nfunction success(content, options) {\n return internalAddToasty('success', content, options);\n}\nexports.success = success;\n/**\n * @param content can be `string | JSX.Element`\n */\nfunction error(content, options) {\n return internalAddToasty('error', content, options);\n}\nexports.error = error;\n/**\n * @param content can be `string | JSX.Element`\n */\nfunction custom(content, options) {\n return internalAddToasty('custom', content, options);\n}\nexports.custom = custom;\nfunction internalAddToasty(type, content, options) {\n const toasty = Object.assign(Object.assign({ content }, getDefaultedOptions(options)), { type });\n (0, events_1.addToasty)(toasty);\n return () => (0, events_1.hideToasty)(toasty);\n}\nfunction getDefaultedOptions(options) {\n const opts = Object.assign({}, options);\n if (!opts.id) {\n opts.id = (0, getUUID_1.default)();\n }\n if (!opts.manuallyHide && !opts.duration) {\n opts.duration = 3800;\n }\n return opts;\n}\n//# sourceMappingURL=index.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shouldAcquireAccessToken = exports.handleAuthSite401Response = exports.getNewAccessToken = exports.getAccessToken = exports.getSavedToken = exports.saveToken = exports.TOKEN_KEY = exports.TOKEN_INPUT_ID = void 0;\nconst js_cookie_1 = __importDefault(require(\"js-cookie\"));\nconst convertToContextUri_1 = __importDefault(require(\"./convertToContextUri\"));\nconst isDevServer_1 = __importDefault(require(\"./isDevServer\"));\nconst isDevelopment_1 = __importDefault(require(\"./isDevelopment\"));\nconst toasty_1 = require(\"./toasty\");\nexports.TOKEN_INPUT_ID = '__accessToken';\nexports.TOKEN_KEY = 'HendersonAccessToken';\nfunction saveToken(token) {\n localStorage.setItem(exports.TOKEN_KEY, token);\n}\nexports.saveToken = saveToken;\nfunction getSavedToken() {\n return localStorage.getItem(exports.TOKEN_KEY);\n}\nexports.getSavedToken = getSavedToken;\nfunction getAccessToken() {\n if (shouldAcquireAccessToken()) {\n return getTokenFromInput() || getSavedToken();\n }\n return '';\n}\nexports.getAccessToken = getAccessToken;\nfunction getTokenFromInput() {\n const el = document.getElementById(exports.TOKEN_INPUT_ID);\n if (el && el.value) {\n const token = el.value;\n saveToken(token);\n el.value = '';\n return token;\n }\n return null;\n}\nfunction getNewAccessToken(forceRefresh = false) {\n return fetch((0, convertToContextUri_1.default)('https://auth.hendersonengineers.com/API/Token?forceRefresh=' + forceRefresh), getFetchOptions()).then(async (r) => {\n if (r.ok)\n return r.json();\n throw new Error(await r.text());\n });\n}\nexports.getNewAccessToken = getNewAccessToken;\nfunction getFetchOptions() {\n const headers = new Headers();\n headers.set('Content-Type', 'application/json');\n headers.set('Accept', 'application/json');\n const usernameHashInput = document.getElementById('__UsernameHash');\n if (usernameHashInput) {\n headers.set('User', usernameHashInput.value);\n }\n return {\n method: 'GET',\n headers: headers,\n credentials: 'include'\n };\n}\nfunction handleAuthSite401Response() {\n // On localhost specifically, we can't check for the FormsMetadata cookie to know if the user should be acquiring access tokens.\n // So instead, we need to make a quick API call to check that.\n if ((0, isDevServer_1.default)()) {\n fetch((0, convertToContextUri_1.default)('https://inet.hendersonengineers.com/Home/API/ShouldUseAccessTokens'), getFetchOptions())\n .then(async (r) => {\n if (!r.ok || (await r.json())) {\n showSessionExpiredMessage();\n }\n })\n .catch(e => {\n showSessionExpiredMessage();\n });\n }\n else {\n // If it's not localhost, we can just check for the FormsMetadata cookie.\n if (shouldAcquireAccessToken()) {\n showSessionExpiredMessage();\n }\n }\n}\nexports.handleAuthSite401Response = handleAuthSite401Response;\nfunction showSessionExpiredMessage() {\n (0, toasty_1.error)('Your session has expired. Please refresh the page to continue', {\n id: 'sessionExpiredToasty',\n manuallyHide: true\n });\n}\nfunction shouldAcquireAccessToken() {\n return !js_cookie_1.default.get((0, isDevelopment_1.default)() ? '.HendersonDevFormsMetadata' : '.HendersonFormsMetadata');\n}\nexports.shouldAcquireAccessToken = shouldAcquireAccessToken;\n//# sourceMappingURL=tokenAuth.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst parseISO_1 = __importDefault(require(\"date-fns/parseISO\"));\nconst isValid_1 = __importDefault(require(\"date-fns/isValid\"));\nconst getYear_1 = __importDefault(require(\"date-fns/getYear\"));\nconst is_iso_date_1 = __importDefault(require(\"is-iso-date\"));\nconst DOT_NET_UNSPECIFIED_DATETIME_REGEX = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z?$/i;\nfunction tryParseDate(val, options = {}) {\n if (!val || !(typeof val === 'string' || val instanceof String)) {\n return val;\n }\n try {\n const { lessRigorous } = options;\n const str = val;\n const needsToBeConverted = lessRigorous || // if true, skip this check\n (0, is_iso_date_1.default)(str) || // this will do a rigorous ISO8601 spec test\n DOT_NET_UNSPECIFIED_DATETIME_REGEX.test(str); // this is to cover how .net serializes \"Unspecified\" DateTimes\n if (needsToBeConverted) {\n const date = (0, parseISO_1.default)(str);\n if ((0, isValid_1.default)(date)) {\n return (0, getYear_1.default)(date) > 1 ? date : null;\n }\n }\n }\n catch (_a) { }\n return val;\n}\nexports.default = tryParseDate;\n//# sourceMappingURL=tryParseDate.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst lightFormat_1 = __importDefault(require(\"date-fns/lightFormat\"));\nconst isValid_1 = __importDefault(require(\"date-fns/isValid\"));\nfunction trySerializeDate(val, options = {}) {\n if (!(val instanceof Date)) {\n return val;\n }\n try {\n const { includeTime } = options;\n if (!(0, isValid_1.default)(val)) {\n return null;\n }\n return includeTime ? val.toISOString() : (0, lightFormat_1.default)(val, 'yyyy-MM-dd');\n }\n catch (_a) { }\n return val;\n}\nexports.default = trySerializeDate;\n//# sourceMappingURL=trySerializeDate.js.map","Object.defineProperty(exports, \"__esModule\", { value: true });\nclass ValueTransformer {\n constructor(options) {\n this.options = options;\n }\n bail(options) {\n return false;\n }\n transform(value) {\n if (this.bail(this.options)) {\n return value;\n }\n if (value instanceof Array) {\n return this.handleArray(value);\n }\n else if (value && value.constructor === Object && typeof value === 'object') {\n //this should only be true for plain objects, not any built-in types like a new String(), new Date(), Elements, etc.\n return this.handleObject(value);\n }\n else {\n return this.transformValue(value, this.options);\n }\n }\n handleObject(val) {\n const cloned = Object.assign({}, val);\n Object.keys(cloned).forEach(key => {\n cloned[key] = this.transform(cloned[key]);\n });\n return cloned;\n }\n handleArray(val) {\n const cloned = [...val];\n for (let i = 0; i < cloned.length; i++) {\n cloned[i] = this.transform(cloned[i]);\n }\n return cloned;\n }\n}\nexports.default = ValueTransformer;\n//# sourceMappingURL=ValueTransformer.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ValueTransformer_1 = __importDefault(require(\"./ValueTransformer\"));\nconst tryParseDate_1 = __importDefault(require(\"../tryParseDate\"));\nfunction parseISODates(value, options = {}) {\n return new ParseISODates(options).transform(value);\n}\nclass ParseISODates extends ValueTransformer_1.default {\n bail(options) {\n return options.keepDatesAsStrings;\n }\n transformValue(val) {\n return (0, tryParseDate_1.default)(val);\n }\n}\nexports.default = parseISODates;\n//# sourceMappingURL=parseISODates.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ValueTransformer_1 = __importDefault(require(\"./ValueTransformer\"));\nconst trySerializeDate_1 = __importDefault(require(\"../trySerializeDate\"));\nfunction serializeDates(value, options = {}) {\n return new SerializeDates(options).transform(value);\n}\nclass SerializeDates extends ValueTransformer_1.default {\n transformValue(val, options) {\n return (0, trySerializeDate_1.default)(val, options);\n }\n}\nexports.default = serializeDates;\n//# sourceMappingURL=serializeDates.js.map","Object.defineProperty(exports, \"__esModule\", { value: true });\nexports.EventEmitter = void 0;\nfunction getEventEmitter(name = '') {\n const cacheKey = `henderson-event-emitter_${name}`;\n let eventEmitter = window[cacheKey];\n if (!eventEmitter) {\n window[cacheKey] = new EventEmitter();\n eventEmitter = window[cacheKey];\n }\n return eventEmitter;\n}\nexports.default = getEventEmitter;\nclass EventEmitter {\n constructor() {\n this.events = {};\n }\n emit(eventName, ...data) {\n setTimeout(() => {\n const event = this.events[eventName];\n if (event) {\n event.forEach(fn => {\n if (data && data.length > 0) {\n fn.call(null, ...data);\n }\n else {\n fn();\n }\n });\n }\n }, 1);\n }\n subscribe(eventName, fn) {\n if (!this.events[eventName]) {\n this.events[eventName] = [];\n }\n this.events[eventName].push(fn);\n return () => {\n this.events[eventName] = this.events[eventName].filter(eventFn => fn !== eventFn);\n };\n }\n}\nexports.EventEmitter = EventEmitter;\n//# sourceMappingURL=getEventEmitter.js.map","Object.defineProperty(exports, \"__esModule\", { value: true });\nexports.getAllConnectionIds = exports.removeConnectionId = exports.addConnectionId = void 0;\nconst CACHE_KEY = 'henderson-signalr-connectionids';\nfunction addConnectionId(connectionId) {\n getConnectionIdCache().add(connectionId);\n}\nexports.addConnectionId = addConnectionId;\nfunction removeConnectionId(connectionId) {\n getConnectionIdCache().delete(connectionId);\n}\nexports.removeConnectionId = removeConnectionId;\nfunction getAllConnectionIds() {\n return [...getConnectionIdCache()];\n}\nexports.getAllConnectionIds = getAllConnectionIds;\nfunction getConnectionIdCache() {\n let connectionIds = window[CACHE_KEY];\n if (!connectionIds) {\n connectionIds = new Set();\n window[CACHE_KEY] = connectionIds;\n }\n return connectionIds;\n}\n//# sourceMappingURL=signalRConnectionIdsCache.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst parseISO_1 = __importDefault(require(\"date-fns/parseISO\"));\nconst isValid_1 = __importDefault(require(\"date-fns/isValid\"));\nconst getYear_1 = __importDefault(require(\"date-fns/getYear\"));\nconst is_iso_date_1 = __importDefault(require(\"is-iso-date\"));\nconst DOT_NET_UNSPECIFIED_DATETIME_REGEX = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z?$/i;\nfunction tryParseDate(val, options = {}) {\n if (!val || !(typeof val === 'string' || val instanceof String)) {\n return val;\n }\n try {\n const { lessRigorous } = options;\n const str = val;\n const needsToBeConverted = lessRigorous || // if true, skip this check\n (0, is_iso_date_1.default)(str) || // this will do a rigorous ISO8601 spec test\n DOT_NET_UNSPECIFIED_DATETIME_REGEX.test(str); // this is to cover how .net serializes \"Unspecified\" DateTimes\n if (needsToBeConverted) {\n const date = (0, parseISO_1.default)(str);\n if ((0, isValid_1.default)(date)) {\n return (0, getYear_1.default)(date) > 1 ? date : null;\n }\n }\n }\n catch (_a) { }\n return val;\n}\nexports.default = tryParseDate;\n//# sourceMappingURL=tryParseDate.js.map","Object.defineProperty(exports, \"__esModule\", { value: true });\nclass ValueTransformer {\n constructor(options) {\n this.options = options;\n }\n bail(options) {\n return false;\n }\n transform(value) {\n if (this.bail(this.options)) {\n return value;\n }\n if (value instanceof Array) {\n return this.handleArray(value);\n }\n else if (value && value.constructor === Object && typeof value === 'object') {\n //this should only be true for plain objects, not any built-in types like a new String(), new Date(), Elements, etc.\n return this.handleObject(value);\n }\n else {\n return this.transformValue(value, this.options);\n }\n }\n handleObject(val) {\n const cloned = Object.assign({}, val);\n Object.keys(cloned).forEach(key => {\n cloned[key] = this.transform(cloned[key]);\n });\n return cloned;\n }\n handleArray(val) {\n const cloned = [...val];\n for (let i = 0; i < cloned.length; i++) {\n cloned[i] = this.transform(cloned[i]);\n }\n return cloned;\n }\n}\nexports.default = ValueTransformer;\n//# sourceMappingURL=ValueTransformer.js.map","var __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ValueTransformer_1 = __importDefault(require(\"./ValueTransformer\"));\nconst tryParseDate_1 = __importDefault(require(\"../tryParseDate\"));\nfunction parseISODates(value, options = {}) {\n return new ParseISODates(options).transform(value);\n}\nclass ParseISODates extends ValueTransformer_1.default {\n bail(options) {\n return options.keepDatesAsStrings;\n }\n transformValue(val) {\n return (0, tryParseDate_1.default)(val);\n }\n}\nexports.default = parseISODates;\n//# sourceMappingURL=parseISODates.js.map"],"names":["__importDefault","this","mod","__esModule","Object","defineProperty","exports","value","signalr_1","getSignalRConnection_1","parseISODates_1","signalRConnectionIdsCache_1","constructor","hubName","hub","default","started","wrapperMapping","Map","connection","onreconnected","connectionId","addConnectionId","currentConnectionId","removeConnectionId","async","registerListener","state","HubConnectionState","Disconnected","start","err","console","error","unregisterListener","canStop","stop","on","messageName","callback","wrapper","args","dateParsedArgs","map","arg","set","off","get","delete","tokenAuth_1","constants_1","createHubConnection","numListeners","HubConnectionBuilder","withUrl","SIGNALR_URL","accessTokenFactory","accessToken","getAccessToken","getNewAccessToken","withAutomaticReconnect","nextRetryDelayInMilliseconds","elapsedMilliseconds","previousRetryCount","log","withKeepAliveInterval","withServerTimeout","build","makeRequest_1","data","toAll","getRequestOptions","toOthers","toCaller","toUsers","usernames","to","input","endpoint","toUsernames","action","origin","route","convertToContextUri_1","SignalRConnection_1","CACHE_KEY_PREFIX","getCacheKey","window","getCachedSignalRConnection","cacheSignalRConnection","SignalRMessage_1","message","Environment","AbortablePromise","toStringTag","Symbol","executorOrPromise","aborter","promise","controller","signal","Error","AbortController","Promise","resolve","reject","addEventListener","DOMException","then","catch","abort","onfulfilled","onrejected","finally","onfinally","AbortablePromise_1","init","fetch","Environment_1","isDevelopment_1","isStage_1","isProduction_1","url","targetEnv","Development","replace","DEVELOPMENT_PATTERN","STAGE_PATTERN","OLD_PRODUCTION_PATTERN","PRODUCTION_PATTERN","Stage","Production","shouldConvert_1","convertUrl_1","getEnvironment_1","isInternalUrl_1","test","ENVIRONMENT_CACHE_KEY","_getEnvironment","location","href","EventEmitter","name","cacheKey","eventEmitter","events","emit","eventName","setTimeout","event","forEach","fn","length","call","subscribe","push","filter","eventFn","d","Date","now","c","r","Math","floor","random","toString","DEV_SERVER_PATTERN","urlToTest","host","isDevServer_1","testing","__TESTING__","_a","requestHasBody_1","serializeDates_1","requestOptions","body","FormData","file","append","keys","includeTime","dataToPass","JSON","stringify","options","headers","finalHeaders","Headers","doNotUserBearerAuth","token","usernameHashInput","document","getElementById","signalRConnectionIds","getAllConnectionIds","join","trySerializeDate_1","getEncodedKeyValuePairs","parentKeys","keyValuePairs","key","undefined","getEncodedKey","arrayParentKeys","slice","concat","Array","i","getEncodedValue","arrayIndex","parentChain","parentKey","newKey","encodeURIComponent","val","kvp","generateQueryString_1","getOrigin_1","warn","HTTPVerb_1","POST","GET","PUT","DELETE","HEAD","generateUrl_1","generateBody_1","getHTTPVerb_1","generateHeaders_1","abortableFetch_1","validateRequestOptions_1","isTesting_1","sendRequest","fetchOptions","method","credentials","noCors","mode","response","status","doNotRetry","saveToken","assign","handle401","timeout","mock","mockValue","request","responseContentType","isResponseJSON","ok","responseValue","json","keepDatesAsStrings","responseOptions","responseContentDisposition","fileName","indexOf","matches","exec","blob","getBlobWithFileName","type","hasOwnProperty","serviceError","Message","stack","StackTrace","ExceptionMessage","exceptionMessage","errorMessage","text","statusText","processResponse","handleAuthSite401Response","HTTPVerb","CACHE_KEY","getConnectionIdCache","connectionIds","Set","add","onHideToasty","onAddToasty","hideToasty","addToasty","getEventEmitter_1","Events","toasty","NEW_NOTIFICATION","HIDE_NOTIFICATION","handler","custom","success","warning","info","events_1","getUUID_1","internalAddToasty","content","opts","id","manuallyHide","duration","getDefaultedOptions","shouldAcquireAccessToken","getSavedToken","TOKEN_KEY","TOKEN_INPUT_ID","js_cookie_1","toasty_1","localStorage","setItem","getItem","getFetchOptions","showSessionExpiredMessage","el","getTokenFromInput","forceRefresh","e","parseISO_1","isValid_1","getYear_1","is_iso_date_1","DOT_NET_UNSPECIFIED_DATETIME_REGEX","String","lessRigorous","str","date","lightFormat_1","toISOString","bail","transform","handleArray","handleObject","transformValue","cloned","ValueTransformer_1","tryParseDate_1","ParseISODates","SerializeDates"],"sourceRoot":""}