@next-core/easyops-runtime 0.6.24 → 0.6.26
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/flowApi/CollectContracts.js +1 -1
- package/dist/cjs/flowApi/CollectContracts.js.map +1 -1
- package/dist/cjs/menu/fetchMenuById.js +1 -0
- package/dist/cjs/menu/fetchMenuById.js.map +1 -1
- package/dist/cjs/websocket/MessageDispatcher.js +1 -1
- package/dist/cjs/websocket/MessageDispatcher.js.map +1 -1
- package/dist/esm/flowApi/CollectContracts.js +1 -1
- package/dist/esm/flowApi/CollectContracts.js.map +1 -1
- package/dist/esm/menu/fetchMenuById.js +1 -0
- package/dist/esm/menu/fetchMenuById.js.map +1 -1
- package/dist/esm/websocket/MessageDispatcher.js +1 -1
- package/dist/esm/websocket/MessageDispatcher.js.map +1 -1
- package/package.json +11 -11
|
@@ -10,7 +10,7 @@ exports.getContract = getContract;
|
|
|
10
10
|
const contractsMap = new Map();
|
|
11
11
|
const widgetContractMap = new Map();
|
|
12
12
|
const addContract = (contracts, map) => {
|
|
13
|
-
contracts === null || contracts === void 0
|
|
13
|
+
contracts === null || contracts === void 0 || contracts.forEach(contract => {
|
|
14
14
|
map.set(`${contract.namespaceId}.${contract.name}`, contract);
|
|
15
15
|
});
|
|
16
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollectContracts.js","names":["contractsMap","Map","widgetContractMap","addContract","contracts","map","forEach","contract","set","namespaceId","name","collectContract","collectWidgetContract","clearCollectWidgetContract","clear","getContract","get"],"sources":["../../../src/flowApi/CollectContracts.ts"],"sourcesContent":["import { Contract } from \"@next-core/types\";\n\nconst contractsMap: Map<string, Contract> = new Map();\nconst widgetContractMap: Map<string, Contract> = new Map();\n\nconst addContract = (\n contracts: Contract[] | undefined,\n map: Map<string, Contract>\n): void => {\n contracts?.forEach((contract) => {\n map.set(`${contract.namespaceId}.${contract.name}`, contract);\n });\n};\n\nexport function collectContract(contracts: Contract[] | undefined): void {\n addContract(contracts, contractsMap);\n}\n\nexport function collectWidgetContract(contracts: Contract[] | undefined): void {\n addContract(contracts, widgetContractMap);\n}\n\nexport function clearCollectWidgetContract(): void {\n widgetContractMap.clear();\n}\n\nexport function getContract(name: string): Contract | undefined {\n return contractsMap.get(name) || widgetContractMap.get(name);\n}\n"],"mappings":";;;;;;;;;AAEA,MAAMA,YAAmC,GAAG,IAAIC,GAAG,CAAC,CAAC;AACrD,MAAMC,iBAAwC,GAAG,IAAID,GAAG,CAAC,CAAC;AAE1D,MAAME,WAAW,GAAGA,CAClBC,SAAiC,EACjCC,GAA0B,KACjB;EACTD,SAAS,aAATA,SAAS,
|
|
1
|
+
{"version":3,"file":"CollectContracts.js","names":["contractsMap","Map","widgetContractMap","addContract","contracts","map","forEach","contract","set","namespaceId","name","collectContract","collectWidgetContract","clearCollectWidgetContract","clear","getContract","get"],"sources":["../../../src/flowApi/CollectContracts.ts"],"sourcesContent":["import { Contract } from \"@next-core/types\";\n\nconst contractsMap: Map<string, Contract> = new Map();\nconst widgetContractMap: Map<string, Contract> = new Map();\n\nconst addContract = (\n contracts: Contract[] | undefined,\n map: Map<string, Contract>\n): void => {\n contracts?.forEach((contract) => {\n map.set(`${contract.namespaceId}.${contract.name}`, contract);\n });\n};\n\nexport function collectContract(contracts: Contract[] | undefined): void {\n addContract(contracts, contractsMap);\n}\n\nexport function collectWidgetContract(contracts: Contract[] | undefined): void {\n addContract(contracts, widgetContractMap);\n}\n\nexport function clearCollectWidgetContract(): void {\n widgetContractMap.clear();\n}\n\nexport function getContract(name: string): Contract | undefined {\n return contractsMap.get(name) || widgetContractMap.get(name);\n}\n"],"mappings":";;;;;;;;;AAEA,MAAMA,YAAmC,GAAG,IAAIC,GAAG,CAAC,CAAC;AACrD,MAAMC,iBAAwC,GAAG,IAAID,GAAG,CAAC,CAAC;AAE1D,MAAME,WAAW,GAAGA,CAClBC,SAAiC,EACjCC,GAA0B,KACjB;EACTD,SAAS,aAATA,SAAS,eAATA,SAAS,CAAEE,OAAO,CAAEC,QAAQ,IAAK;IAC/BF,GAAG,CAACG,GAAG,CAAE,GAAED,QAAQ,CAACE,WAAY,IAAGF,QAAQ,CAACG,IAAK,EAAC,EAAEH,QAAQ,CAAC;EAC/D,CAAC,CAAC;AACJ,CAAC;AAEM,SAASI,eAAeA,CAACP,SAAiC,EAAQ;EACvED,WAAW,CAACC,SAAS,EAAEJ,YAAY,CAAC;AACtC;AAEO,SAASY,qBAAqBA,CAACR,SAAiC,EAAQ;EAC7ED,WAAW,CAACC,SAAS,EAAEF,iBAAiB,CAAC;AAC3C;AAEO,SAASW,0BAA0BA,CAAA,EAAS;EACjDX,iBAAiB,CAACY,KAAK,CAAC,CAAC;AAC3B;AAEO,SAASC,WAAWA,CAACL,IAAY,EAAwB;EAC9D,OAAOV,YAAY,CAACgB,GAAG,CAACN,IAAI,CAAC,IAAIR,iBAAiB,CAACc,GAAG,CAACN,IAAI,CAAC;AAC9D"}
|
|
@@ -95,6 +95,7 @@ async function _fetchMenuById(menuId, runtimeContext, helpers) {
|
|
|
95
95
|
};
|
|
96
96
|
delete newRuntimeContext.tplStateStoreId;
|
|
97
97
|
delete newRuntimeContext.forEachItem;
|
|
98
|
+
delete newRuntimeContext.forEachIndex;
|
|
98
99
|
const rootAppId = app[0].appId;
|
|
99
100
|
const [computedMenuData, computedMenuItems] = await Promise.all([(0, _computeMenuData.computeMenuData)(restMenuData, rootAppId, newRuntimeContext, helpers), (0, _computeMenuData.computeMenuItems)(items, newRuntimeContext, helpers)]);
|
|
100
101
|
const finalMenuData = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchMenuById.js","names":["_cmdbSdk","require","_microAppSdk","_lodash","_runtime","_mergeMenu","_reorderMenuItems","_computeMenuData","_fetchMenuTitle","_getMenusOfStandaloneApp","_checkPermissions","menuPromises","Map","menuCache","walkMenuItems","menuItems","filter","checkIfOfComputed","map","item","children","type","title","text","childLayout","items","length","icon","defaultExpanded","getMenuById","menuId","get","fetchMenuById","runtimeContext","helpers","promise","_fetchMenuById","menuList","window","STANDALONE_MICRO_APPS","getMenusOfStandaloneApp","app","id","flags","InstalledMicroAppApi_getMenusInfo","menuObjectId","menus","InstanceApi_postSearch","page","page_size","fields","link","titleDataSource","defaultCollapsed","defaultCollapsedBreakpoint","injectMenuGroupId","dynamicItems","itemsResolve","i18n","query","$eq","$size","$gt","list","menuData","mergeMenu","Error","reorderMenu","restMenuData","newRuntimeContext","pendingPermissionsPreCheck","preCheckPermissionsForAny","tplStateStoreId","forEachItem","rootAppId","appId","computedMenuData","computedMenuItems","Promise","all","computeMenuData","computeMenuItems","finalMenuData","fetchMenuTitle","pick","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 { 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} 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, unknown>();\n\nfunction walkMenuItems(menuItems: RuntimeMenuItemRawData[]): unknown[] {\n return menuItems?.filter(checkIfOfComputed).map((item) => {\n const children = walkMenuItems(item.children!);\n return item.type === \"group\"\n ? {\n type: \"group\",\n title: item.text,\n childLayout: item.childLayout,\n items: children,\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 : item;\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 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 = {\n title: await fetchMenuTitle(computedMenuData),\n ...pick(computedMenuData, [\n \"icon\",\n \"link\",\n \"defaultCollapsed\",\n \"defaultCollapsedBreakpoint\",\n ]),\n menuItems: walkMenuItems(computedMenuItems),\n };\n\n // Todo(steve): reconsider the menu cache strategy\n menuCache.set(menuId, finalMenuData);\n}\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"fetchMenuById.js","names":["_cmdbSdk","require","_microAppSdk","_lodash","_runtime","_mergeMenu","_reorderMenuItems","_computeMenuData","_fetchMenuTitle","_getMenusOfStandaloneApp","_checkPermissions","menuPromises","Map","menuCache","walkMenuItems","menuItems","filter","checkIfOfComputed","map","item","children","type","title","text","childLayout","items","length","icon","defaultExpanded","getMenuById","menuId","get","fetchMenuById","runtimeContext","helpers","promise","_fetchMenuById","menuList","window","STANDALONE_MICRO_APPS","getMenusOfStandaloneApp","app","id","flags","InstalledMicroAppApi_getMenusInfo","menuObjectId","menus","InstanceApi_postSearch","page","page_size","fields","link","titleDataSource","defaultCollapsed","defaultCollapsedBreakpoint","injectMenuGroupId","dynamicItems","itemsResolve","i18n","query","$eq","$size","$gt","list","menuData","mergeMenu","Error","reorderMenu","restMenuData","newRuntimeContext","pendingPermissionsPreCheck","preCheckPermissionsForAny","tplStateStoreId","forEachItem","forEachIndex","rootAppId","appId","computedMenuData","computedMenuItems","Promise","all","computeMenuData","computeMenuItems","finalMenuData","fetchMenuTitle","pick","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 { 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} 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, unknown>();\n\nfunction walkMenuItems(menuItems: RuntimeMenuItemRawData[]): unknown[] {\n return menuItems?.filter(checkIfOfComputed).map((item) => {\n const children = walkMenuItems(item.children!);\n return item.type === \"group\"\n ? {\n type: \"group\",\n title: item.text,\n childLayout: item.childLayout,\n items: children,\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 : item;\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 = {\n title: await fetchMenuTitle(computedMenuData),\n ...pick(computedMenuData, [\n \"icon\",\n \"link\",\n \"defaultCollapsed\",\n \"defaultCollapsedBreakpoint\",\n ]),\n menuItems: walkMenuItems(computedMenuItems),\n };\n\n // Todo(steve): reconsider the menu cache strategy\n menuCache.set(menuId, finalMenuData);\n}\n"],"mappings":"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"}
|
|
@@ -82,7 +82,7 @@ class MessageDispatcher {
|
|
|
82
82
|
(0, _classPrivateFieldGet3.default)(this, _memoizedChannels).sub.clear();
|
|
83
83
|
(0, _classPrivateFieldGet3.default)(this, _memoizedChannels).unsub.clear();
|
|
84
84
|
(0, _classPrivateFieldGet3.default)(this, _channelPayloads).clear();
|
|
85
|
-
(_classPrivateFieldGet2 = (0, _classPrivateFieldGet3.default)(this, _ms)) === null || _classPrivateFieldGet2 === void 0
|
|
85
|
+
(_classPrivateFieldGet2 = (0, _classPrivateFieldGet3.default)(this, _ms)) === null || _classPrivateFieldGet2 === void 0 || _classPrivateFieldGet2.reset();
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
exports.MessageDispatcher = MessageDispatcher;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageDispatcher.js","names":["_runtime","require","_lodash","_MessageService","_ms","WeakMap","_memoizedChannels","_channelPayloads","_ms2","_subOrUnsub","WeakSet","MessageDispatcher","constructor","_classPrivateMethodInitSpec2","default","_classPrivateFieldInitSpec2","get","_get_ms","set","writable","value","sub","Map","unsub","subscribe","channel","payload","stringifiedPayload","JSON","stringify","_classPrivateMethodGet2","_subOrUnsub2","call","unsubscribe","_classPrivateFieldGet3","msg","console","error","Promise","reject","Error","parse","result","delete","then","onMessage","listener","response","event","matchMessageChannel","message","onClose","reset","_classPrivateFieldGet2","clear","exports","protocol","location","url","window","host","getBasePath","_classPrivateFieldSet2","MessageService","type","hit","request","promise","resolve","identity","getIdentity","isSuccess","isFailed","send","system","topic","responsePayload","includes","RegExp","replace","m","p1","p2","escapeRegExp","test"],"sources":["../../../src/websocket/MessageDispatcher.ts"],"sourcesContent":["import { getBasePath } from \"@next-core/runtime\";\nimport { escapeRegExp } from \"lodash\";\nimport {\n MessageService,\n type MessageListener,\n CloseListener,\n} from \"./MessageService.js\";\n\ninterface MessageResponse {\n event:\n | \"TOPIC.SUB_SUCCESS\"\n | \"TOPIC.SUB_FAILED\"\n | \"TOPIC.UNSUB_SUCCESS\"\n | \"TOPIC.UNSUB_FAILED\"\n | \"MESSAGE.PUSH\";\n payload: MessagePayload;\n}\n\ninterface MessagePayload {\n source?: string;\n system: string;\n topic: string;\n message?: unknown;\n}\n\nexport class MessageDispatcher {\n #_ms: MessageService | undefined;\n #memoizedChannels = {\n sub: new Map<string, Promise<unknown>>(),\n unsub: new Map<string, Promise<unknown>>(),\n };\n #channelPayloads = new Map<string, string>();\n\n get #ms(): MessageService {\n if (!this.#_ms) {\n const protocol = location.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n const url = `${protocol}//${\n window.location.host\n }${getBasePath()}api/websocket_service/v1/ws`;\n this.#_ms = new MessageService(url);\n }\n return this.#_ms;\n }\n\n subscribe(channel: string, payload: MessagePayload): Promise<unknown> {\n const stringifiedPayload = JSON.stringify(payload);\n return this.#subOrUnsub(\"sub\", channel, payload, stringifiedPayload);\n }\n\n unsubscribe(channel: string): Promise<unknown> {\n const stringifiedPayload = this.#channelPayloads.get(channel);\n if (!stringifiedPayload) {\n const msg = `The message channel to unsubscribe \"${channel}\" is not found`;\n // eslint-disable-next-line no-console\n console.error(msg);\n return Promise.reject(new Error(msg));\n }\n\n const payload = JSON.parse(stringifiedPayload);\n const result = this.#subOrUnsub(\n \"unsub\",\n channel,\n payload,\n stringifiedPayload\n );\n\n this.#memoizedChannels.sub.delete(stringifiedPayload);\n\n result.then(() => {\n this.#channelPayloads.delete(channel);\n });\n\n return result;\n }\n\n onMessage(channel: string, listener: MessageListener): void {\n const stringifiedPayload = this.#channelPayloads.get(channel);\n if (!stringifiedPayload) {\n // eslint-disable-next-line no-console\n console.error(`Message channel: \"${channel}\" not found`);\n return;\n }\n\n this.#ms.onMessage<MessageResponse>((response) => {\n if (\n response.event === \"MESSAGE.PUSH\" &&\n matchMessageChannel(stringifiedPayload, response.payload)\n ) {\n listener(response.payload.message);\n }\n });\n }\n\n onClose(listener: CloseListener): void {\n this.#ms.onClose(listener);\n }\n\n reset(): void {\n this.#memoizedChannels.sub.clear();\n this.#memoizedChannels.unsub.clear();\n this.#channelPayloads.clear();\n this.#_ms?.reset();\n }\n\n #subOrUnsub(\n type: \"sub\" | \"unsub\",\n channel: string,\n payload: MessagePayload,\n stringifiedPayload: string\n ): Promise<unknown> {\n const hit = this.#memoizedChannels[type].get(stringifiedPayload);\n if (hit) {\n return hit;\n }\n const request = {\n event: type === \"sub\" ? \"TOPIC.SUB\" : \"TOPIC.UNSUB\",\n payload,\n };\n const promise = new Promise((resolve, reject) => {\n const identity = getIdentity(payload);\n this.#ms.onMessage<MessageResponse>((response) => {\n const isSuccess =\n response.event ===\n (type === \"sub\" ? \"TOPIC.SUB_SUCCESS\" : \"TOPIC.UNSUB_SUCCESS\");\n const isFailed =\n response.event ===\n (type === \"sub\" ? \"TOPIC.SUB_FAILED\" : \"TOPIC.UNSUB_FAILED\");\n if (\n (isSuccess || isFailed) &&\n // Put this after event type checks, to prevent unnecessary\n // JSON stringify.\n identity === getIdentity(response.payload)\n ) {\n (isSuccess ? resolve : reject)(response);\n }\n });\n this.#ms.send(request);\n });\n\n if (type === \"sub\") {\n this.#channelPayloads.set(channel, stringifiedPayload);\n }\n this.#memoizedChannels[type].set(stringifiedPayload, promise);\n return promise;\n }\n}\n\nfunction getIdentity(payload: MessagePayload) {\n const { system, topic } = payload;\n return JSON.stringify({ system, topic });\n}\n\nfunction matchMessageChannel(\n stringifiedPayload: string,\n responsePayload: MessagePayload\n): boolean {\n const payload = JSON.parse(stringifiedPayload) as MessagePayload;\n return (\n payload.system === responsePayload.system &&\n // Exact match\n (payload.topic === responsePayload.topic ||\n // Wildcards match\n // For `ab.cd.*`:\n // - Matches `ab.cd.r` or `ab.cd.x.yz`\n // - DOES NOT match `ab.cd.x/yz` or `ab.x.cd` or `x.ab.cd.yz`\n (typeof payload.topic === \"string\" &&\n payload.topic.includes(\"*\") &&\n new RegExp(\n `^${payload.topic.replace(\n /([^*]*)\\*([^*]*)/g,\n (m, p1, p2) => `${escapeRegExp(p1)}[^/]*${escapeRegExp(p2)}`\n )}$`\n ).test(responsePayload.topic)))\n );\n}\n"],"mappings":";;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AAI6B,IAAAG,GAAA,oBAAAC,OAAA;AAAA,IAAAC,iBAAA,oBAAAD,OAAA;AAAA,IAAAE,gBAAA,oBAAAF,OAAA;AAAA,IAAAG,IAAA,oBAAAH,OAAA;AAAA,IAAAI,WAAA,oBAAAC,OAAA;AAmBtB,MAAMC,iBAAiB,CAAC;EAAAC,YAAA;IAAA,IAAAC,4BAAA,CAAAC,OAAA,QAAAL,WAAA;IAAA,IAAAM,2BAAA,CAAAD,OAAA,QAAAN,IAAA;MAAAQ,GAAA,EAAAC,OAAA;MAAAC,GAAA;IAAA;IAAA,IAAAH,2BAAA,CAAAD,OAAA,QAAAV,GAAA;MAAAe,QAAA;MAAAC,KAAA;IAAA;IAAA,IAAAL,2BAAA,CAAAD,OAAA,QAAAR,iBAAA;MAAAa,QAAA;MAAAC,KAAA,EAET;QAClBC,GAAG,EAAE,IAAIC,GAAG,CAA2B,CAAC;QACxCC,KAAK,EAAE,IAAID,GAAG,CAA2B;MAC3C;IAAC;IAAA,IAAAP,2BAAA,CAAAD,OAAA,QAAAP,gBAAA;MAAAY,QAAA;MAAAC,KAAA,EACkB,IAAIE,GAAG,CAAiB;IAAC;EAAA;EAa5CE,SAASA,CAACC,OAAe,EAAEC,OAAuB,EAAoB;IACpE,MAAMC,kBAAkB,GAAGC,IAAI,CAACC,SAAS,CAACH,OAAO,CAAC;IAClD,WAAAI,uBAAA,CAAAhB,OAAA,EAAO,IAAI,EAAAL,WAAA,EAAAsB,YAAA,EAAAC,IAAA,CAAJ,IAAI,EAAa,KAAK,EAAEP,OAAO,EAAEC,OAAO,EAAEC,kBAAkB;EACrE;EAEAM,WAAWA,CAACR,OAAe,EAAoB;IAC7C,MAAME,kBAAkB,GAAG,IAAAO,sBAAA,CAAApB,OAAA,MAAI,EAAAP,gBAAA,EAAkBS,GAAG,CAACS,OAAO,CAAC;IAC7D,IAAI,CAACE,kBAAkB,EAAE;MACvB,MAAMQ,GAAG,GAAI,uCAAsCV,OAAQ,gBAAe;MAC1E;MACAW,OAAO,CAACC,KAAK,CAACF,GAAG,CAAC;MAClB,OAAOG,OAAO,CAACC,MAAM,CAAC,IAAIC,KAAK,CAACL,GAAG,CAAC,CAAC;IACvC;IAEA,MAAMT,OAAO,GAAGE,IAAI,CAACa,KAAK,CAACd,kBAAkB,CAAC;IAC9C,MAAMe,MAAM,OAAAZ,uBAAA,CAAAhB,OAAA,EAAG,IAAI,EAAAL,WAAA,EAAAsB,YAAA,EAAAC,IAAA,CAAJ,IAAI,EACjB,OAAO,EACPP,OAAO,EACPC,OAAO,EACPC,kBAAkB,CACnB;IAED,IAAAO,sBAAA,CAAApB,OAAA,MAAI,EAAAR,iBAAA,EAAmBe,GAAG,CAACsB,MAAM,CAAChB,kBAAkB,CAAC;IAErDe,MAAM,CAACE,IAAI,CAAC,MAAM;MAChB,IAAAV,sBAAA,CAAApB,OAAA,MAAI,EAAAP,gBAAA,EAAkBoC,MAAM,CAAClB,OAAO,CAAC;IACvC,CAAC,CAAC;IAEF,OAAOiB,MAAM;EACf;EAEAG,SAASA,CAACpB,OAAe,EAAEqB,QAAyB,EAAQ;IAC1D,MAAMnB,kBAAkB,GAAG,IAAAO,sBAAA,CAAApB,OAAA,MAAI,EAAAP,gBAAA,EAAkBS,GAAG,CAACS,OAAO,CAAC;IAC7D,IAAI,CAACE,kBAAkB,EAAE;MACvB;MACAS,OAAO,CAACC,KAAK,CAAE,qBAAoBZ,OAAQ,aAAY,CAAC;MACxD;IACF;IAEA,IAAAS,sBAAA,CAAApB,OAAA,MAAI,EAAAN,IAAA,EAAKqC,SAAS,CAAmBE,QAAQ,IAAK;MAChD,IACEA,QAAQ,CAACC,KAAK,KAAK,cAAc,IACjCC,mBAAmB,CAACtB,kBAAkB,EAAEoB,QAAQ,CAACrB,OAAO,CAAC,EACzD;QACAoB,QAAQ,CAACC,QAAQ,CAACrB,OAAO,CAACwB,OAAO,CAAC;MACpC;IACF,CAAC,CAAC;EACJ;EAEAC,OAAOA,CAACL,QAAuB,EAAQ;IACrC,IAAAZ,sBAAA,CAAApB,OAAA,MAAI,EAAAN,IAAA,EAAK2C,OAAO,CAACL,QAAQ,CAAC;EAC5B;EAEAM,KAAKA,CAAA,EAAS;IAAA,IAAAC,sBAAA;IACZ,IAAAnB,sBAAA,CAAApB,OAAA,MAAI,EAAAR,iBAAA,EAAmBe,GAAG,CAACiC,KAAK,CAAC,CAAC;IAClC,IAAApB,sBAAA,CAAApB,OAAA,MAAI,EAAAR,iBAAA,EAAmBiB,KAAK,CAAC+B,KAAK,CAAC,CAAC;IACpC,IAAApB,sBAAA,CAAApB,OAAA,MAAI,EAAAP,gBAAA,EAAkB+C,KAAK,CAAC,CAAC;IAC7B,CAAAD,sBAAA,OAAAnB,sBAAA,CAAApB,OAAA,MAAI,EAAAV,GAAA,eAAAiD,sBAAA,uBAAJA,sBAAA,CAAWD,KAAK,CAAC,CAAC;EACpB;AA2CF;AAACG,OAAA,CAAA5C,iBAAA,GAAAA,iBAAA;AAAA,SAAAM,QAAA,EAhH2B;EACxB,IAAI,KAAAiB,sBAAA,CAAApB,OAAA,EAAC,IAAI,EAAAV,GAAA,CAAK,EAAE;IACd,MAAMoD,QAAQ,GAAGC,QAAQ,CAACD,QAAQ,KAAK,QAAQ,GAAG,MAAM,GAAG,KAAK;IAChE,MAAME,GAAG,GAAI,GAAEF,QAAS,KACtBG,MAAM,CAACF,QAAQ,CAACG,IACjB,GAAE,IAAAC,oBAAW,EAAC,CAAE,6BAA4B;IAC7C,IAAAC,sBAAA,CAAAhD,OAAA,MAAI,EAAAV,GAAA,EAAQ,IAAI2D,8BAAc,CAACL,GAAG,CAAC;EACrC;EACA,WAAAxB,sBAAA,CAAApB,OAAA,EAAO,IAAI,EAAAV,GAAA;AACb;AAAC,SAAA2B,aA+DCiC,IAAqB,EACrBvC,OAAe,EACfC,OAAuB,EACvBC,kBAA0B,EACR;EAClB,MAAMsC,GAAG,GAAG,IAAA/B,sBAAA,CAAApB,OAAA,MAAI,EAAAR,iBAAA,EAAmB0D,IAAI,CAAC,CAAChD,GAAG,CAACW,kBAAkB,CAAC;EAChE,IAAIsC,GAAG,EAAE;IACP,OAAOA,GAAG;EACZ;EACA,MAAMC,OAAO,GAAG;IACdlB,KAAK,EAAEgB,IAAI,KAAK,KAAK,GAAG,WAAW,GAAG,aAAa;IACnDtC;EACF,CAAC;EACD,MAAMyC,OAAO,GAAG,IAAI7B,OAAO,CAAC,CAAC8B,OAAO,EAAE7B,MAAM,KAAK;IAC/C,MAAM8B,QAAQ,GAAGC,WAAW,CAAC5C,OAAO,CAAC;IACrC,IAAAQ,sBAAA,CAAApB,OAAA,MAAI,EAAAN,IAAA,EAAKqC,SAAS,CAAmBE,QAAQ,IAAK;MAChD,MAAMwB,SAAS,GACbxB,QAAQ,CAACC,KAAK,MACbgB,IAAI,KAAK,KAAK,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;MAChE,MAAMQ,QAAQ,GACZzB,QAAQ,CAACC,KAAK,MACbgB,IAAI,KAAK,KAAK,GAAG,kBAAkB,GAAG,oBAAoB,CAAC;MAC9D,IACE,CAACO,SAAS,IAAIC,QAAQ;MACtB;MACA;MACAH,QAAQ,KAAKC,WAAW,CAACvB,QAAQ,CAACrB,OAAO,CAAC,EAC1C;QACA,CAAC6C,SAAS,GAAGH,OAAO,GAAG7B,MAAM,EAAEQ,QAAQ,CAAC;MAC1C;IACF,CAAC,CAAC;IACF,IAAAb,sBAAA,CAAApB,OAAA,MAAI,EAAAN,IAAA,EAAKiE,IAAI,CAACP,OAAO,CAAC;EACxB,CAAC,CAAC;EAEF,IAAIF,IAAI,KAAK,KAAK,EAAE;IAClB,IAAA9B,sBAAA,CAAApB,OAAA,MAAI,EAAAP,gBAAA,EAAkBW,GAAG,CAACO,OAAO,EAAEE,kBAAkB,CAAC;EACxD;EACA,IAAAO,sBAAA,CAAApB,OAAA,MAAI,EAAAR,iBAAA,EAAmB0D,IAAI,CAAC,CAAC9C,GAAG,CAACS,kBAAkB,EAAEwC,OAAO,CAAC;EAC7D,OAAOA,OAAO;AAChB;AAGF,SAASG,WAAWA,CAAC5C,OAAuB,EAAE;EAC5C,MAAM;IAAEgD,MAAM;IAAEC;EAAM,CAAC,GAAGjD,OAAO;EACjC,OAAOE,IAAI,CAACC,SAAS,CAAC;IAAE6C,MAAM;IAAEC;EAAM,CAAC,CAAC;AAC1C;AAEA,SAAS1B,mBAAmBA,CAC1BtB,kBAA0B,EAC1BiD,eAA+B,EACtB;EACT,MAAMlD,OAAO,GAAGE,IAAI,CAACa,KAAK,CAACd,kBAAkB,CAAmB;EAChE,OACED,OAAO,CAACgD,MAAM,KAAKE,eAAe,CAACF,MAAM;EACzC;EACChD,OAAO,CAACiD,KAAK,KAAKC,eAAe,CAACD,KAAK;EACtC;EACA;EACA;EACA;EACC,OAAOjD,OAAO,CAACiD,KAAK,KAAK,QAAQ,IAChCjD,OAAO,CAACiD,KAAK,CAACE,QAAQ,CAAC,GAAG,CAAC,IAC3B,IAAIC,MAAM,CACP,IAAGpD,OAAO,CAACiD,KAAK,CAACI,OAAO,CACvB,mBAAmB,EACnB,CAACC,CAAC,EAAEC,EAAE,EAAEC,EAAE,KAAM,GAAE,IAAAC,oBAAY,EAACF,EAAE,CAAE,QAAO,IAAAE,oBAAY,EAACD,EAAE,CAAE,EAC7D,CAAE,GACJ,CAAC,CAACE,IAAI,CAACR,eAAe,CAACD,KAAK,CAAE,CAAC;AAEvC"}
|
|
1
|
+
{"version":3,"file":"MessageDispatcher.js","names":["_runtime","require","_lodash","_MessageService","_ms","WeakMap","_memoizedChannels","_channelPayloads","_ms2","_subOrUnsub","WeakSet","MessageDispatcher","constructor","_classPrivateMethodInitSpec2","default","_classPrivateFieldInitSpec2","get","_get_ms","set","writable","value","sub","Map","unsub","subscribe","channel","payload","stringifiedPayload","JSON","stringify","_classPrivateMethodGet2","_subOrUnsub2","call","unsubscribe","_classPrivateFieldGet3","msg","console","error","Promise","reject","Error","parse","result","delete","then","onMessage","listener","response","event","matchMessageChannel","message","onClose","reset","_classPrivateFieldGet2","clear","exports","protocol","location","url","window","host","getBasePath","_classPrivateFieldSet2","MessageService","type","hit","request","promise","resolve","identity","getIdentity","isSuccess","isFailed","send","system","topic","responsePayload","includes","RegExp","replace","m","p1","p2","escapeRegExp","test"],"sources":["../../../src/websocket/MessageDispatcher.ts"],"sourcesContent":["import { getBasePath } from \"@next-core/runtime\";\nimport { escapeRegExp } from \"lodash\";\nimport {\n MessageService,\n type MessageListener,\n CloseListener,\n} from \"./MessageService.js\";\n\ninterface MessageResponse {\n event:\n | \"TOPIC.SUB_SUCCESS\"\n | \"TOPIC.SUB_FAILED\"\n | \"TOPIC.UNSUB_SUCCESS\"\n | \"TOPIC.UNSUB_FAILED\"\n | \"MESSAGE.PUSH\";\n payload: MessagePayload;\n}\n\ninterface MessagePayload {\n source?: string;\n system: string;\n topic: string;\n message?: unknown;\n}\n\nexport class MessageDispatcher {\n #_ms: MessageService | undefined;\n #memoizedChannels = {\n sub: new Map<string, Promise<unknown>>(),\n unsub: new Map<string, Promise<unknown>>(),\n };\n #channelPayloads = new Map<string, string>();\n\n get #ms(): MessageService {\n if (!this.#_ms) {\n const protocol = location.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n const url = `${protocol}//${\n window.location.host\n }${getBasePath()}api/websocket_service/v1/ws`;\n this.#_ms = new MessageService(url);\n }\n return this.#_ms;\n }\n\n subscribe(channel: string, payload: MessagePayload): Promise<unknown> {\n const stringifiedPayload = JSON.stringify(payload);\n return this.#subOrUnsub(\"sub\", channel, payload, stringifiedPayload);\n }\n\n unsubscribe(channel: string): Promise<unknown> {\n const stringifiedPayload = this.#channelPayloads.get(channel);\n if (!stringifiedPayload) {\n const msg = `The message channel to unsubscribe \"${channel}\" is not found`;\n // eslint-disable-next-line no-console\n console.error(msg);\n return Promise.reject(new Error(msg));\n }\n\n const payload = JSON.parse(stringifiedPayload);\n const result = this.#subOrUnsub(\n \"unsub\",\n channel,\n payload,\n stringifiedPayload\n );\n\n this.#memoizedChannels.sub.delete(stringifiedPayload);\n\n result.then(() => {\n this.#channelPayloads.delete(channel);\n });\n\n return result;\n }\n\n onMessage(channel: string, listener: MessageListener): void {\n const stringifiedPayload = this.#channelPayloads.get(channel);\n if (!stringifiedPayload) {\n // eslint-disable-next-line no-console\n console.error(`Message channel: \"${channel}\" not found`);\n return;\n }\n\n this.#ms.onMessage<MessageResponse>((response) => {\n if (\n response.event === \"MESSAGE.PUSH\" &&\n matchMessageChannel(stringifiedPayload, response.payload)\n ) {\n listener(response.payload.message);\n }\n });\n }\n\n onClose(listener: CloseListener): void {\n this.#ms.onClose(listener);\n }\n\n reset(): void {\n this.#memoizedChannels.sub.clear();\n this.#memoizedChannels.unsub.clear();\n this.#channelPayloads.clear();\n this.#_ms?.reset();\n }\n\n #subOrUnsub(\n type: \"sub\" | \"unsub\",\n channel: string,\n payload: MessagePayload,\n stringifiedPayload: string\n ): Promise<unknown> {\n const hit = this.#memoizedChannels[type].get(stringifiedPayload);\n if (hit) {\n return hit;\n }\n const request = {\n event: type === \"sub\" ? \"TOPIC.SUB\" : \"TOPIC.UNSUB\",\n payload,\n };\n const promise = new Promise((resolve, reject) => {\n const identity = getIdentity(payload);\n this.#ms.onMessage<MessageResponse>((response) => {\n const isSuccess =\n response.event ===\n (type === \"sub\" ? \"TOPIC.SUB_SUCCESS\" : \"TOPIC.UNSUB_SUCCESS\");\n const isFailed =\n response.event ===\n (type === \"sub\" ? \"TOPIC.SUB_FAILED\" : \"TOPIC.UNSUB_FAILED\");\n if (\n (isSuccess || isFailed) &&\n // Put this after event type checks, to prevent unnecessary\n // JSON stringify.\n identity === getIdentity(response.payload)\n ) {\n (isSuccess ? resolve : reject)(response);\n }\n });\n this.#ms.send(request);\n });\n\n if (type === \"sub\") {\n this.#channelPayloads.set(channel, stringifiedPayload);\n }\n this.#memoizedChannels[type].set(stringifiedPayload, promise);\n return promise;\n }\n}\n\nfunction getIdentity(payload: MessagePayload) {\n const { system, topic } = payload;\n return JSON.stringify({ system, topic });\n}\n\nfunction matchMessageChannel(\n stringifiedPayload: string,\n responsePayload: MessagePayload\n): boolean {\n const payload = JSON.parse(stringifiedPayload) as MessagePayload;\n return (\n payload.system === responsePayload.system &&\n // Exact match\n (payload.topic === responsePayload.topic ||\n // Wildcards match\n // For `ab.cd.*`:\n // - Matches `ab.cd.r` or `ab.cd.x.yz`\n // - DOES NOT match `ab.cd.x/yz` or `ab.x.cd` or `x.ab.cd.yz`\n (typeof payload.topic === \"string\" &&\n payload.topic.includes(\"*\") &&\n new RegExp(\n `^${payload.topic.replace(\n /([^*]*)\\*([^*]*)/g,\n (m, p1, p2) => `${escapeRegExp(p1)}[^/]*${escapeRegExp(p2)}`\n )}$`\n ).test(responsePayload.topic)))\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var contractsMap = new Map();
|
|
2
2
|
var widgetContractMap = new Map();
|
|
3
3
|
var addContract = (contracts, map) => {
|
|
4
|
-
contracts === null || contracts === void 0
|
|
4
|
+
contracts === null || contracts === void 0 || contracts.forEach(contract => {
|
|
5
5
|
map.set("".concat(contract.namespaceId, ".").concat(contract.name), contract);
|
|
6
6
|
});
|
|
7
7
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollectContracts.js","names":["contractsMap","Map","widgetContractMap","addContract","contracts","map","forEach","contract","set","concat","namespaceId","name","collectContract","collectWidgetContract","clearCollectWidgetContract","clear","getContract","get"],"sources":["../../../src/flowApi/CollectContracts.ts"],"sourcesContent":["import { Contract } from \"@next-core/types\";\n\nconst contractsMap: Map<string, Contract> = new Map();\nconst widgetContractMap: Map<string, Contract> = new Map();\n\nconst addContract = (\n contracts: Contract[] | undefined,\n map: Map<string, Contract>\n): void => {\n contracts?.forEach((contract) => {\n map.set(`${contract.namespaceId}.${contract.name}`, contract);\n });\n};\n\nexport function collectContract(contracts: Contract[] | undefined): void {\n addContract(contracts, contractsMap);\n}\n\nexport function collectWidgetContract(contracts: Contract[] | undefined): void {\n addContract(contracts, widgetContractMap);\n}\n\nexport function clearCollectWidgetContract(): void {\n widgetContractMap.clear();\n}\n\nexport function getContract(name: string): Contract | undefined {\n return contractsMap.get(name) || widgetContractMap.get(name);\n}\n"],"mappings":"AAEA,IAAMA,YAAmC,GAAG,IAAIC,GAAG,CAAC,CAAC;AACrD,IAAMC,iBAAwC,GAAG,IAAID,GAAG,CAAC,CAAC;AAE1D,IAAME,WAAW,GAAGA,CAClBC,SAAiC,EACjCC,GAA0B,KACjB;EACTD,SAAS,aAATA,SAAS,
|
|
1
|
+
{"version":3,"file":"CollectContracts.js","names":["contractsMap","Map","widgetContractMap","addContract","contracts","map","forEach","contract","set","concat","namespaceId","name","collectContract","collectWidgetContract","clearCollectWidgetContract","clear","getContract","get"],"sources":["../../../src/flowApi/CollectContracts.ts"],"sourcesContent":["import { Contract } from \"@next-core/types\";\n\nconst contractsMap: Map<string, Contract> = new Map();\nconst widgetContractMap: Map<string, Contract> = new Map();\n\nconst addContract = (\n contracts: Contract[] | undefined,\n map: Map<string, Contract>\n): void => {\n contracts?.forEach((contract) => {\n map.set(`${contract.namespaceId}.${contract.name}`, contract);\n });\n};\n\nexport function collectContract(contracts: Contract[] | undefined): void {\n addContract(contracts, contractsMap);\n}\n\nexport function collectWidgetContract(contracts: Contract[] | undefined): void {\n addContract(contracts, widgetContractMap);\n}\n\nexport function clearCollectWidgetContract(): void {\n widgetContractMap.clear();\n}\n\nexport function getContract(name: string): Contract | undefined {\n return contractsMap.get(name) || widgetContractMap.get(name);\n}\n"],"mappings":"AAEA,IAAMA,YAAmC,GAAG,IAAIC,GAAG,CAAC,CAAC;AACrD,IAAMC,iBAAwC,GAAG,IAAID,GAAG,CAAC,CAAC;AAE1D,IAAME,WAAW,GAAGA,CAClBC,SAAiC,EACjCC,GAA0B,KACjB;EACTD,SAAS,aAATA,SAAS,eAATA,SAAS,CAAEE,OAAO,CAAEC,QAAQ,IAAK;IAC/BF,GAAG,CAACG,GAAG,IAAAC,MAAA,CAAIF,QAAQ,CAACG,WAAW,OAAAD,MAAA,CAAIF,QAAQ,CAACI,IAAI,GAAIJ,QAAQ,CAAC;EAC/D,CAAC,CAAC;AACJ,CAAC;AAED,OAAO,SAASK,eAAeA,CAACR,SAAiC,EAAQ;EACvED,WAAW,CAACC,SAAS,EAAEJ,YAAY,CAAC;AACtC;AAEA,OAAO,SAASa,qBAAqBA,CAACT,SAAiC,EAAQ;EAC7ED,WAAW,CAACC,SAAS,EAAEF,iBAAiB,CAAC;AAC3C;AAEA,OAAO,SAASY,0BAA0BA,CAAA,EAAS;EACjDZ,iBAAiB,CAACa,KAAK,CAAC,CAAC;AAC3B;AAEA,OAAO,SAASC,WAAWA,CAACL,IAAY,EAAwB;EAC9D,OAAOX,YAAY,CAACiB,GAAG,CAACN,IAAI,CAAC,IAAIT,iBAAiB,CAACe,GAAG,CAACN,IAAI,CAAC;AAC9D"}
|
|
@@ -95,6 +95,7 @@ function _fetchMenuById2() {
|
|
|
95
95
|
});
|
|
96
96
|
delete newRuntimeContext.tplStateStoreId;
|
|
97
97
|
delete newRuntimeContext.forEachItem;
|
|
98
|
+
delete newRuntimeContext.forEachIndex;
|
|
98
99
|
var rootAppId = app[0].appId;
|
|
99
100
|
var [computedMenuData, computedMenuItems] = yield Promise.all([computeMenuData(restMenuData, rootAppId, newRuntimeContext, helpers), computeMenuItems(items, newRuntimeContext, helpers)]);
|
|
100
101
|
var finalMenuData = _objectSpread(_objectSpread({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchMenuById.js","names":["InstanceApi_postSearch","InstalledMicroAppApi_getMenusInfo","pick","checkIfOfComputed","mergeMenu","reorderMenu","computeMenuItems","computeMenuData","fetchMenuTitle","getMenusOfStandaloneApp","preCheckPermissionsForAny","menuPromises","Map","menuCache","walkMenuItems","menuItems","filter","map","item","children","type","title","text","childLayout","items","length","icon","defaultExpanded","getMenuById","menuId","get","fetchMenuById","runtimeContext","helpers","promise","_fetchMenuById","_x","_x2","_x3","_fetchMenuById2","apply","arguments","_asyncToGenerator","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","concat","restMenuData","_objectWithoutProperties","_excluded","newRuntimeContext","_objectSpread","pendingPermissionsPreCheck","tplStateStoreId","forEachItem","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 { 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} 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, unknown>();\n\nfunction walkMenuItems(menuItems: RuntimeMenuItemRawData[]): unknown[] {\n return menuItems?.filter(checkIfOfComputed).map((item) => {\n const children = walkMenuItems(item.children!);\n return item.type === \"group\"\n ? {\n type: \"group\",\n title: item.text,\n childLayout: item.childLayout,\n items: children,\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 : item;\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 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 = {\n title: await fetchMenuTitle(computedMenuData),\n ...pick(computedMenuData, [\n \"icon\",\n \"link\",\n \"defaultCollapsed\",\n \"defaultCollapsedBreakpoint\",\n ]),\n menuItems: walkMenuItems(computedMenuItems),\n };\n\n // Todo(steve): reconsider the menu cache strategy\n menuCache.set(menuId, finalMenuData);\n}\n"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"fetchMenuById.js","names":["InstanceApi_postSearch","InstalledMicroAppApi_getMenusInfo","pick","checkIfOfComputed","mergeMenu","reorderMenu","computeMenuItems","computeMenuData","fetchMenuTitle","getMenusOfStandaloneApp","preCheckPermissionsForAny","menuPromises","Map","menuCache","walkMenuItems","menuItems","filter","map","item","children","type","title","text","childLayout","items","length","icon","defaultExpanded","getMenuById","menuId","get","fetchMenuById","runtimeContext","helpers","promise","_fetchMenuById","_x","_x2","_x3","_fetchMenuById2","apply","arguments","_asyncToGenerator","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","concat","restMenuData","_objectWithoutProperties","_excluded","newRuntimeContext","_objectSpread","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 { 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} 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, unknown>();\n\nfunction walkMenuItems(menuItems: RuntimeMenuItemRawData[]): unknown[] {\n return menuItems?.filter(checkIfOfComputed).map((item) => {\n const children = walkMenuItems(item.children!);\n return item.type === \"group\"\n ? {\n type: \"group\",\n title: item.text,\n childLayout: item.childLayout,\n items: children,\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 : item;\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 = {\n title: await fetchMenuTitle(computedMenuData),\n ...pick(computedMenuData, [\n \"icon\",\n \"link\",\n \"defaultCollapsed\",\n \"defaultCollapsedBreakpoint\",\n ]),\n menuItems: walkMenuItems(computedMenuItems),\n };\n\n // Todo(steve): reconsider the menu cache strategy\n menuCache.set(menuId, finalMenuData);\n}\n"],"mappings":"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"}
|
|
@@ -75,7 +75,7 @@ export class MessageDispatcher {
|
|
|
75
75
|
_classPrivateFieldGet(this, _memoizedChannels).sub.clear();
|
|
76
76
|
_classPrivateFieldGet(this, _memoizedChannels).unsub.clear();
|
|
77
77
|
_classPrivateFieldGet(this, _channelPayloads).clear();
|
|
78
|
-
(_classPrivateFieldGet2 = _classPrivateFieldGet(this, _ms)) === null || _classPrivateFieldGet2 === void 0
|
|
78
|
+
(_classPrivateFieldGet2 = _classPrivateFieldGet(this, _ms)) === null || _classPrivateFieldGet2 === void 0 || _classPrivateFieldGet2.reset();
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
function _get_ms() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageDispatcher.js","names":["getBasePath","escapeRegExp","MessageService","_ms","WeakMap","_memoizedChannels","_channelPayloads","_ms2","_subOrUnsub","WeakSet","MessageDispatcher","constructor","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","get","_get_ms","set","writable","value","sub","Map","unsub","subscribe","channel","payload","stringifiedPayload","JSON","stringify","_classPrivateMethodGet","_subOrUnsub2","call","unsubscribe","_classPrivateFieldGet","msg","concat","console","error","Promise","reject","Error","parse","result","delete","then","onMessage","listener","response","event","matchMessageChannel","message","onClose","reset","_classPrivateFieldGet2","clear","protocol","location","url","window","host","_classPrivateFieldSet","type","hit","request","promise","resolve","identity","getIdentity","isSuccess","isFailed","send","system","topic","responsePayload","includes","RegExp","replace","m","p1","p2","test"],"sources":["../../../src/websocket/MessageDispatcher.ts"],"sourcesContent":["import { getBasePath } from \"@next-core/runtime\";\nimport { escapeRegExp } from \"lodash\";\nimport {\n MessageService,\n type MessageListener,\n CloseListener,\n} from \"./MessageService.js\";\n\ninterface MessageResponse {\n event:\n | \"TOPIC.SUB_SUCCESS\"\n | \"TOPIC.SUB_FAILED\"\n | \"TOPIC.UNSUB_SUCCESS\"\n | \"TOPIC.UNSUB_FAILED\"\n | \"MESSAGE.PUSH\";\n payload: MessagePayload;\n}\n\ninterface MessagePayload {\n source?: string;\n system: string;\n topic: string;\n message?: unknown;\n}\n\nexport class MessageDispatcher {\n #_ms: MessageService | undefined;\n #memoizedChannels = {\n sub: new Map<string, Promise<unknown>>(),\n unsub: new Map<string, Promise<unknown>>(),\n };\n #channelPayloads = new Map<string, string>();\n\n get #ms(): MessageService {\n if (!this.#_ms) {\n const protocol = location.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n const url = `${protocol}//${\n window.location.host\n }${getBasePath()}api/websocket_service/v1/ws`;\n this.#_ms = new MessageService(url);\n }\n return this.#_ms;\n }\n\n subscribe(channel: string, payload: MessagePayload): Promise<unknown> {\n const stringifiedPayload = JSON.stringify(payload);\n return this.#subOrUnsub(\"sub\", channel, payload, stringifiedPayload);\n }\n\n unsubscribe(channel: string): Promise<unknown> {\n const stringifiedPayload = this.#channelPayloads.get(channel);\n if (!stringifiedPayload) {\n const msg = `The message channel to unsubscribe \"${channel}\" is not found`;\n // eslint-disable-next-line no-console\n console.error(msg);\n return Promise.reject(new Error(msg));\n }\n\n const payload = JSON.parse(stringifiedPayload);\n const result = this.#subOrUnsub(\n \"unsub\",\n channel,\n payload,\n stringifiedPayload\n );\n\n this.#memoizedChannels.sub.delete(stringifiedPayload);\n\n result.then(() => {\n this.#channelPayloads.delete(channel);\n });\n\n return result;\n }\n\n onMessage(channel: string, listener: MessageListener): void {\n const stringifiedPayload = this.#channelPayloads.get(channel);\n if (!stringifiedPayload) {\n // eslint-disable-next-line no-console\n console.error(`Message channel: \"${channel}\" not found`);\n return;\n }\n\n this.#ms.onMessage<MessageResponse>((response) => {\n if (\n response.event === \"MESSAGE.PUSH\" &&\n matchMessageChannel(stringifiedPayload, response.payload)\n ) {\n listener(response.payload.message);\n }\n });\n }\n\n onClose(listener: CloseListener): void {\n this.#ms.onClose(listener);\n }\n\n reset(): void {\n this.#memoizedChannels.sub.clear();\n this.#memoizedChannels.unsub.clear();\n this.#channelPayloads.clear();\n this.#_ms?.reset();\n }\n\n #subOrUnsub(\n type: \"sub\" | \"unsub\",\n channel: string,\n payload: MessagePayload,\n stringifiedPayload: string\n ): Promise<unknown> {\n const hit = this.#memoizedChannels[type].get(stringifiedPayload);\n if (hit) {\n return hit;\n }\n const request = {\n event: type === \"sub\" ? \"TOPIC.SUB\" : \"TOPIC.UNSUB\",\n payload,\n };\n const promise = new Promise((resolve, reject) => {\n const identity = getIdentity(payload);\n this.#ms.onMessage<MessageResponse>((response) => {\n const isSuccess =\n response.event ===\n (type === \"sub\" ? \"TOPIC.SUB_SUCCESS\" : \"TOPIC.UNSUB_SUCCESS\");\n const isFailed =\n response.event ===\n (type === \"sub\" ? \"TOPIC.SUB_FAILED\" : \"TOPIC.UNSUB_FAILED\");\n if (\n (isSuccess || isFailed) &&\n // Put this after event type checks, to prevent unnecessary\n // JSON stringify.\n identity === getIdentity(response.payload)\n ) {\n (isSuccess ? resolve : reject)(response);\n }\n });\n this.#ms.send(request);\n });\n\n if (type === \"sub\") {\n this.#channelPayloads.set(channel, stringifiedPayload);\n }\n this.#memoizedChannels[type].set(stringifiedPayload, promise);\n return promise;\n }\n}\n\nfunction getIdentity(payload: MessagePayload) {\n const { system, topic } = payload;\n return JSON.stringify({ system, topic });\n}\n\nfunction matchMessageChannel(\n stringifiedPayload: string,\n responsePayload: MessagePayload\n): boolean {\n const payload = JSON.parse(stringifiedPayload) as MessagePayload;\n return (\n payload.system === responsePayload.system &&\n // Exact match\n (payload.topic === responsePayload.topic ||\n // Wildcards match\n // For `ab.cd.*`:\n // - Matches `ab.cd.r` or `ab.cd.x.yz`\n // - DOES NOT match `ab.cd.x/yz` or `ab.x.cd` or `x.ab.cd.yz`\n (typeof payload.topic === \"string\" &&\n payload.topic.includes(\"*\") &&\n new RegExp(\n `^${payload.topic.replace(\n /([^*]*)\\*([^*]*)/g,\n (m, p1, p2) => `${escapeRegExp(p1)}[^/]*${escapeRegExp(p2)}`\n )}$`\n ).test(responsePayload.topic)))\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MessageDispatcher.js","names":["getBasePath","escapeRegExp","MessageService","_ms","WeakMap","_memoizedChannels","_channelPayloads","_ms2","_subOrUnsub","WeakSet","MessageDispatcher","constructor","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","get","_get_ms","set","writable","value","sub","Map","unsub","subscribe","channel","payload","stringifiedPayload","JSON","stringify","_classPrivateMethodGet","_subOrUnsub2","call","unsubscribe","_classPrivateFieldGet","msg","concat","console","error","Promise","reject","Error","parse","result","delete","then","onMessage","listener","response","event","matchMessageChannel","message","onClose","reset","_classPrivateFieldGet2","clear","protocol","location","url","window","host","_classPrivateFieldSet","type","hit","request","promise","resolve","identity","getIdentity","isSuccess","isFailed","send","system","topic","responsePayload","includes","RegExp","replace","m","p1","p2","test"],"sources":["../../../src/websocket/MessageDispatcher.ts"],"sourcesContent":["import { getBasePath } from \"@next-core/runtime\";\nimport { escapeRegExp } from \"lodash\";\nimport {\n MessageService,\n type MessageListener,\n CloseListener,\n} from \"./MessageService.js\";\n\ninterface MessageResponse {\n event:\n | \"TOPIC.SUB_SUCCESS\"\n | \"TOPIC.SUB_FAILED\"\n | \"TOPIC.UNSUB_SUCCESS\"\n | \"TOPIC.UNSUB_FAILED\"\n | \"MESSAGE.PUSH\";\n payload: MessagePayload;\n}\n\ninterface MessagePayload {\n source?: string;\n system: string;\n topic: string;\n message?: unknown;\n}\n\nexport class MessageDispatcher {\n #_ms: MessageService | undefined;\n #memoizedChannels = {\n sub: new Map<string, Promise<unknown>>(),\n unsub: new Map<string, Promise<unknown>>(),\n };\n #channelPayloads = new Map<string, string>();\n\n get #ms(): MessageService {\n if (!this.#_ms) {\n const protocol = location.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n const url = `${protocol}//${\n window.location.host\n }${getBasePath()}api/websocket_service/v1/ws`;\n this.#_ms = new MessageService(url);\n }\n return this.#_ms;\n }\n\n subscribe(channel: string, payload: MessagePayload): Promise<unknown> {\n const stringifiedPayload = JSON.stringify(payload);\n return this.#subOrUnsub(\"sub\", channel, payload, stringifiedPayload);\n }\n\n unsubscribe(channel: string): Promise<unknown> {\n const stringifiedPayload = this.#channelPayloads.get(channel);\n if (!stringifiedPayload) {\n const msg = `The message channel to unsubscribe \"${channel}\" is not found`;\n // eslint-disable-next-line no-console\n console.error(msg);\n return Promise.reject(new Error(msg));\n }\n\n const payload = JSON.parse(stringifiedPayload);\n const result = this.#subOrUnsub(\n \"unsub\",\n channel,\n payload,\n stringifiedPayload\n );\n\n this.#memoizedChannels.sub.delete(stringifiedPayload);\n\n result.then(() => {\n this.#channelPayloads.delete(channel);\n });\n\n return result;\n }\n\n onMessage(channel: string, listener: MessageListener): void {\n const stringifiedPayload = this.#channelPayloads.get(channel);\n if (!stringifiedPayload) {\n // eslint-disable-next-line no-console\n console.error(`Message channel: \"${channel}\" not found`);\n return;\n }\n\n this.#ms.onMessage<MessageResponse>((response) => {\n if (\n response.event === \"MESSAGE.PUSH\" &&\n matchMessageChannel(stringifiedPayload, response.payload)\n ) {\n listener(response.payload.message);\n }\n });\n }\n\n onClose(listener: CloseListener): void {\n this.#ms.onClose(listener);\n }\n\n reset(): void {\n this.#memoizedChannels.sub.clear();\n this.#memoizedChannels.unsub.clear();\n this.#channelPayloads.clear();\n this.#_ms?.reset();\n }\n\n #subOrUnsub(\n type: \"sub\" | \"unsub\",\n channel: string,\n payload: MessagePayload,\n stringifiedPayload: string\n ): Promise<unknown> {\n const hit = this.#memoizedChannels[type].get(stringifiedPayload);\n if (hit) {\n return hit;\n }\n const request = {\n event: type === \"sub\" ? \"TOPIC.SUB\" : \"TOPIC.UNSUB\",\n payload,\n };\n const promise = new Promise((resolve, reject) => {\n const identity = getIdentity(payload);\n this.#ms.onMessage<MessageResponse>((response) => {\n const isSuccess =\n response.event ===\n (type === \"sub\" ? \"TOPIC.SUB_SUCCESS\" : \"TOPIC.UNSUB_SUCCESS\");\n const isFailed =\n response.event ===\n (type === \"sub\" ? \"TOPIC.SUB_FAILED\" : \"TOPIC.UNSUB_FAILED\");\n if (\n (isSuccess || isFailed) &&\n // Put this after event type checks, to prevent unnecessary\n // JSON stringify.\n identity === getIdentity(response.payload)\n ) {\n (isSuccess ? resolve : reject)(response);\n }\n });\n this.#ms.send(request);\n });\n\n if (type === \"sub\") {\n this.#channelPayloads.set(channel, stringifiedPayload);\n }\n this.#memoizedChannels[type].set(stringifiedPayload, promise);\n return promise;\n }\n}\n\nfunction getIdentity(payload: MessagePayload) {\n const { system, topic } = payload;\n return JSON.stringify({ system, topic });\n}\n\nfunction matchMessageChannel(\n stringifiedPayload: string,\n responsePayload: MessagePayload\n): boolean {\n const payload = JSON.parse(stringifiedPayload) as MessagePayload;\n return (\n payload.system === responsePayload.system &&\n // Exact match\n (payload.topic === responsePayload.topic ||\n // Wildcards match\n // For `ab.cd.*`:\n // - Matches `ab.cd.r` or `ab.cd.x.yz`\n // - DOES NOT match `ab.cd.x/yz` or `ab.x.cd` or `x.ab.cd.yz`\n (typeof payload.topic === \"string\" &&\n payload.topic.includes(\"*\") &&\n new RegExp(\n `^${payload.topic.replace(\n /([^*]*)\\*([^*]*)/g,\n (m, p1, p2) => `${escapeRegExp(p1)}[^/]*${escapeRegExp(p2)}`\n )}$`\n ).test(responsePayload.topic)))\n );\n}\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-core/easyops-runtime",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.26",
|
|
4
4
|
"homepage": "https://github.com/easyops-cn/next-core/tree/v3/packages/easyops-runtime",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"repository": {
|
|
@@ -44,19 +44,19 @@
|
|
|
44
44
|
"@next-api-sdk/cmdb-sdk": "^1.1.0",
|
|
45
45
|
"@next-api-sdk/micro-app-sdk": "^1.2.1",
|
|
46
46
|
"@next-api-sdk/micro-app-standalone-sdk": "^1.1.0",
|
|
47
|
-
"@next-core/cook": "^2.2.
|
|
48
|
-
"@next-core/http": "^1.1.
|
|
49
|
-
"@next-core/pipes": "^2.0.
|
|
50
|
-
"@next-core/runtime": "^1.22.
|
|
51
|
-
"@next-core/types": "^1.6.
|
|
52
|
-
"@next-core/utils": "^1.5.
|
|
47
|
+
"@next-core/cook": "^2.2.5",
|
|
48
|
+
"@next-core/http": "^1.1.1",
|
|
49
|
+
"@next-core/pipes": "^2.0.9",
|
|
50
|
+
"@next-core/runtime": "^1.22.4",
|
|
51
|
+
"@next-core/types": "^1.6.1",
|
|
52
|
+
"@next-core/utils": "^1.5.8",
|
|
53
53
|
"js-yaml": "^3.14.1",
|
|
54
54
|
"lodash": "^4.17.21"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
|
-
"@next-core/build-next-libs": "^1.0.
|
|
58
|
-
"@next-core/test-next": "^1.0.
|
|
59
|
-
"jest-websocket-mock": "^2.4.
|
|
57
|
+
"@next-core/build-next-libs": "^1.0.7",
|
|
58
|
+
"@next-core/test-next": "^1.0.9",
|
|
59
|
+
"jest-websocket-mock": "^2.4.1"
|
|
60
60
|
},
|
|
61
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "ca72173601442dd993dc425aaeed85cbd47c6336"
|
|
62
62
|
}
|