@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.
- package/dist/core/RPCAction.d.ts +5 -4
- package/dist/core/RPCAction.d.ts.map +1 -1
- package/dist/core/RPCAction.js +59 -31
- package/dist/core/receiptStore.d.ts +10 -0
- package/dist/core/receiptStore.d.ts.map +1 -0
- package/dist/core/receiptStore.js +63 -0
- package/dist/core/registry.d.ts +1 -1
- package/dist/entry/broadcastChannel.d.ts +1 -1
- package/dist/entry/dedicatedWorkerGlobalScope.d.ts +1 -1
- package/dist/entry/serviceWorkerGlobalScope.d.ts +1 -1
- package/dist/entry/serviceWorkerRegistration.d.ts +1 -1
- package/dist/entry/sharedWorker.d.ts +1 -1
- package/dist/entry/sharedWorkerGlobalScope.d.ts +1 -1
- package/dist/entry/webSocket.d.ts +1 -1
- package/dist/entry/window.d.ts +1 -1
- package/dist/entry/worker.d.ts +1 -1
- package/dist/fields.d.ts +15 -2
- package/dist/fields.d.ts.map +1 -1
- package/dist/hooks.d.ts +1 -1
- package/dist/react/hooks.d.ts +1 -1
- package/dist/transports/BaseTransport.d.ts +2 -2
- package/dist/transports/BaseTransport.d.ts.map +1 -1
- package/dist/transports/BroadcastChannelTransport.d.ts +2 -2
- package/dist/transports/BroadcastChannelTransport.d.ts.map +1 -1
- package/dist/transports/DedicatedWorkerGlobalScopeTransport.d.ts +2 -2
- package/dist/transports/DedicatedWorkerGlobalScopeTransport.d.ts.map +1 -1
- package/dist/transports/ServiceWorkerGlobalScopeTransport.d.ts +3 -2
- package/dist/transports/ServiceWorkerGlobalScopeTransport.d.ts.map +1 -1
- package/dist/transports/ServiceWorkerGlobalScopeTransport.js +6 -2
- package/dist/transports/ServiceWorkerRegistrationTransport.d.ts +4 -5
- package/dist/transports/ServiceWorkerRegistrationTransport.d.ts.map +1 -1
- package/dist/transports/ServiceWorkerRegistrationTransport.js +12 -13
- package/dist/transports/SharedWorkerGlobalScopeTransport.d.ts +2 -2
- package/dist/transports/SharedWorkerGlobalScopeTransport.d.ts.map +1 -1
- package/dist/transports/SharedWorkerTransport.d.ts +2 -2
- package/dist/transports/SharedWorkerTransport.d.ts.map +1 -1
- package/dist/transports/WebSocketTransport.d.ts +2 -2
- package/dist/transports/WebSocketTransport.d.ts.map +1 -1
- package/dist/transports/WebSocketTransport.js +3 -4
- package/dist/transports/WindowTransport.d.ts +2 -3
- package/dist/transports/WindowTransport.d.ts.map +1 -1
- package/dist/transports/WindowTransport.js +0 -17
- package/dist/transports/WorkerTransport.d.ts +2 -2
- package/dist/transports/WorkerTransport.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/core/RPCAction.d.ts
CHANGED
|
@@ -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
|
|
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;
|
|
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"}
|
package/dist/core/RPCAction.js
CHANGED
|
@@ -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.
|
|
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 =
|
|
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.
|
|
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
|
-
|
|
115
|
-
|
|
116
|
-
|
|
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)
|
|
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
|
-
|
|
158
|
-
|
|
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
|
-
|
|
201
|
+
...base,
|
|
171
202
|
error: message,
|
|
172
|
-
|
|
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 };
|
package/dist/core/registry.d.ts
CHANGED
|
@@ -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, "
|
|
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, "
|
|
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, "
|
|
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, "
|
|
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, "
|
|
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, "
|
|
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, "
|
|
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, "
|
|
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 & {
|
package/dist/entry/window.d.ts
CHANGED
|
@@ -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, "
|
|
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 & {
|
package/dist/entry/worker.d.ts
CHANGED
|
@@ -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, "
|
|
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:
|
|
43
|
+
postMessage: (message: MessageItem, options?: IframeSerializeOptions) => void;
|
|
31
44
|
upset: (options: FactoryOptions) => void;
|
|
32
45
|
onlyBrod?: ONLYBD;
|
|
33
46
|
}
|
package/dist/fields.d.ts.map
CHANGED
|
@@ -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;
|
|
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, "
|
|
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 & {
|
package/dist/react/hooks.d.ts
CHANGED
|
@@ -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, "
|
|
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:
|
|
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;
|
|
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:
|
|
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;
|
|
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:
|
|
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;
|
|
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:
|
|
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;
|
|
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(
|
|
34
|
+
if (transmit) transmit().then((clients)=>clients.forEach((client)=>client.postMessage(msg, {
|
|
31
35
|
transfer
|
|
32
36
|
}))).catch(()=>{});
|
|
33
|
-
else this._source?.postMessage(
|
|
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):
|
|
5
|
+
is(source: MessageEventSource | null, message?: MessageItem): boolean;
|
|
7
6
|
observe(): void;
|
|
8
7
|
onmessage(listener: ListenerType): void;
|
|
9
|
-
onremove(): void;
|
|
10
|
-
postMessage(message:
|
|
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;
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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;
|
|
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:
|
|
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;
|
|
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:
|
|
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;
|
|
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)
|
|
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:
|
|
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;
|
|
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:
|
|
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;
|
|
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"}
|