@corva/ui 3.54.0-8 → 3.54.0-9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/cjs-bundle/clients/api/apiCore.js +1 -1
  2. package/cjs-bundle/clients/api/apiCore.js.map +1 -1
  3. package/cjs-bundle/clients/api/constants.js +2 -0
  4. package/cjs-bundle/clients/api/constants.js.map +1 -0
  5. package/cjs-bundle/clients/api/rateLimiter.js +2 -0
  6. package/cjs-bundle/clients/api/rateLimiter.js.map +1 -0
  7. package/cjs-bundle/clients/index.js +1 -1
  8. package/cjs-bundle/clients/utils.js +1 -1
  9. package/cjs-bundle/clients/utils.js.map +1 -1
  10. package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js +1 -1
  11. package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js.map +1 -1
  12. package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js +1 -1
  13. package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js.map +1 -1
  14. package/cjs-bundle/effects/subscriptions/useSubscriptions.v1.js +1 -1
  15. package/cjs-bundle/effects/subscriptions/useSubscriptions.v1.js.map +1 -1
  16. package/cjs-bundle/effects/subscriptions/useSubscriptions.v2.js +1 -1
  17. package/clients/api/apiCore.d.ts.map +1 -1
  18. package/clients/api/apiCore.js +1 -1
  19. package/clients/api/apiCore.js.map +1 -1
  20. package/clients/api/constants.d.ts +37 -0
  21. package/clients/api/constants.d.ts.map +1 -0
  22. package/clients/api/constants.js +2 -0
  23. package/clients/api/constants.js.map +1 -0
  24. package/clients/api/rateLimiter.d.ts +24 -0
  25. package/clients/api/rateLimiter.d.ts.map +1 -0
  26. package/clients/api/rateLimiter.js +2 -0
  27. package/clients/api/rateLimiter.js.map +1 -0
  28. package/clients/index.js +1 -1
  29. package/clients/index.js.map +1 -1
  30. package/clients/utils.d.ts +4 -2
  31. package/clients/utils.d.ts.map +1 -1
  32. package/clients/utils.js +1 -1
  33. package/clients/utils.js.map +1 -1
  34. package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.d.ts.map +1 -1
  35. package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js +1 -1
  36. package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js.map +1 -1
  37. package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.d.ts.map +1 -1
  38. package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js +1 -1
  39. package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js.map +1 -1
  40. package/effects/subscriptions/useSubscriptions.v1.js +1 -1
  41. package/effects/subscriptions/useSubscriptions.v1.js.map +1 -1
  42. package/effects/subscriptions/useSubscriptions.v2.d.ts.map +1 -1
  43. package/effects/subscriptions/useSubscriptions.v2.js +1 -1
  44. package/effects/useSubscriptions.d.ts.map +1 -1
  45. package/mcp-server/server.mjs +1 -1
  46. package/package.json +1 -1
  47. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useSubscriptions.v1.js","sources":["../../../../src/effects/subscriptions/useSubscriptions.v1.js"],"sourcesContent":["// NOTE: This is a deprecated module, but is still used in the codebase (some devcenter apps)\n// We don't support it, dc devs should refactor their code to use socketClient directly\nimport { parse } from 'querystring';\n\nimport { useState, useEffect, useRef, useMemo } from 'react';\nimport uuidV1 from 'uuid/v1';\nimport { castArray, omit, differenceBy, concat, merge, mapValues } from 'lodash';\n\nimport { getSubscriptionId } from '../../clients/subscriptions.v1';\n\nimport { getAppKeyFromStackTrace } from '~/clients/utils';\nimport { getAppStorage, getDataAppStorage, getDataAppStorageAggregate } from '~/clients/jsonApi';\n\nfunction getSubscriptionWithId(sub, hookId, appKey) {\n const subId = getSubscriptionId(sub, hookId);\n return { ...sub, hookId, subId, appInstanceId: subId, app_key: appKey };\n}\n\nexport async function fetchInitialSubscriptionsDataDeprecated(\n subscriptions,\n { timeQuery, appKey }\n) {\n const requests = subscriptions.map(\n async ({ provider, collection, assetId, subscribeOnly, params }) => {\n if (subscribeOnly) return null;\n const queryFromParameters = params.query;\n const queryFromTime = timeQuery ? `{timestamp#lte#${timeQuery.timestamp.$lte}` : '';\n const separator = queryFromParameters && queryFromTime ? 'AND' : '';\n const query = `${queryFromParameters}${separator}${queryFromTime}`;\n\n try {\n return await getAppStorage(provider, collection, assetId, {\n ...params,\n ...(query ? { query } : {}),\n appKey,\n });\n } catch (e) {\n return [];\n }\n }\n );\n return Promise.all(requests);\n}\n\nexport async function fetchInitialSubscriptionsData(subscriptions, { timeQuery, appKey }) {\n const requests = subscriptions.map(\n async ({ provider, collection, assetId, subscribeOnly, params = {} }) => {\n if (subscribeOnly) return null;\n\n // NOTE: Use different endpoint for aggregate queries\n // https://data.qa.corva.ai/docs#/default/aggregate_api_v1_data__provider___dataset__aggregate__get\n if (params.aggregate)\n return getDataAppStorageAggregate(provider, collection, {\n ...mapValues(params.aggregate, JSON.stringify),\n });\n\n const query = JSON.stringify(merge({ asset_id: assetId }, params.query, timeQuery));\n const { limit = 1, sort = '{\"timestamp\": 1}' } = params;\n\n try {\n const options = {\n ...params,\n limit,\n sort,\n query,\n appKey,\n };\n\n return await getDataAppStorage(provider, collection, options);\n } catch (e) {\n return [];\n }\n }\n );\n return Promise.all(requests);\n}\n\n/**\n * A hook to subscribe to the corva socket updates\n * @param {Object | Object[]} subscriptions - subscription params\n * @param {number} subscriptions.limit - only save given amount of records\n * @param {boolean} subscriptions.subscribeOnly - do NOT send initial requests for the data\n * @param {boolean} subscriptions.alwaysSubscribe - will always subscribe, even when well timeline used\n * and do NOT store previously received data if true\n * @param {Object | Object} options - various hook options\n * @param {Object | Object} options.timestamp - requested time (usually from well timeline).\n * If provided only the initial request is being sent with the {\"timestamp\": {\"$lte\":time}} query added.\n */\nexport function useSubscriptionsV1(subscriptions, { timestamp, isOldApiUsed } = {}) {\n const [data, setData] = useState({});\n // NOTE: Declare this hook id to differentiate between hooks\n const hookIdRef = useRef();\n if (!hookIdRef.current) hookIdRef.current = uuidV1();\n const { subscribe, unsubscribe, socket } = window[Symbol.for('socket')];\n const appKey = useMemo(() => getAppKeyFromStackTrace(), []);\n\n // NOTE: Save previous subscriptions to detect added/removed subscriptions\n const prevSubscriptionsRef = useRef([]);\n const currentSubscriptions = castArray(subscriptions).map(sub =>\n getSubscriptionWithId(sub, hookIdRef.current, appKey)\n );\n\n // NOTE: This string is used to trigger effects\n const currentSubscriptionsIdsJoined = currentSubscriptions.map(sub => sub.subId).join();\n const timeQuery = useMemo(() => {\n if (timestamp) return { timestamp: { $lte: timestamp } };\n const timeFromLocation = parse(window.location.search).time;\n return timeFromLocation ? { timestamp: { $lte: new Date(timeFromLocation) / 1000 } } : null;\n }, [window.location.search, timestamp]);\n\n useEffect(() => {\n const onDataReceive = event => {\n // NOTE: Skip other effects subscriptions' events\n if (event.hookId !== hookIdRef.current) return;\n setData(prevData => {\n let nextData = event.data;\n if (event.subId in prevData && !event.subscribeOnly) {\n nextData = concat(prevData[event.subId], event.data);\n }\n\n if (event.params && event.params.limit) nextData = nextData.slice(-event.params.limit);\n\n return {\n ...prevData,\n [event.subId]: nextData,\n };\n });\n };\n if (socket) socket.on('data', onDataReceive);\n return () => {\n if (socket) socket.off('data', onDataReceive);\n };\n }, []);\n\n useEffect(() => {\n const { current: prevSubscriptions } = prevSubscriptionsRef;\n prevSubscriptions.forEach(unsubscribe);\n prevSubscriptionsRef.current = [];\n }, [timeQuery]);\n\n useEffect(() => {\n const { current: prevSubscriptions } = prevSubscriptionsRef;\n const addedSubscriptions = differenceBy(currentSubscriptions, prevSubscriptions, 'subId');\n const deletedSubscriptions = differenceBy(prevSubscriptions, currentSubscriptions, 'subId');\n addedSubscriptions.forEach(subscription => {\n // NOTE: only subscribe when the timestamp wasn't provided (well timeline wasn't used)\n if (!timeQuery || subscription.alwaysSubscribe) subscribe(subscription);\n });\n deletedSubscriptions.forEach(unsubscribe);\n\n prevSubscriptionsRef.current = currentSubscriptions;\n\n // NOTE: Migrate to new api after https://corvaqa.atlassian.net/browse/DC-1090 is done\n const fetchFunc = isOldApiUsed\n ? fetchInitialSubscriptionsDataDeprecated\n : fetchInitialSubscriptionsData;\n fetchFunc(addedSubscriptions, { timeQuery, appKey, isOldApiUsed }).then(subsData =>\n setData(prevData => {\n // NOTE: Here we omit data from deleted subscriptions\n const nextData = omit(\n prevData,\n deletedSubscriptions.map(sub => sub.subId)\n );\n\n addedSubscriptions.forEach((sub, idx) => {\n if (subsData[idx] !== null) nextData[sub.subId] = subsData[idx];\n });\n return nextData;\n })\n );\n }, [currentSubscriptionsIdsJoined, timeQuery]);\n\n // NOTE: Clear all subscriptions on unmounting\n useEffect(() => () => prevSubscriptionsRef.current.forEach(unsubscribe), []);\n\n return useMemo(\n () =>\n currentSubscriptions.map(({ subId }) => ({\n loading: !(subId in data),\n data: data[subId],\n })),\n [data, currentSubscriptionsIdsJoined]\n );\n}\n"],"names":["getSubscriptionWithId","sub","hookId","appKey","subId","getSubscriptionId","_objectSpread","appInstanceId","app_key","fetchInitialSubscriptionsDataDeprecated","_x","_x2","_fetchInitialSubscriptionsDataDeprecated","apply","this","arguments","_asyncToGenerator","_regeneratorRuntime","mark","subscriptions","_ref","timeQuery","requests","wrap","_context2","prev","next","map","_ref6","_callee","_ref5","provider","collection","assetId","subscribeOnly","params","queryFromParameters","queryFromTime","separator","query","_context","abrupt","timestamp","$lte","getAppStorage","sent","t0","stop","_x5","Promise","all","_callee2","fetchInitialSubscriptionsData","_x3","_x4","_fetchInitialSubscriptionsData","_ref2","_context4","_ref8","_callee3","_ref7","_ref7$params","_params$limit","limit","_params$sort","sort","options","_context3","aggregate","getDataAppStorageAggregate","mapValues","JSON","stringify","merge","asset_id","getDataAppStorage","_x6","_callee4","_ref3","length","undefined","isOldApiUsed","_useState","useState","_useState2","_slicedToArray","data","setData","hookIdRef","useRef","current","uuidV1","window","Symbol","for","subscribe","unsubscribe","socket","useMemo","getAppKeyFromStackTrace","prevSubscriptionsRef","currentSubscriptions","castArray","currentSubscriptionsIdsJoined","join","timeFromLocation","parse","location","search","time","Date","useEffect","onDataReceive","event","prevData","nextData","concat","slice","on","off","forEach","prevSubscriptions","addedSubscriptions","differenceBy","deletedSubscriptions","subscription","alwaysSubscribe","then","subsData","omit","idx","_ref4","loading"],"mappings":"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"}
1
+ {"version":3,"file":"useSubscriptions.v1.js","sources":["../../../../src/effects/subscriptions/useSubscriptions.v1.js"],"sourcesContent":["// NOTE: This is a deprecated module, but is still used in the codebase (some devcenter apps)\n// We don't support it, dc devs should refactor their code to use socketClient directly\nimport { parse } from 'querystring';\n\nimport { useEffect, useMemo, useRef, useState } from 'react';\nimport uuidV1 from 'uuid/v1';\nimport { castArray, concat, differenceBy, mapValues, merge, omit } from 'lodash';\n\nimport { getSubscriptionId } from '../../clients/subscriptions.v1';\n\nimport { getAppKeyAndId } from '~/clients/utils';\nimport { getAppStorage, getDataAppStorage, getDataAppStorageAggregate } from '~/clients/jsonApi';\n\nfunction getSubscriptionWithId(sub, hookId, appKey) {\n const subId = getSubscriptionId(sub, hookId);\n return { ...sub, hookId, subId, appInstanceId: subId, app_key: appKey };\n}\n\nexport async function fetchInitialSubscriptionsDataDeprecated(\n subscriptions,\n { timeQuery, appKey }\n) {\n const requests = subscriptions.map(\n async ({ provider, collection, assetId, subscribeOnly, params }) => {\n if (subscribeOnly) return null;\n const queryFromParameters = params.query;\n const queryFromTime = timeQuery ? `{timestamp#lte#${timeQuery.timestamp.$lte}` : '';\n const separator = queryFromParameters && queryFromTime ? 'AND' : '';\n const query = `${queryFromParameters}${separator}${queryFromTime}`;\n\n try {\n return await getAppStorage(provider, collection, assetId, {\n ...params,\n ...(query ? { query } : {}),\n appKey,\n });\n } catch (e) {\n return [];\n }\n }\n );\n return Promise.all(requests);\n}\n\nexport async function fetchInitialSubscriptionsData(subscriptions, { timeQuery, appKey }) {\n const requests = subscriptions.map(\n async ({ provider, collection, assetId, subscribeOnly, params = {} }) => {\n if (subscribeOnly) return null;\n\n // NOTE: Use different endpoint for aggregate queries\n // https://data.qa.corva.ai/docs#/default/aggregate_api_v1_data__provider___dataset__aggregate__get\n if (params.aggregate)\n return getDataAppStorageAggregate(provider, collection, {\n ...mapValues(params.aggregate, JSON.stringify),\n });\n\n const query = JSON.stringify(merge({ asset_id: assetId }, params.query, timeQuery));\n const { limit = 1, sort = '{\"timestamp\": 1}' } = params;\n\n try {\n const options = {\n ...params,\n limit,\n sort,\n query,\n appKey,\n };\n\n return await getDataAppStorage(provider, collection, options);\n } catch (e) {\n return [];\n }\n }\n );\n return Promise.all(requests);\n}\n\n/**\n * A hook to subscribe to the corva socket updates\n * @param {Object | Object[]} subscriptions - subscription params\n * @param {number} subscriptions.limit - only save given amount of records\n * @param {boolean} subscriptions.subscribeOnly - do NOT send initial requests for the data\n * @param {boolean} subscriptions.alwaysSubscribe - will always subscribe, even when well timeline used\n * and do NOT store previously received data if true\n * @param {Object | Object} options - various hook options\n * @param {Object | Object} options.timestamp - requested time (usually from well timeline).\n * If provided only the initial request is being sent with the {\"timestamp\": {\"$lte\":time}} query added.\n */\nexport function useSubscriptionsV1(subscriptions, { timestamp, isOldApiUsed } = {}) {\n const [data, setData] = useState({});\n // NOTE: Declare this hook id to differentiate between hooks\n const hookIdRef = useRef();\n if (!hookIdRef.current) hookIdRef.current = uuidV1();\n const { subscribe, unsubscribe, socket } = window[Symbol.for('socket')];\n const appKey = useMemo(() => getAppKeyAndId()?.appKey, []);\n\n // NOTE: Save previous subscriptions to detect added/removed subscriptions\n const prevSubscriptionsRef = useRef([]);\n const currentSubscriptions = castArray(subscriptions).map(sub =>\n getSubscriptionWithId(sub, hookIdRef.current, appKey)\n );\n\n // NOTE: This string is used to trigger effects\n const currentSubscriptionsIdsJoined = currentSubscriptions.map(sub => sub.subId).join();\n const timeQuery = useMemo(() => {\n if (timestamp) return { timestamp: { $lte: timestamp } };\n const timeFromLocation = parse(window.location.search).time;\n return timeFromLocation ? { timestamp: { $lte: new Date(timeFromLocation) / 1000 } } : null;\n }, [window.location.search, timestamp]);\n\n useEffect(() => {\n const onDataReceive = event => {\n // NOTE: Skip other effects subscriptions' events\n if (event.hookId !== hookIdRef.current) return;\n setData(prevData => {\n let nextData = event.data;\n if (event.subId in prevData && !event.subscribeOnly) {\n nextData = concat(prevData[event.subId], event.data);\n }\n\n if (event.params && event.params.limit) nextData = nextData.slice(-event.params.limit);\n\n return {\n ...prevData,\n [event.subId]: nextData,\n };\n });\n };\n if (socket) socket.on('data', onDataReceive);\n return () => {\n if (socket) socket.off('data', onDataReceive);\n };\n }, []);\n\n useEffect(() => {\n const { current: prevSubscriptions } = prevSubscriptionsRef;\n prevSubscriptions.forEach(unsubscribe);\n prevSubscriptionsRef.current = [];\n }, [timeQuery]);\n\n useEffect(() => {\n const { current: prevSubscriptions } = prevSubscriptionsRef;\n const addedSubscriptions = differenceBy(currentSubscriptions, prevSubscriptions, 'subId');\n const deletedSubscriptions = differenceBy(prevSubscriptions, currentSubscriptions, 'subId');\n addedSubscriptions.forEach(subscription => {\n // NOTE: only subscribe when the timestamp wasn't provided (well timeline wasn't used)\n if (!timeQuery || subscription.alwaysSubscribe) subscribe(subscription);\n });\n deletedSubscriptions.forEach(unsubscribe);\n\n prevSubscriptionsRef.current = currentSubscriptions;\n\n // NOTE: Migrate to new api after https://corvaqa.atlassian.net/browse/DC-1090 is done\n const fetchFunc = isOldApiUsed\n ? fetchInitialSubscriptionsDataDeprecated\n : fetchInitialSubscriptionsData;\n fetchFunc(addedSubscriptions, { timeQuery, appKey, isOldApiUsed }).then(subsData =>\n setData(prevData => {\n // NOTE: Here we omit data from deleted subscriptions\n const nextData = omit(\n prevData,\n deletedSubscriptions.map(sub => sub.subId)\n );\n\n addedSubscriptions.forEach((sub, idx) => {\n if (subsData[idx] !== null) nextData[sub.subId] = subsData[idx];\n });\n return nextData;\n })\n );\n }, [currentSubscriptionsIdsJoined, timeQuery]);\n\n // NOTE: Clear all subscriptions on unmounting\n useEffect(() => () => prevSubscriptionsRef.current.forEach(unsubscribe), []);\n\n return useMemo(\n () =>\n currentSubscriptions.map(({ subId }) => ({\n loading: !(subId in data),\n data: data[subId],\n })),\n [data, currentSubscriptionsIdsJoined]\n );\n}\n"],"names":["getSubscriptionWithId","sub","hookId","appKey","subId","getSubscriptionId","_objectSpread","appInstanceId","app_key","fetchInitialSubscriptionsDataDeprecated","_x","_x2","_fetchInitialSubscriptionsDataDeprecated","apply","this","arguments","_asyncToGenerator","_regeneratorRuntime","mark","subscriptions","_ref","timeQuery","requests","wrap","_context2","prev","next","map","_ref6","_callee","_ref5","provider","collection","assetId","subscribeOnly","params","queryFromParameters","queryFromTime","separator","query","_context","abrupt","timestamp","$lte","getAppStorage","sent","t0","stop","_x5","Promise","all","_callee2","fetchInitialSubscriptionsData","_x3","_x4","_fetchInitialSubscriptionsData","_ref2","_context4","_ref8","_callee3","_ref7","_ref7$params","_params$limit","limit","_params$sort","sort","options","_context3","aggregate","getDataAppStorageAggregate","mapValues","JSON","stringify","merge","asset_id","getDataAppStorage","_x6","_callee4","_ref3","length","undefined","isOldApiUsed","_useState","useState","_useState2","_slicedToArray","data","setData","hookIdRef","useRef","current","uuidV1","window","Symbol","for","subscribe","unsubscribe","socket","useMemo","_getAppKeyAndId","getAppKeyAndId","prevSubscriptionsRef","currentSubscriptions","castArray","currentSubscriptionsIdsJoined","join","timeFromLocation","parse","location","search","time","Date","useEffect","onDataReceive","event","prevData","nextData","concat","slice","on","off","forEach","prevSubscriptions","addedSubscriptions","differenceBy","deletedSubscriptions","subscription","alwaysSubscribe","then","subsData","omit","idx","_ref4","loading"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),t=require("@babel/runtime/helpers/slicedToArray"),r=require("react"),n=require("../../clients/subscriptions/get-channel-name.js"),i=require("querystring"),u=require("../../clients/utils.js"),o=require("./useSubscriptions.v1.js"),c=require("../../clients/subscriptions/subscriptions-client.factory.js"),a=require("lodash");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var f=s(e),l=s(t);function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function m(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach((function(t){f.default(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}exports.useSubscriptionsV2=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=t.timestamp,p=t.isOldApiUsed,b=t.url,y=a.castArray(e),d=y.map(n.getChannelName).join(","),h=Array.from(new Set(y.map(n.getChannelName))).sort().join(","),g=r.useState({}),j=l.default(g,2),O=j[0],v=j[1],w=r.useState(!0),S=l.default(w,2),q=S[0],P=S[1],A=r.useMemo((function(){return u.getAppKeyFromStackTrace()}),[]),D=r.useMemo((function(){return c.SubscriptionsClientFactory.init(b)}),[b]),M=r.useMemo((function(){return y.map(n.getChannelName)}),[d]),C=r.useMemo((function(){return Array.from(new Set(y.map(n.getChannelName)))}),[h]),E=r.useRef(!0),N=r.useMemo((function(){if(s)return{timestamp:{$lte:s}};var e=i.parse(window.location.search).time,t=Array.isArray(e)?e[0]:e;return t?{timestamp:{$lte:new Date(t).getTime()/1e3}}:null}),[window.location.search,s]);return r.useEffect((function(){return E.current=!0,function(){E.current=!1}}),[]),r.useEffect((function(){if(D&&0!==C.length&&!q){var e=C.map((function(e){return D.subscribe(e,(function(t){E.current&&v((function(r){return m(m({},r),{},f.default({},e,t))}))}))}));return function(){e.forEach((function(e){return e()}))}}}),[h,q,D]),r.useEffect((function(){d&&(p?o.fetchInitialSubscriptionsDataDeprecated:o.fetchInitialSubscriptionsData)(y,{timeQuery:N,appKey:A}).then((function(e){if(E.current){var t=e.reduce((function(e,t,r){return e[n.getChannelName(y[r])]=t,e}),{});v(t),P(!1)}}))}),[d,N,p,A]),r.useMemo((function(){return 0===y.length?[]:M.map((function(e){var t=!(e in O);return t?{loading:t}:{loading:!1,data:O[e]}}))}),[O,d])};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),t=require("@babel/runtime/helpers/slicedToArray"),r=require("querystring"),n=require("react"),i=require("lodash"),u=require("../../clients/subscriptions/get-channel-name.js"),o=require("../../clients/utils.js"),c=require("../../clients/subscriptions/subscriptions-client.factory.js"),a=require("./useSubscriptions.v1.js");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var f=s(e),l=s(t);function p(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function m(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?p(Object(r),!0).forEach((function(t){f.default(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):p(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}exports.useSubscriptionsV2=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=t.timestamp,p=t.isOldApiUsed,b=t.url,d=i.castArray(e),y=d.map(u.getChannelName).join(","),h=Array.from(new Set(d.map(u.getChannelName))).sort().join(","),g=n.useState({}),j=l.default(g,2),O=j[0],v=j[1],w=n.useState(!0),S=l.default(w,2),q=S[0],P=S[1],A=n.useMemo((function(){var e;return null===(e=o.getAppKeyAndId())||void 0===e?void 0:e.appKey}),[]),D=n.useMemo((function(){return c.SubscriptionsClientFactory.init(b)}),[b]),M=n.useMemo((function(){return d.map(u.getChannelName)}),[y]),C=n.useMemo((function(){return Array.from(new Set(d.map(u.getChannelName)))}),[h]),E=n.useRef(!0),N=n.useMemo((function(){if(s)return{timestamp:{$lte:s}};var e=r.parse(window.location.search).time,t=Array.isArray(e)?e[0]:e;return t?{timestamp:{$lte:new Date(t).getTime()/1e3}}:null}),[window.location.search,s]);return n.useEffect((function(){return E.current=!0,function(){E.current=!1}}),[]),n.useEffect((function(){if(D&&0!==C.length&&!q){var e=C.map((function(e){return D.subscribe(e,(function(t){E.current&&v((function(r){return m(m({},r),{},f.default({},e,t))}))}))}));return function(){e.forEach((function(e){return e()}))}}}),[h,q,D]),n.useEffect((function(){y&&(p?a.fetchInitialSubscriptionsDataDeprecated:a.fetchInitialSubscriptionsData)(d,{timeQuery:N,appKey:A}).then((function(e){if(E.current){var t=e.reduce((function(e,t,r){return e[u.getChannelName(d[r])]=t,e}),{});v(t),P(!1)}}))}),[y,N,p,A]),n.useMemo((function(){return 0===d.length?[]:M.map((function(e){var t=!(e in O);return t?{loading:t}:{loading:!1,data:O[e]}}))}),[O,y])};
2
2
  //# sourceMappingURL=useSubscriptions.v2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"apiCore.d.ts","sourceRoot":"","sources":["../../../src/clients/api/apiCore.js"],"names":[],"mappings":"AAiFA,0DAMC;AAuDD;;;;;;GAMG;AACH,2BAJW,MAAM,WACN,MAAM,YAAC,wBACL,OAAO,CAAC,GAAC,CAAC,CAiBtB;AAED;;;GAgBC;AAED;;;;;;;GAOG;AACH,0BALW,MAAM,gBACN,MAAM,YAAC,mBACP,MAAM,YAAC,GACL,OAAO,CAAC,GAAC,CAAC,CAQtB;AAED,wFAUC;AAED,kGAcC;AAED,oGAmBC;AAED,oFAiBC;AAED,wGA4BC;AAzQD;IACE,sCAKC;IAJC,YAA6B;IAC7B,gBAAqC;IACrC,aAA2C;IAC3C,eAAqB;IAGvB,mCAEC;IAED,0BAIC;IAED,sBAEC;IAED,8BAEC;IAED,iCAKC;IAED,iCAKC;CACF;AAED,0BAA0C"}
1
+ {"version":3,"file":"apiCore.d.ts","sourceRoot":"","sources":["../../../src/clients/api/apiCore.js"],"names":[],"mappings":"AA8EA,0DAMC;AA4DD;;;;;;GAMG;AACH,2BAJW,MAAM,WACN,MAAM,YAAC,wBACL,OAAO,CAAC,GAAC,CAAC,CAiBtB;AAED;;;GAiBC;AAED;;;;;;;GAOG;AACH,0BALW,MAAM,gBACN,MAAM,YAAC,mBACP,MAAM,YAAC,GACL,OAAO,CAAC,GAAC,CAAC,CAUtB;AAED,wFAUC;AAED,kGAcC;AAED,oGAmBC;AAED,oFAiBC;AAED,wGA4BC;AAjRD;IACE,sCAKC;IAJC,YAA6B;IAC7B,gBAAqC;IACrC,aAA2C;IAC3C,eAAqB;IAGvB,mCAEC;IAED,0BAIC;IAED,sBAEC;IAED,8BAEC;IAED,iCAKC;IAED,iCAKC;CACF;AAED,0BAA0C"}
@@ -1,2 +1,2 @@
1
- import t from"@babel/runtime/helpers/slicedToArray";import e from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/helpers/defineProperty";import n from"@babel/runtime/helpers/classCallCheck";import i from"@babel/runtime/helpers/createClass";import o from"@babel/runtime/regenerator";import*as a from"query-string";import{getAuthorizationHeaders as s,attachHTTPHeaders as c,getAppKeyFromXProps as u,getAppKeyFromStackTrace as p}from"../utils.js";import{CORVA_API_URLS as l}from"../constants.js";import{DISPLAY_HTTP_MESSAGES as f}from"./httpMessages.js";function h(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function d(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?h(Object(n),!0).forEach((function(e){r(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):h(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}var v={400:"Request Failed",403:"No Permission",404:"Not Found"},y=["POST","PUT","PATCH","DELETE"],m=function(){function t(e,r){n(this,t),this.status=e.status,this.statusText=e.statusText,this.message=r.message||"No Message",this.errorBody=r}return i(t,[{key:"isAuthenticationProblem",value:function(){return 401===this.status}},{key:"isTermsProblem",value:function(){return 401===this.status&&"Please accept the latest terms of service"===this.message}},{key:"isLoginProblem",value:function(){var t,e;return 401===this.status&&(null===(t=this.errorBody)||void 0===t||null===(e=t.errors)||void 0===e?void 0:e.login)}},{key:"isLockedAccountProblem",value:function(){var t,e,r;return 401===this.status&&(null===(t=this.errorBody)||void 0===t||null===(e=t.errors)||void 0===e||null===(r=e.login)||void 0===r?void 0:r.includes("Account has been locked"))}},{key:"isInvalidVerificationCode",value:function(){var t,e,r;return 401===this.status&&(null===(t=this.errorBody)||void 0===t||null===(e=t.errors)||void 0===e||null===(r=e.login)||void 0===r?void 0:r.includes("Invalid verification code"))}},{key:"isMissingVerificationCode",value:function(){var t,e,r;return 401===this.status&&(null===(t=this.errorBody)||void 0===t||null===(e=t.errors)||void 0===e||null===(r=e.identity)||void 0===r?void 0:r.includes("Missing verification code"))}}]),t}(),g=l.API,b=s(),w=d({"Content-Type":"application/json",Accept:"application/json"},b);function P(t){var e;null===(e=t.isAuthenticationProblem)||void 0===e||!e.call(t)||t.isTermsProblem()||t.isLoginProblem()||(console.error("Problem with user"),"/login"!==window.location.pathname&&(window.location.href="/login"))}var x=/^\/v1\/assets.*/;function j(){return j=e(o.mark((function t(e){var r,n,i,a,s,u=arguments;return o.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=u.length>1&&void 0!==u[1]?u[1]:{},n=u.length>2&&void 0!==u[2]?u[2]:{},i=n.apiUrl,a=void 0===i?g:i,s=n.appKey,x.test(e)&&(r.cache="reload"),r.credentials="include",t.abrupt("return",fetch("".concat(a).concat(e),c(d({config:r,appKey:s},b))));case 6:case"end":return t.stop()}}),t)}))),j.apply(this,arguments)}var k,O,T=(k=function(t){return j.apply(this,arguments)},O=e(o.mark((function t(e,r,n){var i,a,s,c,u,p,l;return o.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,k(e,r,n);case 2:if(i=t.sent,a=i.status,!i.ok){t.next=6;break}return t.abrupt("return",204===a?null:i);case 6:return t.prev=6,t.next=9,i.json();case 9:s=t.sent,t.next=15;break;case 12:t.prev=12,t.t0=t.catch(6),s={};case 15:throw c=r.method,u=!n.hideNotification&&y.includes(c),p=f[s.message]||v[a],u&&p&&console.error(p),P(l=new m(i,s)),l;case 22:case"end":return t.stop()}}),t,null,[[6,12]])}))),function(t,e,r){return O.apply(this,arguments)});function U(t,e){return A.apply(this,arguments)}function A(){return A=e(o.mark((function t(e,r){var n,i,a,s,c,l=arguments;return o.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=l.length>2&&void 0!==l[2]?l[2]:{},i=n.apiUrl,a=n.withHeaders,s=void 0!==a&&a,t.next=4,T(e,{method:"POST",headers:w,body:JSON.stringify(r)},{apiUrl:i,appKey:u()||p()});case 4:if(c=t.sent,!s){t.next=7;break}return t.abrupt("return",c);case 7:return t.abrupt("return",c&&c.json());case 8:case"end":return t.stop()}}),t)}))),A.apply(this,arguments)}function E(t){return K.apply(this,arguments)}function K(){return K=e(o.mark((function t(e){var r,n,i,s,c,l,f,h=arguments;return o.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=h.length>1&&void 0!==h[1]?h[1]:{},n=h.length>2&&void 0!==h[2]?h[2]:{},i=n.apiUrl,s=n.appKey,c=n.signal,l=a.stringify(r,{arrayFormat:"bracket"}),t.next=6,T("".concat(e).concat(l?"?":"").concat(l),{method:"GET",signal:c},{apiUrl:i,appKey:s||u()||p()});case 6:if(f=t.sent,t.t0=f,!t.t0){t.next=12;break}return t.next=11,f.json();case 11:t.t0=t.sent;case 12:return t.t1=t.t0,t.t2=f&&f.headers,t.abrupt("return",{data:t.t1,headers:t.t2});case 15:case"end":return t.stop()}}),t)}))),K.apply(this,arguments)}function C(t){return S.apply(this,arguments)}function S(){return S=e(o.mark((function t(e){var r,n,i,a=arguments;return o.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=a.length>1&&void 0!==a[1]?a[1]:{},n=a.length>2&&void 0!==a[2]?a[2]:{},t.next=4,E(e,r,d(d({},n),{},{appKey:n.appKey||u()||p()}));case 4:return i=t.sent,t.abrupt("return",i.data);case 6:case"end":return t.stop()}}),t)}))),S.apply(this,arguments)}function D(t,e){return N.apply(this,arguments)}function N(){return N=e(o.mark((function t(e,r){var n,i,s,c,l,f,h=arguments;return o.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=h.length>2&&void 0!==h[2]?h[2]:{},i=h.length>3&&void 0!==h[3]?h[3]:{},s=i.apiUrl,c=i.signal,l=a.stringify(n),t.next=6,T("".concat(e).concat(l?"?":"").concat(l),{method:"PUT",headers:w,body:JSON.stringify(r)},{apiUrl:s,appKey:u()||p(),signal:c});case 6:return f=t.sent,t.abrupt("return",f&&f.json());case 8:case"end":return t.stop()}}),t)}))),N.apply(this,arguments)}function B(t,e){return L.apply(this,arguments)}function L(){return L=e(o.mark((function t(e,r){var n,i,s,c,l,f,h=arguments;return o.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=h.length>2&&void 0!==h[2]?h[2]:{},i=h.length>3&&void 0!==h[3]?h[3]:{},s=i.apiUrl,c=i.signal,l=a.stringify(n),t.next=6,T("".concat(e).concat(l?"?":"").concat(l),{method:"PATCH",headers:w,body:JSON.stringify(r)},{apiUrl:s,appKey:u()||p(),signal:c});case 6:return f=t.sent,t.abrupt("return",f&&f.json());case 8:case"end":return t.stop()}}),t)}))),L.apply(this,arguments)}function F(t){return M.apply(this,arguments)}function M(){return M=e(o.mark((function t(e){var r,n,i,s,c,l,f=arguments;return o.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=f.length>1&&void 0!==f[1]?f[1]:{},n=f.length>2&&void 0!==f[2]?f[2]:{},i=n.apiUrl,s=n.signal,c=a.stringify(r),t.next=6,T(c?"".concat(e,"?").concat(c):e,{method:"DELETE",headers:w},{apiUrl:i,appKey:u()||p(),signal:s});case 6:return l=t.sent,t.abrupt("return",l&&l.json());case 8:case"end":return t.stop()}}),t)}))),M.apply(this,arguments)}function H(t,e){return I.apply(this,arguments)}function I(){return I=e(o.mark((function e(r,n){var i,s,c,l,f,h,d,v,y=arguments;return o.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=y.length>2&&void 0!==y[2]?y[2]:{},s=y.length>3&&void 0!==y[3]?y[3]:{},c=a.stringify(i),l=s.method,f=void 0===l?"POST":l,h=s.signal,d=new FormData,Object.entries(n).forEach((function(e){var r=t(e,2),n=r[0],i=r[1];Array.isArray(i)?i.forEach((function(t){d.append(n,t)})):d.append(n,i)})),e.next=8,T(c?"".concat(r,"?").concat(c):r,{method:f,headers:{Accept:"application/json"},body:d},{appKey:u()||p(),signal:h});case 8:return v=e.sent,e.abrupt("return",v&&v.json());case 10:case"end":return e.stop()}}),e)}))),I.apply(this,arguments)}export{m as APIException,g as baseUrl,F as del,C as get,E as getWithHeaders,P as handleAuthenticationProblem,B as patch,U as post,D as put,H as sendFormData};
1
+ import e from"@babel/runtime/helpers/slicedToArray";import t from"@babel/runtime/helpers/objectWithoutProperties";import r from"@babel/runtime/helpers/asyncToGenerator";import n from"@babel/runtime/helpers/defineProperty";import i from"@babel/runtime/helpers/classCallCheck";import o from"@babel/runtime/helpers/createClass";import a from"@babel/runtime/regenerator";import*as s from"query-string";import{getAuthorizationHeaders as c,attachHTTPHeaders as u,getAppKeyAndId as p}from"../utils.js";import{CORVA_API_URLS as l}from"../constants.js";import{DISPLAY_HTTP_MESSAGES as f}from"./httpMessages.js";import{apiRequestsRateLimiter as h}from"./rateLimiter.js";var d=["appKey"],v=["appKey"];function m(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function y(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?m(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):m(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var b={400:"Request Failed",403:"No Permission",404:"Not Found"},g=["POST","PUT","PATCH","DELETE"],w=function(){function e(t,r){i(this,e),this.status=t.status,this.statusText=t.statusText,this.message=r.message||"No Message",this.errorBody=r}return o(e,[{key:"isAuthenticationProblem",value:function(){return 401===this.status}},{key:"isTermsProblem",value:function(){return 401===this.status&&"Please accept the latest terms of service"===this.message}},{key:"isLoginProblem",value:function(){var e,t;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t?void 0:t.login)}},{key:"isLockedAccountProblem",value:function(){var e,t,r;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t||null===(r=t.login)||void 0===r?void 0:r.includes("Account has been locked"))}},{key:"isInvalidVerificationCode",value:function(){var e,t,r;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t||null===(r=t.login)||void 0===r?void 0:r.includes("Invalid verification code"))}},{key:"isMissingVerificationCode",value:function(){var e,t,r;return 401===this.status&&(null===(e=this.errorBody)||void 0===e||null===(t=e.errors)||void 0===t||null===(r=t.identity)||void 0===r?void 0:r.includes("Missing verification code"))}}]),e}(),x=l.API,P=c(),j=y({"Content-Type":"application/json",Accept:"application/json"},P);function k(e){var t;null===(t=e.isAuthenticationProblem)||void 0===t||!t.call(e)||e.isTermsProblem()||e.isLoginProblem()||(console.error("Problem with user"),"/login"!==window.location.pathname&&(window.location.href="/login"))}var O=/^\/v1\/assets.*/;function T(){return T=r(a.mark((function e(t){var r,n,i,o,s,c,p=arguments;return a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=p.length>1&&void 0!==p[1]?p[1]:{},n=p.length>2&&void 0!==p[2]?p[2]:{},i=n.apiUrl,o=void 0===i?x:i,s=n.appKey,c=n.appInstanceId,!s||!c){e.next=6;break}return e.next=6,h.acquire(s,c);case 6:return O.test(t)&&(r.cache="reload"),r.credentials="include",e.abrupt("return",fetch("".concat(o).concat(t),u(y({config:r,appKey:s},P))));case 9:case"end":return e.stop()}}),e)}))),T.apply(this,arguments)}var U,A,E=(U=function(e){return T.apply(this,arguments)},A=r(a.mark((function e(t,r,n){var i,o,s,c,u,p,l;return a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,U(t,r,n);case 2:if(i=e.sent,o=i.status,!i.ok){e.next=6;break}return e.abrupt("return",204===o?null:i);case 6:return e.prev=6,e.next=9,i.json();case 9:s=e.sent,e.next=15;break;case 12:e.prev=12,e.t0=e.catch(6),s={};case 15:throw c=r.method,u=!n.hideNotification&&g.includes(c),p=f[s.message]||b[o],u&&p&&console.error(p),k(l=new w(i,s)),l;case 22:case"end":return e.stop()}}),e,null,[[6,12]])}))),function(e,t,r){return A.apply(this,arguments)});function K(e,t){return C.apply(this,arguments)}function C(){return C=r(a.mark((function e(t,r){var n,i,o,s,c,u=arguments;return a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=u.length>2&&void 0!==u[2]?u[2]:{},i=n.apiUrl,o=n.withHeaders,s=void 0!==o&&o,e.next=4,E(t,{method:"POST",headers:j,body:JSON.stringify(r)},y({apiUrl:i},p()));case 4:if(c=e.sent,!s){e.next=7;break}return e.abrupt("return",c);case 7:return e.abrupt("return",c&&c.json());case 8:case"end":return e.stop()}}),e)}))),C.apply(this,arguments)}function S(e){return D.apply(this,arguments)}function D(){return D=r(a.mark((function e(r){var n,i,o,c,u,l,f,h,v,m=arguments;return a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=m.length>1&&void 0!==m[1]?m[1]:{},i=m.length>2&&void 0!==m[2]?m[2]:{},o=i.apiUrl,c=i.signal,u=s.stringify(n,{arrayFormat:"bracket"}),l=p()||{},f=l.appKey,h=t(l,d),e.next=7,E("".concat(r).concat(u?"?":"").concat(u),{method:"GET",signal:c},y({apiUrl:o,appKey:i.appKey||f},h));case 7:if(v=e.sent,e.t0=v,!e.t0){e.next=13;break}return e.next=12,v.json();case 12:e.t0=e.sent;case 13:return e.t1=e.t0,e.t2=v&&v.headers,e.abrupt("return",{data:e.t1,headers:e.t2});case 16:case"end":return e.stop()}}),e)}))),D.apply(this,arguments)}function N(e){return L.apply(this,arguments)}function L(){return L=r(a.mark((function e(r){var n,i,o,s,c,u,l=arguments;return a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=l.length>1&&void 0!==l[1]?l[1]:{},i=l.length>2&&void 0!==l[2]?l[2]:{},o=p()||{},s=o.appKey,c=t(o,v),e.next=5,S(r,n,y(y({},i),{},{appKey:i.appKey||s},c));case 5:return u=e.sent,e.abrupt("return",u.data);case 7:case"end":return e.stop()}}),e)}))),L.apply(this,arguments)}function B(e,t){return I.apply(this,arguments)}function I(){return I=r(a.mark((function e(t,r){var n,i,o,c,u,l,f=arguments;return a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=f.length>2&&void 0!==f[2]?f[2]:{},i=f.length>3&&void 0!==f[3]?f[3]:{},o=i.apiUrl,c=i.signal,u=s.stringify(n),e.next=6,E("".concat(t).concat(u?"?":"").concat(u),{method:"PUT",headers:j,body:JSON.stringify(r)},y(y({apiUrl:o},p()),{},{signal:c}));case 6:return l=e.sent,e.abrupt("return",l&&l.json());case 8:case"end":return e.stop()}}),e)}))),I.apply(this,arguments)}function F(e,t){return M.apply(this,arguments)}function M(){return M=r(a.mark((function e(t,r){var n,i,o,c,u,l,f=arguments;return a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=f.length>2&&void 0!==f[2]?f[2]:{},i=f.length>3&&void 0!==f[3]?f[3]:{},o=i.apiUrl,c=i.signal,u=s.stringify(n),e.next=6,E("".concat(t).concat(u?"?":"").concat(u),{method:"PATCH",headers:j,body:JSON.stringify(r)},y(y({apiUrl:o},p()),{},{signal:c}));case 6:return l=e.sent,e.abrupt("return",l&&l.json());case 8:case"end":return e.stop()}}),e)}))),M.apply(this,arguments)}function q(e){return H.apply(this,arguments)}function H(){return H=r(a.mark((function e(t){var r,n,i,o,c,u,l=arguments;return a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=l.length>1&&void 0!==l[1]?l[1]:{},n=l.length>2&&void 0!==l[2]?l[2]:{},i=n.apiUrl,o=n.signal,c=s.stringify(r),e.next=6,E(c?"".concat(t,"?").concat(c):t,{method:"DELETE",headers:j},y(y({apiUrl:i},p()),{},{signal:o}));case 6:return u=e.sent,e.abrupt("return",u&&u.json());case 8:case"end":return e.stop()}}),e)}))),H.apply(this,arguments)}function J(e,t){return G.apply(this,arguments)}function G(){return G=r(a.mark((function t(r,n){var i,o,c,u,l,f,h,d,v=arguments;return a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=v.length>2&&void 0!==v[2]?v[2]:{},o=v.length>3&&void 0!==v[3]?v[3]:{},c=s.stringify(i),u=o.method,l=void 0===u?"POST":u,f=o.signal,h=new FormData,Object.entries(n).forEach((function(t){var r=e(t,2),n=r[0],i=r[1];Array.isArray(i)?i.forEach((function(e){h.append(n,e)})):h.append(n,i)})),t.next=8,E(c?"".concat(r,"?").concat(c):r,{method:l,headers:{Accept:"application/json"},body:h},y(y({},p()),{},{signal:f}));case 8:return d=t.sent,t.abrupt("return",d&&d.json());case 10:case"end":return t.stop()}}),t)}))),G.apply(this,arguments)}export{w as APIException,x as baseUrl,q as del,N as get,S as getWithHeaders,k as handleAuthenticationProblem,F as patch,K as post,B as put,J as sendFormData};
2
2
  //# sourceMappingURL=apiCore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"apiCore.js","sources":["../../../src/clients/api/apiCore.js"],"sourcesContent":["import * as queryString from 'query-string';\n\nimport {\n getAppKeyFromStackTrace,\n attachHTTPHeaders,\n getAuthorizationHeaders,\n getAppKeyFromXProps,\n} from '../utils';\nimport { CORVA_API_URLS } from '../constants';\n\nimport { DISPLAY_HTTP_MESSAGES } from './httpMessages';\n\nconst HTTP_ERROR_MESSAGES = {\n 400: 'Request Failed',\n 403: 'No Permission',\n 404: 'Not Found',\n};\n\nconst TOS_ERROR_MESSAGE = 'Please accept the latest terms of service';\nconst LOCKED_ERROR_MESSAGE = 'Account has been locked';\nconst INVALID_VERIFICATION_CODE_MESSAGE = 'Invalid verification code';\nconst MISSING_VERIFICATION_CODE_MESSAGE = 'Missing verification code';\n\nconst HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS = [\n // NOTE: Do not show error notifications for GET method. Because users may request a deleted item\n 'POST',\n 'PUT',\n 'PATCH',\n 'DELETE',\n];\n\nexport class APIException {\n constructor(response, json) {\n this.status = response.status;\n this.statusText = response.statusText;\n this.message = json.message || 'No Message';\n this.errorBody = json;\n }\n\n isAuthenticationProblem() {\n return this.status === 401;\n }\n\n isTermsProblem() {\n // FIXME: this.message === TOS_ERROR_MESSAGE is a hack. Back-end team should come\n // with another solution.\n return this.status === 401 && this.message === TOS_ERROR_MESSAGE;\n }\n\n isLoginProblem() {\n return this.status === 401 && this.errorBody?.errors?.login;\n }\n\n isLockedAccountProblem() {\n return this.status === 401 && this.errorBody?.errors?.login?.includes(LOCKED_ERROR_MESSAGE);\n }\n\n isInvalidVerificationCode() {\n return (\n this.status === 401 &&\n this.errorBody?.errors?.login?.includes(INVALID_VERIFICATION_CODE_MESSAGE)\n );\n }\n\n isMissingVerificationCode() {\n return (\n this.status === 401 &&\n this.errorBody?.errors?.identity?.includes(MISSING_VERIFICATION_CODE_MESSAGE)\n );\n }\n}\n\nexport const baseUrl = CORVA_API_URLS.API;\n\nconst AUTH_HEADERS = getAuthorizationHeaders();\nconst JSON_HEADERS = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...AUTH_HEADERS,\n};\n\nexport function handleAuthenticationProblem(e) {\n if (e.isAuthenticationProblem?.() && !e.isTermsProblem() && !e.isLoginProblem()) {\n console.error('Problem with user');\n // NOTE: Redirect to login page\n if (window.location.pathname !== '/login') window.location.href = '/login';\n }\n}\n\nfunction errorHandlerDecorator(requestCoreFunc) {\n return async function errorHandler(path, config, overrides) {\n const response = await requestCoreFunc(path, config, overrides);\n\n const { status } = response;\n\n if (response.ok) {\n return status === 204 // NOTE: No content\n ? null\n : response;\n }\n\n // NOTE: Handle Error response logic\n let json;\n try {\n json = await response.json();\n } catch (e) {\n json = {};\n }\n const requestMethod = config.method;\n const isMethodToShowNotification =\n !overrides.hideNotification &&\n HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS.includes(requestMethod);\n\n const httpErrorMessage = DISPLAY_HTTP_MESSAGES[json.message] || HTTP_ERROR_MESSAGES[status];\n\n if (isMethodToShowNotification && httpErrorMessage) {\n console.error(httpErrorMessage);\n }\n\n const exception = new APIException(response, json);\n handleAuthenticationProblem(exception);\n\n throw exception;\n };\n}\n\nconst V1_ASSETS_REGEXP = /^\\/v1\\/assets.*/;\n\nasync function requestCore(path, config = {}, overrides = {}) {\n const { apiUrl = baseUrl, appKey } = overrides;\n // temporary enable cache for the heaviest request\n if (V1_ASSETS_REGEXP.test(path)) {\n config.cache = 'reload'; // eslint-disable-line no-param-reassign\n }\n\n config.credentials = 'include'; // eslint-disable-line no-param-reassign\n\n return fetch(`${apiUrl}${path}`, attachHTTPHeaders({ config, appKey, ...AUTH_HEADERS }));\n}\n\nconst request = errorHandlerDecorator(requestCore);\n\n/**\n * The post method is most-often utilized to **create** new resources.\n * @async\n * @param {string} path - path to resource.\n * @param {Object=} entity - API entity to create\n * @returns {Promise<*>}\n */\nexport async function post(path, entity, requestOptions = {}) {\n const { apiUrl, withHeaders = false } = requestOptions;\n const response = await request(\n path,\n {\n method: 'POST',\n headers: JSON_HEADERS,\n body: JSON.stringify(entity),\n },\n { apiUrl, appKey: getAppKeyFromXProps() || getAppKeyFromStackTrace() }\n );\n\n if (withHeaders) return response;\n\n return response && response.json();\n}\n\nexport async function getWithHeaders(path, queryParams = {}, requestOptions = {}) {\n const { apiUrl, appKey, signal } = requestOptions;\n const qry = queryString.stringify(queryParams, { arrayFormat: 'bracket' });\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'GET',\n signal,\n },\n { apiUrl, appKey: appKey || getAppKeyFromXProps() || getAppKeyFromStackTrace() }\n );\n\n return {\n data: response && (await response.json()),\n headers: response && response.headers,\n };\n}\n\n/**\n * The get method is used to **read** (or retrieve) a representation of a resource\n * @async\n * @param {string} path - path to resource.\n * @param {Object=} queryParams - Object with query params such as per_page, sort, asset_id, etc.\n * @param {Object=} requestOptions - Additional options for request. For example: apiUrl, signal etc.\n * @returns {Promise<*>}\n */\nexport async function get(path, queryParams = {}, requestOptions = {}) {\n const dataAndHeaders = await getWithHeaders(path, queryParams, {\n ...requestOptions,\n appKey: requestOptions.appKey || getAppKeyFromXProps() || getAppKeyFromStackTrace(),\n });\n return dataAndHeaders.data;\n}\n\nexport async function getFile(path, queryParams = {}, requestOptions = {}) {\n const qry = queryString.stringify(queryParams);\n const { signal } = requestOptions;\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n { method: 'GET' },\n { appKey: getAppKeyFromXProps() || getAppKeyFromStackTrace(), signal }\n );\n\n return response && response.blob();\n}\n\nexport async function put(path, content, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams);\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'PUT',\n headers: JSON_HEADERS,\n body: JSON.stringify(content),\n },\n { apiUrl, appKey: getAppKeyFromXProps() || getAppKeyFromStackTrace(), signal }\n );\n\n return response && response.json();\n}\n\nexport async function patch(path, content, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams);\n\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'PATCH',\n headers: JSON_HEADERS,\n body: JSON.stringify(content),\n },\n {\n apiUrl,\n appKey: getAppKeyFromXProps() || getAppKeyFromStackTrace(),\n signal,\n }\n );\n\n return response && response.json();\n}\n\nexport async function del(path, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const query = queryString.stringify(queryParams);\n const response = await request(\n query ? `${path}?${query}` : path,\n {\n method: 'DELETE',\n headers: JSON_HEADERS,\n },\n {\n apiUrl,\n appKey: getAppKeyFromXProps() || getAppKeyFromStackTrace(),\n signal,\n }\n );\n\n return response && response.json();\n}\n\nexport async function sendFormData(path, data, queryParams = {}, requestOptions = {}) {\n const query = queryString.stringify(queryParams);\n const { method = 'POST', signal } = requestOptions;\n const formData = new FormData();\n\n Object.entries(data).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach(arrayValueEntity => {\n formData.append(key, arrayValueEntity);\n });\n } else {\n formData.append(key, value);\n }\n });\n\n const response = await request(\n query ? `${path}?${query}` : path,\n {\n method,\n headers: {\n Accept: 'application/json',\n },\n body: formData,\n },\n { appKey: getAppKeyFromXProps() || getAppKeyFromStackTrace(), signal }\n );\n\n return response && response.json();\n}\n"],"names":["HTTP_ERROR_MESSAGES","HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS","APIException","response","json","_classCallCheck","this","status","statusText","message","errorBody","_createClass","key","value","_this$errorBody","_this$errorBody$error","errors","login","_this$errorBody2","_this$errorBody2$erro","_this$errorBody2$erro2","includes","_this$errorBody3","_this$errorBody3$erro","_this$errorBody3$erro2","_this$errorBody4","_this$errorBody4$erro","_this$errorBody4$erro2","identity","baseUrl","CORVA_API_URLS","API","AUTH_HEADERS","getAuthorizationHeaders","JSON_HEADERS","_objectSpread","Accept","handleAuthenticationProblem","e","_e$isAuthenticationPr","isAuthenticationProblem","isTermsProblem","isLoginProblem","console","error","window","location","pathname","href","V1_ASSETS_REGEXP","_requestCore","_asyncToGenerator","_regeneratorRuntime","mark","path","config","overrides","_overrides$apiUrl","apiUrl","appKey","_args2","arguments","wrap","_context2","prev","next","length","undefined","test","cache","credentials","abrupt","fetch","attachHTTPHeaders","stop","_callee2","apply","requestCoreFunc","_errorHandler","request","_x4","requestMethod","isMethodToShowNotification","httpErrorMessage","exception","_context","sent","ok","t0","method","hideNotification","DISPLAY_HTTP_MESSAGES","_callee","_x","_x2","_x3","post","_x5","_x6","_post","_callee3","entity","requestOptions","_requestOptions$withH","withHeaders","_args3","_context3","headers","body","JSON","stringify","getAppKeyFromXProps","getAppKeyFromStackTrace","getWithHeaders","_x7","_getWithHeaders","queryParams","signal","qry","_args4","_context4","queryString","arrayFormat","t1","t2","data","_callee4","get","_x8","_get","dataAndHeaders","_args5","_context5","_callee5","put","_x10","_x11","_put","_callee7","content","_args7","_context7","patch","_x12","_x13","_patch","_callee8","_args8","_context8","del","_x14","_del","query","_args9","_context9","concat","_callee9","sendFormData","_x15","_x16","_sendFormData","_callee10","_requestOptions$metho","formData","_args10","_context10","FormData","Object","entries","forEach","_ref","_ref2","_slicedToArray","Array","isArray","arrayValueEntity","append"],"mappings":"6nCAYA,IAAMA,EAAsB,CAC1B,IAAK,iBACL,IAAK,gBACL,IAAK,aAQDC,EAA2C,CAE/C,OACA,MACA,QACA,UAGWC,EAAY,WACvB,SAAYC,EAAAA,EAAUC,GAAMC,EAAAC,KAAAJ,GAC1BI,KAAKC,OAASJ,EAASI,OACvBD,KAAKE,WAAaL,EAASK,WAC3BF,KAAKG,QAAUL,EAAKK,SAAW,aAC/BH,KAAKI,UAAYN,CACnB,CAgCC,OAhCAO,EAAAT,EAAA,CAAA,CAAAU,IAAA,0BAAAC,MAED,WACE,OAAuB,MAAhBP,KAAKC,MACd,GAAC,CAAAK,IAAA,iBAAAC,MAED,WAGE,OAAuB,MAAhBP,KAAKC,QA5BU,8CA4BQD,KAAKG,OACrC,GAAC,CAAAG,IAAA,iBAAAC,MAED,WAAiB,IAAAC,EAAAC,EACf,OAAuB,MAAhBT,KAAKC,SAAkB,QAAAO,EAAAR,KAAKI,iBAAL,IAAAI,GAAsB,QAAtBC,EAAAD,EAAgBE,cAAM,IAAAD,OAAtB,EAAAA,EAAwBE,MACxD,GAAC,CAAAL,IAAA,yBAAAC,MAED,WAAyB,IAAAK,EAAAC,EAAAC,EACvB,OAAuB,MAAhBd,KAAKC,SAAgC,QAAdW,EAAAZ,KAAKI,iBAAS,IAAAQ,GAAQ,QAARC,EAAdD,EAAgBF,cAAM,IAAAG,GAAO,QAAPC,EAAtBD,EAAwBF,aAAK,IAAAG,OAAf,EAAdA,EAA+BC,SAnCpC,2BAoC3B,GAAC,CAAAT,IAAA,4BAAAC,MAED,WAA4B,IAAAS,EAAAC,EAAAC,EAC1B,OACkB,MAAhBlB,KAAKC,SACS,QAAde,EAAAhB,KAAKI,iBAAS,IAAAY,GAAQ,QAARC,EAAdD,EAAgBN,cAAM,IAAAO,GAAO,QAAPC,EAAtBD,EAAwBN,aAAK,IAAAO,OAAf,EAAdA,EAA+BH,SAxCK,6BA0CxC,GAAC,CAAAT,IAAA,4BAAAC,MAED,WAA4B,IAAAY,EAAAC,EAAAC,EAC1B,OACkB,MAAhBrB,KAAKC,SACS,QAAdkB,EAAAnB,KAAKI,iBAAS,IAAAe,GAAQ,QAARC,EAAdD,EAAgBT,cAAM,IAAAU,GAAU,QAAVC,EAAtBD,EAAwBE,gBAAQ,IAAAD,OAAlB,EAAdA,EAAkCN,SA9CE,6BAgDxC,KAACnB,CAAA,CAtCsB,GAyCZ2B,EAAUC,EAAeC,IAEhCC,EAAeC,IACfC,EAAYC,EAAA,CAChB,eAAgB,mBAChBC,OAAQ,oBACLJ,GAGE,SAASK,EAA4BC,GAAG,IAAAC,UACzCA,EAAAD,EAAEE,uCAAFD,EAAAD,KAAAA,IAAkCA,EAAEG,kBAAqBH,EAAEI,mBAC7DC,QAAQC,MAAM,qBAEmB,WAA7BC,OAAOC,SAASC,WAAuBF,OAAOC,SAASE,KAAO,UAEtE,CAuCA,IAAMC,EAAmB,kBAEC,SAAAC,IAUzB,OAVyBA,EAAAC,EAAAC,EAAAC,MAA1B,WAA2BC,GAAI,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,UAAA,OAAAT,EAAAU,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAOG,OAPDV,EAAMK,EAAAM,OAAA,QAAAC,IAAAP,EAAA,GAAAA,EAAA,GAAG,CAAA,EAAIJ,EAASI,EAAAM,OAAA,QAAAC,IAAAP,EAAA,GAAAA,EAAA,GAAG,CAAA,EAAEH,EACrBD,EAA7BE,OAAAA,OAAM,IAAAD,EAAG5B,EAAO4B,EAAEE,EAAWH,EAAXG,OAEtBV,EAAiBmB,KAAKd,KACxBC,EAAOc,MAAQ,UAGjBd,EAAOe,YAAc,UAAWP,EAAAQ,OAAA,SAEzBC,MAASd,GAAAA,OAAAA,GAASJ,OAAAA,GAAQmB,EAAiBtC,EAAA,CAAGoB,OAAAA,EAAQI,OAAAA,GAAW3B,MAAgB,KAAA,EAAA,IAAA,MAAA,OAAA+B,EAAAW,OAAA,GAAAC,EACzF,KAAAzB,EAAA0B,MAAAtE,KAAAuD,UAAA,CAED,IAnD+BgB,EAC7BC,EAkDIC,GAnDyBF,EAqCY,SAEjBG,GAAA,OAAA9B,EAAA0B,MAAAtE,KAAAuD,UAAA,EAtCxBiB,EAAA3B,EAAAC,EAAAC,MAAO,SAA4BC,EAAAA,EAAMC,EAAQC,GAAS,IAAArD,EAAAI,EAAAH,EAAA6E,EAAAC,EAAAC,EAAAC,EAAA,OAAAhC,EAAAU,MAAA,SAAAuB,GAAA,OAAA,OAAAA,EAAArB,KAAAqB,EAAApB,MAAA,KAAA,EAAA,OAAAoB,EAAApB,KAAA,EACjCY,EAAgBvB,EAAMC,EAAQC,GAAU,KAAA,EAEjD,GAFRrD,EAAQkF,EAAAC,KAEN/E,EAAWJ,EAAXI,QAEJJ,EAASoF,GAAE,CAAAF,EAAApB,KAAA,EAAA,KAAA,CAAA,OACN1D,EAAAA,OAAAA,SAAW,MAAXA,EACH,KACAJ,GAAQ,KAAA,EAAA,OAAAkF,EAAArB,KAAA,EAAAqB,EAAApB,KAAA,EAMC9D,EAASC,OAAM,KAAA,EAA5BA,EAAIiF,EAAAC,KAAAD,EAAApB,KAAA,GAAA,MAAA,KAAA,GAAAoB,EAAArB,KAAA,GAAAqB,EAAAG,GAAAH,EAAA,MAAA,GAEJjF,EAAO,CAAA,EAAG,KAAA,GAc2B,MAZjC6E,EAAgB1B,EAAOkC,OACvBP,GACH1B,EAAUkC,kBACXzF,EAAyCoB,SAAS4D,GAE9CE,EAAmBQ,EAAsBvF,EAAKK,UAAYT,EAAoBO,GAEhF2E,GAA8BC,GAChCxC,QAAQC,MAAMuC,GAIhB9C,EADM+C,EAAY,IAAIlF,EAAaC,EAAUC,IAGvCgF,EAAS,KAAA,GAAA,IAAA,MAAA,OAAAC,EAAAX,OAAA,GAAAkB,EAAA,KAAA,CAAA,CAAA,EAAA,KAChB,KAAA,SAjCiCC,EAAAC,EAAAC,GAAA,OAAAjB,EAAAF,MAAAtE,KAAAuD,UAAA,GA2DpC,SAAsBmC,EAAIC,EAAAC,GAAA,OAAAC,EAAAvB,MAAAtE,KAAAuD,UAAA,CAezB,SAAAsC,IAAA,OAAAA,EAfMhD,EAAAC,EAAAC,MAAA,SAAA+C,EAAoB9C,EAAM+C,GAAM,IAAAC,EAAA5C,EAAA6C,EAAAC,EAAArG,EAAAsG,EAAA5C,UAAA,OAAAT,EAAAU,MAAA,SAAA4C,GAAA,OAAA,OAAAA,EAAA1C,KAAA0C,EAAAzC,MAAA,KAAA,EACF,OADIqC,EAAcG,EAAAvC,OAAA,QAAAC,IAAAsC,EAAA,GAAAA,EAAA,GAAG,CAAA,EAChD/C,EAAgC4C,EAAhC5C,OAAM6C,EAA0BD,EAAxBE,YAAAA,OAAW,IAAAD,GAAQA,EAAAG,EAAAzC,KAAA,EACZc,EACrBzB,EACA,CACEmC,OAAQ,OACRkB,QAASzE,EACT0E,KAAMC,KAAKC,UAAUT,IAEvB,CAAE3C,OAAAA,EAAQC,OAAQoD,KAAyBC,MAC5C,KAAA,EARa,GAAR7G,EAAQuG,EAAApB,MAUVkB,EAAW,CAAAE,EAAAzC,KAAA,EAAA,KAAA,CAAA,OAAAyC,EAAAnC,OAAA,SAASpE,GAAQ,KAAA,EAAA,OAAAuG,EAAAnC,OAAA,SAEzBpE,GAAYA,EAASC,QAAM,KAAA,EAAA,IAAA,MAAA,OAAAsG,EAAAhC,OAAA,GAAA0B,EACnC,KAAAD,EAAAvB,MAAAtE,KAAAuD,UAAA,CAED,SAAsBoD,EAAcC,GAAA,OAAAC,EAAAvC,MAAAtE,KAAAuD,UAAA,CAkBpC,SAAAsD,IAFC,OAEDA,EAAAhE,EAAAC,EAAAC,MAlBO,WAA8BC,GAAI,IAAA8D,EAAAd,EAAA5C,EAAAC,EAAA0D,EAAAC,EAAAnH,EAAAoH,EAAA1D,UAAA,OAAAT,EAAAU,MAAA,SAAA0D,GAAA,OAAA,OAAAA,EAAAxD,KAAAwD,EAAAvD,MAAA,KAAA,EAEmC,OAFjCmD,EAAWG,EAAArD,OAAA,QAAAC,IAAAoD,EAAA,GAAAA,EAAA,GAAG,CAAA,EAAIjB,EAAciB,EAAArD,OAAA,QAAAC,IAAAoD,EAAA,GAAAA,EAAA,GAAG,CAAA,EACpE7D,EAA2B4C,EAA3B5C,OAAQC,EAAmB2C,EAAnB3C,OAAQ0D,EAAWf,EAAXe,OAClBC,EAAMG,EAAYX,UAAUM,EAAa,CAAEM,YAAa,YAAYF,EAAAvD,KAAA,EACnDc,EAClBzB,GAAAA,OAAAA,GAAOgE,OAAAA,EAAM,IAAM,IAAKA,OAAAA,GAC3B,CACE7B,OAAQ,MACR4B,OAAAA,GAEF,CAAE3D,OAAAA,EAAQC,OAAQA,GAAUoD,KAAyBC,MACtD,KAAA,EAGe,GAVV7G,EAAQqH,EAAAlC,KAAAkC,EAAAhC,GAUNrF,GAAQqH,EAAAhC,GAAA,CAAAgC,EAAAvD,KAAA,GAAA,KAAA,CAAA,OAAAuD,EAAAvD,KAAA,GAAW9D,EAASC,OAAM,KAAA,GAAAoH,EAAAhC,GAAAgC,EAAAlC,KAAA,KAAA,GACH,OADGkC,EAAAG,GAAAH,EAAAhC,GAAAgC,EAAAI,GAC/BzH,GAAYA,EAASwG,QAAOa,EAAAjD,OAAA,SAAA,CADrCsD,KAAIL,EAAAG,GACJhB,QAAOa,EAAAI,KAAA,KAAA,GAAA,IAAA,MAAA,OAAAJ,EAAA9C,OAAA,GAAAoD,EAEV,KAAAX,EAAAvC,MAAAtE,KAAAuD,UAAA,CAUD,SAAsBkE,EAAGC,GAAA,OAAAC,EAAArD,MAAAtE,KAAAuD,UAAA,CAMxB,SAAAoE,IAAA,OAAAA,EAAA9E,EAAAC,EAAAC,MANM,WAAmBC,GAAI,IAAA8D,EAAAd,EAAA4B,EAAAC,EAAAtE,UAAA,OAAAT,EAAAU,MAAA,SAAAsE,GAAA,OAAA,OAAAA,EAAApE,KAAAoE,EAAAnE,MAAA,KAAA,EAAuC,OAArCmD,EAAWe,EAAAjE,OAAA,QAAAC,IAAAgE,EAAA,GAAAA,EAAA,GAAG,CAAA,EAAI7B,EAAc6B,EAAAjE,OAAA,QAAAC,IAAAgE,EAAA,GAAAA,EAAA,GAAG,CAAA,EAAEC,EAAAnE,KAAA,EACtCgD,EAAe3D,EAAM8D,SAC7Cd,GAAc,GAAA,CACjB3C,OAAQ2C,EAAe3C,QAAUoD,KAAyBC,OAC1D,KAAA,EAHkB,OAAdkB,EAAcE,EAAA9C,KAIb4C,EAAAA,OAAAA,SAAAA,EAAeL,MAAI,KAAA,EAAA,IAAA,MAAA,OAAAO,EAAA1D,OAAA,GAAA2D,EAC3B,KAAAJ,EAAArD,MAAAtE,KAAAuD,UAAA,CAcD,SAAsByE,EAAGC,EAAAC,GAAA,OAAAC,EAAA7D,MAAAtE,KAAAuD,UAAA,CAcxB,SAAA4E,IAAA,OAAAA,EAdMtF,EAAAC,EAAAC,MAAA,SAAAqF,EAAmBpF,EAAMqF,GAAO,IAAAvB,EAAAd,EAAA5C,EAAA2D,EAAAC,EAAAnH,EAAAyI,EAAA/E,UAAA,OAAAT,EAAAU,MAAA,SAAA+E,GAAA,OAAA,OAAAA,EAAA7E,KAAA6E,EAAA5E,MAAA,KAAA,EAES,OAFPmD,EAAWwB,EAAA1E,OAAA,QAAAC,IAAAyE,EAAA,GAAAA,EAAA,GAAG,CAAA,EAAItC,EAAcsC,EAAA1E,OAAA,QAAAC,IAAAyE,EAAA,GAAAA,EAAA,GAAG,CAAA,EAClElF,EAAmB4C,EAAnB5C,OAAQ2D,EAAWf,EAAXe,OACVC,EAAMG,EAAYX,UAAUM,GAAYyB,EAAA5E,KAAA,EACvBc,EAClBzB,GAAAA,OAAAA,GAAOgE,OAAAA,EAAM,IAAM,IAAKA,OAAAA,GAC3B,CACE7B,OAAQ,MACRkB,QAASzE,EACT0E,KAAMC,KAAKC,UAAU6B,IAEvB,CAAEjF,OAAAA,EAAQC,OAAQoD,KAAyBC,IAA2BK,OAAAA,IACvE,KAAA,EARa,OAARlH,EAAQ0I,EAAAvD,KAAAuD,EAAAtE,OAAA,SAUPpE,GAAYA,EAASC,QAAM,KAAA,EAAA,IAAA,MAAA,OAAAyI,EAAAnE,OAAA,GAAAgE,EACnC,KAAAD,EAAA7D,MAAAtE,KAAAuD,UAAA,CAED,SAAsBiF,EAAKC,EAAAC,GAAA,OAAAC,EAAArE,MAAAtE,KAAAuD,UAAA,CAmB1B,SAAAoF,IAAA,OAAAA,EAnBM9F,EAAAC,EAAAC,MAAA,SAAA6F,EAAqB5F,EAAMqF,GAAO,IAAAvB,EAAAd,EAAA5C,EAAA2D,EAAAC,EAAAnH,EAAAgJ,EAAAtF,UAAA,OAAAT,EAAAU,MAAA,SAAAsF,GAAA,OAAA,OAAAA,EAAApF,KAAAoF,EAAAnF,MAAA,KAAA,EAEO,OAFLmD,EAAW+B,EAAAjF,OAAA,QAAAC,IAAAgF,EAAA,GAAAA,EAAA,GAAG,CAAA,EAAI7C,EAAc6C,EAAAjF,OAAA,QAAAC,IAAAgF,EAAA,GAAAA,EAAA,GAAG,CAAA,EACpEzF,EAAmB4C,EAAnB5C,OAAQ2D,EAAWf,EAAXe,OACVC,EAAMG,EAAYX,UAAUM,GAAYgC,EAAAnF,KAAA,EAEvBc,EAClBzB,GAAAA,OAAAA,GAAOgE,OAAAA,EAAM,IAAM,IAAKA,OAAAA,GAC3B,CACE7B,OAAQ,QACRkB,QAASzE,EACT0E,KAAMC,KAAKC,UAAU6B,IAEvB,CACEjF,OAAAA,EACAC,OAAQoD,KAAyBC,IACjCK,OAAAA,IAEH,KAAA,EAZa,OAARlH,EAAQiJ,EAAA9D,KAAA8D,EAAA7E,OAAA,SAcPpE,GAAYA,EAASC,QAAM,KAAA,EAAA,IAAA,MAAA,OAAAgJ,EAAA1E,OAAA,GAAAwE,EACnC,KAAAD,EAAArE,MAAAtE,KAAAuD,UAAA,CAED,SAAsBwF,EAAGC,GAAA,OAAAC,EAAA3E,MAAAtE,KAAAuD,UAAA,CAiBxB,SAAA0F,IAAA,OAAAA,EAAApG,EAAAC,EAAAC,MAjBM,WAAmBC,GAAI,IAAA8D,EAAAd,EAAA5C,EAAA2D,EAAAmC,EAAArJ,EAAAsJ,EAAA5F,UAAA,OAAAT,EAAAU,MAAA,SAAA4F,GAAA,OAAA,OAAAA,EAAA1F,KAAA0F,EAAAzF,MAAA,KAAA,EAEoB,OAFlBmD,EAAWqC,EAAAvF,OAAA,QAAAC,IAAAsF,EAAA,GAAAA,EAAA,GAAG,CAAA,EAAInD,EAAcmD,EAAAvF,OAAA,QAAAC,IAAAsF,EAAA,GAAAA,EAAA,GAAG,CAAA,EACzD/F,EAAmB4C,EAAnB5C,OAAQ2D,EAAWf,EAAXe,OACVmC,EAAQ/B,EAAYX,UAAUM,GAAYsC,EAAAzF,KAAA,EACzBc,EACrByE,EAAK,GAAAG,OAAMrG,EAAQkG,KAAAA,OAAAA,GAAUlG,EAC7B,CACEmC,OAAQ,SACRkB,QAASzE,GAEX,CACEwB,OAAAA,EACAC,OAAQoD,KAAyBC,IACjCK,OAAAA,IAEH,KAAA,EAXa,OAARlH,EAAQuJ,EAAApE,KAAAoE,EAAAnF,OAAA,SAaPpE,GAAYA,EAASC,QAAM,KAAA,EAAA,IAAA,MAAA,OAAAsJ,EAAAhF,OAAA,GAAAkF,EACnC,KAAAL,EAAA3E,MAAAtE,KAAAuD,UAAA,CAED,SAAsBgG,EAAYC,EAAAC,GAAA,OAAAC,EAAApF,MAAAtE,KAAAuD,UAAA,CA4BjC,SAAAmG,IAAA,OAAAA,EA5BM7G,EAAAC,EAAAC,MAAA,SAAA4G,EAA4B3G,EAAMuE,GAAI,IAAAT,EAAAd,EAAAkD,EAAAU,EAAAzE,EAAA4B,EAAA8C,EAAAhK,EAAAiK,EAAAvG,UAAA,OAAAT,EAAAU,MAAA,SAAAuG,GAAA,OAAA,OAAAA,EAAArG,KAAAqG,EAAApG,MAAA,KAAA,EAaxC,OAb0CmD,EAAWgD,EAAAlG,OAAA,QAAAC,IAAAiG,EAAA,GAAAA,EAAA,GAAG,CAAA,EAAI9D,EAAc8D,EAAAlG,OAAA,QAAAC,IAAAiG,EAAA,GAAAA,EAAA,GAAG,CAAA,EAC1EZ,EAAQ/B,EAAYX,UAAUM,GAAY8C,EACZ5D,EAA5Bb,OAAAA,OAAM,IAAAyE,EAAG,OAAMA,EAAE7C,EAAWf,EAAXe,OACnB8C,EAAW,IAAIG,SAErBC,OAAOC,QAAQ3C,GAAM4C,SAAQ,SAAkBC,GAAA,IAAAC,EAAAC,EAAAF,EAAA,GAAhB9J,EAAG+J,EAAA,GAAE9J,EAAK8J,EAAA,GACnCE,MAAMC,QAAQjK,GAChBA,EAAM4J,SAAQ,SAAAM,GACZZ,EAASa,OAAOpK,EAAKmK,EACvB,IAEAZ,EAASa,OAAOpK,EAAKC,EAEzB,IAAGwJ,EAAApG,KAAA,EAEoBc,EACrByE,EAAK,GAAAG,OAAMrG,EAAQkG,KAAAA,OAAAA,GAAUlG,EAC7B,CACEmC,OAAAA,EACAkB,QAAS,CACPvE,OAAQ,oBAEVwE,KAAMuD,GAER,CAAExG,OAAQoD,KAAyBC,IAA2BK,OAAAA,IAC/D,KAAA,EAVa,OAARlH,EAAQkK,EAAA/E,KAAA+E,EAAA9F,OAAA,SAYPpE,GAAYA,EAASC,QAAM,KAAA,GAAA,IAAA,MAAA,OAAAiK,EAAA3F,OAAA,GAAAuF,EACnC,KAAAD,EAAApF,MAAAtE,KAAAuD,UAAA"}
1
+ {"version":3,"file":"apiCore.js","sources":["../../../src/clients/api/apiCore.js"],"sourcesContent":["import * as queryString from 'query-string';\n\nimport { attachHTTPHeaders, getAppKeyAndId, getAuthorizationHeaders } from '../utils';\nimport { CORVA_API_URLS } from '../constants';\n\nimport { DISPLAY_HTTP_MESSAGES } from './httpMessages';\n\nimport { apiRequestsRateLimiter } from '~/clients/api/rateLimiter';\n\nconst HTTP_ERROR_MESSAGES = {\n 400: 'Request Failed',\n 403: 'No Permission',\n 404: 'Not Found',\n};\n\nconst TOS_ERROR_MESSAGE = 'Please accept the latest terms of service';\nconst LOCKED_ERROR_MESSAGE = 'Account has been locked';\nconst INVALID_VERIFICATION_CODE_MESSAGE = 'Invalid verification code';\nconst MISSING_VERIFICATION_CODE_MESSAGE = 'Missing verification code';\n\nconst HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS = [\n // NOTE: Do not show error notifications for GET method. Because users may request a deleted item\n 'POST',\n 'PUT',\n 'PATCH',\n 'DELETE',\n];\n\nexport class APIException {\n constructor(response, json) {\n this.status = response.status;\n this.statusText = response.statusText;\n this.message = json.message || 'No Message';\n this.errorBody = json;\n }\n\n isAuthenticationProblem() {\n return this.status === 401;\n }\n\n isTermsProblem() {\n // FIXME: this.message === TOS_ERROR_MESSAGE is a hack. Back-end team should come\n // with another solution.\n return this.status === 401 && this.message === TOS_ERROR_MESSAGE;\n }\n\n isLoginProblem() {\n return this.status === 401 && this.errorBody?.errors?.login;\n }\n\n isLockedAccountProblem() {\n return this.status === 401 && this.errorBody?.errors?.login?.includes(LOCKED_ERROR_MESSAGE);\n }\n\n isInvalidVerificationCode() {\n return (\n this.status === 401 &&\n this.errorBody?.errors?.login?.includes(INVALID_VERIFICATION_CODE_MESSAGE)\n );\n }\n\n isMissingVerificationCode() {\n return (\n this.status === 401 &&\n this.errorBody?.errors?.identity?.includes(MISSING_VERIFICATION_CODE_MESSAGE)\n );\n }\n}\n\nexport const baseUrl = CORVA_API_URLS.API;\n\nconst AUTH_HEADERS = getAuthorizationHeaders();\nconst JSON_HEADERS = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...AUTH_HEADERS,\n};\n\nexport function handleAuthenticationProblem(e) {\n if (e.isAuthenticationProblem?.() && !e.isTermsProblem() && !e.isLoginProblem()) {\n console.error('Problem with user');\n // NOTE: Redirect to login page\n if (window.location.pathname !== '/login') window.location.href = '/login';\n }\n}\n\nfunction errorHandlerDecorator(requestCoreFunc) {\n return async function errorHandler(path, config, overrides) {\n const response = await requestCoreFunc(path, config, overrides);\n\n const { status } = response;\n\n if (response.ok) {\n return status === 204 // NOTE: No content\n ? null\n : response;\n }\n\n // NOTE: Handle Error response logic\n let json;\n try {\n json = await response.json();\n } catch (e) {\n json = {};\n }\n const requestMethod = config.method;\n const isMethodToShowNotification =\n !overrides.hideNotification &&\n HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS.includes(requestMethod);\n\n const httpErrorMessage = DISPLAY_HTTP_MESSAGES[json.message] || HTTP_ERROR_MESSAGES[status];\n\n if (isMethodToShowNotification && httpErrorMessage) {\n console.error(httpErrorMessage);\n }\n\n const exception = new APIException(response, json);\n handleAuthenticationProblem(exception);\n\n throw exception;\n };\n}\n\nconst V1_ASSETS_REGEXP = /^\\/v1\\/assets.*/;\n\nasync function requestCore(path, config = {}, overrides = {}) {\n const { apiUrl = baseUrl, appKey, appInstanceId } = overrides;\n\n if (appKey && appInstanceId) {\n await apiRequestsRateLimiter.acquire(appKey, appInstanceId);\n }\n\n // temporary enable cache for the heaviest request\n if (V1_ASSETS_REGEXP.test(path)) {\n config.cache = 'reload'; // eslint-disable-line no-param-reassign\n }\n\n config.credentials = 'include'; // eslint-disable-line no-param-reassign\n\n return fetch(`${apiUrl}${path}`, attachHTTPHeaders({ config, appKey, ...AUTH_HEADERS }));\n}\n\nconst request = errorHandlerDecorator(requestCore);\n\n/**\n * The post method is most-often utilized to **create** new resources.\n * @async\n * @param {string} path - path to resource.\n * @param {Object=} entity - API entity to create\n * @returns {Promise<*>}\n */\nexport async function post(path, entity, requestOptions = {}) {\n const { apiUrl, withHeaders = false } = requestOptions;\n const response = await request(\n path,\n {\n method: 'POST',\n headers: JSON_HEADERS,\n body: JSON.stringify(entity),\n },\n { apiUrl, ...getAppKeyAndId() }\n );\n\n if (withHeaders) return response;\n\n return response && response.json();\n}\n\nexport async function getWithHeaders(path, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams, { arrayFormat: 'bracket' });\n const { appKey, ...rest } = getAppKeyAndId() || {};\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'GET',\n signal,\n },\n { apiUrl, appKey: requestOptions.appKey || appKey, ...rest }\n );\n\n return {\n data: response && (await response.json()),\n headers: response && response.headers,\n };\n}\n\n/**\n * The get method is used to **read** (or retrieve) a representation of a resource\n * @async\n * @param {string} path - path to resource.\n * @param {Object=} queryParams - Object with query params such as per_page, sort, asset_id, etc.\n * @param {Object=} requestOptions - Additional options for request. For example: apiUrl, signal etc.\n * @returns {Promise<*>}\n */\nexport async function get(path, queryParams = {}, requestOptions = {}) {\n const { appKey, ...rest } = getAppKeyAndId() || {};\n const dataAndHeaders = await getWithHeaders(path, queryParams, {\n ...requestOptions,\n appKey: requestOptions.appKey || appKey,\n ...rest,\n });\n return dataAndHeaders.data;\n}\n\nexport async function getFile(path, queryParams = {}, requestOptions = {}) {\n const qry = queryString.stringify(queryParams);\n const { signal } = requestOptions;\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n { method: 'GET' },\n { ...getAppKeyAndId(), signal }\n );\n\n return response && response.blob();\n}\n\nexport async function put(path, content, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams);\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'PUT',\n headers: JSON_HEADERS,\n body: JSON.stringify(content),\n },\n { apiUrl, ...getAppKeyAndId(), signal }\n );\n\n return response && response.json();\n}\n\nexport async function patch(path, content, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const qry = queryString.stringify(queryParams);\n\n const response = await request(\n `${path}${qry ? '?' : ''}${qry}`,\n {\n method: 'PATCH',\n headers: JSON_HEADERS,\n body: JSON.stringify(content),\n },\n {\n apiUrl,\n ...getAppKeyAndId(),\n signal,\n }\n );\n\n return response && response.json();\n}\n\nexport async function del(path, queryParams = {}, requestOptions = {}) {\n const { apiUrl, signal } = requestOptions;\n const query = queryString.stringify(queryParams);\n const response = await request(\n query ? `${path}?${query}` : path,\n {\n method: 'DELETE',\n headers: JSON_HEADERS,\n },\n {\n apiUrl,\n ...getAppKeyAndId(),\n signal,\n }\n );\n\n return response && response.json();\n}\n\nexport async function sendFormData(path, data, queryParams = {}, requestOptions = {}) {\n const query = queryString.stringify(queryParams);\n const { method = 'POST', signal } = requestOptions;\n const formData = new FormData();\n\n Object.entries(data).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach(arrayValueEntity => {\n formData.append(key, arrayValueEntity);\n });\n } else {\n formData.append(key, value);\n }\n });\n\n const response = await request(\n query ? `${path}?${query}` : path,\n {\n method,\n headers: {\n Accept: 'application/json',\n },\n body: formData,\n },\n { ...getAppKeyAndId(), signal }\n );\n\n return response && response.json();\n}\n"],"names":["HTTP_ERROR_MESSAGES","HTTP_METHODS_TO_SHOW_ERROR_NOTIFICATIONS","APIException","response","json","_classCallCheck","this","status","statusText","message","errorBody","_createClass","key","value","_this$errorBody","_this$errorBody$error","errors","login","_this$errorBody2","_this$errorBody2$erro","_this$errorBody2$erro2","includes","_this$errorBody3","_this$errorBody3$erro","_this$errorBody3$erro2","_this$errorBody4","_this$errorBody4$erro","_this$errorBody4$erro2","identity","baseUrl","CORVA_API_URLS","API","AUTH_HEADERS","getAuthorizationHeaders","JSON_HEADERS","_objectSpread","Accept","handleAuthenticationProblem","e","_e$isAuthenticationPr","isAuthenticationProblem","isTermsProblem","isLoginProblem","console","error","window","location","pathname","href","V1_ASSETS_REGEXP","_requestCore","_asyncToGenerator","_regeneratorRuntime","mark","path","config","overrides","_overrides$apiUrl","apiUrl","appKey","appInstanceId","_args2","arguments","wrap","_context2","prev","next","length","undefined","apiRequestsRateLimiter","acquire","test","cache","credentials","abrupt","fetch","attachHTTPHeaders","stop","_callee2","apply","requestCoreFunc","_errorHandler","request","_x4","requestMethod","isMethodToShowNotification","httpErrorMessage","exception","_context","sent","ok","t0","method","hideNotification","DISPLAY_HTTP_MESSAGES","_callee","_x","_x2","_x3","post","_x5","_x6","_post","_callee3","entity","requestOptions","_requestOptions$withH","withHeaders","_args3","_context3","headers","body","JSON","stringify","getAppKeyAndId","getWithHeaders","_x7","_getWithHeaders","queryParams","signal","qry","_ref","rest","_args4","_context4","queryString","arrayFormat","_objectWithoutProperties","_excluded","t1","t2","data","_callee4","get","_x8","_get","_ref2","dataAndHeaders","_args5","_context5","_excluded2","_callee5","put","_x10","_x11","_put","_callee7","content","_args7","_context7","patch","_x12","_x13","_patch","_callee8","_args8","_context8","del","_x14","_del","query","_args9","_context9","concat","_callee9","sendFormData","_x15","_x16","_sendFormData","_callee10","_requestOptions$metho","formData","_args10","_context10","FormData","Object","entries","forEach","_ref3","_ref4","_slicedToArray","Array","isArray","arrayValueEntity","append"],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ export declare const IDLE_CLEANUP_AFTER_MS = 60000;
2
+ type BucketConfig = {
3
+ maxTokens: number;
4
+ /**
5
+ * Tokens added per second
6
+ * */
7
+ refillRate: number;
8
+ /**
9
+ * Max ms a request waits in queue before being rejected
10
+ * */
11
+ queueTimeout: number;
12
+ /**
13
+ * Maximum size of queue
14
+ */
15
+ maxQueueSize?: number;
16
+ };
17
+ export type QueueEntry = {
18
+ resolve: () => void;
19
+ reject: (reason: Error) => void;
20
+ timeoutId: ReturnType<typeof setTimeout>;
21
+ };
22
+ export type Bucket = BucketConfig & {
23
+ appKey: string;
24
+ appInstanceId: string;
25
+ tokens: number;
26
+ lastRefill: number;
27
+ lastActivity: number;
28
+ queue: QueueEntry[];
29
+ refillTimer: ReturnType<typeof setInterval> | null;
30
+ };
31
+ export type RateLimiterConfig = {
32
+ defaults?: BucketConfig;
33
+ overrides?: Record<string, Partial<BucketConfig>>;
34
+ };
35
+ export declare const DEFAULT_CONFIG: Required<RateLimiterConfig>;
36
+ export {};
37
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/clients/api/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAE5C,KAAK,YAAY,GAAG;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB;;SAEK;IACL,UAAU,EAAE,MAAM,CAAC;IACnB;;SAEK;IACL,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC;IAChC,SAAS,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,YAAY,GAAG;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,WAAW,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,GAAG,IAAI,CAAC;CACpD,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;CACnD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,iBAAiB,CAYtD,CAAC"}
@@ -0,0 +1,2 @@
1
+ var e=6e4,t={defaults:{maxTokens:35,refillRate:10,queueTimeout:3e4},overrides:{"corva.treatment_plot_plus.ui":{maxTokens:60,refillRate:30}}};export{t as DEFAULT_CONFIG,e as IDLE_CLEANUP_AFTER_MS};
2
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ import { Bucket, RateLimiterConfig } from './constants';
2
+ export declare class RateLimiter {
3
+ private readonly buckets;
4
+ private config;
5
+ constructor(config?: RateLimiterConfig);
6
+ getOrCreateBucket(bucketId: string, appKey: string, appInstanceId: string): Bucket;
7
+ refill(bucket: Bucket): void;
8
+ startRefillTimer(bucketId: string, bucket: Bucket): void;
9
+ drainQueue(bucket: Bucket): void;
10
+ cleanupIdleIfNeeded(bucketId: string, bucket: Bucket): void;
11
+ destroyBucket(bucket: Bucket): void;
12
+ /**
13
+ * Resolves when a token is available for `bucketId`.
14
+ * If the bucket is empty the request is queued; a console warning is printed
15
+ * and the promise resolves once a token is refilled.
16
+ * Rejects if the queue timeout elapses before a token is available.
17
+ */
18
+ acquire(appKey: string, appInstanceId: string | number): Promise<void>;
19
+ updateConfig(config: RateLimiterConfig): void;
20
+ /** Clear all timers and reject all queued requests. */
21
+ destroy(): void;
22
+ }
23
+ export declare const apiRequestsRateLimiter: RateLimiter;
24
+ //# sourceMappingURL=rateLimiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rateLimiter.d.ts","sourceRoot":"","sources":["../../../src/clients/api/rateLimiter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAyC,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE/F,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IAErD,OAAO,CAAC,MAAM,CAA8B;gBAEhC,MAAM,GAAE,iBAAsB;IAO1C,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM;IA+BlF,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAW5B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAUxD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAWhC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAY3D,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAanC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8DtE,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAQ7C,uDAAuD;IACvD,OAAO,IAAI,IAAI;CAIhB;AAED,eAAO,MAAM,sBAAsB,aAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import e from"@babel/runtime/helpers/classCallCheck";import t from"@babel/runtime/helpers/createClass";import r from"@babel/runtime/helpers/defineProperty";import{IDLE_CLEANUP_AFTER_MS as i,DEFAULT_CONFIG as n}from"./constants.js";function u(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function o(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?u(Object(i),!0).forEach((function(t){r(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):u(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}var a=function(){function u(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e(this,u),r(this,"buckets",new Map),r(this,"config",void 0),this.config={defaults:o(o({},n.defaults),t.defaults),overrides:o({},t.overrides)}}return t(u,[{key:"getOrCreateBucket",value:function(e,t,r){var i=this.buckets.get(e);if(!i){var n=o(o({},this.config.defaults),this.config.overrides[t]),u=n.maxTokens,a=n.refillRate,l=n.queueTimeout,s=n.maxQueueSize,c={appKey:t,appInstanceId:r,tokens:u,maxTokens:u,refillRate:a,queueTimeout:l,lastRefill:Date.now(),lastActivity:Date.now(),queue:[],refillTimer:null,maxQueueSize:s};return this.buckets.set(e,c),this.startRefillTimer(e,c),c}return i}},{key:"refill",value:function(e){var t=Date.now(),r=(t-e.lastRefill)/1e3*e.refillRate;r>0&&(e.tokens=Math.min(e.maxTokens,e.tokens+r),e.lastRefill=t)}},{key:"startRefillTimer",value:function(e,t){var r=this;t.refillTimer=setInterval((function(){r.refill(t),r.drainQueue(t),r.cleanupIdleIfNeeded(e,t)}),200)}},{key:"drainQueue",value:function(e){for(;e.queue.length>0&&e.tokens>=1;){e.tokens-=1,e.lastActivity=Date.now();var t=e.queue.shift();clearTimeout(null==t?void 0:t.timeoutId),null==t||t.resolve()}}},{key:"cleanupIdleIfNeeded",value:function(e,t){t.queue.length>0||Date.now()-t.lastActivity>=i&&(this.destroyBucket(t),this.buckets.delete(e))}},{key:"destroyBucket",value:function(e){e.refillTimer&&clearInterval(e.refillTimer),e.queue.forEach((function(e){clearTimeout(e.timeoutId),e.reject(new Error("[RateLimiter] Destroyed while request was queued"))})),e.queue=[]}},{key:"acquire",value:function(e,t){var r,i,n="".concat(e,"|").concat(t),u=this.getOrCreateBucket(n,e,String(t));if(this.refill(u),u.tokens>=1)return u.tokens-=1,u.lastActivity=Date.now(),Promise.resolve();var o=u.queue.length+1;return null===(r=(i=window)[Symbol.for("corvaAPI.rateLimiterReport")])||void 0===r||r.call(i,{message:"[RateLimiter] Rate limit reached",bucket:{id:n,appKey:u.appKey,appInstanceId:u.appInstanceId,maxTokens:u.maxTokens,queueLength:o,queueTimeout:u.queueTimeout,refillRate:u.refillRate}}),void 0!==u.maxQueueSize&&o>u.maxQueueSize?Promise.reject(new Error('[RateLimiter] Queue size limit exceeded for "'.concat(n,'". Limit: ').concat(u.maxQueueSize))):Promise.resolve()}},{key:"updateConfig",value:function(e){this.config=o(o({},this.config),{},{defaults:o(o({},this.config.defaults),e.defaults),overrides:o(o({},this.config.overrides),e.overrides)})}},{key:"destroy",value:function(){this.buckets.forEach(this.destroyBucket),this.buckets.clear()}}]),u}(),l=new a;export{a as RateLimiter,l as apiRequestsRateLimiter};
2
+ //# sourceMappingURL=rateLimiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rateLimiter.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/clients/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import n from"@babel/runtime/helpers/defineProperty";import{v4 as t}from"uuid";import{noop as o}from"lodash";import*as r from"./clientStorage/index.js";export{r as clientStorage};import*as e from"./jsonApi/index.js";export{e as jsonApi};import*as i from"./subscriptions.js";export{i as subscriptions};import{get as c,getWithHeaders as s,put as a,patch as u,post as p,del as l}from"./api/apiCore.js";import{CORVA_API_URLS as d}from"./constants.js";import*as f from"./corvaUrls.js";export{f as corvaUrls};import{handleSubscriptionsVersion as v}from"./subscriptions/constants.js";import{socketClientV2 as g}from"./subscriptions/socket-client.v2.js";import*as h from"./sso/index.js";export{h as sso};export{attachHTTPHeaders,getAppKeyFromStackTrace,getAppKeyFromXProps,getAuthorizationHeaders,getAuthorizationToken}from"./utils.js";function m(n,t){var o=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),o.push.apply(o,r)}return o}function b(t){for(var o=1;o<arguments.length;o++){var r=null!=arguments[o]?arguments[o]:{};o%2?m(Object(r),!0).forEach((function(o){n(t,o,r[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):m(Object(r)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(r,n))}))}return t}var j={get:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c(n,t,o)},getWithHeaders:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return s(n,t,o)},put:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return a(n,t,o,r)},patch:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return u(n,t,o,r)},post:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return p(n,t,o)},del:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return l(n,t,o)}},A={get:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c(n,t,b({apiUrl:d.DATA_API},o))},put:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return a(n,t,o,b({apiUrl:d.DATA_API},r))},patch:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return u(n,t,o,b({apiUrl:d.DATA_API},r))},post:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return p(n,t,b({apiUrl:d.DATA_API},o))},del:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return l(n,t,b({apiUrl:d.DATA_API},o))}};function w(){if(window.xprops){var n,o,r,e,i,c=(null===(n=window.xprops)||void 0===n||null===(o=n.app)||void 0===o||null===(r=o.app)||void 0===r?void 0:r.id)||"unknown-app-id",s=(null===(e=window.xprops)||void 0===e||null===(i=e.app)||void 0===i?void 0:i.id)||"unknown-instance-id";return"".concat(c,":").concat(s,":").concat(t())}return"non-dc-app:".concat(t())}var O=v({subscribe:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.onDataReceive,e=window[Symbol.for("socket")]||{},i=e.subscribe,c=e.unsubscribe,s=e.socket;if(!s)return console.error("Socket is not initialized!"),o;var a=w(),u=b(b({},n),{},{collection:n.collection||n.dataset,appInstanceId:a}),p=r&&function(n){return n.appInstanceId===a&&r(n)};return i(u),p&&s.on("data",p),function(){p&&s.off("data",p),c(u)}},onConnectionChange:function(n){var t=(window[Symbol.for("socket")]||{}).socket;if(!t)return function(){};var o=function(){return n({status:"connected"})},r=function(t){return n({status:"disconnected",reason:t})},e=function(){return n({status:"reconnecting"})},i=function(t){return n({status:"error",reason:(null==t?void 0:t.message)||String(t)})};return t.on("connect",o),t.on("disconnect",r),t.on("reconnect",e),t.on("connect_error",i),function(){t.off("connect",o),t.off("disconnect",r),t.off("reconnect",e),t.off("connect_error",i)}}},g);export{j as corvaAPI,A as corvaDataAPI,O as socketClient};
1
+ import n from"@babel/runtime/helpers/defineProperty";import{v4 as t}from"uuid";import{noop as o}from"lodash";import*as r from"./clientStorage/index.js";export{r as clientStorage};import*as e from"./jsonApi/index.js";export{e as jsonApi};import*as i from"./subscriptions.js";export{i as subscriptions};import{get as c,getWithHeaders as s,put as a,patch as u,post as p,del as d}from"./api/apiCore.js";import{CORVA_API_URLS as l}from"./constants.js";import*as f from"./corvaUrls.js";export{f as corvaUrls};import{handleSubscriptionsVersion as v}from"./subscriptions/constants.js";import{socketClientV2 as g}from"./subscriptions/socket-client.v2.js";import*as h from"./sso/index.js";export{h as sso};export{attachHTTPHeaders,getAppKeyAndId,getAuthorizationHeaders,getAuthorizationToken}from"./utils.js";function m(n,t){var o=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),o.push.apply(o,r)}return o}function b(t){for(var o=1;o<arguments.length;o++){var r=null!=arguments[o]?arguments[o]:{};o%2?m(Object(r),!0).forEach((function(o){n(t,o,r[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):m(Object(r)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(r,n))}))}return t}var j={get:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c(n,t,o)},getWithHeaders:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return s(n,t,o)},put:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return a(n,t,o,r)},patch:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return u(n,t,o,r)},post:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return p(n,t,o)},del:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return d(n,t,o)}},A={get:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c(n,t,b({apiUrl:l.DATA_API},o))},put:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return a(n,t,o,b({apiUrl:l.DATA_API},r))},patch:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return u(n,t,o,b({apiUrl:l.DATA_API},r))},post:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return p(n,t,b({apiUrl:l.DATA_API},o))},del:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return d(n,t,b({apiUrl:l.DATA_API},o))}};function w(){if(window.xprops){var n,o,r,e,i,c=(null===(n=window.xprops)||void 0===n||null===(o=n.app)||void 0===o||null===(r=o.app)||void 0===r?void 0:r.id)||"unknown-app-id",s=(null===(e=window.xprops)||void 0===e||null===(i=e.app)||void 0===i?void 0:i.id)||"unknown-instance-id";return"".concat(c,":").concat(s,":").concat(t())}return"non-dc-app:".concat(t())}var O=v({subscribe:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.onDataReceive,e=window[Symbol.for("socket")]||{},i=e.subscribe,c=e.unsubscribe,s=e.socket;if(!s)return console.error("Socket is not initialized!"),o;var a=w(),u=b(b({},n),{},{collection:n.collection||n.dataset,appInstanceId:a}),p=r&&function(n){return n.appInstanceId===a&&r(n)};return i(u),p&&s.on("data",p),function(){p&&s.off("data",p),c(u)}},onConnectionChange:function(n){var t=(window[Symbol.for("socket")]||{}).socket;if(!t)return function(){};var o=function(){return n({status:"connected"})},r=function(t){return n({status:"disconnected",reason:t})},e=function(){return n({status:"reconnecting"})},i=function(t){return n({status:"error",reason:(null==t?void 0:t.message)||String(t)})};return t.on("connect",o),t.on("disconnect",r),t.on("reconnect",e),t.on("connect_error",i),function(){t.off("connect",o),t.off("disconnect",r),t.off("reconnect",e),t.off("connect_error",i)}}},g);export{j as corvaAPI,A as corvaDataAPI,O as socketClient};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/clients/index.js"],"sourcesContent":["import { v4 as uuidV4 } from 'uuid';\nimport { noop } from 'lodash';\n\nimport * as clientStorage from './clientStorage';\nimport * as jsonApi from './jsonApi';\nimport * as subscriptions from './subscriptions';\nimport { get, put, patch, post, del, getWithHeaders } from './api/apiCore';\nimport { CORVA_API_URLS } from './constants';\nimport * as corvaUrls from './corvaUrls';\nimport { handleSubscriptionsVersion } from './subscriptions/constants';\nimport { socketClientV2 } from './subscriptions/socket-client.v2';\n\nexport { clientStorage, jsonApi, subscriptions, corvaUrls };\nexport * as sso from './sso';\nexport * from './utils';\n\nexport const corvaAPI = {\n get: (path, queryParams = {}, requestOptions = {}) => {\n return get(path, queryParams, requestOptions);\n },\n getWithHeaders: (path, queryParams = {}, requestOptions = {}) => {\n return getWithHeaders(path, queryParams, requestOptions);\n },\n put: (path, content, queryParams = {}, requestOptions = {}) => {\n return put(path, content, queryParams, requestOptions);\n },\n patch: (path, content, queryParams = {}, requestOptions = {}) => {\n return patch(path, content, queryParams, requestOptions);\n },\n post: (path, entity, requestOptions = {}) => {\n return post(path, entity, requestOptions);\n },\n del: (path, queryParams = {}, requestOptions = {}) => {\n return del(path, queryParams, requestOptions);\n },\n};\n\nexport const corvaDataAPI = {\n get: (path, queryParams = {}, requestOptions = {}) =>\n get(path, queryParams, { apiUrl: CORVA_API_URLS.DATA_API, ...requestOptions }),\n put: (path, content, queryParams = {}, requestOptions = {}) =>\n put(path, content, queryParams, { apiUrl: CORVA_API_URLS.DATA_API, ...requestOptions }),\n patch: (path, content, queryParams = {}, requestOptions = {}) =>\n patch(path, content, queryParams, { apiUrl: CORVA_API_URLS.DATA_API, ...requestOptions }),\n post: (path, entity, requestOptions = {}) =>\n post(path, entity, { apiUrl: CORVA_API_URLS.DATA_API, ...requestOptions }),\n del: (path, queryParams = {}, requestOptions = {}) =>\n del(path, queryParams, { apiUrl: CORVA_API_URLS.DATA_API, ...requestOptions }),\n};\n\nconst SOCKET_NOT_INITIALIZED_ERROR = 'Socket is not initialized!';\n\nfunction getAppInstanceId() {\n if (window.xprops) {\n const appId = window.xprops?.app?.app?.id || 'unknown-app-id';\n const appInstanceId = window.xprops?.app?.id || 'unknown-instance-id';\n\n return `${appId}:${appInstanceId}:${uuidV4()}`;\n }\n\n return `non-dc-app:${uuidV4()}`;\n}\n\nconst socketClientV1 = {\n subscribe: (subscription, { onDataReceive } = {}) => {\n const { subscribe, unsubscribe, socket } = window[Symbol.for('socket')] || {};\n\n if (!socket) {\n console.error(SOCKET_NOT_INITIALIZED_ERROR);\n // In some environments, like PDF Dashboard Report, socket is not initialized\n // But socketClient should not throw errors to prevent apps crashing\n return noop;\n }\n const subId = getAppInstanceId();\n const subscriptionWithId = {\n ...subscription,\n // NOTE: Add ability to pass dataset (because we don't use \"collection\" in new data api)\n collection: subscription.collection || subscription.dataset,\n // NOTE: Unique id is required for subscriptions server\n appInstanceId: subId,\n };\n\n const onData =\n onDataReceive && (event => event.appInstanceId === subId && onDataReceive(event));\n\n subscribe(subscriptionWithId);\n if (onData) socket.on('data', onData);\n\n // NOTE: Return unsubscribe\n return () => {\n if (onData) socket.off('data', onData);\n unsubscribe(subscriptionWithId);\n };\n },\n onConnectionChange: handler => {\n const { socket } = window[Symbol.for('socket')] || {};\n if (!socket) return () => {};\n const onConnect = () => handler({ status: 'connected' });\n const onDisconnect = reason => handler({ status: 'disconnected', reason });\n const onReconnect = () => handler({ status: 'reconnecting' });\n const onConnectError = err => handler({ status: 'error', reason: err?.message || String(err) });\n\n socket.on('connect', onConnect);\n socket.on('disconnect', onDisconnect);\n socket.on('reconnect', onReconnect);\n socket.on('connect_error', onConnectError);\n\n return () => {\n socket.off('connect', onConnect);\n socket.off('disconnect', onDisconnect);\n socket.off('reconnect', onReconnect);\n socket.off('connect_error', onConnectError);\n };\n },\n};\n\nexport const socketClient = handleSubscriptionsVersion(socketClientV1, socketClientV2);\n"],"names":["corvaAPI","get","path","queryParams","arguments","length","undefined","requestOptions","getWithHeaders","put","content","patch","post","entity","del","corvaDataAPI","_objectSpread","apiUrl","CORVA_API_URLS","DATA_API","getAppInstanceId","window","xprops","_window$xprops","_window$xprops$app","_window$xprops$app$ap","_window$xprops2","_window$xprops2$app","appId","app","id","appInstanceId","concat","uuidV4","socketClient","handleSubscriptionsVersion","subscribe","subscription","_ref","onDataReceive","Symbol","for","unsubscribe","socket","console","error","noop","subId","subscriptionWithId","collection","dataset","onData","event","on","off","onConnectionChange","handler","onConnect","status","onDisconnect","reason","onReconnect","onConnectError","err","message","String","socketClientV2"],"mappings":"23CAgBO,IAAMA,EAAW,CACtBC,IAAK,SAACC,GAAgD,IAA1CC,EAAcC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EAAIG,EAAiBH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EAC7C,OAAOH,EAAIC,EAAMC,EAAaI,EAC/B,EACDC,eAAgB,SAACN,GAAgD,IAA1CC,EAAcC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EAAIG,EAAiBH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EACxD,OAAOI,EAAeN,EAAMC,EAAaI,EAC1C,EACDE,IAAK,SAACP,EAAMQ,GAAmD,IAA1CP,EAAcC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EAAIG,EAAiBH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EACtD,OAAOK,EAAIP,EAAMQ,EAASP,EAAaI,EACxC,EACDI,MAAO,SAACT,EAAMQ,GAAmD,IAA1CP,EAAcC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EAAIG,EAAiBH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EACxD,OAAOO,EAAMT,EAAMQ,EAASP,EAAaI,EAC1C,EACDK,KAAM,SAACV,EAAMW,GAAgC,IAAxBN,EAAiBH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EACpC,OAAOQ,EAAKV,EAAMW,EAAQN,EAC3B,EACDO,IAAK,SAACZ,GAAgD,IAA1CC,EAAcC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EAAIG,EAAiBH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EAC7C,OAAOU,EAAIZ,EAAMC,EAAaI,EAChC,GAGWQ,EAAe,CAC1Bd,IAAK,SAACC,GAAI,IAAEC,EAAcC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EAAIG,EAAiBH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EAAE,OAC/CH,EAAIC,EAAMC,EAAWa,EAAA,CAAIC,OAAQC,EAAeC,UAAaZ,GAAiB,EAChFE,IAAK,SAACP,EAAMQ,GAAO,IAAEP,EAAcC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EAAIG,EAAiBH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EAAE,OACxDK,EAAIP,EAAMQ,EAASP,EAAWa,EAAA,CAAIC,OAAQC,EAAeC,UAAaZ,GAAiB,EACzFI,MAAO,SAACT,EAAMQ,GAAO,IAAEP,EAAcC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EAAIG,EAAiBH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EAAE,OAC1DO,EAAMT,EAAMQ,EAASP,EAAWa,EAAA,CAAIC,OAAQC,EAAeC,UAAaZ,GAAiB,EAC3FK,KAAM,SAACV,EAAMW,GAAM,IAAEN,EAAiBH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EAAE,OACtCQ,EAAKV,EAAMW,EAAMG,EAAA,CAAIC,OAAQC,EAAeC,UAAaZ,GAAiB,EAC5EO,IAAK,SAACZ,GAAI,IAAEC,EAAcC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EAAIG,EAAiBH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EAAE,OAC/CU,EAAIZ,EAAMC,EAAWa,EAAA,CAAIC,OAAQC,EAAeC,UAAaZ,GAAiB,GAKlF,SAASa,IACP,GAAIC,OAAOC,OAAQ,CAAA,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACXC,GAAQ,QAAAL,EAAAF,OAAOC,cAAP,IAAAC,GAAkB,QAAlBC,EAAAD,EAAeM,WAAG,IAAAL,GAAK,QAALC,EAAlBD,EAAoBK,WAAG,IAAAJ,OAAvB,EAAAA,EAAyBK,KAAM,iBACvCC,GAAgB,QAAAV,EAAAA,OAAOC,cAAP,IAAAI,GAAkB,QAAlBC,EAAAD,EAAeG,WAAG,IAAAF,OAAlB,EAAAA,EAAoBG,KAAM,sBAEhD,MAAA,GAAAE,OAAUJ,EAAK,KAAAI,OAAID,EAAa,KAAAC,OAAIC,IACtC,CAEA,MAAA,cAAAD,OAAqBC,IACvB,CAEA,IAqDaC,EAAeC,EArDL,CACrBC,UAAW,SAACC,GAAyC,IAAAC,EAAAlC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAP,CAAE,EAApBmC,IAAAA,cACiBlB,EAAAA,OAAOmB,OAAOC,IAAI,YAAc,CAAE,EAArEL,IAAAA,UAAWM,IAAAA,YAAaC,IAAAA,OAEhC,IAAKA,EAIH,OAHAC,QAAQC,MAlBuB,8BAqBxBC,EAET,IAAMC,EAAQ3B,IACR4B,SACDX,GAAY,GAAA,CAEfY,WAAYZ,EAAaY,YAAcZ,EAAaa,QAEpDnB,cAAegB,IAGXI,EACJZ,GAAkB,SAAAa,GAAK,OAAIA,EAAMrB,gBAAkBgB,GAASR,EAAca,IAM5E,OAJAhB,EAAUY,GACNG,GAAQR,EAAOU,GAAG,OAAQF,GAGvB,WACDA,GAAQR,EAAOW,IAAI,OAAQH,GAC/BT,EAAYM,GAEf,EACDO,mBAAoB,SAAAC,GAClB,IAAQb,GAAWtB,OAAOmB,OAAOC,IAAI,YAAc,CAAE,GAA7CE,OACR,IAAKA,EAAQ,OAAO,aACpB,IAAMc,EAAY,WAAH,OAASD,EAAQ,CAAEE,OAAQ,aAAc,EAClDC,EAAe,SAAAC,GAAM,OAAIJ,EAAQ,CAAEE,OAAQ,eAAgBE,OAAAA,GAAS,EACpEC,EAAc,WAAH,OAASL,EAAQ,CAAEE,OAAQ,gBAAiB,EACvDI,EAAiB,SAAAC,GAAG,OAAIP,EAAQ,CAAEE,OAAQ,QAASE,QAAQG,aAAG,EAAHA,EAAKC,UAAWC,OAAOF,IAAO,EAO/F,OALApB,EAAOU,GAAG,UAAWI,GACrBd,EAAOU,GAAG,aAAcM,GACxBhB,EAAOU,GAAG,YAAaQ,GACvBlB,EAAOU,GAAG,gBAAiBS,GAEpB,WACLnB,EAAOW,IAAI,UAAWG,GACtBd,EAAOW,IAAI,aAAcK,GACzBhB,EAAOW,IAAI,YAAaO,GACxBlB,EAAOW,IAAI,gBAAiBQ,GAEhC,GAGqEI"}
1
+ {"version":3,"file":"index.js","sources":["../../src/clients/index.js"],"sourcesContent":["import { v4 as uuidV4 } from 'uuid';\nimport { noop } from 'lodash';\n\nimport * as clientStorage from './clientStorage';\nimport * as jsonApi from './jsonApi';\nimport * as subscriptions from './subscriptions';\nimport { get, put, patch, post, del, getWithHeaders } from './api/apiCore';\nimport { CORVA_API_URLS } from './constants';\nimport * as corvaUrls from './corvaUrls';\nimport { handleSubscriptionsVersion } from './subscriptions/constants';\nimport { socketClientV2 } from './subscriptions/socket-client.v2';\n\nexport { clientStorage, jsonApi, subscriptions, corvaUrls };\nexport * as sso from './sso';\nexport * from './utils';\n\nexport const corvaAPI = {\n get: (path, queryParams = {}, requestOptions = {}) => {\n return get(path, queryParams, requestOptions);\n },\n getWithHeaders: (path, queryParams = {}, requestOptions = {}) => {\n return getWithHeaders(path, queryParams, requestOptions);\n },\n put: (path, content, queryParams = {}, requestOptions = {}) => {\n return put(path, content, queryParams, requestOptions);\n },\n patch: (path, content, queryParams = {}, requestOptions = {}) => {\n return patch(path, content, queryParams, requestOptions);\n },\n post: (path, entity, requestOptions = {}) => {\n return post(path, entity, requestOptions);\n },\n del: (path, queryParams = {}, requestOptions = {}) => {\n return del(path, queryParams, requestOptions);\n },\n};\n\nexport const corvaDataAPI = {\n get: (path, queryParams = {}, requestOptions = {}) =>\n get(path, queryParams, { apiUrl: CORVA_API_URLS.DATA_API, ...requestOptions }),\n put: (path, content, queryParams = {}, requestOptions = {}) =>\n put(path, content, queryParams, { apiUrl: CORVA_API_URLS.DATA_API, ...requestOptions }),\n patch: (path, content, queryParams = {}, requestOptions = {}) =>\n patch(path, content, queryParams, { apiUrl: CORVA_API_URLS.DATA_API, ...requestOptions }),\n post: (path, entity, requestOptions = {}) =>\n post(path, entity, { apiUrl: CORVA_API_URLS.DATA_API, ...requestOptions }),\n del: (path, queryParams = {}, requestOptions = {}) =>\n del(path, queryParams, { apiUrl: CORVA_API_URLS.DATA_API, ...requestOptions }),\n};\n\nconst SOCKET_NOT_INITIALIZED_ERROR = 'Socket is not initialized!';\n\nfunction getAppInstanceId() {\n if (window.xprops) {\n const appId = window.xprops?.app?.app?.id || 'unknown-app-id';\n const appInstanceId = window.xprops?.app?.id || 'unknown-instance-id';\n\n return `${appId}:${appInstanceId}:${uuidV4()}`;\n }\n\n return `non-dc-app:${uuidV4()}`;\n}\n\nconst socketClientV1 = {\n subscribe: (subscription, { onDataReceive } = {}) => {\n const { subscribe, unsubscribe, socket } = window[Symbol.for('socket')] || {};\n\n if (!socket) {\n console.error(SOCKET_NOT_INITIALIZED_ERROR);\n // In some environments, like PDF Dashboard Report, socket is not initialized\n // But socketClient should not throw errors to prevent apps crashing\n return noop;\n }\n const subId = getAppInstanceId();\n const subscriptionWithId = {\n ...subscription,\n // NOTE: Add ability to pass dataset (because we don't use \"collection\" in new data api)\n collection: subscription.collection || subscription.dataset,\n // NOTE: Unique id is required for subscriptions server\n appInstanceId: subId,\n };\n\n const onData =\n onDataReceive && (event => event.appInstanceId === subId && onDataReceive(event));\n\n subscribe(subscriptionWithId);\n if (onData) socket.on('data', onData);\n\n // NOTE: Return unsubscribe\n return () => {\n if (onData) socket.off('data', onData);\n unsubscribe(subscriptionWithId);\n };\n },\n onConnectionChange: handler => {\n const { socket } = window[Symbol.for('socket')] || {};\n if (!socket) return () => {};\n const onConnect = () => handler({ status: 'connected' });\n const onDisconnect = reason => handler({ status: 'disconnected', reason });\n const onReconnect = () => handler({ status: 'reconnecting' });\n const onConnectError = err => handler({ status: 'error', reason: err?.message || String(err) });\n\n socket.on('connect', onConnect);\n socket.on('disconnect', onDisconnect);\n socket.on('reconnect', onReconnect);\n socket.on('connect_error', onConnectError);\n\n return () => {\n socket.off('connect', onConnect);\n socket.off('disconnect', onDisconnect);\n socket.off('reconnect', onReconnect);\n socket.off('connect_error', onConnectError);\n };\n },\n};\n\nexport const socketClient = handleSubscriptionsVersion(socketClientV1, socketClientV2);\n"],"names":["corvaAPI","get","path","queryParams","arguments","length","undefined","requestOptions","getWithHeaders","put","content","patch","post","entity","del","corvaDataAPI","_objectSpread","apiUrl","CORVA_API_URLS","DATA_API","getAppInstanceId","window","xprops","_window$xprops","_window$xprops$app","_window$xprops$app$ap","_window$xprops2","_window$xprops2$app","appId","app","id","appInstanceId","concat","uuidV4","socketClient","handleSubscriptionsVersion","subscribe","subscription","_ref","onDataReceive","Symbol","for","unsubscribe","socket","console","error","noop","subId","subscriptionWithId","collection","dataset","onData","event","on","off","onConnectionChange","handler","onConnect","status","onDisconnect","reason","onReconnect","onConnectError","err","message","String","socketClientV2"],"mappings":"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"}
@@ -1,10 +1,12 @@
1
- export function getAppKeyFromStackTrace(): string | null;
2
- export function getAppKeyFromXProps(): any;
3
1
  export function attachHTTPHeaders({ config, appKey, Authorization }: {
4
2
  config: any;
5
3
  appKey: any;
6
4
  Authorization: any;
7
5
  }): any;
6
+ export function getAppKeyAndId(): {
7
+ appKey: any;
8
+ appInstanceId: string;
9
+ } | undefined;
8
10
  export function getAuthorizationToken(): string | null;
9
11
  export function getAuthorizationHeaders(): {
10
12
  Authorization: string;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/clients/utils.js"],"names":[],"mappings":"AAQA,yDAWC;AAED,2CAGC;AAED;;;;QAMC;AAEM,uDAWN;AAEM;;;;EAGN"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/clients/utils.js"],"names":[],"mappings":"AAsCA;;;;QAMC;AApCM;;;cA4BN;AAUM,uDAWN;AAEM;;;;EAGN"}
package/clients/utils.js CHANGED
@@ -1,2 +1,2 @@
1
- import r from"@babel/runtime/helpers/defineProperty";import{MOBILE_AUTH_TOKEN_STORAGE_KEY as e}from"../constants/mobile.js";function t(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),t.push.apply(t,n)}return t}function n(e){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?t(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):t(Object(o)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(o,r))}))}return e}var o=/corva\.ai\/(.+?)\/packages/,a=/app\/(.+?)\/.*\.chunk\.js/,i=window.self!==window.top;function c(){var r=Error.stackTraceLimit;Error.stackTraceLimit=300;var e=new Error,t=e.stack.match(o)||e.stack.match(a);return Error.stackTraceLimit=r,t?t[1].replace("/app/","."):null}function p(){var r,e,t,n;return null===(r=window)||void 0===r||null===(e=r.xprops)||void 0===e||null===(t=e.app)||void 0===t||null===(n=t.app)||void 0===n?void 0:n.app_key}function u(r){var e=r.config,t=r.appKey,o=r.Authorization,a=n({},e.headers||{});return t&&(a["x-corva-app"]=t),o&&(a.Authorization=o),n(n({},e),{},{headers:a})}var s=function(){try{var r=sessionStorage.getItem(e);if(r)return r;var t=i?window.parent.location.href:window.location.href;return new URL(t).searchParams.get("token")}catch(r){return null}},l=function(){var r=s();return r?{Authorization:"Bearer ".concat(r)}:{}};export{u as attachHTTPHeaders,c as getAppKeyFromStackTrace,p as getAppKeyFromXProps,l as getAuthorizationHeaders,s as getAuthorizationToken};
1
+ import r from"@babel/runtime/helpers/defineProperty";import{MOBILE_AUTH_TOKEN_STORAGE_KEY as e}from"../constants/mobile.js";function t(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),t.push.apply(t,n)}return t}function n(e){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?t(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):t(Object(o)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(o,r))}))}return e}var o=/corva\.ai\/(.+?)\/packages/,a=/app\/(.+?)\/.*\.chunk\.js/,i=window.self!==window.top,c=function(){var r,e,t,n,i,c,p,s=null===(r=window)||void 0===r||null===(e=r.xprops)||void 0===e||null===(t=e.app)||void 0===t||null===(n=t.app)||void 0===n?void 0:n.app_key;if(s)return{appKey:s,appInstanceId:String(null===(i=window)||void 0===i||null===(c=i.xprops)||void 0===c||null===(p=c.app)||void 0===p?void 0:p.id)};var u=Error.stackTraceLimit;Error.stackTraceLimit=300;var l=new Error,d=l.stack.match(o)||l.stack.match(a);return Error.stackTraceLimit=u,d?{appKey:d[1].replace("/app/","."),appInstanceId:"nonisolated"}:void 0};function p(r){var e=r.config,t=r.appKey,o=r.Authorization,a=n({},e.headers||{});return t&&(a["x-corva-app"]=t),o&&(a.Authorization=o),n(n({},e),{},{headers:a})}var s=function(){try{var r=sessionStorage.getItem(e);if(r)return r;var t=i?window.parent.location.href:window.location.href;return new URL(t).searchParams.get("token")}catch(r){return null}},u=function(){var r=s();return r?{Authorization:"Bearer ".concat(r)}:{}};export{p as attachHTTPHeaders,c as getAppKeyAndId,u as getAuthorizationHeaders,s as getAuthorizationToken};
2
2
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../src/clients/utils.js"],"sourcesContent":["import { MOBILE_AUTH_TOKEN_STORAGE_KEY } from '~/constants/mobile';\n\n// NOTE: Non-greedy regexp to find the app key from filename\nconst DEVCENTER_APP_KEY_EXTRACTOR_REGEXP = /corva\\.ai\\/(.+?)\\/packages/;\nconst PLATFORM_APP_KEY_EXTRACTOR_REGEXP = /app\\/(.+?)\\/.*\\.chunk\\.js/;\n\nconst isInsideIframe = window.self !== window.top;\n\nexport function getAppKeyFromStackTrace() {\n const prevStackTraceLimit = Error.stackTraceLimit;\n Error.stackTraceLimit = 300;\n\n const error = new Error();\n const match =\n error.stack.match(DEVCENTER_APP_KEY_EXTRACTOR_REGEXP) ||\n error.stack.match(PLATFORM_APP_KEY_EXTRACTOR_REGEXP);\n\n Error.stackTraceLimit = prevStackTraceLimit;\n return match ? match[1].replace('/app/', '.') : null;\n}\n\nexport function getAppKeyFromXProps() {\n // window.xprops object is available only in devcenter app in iframe. This is ZOID library API\n return window?.xprops?.app?.app?.app_key;\n}\n\nexport function attachHTTPHeaders({ config, appKey, Authorization }) {\n const headers = { ...(config.headers || {}) };\n if (appKey) headers['x-corva-app'] = appKey;\n if (Authorization) headers.Authorization = Authorization;\n\n return { ...config, headers };\n}\n\nexport const getAuthorizationToken = () => {\n try {\n const mobileAuthToken = sessionStorage.getItem(MOBILE_AUTH_TOKEN_STORAGE_KEY);\n if (mobileAuthToken) return mobileAuthToken;\n\n const url = isInsideIframe ? window.parent.location.href : window.location.href; // Get the current URL\n const params = new URL(url).searchParams; // Parse the URL query parameters\n return params.get('token'); // Extract the 'token' parameter\n } catch (error) {\n return null;\n }\n};\n\nexport const getAuthorizationHeaders = () => {\n const token = getAuthorizationToken();\n return token ? { Authorization: `Bearer ${token}` } : {};\n};\n"],"names":["DEVCENTER_APP_KEY_EXTRACTOR_REGEXP","PLATFORM_APP_KEY_EXTRACTOR_REGEXP","isInsideIframe","window","self","top","getAppKeyFromStackTrace","prevStackTraceLimit","Error","stackTraceLimit","error","match","stack","replace","getAppKeyFromXProps","_window","_window$xprops","_window$xprops$app","_window$xprops$app$ap","xprops","app","app_key","attachHTTPHeaders","_ref","config","appKey","Authorization","headers","_objectSpread","getAuthorizationToken","mobileAuthToken","sessionStorage","getItem","MOBILE_AUTH_TOKEN_STORAGE_KEY","url","parent","location","href","URL","searchParams","get","getAuthorizationHeaders","token"],"mappings":"2rBAGA,IAAMA,EAAqC,6BACrCC,EAAoC,4BAEpCC,EAAiBC,OAAOC,OAASD,OAAOE,IAEvC,SAASC,IACd,IAAMC,EAAsBC,MAAMC,gBAClCD,MAAMC,gBAAkB,IAExB,IAAMC,EAAQ,IAAIF,MACZG,EACJD,EAAME,MAAMD,MAAMX,IAClBU,EAAME,MAAMD,MAAMV,GAGpB,OADAO,MAAMC,gBAAkBF,EACjBI,EAAQA,EAAM,GAAGE,QAAQ,QAAS,KAAO,IAClD,CAEO,SAASC,IAAsB,IAAAC,EAAAC,EAAAC,EAAAC,EAEpC,OAAa,QAAbH,EAAOZ,cAAM,IAAAY,GAAN,QAAMC,EAAND,EAAQI,cAAR,IAAAH,GAAmB,QAAnBC,EAAAD,EAAgBI,WAAG,IAAAH,GAAnB,QAAmBC,EAAnBD,EAAqBG,WAArB,IAAAF,OAAM,EAANA,EAA0BG,OACnC,CAEO,SAASC,EAAqDC,GAAA,IAAjCC,IAAAA,OAAQC,IAAAA,OAAQC,IAAAA,cAC5CC,OAAgBH,EAAOG,SAAW,CAAA,GAIxC,OAHIF,IAAQE,EAAQ,eAAiBF,GACjCC,IAAeC,EAAQD,cAAgBA,GAE3CE,EAAAA,EAAA,CAAA,EAAYJ,GAAM,CAAA,EAAA,CAAEG,QAAAA,GACtB,CAEaE,IAAAA,EAAwB,WACnC,IACE,IAAMC,EAAkBC,eAAeC,QAAQC,GAC/C,GAAIH,EAAiB,OAAOA,EAE5B,IAAMI,EAAMhC,EAAiBC,OAAOgC,OAAOC,SAASC,KAAOlC,OAAOiC,SAASC,KAE3E,OADe,IAAIC,IAAIJ,GAAKK,aACdC,IAAI,QAGpB,CAFE,MAAO9B,GACP,OAAO,IACT,CACF,EAEa+B,EAA0B,WACrC,IAAMC,EAAQb,IACd,OAAOa,EAAQ,CAAEhB,+BAAyBgB,IAAY,EACxD"}
1
+ {"version":3,"file":"utils.js","sources":["../../src/clients/utils.js"],"sourcesContent":["import { MOBILE_AUTH_TOKEN_STORAGE_KEY } from '~/constants/mobile';\n\n// NOTE: Non-greedy regexp to find the app key from filename\nconst DEVCENTER_APP_KEY_EXTRACTOR_REGEXP = /corva\\.ai\\/(.+?)\\/packages/;\nconst PLATFORM_APP_KEY_EXTRACTOR_REGEXP = /app\\/(.+?)\\/.*\\.chunk\\.js/;\n\nconst isInsideIframe = window.self !== window.top;\n\nexport const getAppKeyAndId = () => {\n const xpropsAppKey = window?.xprops?.app?.app?.app_key;\n\n if (xpropsAppKey) {\n return {\n appKey: xpropsAppKey,\n appInstanceId: String(window?.xprops?.app?.id),\n };\n } else {\n const prevStackTraceLimit = Error.stackTraceLimit;\n Error.stackTraceLimit = 300;\n\n const error = new Error();\n const match =\n error.stack.match(DEVCENTER_APP_KEY_EXTRACTOR_REGEXP) ||\n error.stack.match(PLATFORM_APP_KEY_EXTRACTOR_REGEXP);\n\n Error.stackTraceLimit = prevStackTraceLimit;\n\n if (match) {\n return {\n appKey: match[1].replace('/app/', '.'),\n appInstanceId: 'nonisolated',\n };\n }\n }\n\n return undefined;\n};\n\nexport function attachHTTPHeaders({ config, appKey, Authorization }) {\n const headers = { ...(config.headers || {}) };\n if (appKey) headers['x-corva-app'] = appKey;\n if (Authorization) headers.Authorization = Authorization;\n\n return { ...config, headers };\n}\n\nexport const getAuthorizationToken = () => {\n try {\n const mobileAuthToken = sessionStorage.getItem(MOBILE_AUTH_TOKEN_STORAGE_KEY);\n if (mobileAuthToken) return mobileAuthToken;\n\n const url = isInsideIframe ? window.parent.location.href : window.location.href; // Get the current URL\n const params = new URL(url).searchParams; // Parse the URL query parameters\n return params.get('token'); // Extract the 'token' parameter\n } catch (error) {\n return null;\n }\n};\n\nexport const getAuthorizationHeaders = () => {\n const token = getAuthorizationToken();\n return token ? { Authorization: `Bearer ${token}` } : {};\n};\n"],"names":["DEVCENTER_APP_KEY_EXTRACTOR_REGEXP","PLATFORM_APP_KEY_EXTRACTOR_REGEXP","isInsideIframe","window","self","top","getAppKeyAndId","_window","_window$xprops","_window$xprops$app","_window$xprops$app$ap","_window2","_window2$xprops","_window2$xprops$app","xpropsAppKey","xprops","app","app_key","appKey","appInstanceId","String","id","prevStackTraceLimit","Error","stackTraceLimit","error","match","stack","replace","attachHTTPHeaders","_ref","config","Authorization","headers","_objectSpread","getAuthorizationToken","mobileAuthToken","sessionStorage","getItem","MOBILE_AUTH_TOKEN_STORAGE_KEY","url","parent","location","href","URL","searchParams","get","getAuthorizationHeaders","token"],"mappings":"2rBAGA,IAAMA,EAAqC,6BACrCC,EAAoC,4BAEpCC,EAAiBC,OAAOC,OAASD,OAAOE,IAEjCC,EAAiB,WAAM,IAAAC,EAAAC,EAAAC,EAAAC,EAGhBC,EAAAC,EAAAC,EAFZC,EAAqB,QAATP,EAAGJ,cAAM,IAAAI,GAAQ,QAARC,EAAND,EAAQQ,cAAM,IAAAP,GAAd,QAAcC,EAAdD,EAAgBQ,WAAhB,IAAAP,GAAwB,QAAxBC,EAAAD,EAAqBO,WAAG,IAAAN,OAAlB,EAANA,EAA0BO,QAE/C,GAAIH,EACF,MAAO,CACLI,OAAQJ,EACRK,cAAeC,OAAO,QAAAjB,EAAAA,cAAA,IAAAQ,GAAc,QAAdC,EAAAD,EAAQI,cAAM,IAAAH,GAAd,QAAcC,EAAdD,EAAgBI,WAAhB,IAAAH,OAAA,EAAAA,EAAqBQ,KAG7C,IAAMC,EAAsBC,MAAMC,gBAClCD,MAAMC,gBAAkB,IAExB,IAAMC,EAAQ,IAAIF,MACZG,EACJD,EAAME,MAAMD,MAAM1B,IAClByB,EAAME,MAAMD,MAAMzB,GAIpB,OAFAsB,MAAMC,gBAAkBF,EAEpBI,EACK,CACLR,OAAQQ,EAAM,GAAGE,QAAQ,QAAS,KAClCT,cAAe,oBAHnB,CASJ,EAEO,SAASU,EAAqDC,GAAA,IAAjCC,IAAAA,OAAQb,IAAAA,OAAQc,IAAAA,cAC5CC,OAAgBF,EAAOE,SAAW,CAAA,GAIxC,OAHIf,IAAQe,EAAQ,eAAiBf,GACjCc,IAAeC,EAAQD,cAAgBA,GAE3CE,EAAAA,EAAA,CAAA,EAAYH,GAAM,CAAA,EAAA,CAAEE,QAAAA,GACtB,CAEaE,IAAAA,EAAwB,WACnC,IACE,IAAMC,EAAkBC,eAAeC,QAAQC,GAC/C,GAAIH,EAAiB,OAAOA,EAE5B,IAAMI,EAAMtC,EAAiBC,OAAOsC,OAAOC,SAASC,KAAOxC,OAAOuC,SAASC,KAE3E,OADe,IAAIC,IAAIJ,GAAKK,aACdC,IAAI,QAGpB,CAFE,MAAOrB,GACP,OAAO,IACT,CACF,EAEasB,EAA0B,WACrC,IAAMC,EAAQb,IACd,OAAOa,EAAQ,CAAEhB,+BAAyBgB,IAAY,EACxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"DevCenterIsolatedApp.d.ts","sourceRoot":"","sources":["../../../../src/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js"],"names":[],"mappings":"AA+QA,uCAA8E"}
1
+ {"version":3,"file":"DevCenterIsolatedApp.d.ts","sourceRoot":"","sources":["../../../../src/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js"],"names":[],"mappings":"AAiRA,uCAA8E"}
@@ -1,2 +1,2 @@
1
- import e from"@babel/runtime/helpers/defineProperty";import n from"@babel/runtime/helpers/slicedToArray";import r from"@babel/runtime/helpers/objectWithoutProperties";import{useMemo as t,useRef as o,useState as i,useEffect as a,useContext as p,useCallback as s}from"react";import l from"classnames";import{withRouter as c}from"react-router-dom";import{noop as u}from"lodash";import d from"query-string";import m from"prop-types";import{APP_IFRAME_ATTRIBUTE as v,IsolatedPage as f}from"./IsolatedPage.js";import{ISOLATED_PAGE_APP_CONTAINER_ID as C}from"./constants.js";import b from"./DevCenterIsolatedApp.module.css.js";import h from"../AppContext.js";import g from"../../../permissions/PermissionsContext.js";import"../../../permissions/constants/index.js";import"../../../permissions/withPermissionsHOC.js";import"@babel/runtime/helpers/asyncToGenerator";import"@babel/runtime/regenerator";import"../../../clients/jsonApi/index.js";import"../../../permissions/ProvidePermissions.js";import{getUserUnits as j,subscribeForUserUnitsUpdates as A}from"../../../utils/index.js";import"../AppHeader/AppHeader.js";import"../AppSideBar/AppSideBar.js";import"../AppsDataProvider/AppsDataProvider.js";import y from"../DevCenterAppContainer/DevCenterAppContainer.js";import"../NavigationBar/NavigationBar.js";import"../SideBar/SideBar.js";import"../AppSettingsPopover/AppSettingsPopover.js";import"../AppFilterPanelLayout/AppFilterPanelLayout.js";import"../DevCenterRouterContext/DevCenterRouterContext.js";import"../DevCenterRouterContext/UniversalLink/UniversalLink.js";import{jsx as M}from"react/jsx-runtime";import"./DevCenterIsolatedAppPage.js";import{getAppVersion as I}from"../DevCenterAppContainer/utils.js";import{isInsideNewMobileApp as x}from"../../../utils/mobileDetect.js";import{createDevCenterRouter as P,isCorvaApp as w,isIsolationEnabledInPackageManifest as D,isAppMaximized as O}from"../../../utils/devcenter.js";var S=["isIsolationFeatureEnabled","onAppFullscreenTransparentMode","onIsMaximizedChange","onInnerContainerMouseEnter","onInnerContainerMouseLeave","onAppContainerClick","setInnerContainerRefFn"];function L(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function E(n){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?L(Object(t),!0).forEach((function(r){e(n,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):L(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function F(e){var c,u,m,L,F,T,R,k=e.isIsolationFeatureEnabled,z=e.onAppFullscreenTransparentMode,B=e.onIsMaximizedChange,_=e.onInnerContainerMouseEnter,N=e.onInnerContainerMouseLeave,q=e.onAppContainerClick,U=e.setInnerContainerRefFn,W=r(e,S),H=t((function(){return P(W.history)}),[null===(c=W.history)||void 0===c?void 0:c.location]),V=w(null==W||null===(u=W.app)||void 0===u?void 0:u.app)&&!D(null==W||null===(m=W.app)||void 0===m?void 0:m.package)||!k,G=V?y:f,J=null===(L=W.app)||void 0===L||null===(F=L.app)||void 0===F?void 0:F.app_key,K=I(W.app),Q="".concat(J,"-").concat(K),X=o(),Y=o(),Z=o(),$=o(!1),ee=o(!1),ne=O(d.parse(null===(T=W.history)||void 0===T||null===(R=T.location)||void 0===R?void 0:R.search),W.app.id),re=o(ne);re.current=ne;var te=i(j()),oe=n(te,2),ie=oe[0],ae=oe[1];a((function(){var e=A((function(e){return ae(e)}));return function(){return e()}}),[]);var pe=p(h),se=g();function le(){z({appId:W.app.id,isModeEnabled:!1}),document.body.classList.remove("dc-isolated-app__body-overflow",b.compensateScroll)}var ce=s((function(e){var n,r,t,o,i,a=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!k||V||re.current&&!$.current||$.current===e){var p;a&&ee.current!==a&&(ee.current=a,null===(p=Y.current)||void 0===p||p.classList.add(b.containerMaximizedTransparentModal))}else{var s,l=e?"add":"remove";if(null===(n=Y.current)||void 0===n||n.classList[l](b.containerMaximizedTransparent),a||"remove"===l)null===(s=Y.current)||void 0===s||s.classList[l](b.containerMaximizedTransparentModal);X.current=null===(r=Y.current)||void 0===r||null===(t=r.querySelector("[".concat(v,"]")))||void 0===t||null===(o=t.contentWindow)||void 0===o?void 0:o.document;var c=null===(i=X.current)||void 0===i?void 0:i.getElementById(C);if(c){if(e){var u=Z.current.getBoundingClientRect(),d=u.top,m=u.left,f=u.width,h=u.height;c.setAttribute("style","\n top: ".concat(d,"px;\n left: ").concat(m,"px;\n width: ").concat(f,"px;\n height: ").concat(h,"px;\n position: absolute;\n ")),z({appId:W.app.id,isModeEnabled:!0});var g=window.innerWidth!==document.body.clientWidth;document.body.classList.add("dc-isolated-app__body-overflow",g&&b.compensateScroll)}else c.setAttribute("style",""),le();$.current=e,ee.current=a}}}),[k,V,re]);a((function(){return le}),[]),a((function(){ne&&$.current&&ce(!1)}),[ne]);var ue=s((function(e){Y.current=e,U(e)}),[]);return M("div",{className:l("dc-isolated-app",b.fixedSizeContainer),ref:Z,children:M("div",{ref:ue,onMouseEnter:_,onMouseLeave:N,"data-testid":"".concat("DevCenter_AppContainer","_").concat(W.app.app.name),className:l(b.container,x&&b.newMobileAppContainer,ne&&b.containerMaximized),children:M(G,E(E({},W),{},{appContextValue:pe,devCenterRouter:H,globalNotificationToastsAPI:window[Symbol.for("notificationToasts")],globalMixpanelEventTracker:window[Symbol.for("logToMixpanel")],onAppContainerClick:q,onIsMaximizedChange:B,permissionsContextValue:se,setIsFullscreenModalMode:ce,userUnits:ie}),Q)})})}F.propTypes={app:m.shape({id:m.number,app:m.shape({name:m.string})}).isRequired,currentUser:m.shape({}).isRequired,isIsolationFeatureEnabled:m.bool,onAppContainerClick:m.func,onAppFullscreenTransparentMode:m.func,onAppRemove:m.func,onInnerContainerMouseEnter:m.func,onInnerContainerMouseLeave:m.func,onIsMaximizedChange:m.func,onSettingChange:m.func,onSettingsChange:m.func,setInnerContainerRefFn:m.func,updateCurrentDashboardAppLastAnnotation:m.func},F.defaultProps={isIsolationFeatureEnabled:!1,onAppContainerClick:u,onAppFullscreenTransparentMode:u,onAppRemove:void 0,onInnerContainerMouseEnter:u,onInnerContainerMouseLeave:u,onIsMaximizedChange:u,onSettingChange:u,onSettingsChange:u,setInnerContainerRefFn:u,updateCurrentDashboardAppLastAnnotation:u};var T=c(F);export{T as DevCenterIsolatedApp};
1
+ import e from"@babel/runtime/helpers/defineProperty";import n from"@babel/runtime/helpers/slicedToArray";import r from"@babel/runtime/helpers/objectWithoutProperties";import{useMemo as t,useRef as o,useState as i,useEffect as a,useContext as p,useCallback as s}from"react";import c from"classnames";import{withRouter as l}from"react-router-dom";import{noop as u}from"lodash";import d from"query-string";import m from"prop-types";import{APP_IFRAME_ATTRIBUTE as v,IsolatedPage as f}from"./IsolatedPage.js";import{ISOLATED_PAGE_APP_CONTAINER_ID as C}from"./constants.js";import b from"./DevCenterIsolatedApp.module.css.js";import A from"../AppContext.js";import h from"../../../permissions/PermissionsContext.js";import"../../../permissions/constants/index.js";import"../../../permissions/withPermissionsHOC.js";import"@babel/runtime/helpers/asyncToGenerator";import"@babel/runtime/regenerator";import"../../../clients/jsonApi/index.js";import"../../../permissions/ProvidePermissions.js";import{getUserUnits as g,subscribeForUserUnitsUpdates as j}from"../../../utils/index.js";import"../AppHeader/AppHeader.js";import"../AppSideBar/AppSideBar.js";import"../AppsDataProvider/AppsDataProvider.js";import y from"../DevCenterAppContainer/DevCenterAppContainer.js";import"../NavigationBar/NavigationBar.js";import"../SideBar/SideBar.js";import"../AppSettingsPopover/AppSettingsPopover.js";import"../AppFilterPanelLayout/AppFilterPanelLayout.js";import"../DevCenterRouterContext/DevCenterRouterContext.js";import"../DevCenterRouterContext/UniversalLink/UniversalLink.js";import{jsx as M}from"react/jsx-runtime";import"./DevCenterIsolatedAppPage.js";import{getAppVersion as x}from"../DevCenterAppContainer/utils.js";import{isInsideNewMobileApp as I}from"../../../utils/mobileDetect.js";import{createDevCenterRouter as P,isCorvaApp as w,isIsolationEnabledInPackageManifest as L,isAppMaximized as D}from"../../../utils/devcenter.js";var E=["isIsolationFeatureEnabled","onAppFullscreenTransparentMode","onIsMaximizedChange","onInnerContainerMouseEnter","onInnerContainerMouseLeave","onAppContainerClick","setInnerContainerRefFn","trackApiRateLimiterException"];function O(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function S(n){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?O(Object(t),!0).forEach((function(r){e(n,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):O(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function R(e){var l,u,m,O,R,F,k,T=e.isIsolationFeatureEnabled,z=e.onAppFullscreenTransparentMode,B=e.onIsMaximizedChange,_=e.onInnerContainerMouseEnter,N=e.onInnerContainerMouseLeave,q=e.onAppContainerClick,U=e.setInnerContainerRefFn,W=e.trackApiRateLimiterException,H=r(e,E),V=t((function(){return P(H.history)}),[null===(l=H.history)||void 0===l?void 0:l.location]),G=w(null==H||null===(u=H.app)||void 0===u?void 0:u.app)&&!L(null==H||null===(m=H.app)||void 0===m?void 0:m.package)||!T,J=G?y:f,K=null===(O=H.app)||void 0===O||null===(R=O.app)||void 0===R?void 0:R.app_key,Q=x(H.app),X="".concat(K,"-").concat(Q),Y=o(),Z=o(),$=o(),ee=o(!1),ne=o(!1),re=D(d.parse(null===(F=H.history)||void 0===F||null===(k=F.location)||void 0===k?void 0:k.search),H.app.id),te=o(re);te.current=re;var oe=i(g()),ie=n(oe,2),ae=ie[0],pe=ie[1];a((function(){var e=j((function(e){return pe(e)}));return function(){return e()}}),[]);var se=p(A),ce=h();function le(){z({appId:H.app.id,isModeEnabled:!1}),document.body.classList.remove("dc-isolated-app__body-overflow",b.compensateScroll)}var ue=s((function(e){var n,r,t,o,i,a=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!T||G||te.current&&!ee.current||ee.current===e){var p;a&&ne.current!==a&&(ne.current=a,null===(p=Z.current)||void 0===p||p.classList.add(b.containerMaximizedTransparentModal))}else{var s,c=e?"add":"remove";if(null===(n=Z.current)||void 0===n||n.classList[c](b.containerMaximizedTransparent),a||"remove"===c)null===(s=Z.current)||void 0===s||s.classList[c](b.containerMaximizedTransparentModal);Y.current=null===(r=Z.current)||void 0===r||null===(t=r.querySelector("[".concat(v,"]")))||void 0===t||null===(o=t.contentWindow)||void 0===o?void 0:o.document;var l=null===(i=Y.current)||void 0===i?void 0:i.getElementById(C);if(l){if(e){var u=$.current.getBoundingClientRect(),d=u.top,m=u.left,f=u.width,A=u.height;l.setAttribute("style","\n top: ".concat(d,"px;\n left: ").concat(m,"px;\n width: ").concat(f,"px;\n height: ").concat(A,"px;\n position: absolute;\n ")),z({appId:H.app.id,isModeEnabled:!0});var h=window.innerWidth!==document.body.clientWidth;document.body.classList.add("dc-isolated-app__body-overflow",h&&b.compensateScroll)}else l.setAttribute("style",""),le();ee.current=e,ne.current=a}}}),[T,G,te]);a((function(){return le}),[]),a((function(){re&&ee.current&&ue(!1)}),[re]);var de=s((function(e){Z.current=e,U(e)}),[]);return M("div",{className:c("dc-isolated-app",b.fixedSizeContainer),ref:$,children:M("div",{ref:de,onMouseEnter:_,onMouseLeave:N,"data-testid":"".concat("DevCenter_AppContainer","_").concat(H.app.app.name),className:c(b.container,I&&b.newMobileAppContainer,re&&b.containerMaximized),children:M(J,S(S({},H),{},{appContextValue:se,devCenterRouter:V,globalNotificationToastsAPI:window[Symbol.for("notificationToasts")],globalMixpanelEventTracker:window[Symbol.for("logToMixpanel")],onAppContainerClick:q,onIsMaximizedChange:B,permissionsContextValue:ce,setIsFullscreenModalMode:ue,userUnits:ae,trackApiRateLimiterException:W}),X)})})}R.propTypes={app:m.shape({id:m.number,app:m.shape({name:m.string})}).isRequired,currentUser:m.shape({}).isRequired,isIsolationFeatureEnabled:m.bool,onAppContainerClick:m.func,onAppFullscreenTransparentMode:m.func,onAppRemove:m.func,onInnerContainerMouseEnter:m.func,onInnerContainerMouseLeave:m.func,onIsMaximizedChange:m.func,onSettingChange:m.func,onSettingsChange:m.func,setInnerContainerRefFn:m.func,updateCurrentDashboardAppLastAnnotation:m.func},R.defaultProps={isIsolationFeatureEnabled:!1,onAppContainerClick:u,onAppFullscreenTransparentMode:u,onAppRemove:void 0,onInnerContainerMouseEnter:u,onInnerContainerMouseLeave:u,onIsMaximizedChange:u,onSettingChange:u,onSettingsChange:u,setInnerContainerRefFn:u,updateCurrentDashboardAppLastAnnotation:u};var F=l(R);export{F as DevCenterIsolatedApp};
2
2
  //# sourceMappingURL=DevCenterIsolatedApp.js.map