@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.
- package/cjs-bundle/clients/api/apiCore.js +1 -1
- package/cjs-bundle/clients/api/apiCore.js.map +1 -1
- package/cjs-bundle/clients/api/constants.js +2 -0
- package/cjs-bundle/clients/api/constants.js.map +1 -0
- package/cjs-bundle/clients/api/rateLimiter.js +2 -0
- package/cjs-bundle/clients/api/rateLimiter.js.map +1 -0
- package/cjs-bundle/clients/index.js +1 -1
- package/cjs-bundle/clients/utils.js +1 -1
- package/cjs-bundle/clients/utils.js.map +1 -1
- package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js +1 -1
- package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js.map +1 -1
- package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js +1 -1
- package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js.map +1 -1
- package/cjs-bundle/effects/subscriptions/useSubscriptions.v1.js +1 -1
- package/cjs-bundle/effects/subscriptions/useSubscriptions.v1.js.map +1 -1
- package/cjs-bundle/effects/subscriptions/useSubscriptions.v2.js +1 -1
- package/clients/api/apiCore.d.ts.map +1 -1
- package/clients/api/apiCore.js +1 -1
- package/clients/api/apiCore.js.map +1 -1
- package/clients/api/constants.d.ts +37 -0
- package/clients/api/constants.d.ts.map +1 -0
- package/clients/api/constants.js +2 -0
- package/clients/api/constants.js.map +1 -0
- package/clients/api/rateLimiter.d.ts +24 -0
- package/clients/api/rateLimiter.d.ts.map +1 -0
- package/clients/api/rateLimiter.js +2 -0
- package/clients/api/rateLimiter.js.map +1 -0
- package/clients/index.js +1 -1
- package/clients/index.js.map +1 -1
- package/clients/utils.d.ts +4 -2
- package/clients/utils.d.ts.map +1 -1
- package/clients/utils.js +1 -1
- package/clients/utils.js.map +1 -1
- package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.d.ts.map +1 -1
- package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js +1 -1
- package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js.map +1 -1
- package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.d.ts.map +1 -1
- package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js +1 -1
- package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js.map +1 -1
- package/effects/subscriptions/useSubscriptions.v1.js +1 -1
- package/effects/subscriptions/useSubscriptions.v1.js.map +1 -1
- package/effects/subscriptions/useSubscriptions.v2.d.ts.map +1 -1
- package/effects/subscriptions/useSubscriptions.v2.js +1 -1
- package/effects/useSubscriptions.d.ts.map +1 -1
- package/mcp-server/server.mjs +1 -1
- package/package.json +1 -1
- 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("
|
|
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":"
|
|
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"}
|
package/clients/api/apiCore.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import
|
|
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":"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"}
|
|
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 @@
|
|
|
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
|
|
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
|
package/clients/index.js.map
CHANGED
|
@@ -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":"
|
|
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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"}
|
package/clients/utils.d.ts
CHANGED
|
@@ -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;
|
package/clients/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/clients/utils.js"],"names":[],"mappings":"
|
|
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
|
|
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
|
package/clients/utils.js.map
CHANGED
|
@@ -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
|
|
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":"
|
|
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
|
|
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
|