@event-chat/rpc 0.1.18 → 0.1.20

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.
Files changed (46) hide show
  1. package/dist/core/RPCAction.d.ts +8 -7
  2. package/dist/core/RPCAction.d.ts.map +1 -1
  3. package/dist/core/RPCAction.js +66 -32
  4. package/dist/core/receiptStore.d.ts +10 -0
  5. package/dist/core/receiptStore.d.ts.map +1 -0
  6. package/dist/core/receiptStore.js +63 -0
  7. package/dist/core/registry.d.ts +3 -3
  8. package/dist/entry/broadcastChannel.d.ts +1 -1
  9. package/dist/entry/dedicatedWorkerGlobalScope.d.ts +3 -3
  10. package/dist/entry/serviceWorkerGlobalScope.d.ts +3 -3
  11. package/dist/entry/serviceWorkerRegistration.d.ts +3 -3
  12. package/dist/entry/sharedWorker.d.ts +3 -3
  13. package/dist/entry/sharedWorkerGlobalScope.d.ts +3 -3
  14. package/dist/entry/webSocket.d.ts +3 -3
  15. package/dist/entry/window.d.ts +3 -3
  16. package/dist/entry/worker.d.ts +3 -3
  17. package/dist/fields.d.ts +15 -2
  18. package/dist/fields.d.ts.map +1 -1
  19. package/dist/hooks.d.ts +1 -1
  20. package/dist/react/RPCProvider.d.ts.map +1 -1
  21. package/dist/react/RPCProvider.js +6 -1
  22. package/dist/react/hooks.d.ts +3 -3
  23. package/dist/transports/BaseTransport.d.ts +2 -2
  24. package/dist/transports/BaseTransport.d.ts.map +1 -1
  25. package/dist/transports/BroadcastChannelTransport.d.ts +2 -2
  26. package/dist/transports/BroadcastChannelTransport.d.ts.map +1 -1
  27. package/dist/transports/DedicatedWorkerGlobalScopeTransport.d.ts +2 -2
  28. package/dist/transports/DedicatedWorkerGlobalScopeTransport.d.ts.map +1 -1
  29. package/dist/transports/ServiceWorkerGlobalScopeTransport.d.ts +3 -2
  30. package/dist/transports/ServiceWorkerGlobalScopeTransport.d.ts.map +1 -1
  31. package/dist/transports/ServiceWorkerGlobalScopeTransport.js +10 -2
  32. package/dist/transports/ServiceWorkerRegistrationTransport.d.ts +4 -5
  33. package/dist/transports/ServiceWorkerRegistrationTransport.d.ts.map +1 -1
  34. package/dist/transports/ServiceWorkerRegistrationTransport.js +12 -13
  35. package/dist/transports/SharedWorkerGlobalScopeTransport.d.ts +2 -2
  36. package/dist/transports/SharedWorkerGlobalScopeTransport.d.ts.map +1 -1
  37. package/dist/transports/SharedWorkerTransport.d.ts +2 -2
  38. package/dist/transports/SharedWorkerTransport.d.ts.map +1 -1
  39. package/dist/transports/WebSocketTransport.d.ts +2 -2
  40. package/dist/transports/WebSocketTransport.d.ts.map +1 -1
  41. package/dist/transports/WebSocketTransport.js +3 -4
  42. package/dist/transports/WindowTransport.d.ts +2 -2
  43. package/dist/transports/WindowTransport.d.ts.map +1 -1
  44. package/dist/transports/WorkerTransport.d.ts +2 -2
  45. package/dist/transports/WorkerTransport.d.ts.map +1 -1
  46. package/package.json +1 -1
@@ -1,10 +1,12 @@
1
- import { IframeSerializeOptions, Transport } from '../fields';
1
+ import { IframeSerializeOptions, MessageItem, Transport } from '../fields';
2
2
  declare const WINDOW_NAME = "[object Window]";
3
3
  declare class RPCAction {
4
4
  private _target;
5
5
  private _brodcastListeners;
6
+ private _brodcastRecord;
6
7
  private _handlers;
7
8
  private _heartbeatTimer;
9
+ private _requestId;
8
10
  private _isConnected;
9
11
  private _lastHeartbeat;
10
12
  private _options;
@@ -12,22 +14,21 @@ declare class RPCAction {
12
14
  private _boundMessageHandler;
13
15
  constructor(_target: Transport<boolean>, options?: RPCOptionsType);
14
16
  destroy(): void;
15
- broadcast<T>(options?: Omit<RequestOptions<T>, 'retry'>): void;
17
+ broadcast<T>(options?: Omit<RequestOptions<T>, 'retry'>): MessageItem;
16
18
  config(options: Omit<RPCOptionsType, 'onConnect' | 'onDisconnect'>): void;
17
19
  on<T extends ActionFunType>(type: PropertyKey, handler: T): void;
18
20
  onBrodcast(listener: BrodcastItem): void;
19
21
  request<T = unknown>(type: PropertyKey, options?: RequestOptions<T>): Promise<unknown>;
20
22
  private _abort;
21
- private _createRequestId;
23
+ private _baseMessage;
22
24
  private _isOriginAllowed;
23
25
  private _messageHandler;
24
26
  private _startHeartbeat;
25
27
  }
26
28
  export { WINDOW_NAME };
27
29
  export default RPCAction;
28
- export type RPCOptionsType = {
30
+ export type RPCOptionsType = Pick<MessageItem, 'channel'> & {
29
31
  allowedOrigins?: string[];
30
- channel?: string;
31
32
  heartbeatInterval?: number;
32
33
  heartbeatTimeout?: number;
33
34
  retryTimeout?: number;
@@ -36,8 +37,8 @@ export type RPCOptionsType = {
36
37
  onDisconnect?: (destroy?: boolean) => void;
37
38
  };
38
39
  export type ActionFunType = (payload?: any, info?: MessageInfo) => any;
39
- export type BrodcastItem = (value: unknown, info?: MessageInfo) => void;
40
- export type RequestOptions<T = unknown> = IframeSerializeOptions & {
40
+ export type BrodcastItem = (value: unknown, info?: MessageInfo & Pick<MessageItem, 'requestId' | 'sign'>) => void;
41
+ export type RequestOptions<T = unknown> = IframeSerializeOptions & Pick<MessageItem, 'requestId' | 'sign'> & {
41
42
  payload?: T;
42
43
  retry?: number;
43
44
  };
@@ -1 +1 @@
1
- {"version":3,"file":"RPCAction.d.ts","sourceRoot":"","sources":["../../src/core/RPCAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAI7D,QAAA,MAAM,WAAW,oBAAoB,CAAA;AAarC,cAAM,SAAS;IAWX,OAAO,CAAC,OAAO;IAVjB,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,eAAe,CAA8B;IACrD,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;IAc1B,OAAO;IAUP,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;IASvD,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;IA6CnE,OAAO,CAAC,MAAM;IAWd,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,eAAe;IAmFvB,OAAO,CAAC,eAAe;CAsBxB;AAED,OAAO,EAAE,WAAW,EAAE,CAAA;AAEtB,eAAe,SAAS,CAAA;AAExB,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,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;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;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;IAIpB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,eAAe;IAoFvB,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;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,4 +1,5 @@
1
1
  import { isKey } from "../utils.js";
2
+ import { receiptStore } from "./receiptStore.js";
2
3
  const RPC_SIGN = 'RPCActionSign';
3
4
  const WINDOW_NAME = '[object Window]';
4
5
  const defaultOptions = {
@@ -12,8 +13,10 @@ const getOrigin = (url)=>'string' == typeof self?.location?.origin ? new URL(url
12
13
  class RPCAction {
13
14
  _target;
14
15
  _brodcastListeners = [];
16
+ _brodcastRecord = [];
15
17
  _handlers = {};
16
18
  _heartbeatTimer = null;
19
+ _requestId = '';
17
20
  _isConnected = false;
18
21
  _lastHeartbeat = Date.now();
19
22
  _options = {};
@@ -21,6 +24,7 @@ class RPCAction {
21
24
  _boundMessageHandler = this._messageHandler.bind(this);
22
25
  constructor(_target, options){
23
26
  this._target = _target;
27
+ this._requestId = receiptStore.create();
24
28
  this._options = {
25
29
  ...defaultOptions,
26
30
  ...options,
@@ -33,23 +37,33 @@ class RPCAction {
33
37
  clearInterval(this._heartbeatTimer ?? void 0);
34
38
  this._target.onremove(this._boundMessageHandler);
35
39
  this._abort(true);
40
+ this._brodcastRecord.forEach((brodkey)=>{
41
+ const [sign, requestId] = brodkey.split(':');
42
+ if (sign === this._requestId) receiptStore.minus(requestId);
43
+ });
44
+ receiptStore.minus(this._requestId);
36
45
  this._brodcastListeners = [];
46
+ this._brodcastRecord = [];
37
47
  this._handlers = {};
38
48
  this._heartbeatTimer = null;
49
+ this._requestId = '';
39
50
  }
40
51
  broadcast(options) {
41
- const { payload, ...ops } = options ?? {};
52
+ const { payload, sign, requestId = '', ...ops } = options ?? {};
42
53
  const { channel } = this._options;
43
- this._target.postMessage({
44
- __RPC__: RPC_SIGN,
54
+ const info = this._baseMessage({
45
55
  broadcast: true,
46
56
  kind: 'request',
57
+ requestId: '' === requestId ? receiptStore.create() : requestId,
47
58
  channel,
48
59
  payload
49
- }, {
60
+ });
61
+ if (sign) info.sign = sign;
62
+ this._target.postMessage(info, {
50
63
  ...ops,
51
64
  targetOrigin: ops.targetOrigin ?? self?.location?.origin
52
65
  });
66
+ return info;
53
67
  }
54
68
  config(options) {
55
69
  this._options = {
@@ -68,9 +82,10 @@ class RPCAction {
68
82
  const { channel, retryTimeout = defaultOptions.retryTimeout, retryTimes = defaultOptions.retryTimes } = this._options;
69
83
  return new Promise((resolve, reject)=>{
70
84
  if (!this._isConnected) return void reject(new Error(`[RPC] 连接未建立,无法请求:${type.toString()}`));
71
- const requestId = this._createRequestId();
85
+ const requestId = receiptStore.create();
72
86
  const timer = setTimeout(()=>{
73
87
  this._pending.delete(requestId);
88
+ receiptStore.minus(requestId);
74
89
  if (retry < retryTimes) resolve(this.request(type, {
75
90
  ...options,
76
91
  retry: retry + 1
@@ -89,14 +104,14 @@ class RPCAction {
89
104
  },
90
105
  timer
91
106
  });
92
- this._target.postMessage({
93
- __RPC__: RPC_SIGN,
107
+ const info = this._baseMessage({
94
108
  kind: 'request',
95
109
  channel,
96
110
  payload,
97
111
  requestId,
98
112
  type
99
- }, {
113
+ });
114
+ this._target.postMessage(info, {
100
115
  ...ops,
101
116
  targetOrigin: ops.targetOrigin ?? self?.location?.origin
102
117
  });
@@ -105,25 +120,29 @@ class RPCAction {
105
120
  _abort(destroy) {
106
121
  this._isConnected = false;
107
122
  this._options?.onDisconnect?.(destroy);
108
- this._pending.forEach(({ reject, timer })=>{
123
+ this._pending.forEach(({ reject, timer }, requestId)=>{
109
124
  clearTimeout(timer);
125
+ receiptStore.minus(requestId);
110
126
  reject(new Error('[RPC] 连接已断开,请求已取消'));
111
127
  });
112
128
  this._pending.clear();
113
129
  }
114
- _createRequestId() {
115
- const requestId = Math.random().toString(36).slice(2, 10);
116
- return this._pending.has(requestId) ? this._createRequestId() : requestId;
130
+ _baseMessage(data) {
131
+ return {
132
+ ...data,
133
+ __RPC__: RPC_SIGN,
134
+ sign: this._requestId
135
+ };
117
136
  }
118
137
  _isOriginAllowed(origin) {
119
138
  return this._options?.allowedOrigins?.some((item)=>'*' === item || getOrigin(item) === getOrigin(origin)) ?? false;
120
139
  }
121
140
  _messageHandler(event) {
122
141
  const { data, origin, ports, source, wait } = event;
123
- const { __RPC__, broadcast, channel, error, heartbeat, kind, payload, requestId, type } = data ?? {};
142
+ const { __RPC__, broadcast, channel, error, heartbeat, kind, payload, requestId, sign, type } = data ?? {};
124
143
  if (__RPC__ !== RPC_SIGN) return;
125
144
  if (this._options?.channel !== channel) return;
126
- if (!this._target.is(source)) return;
145
+ if (!this._target.is(source, data)) return;
127
146
  if (this._target.getType() === WINDOW_NAME && !this._isOriginAllowed(origin)) return;
128
147
  if (heartbeat) {
129
148
  this._lastHeartbeat = Date.now();
@@ -138,28 +157,46 @@ class RPCAction {
138
157
  ports,
139
158
  source
140
159
  };
141
- if (broadcast) return void this._brodcastListeners.forEach((listener)=>listener(payload, info));
160
+ if (broadcast) {
161
+ const brodsign = [
162
+ sign,
163
+ requestId
164
+ ].filter(Boolean);
165
+ const brodkey = brodsign.join(':');
166
+ if (2 === brodsign.length && !this._brodcastRecord.includes(brodkey)) {
167
+ this._brodcastRecord.push(brodkey);
168
+ this._brodcastListeners.forEach((listener)=>listener(payload, {
169
+ ...info,
170
+ requestId,
171
+ sign
172
+ }));
173
+ }
174
+ return;
175
+ }
142
176
  const pending = requestId ? this._pending.get(requestId) : void 0;
143
177
  if (requestId && pending) {
144
178
  const { resolve, reject } = pending;
145
179
  this._pending.delete(requestId);
180
+ receiptStore.minus(requestId);
146
181
  if (void 0 !== error) reject(new Error(error));
147
182
  else resolve(payload);
148
183
  return;
149
184
  }
150
185
  if ('request' !== kind) return;
151
186
  const handler = type && isKey(type, this._handlers) ? this._handlers[type] : void 0;
187
+ const base = this._baseMessage({
188
+ kind: 'response',
189
+ channel,
190
+ requestId,
191
+ type
192
+ });
152
193
  if (handler) Promise.resolve().then(()=>{
153
194
  const result = handler(payload, info);
154
195
  return result;
155
196
  }).then((result)=>{
156
197
  this._target.postMessage({
157
- __RPC__: RPC_SIGN,
158
- kind: 'response',
159
- payload: result,
160
- channel,
161
- requestId,
162
- type
198
+ ...base,
199
+ payload: result
163
200
  }, {
164
201
  targetOrigin: origin
165
202
  });
@@ -167,12 +204,9 @@ class RPCAction {
167
204
  }).catch((err)=>{
168
205
  const message = err instanceof Error ? err.message : '[RPC] 处理消息时发生错误';
169
206
  this._target.postMessage({
170
- __RPC__: RPC_SIGN,
207
+ ...base,
171
208
  error: message,
172
- kind: 'response',
173
- payload: '',
174
- channel,
175
- requestId
209
+ payload: ''
176
210
  }, {
177
211
  targetOrigin: origin
178
212
  });
@@ -180,13 +214,13 @@ class RPCAction {
180
214
  }
181
215
  _startHeartbeat() {
182
216
  const { channel, heartbeatInterval = defaultOptions.heartbeatInterval, heartbeatTimeout = defaultOptions.heartbeatTimeout } = this._options;
217
+ const info = this._baseMessage({
218
+ heartbeat: true,
219
+ kind: 'request',
220
+ channel
221
+ });
183
222
  const intervalLoops = ()=>{
184
- this._target.postMessage({
185
- __RPC__: RPC_SIGN,
186
- heartbeat: true,
187
- kind: 'request',
188
- channel
189
- });
223
+ this._target.postMessage(info);
190
224
  if (!this._isConnected) return;
191
225
  if (Date.now() - this._lastHeartbeat > heartbeatTimeout) this._abort();
192
226
  };
@@ -0,0 +1,10 @@
1
+ export declare const receiptStore: {
2
+ create(): string;
3
+ getReceipt(id: string): number;
4
+ getSnapshot(): Record<string, number>;
5
+ increasing(id: string): void;
6
+ has(id: string): boolean;
7
+ minus(id: string): void;
8
+ subscribe(listener: () => void): () => void;
9
+ };
10
+ //# sourceMappingURL=receiptStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receiptStore.d.ts","sourceRoot":"","sources":["../../src/core/receiptStore.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,YAAY;;mBAUR,MAAM;;mBASN,MAAM;YAMb,MAAM;cAGJ,MAAM;wBAYI,MAAM,IAAI;CAM/B,CAAA"}
@@ -0,0 +1,63 @@
1
+ let record = {};
2
+ let listeners = [];
3
+ function createId() {
4
+ const id = crypto.randomUUID();
5
+ return receiptStore.has(id) ? createId() : id;
6
+ }
7
+ const emitChange = ()=>{
8
+ for (const listener of listeners)listener();
9
+ };
10
+ const receiptStore = {
11
+ create () {
12
+ const id = createId();
13
+ record = {
14
+ ...record,
15
+ [id]: 0
16
+ };
17
+ emitChange();
18
+ return id;
19
+ },
20
+ getReceipt (id) {
21
+ return id in record ? record[id] : -1;
22
+ },
23
+ getSnapshot () {
24
+ return record;
25
+ },
26
+ increasing (id) {
27
+ if (id in record) {
28
+ record = {
29
+ ...record,
30
+ [id]: record[id] + 1
31
+ };
32
+ emitChange();
33
+ }
34
+ },
35
+ has (id) {
36
+ return id in record;
37
+ },
38
+ minus (id) {
39
+ const num = receiptStore.getReceipt(id);
40
+ if (num < 0) return;
41
+ if (num <= 1) {
42
+ const newdata = {
43
+ ...record
44
+ };
45
+ Reflect.deleteProperty(newdata, id);
46
+ record = newdata;
47
+ } else record = {
48
+ ...record,
49
+ [id]: num - 1
50
+ };
51
+ emitChange();
52
+ },
53
+ subscribe (listener) {
54
+ listeners = [
55
+ ...listeners,
56
+ listener
57
+ ];
58
+ return ()=>{
59
+ listeners = listeners.filter((l)=>l !== listener);
60
+ };
61
+ }
62
+ };
63
+ export { receiptStore };
@@ -5,13 +5,13 @@ import { ActionRecord } from './RPCDecorator';
5
5
  export declare function cacheImport(item?: TransportItem): Promise<{
6
6
  default: new (target: any, options?: FactoryOptions) => Transport<boolean>;
7
7
  } | undefined>;
8
- export declare function createRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: unknown, config?: EntryOptions<EVENT, CONSUME>): Promise<readonly [Readonly<Omit<import("./RPCAction").default, "destroy" | "on" | "onBrodcast" | "request"> & Pick<Transport<boolean>, "getType" | "upset"> & {
8
+ export declare function createRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: unknown, config?: EntryOptions<EVENT, CONSUME>): Promise<readonly [Readonly<Omit<import("./RPCAction").default, "request" | "destroy" | "on" | "onBrodcast"> & Pick<Transport<boolean>, "getType" | "upset"> & {
9
9
  request: <K extends keyof CONSUME>(...args: Parameters<CONSUME[K]> extends [] ? [keyname: K, reqops?: (Parameters<CONSUME[K]> extends [] ? Omit<import("./RPCAction").RequestOptions, "payload"> & {
10
10
  payload?: never;
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,6 +1,6 @@
1
1
  import { ActionRecord } from '../RPCDecorator';
2
2
  import { EntryOptions } from '../transports/fields';
3
- export declare function createBroadcastChannelRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: BroadcastChannel, config?: EntryOptions<EVENT, CONSUME>): readonly [Readonly<Omit<import("../core/RPCAction").default, "destroy" | "on" | "onBrodcast" | "request"> & Pick<import("../fields").Transport<boolean>, "getType" | "upset"> & {
3
+ export declare function createBroadcastChannelRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: BroadcastChannel, config?: EntryOptions<EVENT, CONSUME>): readonly [Readonly<Omit<import("../core/RPCAction").default, "request" | "destroy" | "on" | "onBrodcast"> & Pick<import("../fields").Transport<boolean>, "getType" | "upset"> & {
4
4
  request: never;
5
5
  }>, () => void];
6
6
  //# sourceMappingURL=broadcastChannel.d.ts.map
@@ -1,12 +1,12 @@
1
1
  import { ActionRecord } from '../RPCDecorator';
2
2
  import { EntryOptions } from '../transports/fields';
3
- export declare function createDedicatedWorkerGlobalScopeRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: DedicatedWorkerGlobalScope, config?: EntryOptions<EVENT, CONSUME>): readonly [Readonly<Omit<import("../core/RPCAction").default, "destroy" | "on" | "onBrodcast" | "request"> & Pick<import("../fields").Transport<boolean>, "getType" | "upset"> & {
3
+ export declare function createDedicatedWorkerGlobalScopeRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: DedicatedWorkerGlobalScope, config?: EntryOptions<EVENT, CONSUME>): readonly [Readonly<Omit<import("../core/RPCAction").default, "request" | "destroy" | "on" | "onBrodcast"> & Pick<import("../fields").Transport<boolean>, "getType" | "upset"> & {
4
4
  request: <K extends keyof CONSUME>(...args: Parameters<CONSUME[K]> extends [] ? [keyname: K, reqops?: (Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
5
5
  payload?: never;
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
  } & {
@@ -1,12 +1,12 @@
1
1
  import { ActionRecord } from '../RPCDecorator';
2
2
  import { EntryOptions } from '../transports/fields';
3
- export declare function createServiceWorkerGlobalScopeRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: ServiceWorkerGlobalScope, config?: EntryOptions<EVENT, CONSUME>): readonly [Readonly<Omit<import("../core/RPCAction").default, "destroy" | "on" | "onBrodcast" | "request"> & Pick<import("../fields").Transport<boolean>, "getType" | "upset"> & {
3
+ export declare function createServiceWorkerGlobalScopeRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: ServiceWorkerGlobalScope, config?: EntryOptions<EVENT, CONSUME>): readonly [Readonly<Omit<import("../core/RPCAction").default, "request" | "destroy" | "on" | "onBrodcast"> & Pick<import("../fields").Transport<boolean>, "getType" | "upset"> & {
4
4
  request: <K extends keyof CONSUME>(...args: Parameters<CONSUME[K]> extends [] ? [keyname: K, reqops?: (Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
5
5
  payload?: never;
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
  } & {
@@ -1,12 +1,12 @@
1
1
  import { ActionRecord } from '../RPCDecorator';
2
2
  import { EntryOptions } from '../transports/fields';
3
- export declare function createServiceWorkerRegistrationRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: ServiceWorkerRegistration, config?: EntryOptions<EVENT, CONSUME>): readonly [Readonly<Omit<import("../core/RPCAction").default, "destroy" | "on" | "onBrodcast" | "request"> & Pick<import("../fields").Transport<boolean>, "getType" | "upset"> & {
3
+ export declare function createServiceWorkerRegistrationRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: ServiceWorkerRegistration, config?: EntryOptions<EVENT, CONSUME>): readonly [Readonly<Omit<import("../core/RPCAction").default, "request" | "destroy" | "on" | "onBrodcast"> & Pick<import("../fields").Transport<boolean>, "getType" | "upset"> & {
4
4
  request: <K extends keyof CONSUME>(...args: Parameters<CONSUME[K]> extends [] ? [keyname: K, reqops?: (Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
5
5
  payload?: never;
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
  } & {
@@ -1,12 +1,12 @@
1
1
  import { ActionRecord } from '../RPCDecorator';
2
2
  import { EntryOptions } from '../transports/fields';
3
- export declare function createSharedWorkerRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: SharedWorker, config?: EntryOptions<EVENT, CONSUME>): readonly [Readonly<Omit<import("../core/RPCAction").default, "destroy" | "on" | "onBrodcast" | "request"> & Pick<import("../fields").Transport<boolean>, "getType" | "upset"> & {
3
+ export declare function createSharedWorkerRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: SharedWorker, config?: EntryOptions<EVENT, CONSUME>): readonly [Readonly<Omit<import("../core/RPCAction").default, "request" | "destroy" | "on" | "onBrodcast"> & Pick<import("../fields").Transport<boolean>, "getType" | "upset"> & {
4
4
  request: <K extends keyof CONSUME>(...args: Parameters<CONSUME[K]> extends [] ? [keyname: K, reqops?: (Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
5
5
  payload?: never;
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
  } & {
@@ -1,12 +1,12 @@
1
1
  import { ActionRecord } from '../RPCDecorator';
2
2
  import { EntryOptions } from '../transports/fields';
3
- export declare function createSharedWorkerGlobalScopeRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: SharedWorkerGlobalScope, config?: EntryOptions<EVENT, CONSUME>): readonly [Readonly<Omit<import("../core/RPCAction").default, "destroy" | "on" | "onBrodcast" | "request"> & Pick<import("../fields").Transport<boolean>, "getType" | "upset"> & {
3
+ export declare function createSharedWorkerGlobalScopeRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: SharedWorkerGlobalScope, config?: EntryOptions<EVENT, CONSUME>): readonly [Readonly<Omit<import("../core/RPCAction").default, "request" | "destroy" | "on" | "onBrodcast"> & Pick<import("../fields").Transport<boolean>, "getType" | "upset"> & {
4
4
  request: <K extends keyof CONSUME>(...args: Parameters<CONSUME[K]> extends [] ? [keyname: K, reqops?: (Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
5
5
  payload?: never;
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
  } & {
@@ -1,12 +1,12 @@
1
1
  import { ActionRecord } from '../RPCDecorator';
2
2
  import { EntryOptions } from '../transports/fields';
3
- export declare function createWebSocketRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: WebSocket, config?: EntryOptions<EVENT, CONSUME>): readonly [Readonly<Omit<import("../core/RPCAction").default, "destroy" | "on" | "onBrodcast" | "request"> & Pick<import("../fields").Transport<boolean>, "getType" | "upset"> & {
3
+ export declare function createWebSocketRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: WebSocket, config?: EntryOptions<EVENT, CONSUME>): readonly [Readonly<Omit<import("../core/RPCAction").default, "request" | "destroy" | "on" | "onBrodcast"> & Pick<import("../fields").Transport<boolean>, "getType" | "upset"> & {
4
4
  request: <K extends keyof CONSUME>(...args: Parameters<CONSUME[K]> extends [] ? [keyname: K, reqops?: (Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
5
5
  payload?: never;
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
  } & {
@@ -1,12 +1,12 @@
1
1
  import { ActionRecord } from '../RPCDecorator';
2
2
  import { EntryOptions } from '../transports/fields';
3
- export declare function createWindowRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: Window | HTMLIFrameElement, config?: EntryOptions<EVENT, CONSUME>): readonly [Readonly<Omit<import("../core/RPCAction").default, "destroy" | "on" | "onBrodcast" | "request"> & Pick<import("../fields").Transport<boolean>, "getType" | "upset"> & {
3
+ export declare function createWindowRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: Window | HTMLIFrameElement, config?: EntryOptions<EVENT, CONSUME>): readonly [Readonly<Omit<import("../core/RPCAction").default, "request" | "destroy" | "on" | "onBrodcast"> & Pick<import("../fields").Transport<boolean>, "getType" | "upset"> & {
4
4
  request: <K extends keyof CONSUME>(...args: Parameters<CONSUME[K]> extends [] ? [keyname: K, reqops?: (Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
5
5
  payload?: never;
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
  } & {
@@ -1,12 +1,12 @@
1
1
  import { ActionRecord } from '../RPCDecorator';
2
2
  import { EntryOptions } from '../transports/fields';
3
- export declare function createWorkerRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: Worker, config?: EntryOptions<EVENT, CONSUME>): readonly [Readonly<Omit<import("../core/RPCAction").default, "destroy" | "on" | "onBrodcast" | "request"> & Pick<import("../fields").Transport<boolean>, "getType" | "upset"> & {
3
+ export declare function createWorkerRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: Worker, config?: EntryOptions<EVENT, CONSUME>): readonly [Readonly<Omit<import("../core/RPCAction").default, "request" | "destroy" | "on" | "onBrodcast"> & Pick<import("../fields").Transport<boolean>, "getType" | "upset"> & {
4
4
  request: <K extends keyof CONSUME>(...args: Parameters<CONSUME[K]> extends [] ? [keyname: K, reqops?: (Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
5
5
  payload?: never;
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
@@ -16,6 +16,19 @@ export declare const TARGET_TYPE_STRINGS: Readonly<{
16
16
  export interface FactoryOptions {
17
17
  message?: boolean | AddEventListenerOptions;
18
18
  }
19
+ export type MessageItem = {
20
+ __RPC__?: string;
21
+ broadcast?: boolean;
22
+ channel?: string;
23
+ error?: string;
24
+ heartbeat?: boolean;
25
+ kind?: 'request' | 'response';
26
+ requestId?: string;
27
+ payload?: unknown;
28
+ scope?: string;
29
+ sign?: string;
30
+ type?: PropertyKey;
31
+ };
19
32
  export interface RPCInstanceContextIns {
20
33
  brodcastScope?: <T>(data: RequestOptions<T>, options?: ScopeProps) => void;
21
34
  mount?: (item: RPCItem, name?: string) => void;
@@ -23,11 +36,11 @@ export interface RPCInstanceContextIns {
23
36
  export interface Transport<ONLYBD extends boolean = false> {
24
37
  destroy: () => void;
25
38
  getType: () => string;
26
- is: (source: MessageEventSource | null) => boolean;
39
+ is: (source: MessageEventSource | null, message?: MessageItem) => boolean;
27
40
  observe: (close?: () => void) => void;
28
41
  onmessage: (listener: ListenerType) => void;
29
42
  onremove: (listener: ListenerType) => void;
30
- postMessage: (message: unknown, options?: IframeSerializeOptions) => void;
43
+ postMessage: (message: MessageItem, options?: IframeSerializeOptions) => void;
31
44
  upset: (options: FactoryOptions) => void;
32
45
  onlyBrod?: ONLYBD;
33
46
  }
@@ -1 +1 @@
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,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,WAAW,SAAS,CAAC,MAAM,SAAS,OAAO,GAAG,KAAK;IACvD,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,EAAE,MAAM,MAAM,CAAA;IACrB,EAAE,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,KAAK,OAAO,CAAA;IAClD,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,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,KAAK,IAAI,CAAA;IACzE,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;IAAE,IAAI,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,KACnF,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"}
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,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,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,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/hooks.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { ActionRecord, DecoratorContext } from './RPCDecorator';
2
2
  declare const useRPC: <EVENT extends ActionRecord, CONSUME extends ActionRecord>({ init, ...ops }: RPCHooksOptions<EVENT, CONSUME>) => Readonly<{
3
- rpc: Readonly<Omit<Readonly<Omit<import("./RPCAction").default, "on" | "request"> & Pick<import("./RPCFactory").default<import("./RPCFactory").TargetType>, "getType" | "upset"> & {
3
+ rpc: Readonly<Omit<Readonly<Omit<import("./RPCAction").default, "request" | "on"> & Pick<import("./RPCFactory").default<import("./RPCFactory").TargetType>, "getType" | "upset"> & {
4
4
  request: <K extends keyof CONSUME>(...args: Parameters<CONSUME[K]> extends [] ? [keyname: K, reqops?: (Parameters<CONSUME[K]> extends [] ? Omit<import("./RPCAction").RequestOptions, "payload"> & {
5
5
  payload?: never;
6
6
  } : StructuredSerializeOptions & {
@@ -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
  }, []);
@@ -3,13 +3,13 @@ import { Transport } from '../fields';
3
3
  import { FactoryOptions } from '../transports/BaseTransport';
4
4
  import { EntryOptions } from '../transports/fields';
5
5
  declare const useRPC: <TARGET extends TargetInit, EVENT extends ActionRecord, CONSUME extends ActionRecord>(ops: RPCHooksOptions<TARGET, EVENT, CONSUME> | RPCDriveOptions<TARGET, EVENT, CONSUME>) => Readonly<{
6
- rpc: [[TARGET] extends [null] ? null : TARGET extends BroadcastChannel ? Transport<true> : Transport<false>] extends [null] ? Record<never, never> : Readonly<Omit<import("../core/RPCAction").default, "destroy" | "on" | "onBrodcast" | "request"> & Pick<Transport<boolean>, "getType" | "upset"> & {
6
+ rpc: [[TARGET] extends [null] ? null : TARGET extends BroadcastChannel ? Transport<true> : Transport<false>] extends [null] ? Record<never, never> : Readonly<Omit<import("../core/RPCAction").default, "request" | "destroy" | "on" | "onBrodcast"> & Pick<Transport<boolean>, "getType" | "upset"> & {
7
7
  request: (([TARGET] extends [null] ? null : TARGET extends BroadcastChannel ? Transport<true> : Transport<false>) extends infer T ? T extends ([TARGET] extends [null] ? null : TARGET extends BroadcastChannel ? Transport<true> : Transport<false>) ? T extends Transport<infer B extends boolean> ? B : never : never : never) extends true ? never : <K extends keyof CONSUME>(...args: Parameters<CONSUME[K]> extends [] ? [keyname: K, reqops?: (Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
8
8
  payload?: never;
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
  } & {
@@ -1,4 +1,4 @@
1
- import { IframeSerializeOptions, ListenerType, Transport } from '../fields';
1
+ import { IframeSerializeOptions, ListenerType, MessageItem, Transport } from '../fields';
2
2
  declare abstract class BaseTransport<T extends TargetType = TargetType, ONLYBD extends boolean = false> implements Transport<ONLYBD> {
3
3
  protected _target: T;
4
4
  protected _options: FactoryOptions;
@@ -11,7 +11,7 @@ declare abstract class BaseTransport<T extends TargetType = TargetType, ONLYBD e
11
11
  abstract observe(close?: () => void): void;
12
12
  abstract onmessage(listener: ListenerType): void;
13
13
  abstract onremove(listener: ListenerType): void;
14
- abstract postMessage(message: unknown, options?: IframeSerializeOptions): void;
14
+ abstract postMessage(message: MessageItem, options?: IframeSerializeOptions): void;
15
15
  }
16
16
  export default BaseTransport;
17
17
  export interface FactoryOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"BaseTransport.d.ts","sourceRoot":"","sources":["../../src/transports/BaseTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAM3E,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,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAC/E;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;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,4 +1,4 @@
1
- import { ListenerType } from '../fields';
1
+ import { ListenerType, MessageItem } from '../fields';
2
2
  import BaseTransport from './BaseTransport';
3
3
  declare class BroadcastChannelTransport extends BaseTransport<BroadcastChannel, true> {
4
4
  readonly onlyBrod = true;
@@ -6,7 +6,7 @@ declare class BroadcastChannelTransport extends BaseTransport<BroadcastChannel,
6
6
  observe(): void;
7
7
  onmessage(listener: ListenerType): void;
8
8
  onremove(listener: ListenerType): void;
9
- postMessage(message: unknown): void;
9
+ postMessage(message: MessageItem): void;
10
10
  }
11
11
  export default BroadcastChannelTransport;
12
12
  //# sourceMappingURL=BroadcastChannelTransport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BroadcastChannelTransport.d.ts","sourceRoot":"","sources":["../../src/transports/BroadcastChannelTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,yBAA0B,SAAQ,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC;IAC3E,SAAkB,QAAQ,QAAO;IAEjC,OAAO;IAKP,OAAO,IAAI,IAAI;IAEf,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIvC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAGpC;AAED,eAAe,yBAAyB,CAAA"}
1
+ {"version":3,"file":"BroadcastChannelTransport.d.ts","sourceRoot":"","sources":["../../src/transports/BroadcastChannelTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,yBAA0B,SAAQ,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC;IAC3E,SAAkB,QAAQ,QAAO;IAEjC,OAAO;IAKP,OAAO,IAAI,IAAI;IAEf,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIvC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;CAGxC;AAED,eAAe,yBAAyB,CAAA"}
@@ -1,11 +1,11 @@
1
- import { IframeSerializeOptions, ListenerType } from '../fields';
1
+ import { IframeSerializeOptions, ListenerType, MessageItem } from '../fields';
2
2
  import BaseTransport from './BaseTransport';
3
3
  declare class DedicatedWorkerGlobalScopeTransport extends BaseTransport<DedicatedWorkerGlobalScope> {
4
4
  destroy(): void;
5
5
  observe(): void;
6
6
  onmessage(listener: ListenerType): void;
7
7
  onremove(listener: ListenerType): void;
8
- postMessage(message: unknown, options?: IframeSerializeOptions): void;
8
+ postMessage(message: MessageItem, options?: IframeSerializeOptions): void;
9
9
  }
10
10
  export default DedicatedWorkerGlobalScopeTransport;
11
11
  //# sourceMappingURL=DedicatedWorkerGlobalScopeTransport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DedicatedWorkerGlobalScopeTransport.d.ts","sourceRoot":"","sources":["../../src/transports/DedicatedWorkerGlobalScopeTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,mCAAoC,SAAQ,aAAa,CAAC,0BAA0B,CAAC;IAEzF,OAAO;IAKP,OAAO,IAAI,IAAI;IAEf,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIvC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAItE;AAED,eAAe,mCAAmC,CAAA"}
1
+ {"version":3,"file":"DedicatedWorkerGlobalScopeTransport.d.ts","sourceRoot":"","sources":["../../src/transports/DedicatedWorkerGlobalScopeTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC7E,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,mCAAoC,SAAQ,aAAa,CAAC,0BAA0B,CAAC;IAEzF,OAAO;IAKP,OAAO,IAAI,IAAI;IAEf,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;CAI1E;AAED,eAAe,mCAAmC,CAAA"}
@@ -1,4 +1,4 @@
1
- import { IframeSerializeOptions, ListenerType } from '../fields';
1
+ import { IframeSerializeOptions, ListenerType, MessageItem } from '../fields';
2
2
  import BaseTransport from './BaseTransport';
3
3
  declare class ServiceWorkerGlobalScopeTransport extends BaseTransport<ServiceWorkerGlobalScope> {
4
4
  private _onconnect;
@@ -7,7 +7,8 @@ declare class ServiceWorkerGlobalScopeTransport extends BaseTransport<ServiceWor
7
7
  observe(): void;
8
8
  onmessage(listener: ListenerType): void;
9
9
  onremove(): void;
10
- postMessage(message: unknown, options?: IframeSerializeOptions): void;
10
+ postMessage(message: MessageItem, options?: IframeSerializeOptions): void;
11
11
  }
12
+ export {};
12
13
  export default ServiceWorkerGlobalScopeTransport;
13
14
  //# sourceMappingURL=ServiceWorkerGlobalScopeTransport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceWorkerGlobalScopeTransport.d.ts","sourceRoot":"","sources":["../../src/transports/ServiceWorkerGlobalScopeTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,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,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAYtE;AAED,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"}
@@ -26,11 +26,19 @@ class ServiceWorkerGlobalScopeTransport extends BaseTransport {
26
26
  if (this._onconnect) this._target.removeEventListener('message', this._onconnect, this._options.message);
27
27
  }
28
28
  postMessage(message, options) {
29
+ const msg = {
30
+ ...message,
31
+ scope: self.registration.scope
32
+ };
29
33
  const { transmit, transfer } = options ?? {};
30
- if (transmit) transmit().then((clients)=>clients.forEach((client)=>client.postMessage(message, {
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, {
31
39
  transfer
32
40
  }))).catch(()=>{});
33
- else this._source?.postMessage(message, {
41
+ else this._source?.postMessage(msg, {
34
42
  transfer
35
43
  });
36
44
  }
@@ -1,13 +1,12 @@
1
- import { IframeSerializeOptions, ListenerType } from '../fields';
1
+ import { IframeSerializeOptions, ListenerType, MessageItem } from '../fields';
2
2
  import BaseTransport from './BaseTransport';
3
3
  declare class ServiceWorkerRegistrationTransport extends BaseTransport<ServiceWorkerRegistration> {
4
- private _listener;
5
4
  destroy(): void;
6
- is(source: MessageEventSource | null): source is ServiceWorker;
5
+ is(source: MessageEventSource | null, message?: MessageItem): boolean;
7
6
  observe(): void;
8
7
  onmessage(listener: ListenerType): void;
9
- onremove(): void;
10
- postMessage(message: unknown, options?: IframeSerializeOptions): void;
8
+ onremove(listener: ListenerType): void;
9
+ postMessage(message: MessageItem, options?: IframeSerializeOptions): void;
11
10
  }
12
11
  export default ServiceWorkerRegistrationTransport;
13
12
  //# sourceMappingURL=ServiceWorkerRegistrationTransport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceWorkerRegistrationTransport.d.ts","sourceRoot":"","sources":["../../src/transports/ServiceWorkerRegistrationTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAI3C,cAAM,kCAAmC,SAAQ,aAAa,CAAC,yBAAyB,CAAC;IACvF,OAAO,CAAC,SAAS,CAA+C;IAIhE,OAAO;IAKP,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAQpC,OAAO,IAAI,IAAI;IAEf,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAuBvC,QAAQ,IAAI,IAAI;IAKhB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAItE;AAED,eAAe,kCAAkC,CAAA"}
1
+ {"version":3,"file":"ServiceWorkerRegistrationTransport.d.ts","sourceRoot":"","sources":["../../src/transports/ServiceWorkerRegistrationTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC7E,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAI3C,cAAM,kCAAmC,SAAQ,aAAa,CAAC,yBAAyB,CAAC;IACvF,OAAO;IAIP,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,EAAE,OAAO,CAAC,EAAE,WAAW;IAO3D,OAAO,IAAI,IAAI;IAEf,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;CAmB1E;AAED,eAAe,kCAAkC,CAAA"}
@@ -1,30 +1,29 @@
1
1
  import BaseTransport from "./BaseTransport.js";
2
2
  class ServiceWorkerRegistrationTransport extends BaseTransport {
3
- _listener = null;
4
3
  destroy() {
5
4
  this._target.unregister().catch(()=>{});
6
5
  }
7
- is(source) {
8
- return source instanceof ServiceWorker;
6
+ is(source, message) {
7
+ return source instanceof ServiceWorker && message?.scope === this._target.scope;
9
8
  }
10
9
  observe() {}
11
10
  onmessage(listener) {
12
- this._listener = (event)=>{
13
- navigator.serviceWorker.getRegistrations().then((registrations)=>{
14
- const matched = registrations.find((registration)=>event.source === registration.active || event.source === registration.installing || event.source === registration.waiting);
15
- if (Object.is(matched, this._target)) listener(event);
16
- }).catch(()=>{});
17
- };
18
- navigator.serviceWorker.addEventListener('message', this._listener, this._options.message);
11
+ navigator.serviceWorker.addEventListener('message', listener, this._options.message);
19
12
  }
20
- onremove() {
21
- if (this._listener) navigator.serviceWorker.removeEventListener('message', this._listener, this._options.message);
13
+ onremove(listener) {
14
+ navigator.serviceWorker.removeEventListener('message', listener, this._options.message);
22
15
  }
23
16
  postMessage(message, options) {
24
17
  const { transfer } = options ?? {};
25
- this._target.active?.postMessage(message, {
18
+ if (message.heartbeat) return void this._target.active?.postMessage(message, {
26
19
  transfer
27
20
  });
21
+ navigator.serviceWorker.getRegistrations().then((registrations)=>{
22
+ const matched = registrations.find((registration)=>registration.scope === this._target.scope && Boolean(registration.active));
23
+ matched?.active?.postMessage(message, {
24
+ transfer
25
+ });
26
+ }).catch(()=>{});
28
27
  }
29
28
  }
30
29
  const transports_ServiceWorkerRegistrationTransport = ServiceWorkerRegistrationTransport;
@@ -1,4 +1,4 @@
1
- import { IframeSerializeOptions, ListenerType } from '../fields';
1
+ import { IframeSerializeOptions, ListenerType, MessageItem } from '../fields';
2
2
  import BaseTransport from './BaseTransport';
3
3
  declare class SharedWorkerGlobalScopeTransport extends BaseTransport<SharedWorkerGlobalScope> {
4
4
  private _onconnect;
@@ -7,7 +7,7 @@ declare class SharedWorkerGlobalScopeTransport extends BaseTransport<SharedWorke
7
7
  observe(): void;
8
8
  onmessage(listener: ListenerType): void;
9
9
  onremove(listener: ListenerType): void;
10
- postMessage(message: unknown, options?: IframeSerializeOptions): void;
10
+ postMessage(message: MessageItem, options?: IframeSerializeOptions): void;
11
11
  }
12
12
  export default SharedWorkerGlobalScopeTransport;
13
13
  //# sourceMappingURL=SharedWorkerGlobalScopeTransport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SharedWorkerGlobalScopeTransport.d.ts","sourceRoot":"","sources":["../../src/transports/SharedWorkerGlobalScopeTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,gCAAiC,SAAQ,aAAa,CAAC,uBAAuB,CAAC;IACnF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,QAAQ,CAA6C;IAE7D,OAAO;IAOP,OAAO,IAAI,IAAI;IAEf,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAevC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAQtC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAQtE;AAED,eAAe,gCAAgC,CAAA"}
1
+ {"version":3,"file":"SharedWorkerGlobalScopeTransport.d.ts","sourceRoot":"","sources":["../../src/transports/SharedWorkerGlobalScopeTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC7E,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,gCAAiC,SAAQ,aAAa,CAAC,uBAAuB,CAAC;IACnF,OAAO,CAAC,UAAU,CAA4C;IAC9D,OAAO,CAAC,QAAQ,CAA6C;IAE7D,OAAO;IAOP,OAAO,IAAI,IAAI;IAEf,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAevC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAQtC,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAQ1E;AAED,eAAe,gCAAgC,CAAA"}
@@ -1,11 +1,11 @@
1
- import { IframeSerializeOptions, ListenerType } from '../fields';
1
+ import { IframeSerializeOptions, ListenerType, MessageItem } from '../fields';
2
2
  import BaseTransport from './BaseTransport';
3
3
  declare class SharedWorkerTransport extends BaseTransport<SharedWorker> {
4
4
  destroy(): void;
5
5
  observe(): void;
6
6
  onmessage(listener: ListenerType): void;
7
7
  onremove(listener: ListenerType): void;
8
- postMessage(message: unknown, options?: IframeSerializeOptions): void;
8
+ postMessage(message: MessageItem, options?: IframeSerializeOptions): void;
9
9
  }
10
10
  export default SharedWorkerTransport;
11
11
  //# sourceMappingURL=SharedWorkerTransport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SharedWorkerTransport.d.ts","sourceRoot":"","sources":["../../src/transports/SharedWorkerTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,qBAAsB,SAAQ,aAAa,CAAC,YAAY,CAAC;IAC7D,OAAO;IAIP,OAAO,IAAI,IAAI;IAEf,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAKvC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAItE;AAED,eAAe,qBAAqB,CAAA"}
1
+ {"version":3,"file":"SharedWorkerTransport.d.ts","sourceRoot":"","sources":["../../src/transports/SharedWorkerTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAC7E,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,qBAAsB,SAAQ,aAAa,CAAC,YAAY,CAAC;IAC7D,OAAO;IAIP,OAAO,IAAI,IAAI;IAEf,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAKvC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAI1E;AAED,eAAe,qBAAqB,CAAA"}
@@ -1,4 +1,4 @@
1
- import { FactoryOptions, ListenerType } from '../fields';
1
+ import { FactoryOptions, ListenerType, MessageItem } from '../fields';
2
2
  import BaseTransport from './BaseTransport';
3
3
  declare class WebSocketTransport extends BaseTransport<WebSocket> {
4
4
  protected _target: WebSocket;
@@ -9,7 +9,7 @@ declare class WebSocketTransport extends BaseTransport<WebSocket> {
9
9
  observe(close?: () => void): void;
10
10
  onmessage(listener: ListenerType): void;
11
11
  onremove(): void;
12
- postMessage(message: unknown): void;
12
+ postMessage(message: MessageItem): void;
13
13
  }
14
14
  export default WebSocketTransport;
15
15
  //# sourceMappingURL=WebSocketTransport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WebSocketTransport.d.ts","sourceRoot":"","sources":["../../src/transports/WebSocketTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxD,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAS3C,cAAM,kBAAmB,SAAQ,aAAa,CAAC,SAAS,CAAC;IAIrD,SAAS,CAAC,OAAO,EAAE,SAAS;IAC5B,SAAS,CAAC,QAAQ,EAAE,cAAc;IAJpC,OAAO,CAAC,UAAU,CAAyB;gBAG/B,OAAO,EAAE,SAAS,EAClB,QAAQ,GAAE,cAAmB;IAczC,OAAO;IAOP,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAMjC,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIvC,QAAQ,IAAI,IAAI;IAIhB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAWpC;AAED,eAAe,kBAAkB,CAAA"}
1
+ {"version":3,"file":"WebSocketTransport.d.ts","sourceRoot":"","sources":["../../src/transports/WebSocketTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACrE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAS3C,cAAM,kBAAmB,SAAQ,aAAa,CAAC,SAAS,CAAC;IAIrD,SAAS,CAAC,OAAO,EAAE,SAAS;IAC5B,SAAS,CAAC,QAAQ,EAAE,cAAc;IAJpC,OAAO,CAAC,UAAU,CAAyB;gBAG/B,OAAO,EAAE,SAAS,EAClB,QAAQ,GAAE,cAAmB;IAczC,OAAO;IAOP,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAMjC,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIvC,QAAQ,IAAI,IAAI;IAIhB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;CAiBxC;AAED,eAAe,kBAAkB,CAAA"}
@@ -1,7 +1,4 @@
1
1
  import BaseTransport from "./BaseTransport.js";
2
- function isSafeBufferSource(data) {
3
- return data instanceof ArrayBuffer || ArrayBuffer.isView(data) && data.buffer instanceof ArrayBuffer;
4
- }
5
2
  class WebSocketTransport extends BaseTransport {
6
3
  _target;
7
4
  _options;
@@ -36,7 +33,9 @@ class WebSocketTransport extends BaseTransport {
36
33
  postMessage(message) {
37
34
  const target = this._target;
38
35
  this._onconnect.then((open)=>{
39
- if (open) target.send(isSafeBufferSource(message) || message instanceof Blob ? message : String(message));
36
+ if (open) try {
37
+ target.send(JSON.stringify(message));
38
+ } catch {}
40
39
  }).catch(()=>{});
41
40
  }
42
41
  }
@@ -1,4 +1,4 @@
1
- import { IframeSerializeOptions, ListenerType } from '../fields';
1
+ import { IframeSerializeOptions, ListenerType, MessageItem } from '../fields';
2
2
  import BaseTransport from './BaseTransport';
3
3
  declare class WindowTransport extends BaseTransport<Window> {
4
4
  private _errorHandle;
@@ -6,7 +6,7 @@ declare class WindowTransport extends BaseTransport<Window> {
6
6
  is(source: MessageEventSource | null): boolean;
7
7
  onmessage(listener: ListenerType): void;
8
8
  onremove(listener: ListenerType): void;
9
- postMessage(message: unknown, options?: IframeSerializeOptions): void;
9
+ postMessage(message: MessageItem, options?: IframeSerializeOptions): void;
10
10
  observe(close?: () => void): void;
11
11
  }
12
12
  export default WindowTransport;
@@ -1 +1 @@
1
- {"version":3,"file":"WindowTransport.d.ts","sourceRoot":"","sources":["../../src/transports/WindowTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChE,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,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;IASrE,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;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,11 +1,11 @@
1
- import { IframeSerializeOptions, ListenerType } from '../fields';
1
+ import { IframeSerializeOptions, ListenerType, MessageItem } from '../fields';
2
2
  import BaseTransport from './BaseTransport';
3
3
  declare class WorkerTransport extends BaseTransport<Worker> {
4
4
  destroy(): void;
5
5
  observe(): void;
6
6
  onmessage(listener: ListenerType): void;
7
7
  onremove(listener: ListenerType): void;
8
- postMessage(message: unknown, options?: IframeSerializeOptions): void;
8
+ postMessage(message: MessageItem, options?: IframeSerializeOptions): void;
9
9
  }
10
10
  export default WorkerTransport;
11
11
  //# sourceMappingURL=WorkerTransport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkerTransport.d.ts","sourceRoot":"","sources":["../../src/transports/WorkerTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,aAAa,MAAM,iBAAiB,CAAA;AAG3C,cAAM,eAAgB,SAAQ,aAAa,CAAC,MAAM,CAAC;IAEjD,OAAO;IAMP,OAAO,IAAI,IAAI;IAEf,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIvC,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI;CAItE;AAED,eAAe,eAAe,CAAA"}
1
+ {"version":3,"file":"WorkerTransport.d.ts","sourceRoot":"","sources":["../../src/transports/WorkerTransport.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;IAEjD,OAAO;IAMP,OAAO,IAAI,IAAI;IAEf,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;CAI1E;AAED,eAAe,eAAe,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@event-chat/rpc",
3
- "version": "0.1.18",
3
+ "version": "0.1.20",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "exports": {