@next-core/easyops-runtime 0.6.23 → 0.6.25

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.
@@ -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 ? void 0 : contracts.forEach(contract => {
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,uBAATA,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"}
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"}
@@ -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 ? void 0 : _classPrivateFieldGet2.reset();
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":"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"}
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 ? void 0 : contracts.forEach(contract => {
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,uBAATA,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"}
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"}
@@ -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 ? void 0 : _classPrivateFieldGet2.reset();
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.23",
3
+ "version": "0.6.25",
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.4",
48
- "@next-core/http": "^1.1.0",
49
- "@next-core/pipes": "^2.0.8",
50
- "@next-core/runtime": "^1.22.1",
51
- "@next-core/types": "^1.6.0",
52
- "@next-core/utils": "^1.5.7",
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.3",
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.6",
58
- "@next-core/test-next": "^1.0.8",
59
- "jest-websocket-mock": "^2.4.0"
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": "ff746c0afea9353fa89decf7b66925a9080ff789"
61
+ "gitHead": "3aa3336e81687b4c2e3e633c02cc2c802a1201d8"
62
62
  }