@next-core/easyops-runtime 0.7.10 → 0.7.11

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.
@@ -49,13 +49,20 @@ class MessageDispatcher {
49
49
  return result;
50
50
  }
51
51
  onMessage(channel, listener) {
52
- const stringifiedPayload = _classPrivateFieldGet(_channelPayloads, this).get(channel);
53
- if (!stringifiedPayload) {
54
- // eslint-disable-next-line no-console
55
- console.error(`Message channel: "${channel}" not found`);
56
- return;
57
- }
52
+ let stringifiedPayload = _classPrivateFieldGet(_channelPayloads, this).get(channel);
53
+ let warned = false;
58
54
  _classPrivateGetter(_MessageDispatcher_brand, this, _get_ms).onMessage(response => {
55
+ if (!stringifiedPayload) {
56
+ stringifiedPayload = _classPrivateFieldGet(_channelPayloads, this).get(channel);
57
+ }
58
+ if (!stringifiedPayload) {
59
+ if (!warned) {
60
+ // eslint-disable-next-line no-console
61
+ console.error(`Message channel: "${channel}" not found`);
62
+ warned = true;
63
+ }
64
+ return;
65
+ }
59
66
  if (response.event === "MESSAGE.PUSH" && matchMessageChannel(stringifiedPayload, response.payload)) {
60
67
  listener(response.payload.message);
61
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MessageDispatcher.js","names":["_runtime","require","_lodash","_MessageService","_classPrivateGetter","s","r","a","_assertClassBrand","_classPrivateFieldSet","set","_classPrivateFieldGet","get","e","t","n","has","arguments","length","TypeError","_ms","WeakMap","_memoizedChannels","_channelPayloads","_MessageDispatcher_brand","WeakSet","MessageDispatcher","constructor","_classPrivateMethodInitSpec2","default","_classPrivateFieldInitSpec2","sub","Map","unsub","subscribe","channel","payload","stringifiedPayload","JSON","stringify","_subOrUnsub","call","unsubscribe","msg","console","error","Promise","reject","Error","parse","result","delete","then","onMessage","listener","_get_ms","response","event","matchMessageChannel","message","onClose","reset","_classPrivateFieldGet2","clear","exports","_this","protocol","location","url","window","host","getBasePath","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","_classPrivateGetter","s","r","a","_assertClassBrand","_classPrivateFieldSet","set","_classPrivateFieldGet","get","e","t","n","has","arguments","length","TypeError","_ms","WeakMap","_memoizedChannels","_channelPayloads","_MessageDispatcher_brand","WeakSet","MessageDispatcher","constructor","_classPrivateMethodInitSpec2","default","_classPrivateFieldInitSpec2","sub","Map","unsub","subscribe","channel","payload","stringifiedPayload","JSON","stringify","_subOrUnsub","call","unsubscribe","msg","console","error","Promise","reject","Error","parse","result","delete","then","onMessage","listener","warned","_get_ms","response","event","matchMessageChannel","message","onClose","reset","_classPrivateFieldGet2","clear","exports","_this","protocol","location","url","window","host","getBasePath","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 let stringifiedPayload = this.#channelPayloads.get(channel);\n let warned = false;\n\n this.#ms.onMessage<MessageResponse>((response) => {\n if (!stringifiedPayload) {\n stringifiedPayload = this.#channelPayloads.get(channel);\n }\n if (!stringifiedPayload) {\n if (!warned) {\n // eslint-disable-next-line no-console\n console.error(`Message channel: \"${channel}\" not found`);\n warned = true;\n }\n return;\n }\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,SAAAG,oBAAAC,CAAA,EAAAC,CAAA,EAAAC,CAAA,WAAAA,CAAA,CAAAC,iBAAA,CAAAH,CAAA,EAAAC,CAAA;AAAA,SAAAG,sBAAAJ,CAAA,EAAAE,CAAA,EAAAD,CAAA,WAAAD,CAAA,CAAAK,GAAA,CAAAF,iBAAA,CAAAH,CAAA,EAAAE,CAAA,GAAAD,CAAA,GAAAA,CAAA;AAAA,SAAAK,sBAAAN,CAAA,EAAAE,CAAA,WAAAF,CAAA,CAAAO,GAAA,CAAAJ,iBAAA,CAAAH,CAAA,EAAAE,CAAA;AAAA,SAAAC,kBAAAK,CAAA,EAAAC,CAAA,EAAAC,CAAA,6BAAAF,CAAA,GAAAA,CAAA,KAAAC,CAAA,GAAAD,CAAA,CAAAG,GAAA,CAAAF,CAAA,UAAAG,SAAA,CAAAC,MAAA,OAAAJ,CAAA,GAAAC,CAAA,YAAAI,SAAA;AAAA,IAAAC,GAAA,oBAAAC,OAAA;AAAA,IAAAC,iBAAA,oBAAAD,OAAA;AAAA,IAAAE,gBAAA,oBAAAF,OAAA;AAAA,IAAAG,wBAAA,oBAAAC,OAAA;AAmBtB,MAAMC,iBAAiB,CAAC;EAAAC,YAAA;IAAA,IAAAC,4BAAA,CAAAC,OAAA,QAAAL,wBAAA;IAAA,IAAAM,2BAAA,CAAAD,OAAA,QAAAT,GAAA;IAAA,IAAAU,2BAAA,CAAAD,OAAA,QAAAP,iBAAA,EAET;MAClBS,GAAG,EAAE,IAAIC,GAAG,CAA2B,CAAC;MACxCC,KAAK,EAAE,IAAID,GAAG,CAA2B;IAC3C,CAAC;IAAA,IAAAF,2BAAA,CAAAD,OAAA,QAAAN,gBAAA,EACkB,IAAIS,GAAG,CAAiB,CAAC;EAAA;EAa5CE,SAASA,CAACC,OAAe,EAAEC,OAAuB,EAAoB;IACpE,MAAMC,kBAAkB,GAAGC,IAAI,CAACC,SAAS,CAACH,OAAO,CAAC;IAClD,OAAA5B,iBAAA,CAAAgB,wBAAA,EAAO,IAAI,EAAAgB,WAAA,EAAAC,IAAA,CAAJ,IAAI,EAAa,KAAK,EAAEN,OAAO,EAAEC,OAAO,EAAEC,kBAAkB;EACrE;EAEAK,WAAWA,CAACP,OAAe,EAAoB;IAC7C,MAAME,kBAAkB,GAAG1B,qBAAA,CAAAY,gBAAA,MAAI,EAAkBX,GAAG,CAACuB,OAAO,CAAC;IAC7D,IAAI,CAACE,kBAAkB,EAAE;MACvB,MAAMM,GAAG,GAAI,uCAAsCR,OAAQ,gBAAe;MAC1E;MACAS,OAAO,CAACC,KAAK,CAACF,GAAG,CAAC;MAClB,OAAOG,OAAO,CAACC,MAAM,CAAC,IAAIC,KAAK,CAACL,GAAG,CAAC,CAAC;IACvC;IAEA,MAAMP,OAAO,GAAGE,IAAI,CAACW,KAAK,CAACZ,kBAAkB,CAAC;IAC9C,MAAMa,MAAM,GAAA1C,iBAAA,CAAAgB,wBAAA,EAAG,IAAI,EAAAgB,WAAA,EAAAC,IAAA,CAAJ,IAAI,EACjB,OAAO,EACPN,OAAO,EACPC,OAAO,EACPC,kBAAkB,CACnB;IAED1B,qBAAA,CAAAW,iBAAA,MAAI,EAAmBS,GAAG,CAACoB,MAAM,CAACd,kBAAkB,CAAC;IAErDa,MAAM,CAACE,IAAI,CAAC,MAAM;MAChBzC,qBAAA,CAAAY,gBAAA,MAAI,EAAkB4B,MAAM,CAAChB,OAAO,CAAC;IACvC,CAAC,CAAC;IAEF,OAAOe,MAAM;EACf;EAEAG,SAASA,CAAClB,OAAe,EAAEmB,QAAyB,EAAQ;IAC1D,IAAIjB,kBAAkB,GAAG1B,qBAAA,CAAAY,gBAAA,MAAI,EAAkBX,GAAG,CAACuB,OAAO,CAAC;IAC3D,IAAIoB,MAAM,GAAG,KAAK;IAElBnD,mBAAA,CAAAoB,wBAAA,MAAI,EAAAgC,OAAA,EAAKH,SAAS,CAAmBI,QAAQ,IAAK;MAChD,IAAI,CAACpB,kBAAkB,EAAE;QACvBA,kBAAkB,GAAG1B,qBAAA,CAAAY,gBAAA,MAAI,EAAkBX,GAAG,CAACuB,OAAO,CAAC;MACzD;MACA,IAAI,CAACE,kBAAkB,EAAE;QACvB,IAAI,CAACkB,MAAM,EAAE;UACX;UACAX,OAAO,CAACC,KAAK,CAAE,qBAAoBV,OAAQ,aAAY,CAAC;UACxDoB,MAAM,GAAG,IAAI;QACf;QACA;MACF;MACA,IACEE,QAAQ,CAACC,KAAK,KAAK,cAAc,IACjCC,mBAAmB,CAACtB,kBAAkB,EAAEoB,QAAQ,CAACrB,OAAO,CAAC,EACzD;QACAkB,QAAQ,CAACG,QAAQ,CAACrB,OAAO,CAACwB,OAAO,CAAC;MACpC;IACF,CAAC,CAAC;EACJ;EAEAC,OAAOA,CAACP,QAAuB,EAAQ;IACrClD,mBAAA,CAAAoB,wBAAA,MAAI,EAAAgC,OAAA,EAAKK,OAAO,CAACP,QAAQ,CAAC;EAC5B;EAEAQ,KAAKA,CAAA,EAAS;IAAA,IAAAC,sBAAA;IACZpD,qBAAA,CAAAW,iBAAA,MAAI,EAAmBS,GAAG,CAACiC,KAAK,CAAC,CAAC;IAClCrD,qBAAA,CAAAW,iBAAA,MAAI,EAAmBW,KAAK,CAAC+B,KAAK,CAAC,CAAC;IACpCrD,qBAAA,CAAAY,gBAAA,MAAI,EAAkByC,KAAK,CAAC,CAAC;IAC7B,CAAAD,sBAAA,GAAApD,qBAAA,CAAAS,GAAA,MAAI,eAAA2C,sBAAA,eAAJA,sBAAA,CAAWD,KAAK,CAAC,CAAC;EACpB;AA2CF;AAACG,OAAA,CAAAvC,iBAAA,GAAAA,iBAAA;AAAA,SAAA8B,QAAAU,KAAA,EAvH2B;EACxB,IAAI,CAAAvD,qBAAA,CAAAS,GAAA,EAAA8C,KAAA,CAAU,EAAE;IACd,MAAMC,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/D,qBAAA,CAAAW,GAAA,EAAA8C,KAAA,EAAY,IAAIO,8BAAc,CAACJ,GAAG,CAAC;EACrC;EACA,OAAA1D,qBAAA,CAAAS,GAAA,EAAA8C,KAAA;AACF;AAAC,SAAA1B,YAsECkC,IAAqB,EACrBvC,OAAe,EACfC,OAAuB,EACvBC,kBAA0B,EACR;EAClB,MAAMsC,GAAG,GAAGhE,qBAAA,CAAAW,iBAAA,MAAI,EAAmBoD,IAAI,CAAC,CAAC9D,GAAG,CAACyB,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,IAAI/B,OAAO,CAAC,CAACgC,OAAO,EAAE/B,MAAM,KAAK;IAC/C,MAAMgC,QAAQ,GAAGC,WAAW,CAAC5C,OAAO,CAAC;IACrChC,mBAAA,CAAAoB,wBAAA,MAAI,EAAAgC,OAAA,EAAKH,SAAS,CAAmBI,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,GAAG/B,MAAM,EAAEU,QAAQ,CAAC;MAC1C;IACF,CAAC,CAAC;IACFrD,mBAAA,CAAAoB,wBAAA,MAAI,EAAAgC,OAAA,EAAK2B,IAAI,CAACP,OAAO,CAAC;EACxB,CAAC,CAAC;EAEF,IAAIF,IAAI,KAAK,KAAK,EAAE;IAClB/D,qBAAA,CAAAY,gBAAA,MAAI,EAAkBb,GAAG,CAACyB,OAAO,EAAEE,kBAAkB,CAAC;EACxD;EACA1B,qBAAA,CAAAW,iBAAA,MAAI,EAAmBoD,IAAI,CAAC,CAAChE,GAAG,CAAC2B,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,CAACW,KAAK,CAACZ,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"}
@@ -43,12 +43,19 @@ export class MessageDispatcher {
43
43
  }
44
44
  onMessage(channel, listener) {
45
45
  var stringifiedPayload = _classPrivateFieldGet(_channelPayloads, this).get(channel);
46
- if (!stringifiedPayload) {
47
- // eslint-disable-next-line no-console
48
- console.error("Message channel: \"".concat(channel, "\" not found"));
49
- return;
50
- }
46
+ var warned = false;
51
47
  _classPrivateGetter(_MessageDispatcher_brand, this, _get_ms).onMessage(response => {
48
+ if (!stringifiedPayload) {
49
+ stringifiedPayload = _classPrivateFieldGet(_channelPayloads, this).get(channel);
50
+ }
51
+ if (!stringifiedPayload) {
52
+ if (!warned) {
53
+ // eslint-disable-next-line no-console
54
+ console.error("Message channel: \"".concat(channel, "\" not found"));
55
+ warned = true;
56
+ }
57
+ return;
58
+ }
52
59
  if (response.event === "MESSAGE.PUSH" && matchMessageChannel(stringifiedPayload, response.payload)) {
53
60
  listener(response.payload.message);
54
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MessageDispatcher.js","names":["getBasePath","escapeRegExp","MessageService","_ms","WeakMap","_memoizedChannels","_channelPayloads","_MessageDispatcher_brand","WeakSet","MessageDispatcher","constructor","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","sub","Map","unsub","subscribe","channel","payload","stringifiedPayload","JSON","stringify","_assertClassBrand","_subOrUnsub","call","unsubscribe","_classPrivateFieldGet","get","msg","concat","console","error","Promise","reject","Error","parse","result","delete","then","onMessage","listener","_classPrivateGetter","_get_ms","response","event","matchMessageChannel","message","onClose","reset","_classPrivateFieldGet2","clear","_this","protocol","location","url","window","host","_classPrivateFieldSet","type","hit","request","promise","resolve","identity","getIdentity","isSuccess","isFailed","send","set","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","_MessageDispatcher_brand","WeakSet","MessageDispatcher","constructor","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","sub","Map","unsub","subscribe","channel","payload","stringifiedPayload","JSON","stringify","_assertClassBrand","_subOrUnsub","call","unsubscribe","_classPrivateFieldGet","get","msg","concat","console","error","Promise","reject","Error","parse","result","delete","then","onMessage","listener","warned","_classPrivateGetter","_get_ms","response","event","matchMessageChannel","message","onClose","reset","_classPrivateFieldGet2","clear","_this","protocol","location","url","window","host","_classPrivateFieldSet","type","hit","request","promise","resolve","identity","getIdentity","isSuccess","isFailed","send","set","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 let stringifiedPayload = this.#channelPayloads.get(channel);\n let warned = false;\n\n this.#ms.onMessage<MessageResponse>((response) => {\n if (!stringifiedPayload) {\n stringifiedPayload = this.#channelPayloads.get(channel);\n }\n if (!stringifiedPayload) {\n if (!warned) {\n // eslint-disable-next-line no-console\n console.error(`Message channel: \"${channel}\" not found`);\n warned = true;\n }\n return;\n }\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.7.10",
3
+ "version": "0.7.11",
4
4
  "homepage": "https://github.com/easyops-cn/next-core/tree/v3/packages/easyops-runtime",
5
5
  "license": "GPL-3.0",
6
6
  "repository": {
@@ -59,5 +59,5 @@
59
59
  "jest-websocket-mock": "^2.5.0",
60
60
  "whatwg-fetch": "^3.6.20"
61
61
  },
62
- "gitHead": "5be066635145482fe46b023ce440da49408c014d"
62
+ "gitHead": "0a87b5f3b1bc51974100607213781ab93591a2c5"
63
63
  }