@genesislcap/foundation-header 10.3.1 → 11.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/dts/main/main.d.ts.map +1 -1
- package/dist/dts/main/main.styles.d.ts.map +1 -1
- package/dist/dts/utils/logger.d.ts.map +1 -1
- package/dist/esm/components/components.js +0 -1
- package/dist/esm/components/index.js +0 -1
- package/dist/esm/index.federated.js +0 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/main/index.js +0 -1
- package/dist/esm/main/main.js +4 -5
- package/dist/esm/main/main.styles.js +1 -2
- package/dist/esm/main/main.template.js +0 -1
- package/dist/esm/styles/colors.js +0 -1
- package/dist/esm/styles/index.js +0 -1
- package/dist/esm/styles/styles.js +0 -1
- package/dist/esm/styles/typography.js +0 -1
- package/dist/esm/utils/index.js +0 -1
- package/dist/esm/utils/logger.js +0 -1
- package/package.json +12 -10
- package/dist/1.0.0.remoteEntry.js +0 -1
- package/dist/185.185.90f433f531991b7de936.js +0 -2
- package/dist/185.bfe96e990dc6f09220d09b8c95f4b54c.js.map +0 -1
- package/dist/31607cf9ccd469a62208.svg +0 -3
- package/dist/338.338.6641454ca7888d1fe36e.js +0 -2
- package/dist/338.94cb9596c131c99ac58a37f38ad25ce7.js.map +0 -1
- package/dist/397.397.2a1b48dbb33962f24b3a.js +0 -3
- package/dist/397.397.2a1b48dbb33962f24b3a.js.LICENSE.txt +0 -1
- package/dist/397.83dbb3ca8f1fe8d1a694b8c2feffc11b.js.map +0 -1
- package/dist/453.453.a2247ddad6f6385d77e5.js +0 -326
- package/dist/453.547b1f466caf28aca7644e9032ba33d9.js.map +0 -1
- package/dist/506.216099078d895d583f069d47bbbbc118.js.map +0 -1
- package/dist/506.506.2df96cfa49403c056e18.js +0 -3
- package/dist/506.506.2df96cfa49403c056e18.js.LICENSE.txt +0 -4
- package/dist/540.540.16a5312961af053a4ac4.js +0 -2
- package/dist/540.6abb416013642069288d5369cb3126c7.js.map +0 -1
- package/dist/641.5d1b071000ebacbeffeb45846633c4ce.js.map +0 -1
- package/dist/641.641.0d19c60ce5b96cee96e9.js +0 -3
- package/dist/641.641.0d19c60ce5b96cee96e9.js.LICENSE.txt +0 -4
- package/dist/667.667.76a963874a8ced0ba03f.js +0 -2
- package/dist/667.e80f70ba5418c8fd00213d1c8ef97b86.js.map +0 -1
- package/dist/853.234215e17d31fe35e24b3b9241a6b6fd.js.map +0 -1
- package/dist/853.853.2cdc8d94fdad1718e016.js +0 -2
- package/dist/868.868.1c7d7e3d7821494b3ae2.js +0 -3434
- package/dist/868.f796e350acd03aa052fa27272aa83afc.js.map +0 -1
- package/dist/dashboard.json +0 -1
- package/dist/esm/components/components.js.map +0 -1
- package/dist/esm/components/index.js.map +0 -1
- package/dist/esm/index.federated.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/main/index.js.map +0 -1
- package/dist/esm/main/main.js.map +0 -1
- package/dist/esm/main/main.styles.js.map +0 -1
- package/dist/esm/main/main.template.js.map +0 -1
- package/dist/esm/styles/colors.js.map +0 -1
- package/dist/esm/styles/index.js.map +0 -1
- package/dist/esm/styles/styles.js.map +0 -1
- package/dist/esm/styles/typography.js.map +0 -1
- package/dist/esm/utils/index.js.map +0 -1
- package/dist/esm/utils/logger.js.map +0 -1
- package/dist/favicon.ico +0 -0
- package/dist/foundationHeader.685f4ee8e2cde1d2ba841d4feadbe883.js.map +0 -1
- package/dist/index.ejs +0 -23
- package/dist/index.html +0 -10
- package/dist/info.ejs +0 -13
- package/dist/info.html +0 -19
- package/dist/main.3ceec8a83bd7daabb733313329a49b5e.js.map +0 -1
- package/dist/main.af1b29c4ad243e418158.js +0 -2
- package/dist/npm.analytics.13d3017bcb2734b958e1c261c7e620d1.js.map +0 -1
- package/dist/npm.analytics.343.868701a34bf55591b35e.js +0 -2
- package/dist/npm.consola.713.a6a01a645775febbd05a.js +0 -2
- package/dist/npm.consola.d0475457692e79d2065981689ecbe6c8.js.map +0 -1
- package/dist/npm.dialog-polyfill.39e8a4cd9784ad9e0690d28f17eefeb3.js.map +0 -1
- package/dist/npm.dialog-polyfill.47.857e1cc698756a1d4d9f.js +0 -2
- package/dist/npm.finos.690.1d362c820f7a29e44178.js +0 -2
- package/dist/npm.finos.7eb5017b5506c0dd6de2c2bee763a997.js.map +0 -1
- package/dist/npm.fortawesome.104.6fdfed399ac3d4bcd076.js +0 -2
- package/dist/npm.fortawesome.96f1e7115d1e111bde725447b64f04a9.js.map +0 -1
- package/dist/npm.microsoft.127.63be836a7ee60f2db5e3.js +0 -6406
- package/dist/npm.microsoft.127.63be836a7ee60f2db5e3.js.LICENSE.txt +0 -14
- package/dist/npm.microsoft.93b16332ce7f1e3a889ad69e0403d652.js.map +0 -1
- package/dist/npm.rxjs.271.3c690069442a312eaee2.js +0 -2
- package/dist/npm.rxjs.3e4127a7515023cc78b8548028afb653.js.map +0 -1
- package/dist/remoteEntry.js +0 -2
- package/dist/serve.json +0 -3
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://@genesislcap/foundation-header/../node_modules/analytics-utils/dist/analytics-utils.module.js","webpack://@genesislcap/foundation-header/../node_modules/dlv/dist/dlv.umd.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/utils/logger.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/analytics/analytics.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/metadata/metadata.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/utils/regex.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/utils/until.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/session/session.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/connect/serializers.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/connect/http.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/auth/auth.types.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/connect/message.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/connect/connect.types.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/connect/http.connect.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/connect/reconnectStrategy.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/connect/socket.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/connect/env-variables.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/connect/connect.js","webpack://@genesislcap/foundation-header/../node_modules/js-cookie/dist/js.cookie.mjs","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/credentialManager/credentialManager.types.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/credentialManager/credentialManager.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/user/user.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/auth/auth.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/datasource/datasource.types.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/metadata/metadata.types.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/metadata/metadata.utils.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/datasource/datasource.js","webpack://@genesislcap/foundation-header/../foundation-comms/dist/esm/fdc3/fdc3.js"],"names":["n","e","decodeURIComponent","replace","o","r","navigator","t","languages","userLanguage","length","language","a","Intl","DateTimeFormat","resolvedOptions","timeZone","s","Object","create","exec","i","substring","push","u","c","split","m","map","match","window","location","search","y","Math","random","toString","module","exports","logger","createLogger","FoundationAnalyticsEventType","FoundationAnalyticsService","constructor","config","this","analytics","trackEvent","eventName","payload","debug","JSON","stringify","track","FoundationAnalytics","DI","x","singleton","MetadataService","cachedMetadata","Map","getMetadataFor","resourceName","get","hasMetadataFor","has","setMetadataFor","metadata","set","__decorate","observable","prototype","MetadataCache","isWebSocketExpression","RegExp","until","conditionFunc","timeoutMs","poll","resolve","setTimeout","Promise","SessionService","storageKeyPrefix","returnUrl","getSessionStorageItem","deleteUserFromSessionStorage","forEach","key","removeSessionStorageItem","setStorageKeyPrefix","prefix","setAuthResult","result","setSessionStorageItem","SESSION_AUTH_TOKEN","REFRESH_AUTH_TOKEN","USER_NAME","SESSION_ID","captureReturnUrl","pathname","hash","path","setItem","value","storage","localStorage","sessionStorage","getItem","removeItem","setLocalStorageItem","getLocalStorageItem","removeLocalStorageItem","Session","JSONSerializer","serialize","object","deserialize","input","parse","data","text","then","Serializer","HttpService","serializer","url","requestInit","__awaiter","response","fetch","assign","method","post","__param","Http","AuthType","MessageType","EventMessageType","MessageCode","AuthError","Error","sent","received","message","super","setPrototypeOf","isIgnorableError","_a","_b","_c","_d","DETAILS","ERROR","toLowerCase","includes","getMessageError","Array","isArray","error","errorDetailFormatter","join","getDetailsError","hasPasswordExpiredError","hasErrorCode","code","some","CODE","TEXT","messageOrThrow","MessageBuilderService","session","uuid","createLoginMessage","credentials","type","BASIC","username","PASSWORD","password","REFRESH","refreshToken","SSO","SSO_TOKEN","ssoToken","JWT","jwt","DOMAIN","domain","SOURCE_REF","createId","MESSAGE_TYPE","EVENT_LOGIN_AUTH","createLogoutMessage","loginResult","EVENT_LOGOUT","authToken","sessionId","createDataLogonMessage","params","DATA_LOGON","DATASOURCE_NAME","createDataLogoffMessage","sourceRef","DATA_LOGOFF","createRequestMessage","startsWith","createMetaRequestMessage","messageType","META_REQUEST","FEATURE","createCommitMessage","createRefreshTokenMessage","createChangePasswordMessage","oldPassword","newPassword","EVENT_CHANGE_USER_PASSWORD","OLD_PASSWORD","NEW_PASSWORD","createForgotPasswordMessage","requester","EVENT_SELF_SERVICE_PASSWORD_RESET","RETURN_URL","createForgotPasswordTokenMessage","resetToken","EVENT_PASSWORD_RESET_ACTION","RESET_TOKEN","createMoreRowsMessage","MORE_ROWS","UUID","MessageBuilder","ConnectConfig","HttpConnectConfig","defaultHttpConnectConfig","polling","POLLING_MAP","EVENT_AMEND_USER","TEMP_FREQUENCY","AMOUNT_OF_POLLS","QUERIES","POLLING_INTERVAL_MAP","ALL_TRADES","ALL_USERS","ALL_PROCESSES_STATUS","POLLING_FREQUENCY","HttpConnectService","isConnected","_isConnected","isConnectedSubject","next","http","messageBuilder","metaCache","isWorking","BehaviorSubject","ongoingTurbo","streams","checkHost","getMessage","HEARTBEAT_PING","HEARTBEAT_PONG","send","needsHandling","getUrl","host","body","getBody","headers","getHeaders","httpMode","setValidSession","valid","warn","connect","endsWith","concat","connected","disconnect","clear","undefined","snapshot","snapshotMessage","dataLogoff","catch","stream","onMessage","onError","streamMessage","RESOURCE_NAME","interval$","from","pipe","switchMap","ms","interval","takeWhile","finalize","STREAM","getMoreRows","moreRowsMessage","streamSourceRef","dataLogoffMessage","res","delete","getMetadata","useCache","metaRequestMessage","getJSONSchema","JSON_SCHEMA_REQUEST","request","requestMessage","commitEvent","commitMessage","reply","maybeTurbo","turbo","freq","duration","originalPollingIntervalMap","tempPollingMap","q","updateIntervals","handlePollingIntervalMapUpdate","pollingIntervalMap","resource","hasOwnProperty","newFreq","values","filter","static","apiEndpoint","volatile","HttpConnect","DEFAULT_RECONNECT_INTERVAL","MAX_RECONNECT_INTERVAL","MAX_RECONNECT_ATTEMPTS","SocketReconnectStrategy","retryInterval","reconnectOptions","scheduler","Observable","observer","timeoutId","count","recursiveTimeout","clearTimeout","exponentialScheduler","attempt","reconnectInterval","baseInterval","attemptsBreakPoint","round","log2","pow","linearScheduler","SocketSubject","Subject","SocketObservable","args","SocketMessageHandler","isSubscription","_message","_onMessage","_onError","_isSubscription","sentMessage","onReceivedMessage","onReceivedError","SocketService","isConnectedChanged","_","defaultInterval","secondsMultiplier","hasValidSession","heartbeatIsEnabled","heartbeatInterval","isReconnecting","socketMessages","wsMessages","heartbeatLoggingIsEnabled","connectOptions","enableHeartbeatLogging","messageLoggingIsEnabled","enableMessageLogging","info","reconnectStreams","cleanMessages","socketSubscription","unsubscribe","websocket","WebSocketSubject","openObserver","prepareHeartbeat","closeObserver","closeEvent","disconnectedByServer","wasClean","reason","deserializer","subscribe","connectObserver","receivedMessage","_e","responseMessageReceivedLog","logMessageTypeFlow","messageHandler","getMessageHandler","nacked","EVENT_LOGIN_AUTH_ACK","systemDetails","HEARTBEAT_INTERVAL_SECS","LOGOUT_ACK","call","LOGON_ACK","LOGOFF_ACK","LOGGED_OUT","refreshTokenMessage","refreshTokenResult","wsMessageHandlers","mh","QUERY_UPDATE","MSG_NACK","removeMessageHandler","reconnect","complete","alwaysOn","heartbeatSubscription","sendHeartbeat","ping","pong","enableHeartbeat","intervalInMillisecocnds","timer","tap","notAlwaysOnAndHeartbeating","reconnectStrategy","Exponential","reconnectObservable","asObservable","of","mergeMap","attemptsAmount","reconnectAttempts","throwError","reconnectObserver","reset","reject","sendingMessasgeLog","msg","err","setMessageHandler","sendForStream","sendingMessageLog","settingMessageHandlerLog","gettingMessageHandlerLog","logFunc","logMsg","Socket","_HTTP_CONFIG","_FORCE_HTTP","defaultConnectConfig","DefaultConnect","socket","test","details","metaResponse","useHttpConnect","WSConnect","Connect","aliasTo","target","arguments","source","api","init","converter","defaultAttributes","attributes","document","expires","Date","now","toUTCString","encodeURIComponent","escape","stringifiedAttributes","attributeName","cookie","write","cookies","jar","parts","slice","foundKey","read","remove","withAttributes","withConverter","freeze","CredentialManagerConfig","supportsCredentialsContainer","defaultCredentialRequestOptions","mediation","defaultCredentialManagerConfig","name","storePasswords","DefaultCredentialManager","createBasicCredentials","inputs","createRefreshCredentials","getUsername","getRefreshToken","createSSOCredentials","getSSOToken","validateBasicCredentials","validateRefreshCredentials","validateSSOCredentials","storeCredentialsInContainer","PasswordCredential","store","getCredentialsFromContainer","options","storeCredentialsInCookie","rest","__rest","hostname","secure","getCredentialsFromCookie","storeCredentials","credential","getCredentials","removeCookie","removeSSOToken","removeUsername","removeRefreshToken","removeAll","preventSilentAccess","CredentialManager","CurrentUser","hasAdminProfile","hasProfile","hasPermission","permission","hasKey","permissions","profile","profiles","keys","k","AuthService","isLoggedIn","loggedUserResult","credentialManager","currentUser","login","loginMessage","authResult","applyAuthResults","PROFILE","PERMISSION","removeAuthResults","logout","logoutResult","success","logoutMessage","SESSION_NOT_FOUND","logoutError","reAuthFromSession","hostUrl","getLoggedUserFromSession","sessionAuthToken","refreshAuthToken","Auth","ResourceType","FieldTypeEnum","DatasourceDefaults","MAX_ROWS_250","MAX_VIEW_1000","REQ_REP_POLLING_INTERVAL_MS","TYPES_MAP","STRING","ENUM","BOOLEAN","INT","NUMBER","DOUBLE","BIGDECIMAL","DATE","DATETIME","toFieldMetadata","fieldDef","field","meta","NAME","TYPE","VALID_VALUES","enumOptions","extractFieldDefinitions","DATASERVER","FIELD","REQUEST_SERVER","REPLY_FIELD","DatasourceService","auth","initialized","readOnly","originalFieldDef","requestFields","fieldMetadata","availableIndexes","defaultOptions","criteria","isSnapshot","maxRows","maxView","orderBy","reverse","fetchMeta","validResourceName","resourceType","INDEXES","REQUEST_FIELD","_stream","createStream","CRITERIA_MATCH","FIELDS","fields","MAX_ROWS","MAX_VIEW","REQUEST","REVERSE","findIndex","ORDER_BY","validIndexes","index","reqParams","reqFields","rf","fromCriteria","criteriaToReqFields","snapshotFiltered","rowId","REPLY","ROW","filterRows","inserts","toRowData","row","tmp","deletes","updates","OPERATION","createDataserverStream","createReqRepStream","trim","concatCriteria","substr","indexOf","val","lastIndexOf","Datasource","transient","FDC3Service","isReady","addIntentListeners","listeners","handler","intent","listener","findIntent","context","findIntentsByContext","raiseIntent","joinChannel","channelId","getOrCreateChannel","broadcastOnChannel","channel","broadcast","FDC3"],"mappings":"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","file":"397.397.xxxxxxxxxxxxxxxxxxxx.js","sourcesContent":["export{default as dotProp}from\"dlv\";import{isBrowser as e,isString as r,isRegex as t}from\"@analytics/type-utils\";function n(e){try{return decodeURIComponent(e.replace(/\\+/g,\" \"))}catch(e){return null}}function o(){if(e){var r=navigator,t=r.languages;return r.userLanguage||(t&&t.length?t[0]:r.language)}}function a(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch(e){}}function i(r){if(!e)return!1;var t=r||document.referrer;if(t){var n=window.document.location.port,o=t.split(\"/\")[2];return n&&(o=o.replace(\":\"+n,\"\")),o!==window.location.hostname}return!1}function u(n){if(!e)return!0;var o=document.getElementsByTagName(\"script\");return!!Object.keys(o).filter(function(e){var a=o[e].src;return r(n)?-1!==a.indexOf(n):!!t(n)&&a.match(n)}).length}function c(e,r){var t=(e.split(\"?\")||[,])[1];if(!t||-1===t.indexOf(r))return e;var n=new RegExp(\"(\\\\&|\\\\?)\"+r+'([_A-Za-z0-9\"+=.\\\\/\\\\-@%]+)',\"g\"),o=(\"?\"+t).replace(n,\"\").replace(/^&/,\"?\");return e.replace(\"?\"+t,o)}function l(e,r){return n((RegExp(e+\"=(.+?)(&|$)\").exec(r)||[,\"\"])[1])}function s(r){return function(e){for(var r,t=Object.create(null),o=/([^&=]+)=?([^&]*)/g;r=o.exec(e);){var a=n(r[1]),i=n(r[2]);\"[]\"===a.substring(a.length-2)?(t[a=a.substring(0,a.length-2)]||(t[a]=[])).push(i):t[a]=\"\"===i||i}for(var u in t){var c=u.split(\"[\");c.length>1&&(m(t,c.map(function(e){return e.replace(/[?[\\]\\\\ ]/g,\"\")}),t[u]),delete t[u])}return t}(function(r){if(r){var t=r.match(/\\?(.*)/);return t&&t[1]?t[1].split(\"#\")[0]:\"\"}return e&&window.location.search.substring(1)}(r))}function m(e,r,t){for(var n=r.length-1,o=0;o<n;++o){var a=r[o];if(\"__proto__\"===a||\"constructor\"===a)break;a in e||(e[a]={}),e=e[a]}e[r[n]]=t}function f(r,t){return e?new Promise(function(e,n){if(window.history&&window.history.replaceState){var o=window.location.href,a=c(o,r);o!==a&&history.replaceState({},\"\",a)}return t&&t(),e()}):Promise.resolve()}function g(r){if(!e)return null;var t=document.createElement(\"a\");return t.setAttribute(\"href\",r),t.hostname}function p(e){return(g(e)||\"\").split(\".\").slice(-2).join(\".\")}function x(e){var r=e.split(\".\");return r.length>1?r.slice(0,-1).join(\".\"):e}var d={trimTld:x,getDomainBase:p,getDomainHost:g};function v(r,t){if(!e)return!1;var n={source:\"(direct)\",medium:\"(none)\",campaign:\"(not set)\"};r&&i(r)&&(n.referrer=r);var o=function(r){if(!r||!e)return!1;var t=p(r),n=document.createElement(\"a\");if(n.href=r,n.hostname.indexOf(\"google\")>-1&&(t=\"google\"),w[t]){var o=w[t],a=new RegExp((\"string\"==typeof o?o:o.p)+\"=.*?([^&#]*|$)\",\"gi\"),u=n.search.match(a);return{source:o.n||x(t),medium:\"organic\",term:(u?u[0].split(\"=\")[1]:\"\")||\"(not provided)\"}}var c=i(r)?\"referral\":\"internal\";return{source:n.hostname,medium:c}}(r);o&&Object.keys(o).length&&(n=Object.assign({},n,o));var a=s(t),u=Object.keys(a);if(!u.length)return n;var c=u.reduce(function(e,r){return r.match(/^utm_/)&&(e[\"\"+r.replace(/^utm_/,\"\")]=a[r]),r.match(/^(d|g)clid/)&&(e.source=\"google\",e.medium=a.gclid?\"cpc\":\"cpm\",e[r]=a[r]),e},{});return Object.assign({},n,c)}var h=\"q\",w={\"daum.net\":h,\"eniro.se\":\"search_word\",\"naver.com\":\"query\",\"yahoo.com\":\"p\",\"msn.com\":h,\"aol.com\":h,\"ask.com\":h,\"baidu.com\":\"wd\",\"yandex.com\":\"text\",\"rambler.ru\":\"words\",google:h,\"bing.com\":{p:h,n:\"live\"}};function y(){for(var e=\"\",r=0,t=4294967295*Math.random()|0;r++<36;){var n=\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\"[r-1],o=15&t;e+=\"-\"==n||\"4\"==n?n:(\"x\"==n?o:3&o|8).toString(16),t=r%8==0?4294967295*Math.random()|0:t>>4}return e}function b(e,r){var t,n,o,a=null,i=0,u=function(){i=new Date,a=null,o=e.apply(t,n)};return function(){var c=new Date;i||(i=c);var l=r-(c-i);return t=this,n=arguments,l<=0?(clearTimeout(a),a=null,i=c,o=e.apply(t,n)):a||(a=setTimeout(u,l)),o}}export{n as decodeUri,o as getBrowserLocale,a as getTimeZone,i as isExternalReferrer,u as isScriptLoaded,c as paramsClean,l as paramsGet,s as paramsParse,f as paramsRemove,v as parseReferrer,b as throttle,d as url,y as uuid};\n//# sourceMappingURL=analytics-utils.module.js.map\n","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=function(t,n,e,i,o){for(n=n.split?n.split(\".\"):n,i=0;i<n.length;i++)t=t?t[n[i]]:o;return t===o?e:t}:\"function\"==typeof define&&define.amd?define(function(){return function(t,n,e,i,o){for(n=n.split?n.split(\".\"):n,i=0;i<n.length;i++)t=t?t[n[i]]:o;return t===o?e:t}}):t.dlv=function(t,n,e,i,o){for(n=n.split?n.split(\".\"):n,i=0;i<n.length;i++)t=t?t[n[i]]:o;return t===o?e:t}}(this);\n//# sourceMappingURL=dlv.umd.js.map\n","import { createLogger } from '@genesislcap/foundation-utils';\nexport const logger = createLogger('foundation-comms');\n//# sourceMappingURL=logger.js.map","import Analytics from 'analytics';\nimport { DI } from '@microsoft/fast-foundation';\nimport { logger } from '../utils';\nexport var FoundationAnalyticsEventType;\n(function (FoundationAnalyticsEventType) {\n FoundationAnalyticsEventType[\"controlClicked\"] = \"controlClicked\";\n FoundationAnalyticsEventType[\"routeChanged\"] = \"routeChanged\";\n})(FoundationAnalyticsEventType || (FoundationAnalyticsEventType = {}));\nclass FoundationAnalyticsService {\n constructor(config) {\n this.analytics = Analytics(config);\n }\n trackEvent(eventName, payload) {\n logger.debug(`FoundationAnalytics.trackEvent ${eventName} : ${JSON.stringify(payload)}`);\n this.analytics.track(eventName, payload);\n }\n}\nexport const FoundationAnalytics = DI.createInterface((x) => x.singleton(FoundationAnalyticsService));\n//# sourceMappingURL=analytics.js.map","import { __decorate } from \"tslib\";\nimport { observable } from '@microsoft/fast-element';\nimport { DI } from '@microsoft/fast-foundation';\nclass MetadataService {\n constructor() {\n this.cachedMetadata = new Map();\n }\n getMetadataFor(resourceName) {\n return this.cachedMetadata.get(resourceName);\n }\n hasMetadataFor(resourceName) {\n return this.cachedMetadata.has(resourceName);\n }\n setMetadataFor(resourceName, metadata) {\n this.cachedMetadata.set(resourceName, metadata);\n }\n}\n__decorate([\n observable\n], MetadataService.prototype, \"cachedMetadata\", void 0);\nexport const MetadataCache = DI.createInterface((x) => x.singleton(MetadataService));\n//# sourceMappingURL=metadata.js.map","export const isWebSocketExpression = new RegExp(/wss?:\\/\\/[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\b([-a-zA-Z0-9()@:%_\\+.~#?&\\/=]*)\\b\\/*$/, 'i');\n//# sourceMappingURL=regex.js.map","export function until(conditionFunc, timeoutMs = 300) {\n const poll = (resolve) => {\n if (conditionFunc()) {\n resolve();\n return;\n }\n setTimeout(() => poll(resolve), timeoutMs);\n };\n return new Promise(poll);\n}\n//# sourceMappingURL=until.js.map","import { DI } from '@microsoft/fast-foundation';\nclass SessionService {\n constructor() {\n this.storageKeyPrefix = '';\n this.returnUrl = this.getSessionStorageItem('returnUrl') || '';\n }\n deleteUserFromSessionStorage() {\n const storageKeys = ['authToken', 'refreshToken', 'sessionId', 'ssoToken'];\n storageKeys.forEach((key) => this.removeSessionStorageItem(key));\n }\n setStorageKeyPrefix(prefix) {\n this.storageKeyPrefix = `${prefix.replace(/\\s/g, '')}/`;\n }\n setAuthResult(result) {\n this.setSessionStorageItem('authToken', result.SESSION_AUTH_TOKEN);\n this.setSessionStorageItem('refreshToken', result.REFRESH_AUTH_TOKEN);\n this.setSessionStorageItem('username', result.USER_NAME);\n this.setSessionStorageItem('sessionId', result.SESSION_ID);\n }\n captureReturnUrl() {\n const { pathname, search, hash } = location;\n if (pathname === '/login') {\n return;\n }\n const path = `${pathname !== '/' ? pathname : ''}`;\n this.returnUrl = `${path}${search}${hash}`;\n this.setSessionStorageItem('returnUrl', this.returnUrl);\n }\n setItem(key, value, storage) {\n if (storage === 'local') {\n localStorage.setItem(this.storageKeyPrefix + key, value);\n }\n else {\n sessionStorage.setItem(this.storageKeyPrefix + key, value);\n }\n }\n getItem(key, storage) {\n if (storage === 'local')\n return localStorage.getItem(this.storageKeyPrefix + key);\n return sessionStorage.getItem(this.storageKeyPrefix + key);\n }\n removeItem(key, storage) {\n if (storage === 'local') {\n localStorage.removeItem(this.storageKeyPrefix + key);\n }\n else {\n sessionStorage.removeItem(this.storageKeyPrefix + key);\n }\n }\n setLocalStorageItem(key, value) {\n this.setItem(key, value, 'local');\n }\n setSessionStorageItem(key, value) {\n this.setItem(key, value, 'session');\n }\n getLocalStorageItem(key) {\n return this.getItem(key, 'local');\n }\n getSessionStorageItem(key) {\n return this.getItem(key, 'session');\n }\n removeLocalStorageItem(key) {\n this.removeItem(key, 'local');\n }\n removeSessionStorageItem(key) {\n this.removeItem(key, 'session');\n }\n}\nexport const Session = DI.createInterface((x) => x.singleton(SessionService));\n//# sourceMappingURL=session.js.map","import { DI } from '@microsoft/fast-foundation';\nclass JSONSerializer {\n serialize(object) {\n return JSON.stringify(object);\n }\n deserialize(input) {\n if (!input) {\n return Promise.resolve({});\n }\n if (typeof input === 'string') {\n return JSON.parse(input);\n }\n if (input.data) {\n return JSON.parse(input.data);\n }\n return input.text().then((text) => JSON.parse(text));\n }\n}\nexport const Serializer = DI.createInterface((x) => x.singleton(JSONSerializer));\n//# sourceMappingURL=serializers.js.map","import { __awaiter, __decorate, __param } from \"tslib\";\nimport { DI } from '@microsoft/fast-foundation';\nimport { Serializer } from './serializers';\nlet HttpService = class HttpService {\n constructor(serializer) {\n this.serializer = serializer;\n }\n get(url, requestInit) {\n return __awaiter(this, void 0, void 0, function* () {\n const response = yield fetch(url, Object.assign(Object.assign({}, requestInit), { method: 'GET' }));\n const serializer = requestInit.serializer || this.serializer;\n return serializer.deserialize(response);\n });\n }\n post(url, requestInit) {\n return __awaiter(this, void 0, void 0, function* () {\n const response = yield fetch(url, Object.assign(Object.assign({}, requestInit), { method: 'POST' }));\n const serializer = requestInit.serializer || this.serializer;\n return serializer.deserialize(response);\n });\n }\n};\nHttpService = __decorate([\n __param(0, Serializer)\n], HttpService);\nexport const Http = DI.createInterface((x) => x.singleton(HttpService));\n//# sourceMappingURL=http.js.map","export var AuthType;\n(function (AuthType) {\n AuthType[\"BASIC\"] = \"BASIC\";\n AuthType[\"SSO\"] = \"SSO\";\n AuthType[\"JWT\"] = \"JWT\";\n AuthType[\"REFRESH\"] = \"REFRESH\";\n})(AuthType || (AuthType = {}));\nexport class AuthError extends Error {\n constructor(sent, received, message = 'Auth Failed \\n') {\n super(message);\n this.sent = sent;\n this.received = received;\n Object.setPrototypeOf(this, AuthError.prototype);\n }\n isIgnorableError() {\n var _a, _b, _c, _d;\n return (_d = (_c = (_b = (_a = this.received) === null || _a === void 0 ? void 0 : _a.DETAILS) === null || _b === void 0 ? void 0 : _b.ERROR) === null || _c === void 0 ? void 0 : _c.toLowerCase()) === null || _d === void 0 ? void 0 : _d.includes('request needs the user to be logged');\n }\n getMessageError() {\n var _a, _b;\n return Array.isArray((_a = this.received) === null || _a === void 0 ? void 0 : _a.ERROR)\n ? (_b = this.received) === null || _b === void 0 ? void 0 : _b.ERROR.map((error) => this.errorDetailFormatter(error)).join('\\n')\n : '';\n }\n getDetailsError() {\n var _a, _b, _c, _d;\n return Array.isArray((_b = (_a = this.received) === null || _a === void 0 ? void 0 : _a.DETAILS) === null || _b === void 0 ? void 0 : _b.ERROR)\n ? (_d = (_c = this.received) === null || _c === void 0 ? void 0 : _c.DETAILS) === null || _d === void 0 ? void 0 : _d.ERROR.map((error) => this.errorDetailFormatter(error)).join('\\n')\n : '';\n }\n hasPasswordExpiredError() {\n return this.hasErrorCode('PASSWORD_EXPIRED');\n }\n hasErrorCode(code) {\n var _a, _b;\n return Array.isArray((_a = this.received) === null || _a === void 0 ? void 0 : _a.ERROR)\n ? (_b = this.received) === null || _b === void 0 ? void 0 : _b.ERROR.some((error) => error.CODE === code)\n : false;\n }\n errorDetailFormatter(error) {\n return `\\n ${error.CODE}: \\n ${error.TEXT}`;\n }\n}\n//# sourceMappingURL=auth.types.js.map","import { __decorate, __param } from \"tslib\";\nimport { UUID } from '@genesislcap/foundation-utils';\nimport { DI } from '@microsoft/fast-foundation';\nimport { AuthType } from '../auth/auth.types';\nimport { Session } from '../session';\nexport var MessageType;\n(function (MessageType) {\n MessageType[\"LOGON_ACK\"] = \"LOGON_ACK\";\n MessageType[\"LOGON_NACK\"] = \"LOGON_NACK\";\n MessageType[\"LOGOFF_ACK\"] = \"LOGOFF_ACK\";\n MessageType[\"LOGOFF_NACK\"] = \"LOGOFF_NACK\";\n MessageType[\"HEARTBEAT_PING\"] = \"HEARTBEAT_PING\";\n MessageType[\"HEARTBEAT_PONG\"] = \"HEARTBEAT_PONG\";\n MessageType[\"MORE_ROWS\"] = \"MORE_ROWS\";\n MessageType[\"MSG_ACK\"] = \"MSG_ACK\";\n MessageType[\"MSG_NACK\"] = \"MSG_NACK\";\n MessageType[\"LOGOUT_ACK\"] = \"LOGOUT_ACK\";\n MessageType[\"LOGOUT_NACK\"] = \"LOGOUT_NACK\";\n MessageType[\"QUERY_UPDATE\"] = \"QUERY_UPDATE\";\n})(MessageType || (MessageType = {}));\nexport var EventMessageType;\n(function (EventMessageType) {\n EventMessageType[\"EVENT_LOGIN_AUTH\"] = \"EVENT_LOGIN_AUTH\";\n EventMessageType[\"EVENT_LOGIN_AUTH_ACK\"] = \"EVENT_LOGIN_AUTH_ACK\";\n EventMessageType[\"EVENT_LOGIN_AUTH_NACK\"] = \"EVENT_LOGIN_AUTH_NACK\";\n EventMessageType[\"EVENT_LOGOUT\"] = \"EVENT_LOGOUT\";\n EventMessageType[\"DATA_LOGON\"] = \"DATA_LOGON\";\n EventMessageType[\"DATA_LOGOFF\"] = \"DATA_LOGOFF\";\n EventMessageType[\"META_REQUEST\"] = \"META_REQUEST\";\n EventMessageType[\"JSON_SCHEMA_REQUEST\"] = \"JSON_SCHEMA_REQUEST\";\n EventMessageType[\"RESOURCES_REQUEST\"] = \"RESOURCES_REQUEST\";\n EventMessageType[\"EVENT_CHANGE_USER_PASSWORD\"] = \"EVENT_CHANGE_USER_PASSWORD\";\n EventMessageType[\"EVENT_SELF_SERVICE_PASSWORD_RESET\"] = \"EVENT_SELF_SERVICE_PASSWORD_RESET\";\n EventMessageType[\"EVENT_PASSWORD_RESET_ACTION\"] = \"EVENT_PASSWORD_RESET_ACTION\";\n})(EventMessageType || (EventMessageType = {}));\nexport var MessageCode;\n(function (MessageCode) {\n MessageCode[\"SESSION_NOT_FOUND\"] = \"SESSION_NOT_FOUND\";\n MessageCode[\"UNKNOWN_MESSAGE_TYPE\"] = \"UNKNOWN_MESSAGE_TYPE\";\n})(MessageCode || (MessageCode = {}));\nexport const messageOrThrow = (message) => {\n if (message.ERROR) {\n throw new Error(message.ERROR.map((error) => error.TEXT).join());\n }\n return message;\n};\nlet MessageBuilderService = class MessageBuilderService {\n constructor(session, uuid) {\n this.session = session;\n this.uuid = uuid;\n }\n createLoginMessage(credentials) {\n let DETAILS;\n switch (credentials.type) {\n case AuthType.BASIC:\n DETAILS = {\n USER_NAME: credentials.username,\n PASSWORD: credentials.password,\n };\n break;\n case AuthType.REFRESH:\n DETAILS = {\n USER_NAME: credentials.username,\n REFRESH_AUTH_TOKEN: credentials.refreshToken,\n };\n break;\n case AuthType.SSO:\n DETAILS = {\n SSO_TOKEN: credentials.ssoToken,\n };\n break;\n case AuthType.JWT:\n DETAILS = {\n JWT: credentials.jwt,\n DOMAIN: credentials.domain,\n };\n break;\n }\n return {\n DETAILS,\n SOURCE_REF: this.uuid.createId(),\n MESSAGE_TYPE: EventMessageType.EVENT_LOGIN_AUTH,\n };\n }\n createLogoutMessage(loginResult) {\n var _a, _b;\n return {\n SOURCE_REF: this.uuid.createId(),\n MESSAGE_TYPE: EventMessageType.EVENT_LOGOUT,\n SESSION_AUTH_TOKEN: (_a = loginResult.authToken) !== null && _a !== void 0 ? _a : this.session.getSessionStorageItem('authToken'),\n SESSION_ID: (_b = loginResult.sessionId) !== null && _b !== void 0 ? _b : this.session.getSessionStorageItem('sessionId'),\n };\n }\n createDataLogonMessage(resourceName, params) {\n return {\n SOURCE_REF: this.uuid.createId(),\n MESSAGE_TYPE: EventMessageType.DATA_LOGON,\n DETAILS: Object.assign({ DATASOURCE_NAME: resourceName }, params),\n SESSION_AUTH_TOKEN: this.session.getSessionStorageItem('authToken'),\n };\n }\n createDataLogoffMessage(sourceRef) {\n return {\n SOURCE_REF: sourceRef,\n MESSAGE_TYPE: EventMessageType.DATA_LOGOFF,\n SESSION_AUTH_TOKEN: this.session.getSessionStorageItem('authToken'),\n };\n }\n createRequestMessage(resourceName, params) {\n return Object.assign({ SOURCE_REF: this.uuid.createId(), SESSION_AUTH_TOKEN: this.session.getSessionStorageItem('authToken'), MESSAGE_TYPE: resourceName.startsWith('REQ_') ? resourceName : `REQ_${resourceName}` }, params);\n }\n createMetaRequestMessage(resourceName, messageType = EventMessageType.META_REQUEST) {\n return {\n SOURCE_REF: this.uuid.createId(),\n MESSAGE_TYPE: messageType,\n DETAILS: {\n FEATURE: resourceName,\n },\n SESSION_AUTH_TOKEN: this.session.getSessionStorageItem('authToken'),\n };\n }\n createCommitMessage(eventName, params) {\n return Object.assign({ SOURCE_REF: this.uuid.createId(), SESSION_AUTH_TOKEN: this.session.getSessionStorageItem('authToken'), MESSAGE_TYPE: eventName }, params);\n }\n createRefreshTokenMessage() {\n return {\n SOURCE_REF: this.uuid.createId(),\n SESSION_AUTH_TOKEN: this.session.getSessionStorageItem('authToken'),\n MESSAGE_TYPE: EventMessageType.EVENT_LOGIN_AUTH,\n DETAILS: {\n REFRESH_AUTH_TOKEN: this.session.getSessionStorageItem('refreshToken'),\n },\n };\n }\n createChangePasswordMessage(username, oldPassword, newPassword) {\n return {\n USER_NAME: username,\n SOURCE_REF: this.uuid.createId(),\n MESSAGE_TYPE: EventMessageType.EVENT_CHANGE_USER_PASSWORD,\n DETAILS: {\n OLD_PASSWORD: oldPassword,\n NEW_PASSWORD: newPassword,\n },\n };\n }\n createForgotPasswordMessage(username, returnUrl, requester = username) {\n return {\n USER_NAME: requester,\n SOURCE_REF: this.uuid.createId(),\n MESSAGE_TYPE: EventMessageType.EVENT_SELF_SERVICE_PASSWORD_RESET,\n DETAILS: {\n USER_NAME: username,\n RETURN_URL: returnUrl,\n },\n };\n }\n createForgotPasswordTokenMessage(username, resetToken, newPassword, requester = username) {\n return {\n USER_NAME: requester,\n SOURCE_REF: this.uuid.createId(),\n MESSAGE_TYPE: EventMessageType.EVENT_PASSWORD_RESET_ACTION,\n DETAILS: {\n USER_NAME: username,\n RESET_TOKEN: resetToken,\n NEW_PASSWORD: newPassword,\n },\n };\n }\n createMoreRowsMessage(sourceRef) {\n return {\n SOURCE_REF: this.uuid.createId(),\n MESSAGE_TYPE: MessageType.MORE_ROWS,\n DETAILS: {\n SOURCE_REF: sourceRef,\n },\n SESSION_AUTH_TOKEN: this.session.getSessionStorageItem('authToken'),\n };\n }\n};\nMessageBuilderService = __decorate([\n __param(0, Session),\n __param(1, UUID)\n], MessageBuilderService);\nexport const MessageBuilder = DI.createInterface((x) => x.singleton(MessageBuilderService));\n//# sourceMappingURL=message.js.map","import { DI } from '@microsoft/fast-foundation';\nexport const ConnectConfig = DI.createInterface();\nexport const HttpConnectConfig = DI.createInterface();\n//# sourceMappingURL=connect.types.js.map","import { __awaiter, __decorate, __param } from \"tslib\";\nimport { JSONSerializer } from '@genesislcap/foundation-utils';\nimport { observable, volatile } from '@microsoft/fast-element';\nimport { DI, optional } from '@microsoft/fast-foundation';\nimport { BehaviorSubject, concat, finalize, from, interval, switchMap, takeWhile } from 'rxjs';\nimport { MetadataCache } from '../metadata';\nimport { Session } from '../session';\nimport { logger } from '../utils';\nimport { Http } from './http';\nimport { EventMessageType, MessageBuilder, MessageType, } from './message';\nimport { HttpConnectConfig } from './connect.types';\nimport { HTTP_CONFIG } from './env-variables';\nexport const defaultHttpConnectConfig = {\n polling: Object.assign({ POLLING_MAP: {\n EVENT_AMEND_USER: {\n TEMP_FREQUENCY: 500,\n AMOUNT_OF_POLLS: 5,\n QUERIES: ['ALL_USERS'],\n },\n }, POLLING_INTERVAL_MAP: {\n ALL_TRADES: 5000,\n ALL_USERS: 5000,\n ALL_PROCESSES_STATUS: 10000,\n }, POLLING_FREQUENCY: 5000 }, (HTTP_CONFIG && HTTP_CONFIG.length ? JSON.parse(HTTP_CONFIG) : {})),\n};\nlet HttpConnectService = class HttpConnectService {\n get isConnected() {\n return this._isConnected;\n }\n set isConnected(value) {\n this._isConnected = value;\n this.isConnectedSubject.next(this._isConnected);\n }\n constructor(http, messageBuilder, session, metaCache, serializer, config = defaultHttpConnectConfig) {\n this.http = http;\n this.messageBuilder = messageBuilder;\n this.session = session;\n this.metaCache = metaCache;\n this.serializer = serializer;\n this.config = config;\n this.isWorking = false;\n this._isConnected = false;\n this.isConnectedSubject = new BehaviorSubject(this._isConnected);\n this.ongoingTurbo = {};\n this.streams = new Map();\n }\n checkHost() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n return this.getMessage({\n MESSAGE_TYPE: MessageType.HEARTBEAT_PING,\n SOURCE_REF: 'host check',\n }).then((response) => {\n return response.MESSAGE_TYPE === MessageType.HEARTBEAT_PONG;\n });\n }\n catch (e) {\n logger.error(e);\n return false;\n }\n });\n }\n send(message, needsHandling) {\n return this.http.post(HttpConnectService.getUrl(this.host, message), {\n body: HttpConnectService.getBody(message),\n headers: HttpConnectService.getHeaders(message),\n });\n }\n httpMode() {\n return true;\n }\n setValidSession(valid) {\n logger.warn(`setValidSession() called while in http polling mode.`);\n }\n connect(host) {\n return __awaiter(this, void 0, void 0, function* () {\n this.host = host;\n if (!this.host.endsWith('/')) {\n this.host = this.host.concat('/');\n }\n return this.checkHost().then((connected) => {\n this.isConnected = connected;\n this.session.setSessionStorageItem('hostUrl', this.host);\n return connected;\n });\n });\n }\n disconnect() {\n this.isConnected = false;\n this.streams.clear();\n this.ongoingTurbo = {};\n this.host = undefined;\n }\n snapshot(resourceName, params) {\n return __awaiter(this, void 0, void 0, function* () {\n const snapshotMessage = this.messageBuilder.createDataLogonMessage(resourceName, params);\n logger.debug(`HTTP MODE - ${snapshotMessage.MESSAGE_TYPE} (snapshot) message created -> `, snapshotMessage);\n return this.send(snapshotMessage).then((message) => {\n this.dataLogoff(snapshotMessage.SOURCE_REF).catch((e) => logger.error(e));\n return message;\n });\n });\n }\n stream(resourceName, onMessage, onError, params) {\n const streamMessage = this.messageBuilder.createDataLogonMessage(resourceName, params);\n logger.debug(`HTTP MODE - ${streamMessage.MESSAGE_TYPE} (stream) message created -> `, streamMessage);\n const SOURCE_REF = streamMessage.SOURCE_REF;\n this.streams.set(SOURCE_REF, {\n SOURCE_REF,\n POLLING_FREQUENCY: new BehaviorSubject(this.config.polling.POLLING_FREQUENCY),\n RESOURCE_NAME: resourceName,\n });\n const interval$ = this.streams.get(SOURCE_REF).POLLING_FREQUENCY;\n const stream = concat(from(this.send(streamMessage)), interval$\n .pipe(switchMap((ms) => interval(ms)))\n .pipe(switchMap(() => from(this.getMessage(streamMessage))))).pipe(takeWhile(() => this.streams.has(SOURCE_REF)), finalize(() => {\n logger.debug(`Terminating stream for ${resourceName} - ${SOURCE_REF}`);\n this.dataLogoff(SOURCE_REF);\n }));\n this.streams.get(SOURCE_REF).STREAM = stream;\n return stream;\n }\n getMessage(message) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.http.get(HttpConnectService.getUrl(this.host, message), {\n headers: HttpConnectService.getHeaders(message),\n });\n });\n }\n getMoreRows(sourceRef) {\n return __awaiter(this, void 0, void 0, function* () {\n const moreRowsMessage = this.messageBuilder.createMoreRowsMessage(sourceRef);\n logger.debug(`HTTP MODE - ${moreRowsMessage.MESSAGE_TYPE} message created -> `, moreRowsMessage);\n return this.send(moreRowsMessage);\n });\n }\n dataLogoff(streamSourceRef) {\n return __awaiter(this, void 0, void 0, function* () {\n const dataLogoffMessage = this.messageBuilder.createDataLogoffMessage(streamSourceRef);\n return this.send(dataLogoffMessage).then((res) => {\n if (this.streams.has(streamSourceRef)) {\n logger.debug(`Removing stream ${streamSourceRef}`);\n this.streams.delete(streamSourceRef);\n }\n return res;\n });\n });\n }\n getMetadata(resourceName, useCache = true) {\n return __awaiter(this, void 0, void 0, function* () {\n const metaRequestMessage = this.messageBuilder.createMetaRequestMessage(resourceName);\n logger.debug(`HTTP MODE - ${metaRequestMessage.MESSAGE_TYPE} (metadata) message created -> `, metaRequestMessage);\n return this.send(metaRequestMessage).then((res) => res.DETAILS);\n });\n }\n getJSONSchema(resourceName) {\n return __awaiter(this, void 0, void 0, function* () {\n const metaRequestMessage = this.messageBuilder.createMetaRequestMessage(resourceName, EventMessageType.JSON_SCHEMA_REQUEST);\n logger.debug(`HTTP MODE! - ${metaRequestMessage.MESSAGE_TYPE} (json schema) message created -> `, metaRequestMessage);\n return this.send(metaRequestMessage);\n });\n }\n request(resourceName, params) {\n const requestMessage = this.messageBuilder.createRequestMessage(resourceName, params);\n logger.debug(`HTTP MODE! - ${requestMessage.MESSAGE_TYPE} (request server) message created -> `, requestMessage);\n return this.send(requestMessage);\n }\n commitEvent(eventName, params) {\n return __awaiter(this, void 0, void 0, function* () {\n const commitMessage = this.messageBuilder.createCommitMessage(eventName, params);\n logger.debug(`HTTP MODE! - ${commitMessage.MESSAGE_TYPE} (commit) message created -> `, commitMessage);\n return this.send(commitMessage).then((reply) => {\n this.maybeTurbo(eventName, reply);\n return reply;\n });\n });\n }\n maybeTurbo(eventName, message) {\n var _a;\n if (!((_a = message === null || message === void 0 ? void 0 : message.MESSAGE_TYPE) === null || _a === void 0 ? void 0 : _a.endsWith('_ACK')))\n return;\n if (this.ongoingTurbo[eventName]) {\n logger.debug(`${eventName} polling frequency is already accelerated.`);\n return;\n }\n const turbo = this.config.polling.POLLING_MAP[eventName];\n if (!((turbo === null || turbo === void 0 ? void 0 : turbo.TEMP_FREQUENCY) && turbo.AMOUNT_OF_POLLS)) {\n return;\n }\n const freq = turbo.TEMP_FREQUENCY;\n const duration = freq * turbo.AMOUNT_OF_POLLS;\n const originalPollingIntervalMap = JSON.parse(JSON.stringify(this.config.polling.POLLING_INTERVAL_MAP));\n const tempPollingMap = JSON.parse(JSON.stringify(this.config.polling.POLLING_INTERVAL_MAP));\n for (const q of turbo.QUERIES) {\n tempPollingMap[q] = freq;\n if (!originalPollingIntervalMap[q]) {\n originalPollingIntervalMap[q] = this.config.polling.POLLING_FREQUENCY;\n }\n }\n logger.debug(`${eventName} TRIGGERED -> ENFORCING TURBO | FREQUENCY=${freq}ms DURATION=${duration}`);\n this.ongoingTurbo[eventName] = true;\n this.updateIntervals({\n polling: {\n POLLING_INTERVAL_MAP: tempPollingMap,\n },\n });\n setTimeout(() => {\n logger.debug(`RESTORED ORIGINAL POLLING INTERVALS FOR ${eventName}`);\n this.updateIntervals({\n polling: {\n POLLING_INTERVAL_MAP: originalPollingIntervalMap,\n },\n });\n this.ongoingTurbo[eventName] = false;\n }, duration);\n }\n updateIntervals(config) {\n const { POLLING_INTERVAL_MAP } = config.polling;\n if (!POLLING_INTERVAL_MAP)\n return;\n this.config.polling.POLLING_INTERVAL_MAP = POLLING_INTERVAL_MAP;\n this.handlePollingIntervalMapUpdate(POLLING_INTERVAL_MAP);\n }\n handlePollingIntervalMapUpdate(pollingIntervalMap) {\n if (!pollingIntervalMap) {\n return;\n }\n for (const resource in pollingIntervalMap) {\n if (!pollingIntervalMap.hasOwnProperty(resource))\n continue;\n const newFreq = pollingIntervalMap[resource];\n this.config.polling.POLLING_INTERVAL_MAP[resource] = newFreq;\n logger.debug(`Setting polling frequency for ${resource} = ${newFreq}`);\n [...this.streams.values()]\n .filter((s) => s.RESOURCE_NAME === resource)\n .forEach((s) => { var _a; return (_a = s === null || s === void 0 ? void 0 : s.POLLING_FREQUENCY) === null || _a === void 0 ? void 0 : _a.next(newFreq); });\n }\n }\n static getHeaders(message) {\n const headers = {\n 'Content-type': 'application/json; charset=UTF-8',\n 'source-ref': message.SOURCE_REF,\n };\n if (message.SESSION_AUTH_TOKEN) {\n headers['SESSION-AUTH-TOKEN'] = message.SESSION_AUTH_TOKEN;\n }\n if (message.MESSAGE_TYPE === EventMessageType.EVENT_LOGOUT) {\n headers['SESSION-ID'] = message.SESSION_ID;\n }\n return headers;\n }\n static getBody(message) {\n return JSON.stringify(message);\n }\n static getUrl(host, message) {\n const type = message.MESSAGE_TYPE;\n let apiEndpoint = message.MESSAGE_TYPE.replace(/_/g, '-').toLowerCase();\n if (type === EventMessageType.DATA_LOGON) {\n apiEndpoint = message.DETAILS.DATASOURCE_NAME.replace(/_/g, '-').toLowerCase();\n }\n return `${host}${apiEndpoint}`;\n }\n};\n__decorate([\n observable\n], HttpConnectService.prototype, \"host\", void 0);\n__decorate([\n observable\n], HttpConnectService.prototype, \"isWorking\", void 0);\n__decorate([\n observable\n], HttpConnectService.prototype, \"_isConnected\", void 0);\n__decorate([\n volatile\n], HttpConnectService.prototype, \"isConnected\", null);\nHttpConnectService = __decorate([\n __param(0, Http),\n __param(1, MessageBuilder),\n __param(2, Session),\n __param(3, MetadataCache),\n __param(4, JSONSerializer),\n __param(5, optional(HttpConnectConfig))\n], HttpConnectService);\nexport const HttpConnect = DI.createInterface((x) => x.singleton(HttpConnectService));\n//# sourceMappingURL=http.connect.js.map","import { Observable } from 'rxjs';\nconst DEFAULT_RECONNECT_INTERVAL = 10000;\nconst MAX_RECONNECT_INTERVAL = 60000;\nexport const MAX_RECONNECT_ATTEMPTS = 10;\nexport var SocketReconnectStrategy;\n(function (SocketReconnectStrategy) {\n SocketReconnectStrategy[\"Linear\"] = \"linear\";\n SocketReconnectStrategy[\"Exponential\"] = \"exponential\";\n})(SocketReconnectStrategy || (SocketReconnectStrategy = {}));\nexport const retryInterval = (reconnectOptions, scheduler) => {\n return new Observable((observer) => {\n let count = 0;\n let timeoutId;\n function recursiveTimeout() {\n observer.next(count);\n clearTimeout(timeoutId);\n timeoutId = setTimeout(recursiveTimeout, scheduler(reconnectOptions, count));\n count = count + 1;\n }\n recursiveTimeout();\n return () => {\n clearTimeout(timeoutId);\n };\n });\n};\nexport const exponentialScheduler = (reconnectOptions, attempt) => {\n const { reconnectInterval = DEFAULT_RECONNECT_INTERVAL } = reconnectOptions;\n const baseInterval = reconnectInterval > MAX_RECONNECT_INTERVAL ? MAX_RECONNECT_INTERVAL : reconnectInterval;\n const attemptsBreakPoint = Math.round(Math.log2(MAX_RECONNECT_INTERVAL / baseInterval));\n return baseInterval * Math.pow(2, (attempt % attemptsBreakPoint));\n};\nexport const linearScheduler = (reconnectOptions, attempt) => {\n const { reconnectInterval = DEFAULT_RECONNECT_INTERVAL } = reconnectOptions;\n const baseInterval = reconnectInterval > MAX_RECONNECT_INTERVAL ? MAX_RECONNECT_INTERVAL : reconnectInterval;\n return baseInterval;\n};\n//# sourceMappingURL=reconnectStrategy.js.map","import { __awaiter, __decorate, __param } from \"tslib\";\nimport { observable } from '@microsoft/fast-element';\nimport { DI } from '@microsoft/fast-foundation';\nimport { BehaviorSubject, from, Observable, of, Subject, Subscription, throwError, timer, } from 'rxjs';\nimport { filter, mergeMap, switchMap, takeWhile, tap } from 'rxjs/operators';\nimport { WebSocketSubject } from 'rxjs/webSocket';\nimport { UUID } from '@genesislcap/foundation-utils';\nimport { Serializer } from './serializers';\nimport { logger } from '../utils';\nimport { EventMessageType, MessageBuilder, MessageType } from './message';\nimport { Session } from '../session';\nimport { SocketReconnectStrategy, retryInterval, exponentialScheduler, linearScheduler, MAX_RECONNECT_ATTEMPTS, } from './reconnectStrategy';\nexport class SocketSubject extends Subject {\n constructor() {\n super();\n }\n}\nexport class SocketObservable extends Observable {\n constructor(...args) {\n super(...args);\n }\n}\nexport { Subscription as SocketSubscription };\nexport class SocketMessageHandler {\n constructor(message, onMessage, onError, isSubscription) {\n this._message = message;\n this._onMessage = onMessage;\n this._onError = onError;\n this._isSubscription = isSubscription;\n }\n get sentMessage() {\n return this._message;\n }\n get onReceivedMessage() {\n return this._onMessage;\n }\n get onReceivedError() {\n return this._onError;\n }\n get isSubscription() {\n return this._isSubscription;\n }\n}\nlet SocketService = class SocketService {\n isConnectedChanged(_, isConnected) {\n this.isConnectedSubject.next(isConnected);\n }\n constructor(messageBuilder, session, serializer, uuid) {\n this.messageBuilder = messageBuilder;\n this.session = session;\n this.serializer = serializer;\n this.uuid = uuid;\n this.defaultInterval = 10000;\n this.secondsMultiplier = 1000;\n this.isConnectedSubject = new BehaviorSubject(false);\n this.isConnected = false;\n this.hasValidSession = false;\n this.heartbeatIsEnabled = true;\n this.heartbeatInterval = this.defaultInterval;\n this.isReconnecting = false;\n this.socketMessages = () => this.wsMessages;\n }\n get heartbeatLoggingIsEnabled() {\n var _a, _b;\n return (_b = (_a = this.connectOptions) === null || _a === void 0 ? void 0 : _a.enableHeartbeatLogging) !== null && _b !== void 0 ? _b : false;\n }\n get messageLoggingIsEnabled() {\n var _a, _b;\n return (_b = (_a = this.connectOptions) === null || _a === void 0 ? void 0 : _a.enableMessageLogging) !== null && _b !== void 0 ? _b : false;\n }\n connect(host, connectOptions, reconnectOptions) {\n this.url = host;\n this.connectOptions = connectOptions;\n this.reconnectOptions = reconnectOptions;\n return new Promise((resolve) => {\n var _a, _b, _c, _d;\n logger.info(`${this.isReconnecting ? 'Reconnecting' : 'Connecting'} to ${this.url}`);\n const cleanMessages = !this.isReconnecting || !((_a = this.reconnectOptions) === null || _a === void 0 ? void 0 : _a.reconnectStreams);\n if (cleanMessages) {\n this.cleanMessages();\n }\n (_b = this.socketSubscription) === null || _b === void 0 ? void 0 : _b.unsubscribe();\n this.websocket = new WebSocketSubject({\n url: this.url,\n openObserver: {\n next: () => {\n this.isConnected = true;\n this.session.setSessionStorageItem('hostUrl', this.url);\n this.prepareHeartbeat();\n logger.info(`WebSocket connection is now open`);\n resolve(this.isConnected);\n },\n },\n closeObserver: {\n next: (closeEvent) => {\n this.disconnectedByServer = !closeEvent.wasClean;\n this.isConnected = false;\n logger.info(`WebSocket connection was closed due an error - Code: ${closeEvent.code} ${closeEvent.reason ? ' | Reason: ' + closeEvent.reason : ''}`);\n resolve(this.isConnected);\n },\n },\n serializer: this.serializer.serialize,\n deserializer: this.serializer.deserialize,\n });\n const onNextMessage = (receivedMessage) => __awaiter(this, void 0, void 0, function* () {\n var _e;\n const responseMessageReceivedLog = `Response Message received for SourceRef: ${receivedMessage.SOURCE_REF} | MessageType: ${receivedMessage.MESSAGE_TYPE}`;\n this.logMessageTypeFlow(receivedMessage.MESSAGE_TYPE, logger.info, responseMessageReceivedLog);\n const { SOURCE_REF, MESSAGE_TYPE } = receivedMessage;\n const messageHandler = this.getMessageHandler(SOURCE_REF, MESSAGE_TYPE);\n if (!messageHandler) {\n return;\n }\n let nacked = false;\n switch (receivedMessage.MESSAGE_TYPE) {\n case EventMessageType.EVENT_LOGIN_AUTH_ACK: {\n this.hasValidSession = true;\n const systemDetails = receivedMessage.DETAILS;\n if (systemDetails.HEARTBEAT_INTERVAL_SECS &&\n ((_e = this.connectOptions) === null || _e === void 0 ? void 0 : _e.heartbeatInterval) === undefined) {\n this.heartbeatInterval =\n systemDetails.HEARTBEAT_INTERVAL_SECS * this.secondsMultiplier;\n this.prepareHeartbeat();\n }\n break;\n }\n case MessageType.LOGOUT_ACK: {\n this.hasValidSession = false;\n messageHandler.onReceivedMessage.call(this, receivedMessage);\n this.cleanMessages();\n return;\n }\n case MessageType.LOGON_ACK:\n return;\n case MessageType.LOGOFF_ACK: {\n if (receivedMessage.LOGGED_OUT && this.hasValidSession) {\n const refreshTokenMessage = this.messageBuilder.createRefreshTokenMessage();\n const refreshTokenResult = yield this.send(refreshTokenMessage);\n if (!refreshTokenResult) {\n this.hasValidSession = false;\n }\n else if (refreshTokenResult.MESSAGE_TYPE === EventMessageType.EVENT_LOGIN_AUTH_ACK) {\n this.session.setAuthResult(refreshTokenResult);\n this.wsMessageHandlers.forEach((mh) => {\n if (mh.isSubscription) {\n mh.sentMessage.SESSION_AUTH_TOKEN = refreshTokenResult.SESSION_AUTH_TOKEN;\n this.websocket.next(mh.sentMessage);\n }\n });\n }\n }\n break;\n }\n case MessageType.QUERY_UPDATE: {\n if (!messageHandler.isSubscription) {\n const dataLogoffMessage = this.messageBuilder.createDataLogoffMessage(SOURCE_REF);\n this.send(dataLogoffMessage);\n }\n break;\n }\n case MessageType.MSG_NACK: {\n nacked = true;\n break;\n }\n }\n if (nacked) {\n messageHandler.onReceivedError.call(this, {\n receivedMessage,\n sentMessage: messageHandler.sentMessage,\n });\n }\n else {\n messageHandler.onReceivedMessage.call(this, receivedMessage);\n }\n this.wsMessages.next(receivedMessage);\n if (!messageHandler.isSubscription) {\n this.removeMessageHandler(SOURCE_REF);\n }\n });\n const onError = (error) => {\n logger.debug('Error found: ', error);\n this.reconnect();\n };\n const onComplete = () => {\n var _a;\n if (this.disconnectedByServer && ((_a = this.connectOptions) === null || _a === void 0 ? void 0 : _a.alwaysOn)) {\n this.reconnect();\n return;\n }\n logger.info('Connection is now closed');\n };\n this.socketSubscription = this.websocket.subscribe((_d = (_c = this.connectOptions) === null || _c === void 0 ? void 0 : _c.connectObserver) !== null && _d !== void 0 ? _d : {\n next: onNextMessage,\n error: onError,\n complete: onComplete,\n });\n });\n }\n prepareHeartbeat() {\n var _a, _b, _c, _d;\n if (this.heartbeatSubscription) {\n this.heartbeatSubscription.unsubscribe();\n }\n const sendHeartbeat = () => __awaiter(this, void 0, void 0, function* () {\n if (!this.isConnected)\n return;\n const ping = {\n MESSAGE_TYPE: MessageType.HEARTBEAT_PING,\n SOURCE_REF: this.uuid.createId(),\n };\n const pong = yield this.send(ping);\n this.heartbeatIsEnabled =\n pong.MESSAGE_TYPE === MessageType.HEARTBEAT_PONG && pong.SOURCE_REF === ping.SOURCE_REF;\n });\n if ((_b = (_a = this.connectOptions) === null || _a === void 0 ? void 0 : _a.enableHeartbeat) !== null && _b !== void 0 ? _b : this.heartbeatIsEnabled) {\n const intervalInMillisecocnds = (_d = (_c = this.connectOptions) === null || _c === void 0 ? void 0 : _c.heartbeatInterval) !== null && _d !== void 0 ? _d : this.heartbeatInterval;\n this.heartbeatSubscription = timer(intervalInMillisecocnds, intervalInMillisecocnds)\n .pipe(takeWhile(() => this.websocket && this.isConnected), tap(() => this.heartbeatLoggingIsEnabled &&\n logger.debug(`Sending a heartbeat ping every ${intervalInMillisecocnds} ms`)))\n .subscribe(() => sendHeartbeat());\n }\n }\n reconnect() {\n var _a, _b, _c, _d, _e;\n const notAlwaysOnAndHeartbeating = !((_a = this.connectOptions) === null || _a === void 0 ? void 0 : _a.alwaysOn) && ((_b = this.connectOptions) === null || _b === void 0 ? void 0 : _b.enableHeartbeat) === false;\n if (this.isReconnecting || notAlwaysOnAndHeartbeating) {\n return;\n }\n this.isReconnecting = true;\n const scheduler = ((_c = this.reconnectOptions) === null || _c === void 0 ? void 0 : _c.reconnectStrategy) === SocketReconnectStrategy.Exponential\n ? exponentialScheduler\n : linearScheduler;\n const reconnectObservable = this.isConnectedSubject.asObservable().pipe(switchMap((isConnected) => !isConnected\n ? retryInterval(this.reconnectOptions, scheduler).pipe(mergeMap((value) => {\n var _a, _b, _c;\n let attemptsAmount;\n if ((_a = this.connectOptions) === null || _a === void 0 ? void 0 : _a.alwaysOn) {\n attemptsAmount = value + 1;\n }\n else {\n attemptsAmount =\n (_c = (_b = this.reconnectOptions) === null || _b === void 0 ? void 0 : _b.reconnectAttempts) !== null && _c !== void 0 ? _c : MAX_RECONNECT_ATTEMPTS;\n }\n if (value < attemptsAmount) {\n return of(value);\n }\n return throwError(() => new Error(`Max reconnect attempts ${attemptsAmount} reached.`));\n }))\n : of(-1)), takeWhile(() => this.websocket && !this.isConnected));\n reconnectObservable.subscribe((_e = (_d = this.reconnectOptions) === null || _d === void 0 ? void 0 : _d.reconnectObserver) !== null && _e !== void 0 ? _e : {\n next: (value) => {\n logger.debug(`Attempt no. ${value + 1} to reconnect`);\n this.websocket.complete();\n this.connect(this.url, this.connectOptions, this.reconnectOptions);\n },\n error: (error) => {\n var _a;\n logger.debug(error);\n (_a = this.socketSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n this.isReconnecting = false;\n },\n complete: () => {\n logger.info(this.isConnected ? 'Reconnected' : 'Disconnected');\n this.isReconnecting = false;\n this.wsMessageHandlers.forEach((mh) => {\n if (mh.isSubscription) {\n this.websocket.next(mh.sentMessage);\n }\n });\n },\n });\n }\n reset() {\n this.isConnected = false;\n this.websocket && this.websocket.complete();\n this.websocket = null;\n this.cleanMessages();\n }\n cleanMessages() {\n this.wsMessages && this.wsMessages.complete();\n this.wsMessages = new SocketSubject();\n this.wsMessageHandlers = new Map();\n }\n send(message, needsHandling = true) {\n if (!this.isConnected) {\n Promise.reject(new Error('WebSocket connection is closed'));\n return;\n }\n const sendingMessasgeLog = `Sending Message for SourceRef: ${message.SOURCE_REF} | MessageType: ${message.MESSAGE_TYPE}`;\n this.logMessageTypeFlow(message.MESSAGE_TYPE, logger.info, sendingMessasgeLog);\n return new Promise((resolve, reject) => {\n const onMessage = (msg) => {\n resolve(msg);\n };\n const onError = (err) => {\n reject(err);\n };\n if (needsHandling) {\n this.setMessageHandler(message, onMessage, onError);\n }\n this.websocket.next(message);\n });\n }\n sendForStream(message, onMessage, onError) {\n if (!this.isConnected) {\n return throwError(() => new Error('WebSocket connection is closed'));\n }\n if (!this.hasValidSession) {\n return throwError(() => new Error(`WebSocket connection is open but there is no valid/active session, please check your auth flow`));\n }\n const sendingMessageLog = `Sending Message (stream) for SourceRef: ${message.SOURCE_REF} | MessageType: ${message.MESSAGE_TYPE}`;\n this.logMessageTypeFlow(message.MESSAGE_TYPE, logger.info, sendingMessageLog);\n this.setMessageHandler(message, onMessage, onError, true);\n this.websocket.next(message);\n return from(this.wsMessages.pipe(filter((msg) => msg.SOURCE_REF === message.SOURCE_REF)));\n }\n setMessageHandler(message, onMessage, onError, isSubscription = false) {\n const settingMessageHandlerLog = `Setting Message Handler for SourceRef: ${message.SOURCE_REF} | MessageType: ${message.MESSAGE_TYPE}`;\n this.logMessageTypeFlow(message.MESSAGE_TYPE, logger.debug, settingMessageHandlerLog);\n this.wsMessageHandlers.set(message.SOURCE_REF, new SocketMessageHandler(message, onMessage, onError, isSubscription));\n }\n removeMessageHandler(sourceRef) {\n this.wsMessageHandlers.delete(sourceRef);\n }\n getMessageHandler(sourceRef, messageType) {\n const gettingMessageHandlerLog = `Getting Message Handler for SourceRef: ${sourceRef} | MessageType: ${messageType}`;\n this.logMessageTypeFlow(messageType, logger.debug, gettingMessageHandlerLog);\n return this.wsMessageHandlers.get(sourceRef);\n }\n logMessageTypeFlow(messageType, logFunc, logMsg) {\n switch (messageType) {\n case MessageType.HEARTBEAT_PING:\n case MessageType.HEARTBEAT_PONG:\n if (this.heartbeatLoggingIsEnabled) {\n logFunc(logMsg);\n }\n break;\n default:\n if (this.messageLoggingIsEnabled) {\n logFunc(logMsg);\n }\n break;\n }\n }\n};\n__decorate([\n observable\n], SocketService.prototype, \"websocket\", void 0);\n__decorate([\n observable\n], SocketService.prototype, \"wsMessages\", void 0);\n__decorate([\n observable\n], SocketService.prototype, \"wsMessageHandlers\", void 0);\n__decorate([\n observable\n], SocketService.prototype, \"isConnected\", void 0);\n__decorate([\n observable\n], SocketService.prototype, \"disconnectedByServer\", void 0);\n__decorate([\n observable\n], SocketService.prototype, \"hasValidSession\", void 0);\n__decorate([\n observable\n], SocketService.prototype, \"heartbeatIsEnabled\", void 0);\n__decorate([\n observable\n], SocketService.prototype, \"isReconnecting\", void 0);\nSocketService = __decorate([\n __param(0, MessageBuilder),\n __param(1, Session),\n __param(2, Serializer),\n __param(3, UUID)\n], SocketService);\nexport const Socket = DI.createInterface((x) => x.singleton(SocketService));\n//# sourceMappingURL=socket.js.map","let _HTTP_CONFIG;\ntry {\n _HTTP_CONFIG = HTTP_CONFIG;\n}\ncatch (_a) { }\nexport { _HTTP_CONFIG as HTTP_CONFIG };\nlet _FORCE_HTTP;\ntry {\n _FORCE_HTTP = FORCE_HTTP;\n}\ncatch (_b) { }\nexport { _FORCE_HTTP as FORCE_HTTP };\n//# sourceMappingURL=env-variables.js.map","import { __awaiter, __decorate, __param } from \"tslib\";\nimport { observable, volatile } from '@microsoft/fast-element';\nimport { DI, optional } from '@microsoft/fast-foundation';\nimport { MetadataCache } from '../metadata';\nimport { isWebSocketExpression, logger, until } from '../utils';\nimport { HttpConnect } from './http.connect';\nimport { EventMessageType, MessageBuilder } from './message';\nimport { Socket } from './socket';\nimport { ConnectConfig } from './connect.types';\nimport { FORCE_HTTP } from './env-variables';\nexport const defaultConnectConfig = {\n connect: {\n alwaysOn: false,\n enableHeartbeat: true,\n enableHeartbeatLogging: false,\n heartbeatInterval: 10000,\n enableMessageLogging: false,\n },\n reconnect: {\n reconnectAttempts: 10,\n reconnectInterval: 10000,\n reconnectStreams: true,\n },\n};\nlet DefaultConnect = class DefaultConnect {\n get isConnected() {\n return this.socket.isConnected;\n }\n get isConnectedSubject() {\n return this.socket.isConnectedSubject;\n }\n constructor(socket, messageBuilder, metaCache, config = defaultConnectConfig) {\n this.socket = socket;\n this.messageBuilder = messageBuilder;\n this.metaCache = metaCache;\n this.config = config;\n this.isWorking = false;\n }\n httpMode() {\n return false;\n }\n setValidSession(valid) {\n this.socket.hasValidSession = valid;\n }\n send(message, needsHandling) {\n return this.socket.send(message, needsHandling);\n }\n connect(host) {\n return __awaiter(this, void 0, void 0, function* () {\n this.socket.reset();\n if (!isWebSocketExpression.test(host)) {\n logger.error(`Specified host (${host}) is not valid WebSocket url. Connection will not proceed.`);\n logger.warn(`Make sure the host url starts with wss:// or ws://`);\n return;\n }\n return this.socket.connect(host, this.config.connect, this.config.reconnect);\n });\n }\n disconnect() {\n this.socket.reset();\n }\n snapshot(resourceName, params) {\n return __awaiter(this, void 0, void 0, function* () {\n const snapshotMessage = this.messageBuilder.createDataLogonMessage(resourceName, params);\n logger.debug(`${snapshotMessage.MESSAGE_TYPE} (snapshot) message created -> `, snapshotMessage);\n return this.socket.send(snapshotMessage);\n });\n }\n stream(resourceName, onMessage, onError, params) {\n const streamMessage = this.messageBuilder.createDataLogonMessage(resourceName, params);\n logger.debug(`${streamMessage.MESSAGE_TYPE} (stream) message created -> `, streamMessage);\n return this.socket.sendForStream(streamMessage, onMessage, onError);\n }\n getMoreRows(sourceRef) {\n return __awaiter(this, void 0, void 0, function* () {\n const moreRowsMessage = this.messageBuilder.createMoreRowsMessage(sourceRef);\n logger.debug(`${moreRowsMessage.MESSAGE_TYPE} message created -> `, moreRowsMessage);\n return this.socket.send(moreRowsMessage, false);\n });\n }\n dataLogoff(streamSourceRef) {\n return __awaiter(this, void 0, void 0, function* () {\n const dataLogoffMessage = this.messageBuilder.createDataLogoffMessage(streamSourceRef);\n logger.debug(`${dataLogoffMessage.MESSAGE_TYPE} message created -> `, dataLogoffMessage);\n return this.socket.send(dataLogoffMessage);\n });\n }\n getMetadata(resourceName, useCache = true) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (useCache) {\n yield until(() => this.isWorking === false);\n if (this.metaCache.hasMetadataFor(resourceName)) {\n logger.debug(`Cached metadata retrieved for ${resourceName}`);\n return this.metaCache.getMetadataFor(resourceName);\n }\n }\n const metaRequestMessage = this.messageBuilder.createMetaRequestMessage(resourceName);\n logger.debug(`${metaRequestMessage.MESSAGE_TYPE} (metadata) message created -> `, metaRequestMessage);\n let details;\n try {\n this.isWorking = true;\n const metaResponse = yield this.socket.send(metaRequestMessage);\n details = (_a = metaResponse === null || metaResponse === void 0 ? void 0 : metaResponse.DETAILS) !== null && _a !== void 0 ? _a : [];\n }\n finally {\n if (details) {\n this.metaCache.setMetadataFor(resourceName, details);\n }\n this.isWorking = false;\n }\n return details;\n });\n }\n getJSONSchema(resourceName) {\n return __awaiter(this, void 0, void 0, function* () {\n const metaRequestMessage = this.messageBuilder.createMetaRequestMessage(resourceName, EventMessageType.JSON_SCHEMA_REQUEST);\n logger.debug(`${metaRequestMessage.MESSAGE_TYPE} (json schema) message created -> `, metaRequestMessage);\n return this.socket.send(metaRequestMessage);\n });\n }\n request(resourceName, params) {\n const requestMessage = this.messageBuilder.createRequestMessage(resourceName, params);\n logger.debug(`${requestMessage.MESSAGE_TYPE} (request server) message created -> `, requestMessage);\n return this.socket.send(requestMessage);\n }\n commitEvent(eventName, params) {\n return __awaiter(this, void 0, void 0, function* () {\n const commitMessage = this.messageBuilder.createCommitMessage(eventName, params);\n logger.debug(`${commitMessage.MESSAGE_TYPE} (commit) message created -> `, commitMessage);\n return this.socket.send(commitMessage);\n });\n }\n};\n__decorate([\n observable\n], DefaultConnect.prototype, \"isWorking\", void 0);\n__decorate([\n volatile\n], DefaultConnect.prototype, \"isConnected\", null);\nDefaultConnect = __decorate([\n __param(0, Socket),\n __param(1, MessageBuilder),\n __param(2, MetadataCache),\n __param(3, optional(ConnectConfig))\n], DefaultConnect);\nconst useHttpConnect = FORCE_HTTP === 'true' || false;\nexport const WSConnect = DI.createInterface((x) => x.singleton(DefaultConnect));\nexport const Connect = DI.createInterface((x) => useHttpConnect ? x.aliasTo(HttpConnect) : x.aliasTo(WSConnect));\n//# sourceMappingURL=connect.js.map","/*! js-cookie v3.0.1 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (key, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n key = encodeURIComponent(key)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n key + '=' + converter.write(value, key) + stringifiedAttributes)\n }\n\n function get (key) {\n if (typeof document === 'undefined' || (arguments.length && !key)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var foundKey = decodeURIComponent(parts[0]);\n jar[foundKey] = converter.read(value, foundKey);\n\n if (key === foundKey) {\n break\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar\n }\n\n return Object.create(\n {\n set: set,\n get: get,\n remove: function (key, attributes) {\n set(\n key,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport default api;\n","import { DI } from '@microsoft/fast-foundation';\nexport const CredentialManagerConfig = DI.createInterface();\n//# sourceMappingURL=credentialManager.types.js.map","import { __awaiter, __decorate, __param, __rest } from \"tslib\";\nimport { DI, optional } from '@microsoft/fast-foundation';\nimport jsCookie from 'js-cookie';\nimport { Session } from '../session';\nimport { AuthType } from '../auth/auth.types';\nimport { CredentialManagerConfig } from './credentialManager.types';\nimport { logger } from '../utils';\nfunction supportsCredentialsContainer() {\n if (!(navigator === null || navigator === void 0 ? void 0 : navigator.credentials)) {\n logger.warn('CredentialsContainer not available in this browser.');\n return false;\n }\n if (!('PasswordCredential' in window)) {\n logger.warn('PasswordCredential not available in this browser.');\n return false;\n }\n return true;\n}\nexport const defaultCredentialRequestOptions = {\n password: true,\n mediation: 'optional',\n};\nexport const defaultCredentialManagerConfig = {\n cookie: {\n path: '/',\n name: 'credentials',\n expires: 20 * 365,\n storePasswords: false,\n },\n};\nlet DefaultCredentialManager = class DefaultCredentialManager {\n constructor(session, config = defaultCredentialManagerConfig) {\n this.session = session;\n this.config = config;\n }\n createBasicCredentials(inputs) {\n return {\n type: AuthType.BASIC,\n username: inputs.username,\n password: inputs.password,\n };\n }\n createRefreshCredentials(inputs) {\n var _a, _b;\n return {\n type: AuthType.REFRESH,\n username: (_a = inputs === null || inputs === void 0 ? void 0 : inputs.username) !== null && _a !== void 0 ? _a : this.getUsername(),\n refreshToken: (_b = inputs === null || inputs === void 0 ? void 0 : inputs.refreshToken) !== null && _b !== void 0 ? _b : this.getRefreshToken(),\n };\n }\n createSSOCredentials(inputs) {\n var _a;\n return {\n type: AuthType.SSO,\n ssoToken: (_a = inputs === null || inputs === void 0 ? void 0 : inputs.ssoToken) !== null && _a !== void 0 ? _a : this.getSSOToken(),\n };\n }\n validateBasicCredentials(credentials) {\n return credentials && !!credentials.username && !!credentials.password;\n }\n validateRefreshCredentials(credentials) {\n return credentials && !!credentials.refreshToken && !!credentials.username;\n }\n validateSSOCredentials(credentials) {\n return credentials && !!credentials.ssoToken;\n }\n storeCredentialsInContainer(data) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!supportsCredentialsContainer()) {\n return;\n }\n const credentials = new PasswordCredential(data);\n logger.debug('Storing credentials in CredentialsContainer');\n return navigator.credentials.store(credentials);\n });\n }\n getCredentialsFromContainer(options = defaultCredentialRequestOptions) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!supportsCredentialsContainer()) {\n return;\n }\n logger.debug('Getting credentials from CredentialsContainer');\n return (yield navigator.credentials.get(options));\n });\n }\n storeCredentialsInCookie(data) {\n const { password } = data, rest = __rest(data, [\"password\"]);\n const credentials = this.config.cookie.storePasswords ? data : rest;\n logger.debug('Storing credentials in cookie');\n return !!jsCookie.set(this.config.cookie.name, JSON.stringify(credentials), {\n expires: this.config.cookie.expires,\n domain: location.hostname,\n path: this.config.cookie.path,\n secure: true,\n });\n }\n getCredentialsFromCookie() {\n logger.debug('Getting credentials from cookie');\n const cookie = jsCookie.get(this.config.cookie.name);\n return cookie ? JSON.parse(cookie) : undefined;\n }\n storeCredentials(data) {\n return __awaiter(this, void 0, void 0, function* () {\n if (supportsCredentialsContainer()) {\n const credential = yield this.storeCredentialsInContainer(data);\n return Promise.resolve(!!credential);\n }\n return Promise.resolve(this.storeCredentialsInCookie(data));\n });\n }\n getCredentials(options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (supportsCredentialsContainer()) {\n return this.getCredentialsFromContainer(options);\n }\n return Promise.resolve(this.getCredentialsFromCookie());\n });\n }\n getSSOToken() {\n return this.session.getSessionStorageItem('ssoToken');\n }\n getUsername() {\n return this.session.getSessionStorageItem('username');\n }\n getRefreshToken() {\n return this.session.getSessionStorageItem('refreshToken');\n }\n removeCookie() {\n jsCookie.remove(this.config.cookie.name, {\n domain: location.hostname,\n path: this.config.cookie.path,\n });\n }\n removeSSOToken() {\n this.session.removeSessionStorageItem('ssoToken');\n }\n removeUsername() {\n this.session.removeSessionStorageItem('username');\n }\n removeRefreshToken() {\n this.session.removeSessionStorageItem('refreshToken');\n }\n removeAll() {\n this.removeCookie();\n this.removeSSOToken();\n this.removeUsername();\n this.removeRefreshToken();\n }\n preventSilentAccess() {\n return supportsCredentialsContainer() && navigator.credentials.preventSilentAccess();\n }\n};\nDefaultCredentialManager = __decorate([\n __param(0, Session),\n __param(1, optional(CredentialManagerConfig))\n], DefaultCredentialManager);\nexport const CredentialManager = DI.createInterface((x) => x.singleton(DefaultCredentialManager));\n//# sourceMappingURL=credentialManager.js.map","import { __decorate } from \"tslib\";\nimport { observable } from '@microsoft/fast-element';\nexport class CurrentUser {\n constructor(options) {\n Object.assign(this, options);\n }\n hasAdminProfile() {\n return this.hasProfile('ADMIN');\n }\n hasPermission(permission) {\n return this.hasKey(this.permissions, permission);\n }\n hasProfile(profile) {\n return this.hasKey(this.profiles, profile);\n }\n hasKey(keys, key) {\n if (!keys || !keys.length || !key) {\n return false;\n }\n if (!Array.isArray(key)) {\n key = [key];\n }\n return key.some((k) => keys.includes(k));\n }\n}\n__decorate([\n observable\n], CurrentUser.prototype, \"permissions\", void 0);\n__decorate([\n observable\n], CurrentUser.prototype, \"profiles\", void 0);\n__decorate([\n observable\n], CurrentUser.prototype, \"username\", void 0);\n//# sourceMappingURL=user.js.map","import { __awaiter, __decorate, __param } from \"tslib\";\nimport { observable, volatile } from '@microsoft/fast-element';\nimport { DI } from '@microsoft/fast-foundation';\nimport { Connect } from '../connect';\nimport { EventMessageType, MessageBuilder, MessageCode, MessageType, } from '../connect/message';\nimport { Session } from '../session';\nimport { logger } from '../utils';\nimport { AuthError } from './auth.types';\nimport { CredentialManager } from '../credentialManager';\nimport { CurrentUser } from '../user';\nlet AuthService = class AuthService {\n get isLoggedIn() {\n return this.loggedUserResult\n ? !!(this.loggedUserResult.authToken && this.loggedUserResult.sessionId)\n : false;\n }\n constructor(session, connect, messageBuilder, credentialManager) {\n this.session = session;\n this.connect = connect;\n this.messageBuilder = messageBuilder;\n this.credentialManager = credentialManager;\n this.isWorking = false;\n this.loggedUserResult = null;\n this.currentUser = null;\n }\n login(credentials) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n this.isWorking = true;\n try {\n const loginMessage = this.messageBuilder.createLoginMessage(credentials);\n const authResult = yield this.connect.send(loginMessage);\n if (!authResult || authResult.ERROR || ((_a = authResult.DETAILS) === null || _a === void 0 ? void 0 : _a.ERROR)) {\n throw new AuthError(loginMessage, authResult);\n }\n this.applyAuthResults({\n authToken: authResult.SESSION_AUTH_TOKEN,\n refreshToken: authResult.REFRESH_AUTH_TOKEN,\n profiles: authResult.PROFILE,\n username: authResult.USER_NAME,\n permissions: authResult.PERMISSION,\n sessionId: authResult.SESSION_ID,\n });\n this.session.setAuthResult(authResult);\n logger.debug('Login Authentication Result:', authResult);\n }\n catch (err) {\n logger.error('Login Authentication Error:', err);\n if (err instanceof AuthError && err.isIgnorableError()) {\n logger.warn(`Ignoring authentication error as it is a known edge case.`);\n }\n else {\n this.removeAuthResults();\n throw err;\n }\n }\n finally {\n this.isWorking = false;\n }\n return this.loggedUserResult;\n });\n }\n logout() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n this.isWorking = true;\n let logoutResult = {\n success: false,\n };\n try {\n const logoutMessage = this.messageBuilder.createLogoutMessage(this.loggedUserResult);\n this.session.deleteUserFromSessionStorage();\n this.connect.setValidSession(false);\n const { CODE, DETAILS, MESSAGE_TYPE } = yield this.connect.send(logoutMessage);\n logoutResult = {\n success: MESSAGE_TYPE === MessageType.LOGOUT_ACK || CODE === MessageCode.SESSION_NOT_FOUND,\n error: (_a = DETAILS === null || DETAILS === void 0 ? void 0 : DETAILS.ERROR) !== null && _a !== void 0 ? _a : undefined,\n };\n }\n catch (err) {\n const logoutError = new AuthError(err.sentMessage, err.receivedMessage);\n logger.error('Logout Authentication Error:', logoutError);\n if (logoutError.isIgnorableError()) {\n logger.warn(`Ignoring authentication error as it is a known edge case.`);\n logoutResult.success = true;\n }\n else {\n throw err;\n }\n }\n finally {\n this.removeAuthResults();\n this.isWorking = false;\n }\n return logoutResult;\n });\n }\n reAuthFromSession() {\n return __awaiter(this, void 0, void 0, function* () {\n const hostUrl = this.session.getSessionStorageItem('hostUrl');\n const isConnected = hostUrl && (yield this.connect.connect(hostUrl));\n if (isConnected) {\n const refreshTokenMessage = this.messageBuilder.createRefreshTokenMessage();\n const refreshTokenResult = yield this.connect.send(refreshTokenMessage);\n if ((refreshTokenResult === null || refreshTokenResult === void 0 ? void 0 : refreshTokenResult.MESSAGE_TYPE) === EventMessageType.EVENT_LOGIN_AUTH_ACK) {\n this.session.setAuthResult(refreshTokenResult);\n this.connect.setValidSession(true);\n this.applyAuthResults(this.getLoggedUserFromSession(refreshTokenResult));\n return true;\n }\n }\n this.session.deleteUserFromSessionStorage();\n this.connect.setValidSession(false);\n return false;\n });\n }\n getLoggedUserFromSession(result) {\n const username = result.USER_NAME;\n const sessionAuthToken = result.SESSION_AUTH_TOKEN;\n const refreshAuthToken = result.REFRESH_AUTH_TOKEN;\n if (!username || !sessionAuthToken || !refreshAuthToken) {\n return null;\n }\n return {\n username,\n authToken: sessionAuthToken,\n refreshToken: refreshAuthToken,\n profiles: result.PROFILE,\n permissions: result.PERMISSION,\n sessionId: result.SESSION_ID,\n };\n }\n applyAuthResults(result) {\n if (!result) {\n this.removeAuthResults();\n return;\n }\n this.loggedUserResult = {\n authToken: result.authToken,\n refreshToken: result.refreshToken,\n profiles: result.profiles,\n username: result.username,\n permissions: result.permissions,\n sessionId: result.sessionId,\n };\n this.currentUser = new CurrentUser({\n permissions: result.permissions,\n profiles: result.profiles,\n username: result.username,\n });\n }\n removeAuthResults() {\n this.loggedUserResult = null;\n this.currentUser = null;\n }\n};\n__decorate([\n observable\n], AuthService.prototype, \"isWorking\", void 0);\n__decorate([\n observable\n], AuthService.prototype, \"loggedUserResult\", void 0);\n__decorate([\n observable\n], AuthService.prototype, \"currentUser\", void 0);\n__decorate([\n volatile\n], AuthService.prototype, \"isLoggedIn\", null);\nAuthService = __decorate([\n __param(0, Session),\n __param(1, Connect),\n __param(2, MessageBuilder),\n __param(3, CredentialManager)\n], AuthService);\nexport const Auth = DI.createInterface((x) => x.singleton(AuthService));\n//# sourceMappingURL=auth.js.map","export var ResourceType;\n(function (ResourceType) {\n ResourceType[\"DATASERVER\"] = \"DATASERVER\";\n ResourceType[\"EVENT_HANDLER\"] = \"EVENT_HANDLER\";\n ResourceType[\"REQUEST_SERVER\"] = \"REQUEST_SERVER\";\n})(ResourceType || (ResourceType = {}));\nexport class DatasourceDefaults {\n}\nDatasourceDefaults.MAX_ROWS_250 = 250;\nDatasourceDefaults.MAX_VIEW_1000 = 1000;\nDatasourceDefaults.REQ_REP_POLLING_INTERVAL_MS = 10000;\n//# sourceMappingURL=datasource.types.js.map","export var FieldTypeEnum;\n(function (FieldTypeEnum) {\n FieldTypeEnum[\"STRING\"] = \"STRING\";\n FieldTypeEnum[\"NUMBER\"] = \"NUMBER\";\n FieldTypeEnum[\"BOOLEAN\"] = \"BOOLEAN\";\n FieldTypeEnum[\"ENUM\"] = \"ENUM\";\n FieldTypeEnum[\"DATE\"] = \"DATE\";\n FieldTypeEnum[\"DATETIME\"] = \"DATETIME\";\n FieldTypeEnum[\"CUSTOM\"] = \"CUSTOM\";\n})(FieldTypeEnum || (FieldTypeEnum = {}));\nexport const TYPES_MAP = {\n STRING: FieldTypeEnum.STRING,\n ENUM: FieldTypeEnum.ENUM,\n BOOLEAN: FieldTypeEnum.BOOLEAN,\n INT: FieldTypeEnum.NUMBER,\n DOUBLE: FieldTypeEnum.NUMBER,\n BIGDECIMAL: FieldTypeEnum.NUMBER,\n DATE: FieldTypeEnum.DATE,\n DATETIME: FieldTypeEnum.DATETIME,\n};\n//# sourceMappingURL=metadata.types.js.map","import { ResourceType } from '../datasource/datasource.types';\nimport { logger } from '../utils';\nimport { FieldTypeEnum, TYPES_MAP } from './metadata.types';\nexport const toFieldMetadata = (fieldDef) => {\n if (!fieldDef)\n return null;\n return fieldDef.map((field) => {\n const meta = {\n name: field.NAME,\n type: TYPES_MAP[field.TYPE] || FieldTypeEnum.STRING,\n };\n if (field.TYPE === FieldTypeEnum.ENUM && field.VALID_VALUES) {\n try {\n meta.enumOptions = Array.isArray(field.VALID_VALUES)\n ? field.VALID_VALUES\n : field.VALID_VALUES.split('|');\n }\n catch (err) {\n logger.error(err);\n meta.enumOptions = [];\n }\n }\n return meta;\n });\n};\nexport const extractFieldDefinitions = (metadata) => {\n const type = metadata === null || metadata === void 0 ? void 0 : metadata.TYPE;\n if (type === ResourceType.DATASERVER) {\n return metadata.FIELD || [];\n }\n if (type === ResourceType.REQUEST_SERVER) {\n return metadata.REPLY_FIELD || [];\n }\n throw new Error(`Unsupported resource type: ${type}`);\n};\n//# sourceMappingURL=metadata.utils.js.map","import { __awaiter, __decorate, __param } from \"tslib\";\nimport { observable, volatile } from '@microsoft/fast-element';\nimport { DI } from '@microsoft/fast-foundation';\nimport { from, timer } from 'rxjs';\nimport { switchMap, takeWhile } from 'rxjs/operators';\nimport { Auth } from '../auth';\nimport { Connect } from '../connect';\nimport { extractFieldDefinitions, toFieldMetadata } from '../metadata/metadata.utils';\nimport { logger } from '../utils';\nimport { DatasourceDefaults, ResourceType } from './datasource.types';\nlet DatasourceService = class DatasourceService {\n constructor(connect, auth) {\n this.connect = connect;\n this.auth = auth;\n this.initialized = false;\n this.readOnly = true;\n this.originalFieldDef = [];\n this.requestFields = [];\n this.fieldMetadata = [];\n this.availableIndexes = [];\n this.defaultOptions = {\n criteria: '',\n isSnapshot: false,\n maxRows: DatasourceDefaults.MAX_ROWS_250,\n maxView: DatasourceDefaults.MAX_VIEW_1000,\n orderBy: '',\n resourceName: '',\n reverse: false,\n };\n }\n init(options, fetchMeta = true) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.validResourceName(options === null || options === void 0 ? void 0 : options.resourceName)) {\n return false;\n }\n this.options = Object.assign(Object.assign({}, this.defaultOptions), options);\n if (fetchMeta) {\n logger.debug(`Initializing ${this.options.resourceName} Datasource`);\n const meta = yield this.connect\n .getMetadata(this.options.resourceName)\n .catch((e) => logger.error(`Metadata Fetch failed for ${options.resourceName}:`, e));\n if (!meta)\n return false;\n this.resourceType = meta.TYPE;\n this.availableIndexes = (_a = meta.INDEXES) !== null && _a !== void 0 ? _a : [];\n this.originalFieldDef = extractFieldDefinitions(meta);\n this.fieldMetadata = toFieldMetadata(this.originalFieldDef);\n this.requestFields = meta.REQUEST_FIELD || [];\n logger.debug(`Datasource for ${this.options.resourceName} is ready`);\n }\n if (!this.options.isSnapshot) {\n this._stream = yield this.createStream();\n }\n this.initialized = true;\n return this.initialized;\n });\n }\n get stream() {\n return this._stream;\n }\n get params() {\n const params = {\n CRITERIA_MATCH: this.options.criteria,\n FIELDS: this.options.fields,\n MAX_ROWS: this.options.maxRows,\n MAX_VIEW: this.options.maxView,\n REQUEST: this.options.request,\n REVERSE: this.options.reverse,\n };\n if (this.options.orderBy) {\n if (this.availableIndexes.findIndex((i) => i.NAME === this.options.orderBy) > -1) {\n params.ORDER_BY = this.options.orderBy;\n }\n else {\n const validIndexes = this.availableIndexes.map((index) => index.NAME);\n logger.warn('Specified [orderBy] index is not valid and will not be used. See https://learn.genesis.global/docs/database/data-types/index-entities/ - Available indexes:', validIndexes);\n }\n }\n logger.debug('Getting configured params:', params);\n return params;\n }\n snapshot() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n logger.debug(`Requesting snapshot for ${this.options.resourceName} (${this.resourceType}).`);\n switch (this.resourceType) {\n case ResourceType.DATASERVER:\n return this.connect.snapshot(this.options.resourceName, this.params);\n case ResourceType.REQUEST_SERVER: {\n const reqParams = { DETAILS: Object.assign({}, this.params), REQUEST: null };\n const reqFields = {};\n this.requestFields.forEach((rf) => {\n reqFields[rf.NAME] = '*';\n });\n reqParams.REQUEST = reqFields;\n if ((_a = this === null || this === void 0 ? void 0 : this.options) === null || _a === void 0 ? void 0 : _a.criteria) {\n const fromCriteria = this.criteriaToReqFields(this.options.criteria);\n reqParams.REQUEST = Object.assign(Object.assign({}, reqParams.REQUEST), fromCriteria);\n }\n return this.connect.request(this.options.resourceName, reqParams);\n }\n default:\n throw new Error(`Snapshot not supported for selected resource type: ${this.resourceType}`);\n }\n });\n }\n snapshotFiltered(rowId = 'ROW_REF') {\n return __awaiter(this, void 0, void 0, function* () {\n const result = yield this.snapshot();\n if (Array.isArray(result)) {\n return result;\n }\n else if (result.REPLY) {\n return result.REPLY;\n }\n else if (result.ROW) {\n return this.filterRows(result, rowId).inserts;\n }\n });\n }\n filterRows(data, rowId) {\n const toRowData = (row) => {\n const tmp = Object.assign(Object.assign({}, row), { [rowId]: row.DETAILS[rowId] });\n delete tmp.DETAILS;\n return tmp;\n };\n const inserts = [];\n const deletes = [];\n const updates = [];\n for (const row of data.ROW) {\n if (!row.DETAILS)\n continue;\n switch (row.DETAILS.OPERATION) {\n case 'INSERT':\n inserts.push(toRowData(row));\n break;\n case 'MODIFY':\n updates.push(toRowData(row));\n break;\n case 'DELETE':\n deletes.push(toRowData(row));\n break;\n default:\n logger.error(`Unsupported operation type: ${row.DETAILS.OPERATION}`);\n }\n }\n return { inserts, deletes, updates, SOURCE_REF: data.SOURCE_REF };\n }\n createStream() {\n return __awaiter(this, void 0, void 0, function* () {\n if (![ResourceType.DATASERVER, ResourceType.REQUEST_SERVER].includes(this.resourceType)) {\n throw new Error(`Streaming not supported for selected resource type: ${this.resourceType}`);\n }\n if (this.resourceType === ResourceType.DATASERVER) {\n return this.createDataserverStream();\n }\n logger.debug(`Creating fake stream by polling ${this.options.resourceName} REQUEST_SERVER`);\n return this.createReqRepStream();\n });\n }\n createDataserverStream() {\n return __awaiter(this, void 0, void 0, function* () {\n const onMessage = (message) => { };\n const onError = (error) => logger.error(error);\n return this.connect.stream(this.options.resourceName, onMessage, onError, this.params);\n });\n }\n createReqRepStream() {\n return timer(0, DatasourceDefaults.REQ_REP_POLLING_INTERVAL_MS).pipe(takeWhile(() => this.connect.isConnected && this.auth.isLoggedIn), switchMap(() => from(this.snapshot())));\n }\n validResourceName(resourceName) {\n if (!resourceName)\n return false;\n if (!resourceName.trim().length)\n return false;\n return true;\n }\n criteriaToReqFields(concatCriteria) {\n const criteria = concatCriteria.split('&&').map((s) => s.trim());\n const reqFields = {};\n criteria.forEach((c) => {\n const key = c.substr(0, c.indexOf('=')).trim().replace(/[\"']/g, '');\n const val = c\n .substr(c.lastIndexOf('=') + 1, c.length)\n .trim()\n .replace(/[\"']/g, '');\n reqFields[key] = val;\n });\n return reqFields;\n }\n};\n__decorate([\n observable\n], DatasourceService.prototype, \"initialized\", void 0);\n__decorate([\n observable\n], DatasourceService.prototype, \"readOnly\", void 0);\n__decorate([\n volatile\n], DatasourceService.prototype, \"stream\", null);\nDatasourceService = __decorate([\n __param(0, Connect),\n __param(1, Auth)\n], DatasourceService);\nexport const Datasource = DI.createInterface((x) => x.transient(DatasourceService));\n//# sourceMappingURL=datasource.js.map","import { __awaiter, __decorate } from \"tslib\";\nimport { addIntentListener, fdc3Ready, findIntent, findIntentsByContext, getOrCreateChannel, getInfo, joinChannel, raiseIntent, raiseIntentForContext, versionIsAtLeast, } from '@finos/fdc3';\nimport { observable } from '@microsoft/fast-element';\nimport { DI } from '@microsoft/fast-foundation';\nimport { logger } from '../utils';\nclass FDC3Service {\n constructor() {\n this.isReady = false;\n this.connect();\n }\n connect() {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n this.isReady = false;\n yield fdc3Ready();\n logger.debug('fdc3 connection success');\n }\n catch (err) {\n logger.error('fdc3 connection error', err);\n throw err;\n }\n });\n }\n addIntentListeners(listeners) {\n listeners.forEach((handler, intent) => {\n const listener = addIntentListener(intent, handler);\n logger.debug(`fdc3 addIntentListener for '${intent}', ${listener}`);\n });\n }\n findIntent(intent, context) {\n logger.debug(`fdc3 findIntent '${intent}' '${context}'`);\n return findIntent(intent, context);\n }\n findIntentsByContext(context) {\n logger.debug(`fdc3 findIntentsByContext '${context}'`);\n return findIntentsByContext(context);\n }\n raiseIntent(context, intent) {\n if (getInfo && versionIsAtLeast(getInfo(), '1.2')) {\n logger.debug(`fdc3 raiseIntentForContext '${context}'`);\n return raiseIntentForContext(context);\n }\n if (intent) {\n logger.debug(`fdc3 raiseIntent '${intent}' '${context}'`);\n return raiseIntent(intent, context);\n }\n logger.error(`fdc3 unable to raiseIntent using context '${context}' and intent '${intent}'.`);\n }\n joinChannel(channelId) {\n logger.debug(`fdc3 joinChannel '${channelId}'`);\n return joinChannel(channelId);\n }\n getOrCreateChannel(channelId) {\n logger.debug(`fdc3 getOrCreateChannel '${channelId}'`);\n return getOrCreateChannel(channelId);\n }\n broadcastOnChannel(channelId, context) {\n return __awaiter(this, void 0, void 0, function* () {\n const channel = yield this.getOrCreateChannel(channelId);\n logger.debug(`fdc3 broadcast '${channelId}' '${context}'`);\n channel.broadcast(context);\n });\n }\n}\n__decorate([\n observable\n], FDC3Service.prototype, \"isReady\", void 0);\nexport const FDC3 = DI.createInterface((x) => x.singleton(FDC3Service));\n//# sourceMappingURL=fdc3.js.map"],"sourceRoot":""}
|