@telperion/messenger 7.7.0 → 7.7.2
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.
|
@@ -9,7 +9,7 @@ export declare class IframeMessageClient extends MessageClient {
|
|
|
9
9
|
private channelName;
|
|
10
10
|
[RESPONSES$]: Subject<MessageResponse>;
|
|
11
11
|
private [TARGET];
|
|
12
|
-
constructor(channelName
|
|
12
|
+
constructor(channelName?: string, targetFrame?: IFrameArg);
|
|
13
13
|
initialize(target: IFrameArg): void;
|
|
14
14
|
[SEND]<T>(message: Message<T>): Promise<void>;
|
|
15
15
|
protected [GET_NEW_ID](): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../libs/messenger/src/iframe/message-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,MAAM,MAAM,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;AAEpD,MAAM,OAAO,mBAAoB,SAAQ,aAAa;IAK1C;IAJH,CAAC,UAAU,CAAC,GAAG,IAAI,OAAO,EAAmB,CAAC;IAC7C,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,SAAuB,EAAE,IAAI,CAAU,CAAC,CAAC;IAE7E,YACU,cAAc,oBAAoB,EAC1C,
|
|
1
|
+
{"version":3,"sources":["../../../../../libs/messenger/src/iframe/message-client.ts"],"names":[],"mappings":"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","file":"message-client.js","sourcesContent":["import { uniqueId } from '@telperion/js-utils/unique-id';\nimport { noop } from '@telperion/js-utils/function/noop';\nimport { promisify } from '@telperion/js-utils/promise/promisify';\nimport { timeout } from '@telperion/js-utils/promise/timeout';\nimport { Subject } from 'rxjs';\n\nimport { MessageClient } from '../message-client';\nimport { MessageResponse, SuccessfulMessageResponse } from '../message-response.type';\nimport { Message } from '../message.interface';\nimport { GET_NEW_ID, RESPONSES$, SEND } from '../selectors';\nimport { CHANNEL_PATH_SPLITTER } from './channel-path-splitter';\nimport { DEFAULT_CHANNEL_NAME } from './default-channel-name';\nimport { IFrameArg, IFrameType } from './iframe.type';\n\nconst TARGET = Symbol('IframeMessageClient Target');\n\nexport class IframeMessageClient extends MessageClient {\n public [RESPONSES$] = new Subject<MessageResponse>();\n private [TARGET] = Promise.resolve([undefined as IFrameType, noop] as const);\n\n constructor(\n private channelName = DEFAULT_CHANNEL_NAME,\n targetFrame?: IFrameArg\n ) {\n super();\n\n this.initialize(targetFrame);\n }\n\n initialize(target: IFrameArg): void {\n this[TARGET] = Promise.race([\n this[TARGET],\n timeout(5000, [null, noop] as const)\n ])\n .then(([_, deinitialize]) => deinitialize())\n .catch(noop)\n .then(() => {\n const frame = typeof target === 'function' ? target() : target;\n return promisify(frame);\n })\n .then((frame) => {\n const listener = ({ data, source }: MessageEvent<SuccessfulMessageResponse>) => {\n if (frame && source !== frame.contentWindow) return;\n\n if (!data\n || typeof data !== 'object'\n || typeof data.id === 'undefined'\n || typeof data.completed === 'undefined'\n ) {\n return;\n }\n\n this[RESPONSES$].next(data);\n };\n\n window.addEventListener('message', listener);\n\n return [frame, () => window.removeEventListener('message', listener)];\n })\n }\n\n public async [SEND]<T>(message: Message<T>) {\n message = { ...message, path: `${this.channelName}${CHANNEL_PATH_SPLITTER}${message.path}` };\n\n const [target] = await this[TARGET];\n\n if (target) {\n target.contentWindow!.postMessage(message, '*');\n } else {\n window.parent.postMessage(message, '*');\n }\n }\n\n protected [GET_NEW_ID](): string {\n return uniqueId('messenger-iframe-message') as string;\n }\n}\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { IframeMessageClient } from "./message-client";
|
|
2
2
|
import { IFrameArg } from "./iframe.type";
|
|
3
|
-
declare const IframeMessageService_base: new (args_0: [channelName?: string | undefined, targetFrame?: IFrameArg], args_1: [channelName
|
|
3
|
+
declare const IframeMessageService_base: new (args_0: [channelName?: string | undefined, targetFrame?: IFrameArg], args_1: [channelName?: string | undefined, targetFrame?: IFrameArg]) => {
|
|
4
4
|
initialize: (target: IFrameArg) => void;
|
|
5
5
|
terminate: () => void;
|
|
6
6
|
} & IframeMessageClient;
|
|
7
7
|
export declare class IframeMessageService extends IframeMessageService_base {
|
|
8
|
-
constructor(channelName
|
|
8
|
+
constructor(channelName?: string, targetFrame?: IFrameArg);
|
|
9
9
|
initialize: (target: IFrameArg) => void;
|
|
10
10
|
}
|
|
11
11
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../libs/messenger/src/iframe/message-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,MAAM,OAAO,oBAAqB,SAAQ,KAAK,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IACrF,YACE,WAAW,GAAG,oBAAoB,EAClC,
|
|
1
|
+
{"version":3,"sources":["../../../../../libs/messenger/src/iframe/message-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,MAAM,OAAO,oBAAqB,SAAQ,KAAK,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IACrF,YACE,WAAW,GAAG,oBAAoB,EAClC,WAAuB;QAEvB,KAAK,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;IAChE,CAAC;IAEe,UAAU,GAAG,CAAC,MAAiB,EAAQ,EAAE;QACvD,iBAAiB,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1D,mBAAmB,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC,CAAC;CACH","file":"message-service.js","sourcesContent":["import { mixin } from \"@telperion/js-utils/class/mixin\";\nimport { IframeMessageClient } from \"./message-client\";\nimport { IframeMessageHost } from \"./message-host\";\nimport { DEFAULT_CHANNEL_NAME } from \"./default-channel-name\";\nimport { IFrameArg } from \"./iframe.type\";\n\nexport class IframeMessageService extends mixin(IframeMessageHost, IframeMessageClient) {\n constructor(\n channelName = DEFAULT_CHANNEL_NAME,\n targetFrame?: IFrameArg\n ) {\n super([channelName, targetFrame], [channelName, targetFrame]);\n }\n\n public override initialize = (target: IFrameArg): void => {\n IframeMessageHost.prototype.initialize.call(this, target);\n IframeMessageClient.prototype.initialize.call(this, target);\n };\n}\n"]}
|
package/message-host.cjs
CHANGED
|
@@ -23,7 +23,14 @@ class MessageHost {
|
|
|
23
23
|
.pipe((0, operators_1.filter)(({ path: messagePath }) => path === messagePath))
|
|
24
24
|
.subscribe(({ body, id }) => {
|
|
25
25
|
for (const listener of listeners) {
|
|
26
|
-
listener.call(this, body)
|
|
26
|
+
let result$ = listener.call(this, body);
|
|
27
|
+
if (result$ instanceof Promise) {
|
|
28
|
+
result$ = (0, rxjs_1.from)(result$);
|
|
29
|
+
}
|
|
30
|
+
else if (!(result$ instanceof rxjs_1.Observable)) {
|
|
31
|
+
result$ = (0, rxjs_1.of)(result$);
|
|
32
|
+
}
|
|
33
|
+
result$.pipe((0, operators_1.takeUntil)(this[selectors_1.TERMINATE_MESSAGE$].pipe((0, operators_1.filter)(terminatedMessageId => terminatedMessageId === id)))).subscribe({
|
|
27
34
|
next: result => {
|
|
28
35
|
this[selectors_1.RESPONSE]({ completed: false, id, body: result });
|
|
29
36
|
},
|
package/message-host.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Subject } from 'rxjs';
|
|
1
|
+
import { from, Observable, of, Subject } from 'rxjs';
|
|
2
2
|
import { filter, takeUntil } from 'rxjs/operators';
|
|
3
3
|
import { LISTEN, MESSAGE_LISTENERS, RESPONSE, TERMINATE_MESSAGE$ } from './selectors';
|
|
4
4
|
/**
|
|
@@ -20,7 +20,14 @@ export class MessageHost {
|
|
|
20
20
|
.pipe(filter(({ path: messagePath }) => path === messagePath))
|
|
21
21
|
.subscribe(({ body, id }) => {
|
|
22
22
|
for (const listener of listeners) {
|
|
23
|
-
listener.call(this, body)
|
|
23
|
+
let result$ = listener.call(this, body);
|
|
24
|
+
if (result$ instanceof Promise) {
|
|
25
|
+
result$ = from(result$);
|
|
26
|
+
}
|
|
27
|
+
else if (!(result$ instanceof Observable)) {
|
|
28
|
+
result$ = of(result$);
|
|
29
|
+
}
|
|
30
|
+
result$.pipe(takeUntil(this[TERMINATE_MESSAGE$].pipe(filter(terminatedMessageId => terminatedMessageId === id)))).subscribe({
|
|
24
31
|
next: result => {
|
|
25
32
|
this[RESPONSE]({ completed: false, id, body: result });
|
|
26
33
|
},
|
package/message-host.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../libs/messenger/src/message-host.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"sources":["../../../../../libs/messenger/src/message-host.ts"],"names":[],"mappings":"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","file":"message-host.js","sourcesContent":["import { from, Observable, of, Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\nimport { ListenerStorage } from './listener-storage.type';\nimport { SuccessfulMessageResponse } from './message-response.type';\nimport { Message } from './message.interface';\nimport { LISTEN, MESSAGE_LISTENERS, RESPONSE, TERMINATE_MESSAGE$ } from './selectors';\n\n/**\n * Message Host\n */\nexport abstract class MessageHost {\n /**\n * Message Terminator Subject\n *\n * Use `next(messageId)` method to terminate a message connection\n */\n protected readonly [TERMINATE_MESSAGE$] = new Subject<string>();\n\n /**\n * Run this method to start listening the requests\n */\n protected readonly [LISTEN] = (messages$: Observable<Message>): void => {\n for (const [path, listeners] of this.#getListeners()) {\n messages$\n .pipe(filter(({ path: messagePath }) => path === messagePath))\n .subscribe(({ body, id }) => {\n for (const listener of listeners) {\n let result$: Observable<any> = listener.call(this, body);\n\n if (result$ instanceof Promise) {\n result$ = from(result$);\n } else if (!(result$ instanceof Observable)) {\n result$ = of(result$);\n }\n\n result$.pipe(\n takeUntil(this[TERMINATE_MESSAGE$].pipe(filter(terminatedMessageId => terminatedMessageId === id))),\n ).subscribe({\n next: result => {\n this[RESPONSE]({ completed: false, id, body: result });\n },\n error: error => {\n this[RESPONSE]({ completed: true, id, error });\n },\n complete: () => {\n this[RESPONSE]({ completed: true, id });\n }\n });\n }\n });\n }\n };\n\n /**\n * Build a reponse method to send the responses to the requests by using the communication methods of the platform\n *\n * @param message Incoming response message\n */\n protected abstract [RESPONSE]<T = any>(message: SuccessfulMessageResponse<T>): void;\n\n /**\n * All inherited listeners\n */\n #getListeners(): ListenerStorage {\n const map: ListenerStorage = new Map();\n let currentProto = (this as any)['__proto__' + ''];\n\n while (currentProto.constructor !== Object) {\n if (Reflect.ownKeys(currentProto.constructor).includes(MESSAGE_LISTENERS)) {\n for (const [key, handlers] of currentProto.constructor[MESSAGE_LISTENERS] as ListenerStorage) {\n map.set(key, [...(map.get(key) || []), ...handlers]);\n }\n }\n\n currentProto = currentProto.__proto__;\n }\n\n return map;\n }\n}\n"]}
|