@event-chat/rpc 0.1.19 → 0.1.21

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.
@@ -1,5 +1,4 @@
1
1
  import { IframeSerializeOptions, MessageItem, Transport } from '../fields';
2
- declare const WINDOW_NAME = "[object Window]";
3
2
  declare class RPCAction {
4
3
  private _target;
5
4
  private _brodcastListeners;
@@ -14,18 +13,16 @@ declare class RPCAction {
14
13
  private _boundMessageHandler;
15
14
  constructor(_target: Transport<boolean>, options?: RPCOptionsType);
16
15
  destroy(): void;
17
- broadcast<T>(options?: Omit<RequestOptions<T>, 'retry'>): void;
16
+ broadcast<T>(options?: Omit<RequestOptions<T>, 'retry'>): MessageItem;
18
17
  config(options: Omit<RPCOptionsType, 'onConnect' | 'onDisconnect'>): void;
19
18
  on<T extends ActionFunType>(type: PropertyKey, handler: T): void;
20
19
  onBrodcast(listener: BrodcastItem): void;
21
20
  request<T = unknown>(type: PropertyKey, options?: RequestOptions<T>): Promise<unknown>;
22
21
  private _abort;
23
22
  private _baseMessage;
24
- private _isOriginAllowed;
25
23
  private _messageHandler;
26
24
  private _startHeartbeat;
27
25
  }
28
- export { WINDOW_NAME };
29
26
  export default RPCAction;
30
27
  export type RPCOptionsType = Pick<MessageItem, 'channel'> & {
31
28
  allowedOrigins?: string[];
@@ -33,12 +30,17 @@ export type RPCOptionsType = Pick<MessageItem, 'channel'> & {
33
30
  heartbeatTimeout?: number;
34
31
  retryTimeout?: number;
35
32
  retryTimes?: number;
33
+ debug?: (arg: {
34
+ data: MessageItem;
35
+ info: MessageInfo;
36
+ options: Omit<RPCOptionsType, 'debug' | 'onConnect' | 'onDisconnect'>;
37
+ }) => void;
36
38
  onConnect?: () => void;
37
39
  onDisconnect?: (destroy?: boolean) => void;
38
40
  };
39
41
  export type ActionFunType = (payload?: any, info?: MessageInfo) => any;
40
- export type BrodcastItem = (value: unknown, info?: MessageInfo) => void;
41
- export type RequestOptions<T = unknown> = IframeSerializeOptions & {
42
+ export type BrodcastItem = (value: unknown, info?: MessageInfo & Pick<MessageItem, 'requestId' | 'sign'>) => void;
43
+ export type RequestOptions<T = unknown> = IframeSerializeOptions & Pick<MessageItem, 'requestId' | 'sign'> & {
42
44
  payload?: T;
43
45
  retry?: number;
44
46
  };
@@ -1 +1 @@
1
- {"version":3,"file":"RPCAction.d.ts","sourceRoot":"","sources":["../../src/core/RPCAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAK1E,QAAA,MAAM,WAAW,oBAAoB,CAAA;AAarC,cAAM,SAAS;IAaX,OAAO,CAAC,OAAO;IAZjB,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,eAAe,CAAe;IACtC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,oBAAoB,CAAkC;gBAGpD,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,EACnC,OAAO,CAAC,EAAE,cAAc;IAe1B,OAAO;IAkBP,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;IAiBvD,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,cAAc,CAAC;IAIlE,EAAE,CAAC,CAAC,SAAS,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAIzD,UAAU,CAAC,QAAQ,EAAE,YAAY;IAIjC,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;IA8CnE,OAAO,CAAC,MAAM;IAYd,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,eAAe;IAkFvB,OAAO,CAAC,eAAe;CAuBxB;AAED,OAAO,EAAE,WAAW,EAAE,CAAA;AAEtB,eAAe,SAAS,CAAA;AAExB,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG;IAC1D,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;CAC3C,CAAA;AAID,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,GAAG,CAAA;AAEtE,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,IAAI,CAAA;AAEvE,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,OAAO,IAAI,sBAAsB,GAAG;IACjE,OAAO,CAAC,EAAE,CAAC,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAID,KAAK,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAA"}
1
+ {"version":3,"file":"RPCAction.d.ts","sourceRoot":"","sources":["../../src/core/RPCAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAa1E,cAAM,SAAS;IAaX,OAAO,CAAC,OAAO;IAZjB,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,eAAe,CAAe;IACtC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,oBAAoB,CAAkC;gBAGpD,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,EACnC,OAAO,CAAC,EAAE,cAAc;IAa1B,OAAO;IAkBP,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;IAmBvD,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,cAAc,CAAC;IAIlE,EAAE,CAAC,CAAC,SAAS,aAAa,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAIzD,UAAU,CAAC,QAAQ,EAAE,YAAY;IAIjC,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;IA8CnE,OAAO,CAAC,MAAM;IAYd,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,eAAe;IA2FvB,OAAO,CAAC,eAAe;CAuBxB;AAED,eAAe,SAAS,CAAA;AAExB,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG;IAC1D,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE;QACZ,IAAI,EAAE,WAAW,CAAA;QACjB,IAAI,EAAE,WAAW,CAAA;QACjB,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,WAAW,GAAG,cAAc,CAAC,CAAA;KACtE,KAAK,IAAI,CAAA;IACV,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;CAC3C,CAAA;AAID,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,GAAG,CAAA;AAGtE,MAAM,MAAM,YAAY,GAAG,CACzB,KAAK,EAAE,OAAO,EACd,IAAI,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAAC,KACzD,IAAI,CAAA;AAET,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,OAAO,IAAI,sBAAsB,GAC9D,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,CAAC,GAAG;IACxC,OAAO,CAAC,EAAE,CAAC,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAIH,KAAK,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAA"}
@@ -1,7 +1,6 @@
1
1
  import { isKey } from "../utils.js";
2
2
  import { receiptStore } from "./receiptStore.js";
3
3
  const RPC_SIGN = 'RPCActionSign';
4
- const WINDOW_NAME = '[object Window]';
5
4
  const defaultOptions = {
6
5
  allowedOrigins: [],
7
6
  heartbeatInterval: 3000,
@@ -9,7 +8,6 @@ const defaultOptions = {
9
8
  retryTimeout: 5000,
10
9
  retryTimes: 2
11
10
  };
12
- const getOrigin = (url)=>'string' == typeof self?.location?.origin ? new URL(url, self.location.origin).origin : '';
13
11
  class RPCAction {
14
12
  _target;
15
13
  _brodcastListeners = [];
@@ -28,7 +26,7 @@ class RPCAction {
28
26
  this._options = {
29
27
  ...defaultOptions,
30
28
  ...options,
31
- allowedOrigins: options?.allowedOrigins?.map((item)=>'*' === item ? item : getOrigin(item)).filter(Boolean)
29
+ allowedOrigins: this._target.originFilter(options?.allowedOrigins)
32
30
  };
33
31
  this._target.onmessage(this._boundMessageHandler);
34
32
  this._startHeartbeat();
@@ -49,19 +47,21 @@ class RPCAction {
49
47
  this._requestId = '';
50
48
  }
51
49
  broadcast(options) {
52
- const { payload, ...ops } = options ?? {};
50
+ const { payload, sign, requestId = '', ...ops } = options ?? {};
53
51
  const { channel } = this._options;
54
52
  const info = this._baseMessage({
55
53
  broadcast: true,
56
54
  kind: 'request',
57
- requestId: receiptStore.create(),
55
+ requestId: '' === requestId ? receiptStore.create() : requestId,
58
56
  channel,
59
57
  payload
60
58
  });
59
+ if (sign) info.sign = sign;
61
60
  this._target.postMessage(info, {
62
61
  ...ops,
63
62
  targetOrigin: ops.targetOrigin ?? self?.location?.origin
64
63
  });
64
+ return info;
65
65
  }
66
66
  config(options) {
67
67
  this._options = {
@@ -132,29 +132,35 @@ class RPCAction {
132
132
  sign: this._requestId
133
133
  };
134
134
  }
135
- _isOriginAllowed(origin) {
136
- return this._options?.allowedOrigins?.some((item)=>'*' === item || getOrigin(item) === getOrigin(origin)) ?? false;
137
- }
138
135
  _messageHandler(event) {
139
136
  const { data, origin, ports, source, wait } = event;
140
137
  const { __RPC__, broadcast, channel, error, heartbeat, kind, payload, requestId, sign, type } = data ?? {};
138
+ const info = {
139
+ origin,
140
+ ports,
141
+ source
142
+ };
143
+ const { debug, onConnect, ...options } = this._options;
141
144
  if (__RPC__ !== RPC_SIGN) return;
142
- if (this._options?.channel !== channel) return;
145
+ if (data) {
146
+ Reflect.deleteProperty(options, 'onDisconnect');
147
+ debug?.({
148
+ data,
149
+ info,
150
+ options
151
+ });
152
+ }
153
+ if (options?.channel !== channel) return;
143
154
  if (!this._target.is(source, data)) return;
144
- if (this._target.getType() === WINDOW_NAME && !this._isOriginAllowed(origin)) return;
155
+ if (!this._target.allow(origin, this._options.allowedOrigins)) return;
145
156
  if (heartbeat) {
146
157
  this._lastHeartbeat = Date.now();
147
158
  if (!this._isConnected) {
148
159
  this._isConnected = true;
149
- this._options?.onConnect?.();
160
+ onConnect?.();
150
161
  }
151
162
  return;
152
163
  }
153
- const info = {
154
- origin,
155
- ports,
156
- source
157
- };
158
164
  if (broadcast) {
159
165
  const brodsign = [
160
166
  sign,
@@ -163,7 +169,11 @@ class RPCAction {
163
169
  const brodkey = brodsign.join(':');
164
170
  if (2 === brodsign.length && !this._brodcastRecord.includes(brodkey)) {
165
171
  this._brodcastRecord.push(brodkey);
166
- this._brodcastListeners.forEach((listener)=>listener(payload, info));
172
+ this._brodcastListeners.forEach((listener)=>listener(payload, {
173
+ ...info,
174
+ requestId,
175
+ sign
176
+ }));
167
177
  }
168
178
  return;
169
179
  }
@@ -224,4 +234,4 @@ class RPCAction {
224
234
  }
225
235
  }
226
236
  const core_RPCAction = RPCAction;
227
- export { WINDOW_NAME, core_RPCAction as default };
237
+ export { core_RPCAction as default };
@@ -11,7 +11,7 @@ export declare function createRPC<EVENT extends ActionRecord, CONSUME extends Ac
11
11
  } : StructuredSerializeOptions & {
12
12
  targetOrigin?: string;
13
13
  transmit?: () => Promise<readonly WindowClient[]>;
14
- } & {
14
+ } & Pick<import("../fields").MessageItem, "requestId" | "sign"> & {
15
15
  payload?: Parameters<CONSUME[K]>[0] | undefined;
16
16
  retry?: number;
17
17
  } & {
@@ -21,7 +21,7 @@ export declare function createRPC<EVENT extends ActionRecord, CONSUME extends Ac
21
21
  } : StructuredSerializeOptions & {
22
22
  targetOrigin?: string;
23
23
  transmit?: () => Promise<readonly WindowClient[]>;
24
- } & {
24
+ } & Pick<import("../fields").MessageItem, "requestId" | "sign"> & {
25
25
  payload?: Parameters<CONSUME[K]>[0] | undefined;
26
26
  retry?: number;
27
27
  } & {
@@ -1,5 +1,5 @@
1
- import { WINDOW_NAME } from "../core/RPCAction.js";
2
1
  import { createRPC, registerTransport } from "../core/registry.js";
2
+ import { WINDOW_NAME } from "../fields.js";
3
3
  registerTransport({
4
4
  name: 'broadcastChannel',
5
5
  in: ()=>'undefined' != typeof BroadcastChannel,
@@ -6,7 +6,7 @@ export declare function createDedicatedWorkerGlobalScopeRPC<EVENT extends Action
6
6
  } : StructuredSerializeOptions & {
7
7
  targetOrigin?: string;
8
8
  transmit?: () => Promise<readonly WindowClient[]>;
9
- } & {
9
+ } & Pick<import("../fields").MessageItem, "requestId" | "sign"> & {
10
10
  payload?: Parameters<CONSUME[K]>[0] | undefined;
11
11
  retry?: number;
12
12
  } & {
@@ -16,7 +16,7 @@ export declare function createDedicatedWorkerGlobalScopeRPC<EVENT extends Action
16
16
  } : StructuredSerializeOptions & {
17
17
  targetOrigin?: string;
18
18
  transmit?: () => Promise<readonly WindowClient[]>;
19
- } & {
19
+ } & Pick<import("../fields").MessageItem, "requestId" | "sign"> & {
20
20
  payload?: Parameters<CONSUME[K]>[0] | undefined;
21
21
  retry?: number;
22
22
  } & {
@@ -6,7 +6,7 @@ export declare function createServiceWorkerGlobalScopeRPC<EVENT extends ActionRe
6
6
  } : StructuredSerializeOptions & {
7
7
  targetOrigin?: string;
8
8
  transmit?: () => Promise<readonly WindowClient[]>;
9
- } & {
9
+ } & Pick<import("../fields").MessageItem, "requestId" | "sign"> & {
10
10
  payload?: Parameters<CONSUME[K]>[0] | undefined;
11
11
  retry?: number;
12
12
  } & {
@@ -16,7 +16,7 @@ export declare function createServiceWorkerGlobalScopeRPC<EVENT extends ActionRe
16
16
  } : StructuredSerializeOptions & {
17
17
  targetOrigin?: string;
18
18
  transmit?: () => Promise<readonly WindowClient[]>;
19
- } & {
19
+ } & Pick<import("../fields").MessageItem, "requestId" | "sign"> & {
20
20
  payload?: Parameters<CONSUME[K]>[0] | undefined;
21
21
  retry?: number;
22
22
  } & {
@@ -6,7 +6,7 @@ export declare function createServiceWorkerRegistrationRPC<EVENT extends ActionR
6
6
  } : StructuredSerializeOptions & {
7
7
  targetOrigin?: string;
8
8
  transmit?: () => Promise<readonly WindowClient[]>;
9
- } & {
9
+ } & Pick<import("../fields").MessageItem, "requestId" | "sign"> & {
10
10
  payload?: Parameters<CONSUME[K]>[0] | undefined;
11
11
  retry?: number;
12
12
  } & {
@@ -16,7 +16,7 @@ export declare function createServiceWorkerRegistrationRPC<EVENT extends ActionR
16
16
  } : StructuredSerializeOptions & {
17
17
  targetOrigin?: string;
18
18
  transmit?: () => Promise<readonly WindowClient[]>;
19
- } & {
19
+ } & Pick<import("../fields").MessageItem, "requestId" | "sign"> & {
20
20
  payload?: Parameters<CONSUME[K]>[0] | undefined;
21
21
  retry?: number;
22
22
  } & {
@@ -6,7 +6,7 @@ export declare function createSharedWorkerRPC<EVENT extends ActionRecord, CONSUM
6
6
  } : StructuredSerializeOptions & {
7
7
  targetOrigin?: string;
8
8
  transmit?: () => Promise<readonly WindowClient[]>;
9
- } & {
9
+ } & Pick<import("../fields").MessageItem, "requestId" | "sign"> & {
10
10
  payload?: Parameters<CONSUME[K]>[0] | undefined;
11
11
  retry?: number;
12
12
  } & {
@@ -16,7 +16,7 @@ export declare function createSharedWorkerRPC<EVENT extends ActionRecord, CONSUM
16
16
  } : StructuredSerializeOptions & {
17
17
  targetOrigin?: string;
18
18
  transmit?: () => Promise<readonly WindowClient[]>;
19
- } & {
19
+ } & Pick<import("../fields").MessageItem, "requestId" | "sign"> & {
20
20
  payload?: Parameters<CONSUME[K]>[0] | undefined;
21
21
  retry?: number;
22
22
  } & {
@@ -6,7 +6,7 @@ export declare function createSharedWorkerGlobalScopeRPC<EVENT extends ActionRec
6
6
  } : StructuredSerializeOptions & {
7
7
  targetOrigin?: string;
8
8
  transmit?: () => Promise<readonly WindowClient[]>;
9
- } & {
9
+ } & Pick<import("../fields").MessageItem, "requestId" | "sign"> & {
10
10
  payload?: Parameters<CONSUME[K]>[0] | undefined;
11
11
  retry?: number;
12
12
  } & {
@@ -16,7 +16,7 @@ export declare function createSharedWorkerGlobalScopeRPC<EVENT extends ActionRec
16
16
  } : StructuredSerializeOptions & {
17
17
  targetOrigin?: string;
18
18
  transmit?: () => Promise<readonly WindowClient[]>;
19
- } & {
19
+ } & Pick<import("../fields").MessageItem, "requestId" | "sign"> & {
20
20
  payload?: Parameters<CONSUME[K]>[0] | undefined;
21
21
  retry?: number;
22
22
  } & {
@@ -6,7 +6,7 @@ export declare function createWebSocketRPC<EVENT extends ActionRecord, CONSUME e
6
6
  } : StructuredSerializeOptions & {
7
7
  targetOrigin?: string;
8
8
  transmit?: () => Promise<readonly WindowClient[]>;
9
- } & {
9
+ } & Pick<import("../fields").MessageItem, "requestId" | "sign"> & {
10
10
  payload?: Parameters<CONSUME[K]>[0] | undefined;
11
11
  retry?: number;
12
12
  } & {
@@ -16,7 +16,7 @@ export declare function createWebSocketRPC<EVENT extends ActionRecord, CONSUME e
16
16
  } : StructuredSerializeOptions & {
17
17
  targetOrigin?: string;
18
18
  transmit?: () => Promise<readonly WindowClient[]>;
19
- } & {
19
+ } & Pick<import("../fields").MessageItem, "requestId" | "sign"> & {
20
20
  payload?: Parameters<CONSUME[K]>[0] | undefined;
21
21
  retry?: number;
22
22
  } & {
@@ -6,7 +6,7 @@ export declare function createWindowRPC<EVENT extends ActionRecord, CONSUME exte
6
6
  } : StructuredSerializeOptions & {
7
7
  targetOrigin?: string;
8
8
  transmit?: () => Promise<readonly WindowClient[]>;
9
- } & {
9
+ } & Pick<import("../fields").MessageItem, "requestId" | "sign"> & {
10
10
  payload?: Parameters<CONSUME[K]>[0] | undefined;
11
11
  retry?: number;
12
12
  } & {
@@ -16,7 +16,7 @@ export declare function createWindowRPC<EVENT extends ActionRecord, CONSUME exte
16
16
  } : StructuredSerializeOptions & {
17
17
  targetOrigin?: string;
18
18
  transmit?: () => Promise<readonly WindowClient[]>;
19
- } & {
19
+ } & Pick<import("../fields").MessageItem, "requestId" | "sign"> & {
20
20
  payload?: Parameters<CONSUME[K]>[0] | undefined;
21
21
  retry?: number;
22
22
  } & {
@@ -6,7 +6,7 @@ export declare function createWorkerRPC<EVENT extends ActionRecord, CONSUME exte
6
6
  } : StructuredSerializeOptions & {
7
7
  targetOrigin?: string;
8
8
  transmit?: () => Promise<readonly WindowClient[]>;
9
- } & {
9
+ } & Pick<import("../fields").MessageItem, "requestId" | "sign"> & {
10
10
  payload?: Parameters<CONSUME[K]>[0] | undefined;
11
11
  retry?: number;
12
12
  } & {
@@ -16,7 +16,7 @@ export declare function createWorkerRPC<EVENT extends ActionRecord, CONSUME exte
16
16
  } : StructuredSerializeOptions & {
17
17
  targetOrigin?: string;
18
18
  transmit?: () => Promise<readonly WindowClient[]>;
19
- } & {
19
+ } & Pick<import("../fields").MessageItem, "requestId" | "sign"> & {
20
20
  payload?: Parameters<CONSUME[K]>[0] | undefined;
21
21
  retry?: number;
22
22
  } & {
package/dist/fields.d.ts CHANGED
@@ -13,6 +13,7 @@ export declare const TARGET_TYPE_STRINGS: Readonly<{
13
13
  Worker: "[object Worker]";
14
14
  DedicatedWorkerGlobalScope: "[object DedicatedWorkerGlobalScope]";
15
15
  }>;
16
+ export declare const WINDOW_NAME = "[object Window]";
16
17
  export interface FactoryOptions {
17
18
  message?: boolean | AddEventListenerOptions;
18
19
  }
@@ -34,12 +35,14 @@ export interface RPCInstanceContextIns {
34
35
  mount?: (item: RPCItem, name?: string) => void;
35
36
  }
36
37
  export interface Transport<ONLYBD extends boolean = false> {
38
+ allow: (origin: string, current?: string[]) => boolean;
37
39
  destroy: () => void;
38
40
  getType: () => string;
39
41
  is: (source: MessageEventSource | null, message?: MessageItem) => boolean;
40
42
  observe: (close?: () => void) => void;
41
43
  onmessage: (listener: ListenerType) => void;
42
44
  onremove: (listener: ListenerType) => void;
45
+ originFilter: (origin?: string[]) => string[] | undefined;
43
46
  postMessage: (message: MessageItem, options?: IframeSerializeOptions) => void;
44
47
  upset: (options: FactoryOptions) => void;
45
48
  onlyBrod?: ONLYBD;
@@ -1 +1 @@
1
- {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../src/fields.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,EAAE,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,UAAU,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEjC,eAAO,MAAM,kBAAkB,gDAA2C,CAAA;AAC1E,eAAO,MAAM,mBAAmB;;;;;;;;;;EAU9B,CAAA;AAEF,eAAO,MAAM,WAAW,oBAAoB,CAAA;AAE5C,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAA;CAC5C;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,CAAA;IAG7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,WAAW,CAAA;CACnB,CAAA;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,KAAK,IAAI,CAAA;IAC1E,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/C;AAED,MAAM,WAAW,SAAS,CAAC,MAAM,SAAS,OAAO,GAAG,KAAK;IACvD,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,OAAO,CAAA;IACtD,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,EAAE,MAAM,MAAM,CAAA;IACrB,EAAE,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAA;IACzE,OAAO,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;IACrC,SAAS,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;IAC3C,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;IAC1C,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,GAAG,SAAS,CAAA;IACzD,WAAW,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,sBAAsB,KAAK,IAAI,CAAA;IAC7E,KAAK,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,sBAAsB,GAAG,0BAA0B,GAAG;IAChE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC,CAAA;CAClD,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,CACzB,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC,GAAG;IAC/D,IAAI,CAAC,EAAE,MAAM,IAAI,CAAA;CAClB,KACE,IAAI,CAAA;AAET,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;AAEhF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAA;IACpD,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAA;IACpD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA"}
package/dist/fields.js CHANGED
@@ -11,4 +11,5 @@ const TARGET_TYPE_STRINGS = Object.freeze({
11
11
  Worker: '[object Worker]',
12
12
  DedicatedWorkerGlobalScope: '[object DedicatedWorkerGlobalScope]'
13
13
  });
14
- export { RPCInstanceContext, TARGET_TYPE_STRINGS };
14
+ const WINDOW_NAME = '[object Window]';
15
+ export { RPCInstanceContext, TARGET_TYPE_STRINGS, WINDOW_NAME };
@@ -1 +1 @@
1
- {"version":3,"file":"RPCProvider.d.ts","sourceRoot":"","sources":["../../src/react/RPCProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,iBAAiB,EAAkC,MAAM,OAAO,CAAA;AAW7E,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,iBAAiB,CA6CtC,CAAA;AAED,eAAe,WAAW,CAAA"}
1
+ {"version":3,"file":"RPCProvider.d.ts","sourceRoot":"","sources":["../../src/react/RPCProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,iBAAiB,EAAkC,MAAM,OAAO,CAAA;AAY7E,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,iBAAiB,CAkDtC,CAAA;AAED,eAAe,WAAW,CAAA"}
@@ -8,8 +8,13 @@ const RPCProvider = ({ children })=>{
8
8
  const { exclude, include, typein, typeout } = options ?? {};
9
9
  if (list.current.size > 0) {
10
10
  const scope = objectValues(TARGET_TYPE_STRINGS).filter((item)=>!exclude?.includes(item)).filter((item)=>!include || include.includes(item)).map(String);
11
+ let result = {};
11
12
  list.current.forEach((group, item)=>{
12
- if ('getType' in item && scope.includes(item.getType()) && !typeout?.includes(group) && (!typein || typein.includes(group))) item.broadcast(data);
13
+ if ('getType' in item && scope.includes(item.getType()) && !typeout?.includes(group) && (!typein || typein.includes(group))) result = item.broadcast({
14
+ ...data,
15
+ requestId: data.requestId ?? result.requestId,
16
+ sign: data.sign ?? result.sign
17
+ });
13
18
  });
14
19
  }
15
20
  }, []);
@@ -1 +1 @@
1
- {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/react/fields.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,EAAE,EAAE,cAAc,EAAe,MAAM,mBAAmB,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAElC,eAAO,MAAM,kBAAkB,gDAA2C,CAAA;AAC1E,eAAO,MAAM,mBAAmB;;;;;;;;;;EAU9B,CAAA;AAEF,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAA;CAC5C;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,KAAK,IAAI,CAAA;IAC1E,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/C;AAED,MAAM,MAAM,OAAO,GACf,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,GACpE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAExB,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAA;IACpD,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAA;IACpD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA"}
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/react/fields.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,EAAE,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAe,MAAM,WAAW,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAElC,eAAO,MAAM,kBAAkB,gDAA2C,CAAA;AAC1E,eAAO,MAAM,mBAAmB;;;;;;;;;;EAU9B,CAAA;AAEF,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAA;CAC5C;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,UAAU,KAAK,IAAI,CAAA;IAC1E,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/C;AAED,MAAM,MAAM,OAAO,GACf,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,GACpE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAExB,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAA;IACpD,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAA;IACpD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { createContext } from "react";
2
- import { WINDOW_NAME } from "../core/RPCAction.js";
2
+ import { WINDOW_NAME } from "../fields.js";
3
3
  const RPCInstanceContext = createContext({});
4
4
  const TARGET_TYPE_STRINGS = Object.freeze({
5
5
  BroadcastChannel: '[object BroadcastChannel]',
@@ -9,7 +9,7 @@ declare const useRPC: <TARGET extends TargetInit, EVENT extends ActionRecord, CO
9
9
  } : StructuredSerializeOptions & {
10
10
  targetOrigin?: string;
11
11
  transmit?: () => Promise<readonly WindowClient[]>;
12
- } & {
12
+ } & Pick<import("../fields").MessageItem, "requestId" | "sign"> & {
13
13
  payload?: Parameters<CONSUME[K]>[0] | undefined;
14
14
  retry?: number;
15
15
  } & {
@@ -19,7 +19,7 @@ declare const useRPC: <TARGET extends TargetInit, EVENT extends ActionRecord, CO
19
19
  } : StructuredSerializeOptions & {
20
20
  targetOrigin?: string;
21
21
  transmit?: () => Promise<readonly WindowClient[]>;
22
- } & {
22
+ } & Pick<import("../fields").MessageItem, "requestId" | "sign"> & {
23
23
  payload?: Parameters<CONSUME[K]>[0] | undefined;
24
24
  retry?: number;
25
25
  } & {
@@ -4,8 +4,10 @@ declare abstract class BaseTransport<T extends TargetType = TargetType, ONLYBD e
4
4
  protected _options: FactoryOptions;
5
5
  readonly onlyBrod?: ONLYBD;
6
6
  constructor(_target: T, _options?: FactoryOptions);
7
+ allow(origin: string, current?: string[]): boolean;
7
8
  getType(): string;
8
9
  is(source: MessageEventSource | null): boolean;
10
+ originFilter(origin?: string[]): string[] | undefined;
9
11
  upset(options: FactoryOptions): void;
10
12
  abstract destroy(): void;
11
13
  abstract observe(close?: () => void): void;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseTransport.d.ts","sourceRoot":"","sources":["../../src/transports/BaseTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAExF,uBAAe,aAAa,CAC1B,CAAC,SAAS,UAAU,GAAG,UAAU,EACjC,MAAM,SAAS,OAAO,GAAG,KAAK,CAC9B,YAAW,SAAS,CAAC,MAAM,CAAC;IAG1B,SAAS,CAAC,OAAO,EAAE,CAAC;IACpB,SAAS,CAAC,QAAQ,EAAE,cAAc;IAHpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;gBAEd,OAAO,EAAE,CAAC,EACV,QAAQ,GAAE,cAAmB;IAGzC,OAAO;IAKP,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAIpC,KAAK,CAAC,OAAO,EAAE,cAAc;IAM7B,QAAQ,CAAC,OAAO,IAAI,IAAI;IAIxB,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAC1C,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAGhD,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAC/C,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CACnF;AAED,eAAe,aAAa,CAAA;AAE5B,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAA;IAE3C,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAA;CACzB;AAID,MAAM,MAAM,UAAU,GAClB,gBAAgB,GAChB,SAAS,GACT,MAAM,GAEN,yBAAyB,GACzB,wBAAwB,GACxB,YAAY,GACZ,uBAAuB,GACvB,MAAM,GACN,0BAA0B,CAAA"}
1
+ {"version":3,"file":"BaseTransport.d.ts","sourceRoot":"","sources":["../../src/transports/BaseTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAExF,uBAAe,aAAa,CAC1B,CAAC,SAAS,UAAU,GAAG,UAAU,EACjC,MAAM,SAAS,OAAO,GAAG,KAAK,CAC9B,YAAW,SAAS,CAAC,MAAM,CAAC;IAG1B,SAAS,CAAC,OAAO,EAAE,CAAC;IACpB,SAAS,CAAC,QAAQ,EAAE,cAAc;IAHpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;gBAEd,OAAO,EAAE,CAAC,EACV,QAAQ,GAAE,cAAmB;IAIzC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE;IAIxC,OAAO;IAIP,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAIpC,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE;IAI9B,KAAK,CAAC,OAAO,EAAE,cAAc;IAM7B,QAAQ,CAAC,OAAO,IAAI,IAAI;IAIxB,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAC1C,QAAQ,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAGhD,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAC/C,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CACnF;AAED,eAAe,aAAa,CAAA;AAE5B,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,CAAA;IAE3C,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAA;CACzB;AAID,MAAM,MAAM,UAAU,GAClB,gBAAgB,GAChB,SAAS,GACT,MAAM,GAEN,yBAAyB,GACzB,wBAAwB,GACxB,YAAY,GACZ,uBAAuB,GACvB,MAAM,GACN,0BAA0B,CAAA"}
@@ -6,12 +6,18 @@ class BaseTransport {
6
6
  this._target = _target;
7
7
  this._options = _options;
8
8
  }
9
+ allow(origin, current) {
10
+ return origin ? true : (current?.length ?? 0) > -1;
11
+ }
9
12
  getType() {
10
13
  return `${Object.prototype.toString.call(this._target)}`;
11
14
  }
12
15
  is(source) {
13
16
  return !(source instanceof BaseTransport);
14
17
  }
18
+ originFilter(origin) {
19
+ return origin;
20
+ }
15
21
  upset(options) {
16
22
  this._options = {
17
23
  ...this._options,
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceWorkerGlobalScopeTransport.d.ts","sourceRoot":"","sources":["../../src/transports/ServiceWorkerGlobalScopeTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC7E,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAK3C,cAAM,iCAAkC,SAAQ,aAAa,CAAC,wBAAwB,CAAC;IACrF,OAAO,CAAC,UAAU,CAAuD;IACzE,OAAO,CAAC,OAAO,CAA8C;IAI7D,OAAO;IAKP,OAAO,IAAI,IAAI;IAIf,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAyBvC,QAAQ,IAAI,IAAI;IAKhB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAa1E;AAED,OAAO,EAAE,CAAA;AAET,eAAe,iCAAiC,CAAA"}
1
+ {"version":3,"file":"ServiceWorkerGlobalScopeTransport.d.ts","sourceRoot":"","sources":["../../src/transports/ServiceWorkerGlobalScopeTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC7E,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAK3C,cAAM,iCAAkC,SAAQ,aAAa,CAAC,wBAAwB,CAAC;IACrF,OAAO,CAAC,UAAU,CAAuD;IACzE,OAAO,CAAC,OAAO,CAA8C;IAI7D,OAAO;IAKP,OAAO,IAAI,IAAI;IAIf,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAyBvC,QAAQ,IAAI,IAAI;IAKhB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAuB1E;AAED,OAAO,EAAE,CAAA;AAET,eAAe,iCAAiC,CAAA"}
@@ -31,7 +31,11 @@ class ServiceWorkerGlobalScopeTransport extends BaseTransport {
31
31
  scope: self.registration.scope
32
32
  };
33
33
  const { transmit, transfer } = options ?? {};
34
- if (transmit) transmit().then((clients)=>clients.forEach((client)=>client.postMessage(msg, {
34
+ const transmitHandle = msg.heartbeat ? ()=>self.clients.matchAll({
35
+ type: 'window',
36
+ includeUncontrolled: true
37
+ }) : transmit;
38
+ if (transmitHandle) transmitHandle().then((clients)=>clients.forEach((client)=>client.postMessage(msg, {
35
39
  transfer
36
40
  }))).catch(()=>{});
37
41
  else this._source?.postMessage(msg, {
@@ -3,9 +3,11 @@ import BaseTransport from './BaseTransport';
3
3
  declare class WindowTransport extends BaseTransport<Window> {
4
4
  private _errorHandle;
5
5
  destroy(): void;
6
+ allow(origin: string, current?: string[]): boolean;
6
7
  is(source: MessageEventSource | null): boolean;
7
8
  onmessage(listener: ListenerType): void;
8
9
  onremove(listener: ListenerType): void;
10
+ originFilter(origin?: string[]): string[] | undefined;
9
11
  postMessage(message: MessageItem, options?: IframeSerializeOptions): void;
10
12
  observe(close?: () => void): void;
11
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WindowTransport.d.ts","sourceRoot":"","sources":["../../src/transports/WindowTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC7E,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,eAAgB,SAAQ,aAAa,CAAC,MAAM,CAAC;IACjD,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO;IAKP,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAIpC,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIvC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;IASzE,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI;CAkB3B;AAED,eAAe,eAAe,CAAA"}
1
+ {"version":3,"file":"WindowTransport.d.ts","sourceRoot":"","sources":["../../src/transports/WindowTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC7E,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAM3C,cAAM,eAAgB,SAAQ,aAAa,CAAC,MAAM,CAAC;IACjD,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO;IAKP,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE;IAKxC,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAIpC,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIvC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE;IAI9B,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;IASzE,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI;CAkB3B;AAED,eAAe,eAAe,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import BaseTransport from "./BaseTransport.js";
2
+ const getOrigin = (url)=>'string' == typeof self?.location?.origin ? new URL(url, self.location.origin).origin : '';
2
3
  class WindowTransport extends BaseTransport {
3
4
  _errorHandle = null;
4
5
  destroy() {
@@ -6,6 +7,9 @@ class WindowTransport extends BaseTransport {
6
7
  isDestroy: true
7
8
  });
8
9
  }
10
+ allow(origin, current) {
11
+ return current?.some((item)=>'*' === item || getOrigin(item) === getOrigin(origin)) ?? false;
12
+ }
9
13
  is(source) {
10
14
  return Object.is(this._target, source);
11
15
  }
@@ -15,6 +19,9 @@ class WindowTransport extends BaseTransport {
15
19
  onremove(listener) {
16
20
  window.removeEventListener('message', listener, this._options.message);
17
21
  }
22
+ originFilter(origin) {
23
+ return origin?.map((item)=>'*' === item ? item : getOrigin(item)).filter(Boolean);
24
+ }
18
25
  postMessage(message, options) {
19
26
  const { transfer, targetOrigin = '*' } = options ?? {};
20
27
  this._target.postMessage(message, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@event-chat/rpc",
3
- "version": "0.1.19",
3
+ "version": "0.1.21",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "exports": {