@next-core/easyops-runtime 0.10.5 → 0.10.7
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/dist/cjs/analytics/http.js +3 -4
- package/dist/cjs/analytics/http.js.map +1 -1
- package/dist/cjs/checkInstalledApps.js +1 -2
- package/dist/cjs/checkInstalledApps.js.map +1 -1
- package/dist/cjs/checkPermissions.js.map +1 -1
- package/dist/cjs/flowApi/CollectContracts.js.map +1 -1
- package/dist/cjs/flowApi/FlowApi.js +2 -2
- package/dist/cjs/flowApi/FlowApi.js.map +1 -1
- package/dist/cjs/flowApi/FlowApiProvider.js +5 -5
- package/dist/cjs/flowApi/FlowApiProvider.js.map +1 -1
- package/dist/cjs/menu/fetchMenuById.js.map +1 -1
- package/dist/cjs/menu/fetchMenuTitle.js +1 -1
- package/dist/cjs/menu/fetchMenuTitle.js.map +1 -1
- package/dist/cjs/menu/getMenusOfStandaloneApp.js +2 -2
- package/dist/cjs/menu/getMenusOfStandaloneApp.js.map +1 -1
- package/dist/cjs/menu/mergeMenu.js +1 -2
- package/dist/cjs/menu/mergeMenu.js.map +1 -1
- package/dist/cjs/menu/reorderMenuItems.js +1 -4
- package/dist/cjs/menu/reorderMenuItems.js.map +1 -1
- package/dist/cjs/websocket/MessageDispatcher.js.map +1 -1
- package/dist/cjs/websocket/MessageService.js.map +1 -1
- package/dist/esm/analytics/analytics.js +23 -18
- package/dist/esm/analytics/analytics.js.map +1 -1
- package/dist/esm/analytics/http.js +19 -20
- package/dist/esm/analytics/http.js.map +1 -1
- package/dist/esm/analytics/pageView.js +6 -6
- package/dist/esm/analytics/pageView.js.map +1 -1
- package/dist/esm/analytics/transport.js +12 -12
- package/dist/esm/analytics/transport.js.map +1 -1
- package/dist/esm/auth-v2.js +1 -1
- package/dist/esm/auth-v2.js.map +1 -1
- package/dist/esm/auth.js +5 -4
- package/dist/esm/auth.js.map +1 -1
- package/dist/esm/checkInstalledApps.js +19 -30
- package/dist/esm/checkInstalledApps.js.map +1 -1
- package/dist/esm/checkPermissions.js +35 -48
- package/dist/esm/checkPermissions.js.map +1 -1
- package/dist/esm/flowApi/CollectContracts.js +5 -5
- package/dist/esm/flowApi/CollectContracts.js.map +1 -1
- package/dist/esm/flowApi/FlowApi.js +68 -87
- package/dist/esm/flowApi/FlowApi.js.map +1 -1
- package/dist/esm/flowApi/FlowApiProvider.js +87 -87
- package/dist/esm/flowApi/FlowApiProvider.js.map +1 -1
- package/dist/esm/index.js +3 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/menu/computeMenuData.js +17 -24
- package/dist/esm/menu/computeMenuData.js.map +1 -1
- package/dist/esm/menu/constants.js +3 -3
- package/dist/esm/menu/constants.js.map +1 -1
- package/dist/esm/menu/fetchMenuById.js +61 -70
- package/dist/esm/menu/fetchMenuById.js.map +1 -1
- package/dist/esm/menu/fetchMenuTitle.js +27 -34
- package/dist/esm/menu/fetchMenuTitle.js.map +1 -1
- package/dist/esm/menu/getMenusOfStandaloneApp.js +11 -9
- package/dist/esm/menu/getMenusOfStandaloneApp.js.map +1 -1
- package/dist/esm/menu/loadDynamicMenuItems.js +17 -23
- package/dist/esm/menu/loadDynamicMenuItems.js.map +1 -1
- package/dist/esm/menu/mergeMenu.js +44 -54
- package/dist/esm/menu/mergeMenu.js.map +1 -1
- package/dist/esm/menu/reorderMenuItems.js +3 -6
- package/dist/esm/menu/reorderMenuItems.js.map +1 -1
- package/dist/esm/websocket/MessageDispatcher.js +19 -19
- package/dist/esm/websocket/MessageDispatcher.js.map +1 -1
- package/dist/esm/websocket/MessageService.js +9 -9
- package/dist/esm/websocket/MessageService.js.map +1 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchMenuById.js","names":["InstanceApi_postSearch","InstalledMicroAppApi_getMenusInfo","omit","pick","checkIfOfComputed","mergeMenu","reorderMenu","computeMenuItems","computeMenuData","fetchMenuTitle","getMenusOfStandaloneApp","preCheckPermissionsForAny","menuPromises","Map","menuCache","transformMenuItems","menuItems","filter","map","item","children","transformedMenuItem","type","title","text","childLayout","items","groupId","groupFrom","length","icon","defaultExpanded","getMenuById","menuId","get","fetchMenuById","runtimeContext","helpers","promise","_fetchMenuById","
|
|
1
|
+
{"version":3,"file":"fetchMenuById.js","names":["InstanceApi_postSearch","InstalledMicroAppApi_getMenusInfo","omit","pick","checkIfOfComputed","mergeMenu","reorderMenu","computeMenuItems","computeMenuData","fetchMenuTitle","getMenusOfStandaloneApp","preCheckPermissionsForAny","menuPromises","Map","menuCache","transformMenuItems","menuItems","filter","map","item","children","transformedMenuItem","type","title","text","childLayout","items","groupId","groupFrom","length","icon","defaultExpanded","getMenuById","menuId","get","fetchMenuById","runtimeContext","helpers","promise","_fetchMenuById","menuList","window","STANDALONE_MICRO_APPS","app","id","flags","menuObjectId","menus","page","page_size","fields","link","titleDataSource","defaultCollapsed","defaultCollapsedBreakpoint","injectMenuGroupId","dynamicItems","itemsResolve","i18n","query","$eq","$size","$gt","list","menuData","Error","restMenuData","newRuntimeContext","pendingPermissionsPreCheck","tplStateStoreId","forEachItem","forEachIndex","rootAppId","appId","computedMenuData","computedMenuItems","Promise","all","finalMenuData","set"],"sources":["../../../src/menu/fetchMenuById.ts"],"sourcesContent":["import { InstanceApi_postSearch } from \"@next-api-sdk/cmdb-sdk\";\nimport { InstalledMicroAppApi_getMenusInfo } from \"@next-api-sdk/micro-app-sdk\";\nimport { omit, pick } from \"lodash\";\nimport { checkIfOfComputed } from \"@next-core/runtime\";\nimport { mergeMenu } from \"./mergeMenu.js\";\nimport { reorderMenu } from \"./reorderMenuItems.js\";\nimport type {\n MenuRawData,\n RuntimeContext,\n RuntimeHelpers,\n RuntimeMenuItemRawData,\n SidebarMenu,\n SidebarMenuItem,\n} from \"./interfaces.js\";\nimport { computeMenuItems, computeMenuData } from \"./computeMenuData.js\";\nimport { fetchMenuTitle } from \"./fetchMenuTitle.js\";\nimport { getMenusOfStandaloneApp } from \"./getMenusOfStandaloneApp.js\";\nimport { preCheckPermissionsForAny } from \"../checkPermissions.js\";\n\nconst menuPromises = new Map<string, Promise<void>>();\n\nconst menuCache = new Map<string, SidebarMenu>();\n\nfunction transformMenuItems(\n menuItems: RuntimeMenuItemRawData[] | undefined\n): SidebarMenuItem[] | undefined {\n return menuItems?.filter(checkIfOfComputed).map((item) => {\n const children = transformMenuItems(item.children);\n const transformedMenuItem: SidebarMenuItem =\n item.type === \"group\"\n ? {\n type: \"group\",\n title: item.text,\n childLayout: item.childLayout,\n items: children,\n groupId: item.groupId,\n groupFrom: item.groupFrom,\n }\n : children?.length\n ? {\n type: \"subMenu\",\n childLayout: item.childLayout,\n title: item.text,\n icon: item.icon,\n items: children,\n defaultExpanded: item.defaultExpanded,\n }\n : (omit(item, [\"type\", \"items\", \"children\"]) as SidebarMenuItem);\n return transformedMenuItem;\n });\n}\n\nexport function getMenuById(menuId: string) {\n return menuCache.get(menuId);\n}\n\nexport function fetchMenuById(\n menuId: string,\n runtimeContext: RuntimeContext,\n helpers: RuntimeHelpers\n) {\n let promise = menuPromises.get(menuId);\n if (!promise) {\n promise = _fetchMenuById(menuId, runtimeContext, helpers);\n }\n return promise;\n}\n\nasync function _fetchMenuById(\n menuId: string,\n runtimeContext: RuntimeContext,\n helpers: RuntimeHelpers\n) {\n const menuList = window.STANDALONE_MICRO_APPS\n ? getMenusOfStandaloneApp(menuId, runtimeContext.app.id, helpers)\n : runtimeContext.flags[\"three-level-menu-layout\"]\n ? ((\n await InstalledMicroAppApi_getMenusInfo(menuId, {\n menuObjectId: \"EASYOPS_STORYBOARD_MENU\",\n })\n ).menus as MenuRawData[])\n : ((\n await InstanceApi_postSearch(\"EASYOPS_STORYBOARD_MENU\", {\n page: 1,\n page_size: 200,\n fields: {\n menuId: true,\n title: true,\n icon: true,\n link: true,\n titleDataSource: true,\n defaultCollapsed: true,\n defaultCollapsedBreakpoint: true,\n type: true,\n injectMenuGroupId: true,\n dynamicItems: true,\n itemsResolve: true,\n items: true,\n i18n: true,\n \"items.children\": true,\n \"app.appId\": true,\n },\n query: {\n menuId: {\n $eq: menuId,\n },\n app: {\n $size: {\n $gt: 0,\n },\n },\n },\n })\n ).list as MenuRawData[]);\n\n const menuData = await mergeMenu(menuList, runtimeContext, helpers);\n if (!menuData) {\n throw new Error(`Menu not found: ${menuId}`);\n }\n\n reorderMenu(menuData);\n\n const { items, app, ...restMenuData } = menuData;\n const newRuntimeContext: RuntimeContext = {\n ...runtimeContext,\n pendingPermissionsPreCheck: [\n ...runtimeContext.pendingPermissionsPreCheck,\n preCheckPermissionsForAny([items, restMenuData]),\n ],\n };\n delete newRuntimeContext.tplStateStoreId;\n delete newRuntimeContext.forEachItem;\n delete newRuntimeContext.forEachIndex;\n const rootAppId = app[0].appId;\n\n const [computedMenuData, computedMenuItems] = await Promise.all([\n computeMenuData(restMenuData, rootAppId, newRuntimeContext, helpers),\n computeMenuItems(items, newRuntimeContext, helpers),\n ]);\n\n const finalMenuData: SidebarMenu = {\n title: await fetchMenuTitle(computedMenuData),\n ...pick(computedMenuData, [\n \"icon\",\n \"link\",\n \"defaultCollapsed\",\n \"defaultCollapsedBreakpoint\",\n ]),\n menuItems: transformMenuItems(computedMenuItems)!,\n };\n\n // Todo(steve): reconsider the menu cache strategy\n menuCache.set(menuId, finalMenuData);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,39 +1,32 @@
|
|
|
1
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
1
|
import { isEmpty } from "lodash";
|
|
3
2
|
import { InstanceApi_getDetail } from "@next-api-sdk/cmdb-sdk";
|
|
4
|
-
|
|
5
|
-
export function fetchMenuTitle(
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
} = menuData.titleDataSource;
|
|
23
|
-
var attr = attributeId !== null && attributeId !== void 0 ? attributeId : "name";
|
|
24
|
-
var instanceData = yield InstanceApi_getDetail(objectId, instanceId, {
|
|
25
|
-
fields: attr
|
|
26
|
-
});
|
|
27
|
-
var title;
|
|
28
|
-
if (attributeId === "#showKey" && Array.isArray(instanceData[attr])) {
|
|
29
|
-
var [primary, ...rest] = instanceData[attr];
|
|
30
|
-
title = rest.length > 0 ? "".concat(primary, "(").concat(rest.join(","), ")") : String(primary);
|
|
31
|
-
} else {
|
|
32
|
-
title = String(instanceData[attr]);
|
|
33
|
-
}
|
|
34
|
-
menuTitleCache.set(cacheKey, title);
|
|
35
|
-
return title;
|
|
3
|
+
const menuTitleCache = new Map();
|
|
4
|
+
export async function fetchMenuTitle(menuData) {
|
|
5
|
+
if (menuData.title || isEmpty(menuData.titleDataSource)) {
|
|
6
|
+
return menuData.title;
|
|
7
|
+
}
|
|
8
|
+
const cacheKey = JSON.stringify(menuData.titleDataSource);
|
|
9
|
+
const cachedTitle = menuTitleCache.get(cacheKey);
|
|
10
|
+
if (cachedTitle !== undefined) {
|
|
11
|
+
return cachedTitle;
|
|
12
|
+
}
|
|
13
|
+
const {
|
|
14
|
+
objectId,
|
|
15
|
+
instanceId,
|
|
16
|
+
attributeId
|
|
17
|
+
} = menuData.titleDataSource;
|
|
18
|
+
const attr = attributeId ?? "name";
|
|
19
|
+
const instanceData = await InstanceApi_getDetail(objectId, instanceId, {
|
|
20
|
+
fields: attr
|
|
36
21
|
});
|
|
37
|
-
|
|
22
|
+
let title;
|
|
23
|
+
if (attributeId === "#showKey" && Array.isArray(instanceData[attr])) {
|
|
24
|
+
const [primary, ...rest] = instanceData[attr];
|
|
25
|
+
title = rest.length > 0 ? `${primary}(${rest.join(",")})` : String(primary);
|
|
26
|
+
} else {
|
|
27
|
+
title = String(instanceData[attr]);
|
|
28
|
+
}
|
|
29
|
+
menuTitleCache.set(cacheKey, title);
|
|
30
|
+
return title;
|
|
38
31
|
}
|
|
39
32
|
//# sourceMappingURL=fetchMenuTitle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchMenuTitle.js","names":["isEmpty","InstanceApi_getDetail","menuTitleCache","Map","fetchMenuTitle","
|
|
1
|
+
{"version":3,"file":"fetchMenuTitle.js","names":["isEmpty","InstanceApi_getDetail","menuTitleCache","Map","fetchMenuTitle","menuData","title","titleDataSource","cacheKey","JSON","stringify","cachedTitle","get","undefined","objectId","instanceId","attributeId","attr","instanceData","fields","Array","isArray","primary","rest","length","join","String","set"],"sources":["../../../src/menu/fetchMenuTitle.ts"],"sourcesContent":["import { isEmpty } from \"lodash\";\nimport { InstanceApi_getDetail } from \"@next-api-sdk/cmdb-sdk\";\nimport type { MenuRawData } from \"./interfaces.js\";\n\nconst menuTitleCache = new Map<string, string>();\n\nexport async function fetchMenuTitle(\n menuData: Pick<MenuRawData, \"title\" | \"titleDataSource\">\n): Promise<string> {\n if (menuData.title || isEmpty(menuData.titleDataSource)) {\n return menuData.title;\n }\n const cacheKey = JSON.stringify(menuData.titleDataSource);\n const cachedTitle = menuTitleCache.get(cacheKey);\n if (cachedTitle !== undefined) {\n return cachedTitle;\n }\n const { objectId, instanceId, attributeId } = menuData.titleDataSource;\n const attr = attributeId ?? \"name\";\n const instanceData = await InstanceApi_getDetail(objectId, instanceId, {\n fields: attr,\n });\n let title: string;\n if (attributeId === \"#showKey\" && Array.isArray(instanceData[attr])) {\n const [primary, ...rest] = instanceData[attr];\n title = rest.length > 0 ? `${primary}(${rest.join(\",\")})` : String(primary);\n } else {\n title = String(instanceData[attr]);\n }\n menuTitleCache.set(cacheKey, title);\n return title;\n}\n"],"mappings":"AAAA,SAASA,OAAO,QAAQ,QAAQ;AAChC,SAASC,qBAAqB,QAAQ,wBAAwB;AAG9D,MAAMC,cAAc,GAAG,IAAIC,GAAG,CAAiB,CAAC;AAEhD,OAAO,eAAeC,cAAcA,CAClCC,QAAwD,EACvC;EACjB,IAAIA,QAAQ,CAACC,KAAK,IAAIN,OAAO,CAACK,QAAQ,CAACE,eAAe,CAAC,EAAE;IACvD,OAAOF,QAAQ,CAACC,KAAK;EACvB;EACA,MAAME,QAAQ,GAAGC,IAAI,CAACC,SAAS,CAACL,QAAQ,CAACE,eAAe,CAAC;EACzD,MAAMI,WAAW,GAAGT,cAAc,CAACU,GAAG,CAACJ,QAAQ,CAAC;EAChD,IAAIG,WAAW,KAAKE,SAAS,EAAE;IAC7B,OAAOF,WAAW;EACpB;EACA,MAAM;IAAEG,QAAQ;IAAEC,UAAU;IAAEC;EAAY,CAAC,GAAGX,QAAQ,CAACE,eAAe;EACtE,MAAMU,IAAI,GAAGD,WAAW,IAAI,MAAM;EAClC,MAAME,YAAY,GAAG,MAAMjB,qBAAqB,CAACa,QAAQ,EAAEC,UAAU,EAAE;IACrEI,MAAM,EAAEF;EACV,CAAC,CAAC;EACF,IAAIX,KAAa;EACjB,IAAIU,WAAW,KAAK,UAAU,IAAII,KAAK,CAACC,OAAO,CAACH,YAAY,CAACD,IAAI,CAAC,CAAC,EAAE;IACnE,MAAM,CAACK,OAAO,EAAE,GAAGC,IAAI,CAAC,GAAGL,YAAY,CAACD,IAAI,CAAC;IAC7CX,KAAK,GAAGiB,IAAI,CAACC,MAAM,GAAG,CAAC,GAAG,GAAGF,OAAO,IAAIC,IAAI,CAACE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAGC,MAAM,CAACJ,OAAO,CAAC;EAC7E,CAAC,MAAM;IACLhB,KAAK,GAAGoB,MAAM,CAACR,YAAY,CAACD,IAAI,CAAC,CAAC;EACpC;EACAf,cAAc,CAACyB,GAAG,CAACnB,QAAQ,EAAEF,KAAK,CAAC;EACnC,OAAOA,KAAK;AACd","ignoreList":[]}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
2
1
|
export function getMenusOfStandaloneApp(menuId, appId, helpers) {
|
|
3
|
-
var
|
|
2
|
+
var _storyboard$meta, _storyboard$meta2;
|
|
4
3
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
const storyboard = helpers.getStoryboardByAppId(appId);
|
|
5
|
+
const menus = ((_storyboard$meta = storyboard.meta) === null || _storyboard$meta === void 0 ? void 0 : _storyboard$meta.injectMenus) ?? ((_storyboard$meta2 = storyboard.meta) === null || _storyboard$meta2 === void 0 ? void 0 : _storyboard$meta2.menus) ?? [];
|
|
7
6
|
return menus.filter(menu => menu.menuId === menuId).map(menu => {
|
|
8
7
|
var _menu$app;
|
|
9
|
-
return
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
return {
|
|
9
|
+
...menu,
|
|
10
|
+
...((_menu$app = menu.app) !== null && _menu$app !== void 0 && (_menu$app = _menu$app[0]) !== null && _menu$app !== void 0 && _menu$app.appId ? {} : {
|
|
11
|
+
app: [{
|
|
12
|
+
appId
|
|
13
|
+
}]
|
|
14
|
+
})
|
|
15
|
+
};
|
|
14
16
|
});
|
|
15
17
|
|
|
16
18
|
// Todo: maybe: fetch menus from STANDALONE_MENU@EASYOPS
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getMenusOfStandaloneApp.js","names":["getMenusOfStandaloneApp","menuId","appId","helpers","
|
|
1
|
+
{"version":3,"file":"getMenusOfStandaloneApp.js","names":["getMenusOfStandaloneApp","menuId","appId","helpers","_storyboard$meta","_storyboard$meta2","storyboard","getStoryboardByAppId","menus","meta","injectMenus","filter","menu","map","_menu$app","app"],"sources":["../../../src/menu/getMenusOfStandaloneApp.ts"],"sourcesContent":["import { MenuRawData, RuntimeHelpers } from \"./interfaces.js\";\n\nexport function getMenusOfStandaloneApp(\n menuId: string,\n appId: string,\n helpers: RuntimeHelpers\n): MenuRawData[] {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const storyboard = helpers.getStoryboardByAppId(appId)!;\n const menus = (storyboard.meta?.injectMenus ??\n storyboard.meta?.menus ??\n []) as MenuRawData[];\n\n return menus\n .filter((menu) => menu.menuId === menuId)\n .map((menu) => ({\n ...menu,\n ...(menu.app?.[0]?.appId ? {} : { app: [{ appId }] }),\n }));\n\n // Todo: maybe: fetch menus from STANDALONE_MENU@EASYOPS\n}\n"],"mappings":"AAEA,OAAO,SAASA,uBAAuBA,CACrCC,MAAc,EACdC,KAAa,EACbC,OAAuB,EACR;EAAA,IAAAC,gBAAA,EAAAC,iBAAA;EACf;EACA,MAAMC,UAAU,GAAGH,OAAO,CAACI,oBAAoB,CAACL,KAAK,CAAE;EACvD,MAAMM,KAAK,GAAI,EAAAJ,gBAAA,GAAAE,UAAU,CAACG,IAAI,cAAAL,gBAAA,uBAAfA,gBAAA,CAAiBM,WAAW,OAAAL,iBAAA,GACzCC,UAAU,CAACG,IAAI,cAAAJ,iBAAA,uBAAfA,iBAAA,CAAiBG,KAAK,KACtB,EAAoB;EAEtB,OAAOA,KAAK,CACTG,MAAM,CAAEC,IAAI,IAAKA,IAAI,CAACX,MAAM,KAAKA,MAAM,CAAC,CACxCY,GAAG,CAAED,IAAI;IAAA,IAAAE,SAAA;IAAA,OAAM;MACd,GAAGF,IAAI;MACP,IAAI,CAAAE,SAAA,GAAAF,IAAI,CAACG,GAAG,cAAAD,SAAA,gBAAAA,SAAA,GAARA,SAAA,CAAW,CAAC,CAAC,cAAAA,SAAA,eAAbA,SAAA,CAAeZ,KAAK,GAAG,CAAC,CAAC,GAAG;QAAEa,GAAG,EAAE,CAAC;UAAEb;QAAM,CAAC;MAAE,CAAC;IACtD,CAAC;EAAA,CAAC,CAAC;;EAEL;AACF","ignoreList":[]}
|
|
@@ -1,27 +1,21 @@
|
|
|
1
|
-
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
2
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
3
1
|
import { preCheckPermissionsForAny } from "../checkPermissions.js";
|
|
4
|
-
export function loadDynamicMenuItems(
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
var _helpers$getStoryboar;
|
|
16
|
-
newRuntimeContext.overrideApp = window.STANDALONE_MICRO_APPS ? menu.overrideApp : (_helpers$getStoryboar = helpers.getStoryboardByAppId(overrideAppId)) === null || _helpers$getStoryboar === void 0 ? void 0 : _helpers$getStoryboar.app;
|
|
17
|
-
newRuntimeContext.appendI18nNamespace = menuWithI18n.get(menu);
|
|
18
|
-
}
|
|
19
|
-
var resolved = yield helpers.resolveData(_objectSpread({
|
|
20
|
-
transform: "items"
|
|
21
|
-
}, menu.itemsResolve), newRuntimeContext);
|
|
22
|
-
menu.items = resolved.items;
|
|
2
|
+
export async function loadDynamicMenuItems(menu, runtimeContext, menuWithI18n, helpers) {
|
|
3
|
+
if (menu.dynamicItems && menu.itemsResolve) {
|
|
4
|
+
const overrideAppId = menu.app[0].appId;
|
|
5
|
+
const newRuntimeContext = {
|
|
6
|
+
...runtimeContext,
|
|
7
|
+
pendingPermissionsPreCheck: [...runtimeContext.pendingPermissionsPreCheck, preCheckPermissionsForAny(menu.itemsResolve)]
|
|
8
|
+
};
|
|
9
|
+
if (overrideAppId !== runtimeContext.app.id) {
|
|
10
|
+
var _helpers$getStoryboar;
|
|
11
|
+
newRuntimeContext.overrideApp = window.STANDALONE_MICRO_APPS ? menu.overrideApp : (_helpers$getStoryboar = helpers.getStoryboardByAppId(overrideAppId)) === null || _helpers$getStoryboar === void 0 ? void 0 : _helpers$getStoryboar.app;
|
|
12
|
+
newRuntimeContext.appendI18nNamespace = menuWithI18n.get(menu);
|
|
23
13
|
}
|
|
24
|
-
|
|
25
|
-
|
|
14
|
+
const resolved = await helpers.resolveData({
|
|
15
|
+
transform: "items",
|
|
16
|
+
...menu.itemsResolve
|
|
17
|
+
}, newRuntimeContext);
|
|
18
|
+
menu.items = resolved.items;
|
|
19
|
+
}
|
|
26
20
|
}
|
|
27
21
|
//# sourceMappingURL=loadDynamicMenuItems.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadDynamicMenuItems.js","names":["preCheckPermissionsForAny","loadDynamicMenuItems","
|
|
1
|
+
{"version":3,"file":"loadDynamicMenuItems.js","names":["preCheckPermissionsForAny","loadDynamicMenuItems","menu","runtimeContext","menuWithI18n","helpers","dynamicItems","itemsResolve","overrideAppId","app","appId","newRuntimeContext","pendingPermissionsPreCheck","id","_helpers$getStoryboar","overrideApp","window","STANDALONE_MICRO_APPS","getStoryboardByAppId","appendI18nNamespace","get","resolved","resolveData","transform","items"],"sources":["../../../src/menu/loadDynamicMenuItems.ts"],"sourcesContent":["import { preCheckPermissionsForAny } from \"../checkPermissions.js\";\nimport type {\n RuntimeContext,\n MenuItemRawData,\n MenuRawData,\n RuntimeHelpers,\n} from \"./interfaces.js\";\n\nexport async function loadDynamicMenuItems(\n menu: MenuRawData,\n runtimeContext: RuntimeContext,\n menuWithI18n: WeakMap<MenuRawData, string>,\n helpers: RuntimeHelpers\n): Promise<void> {\n if (menu.dynamicItems && menu.itemsResolve) {\n const overrideAppId = menu.app[0].appId;\n const newRuntimeContext = {\n ...runtimeContext,\n pendingPermissionsPreCheck: [\n ...runtimeContext.pendingPermissionsPreCheck,\n preCheckPermissionsForAny(menu.itemsResolve),\n ],\n };\n if (overrideAppId !== runtimeContext.app.id) {\n newRuntimeContext.overrideApp = window.STANDALONE_MICRO_APPS\n ? menu.overrideApp\n : helpers.getStoryboardByAppId(overrideAppId)?.app;\n newRuntimeContext.appendI18nNamespace = menuWithI18n.get(menu);\n }\n\n const resolved = (await helpers.resolveData(\n {\n transform: \"items\",\n ...menu.itemsResolve,\n },\n newRuntimeContext\n )) as { items: MenuItemRawData[] };\n menu.items = resolved.items;\n }\n}\n"],"mappings":"AAAA,SAASA,yBAAyB,QAAQ,wBAAwB;AAQlE,OAAO,eAAeC,oBAAoBA,CACxCC,IAAiB,EACjBC,cAA8B,EAC9BC,YAA0C,EAC1CC,OAAuB,EACR;EACf,IAAIH,IAAI,CAACI,YAAY,IAAIJ,IAAI,CAACK,YAAY,EAAE;IAC1C,MAAMC,aAAa,GAAGN,IAAI,CAACO,GAAG,CAAC,CAAC,CAAC,CAACC,KAAK;IACvC,MAAMC,iBAAiB,GAAG;MACxB,GAAGR,cAAc;MACjBS,0BAA0B,EAAE,CAC1B,GAAGT,cAAc,CAACS,0BAA0B,EAC5CZ,yBAAyB,CAACE,IAAI,CAACK,YAAY,CAAC;IAEhD,CAAC;IACD,IAAIC,aAAa,KAAKL,cAAc,CAACM,GAAG,CAACI,EAAE,EAAE;MAAA,IAAAC,qBAAA;MAC3CH,iBAAiB,CAACI,WAAW,GAAGC,MAAM,CAACC,qBAAqB,GACxDf,IAAI,CAACa,WAAW,IAAAD,qBAAA,GAChBT,OAAO,CAACa,oBAAoB,CAACV,aAAa,CAAC,cAAAM,qBAAA,uBAA3CA,qBAAA,CAA6CL,GAAG;MACpDE,iBAAiB,CAACQ,mBAAmB,GAAGf,YAAY,CAACgB,GAAG,CAAClB,IAAI,CAAC;IAChE;IAEA,MAAMmB,QAAQ,GAAI,MAAMhB,OAAO,CAACiB,WAAW,CACzC;MACEC,SAAS,EAAE,OAAO;MAClB,GAAGrB,IAAI,CAACK;IACV,CAAC,EACDI,iBACF,CAAkC;IAClCT,IAAI,CAACsB,KAAK,GAAGH,QAAQ,CAACG,KAAK;EAC7B;AACF","ignoreList":[]}
|
|
@@ -1,77 +1,67 @@
|
|
|
1
|
-
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
2
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
3
1
|
import { i18n } from "@next-core/i18n";
|
|
4
2
|
import { symbolAppId, symbolMenuI18nNamespace, symbolOverrideApp } from "./constants.js";
|
|
5
3
|
import { loadDynamicMenuItems } from "./loadDynamicMenuItems.js";
|
|
6
|
-
export function mergeMenu(
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
var [lang, resources] = _ref;
|
|
24
|
-
i18n.addResourceBundle(lang, menuI18nNamespace, resources);
|
|
25
|
-
});
|
|
26
|
-
menuWithI18n.set(menu, menuI18nNamespace);
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
for (var menu of menuList) {
|
|
30
|
-
yield* _loop();
|
|
4
|
+
export async function mergeMenu(menuList, runtimeContext, helpers) {
|
|
5
|
+
const mainMenu = menuList.find(menu => menu.type !== "inject");
|
|
6
|
+
if (!mainMenu) {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
const validMenuList = [];
|
|
10
|
+
const injectWithMenus = new Map();
|
|
11
|
+
const menuWithI18n = new WeakMap();
|
|
12
|
+
for (const menu of menuList) {
|
|
13
|
+
if (menu.i18n) {
|
|
14
|
+
const menuI18nNamespace = `menu/${menu.menuId}~${menu.app[0].appId}+${menu.instanceId}`;
|
|
15
|
+
// Support any language in `menu.i18n`.
|
|
16
|
+
Object.entries(menu.i18n).forEach(_ref => {
|
|
17
|
+
let [lang, resources] = _ref;
|
|
18
|
+
i18n.addResourceBundle(lang, menuI18nNamespace, resources);
|
|
19
|
+
});
|
|
20
|
+
menuWithI18n.set(menu, menuI18nNamespace);
|
|
31
21
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
injectingMenus.push(_menu);
|
|
43
|
-
} else {
|
|
44
|
-
validMenuList.push(_menu);
|
|
22
|
+
}
|
|
23
|
+
await Promise.all(menuList.map(menu => loadDynamicMenuItems(menu, runtimeContext, menuWithI18n, helpers)));
|
|
24
|
+
for (const menu of menuList) {
|
|
25
|
+
var _menu$items;
|
|
26
|
+
if ((_menu$items = menu.items) !== null && _menu$items !== void 0 && _menu$items.length) {
|
|
27
|
+
if (menu.type === "inject" && menu.injectMenuGroupId) {
|
|
28
|
+
let injectingMenus = injectWithMenus.get(menu.injectMenuGroupId);
|
|
29
|
+
if (!injectingMenus) {
|
|
30
|
+
injectingMenus = [];
|
|
31
|
+
injectWithMenus.set(menu.injectMenuGroupId, injectingMenus);
|
|
45
32
|
}
|
|
33
|
+
injectingMenus.push(menu);
|
|
34
|
+
} else {
|
|
35
|
+
validMenuList.push(menu);
|
|
46
36
|
}
|
|
47
37
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
...mainMenu,
|
|
41
|
+
items: validMenuList.flatMap(menu =>
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
43
|
+
processGroupInject(menu.items, menu, injectWithMenus, menuWithI18n)),
|
|
44
|
+
[symbolMenuI18nNamespace]: menuWithI18n.get(mainMenu),
|
|
45
|
+
[symbolOverrideApp]: mainMenu.overrideApp
|
|
46
|
+
};
|
|
57
47
|
}
|
|
58
48
|
function processGroupInject(items, menu, injectWithMenus, menuWithI18n) {
|
|
59
49
|
return items === null || items === void 0 ? void 0 : items.map(item => {
|
|
60
|
-
|
|
61
|
-
var foundInjectingMenus = item.groupId && injectWithMenus.get(item.groupId);
|
|
50
|
+
const foundInjectingMenus = item.groupId && injectWithMenus.get(item.groupId);
|
|
62
51
|
if (foundInjectingMenus) {
|
|
63
52
|
// Each menu to be injected with should be injected only once.
|
|
64
53
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
65
54
|
injectWithMenus.delete(item.groupId);
|
|
66
55
|
}
|
|
67
|
-
return
|
|
68
|
-
|
|
56
|
+
return {
|
|
57
|
+
...item,
|
|
58
|
+
children: (processGroupInject(item.children, menu, injectWithMenus, menuWithI18n) ?? []).concat(foundInjectingMenus ? foundInjectingMenus.flatMap(injectingMenu =>
|
|
69
59
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
70
60
|
processGroupInject(injectingMenu.items, injectingMenu, injectWithMenus, menuWithI18n)) : []),
|
|
71
61
|
[symbolAppId]: menu.app[0].appId,
|
|
72
62
|
[symbolMenuI18nNamespace]: menuWithI18n.get(menu),
|
|
73
63
|
[symbolOverrideApp]: menu.overrideApp
|
|
74
|
-
}
|
|
64
|
+
};
|
|
75
65
|
});
|
|
76
66
|
}
|
|
77
67
|
//# sourceMappingURL=mergeMenu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mergeMenu.js","names":["i18n","symbolAppId","symbolMenuI18nNamespace","symbolOverrideApp","loadDynamicMenuItems","mergeMenu","
|
|
1
|
+
{"version":3,"file":"mergeMenu.js","names":["i18n","symbolAppId","symbolMenuI18nNamespace","symbolOverrideApp","loadDynamicMenuItems","mergeMenu","menuList","runtimeContext","helpers","mainMenu","find","menu","type","undefined","validMenuList","injectWithMenus","Map","menuWithI18n","WeakMap","menuI18nNamespace","menuId","app","appId","instanceId","Object","entries","forEach","_ref","lang","resources","addResourceBundle","set","Promise","all","map","_menu$items","items","length","injectMenuGroupId","injectingMenus","get","push","flatMap","processGroupInject","overrideApp","item","foundInjectingMenus","groupId","delete","children","concat","injectingMenu"],"sources":["../../../src/menu/mergeMenu.ts"],"sourcesContent":["import { i18n } from \"@next-core/i18n\";\nimport {\n symbolAppId,\n symbolMenuI18nNamespace,\n symbolOverrideApp,\n} from \"./constants.js\";\nimport type {\n RuntimeContext,\n MenuItemRawData,\n MenuRawData,\n RuntimeMenuItemRawData,\n RuntimeMenuRawData,\n RuntimeHelpers,\n} from \"./interfaces.js\";\nimport { loadDynamicMenuItems } from \"./loadDynamicMenuItems.js\";\n\nexport async function mergeMenu(\n menuList: MenuRawData[],\n runtimeContext: RuntimeContext,\n helpers: RuntimeHelpers\n): Promise<RuntimeMenuRawData | undefined> {\n const mainMenu = menuList.find((menu) => menu.type !== \"inject\");\n if (!mainMenu) {\n return undefined;\n }\n const validMenuList: MenuRawData[] = [];\n const injectWithMenus = new Map<string, MenuRawData[]>();\n const menuWithI18n = new WeakMap<MenuRawData, string>();\n\n for (const menu of menuList) {\n if (menu.i18n) {\n const menuI18nNamespace = `menu/${menu.menuId}~${menu.app[0].appId}+${\n (menu as { instanceId?: string }).instanceId\n }`;\n // Support any language in `menu.i18n`.\n Object.entries(menu.i18n).forEach(([lang, resources]) => {\n i18n.addResourceBundle(lang, menuI18nNamespace, resources);\n });\n menuWithI18n.set(menu, menuI18nNamespace);\n }\n }\n\n await Promise.all(\n menuList.map((menu) =>\n loadDynamicMenuItems(menu, runtimeContext, menuWithI18n, helpers)\n )\n );\n\n for (const menu of menuList) {\n if (menu.items?.length) {\n if (menu.type === \"inject\" && menu.injectMenuGroupId) {\n let injectingMenus = injectWithMenus.get(menu.injectMenuGroupId);\n if (!injectingMenus) {\n injectingMenus = [];\n injectWithMenus.set(menu.injectMenuGroupId, injectingMenus);\n }\n injectingMenus.push(menu);\n } else {\n validMenuList.push(menu);\n }\n }\n }\n\n return {\n ...mainMenu,\n items: validMenuList.flatMap(\n (menu) =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n processGroupInject(menu.items, menu, injectWithMenus, menuWithI18n)!\n ),\n [symbolMenuI18nNamespace]: menuWithI18n.get(mainMenu),\n [symbolOverrideApp]: mainMenu.overrideApp,\n };\n}\n\nfunction processGroupInject(\n items: MenuItemRawData[] | undefined,\n menu: MenuRawData,\n injectWithMenus: Map<string, MenuRawData[]>,\n menuWithI18n: WeakMap<MenuRawData, string>\n): RuntimeMenuItemRawData[] | undefined {\n return items?.map((item) => {\n const foundInjectingMenus =\n item.groupId && injectWithMenus.get(item.groupId);\n if (foundInjectingMenus) {\n // Each menu to be injected with should be injected only once.\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n injectWithMenus.delete(item.groupId!);\n }\n return {\n ...item,\n children: (\n processGroupInject(\n item.children,\n menu,\n injectWithMenus,\n menuWithI18n\n ) ?? ([] as RuntimeMenuItemRawData[])\n ).concat(\n foundInjectingMenus\n ? foundInjectingMenus.flatMap(\n (injectingMenu) =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n processGroupInject(\n injectingMenu.items,\n injectingMenu,\n injectWithMenus,\n menuWithI18n\n )!\n )\n : ([] as RuntimeMenuItemRawData[])\n ),\n [symbolAppId]: menu.app[0].appId,\n [symbolMenuI18nNamespace]: menuWithI18n.get(menu),\n [symbolOverrideApp]: menu.overrideApp,\n };\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
2
1
|
import { sortBy } from "lodash";
|
|
3
2
|
export function reorderMenu(menuData) {
|
|
4
3
|
menuData.items = reorderMenuItems(menuData.items);
|
|
5
4
|
}
|
|
6
5
|
function reorderMenuItems(list) {
|
|
7
|
-
return sortMenuItems(list).map(item =>
|
|
6
|
+
return sortMenuItems(list).map(item => ({
|
|
7
|
+
...item,
|
|
8
8
|
children: reorderMenuItems(item.children)
|
|
9
9
|
}));
|
|
10
10
|
}
|
|
11
11
|
function sortMenuItems(list) {
|
|
12
|
-
return sortBy(list, item =>
|
|
13
|
-
var _item$sort;
|
|
14
|
-
return (_item$sort = item.sort) !== null && _item$sort !== void 0 ? _item$sort : -Infinity;
|
|
15
|
-
});
|
|
12
|
+
return sortBy(list, item => item.sort ?? -Infinity);
|
|
16
13
|
}
|
|
17
14
|
//# sourceMappingURL=reorderMenuItems.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reorderMenuItems.js","names":["sortBy","reorderMenu","menuData","items","reorderMenuItems","list","sortMenuItems","map","item","
|
|
1
|
+
{"version":3,"file":"reorderMenuItems.js","names":["sortBy","reorderMenu","menuData","items","reorderMenuItems","list","sortMenuItems","map","item","children","sort","Infinity"],"sources":["../../../src/menu/reorderMenuItems.ts"],"sourcesContent":["import { sortBy } from \"lodash\";\nimport { MenuItemRawData, MenuRawData } from \"./interfaces.js\";\n\nexport function reorderMenu(menuData: MenuRawData): void {\n menuData.items = reorderMenuItems(menuData.items);\n}\n\nfunction reorderMenuItems(\n list: MenuItemRawData[] | undefined\n): MenuItemRawData[] {\n return sortMenuItems(list).map((item) => ({\n ...item,\n children: reorderMenuItems(item.children),\n }));\n}\n\nfunction sortMenuItems(list: MenuItemRawData[] | undefined): MenuItemRawData[] {\n return sortBy(list, (item) => item.sort ?? -Infinity);\n}\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,QAAQ;AAG/B,OAAO,SAASC,WAAWA,CAACC,QAAqB,EAAQ;EACvDA,QAAQ,CAACC,KAAK,GAAGC,gBAAgB,CAACF,QAAQ,CAACC,KAAK,CAAC;AACnD;AAEA,SAASC,gBAAgBA,CACvBC,IAAmC,EAChB;EACnB,OAAOC,aAAa,CAACD,IAAI,CAAC,CAACE,GAAG,CAAEC,IAAI,KAAM;IACxC,GAAGA,IAAI;IACPC,QAAQ,EAAEL,gBAAgB,CAACI,IAAI,CAACC,QAAQ;EAC1C,CAAC,CAAC,CAAC;AACL;AAEA,SAASH,aAAaA,CAACD,IAAmC,EAAqB;EAC7E,OAAOL,MAAM,CAACK,IAAI,EAAGG,IAAI,IAAKA,IAAI,CAACE,IAAI,IAAI,CAACC,QAAQ,CAAC;AACvD","ignoreList":[]}
|
|
@@ -22,19 +22,19 @@ export class MessageDispatcher {
|
|
|
22
22
|
_classPrivateFieldInitSpec(this, _channelPayloads, new Map());
|
|
23
23
|
}
|
|
24
24
|
subscribe(channel, payload) {
|
|
25
|
-
|
|
25
|
+
const stringifiedPayload = JSON.stringify(payload);
|
|
26
26
|
return _assertClassBrand(_MessageDispatcher_brand, this, _subOrUnsub).call(this, "sub", channel, payload, stringifiedPayload);
|
|
27
27
|
}
|
|
28
28
|
unsubscribe(channel) {
|
|
29
|
-
|
|
29
|
+
const stringifiedPayload = _classPrivateFieldGet(_channelPayloads, this).get(channel);
|
|
30
30
|
if (!stringifiedPayload) {
|
|
31
|
-
|
|
31
|
+
const msg = `The message channel to unsubscribe "${channel}" is not found`;
|
|
32
32
|
// eslint-disable-next-line no-console
|
|
33
33
|
console.error(msg);
|
|
34
34
|
return Promise.reject(new Error(msg));
|
|
35
35
|
}
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
const payload = JSON.parse(stringifiedPayload);
|
|
37
|
+
const result = _assertClassBrand(_MessageDispatcher_brand, this, _subOrUnsub).call(this, "unsub", channel, payload, stringifiedPayload);
|
|
38
38
|
_classPrivateFieldGet(_memoizedChannels, this).sub.delete(stringifiedPayload);
|
|
39
39
|
result.then(() => {
|
|
40
40
|
_classPrivateFieldGet(_channelPayloads, this).delete(channel);
|
|
@@ -42,8 +42,8 @@ export class MessageDispatcher {
|
|
|
42
42
|
return result;
|
|
43
43
|
}
|
|
44
44
|
onMessage(channel, listener) {
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
let stringifiedPayload = _classPrivateFieldGet(_channelPayloads, this).get(channel);
|
|
46
|
+
let warned = false;
|
|
47
47
|
_classPrivateGetter(_MessageDispatcher_brand, this, _get_ms).onMessage(response => {
|
|
48
48
|
if (!stringifiedPayload) {
|
|
49
49
|
stringifiedPayload = _classPrivateFieldGet(_channelPayloads, this).get(channel);
|
|
@@ -51,7 +51,7 @@ export class MessageDispatcher {
|
|
|
51
51
|
if (!stringifiedPayload) {
|
|
52
52
|
if (!warned) {
|
|
53
53
|
// eslint-disable-next-line no-console
|
|
54
|
-
console.error(
|
|
54
|
+
console.error(`Message channel: "${channel}" not found`);
|
|
55
55
|
warned = true;
|
|
56
56
|
}
|
|
57
57
|
return;
|
|
@@ -74,26 +74,26 @@ export class MessageDispatcher {
|
|
|
74
74
|
}
|
|
75
75
|
function _get_ms(_this) {
|
|
76
76
|
if (!_classPrivateFieldGet(_ms, _this)) {
|
|
77
|
-
|
|
78
|
-
|
|
77
|
+
const protocol = location.protocol === "https:" ? "wss:" : "ws:";
|
|
78
|
+
const url = `${protocol}//${window.location.host}${getBasePath()}api/websocket_service/v1/ws`;
|
|
79
79
|
_classPrivateFieldSet(_ms, _this, new MessageService(url));
|
|
80
80
|
}
|
|
81
81
|
return _classPrivateFieldGet(_ms, _this);
|
|
82
82
|
}
|
|
83
83
|
function _subOrUnsub(type, channel, payload, stringifiedPayload) {
|
|
84
|
-
|
|
84
|
+
const hit = _classPrivateFieldGet(_memoizedChannels, this)[type].get(stringifiedPayload);
|
|
85
85
|
if (hit) {
|
|
86
86
|
return hit;
|
|
87
87
|
}
|
|
88
|
-
|
|
88
|
+
const request = {
|
|
89
89
|
event: type === "sub" ? "TOPIC.SUB" : "TOPIC.UNSUB",
|
|
90
90
|
payload
|
|
91
91
|
};
|
|
92
|
-
|
|
93
|
-
|
|
92
|
+
const promise = new Promise((resolve, reject) => {
|
|
93
|
+
const identity = getIdentity(payload);
|
|
94
94
|
_classPrivateGetter(_MessageDispatcher_brand, this, _get_ms).onMessage(response => {
|
|
95
|
-
|
|
96
|
-
|
|
95
|
+
const isSuccess = response.event === (type === "sub" ? "TOPIC.SUB_SUCCESS" : "TOPIC.UNSUB_SUCCESS");
|
|
96
|
+
const isFailed = response.event === (type === "sub" ? "TOPIC.SUB_FAILED" : "TOPIC.UNSUB_FAILED");
|
|
97
97
|
if ((isSuccess || isFailed) &&
|
|
98
98
|
// Put this after event type checks, to prevent unnecessary
|
|
99
99
|
// JSON stringify.
|
|
@@ -110,7 +110,7 @@ function _subOrUnsub(type, channel, payload, stringifiedPayload) {
|
|
|
110
110
|
return promise;
|
|
111
111
|
}
|
|
112
112
|
function getIdentity(payload) {
|
|
113
|
-
|
|
113
|
+
const {
|
|
114
114
|
system,
|
|
115
115
|
topic
|
|
116
116
|
} = payload;
|
|
@@ -120,7 +120,7 @@ function getIdentity(payload) {
|
|
|
120
120
|
});
|
|
121
121
|
}
|
|
122
122
|
function matchMessageChannel(stringifiedPayload, responsePayload) {
|
|
123
|
-
|
|
123
|
+
const payload = JSON.parse(stringifiedPayload);
|
|
124
124
|
return payload.system === responsePayload.system && (
|
|
125
125
|
// Exact match
|
|
126
126
|
payload.topic === responsePayload.topic ||
|
|
@@ -128,6 +128,6 @@ function matchMessageChannel(stringifiedPayload, responsePayload) {
|
|
|
128
128
|
// For `ab.cd.*`:
|
|
129
129
|
// - Matches `ab.cd.r` or `ab.cd.x.yz`
|
|
130
130
|
// - DOES NOT match `ab.cd.x/yz` or `ab.x.cd` or `x.ab.cd.yz`
|
|
131
|
-
typeof payload.topic === "string" && payload.topic.includes("*") && new RegExp(
|
|
131
|
+
typeof payload.topic === "string" && payload.topic.includes("*") && new RegExp(`^${payload.topic.replace(/([^*]*)\*([^*]*)/g, (_m, p1, p2) => `${escapeRegExp(p1)}[^/]*${escapeRegExp(p2)}`)}$`).test(responsePayload.topic));
|
|
132
132
|
}
|
|
133
133
|
//# sourceMappingURL=MessageDispatcher.js.map
|