@event-chat/rpc 0.1.17 → 0.1.19

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 (45) hide show
  1. package/dist/core/RPCAction.d.ts +5 -4
  2. package/dist/core/RPCAction.d.ts.map +1 -1
  3. package/dist/core/RPCAction.js +59 -31
  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 +1 -1
  8. package/dist/entry/broadcastChannel.d.ts +1 -1
  9. package/dist/entry/dedicatedWorkerGlobalScope.d.ts +1 -1
  10. package/dist/entry/serviceWorkerGlobalScope.d.ts +1 -1
  11. package/dist/entry/serviceWorkerRegistration.d.ts +1 -1
  12. package/dist/entry/sharedWorker.d.ts +1 -1
  13. package/dist/entry/sharedWorkerGlobalScope.d.ts +1 -1
  14. package/dist/entry/webSocket.d.ts +1 -1
  15. package/dist/entry/window.d.ts +1 -1
  16. package/dist/entry/worker.d.ts +1 -1
  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/hooks.d.ts +1 -1
  21. package/dist/transports/BaseTransport.d.ts +2 -2
  22. package/dist/transports/BaseTransport.d.ts.map +1 -1
  23. package/dist/transports/BroadcastChannelTransport.d.ts +2 -2
  24. package/dist/transports/BroadcastChannelTransport.d.ts.map +1 -1
  25. package/dist/transports/DedicatedWorkerGlobalScopeTransport.d.ts +2 -2
  26. package/dist/transports/DedicatedWorkerGlobalScopeTransport.d.ts.map +1 -1
  27. package/dist/transports/ServiceWorkerGlobalScopeTransport.d.ts +3 -2
  28. package/dist/transports/ServiceWorkerGlobalScopeTransport.d.ts.map +1 -1
  29. package/dist/transports/ServiceWorkerGlobalScopeTransport.js +6 -2
  30. package/dist/transports/ServiceWorkerRegistrationTransport.d.ts +4 -5
  31. package/dist/transports/ServiceWorkerRegistrationTransport.d.ts.map +1 -1
  32. package/dist/transports/ServiceWorkerRegistrationTransport.js +12 -13
  33. package/dist/transports/SharedWorkerGlobalScopeTransport.d.ts +2 -2
  34. package/dist/transports/SharedWorkerGlobalScopeTransport.d.ts.map +1 -1
  35. package/dist/transports/SharedWorkerTransport.d.ts +2 -2
  36. package/dist/transports/SharedWorkerTransport.d.ts.map +1 -1
  37. package/dist/transports/WebSocketTransport.d.ts +2 -2
  38. package/dist/transports/WebSocketTransport.d.ts.map +1 -1
  39. package/dist/transports/WebSocketTransport.js +3 -4
  40. package/dist/transports/WindowTransport.d.ts +2 -3
  41. package/dist/transports/WindowTransport.d.ts.map +1 -1
  42. package/dist/transports/WindowTransport.js +0 -17
  43. package/dist/transports/WorkerTransport.d.ts +2 -2
  44. package/dist/transports/WorkerTransport.d.ts.map +1 -1
  45. 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;
@@ -18,16 +20,15 @@ declare class RPCAction {
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;
@@ -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;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,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,20 +37,28 @@ 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
52
  const { payload, ...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: receiptStore.create(),
47
58
  channel,
48
59
  payload
49
- }, {
60
+ });
61
+ this._target.postMessage(info, {
50
62
  ...ops,
51
63
  targetOrigin: ops.targetOrigin ?? self?.location?.origin
52
64
  });
@@ -68,9 +80,10 @@ class RPCAction {
68
80
  const { channel, retryTimeout = defaultOptions.retryTimeout, retryTimes = defaultOptions.retryTimes } = this._options;
69
81
  return new Promise((resolve, reject)=>{
70
82
  if (!this._isConnected) return void reject(new Error(`[RPC] 连接未建立,无法请求:${type.toString()}`));
71
- const requestId = this._createRequestId();
83
+ const requestId = receiptStore.create();
72
84
  const timer = setTimeout(()=>{
73
85
  this._pending.delete(requestId);
86
+ receiptStore.minus(requestId);
74
87
  if (retry < retryTimes) resolve(this.request(type, {
75
88
  ...options,
76
89
  retry: retry + 1
@@ -89,14 +102,14 @@ class RPCAction {
89
102
  },
90
103
  timer
91
104
  });
92
- this._target.postMessage({
93
- __RPC__: RPC_SIGN,
105
+ const info = this._baseMessage({
94
106
  kind: 'request',
95
107
  channel,
96
108
  payload,
97
109
  requestId,
98
110
  type
99
- }, {
111
+ });
112
+ this._target.postMessage(info, {
100
113
  ...ops,
101
114
  targetOrigin: ops.targetOrigin ?? self?.location?.origin
102
115
  });
@@ -105,25 +118,29 @@ class RPCAction {
105
118
  _abort(destroy) {
106
119
  this._isConnected = false;
107
120
  this._options?.onDisconnect?.(destroy);
108
- this._pending.forEach(({ reject, timer })=>{
121
+ this._pending.forEach(({ reject, timer }, requestId)=>{
109
122
  clearTimeout(timer);
123
+ receiptStore.minus(requestId);
110
124
  reject(new Error('[RPC] 连接已断开,请求已取消'));
111
125
  });
112
126
  this._pending.clear();
113
127
  }
114
- _createRequestId() {
115
- const requestId = Math.random().toString(36).slice(2, 10);
116
- return this._pending.has(requestId) ? this._createRequestId() : requestId;
128
+ _baseMessage(data) {
129
+ return {
130
+ ...data,
131
+ __RPC__: RPC_SIGN,
132
+ sign: this._requestId
133
+ };
117
134
  }
118
135
  _isOriginAllowed(origin) {
119
136
  return this._options?.allowedOrigins?.some((item)=>'*' === item || getOrigin(item) === getOrigin(origin)) ?? false;
120
137
  }
121
138
  _messageHandler(event) {
122
139
  const { data, origin, ports, source, wait } = event;
123
- const { __RPC__, broadcast, channel, error, heartbeat, kind, payload, requestId, type } = data ?? {};
140
+ const { __RPC__, broadcast, channel, error, heartbeat, kind, payload, requestId, sign, type } = data ?? {};
124
141
  if (__RPC__ !== RPC_SIGN) return;
125
142
  if (this._options?.channel !== channel) return;
126
- if (!this._target.is(source)) return;
143
+ if (!this._target.is(source, data)) return;
127
144
  if (this._target.getType() === WINDOW_NAME && !this._isOriginAllowed(origin)) return;
128
145
  if (heartbeat) {
129
146
  this._lastHeartbeat = Date.now();
@@ -138,28 +155,42 @@ class RPCAction {
138
155
  ports,
139
156
  source
140
157
  };
141
- if (broadcast) return void this._brodcastListeners.forEach((listener)=>listener(payload, info));
158
+ if (broadcast) {
159
+ const brodsign = [
160
+ sign,
161
+ requestId
162
+ ].filter(Boolean);
163
+ const brodkey = brodsign.join(':');
164
+ if (2 === brodsign.length && !this._brodcastRecord.includes(brodkey)) {
165
+ this._brodcastRecord.push(brodkey);
166
+ this._brodcastListeners.forEach((listener)=>listener(payload, info));
167
+ }
168
+ return;
169
+ }
142
170
  const pending = requestId ? this._pending.get(requestId) : void 0;
143
171
  if (requestId && pending) {
144
172
  const { resolve, reject } = pending;
145
173
  this._pending.delete(requestId);
174
+ receiptStore.minus(requestId);
146
175
  if (void 0 !== error) reject(new Error(error));
147
176
  else resolve(payload);
148
177
  return;
149
178
  }
150
179
  if ('request' !== kind) return;
151
180
  const handler = type && isKey(type, this._handlers) ? this._handlers[type] : void 0;
181
+ const base = this._baseMessage({
182
+ kind: 'response',
183
+ channel,
184
+ requestId,
185
+ type
186
+ });
152
187
  if (handler) Promise.resolve().then(()=>{
153
188
  const result = handler(payload, info);
154
189
  return result;
155
190
  }).then((result)=>{
156
191
  this._target.postMessage({
157
- __RPC__: RPC_SIGN,
158
- kind: 'response',
159
- payload: result,
160
- channel,
161
- requestId,
162
- type
192
+ ...base,
193
+ payload: result
163
194
  }, {
164
195
  targetOrigin: origin
165
196
  });
@@ -167,12 +198,9 @@ class RPCAction {
167
198
  }).catch((err)=>{
168
199
  const message = err instanceof Error ? err.message : '[RPC] 处理消息时发生错误';
169
200
  this._target.postMessage({
170
- __RPC__: RPC_SIGN,
201
+ ...base,
171
202
  error: message,
172
- kind: 'response',
173
- payload: '',
174
- channel,
175
- requestId
203
+ payload: ''
176
204
  }, {
177
205
  targetOrigin: origin
178
206
  });
@@ -180,13 +208,13 @@ class RPCAction {
180
208
  }
181
209
  _startHeartbeat() {
182
210
  const { channel, heartbeatInterval = defaultOptions.heartbeatInterval, heartbeatTimeout = defaultOptions.heartbeatTimeout } = this._options;
211
+ const info = this._baseMessage({
212
+ heartbeat: true,
213
+ kind: 'request',
214
+ channel
215
+ });
183
216
  const intervalLoops = ()=>{
184
- this._target.postMessage({
185
- __RPC__: RPC_SIGN,
186
- heartbeat: true,
187
- kind: 'request',
188
- channel
189
- });
217
+ this._target.postMessage(info);
190
218
  if (!this._isConnected) return;
191
219
  if (Date.now() - this._lastHeartbeat > heartbeatTimeout) this._abort();
192
220
  };
@@ -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,7 +5,7 @@ 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 & {
@@ -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,6 +1,6 @@
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 & {
@@ -1,6 +1,6 @@
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 & {
@@ -1,6 +1,6 @@
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 & {
@@ -1,6 +1,6 @@
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 & {
@@ -1,6 +1,6 @@
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 & {
@@ -1,6 +1,6 @@
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 & {
@@ -1,6 +1,6 @@
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 & {
@@ -1,6 +1,6 @@
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 & {
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 & {
@@ -3,7 +3,7 @@ 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 & {
@@ -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;CAa1E;AAED,OAAO,EAAE,CAAA;AAET,eAAe,iCAAiC,CAAA"}
@@ -26,11 +26,15 @@ 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
+ if (transmit) transmit().then((clients)=>clients.forEach((client)=>client.postMessage(msg, {
31
35
  transfer
32
36
  }))).catch(()=>{});
33
- else this._source?.postMessage(message, {
37
+ else this._source?.postMessage(msg, {
34
38
  transfer
35
39
  });
36
40
  }
@@ -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,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 WindowTransport extends BaseTransport<Window> {
4
4
  private _errorHandle;
5
- private _observerTarget;
6
5
  destroy(): void;
7
6
  is(source: MessageEventSource | null): boolean;
8
7
  onmessage(listener: ListenerType): void;
9
8
  onremove(listener: ListenerType): void;
10
- postMessage(message: unknown, options?: IframeSerializeOptions): void;
9
+ postMessage(message: MessageItem, options?: IframeSerializeOptions): void;
11
10
  observe(close?: () => void): void;
12
11
  }
13
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,CAAC,eAAe,CAAgC;IAEvD,OAAO;IAMP,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;IAQrE,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI;CA0C3B;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,12 +1,10 @@
1
1
  import BaseTransport from "./BaseTransport.js";
2
2
  class WindowTransport extends BaseTransport {
3
3
  _errorHandle = null;
4
- _observerTarget = null;
5
4
  destroy() {
6
5
  this._errorHandle?.({
7
6
  isDestroy: true
8
7
  });
9
- this._observerTarget?.disconnect();
10
8
  }
11
9
  is(source) {
12
10
  return Object.is(this._target, source);
@@ -27,8 +25,6 @@ class WindowTransport extends BaseTransport {
27
25
  observe(close) {
28
26
  const element = this._options.observer?.();
29
27
  if (!(element instanceof HTMLIFrameElement) || !Object.is(element.contentWindow, this._target)) return;
30
- if (!element.isConnected) return void close?.();
31
- const parent = element?.parentElement;
32
28
  if (element) {
33
29
  const errorHandle = (error)=>{
34
30
  element.removeEventListener('error', errorHandle);
@@ -37,19 +33,6 @@ class WindowTransport extends BaseTransport {
37
33
  element.addEventListener('error', errorHandle);
38
34
  this._errorHandle = errorHandle;
39
35
  }
40
- if (parent) {
41
- const observer = new MutationObserver(()=>{
42
- if (!element.isConnected) {
43
- observer.disconnect();
44
- close?.();
45
- }
46
- });
47
- observer.observe(parent, {
48
- childList: true,
49
- subtree: false
50
- });
51
- this._observerTarget = observer;
52
- }
53
36
  }
54
37
  }
55
38
  const transports_WindowTransport = WindowTransport;
@@ -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.17",
3
+ "version": "0.1.19",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "exports": {