@event-chat/rpc 0.1.1 → 0.1.3
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 +42 -0
- package/dist/core/RPCAction.d.ts.map +1 -0
- package/dist/core/RPCAction.js +189 -0
- package/dist/core/RPCDecorator.d.ts +20 -0
- package/dist/core/RPCDecorator.d.ts.map +1 -0
- package/dist/core/RPCDecorator.js +57 -0
- package/dist/core/registry.d.ts +41 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +29 -0
- package/dist/entry/auto.d.ts +2 -0
- package/dist/entry/auto.d.ts.map +1 -0
- package/dist/entry/auto.js +56 -0
- package/dist/entry/broadcastChannel.d.ts +24 -0
- package/dist/entry/broadcastChannel.d.ts.map +1 -0
- package/dist/entry/broadcastChannel.js +7 -0
- package/dist/entry/dedicatedWorkerGlobalScope.d.ts +24 -0
- package/dist/entry/dedicatedWorkerGlobalScope.d.ts.map +1 -0
- package/dist/entry/dedicatedWorkerGlobalScope.js +7 -0
- package/dist/entry/serviceWorkerGlobalScope.d.ts +24 -0
- package/dist/entry/serviceWorkerGlobalScope.d.ts.map +1 -0
- package/dist/entry/serviceWorkerGlobalScope.js +7 -0
- package/dist/entry/serviceWorkerRegistration.d.ts +24 -0
- package/dist/entry/serviceWorkerRegistration.d.ts.map +1 -0
- package/dist/entry/serviceWorkerRegistration.js +7 -0
- package/dist/entry/sharedWorker.d.ts +24 -0
- package/dist/entry/sharedWorker.d.ts.map +1 -0
- package/dist/entry/sharedWorker.js +7 -0
- package/dist/entry/sharedWorkerGlobalScope.d.ts +24 -0
- package/dist/entry/sharedWorkerGlobalScope.d.ts.map +1 -0
- package/dist/entry/sharedWorkerGlobalScope.js +7 -0
- package/dist/entry/webSocket.d.ts +24 -0
- package/dist/entry/webSocket.d.ts.map +1 -0
- package/dist/entry/webSocket.js +7 -0
- package/dist/entry/window.d.ts +24 -0
- package/dist/entry/window.d.ts.map +1 -0
- package/dist/entry/window.js +8 -0
- package/dist/entry/worker.d.ts +24 -0
- package/dist/entry/worker.d.ts.map +1 -0
- package/dist/entry/worker.js +7 -0
- package/dist/fields.d.ts +15 -0
- package/dist/fields.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/react/RPCProvider.d.ts +4 -0
- package/dist/react/RPCProvider.d.ts.map +1 -0
- package/dist/react/RPCProvider.js +34 -0
- package/dist/react/createCtx.d.ts +13 -0
- package/dist/react/createCtx.d.ts.map +1 -0
- package/dist/react/createCtx.js +33 -0
- package/dist/react/fields.d.ts +30 -0
- package/dist/react/fields.d.ts.map +1 -0
- package/dist/react/fields.js +14 -0
- package/dist/react/hooks.d.ts +44 -0
- package/dist/react/hooks.d.ts.map +1 -0
- package/dist/react/hooks.js +86 -0
- package/dist/react/index.d.ts +5 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +5 -0
- package/dist/transports/BaseTransport.d.ts +19 -0
- package/dist/transports/BaseTransport.d.ts.map +1 -0
- package/dist/transports/BaseTransport.js +22 -0
- package/dist/transports/BroadcastChannelTransport.d.ts +9 -0
- package/dist/transports/BroadcastChannelTransport.d.ts.map +1 -0
- package/dist/transports/BroadcastChannelTransport.js +17 -0
- package/dist/transports/DedicatedWorkerGlobalScopeTransport.d.ts +10 -0
- package/dist/transports/DedicatedWorkerGlobalScopeTransport.d.ts.map +1 -0
- package/dist/transports/DedicatedWorkerGlobalScopeTransport.js +18 -0
- package/dist/transports/ServiceWorkerGlobalScopeTransport.d.ts +11 -0
- package/dist/transports/ServiceWorkerGlobalScopeTransport.d.ts.map +1 -0
- package/dist/transports/ServiceWorkerGlobalScopeTransport.js +33 -0
- package/dist/transports/ServiceWorkerRegistrationTransport.d.ts +10 -0
- package/dist/transports/ServiceWorkerRegistrationTransport.d.ts.map +1 -0
- package/dist/transports/ServiceWorkerRegistrationTransport.js +18 -0
- package/dist/transports/SharedWorkerGlobalScopeTransport.d.ts +12 -0
- package/dist/transports/SharedWorkerGlobalScopeTransport.d.ts.map +1 -0
- package/dist/transports/SharedWorkerGlobalScopeTransport.js +36 -0
- package/dist/transports/SharedWorkerTransport.d.ts +10 -0
- package/dist/transports/SharedWorkerTransport.d.ts.map +1 -0
- package/dist/transports/SharedWorkerTransport.js +21 -0
- package/dist/transports/WebSocketTransport.d.ts +14 -0
- package/dist/transports/WebSocketTransport.d.ts.map +1 -0
- package/dist/transports/WebSocketTransport.js +39 -0
- package/dist/transports/WindowTransport.d.ts +10 -0
- package/dist/transports/WindowTransport.d.ts.map +1 -0
- package/dist/transports/WindowTransport.js +19 -0
- package/dist/transports/WorkerTransport.d.ts +10 -0
- package/dist/transports/WorkerTransport.d.ts.map +1 -0
- package/dist/transports/WorkerTransport.js +20 -0
- package/dist/transports/fields.d.ts +21 -0
- package/dist/transports/fields.d.ts.map +1 -0
- package/dist/transports/fields.js +0 -0
- package/package.json +45 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { IframeSerializeOptions, Transport } from '../fields';
|
|
2
|
+
declare class RPCAction {
|
|
3
|
+
private _target;
|
|
4
|
+
private _brodcastListeners;
|
|
5
|
+
private _handlers;
|
|
6
|
+
private _heartbeatTimer;
|
|
7
|
+
private _isConnected;
|
|
8
|
+
private _lastHeartbeat;
|
|
9
|
+
private _options;
|
|
10
|
+
private _pending;
|
|
11
|
+
private _boundMessageHandler;
|
|
12
|
+
constructor(_target: Transport, options?: RPCOptionsType);
|
|
13
|
+
destroy(): void;
|
|
14
|
+
broadcast<T>(options?: Omit<RequestOptions<T>, 'retry'>): void;
|
|
15
|
+
config(options: Omit<RPCOptionsType, 'onConnect' | 'onDisconnect'>): void;
|
|
16
|
+
on<T extends ActionFunType>(type: PropertyKey, handler: T): void;
|
|
17
|
+
onBrodcast(listener: BrodcastItem): void;
|
|
18
|
+
request<T = unknown>(type: PropertyKey, options?: RequestOptions<T>): Promise<unknown>;
|
|
19
|
+
private _abort;
|
|
20
|
+
private _createRequestId;
|
|
21
|
+
private _isOriginAllowed;
|
|
22
|
+
private _messageHandler;
|
|
23
|
+
private _startHeartbeat;
|
|
24
|
+
}
|
|
25
|
+
export default RPCAction;
|
|
26
|
+
export type RPCOptionsType = {
|
|
27
|
+
allowedOrigins?: string[];
|
|
28
|
+
channel?: string;
|
|
29
|
+
heartbeatInterval?: number;
|
|
30
|
+
heartbeatTimeout?: number;
|
|
31
|
+
retryTimeout?: number;
|
|
32
|
+
retryTimes?: number;
|
|
33
|
+
onConnect?: () => void;
|
|
34
|
+
onDisconnect?: () => void;
|
|
35
|
+
};
|
|
36
|
+
export type ActionFunType = (payload?: any) => any;
|
|
37
|
+
export type BrodcastItem = (value: unknown, origin?: string) => void;
|
|
38
|
+
export type RequestOptions<T = unknown> = IframeSerializeOptions & {
|
|
39
|
+
payload?: T;
|
|
40
|
+
retry?: number;
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=RPCAction.d.ts.map
|
|
@@ -0,0 +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;AAiB7D,cAAM,SAAS;IAWX,OAAO,CAAC,OAAO;IAVjB,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,eAAe,CAAsB;IAC7C,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,EAC1B,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;IAuEvB,OAAO,CAAC,eAAe;CAsBxB;AAED,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,MAAM,IAAI,CAAA;CAC1B,CAAA;AAID,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,GAAG,CAAA;AAElD,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;AAEpE,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,OAAO,IAAI,sBAAsB,GAAG;IACjE,OAAO,CAAC,EAAE,CAAC,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { isKey } from "../utils.js";
|
|
2
|
+
const RPC_SIGN = 'RPCActionSign';
|
|
3
|
+
const defaultOptions = {
|
|
4
|
+
allowedOrigins: [],
|
|
5
|
+
heartbeatInterval: 3000,
|
|
6
|
+
heartbeatTimeout: 8000,
|
|
7
|
+
retryTimeout: 5000,
|
|
8
|
+
retryTimes: 2
|
|
9
|
+
};
|
|
10
|
+
const getOrigin = (url)=>new URL(url, window.location.origin).origin;
|
|
11
|
+
class RPCAction {
|
|
12
|
+
_target;
|
|
13
|
+
_brodcastListeners = [];
|
|
14
|
+
_handlers = {};
|
|
15
|
+
_heartbeatTimer = null;
|
|
16
|
+
_isConnected = false;
|
|
17
|
+
_lastHeartbeat = Date.now();
|
|
18
|
+
_options = {};
|
|
19
|
+
_pending = new Map();
|
|
20
|
+
_boundMessageHandler = this._messageHandler.bind(this);
|
|
21
|
+
constructor(_target, options){
|
|
22
|
+
this._target = _target;
|
|
23
|
+
this._options = {
|
|
24
|
+
...defaultOptions,
|
|
25
|
+
...options,
|
|
26
|
+
allowedOrigins: options?.allowedOrigins?.map((item)=>'*' === item ? item : getOrigin(item))
|
|
27
|
+
};
|
|
28
|
+
this._target.onmessage(this._boundMessageHandler);
|
|
29
|
+
this._startHeartbeat();
|
|
30
|
+
}
|
|
31
|
+
destroy() {
|
|
32
|
+
clearInterval(this._heartbeatTimer ?? void 0);
|
|
33
|
+
this._target.onremove(this._boundMessageHandler);
|
|
34
|
+
this._abort();
|
|
35
|
+
this._brodcastListeners = [];
|
|
36
|
+
this._handlers = {};
|
|
37
|
+
this._heartbeatTimer = null;
|
|
38
|
+
}
|
|
39
|
+
broadcast(options) {
|
|
40
|
+
const { payload, ...ops } = options ?? {};
|
|
41
|
+
const { channel } = this._options;
|
|
42
|
+
this._target.postMessage({
|
|
43
|
+
__RPC__: RPC_SIGN,
|
|
44
|
+
broadcast: true,
|
|
45
|
+
kind: 'request',
|
|
46
|
+
channel,
|
|
47
|
+
payload
|
|
48
|
+
}, {
|
|
49
|
+
...ops,
|
|
50
|
+
targetOrigin: ops.targetOrigin ?? window.location.origin
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
config(options) {
|
|
54
|
+
this._options = {
|
|
55
|
+
...this._options,
|
|
56
|
+
...options
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
on(type, handler) {
|
|
60
|
+
this._handlers[type] = handler;
|
|
61
|
+
}
|
|
62
|
+
onBrodcast(listener) {
|
|
63
|
+
this._brodcastListeners.push(listener);
|
|
64
|
+
}
|
|
65
|
+
request(type, options) {
|
|
66
|
+
const { payload, retry = 0, ...ops } = options ?? {};
|
|
67
|
+
const { channel, retryTimeout = defaultOptions.retryTimeout, retryTimes = defaultOptions.retryTimes } = this._options;
|
|
68
|
+
return new Promise((resolve, reject)=>{
|
|
69
|
+
if (!this._isConnected) return void reject(new Error(`[RPC] 连接未建立,无法请求:${type.toString()}`));
|
|
70
|
+
const requestId = this._createRequestId();
|
|
71
|
+
const timer = window.setTimeout(()=>{
|
|
72
|
+
this._pending.delete(requestId);
|
|
73
|
+
if (retry < retryTimes) resolve(this.request(type, {
|
|
74
|
+
...options,
|
|
75
|
+
retry: retry + 1
|
|
76
|
+
}));
|
|
77
|
+
else reject(new Error(`[RPC] 请求超时:${type.toString()}`));
|
|
78
|
+
}, retryTimeout);
|
|
79
|
+
this._pending.set(requestId, {
|
|
80
|
+
resolve: (res)=>{
|
|
81
|
+
clearTimeout(timer);
|
|
82
|
+
resolve(res);
|
|
83
|
+
},
|
|
84
|
+
reject: (err)=>{
|
|
85
|
+
const message = err instanceof Error ? err.message : '[RPC] 处理消息时发生错误';
|
|
86
|
+
clearTimeout(timer);
|
|
87
|
+
reject(new Error(message));
|
|
88
|
+
},
|
|
89
|
+
timer
|
|
90
|
+
});
|
|
91
|
+
this._target.postMessage({
|
|
92
|
+
__RPC__: RPC_SIGN,
|
|
93
|
+
kind: 'request',
|
|
94
|
+
channel,
|
|
95
|
+
payload,
|
|
96
|
+
requestId,
|
|
97
|
+
type
|
|
98
|
+
}, {
|
|
99
|
+
...ops,
|
|
100
|
+
targetOrigin: ops.targetOrigin ?? window.location.origin
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
_abort() {
|
|
105
|
+
this._isConnected = false;
|
|
106
|
+
this._options?.onDisconnect?.();
|
|
107
|
+
this._pending.forEach(({ reject, timer })=>{
|
|
108
|
+
clearTimeout(timer);
|
|
109
|
+
reject(new Error('[RPC] 连接已断开,请求已取消'));
|
|
110
|
+
});
|
|
111
|
+
this._pending.clear();
|
|
112
|
+
}
|
|
113
|
+
_createRequestId() {
|
|
114
|
+
const requestId = Math.random().toString(36).slice(2, 10);
|
|
115
|
+
return this._pending.has(requestId) ? this._createRequestId() : requestId;
|
|
116
|
+
}
|
|
117
|
+
_isOriginAllowed(origin) {
|
|
118
|
+
return this._options?.allowedOrigins?.some((item)=>'*' === item || getOrigin(item) === getOrigin(origin)) ?? false;
|
|
119
|
+
}
|
|
120
|
+
_messageHandler(event) {
|
|
121
|
+
const { data, origin, source } = event;
|
|
122
|
+
const { __RPC__, broadcast, channel, error, heartbeat, kind, payload, requestId, type } = data ?? {};
|
|
123
|
+
if (__RPC__ !== RPC_SIGN) return;
|
|
124
|
+
if (this._options?.channel !== channel) return;
|
|
125
|
+
if (!this._target.is(source)) return;
|
|
126
|
+
if (this._target.getType() === window.toString() && !this._isOriginAllowed(origin)) return;
|
|
127
|
+
if (heartbeat) {
|
|
128
|
+
this._lastHeartbeat = Date.now();
|
|
129
|
+
if (!this._isConnected) {
|
|
130
|
+
this._isConnected = true;
|
|
131
|
+
this._options?.onConnect?.();
|
|
132
|
+
}
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
if (broadcast) return void this._brodcastListeners.forEach((listener)=>listener(payload, origin));
|
|
136
|
+
const pending = requestId ? this._pending.get(requestId) : void 0;
|
|
137
|
+
if (requestId && pending) {
|
|
138
|
+
const { resolve, reject } = pending;
|
|
139
|
+
this._pending.delete(requestId);
|
|
140
|
+
if (void 0 !== error) reject(new Error(error));
|
|
141
|
+
else resolve(payload);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
if ('request' !== kind) return;
|
|
145
|
+
const handler = type && isKey(type, this._handlers) ? this._handlers[type] : void 0;
|
|
146
|
+
if (handler) Promise.resolve().then(()=>handler(payload)).then((result)=>{
|
|
147
|
+
this._target.postMessage({
|
|
148
|
+
__RPC__: RPC_SIGN,
|
|
149
|
+
kind: 'response',
|
|
150
|
+
payload: result,
|
|
151
|
+
channel,
|
|
152
|
+
requestId,
|
|
153
|
+
type
|
|
154
|
+
}, {
|
|
155
|
+
targetOrigin: origin
|
|
156
|
+
});
|
|
157
|
+
}).catch((err)=>{
|
|
158
|
+
const message = err instanceof Error ? err.message : '[RPC] 处理消息时发生错误';
|
|
159
|
+
this._target.postMessage({
|
|
160
|
+
__RPC__: RPC_SIGN,
|
|
161
|
+
error: message,
|
|
162
|
+
kind: 'response',
|
|
163
|
+
payload: '',
|
|
164
|
+
channel,
|
|
165
|
+
requestId
|
|
166
|
+
}, {
|
|
167
|
+
targetOrigin: origin
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
_startHeartbeat() {
|
|
172
|
+
const { channel, heartbeatInterval = defaultOptions.heartbeatInterval, heartbeatTimeout = defaultOptions.heartbeatTimeout } = this._options;
|
|
173
|
+
const intervalLoops = ()=>{
|
|
174
|
+
this._target.postMessage({
|
|
175
|
+
__RPC__: RPC_SIGN,
|
|
176
|
+
heartbeat: true,
|
|
177
|
+
kind: 'request',
|
|
178
|
+
channel
|
|
179
|
+
});
|
|
180
|
+
if (!this._isConnected) return;
|
|
181
|
+
if (Date.now() - this._lastHeartbeat > heartbeatTimeout) this._abort();
|
|
182
|
+
};
|
|
183
|
+
intervalLoops();
|
|
184
|
+
clearInterval(this._heartbeatTimer ?? void 0);
|
|
185
|
+
this._heartbeatTimer = window.setInterval(intervalLoops, heartbeatInterval);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
const core_RPCAction = RPCAction;
|
|
189
|
+
export { core_RPCAction as default };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Transport } from '../fields';
|
|
2
|
+
import RPCAction, { ActionFunType, BrodcastItem, RPCOptionsType, RequestOptions } from './RPCAction';
|
|
3
|
+
declare const factoryKey: readonly ["getType", "upset"];
|
|
4
|
+
declare function RPCDecorator<EVENT extends ActionRecord, CONSUME extends ActionRecord>(factory: Transport | null, context?: DecoratorContext<EVENT, CONSUME>): Readonly<Omit<RPCAction, "on" | "request"> & Pick<Transport, (typeof factoryKey)[number]> & {
|
|
5
|
+
request: <K extends keyof CONSUME>(...args: Parameters<CONSUME[K]> extends [] ? [keyname: K, reqops?: RequestOptionsByAction<CONSUME[K]>] : [keyname: K, reqops: RequestOptionsByAction<CONSUME[K]>]) => Promise<ReturnType<CONSUME[K]>>;
|
|
6
|
+
}>;
|
|
7
|
+
export default RPCDecorator;
|
|
8
|
+
export interface DecoratorContext<EVENT extends ActionRecord, CONSUME extends ActionRecord> {
|
|
9
|
+
brodcast?: Record<string, BrodcastItem>;
|
|
10
|
+
config?: RPCOptionsType;
|
|
11
|
+
consume?: CONSUME;
|
|
12
|
+
event?: EVENT;
|
|
13
|
+
}
|
|
14
|
+
export type ActionRecord = Record<string, ActionFunType>;
|
|
15
|
+
type RequestOptionsByAction<F extends ActionFunType> = Parameters<F> extends [] ? Omit<RequestOptions, 'payload'> & {
|
|
16
|
+
payload?: never;
|
|
17
|
+
} : RequestOptions<Parameters<F>[0]> & {
|
|
18
|
+
payload: Parameters<F>[0];
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=RPCDecorator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RPCDecorator.d.ts","sourceRoot":"","sources":["../../src/core/RPCDecorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,SAAS,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEpG,QAAA,MAAM,UAAU,+BAAgC,CAAA;AAWhD,iBAAS,YAAY,CAAC,KAAK,SAAS,YAAY,EAAE,OAAO,SAAS,YAAY,EAC5E,OAAO,EAAE,SAAS,GAAG,IAAI,EACzB,OAAO,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,GAiDrC,QAAQ,CACX,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,SAAS,CAAC,GAC/B,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,UAAU,EAAE,MAAM,CAAC,CAAC,GAAG;IAC7C,OAAO,GA/CI,CAAC,SAAS,MAAM,OAAO,WAC7B,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GACtC,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GACzD,CAAC,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAGjB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAyC/C;CACxB,CACJ,CACF;AAED,eAAe,YAAY,CAAA;AAE3B,MAAM,WAAW,gBAAgB,CAAC,KAAK,SAAS,YAAY,EAAE,OAAO,SAAS,YAAY;IACxF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACvC,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,KAAK,CAAA;CAEd;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;AAExD,KAAK,sBAAsB,CAAC,CAAC,SAAS,aAAa,IACjD,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,GACpB,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,KAAK,CAAA;CAAE,GACrD,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;IAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,CAAA"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import RPCAction from "./RPCAction.js";
|
|
2
|
+
const factoryKey = [
|
|
3
|
+
'getType',
|
|
4
|
+
'upset'
|
|
5
|
+
];
|
|
6
|
+
const disabledKey = [
|
|
7
|
+
'on',
|
|
8
|
+
'onBrodcast'
|
|
9
|
+
];
|
|
10
|
+
function isAction(action, key) {
|
|
11
|
+
return !disabledKey.includes(key) && key in action;
|
|
12
|
+
}
|
|
13
|
+
function isFactory(action, key) {
|
|
14
|
+
return null !== action && key in action && factoryKey.map(String).includes(key);
|
|
15
|
+
}
|
|
16
|
+
function RPCDecorator(factory, context) {
|
|
17
|
+
const { brodcast, config, event } = context ?? {};
|
|
18
|
+
const action = factory ? new RPCAction(factory, config) : null;
|
|
19
|
+
const request = (...args)=>{
|
|
20
|
+
const [keyname, reqops] = args;
|
|
21
|
+
return action?.request(keyname, reqops);
|
|
22
|
+
};
|
|
23
|
+
Object.entries(event ?? {}).forEach(([keyname, handle])=>action?.on(keyname, handle));
|
|
24
|
+
Object.values(brodcast ?? {}).forEach((handle)=>action?.onBrodcast(handle));
|
|
25
|
+
return new Proxy({}, {
|
|
26
|
+
get (_, key) {
|
|
27
|
+
const keyname = key.toString();
|
|
28
|
+
switch(key){
|
|
29
|
+
case 'destroy':
|
|
30
|
+
return ()=>{
|
|
31
|
+
action?.destroy();
|
|
32
|
+
factory?.destory();
|
|
33
|
+
};
|
|
34
|
+
case 'request':
|
|
35
|
+
return request;
|
|
36
|
+
default:
|
|
37
|
+
if (action && isAction(action, keyname)) {
|
|
38
|
+
const value = action[keyname];
|
|
39
|
+
return 'function' == typeof value ? value.bind(action) : value;
|
|
40
|
+
}
|
|
41
|
+
if (factory && isFactory(factory, keyname)) {
|
|
42
|
+
const value = factory[keyname];
|
|
43
|
+
return 'function' == typeof value ? value.bind(factory) : value;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
has (_, key) {
|
|
48
|
+
const keyname = key.toString();
|
|
49
|
+
return null !== action && isAction(action, keyname) || isFactory(factory, keyname);
|
|
50
|
+
},
|
|
51
|
+
set () {
|
|
52
|
+
throw new Error('decorator is readonly');
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
const core_RPCDecorator = RPCDecorator;
|
|
57
|
+
export { core_RPCDecorator as default };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { FactoryOptions, Transport } from '../fields';
|
|
2
|
+
import { TargetType } from '../transports/BaseTransport';
|
|
3
|
+
import { EntryOptions } from '../transports/fields';
|
|
4
|
+
import { ActionRecord } from './RPCDecorator';
|
|
5
|
+
export declare function cacheImport(item?: TransportItem): Promise<{
|
|
6
|
+
default: new (target: any, options?: FactoryOptions) => Transport;
|
|
7
|
+
} | undefined>;
|
|
8
|
+
export declare function createRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: unknown, config?: EntryOptions<EVENT, CONSUME>): Promise<Readonly<Omit<import("./RPCAction").default, "on" | "request"> & Pick<Transport, "getType" | "upset"> & {
|
|
9
|
+
request: <K extends keyof CONSUME>(...args: Parameters<CONSUME[K]> extends [] ? [keyname: K, reqops?: (Parameters<CONSUME[K]> extends [] ? Omit<import("./RPCAction").RequestOptions, "payload"> & {
|
|
10
|
+
payload?: never;
|
|
11
|
+
} : StructuredSerializeOptions & {
|
|
12
|
+
targetOrigin?: string;
|
|
13
|
+
} & {
|
|
14
|
+
payload?: Parameters<CONSUME[K]>[0] | undefined;
|
|
15
|
+
retry?: number;
|
|
16
|
+
} & {
|
|
17
|
+
payload: Parameters<CONSUME[K]>[0];
|
|
18
|
+
}) | undefined] : [keyname: K, reqops: Parameters<CONSUME[K]> extends [] ? Omit<import("./RPCAction").RequestOptions, "payload"> & {
|
|
19
|
+
payload?: never;
|
|
20
|
+
} : StructuredSerializeOptions & {
|
|
21
|
+
targetOrigin?: string;
|
|
22
|
+
} & {
|
|
23
|
+
payload?: Parameters<CONSUME[K]>[0] | undefined;
|
|
24
|
+
retry?: number;
|
|
25
|
+
} & {
|
|
26
|
+
payload: Parameters<CONSUME[K]>[0];
|
|
27
|
+
}]) => Promise<ReturnType<CONSUME[K]>>;
|
|
28
|
+
}>>;
|
|
29
|
+
export declare function registerTransport<T extends TargetType>(resolver: TransportResolver<T>): void;
|
|
30
|
+
export declare function resolveTransport(target: unknown, options?: FactoryOptions): Promise<Transport | null>;
|
|
31
|
+
export type TransportResolver<T extends TargetType = TargetType> = {
|
|
32
|
+
name: string;
|
|
33
|
+
in: () => boolean;
|
|
34
|
+
match: (target: unknown) => target is T;
|
|
35
|
+
load: () => Promise<{
|
|
36
|
+
default: new (target: T, options?: FactoryOptions) => Transport;
|
|
37
|
+
}>;
|
|
38
|
+
};
|
|
39
|
+
type TransportItem = TransportResolver<any>;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAqB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAK3D,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,aAAa;yCAoCW,cAAc,KAAK,SAAS;eA7BtF;AAED,wBAAgB,SAAS,CAAC,KAAK,SAAS,YAAY,EAAE,OAAO,SAAS,YAAY,EAChF,MAAM,EAAE,OAAO,EACf,MAAM,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;IAItC;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,UAAU,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,QAErF;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,cAAc,6BASzE;AAED,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI;IACjE,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,OAAO,CAAA;IACjB,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,IAAI,CAAC,CAAA;IACvC,IAAI,EAAE,MAAM,OAAO,CAAC;QAAE,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,KAAK,SAAS,CAAA;KAAE,CAAC,CAAA;CACzF,CAAA;AAID,KAAK,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import RPCDecorator from "./RPCDecorator.js";
|
|
2
|
+
const cahceMap = new Map();
|
|
3
|
+
const registry = [];
|
|
4
|
+
function cacheImport(item) {
|
|
5
|
+
const { name, load } = item ?? {};
|
|
6
|
+
if (name && load) {
|
|
7
|
+
if (!cahceMap.has(name)) cahceMap.set(name, load());
|
|
8
|
+
return Promise.resolve(cahceMap.get(name));
|
|
9
|
+
}
|
|
10
|
+
return Promise.resolve(void 0);
|
|
11
|
+
}
|
|
12
|
+
function createRPC(target, config) {
|
|
13
|
+
const { context, options } = config ?? {};
|
|
14
|
+
return resolveTransport(target, options).then((transport)=>RPCDecorator(transport, context));
|
|
15
|
+
}
|
|
16
|
+
function registerTransport(resolver) {
|
|
17
|
+
if (resolver.in()) registry.push(resolver);
|
|
18
|
+
}
|
|
19
|
+
function resolveTransport(target, options) {
|
|
20
|
+
const transport = registry.find((item)=>item.match(target));
|
|
21
|
+
return cacheImport(transport).then((result)=>{
|
|
22
|
+
if (result && transport?.match(target)) {
|
|
23
|
+
const TransportTarget = result.default;
|
|
24
|
+
return new TransportTarget(target, options);
|
|
25
|
+
}
|
|
26
|
+
return null;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
export { cacheImport, createRPC, registerTransport, resolveTransport };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../../src/entry/auto.ts"],"names":[],"mappings":"AAiEA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { createRPC, registerTransport } from "../core/registry.js";
|
|
2
|
+
registerTransport({
|
|
3
|
+
name: 'broadcastChannel',
|
|
4
|
+
in: ()=>'undefined' != typeof BroadcastChannel,
|
|
5
|
+
match: (t)=>t instanceof BroadcastChannel,
|
|
6
|
+
load: ()=>import("../transports/BroadcastChannelTransport.js")
|
|
7
|
+
});
|
|
8
|
+
registerTransport({
|
|
9
|
+
name: 'dedicatedWorkerGlobalScope',
|
|
10
|
+
in: ()=>'undefined' != typeof DedicatedWorkerGlobalScope,
|
|
11
|
+
match: (t)=>t instanceof DedicatedWorkerGlobalScope,
|
|
12
|
+
load: ()=>import("../transports/DedicatedWorkerGlobalScopeTransport.js")
|
|
13
|
+
});
|
|
14
|
+
registerTransport({
|
|
15
|
+
name: 'serviceWorkerGlobalScope',
|
|
16
|
+
in: ()=>'undefined' != typeof ServiceWorkerGlobalScope,
|
|
17
|
+
match: (t)=>t instanceof ServiceWorkerGlobalScope,
|
|
18
|
+
load: ()=>import("../transports/ServiceWorkerGlobalScopeTransport.js")
|
|
19
|
+
});
|
|
20
|
+
registerTransport({
|
|
21
|
+
name: 'serviceWorkerRegistration',
|
|
22
|
+
in: ()=>'undefined' != typeof ServiceWorkerRegistration,
|
|
23
|
+
match: (t)=>t instanceof ServiceWorkerRegistration,
|
|
24
|
+
load: ()=>import("../transports/ServiceWorkerRegistrationTransport.js")
|
|
25
|
+
});
|
|
26
|
+
registerTransport({
|
|
27
|
+
name: 'sharedWorker',
|
|
28
|
+
in: ()=>'undefined' != typeof SharedWorker,
|
|
29
|
+
match: (t)=>t instanceof SharedWorker,
|
|
30
|
+
load: ()=>import("../transports/SharedWorkerTransport.js")
|
|
31
|
+
});
|
|
32
|
+
registerTransport({
|
|
33
|
+
name: 'SharedWorkerGlobalScope',
|
|
34
|
+
in: ()=>'undefined' != typeof SharedWorkerGlobalScope,
|
|
35
|
+
match: (t)=>t instanceof SharedWorkerGlobalScope,
|
|
36
|
+
load: ()=>import("../transports/SharedWorkerGlobalScopeTransport.js")
|
|
37
|
+
});
|
|
38
|
+
registerTransport({
|
|
39
|
+
name: 'webSocket',
|
|
40
|
+
in: ()=>'undefined' != typeof WebSocket,
|
|
41
|
+
match: (t)=>t instanceof WebSocket,
|
|
42
|
+
load: ()=>import("../transports/WebSocketTransport.js")
|
|
43
|
+
});
|
|
44
|
+
registerTransport({
|
|
45
|
+
name: 'window',
|
|
46
|
+
in: ()=>'undefined' != typeof window,
|
|
47
|
+
match: (t)=>'[object Window]' === String(t),
|
|
48
|
+
load: ()=>import("../transports/WindowTransport.js")
|
|
49
|
+
});
|
|
50
|
+
registerTransport({
|
|
51
|
+
name: 'worker',
|
|
52
|
+
in: ()=>'undefined' != typeof Worker,
|
|
53
|
+
match: (t)=>t instanceof Worker,
|
|
54
|
+
load: ()=>import("../transports/WorkerTransport.js")
|
|
55
|
+
});
|
|
56
|
+
export { createRPC };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ActionRecord } from '../RPCDecorator';
|
|
2
|
+
import { EntryOptions } from '../transports/fields';
|
|
3
|
+
export declare function createBroadcastChannelRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: BroadcastChannel, config?: EntryOptions<EVENT, CONSUME>): Readonly<Omit<import("../core/RPCAction").default, "on" | "request"> & Pick<import("../fields").Transport, "getType" | "upset"> & {
|
|
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
|
+
payload?: never;
|
|
6
|
+
} : StructuredSerializeOptions & {
|
|
7
|
+
targetOrigin?: string;
|
|
8
|
+
} & {
|
|
9
|
+
payload?: Parameters<CONSUME[K]>[0] | undefined;
|
|
10
|
+
retry?: number;
|
|
11
|
+
} & {
|
|
12
|
+
payload: Parameters<CONSUME[K]>[0];
|
|
13
|
+
}) | undefined] : [keyname: K, reqops: Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
|
|
14
|
+
payload?: never;
|
|
15
|
+
} : StructuredSerializeOptions & {
|
|
16
|
+
targetOrigin?: string;
|
|
17
|
+
} & {
|
|
18
|
+
payload?: Parameters<CONSUME[K]>[0] | undefined;
|
|
19
|
+
retry?: number;
|
|
20
|
+
} & {
|
|
21
|
+
payload: Parameters<CONSUME[K]>[0];
|
|
22
|
+
}]) => Promise<ReturnType<CONSUME[K]>>;
|
|
23
|
+
}>;
|
|
24
|
+
//# sourceMappingURL=broadcastChannel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broadcastChannel.d.ts","sourceRoot":"","sources":["../../src/entry/broadcastChannel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,wBAAgB,yBAAyB,CAAC,KAAK,SAAS,YAAY,EAAE,OAAO,SAAS,YAAY,EAChG,MAAM,EAAE,gBAAgB,EACxB,MAAM,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;GAItC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import RPCDecorator from "../core/RPCDecorator.js";
|
|
2
|
+
import BroadcastChannelTransport from "../transports/BroadcastChannelTransport.js";
|
|
3
|
+
function createBroadcastChannelRPC(target, config) {
|
|
4
|
+
const { context, options } = config ?? {};
|
|
5
|
+
return RPCDecorator(new BroadcastChannelTransport(target, options), context);
|
|
6
|
+
}
|
|
7
|
+
export { createBroadcastChannelRPC };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ActionRecord } from '../RPCDecorator';
|
|
2
|
+
import { EntryOptions } from '../transports/fields';
|
|
3
|
+
export declare function createDedicatedWorkerGlobalScopeRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: DedicatedWorkerGlobalScope, config?: EntryOptions<EVENT, CONSUME>): Readonly<Omit<import("../core/RPCAction").default, "on" | "request"> & Pick<import("../fields").Transport, "getType" | "upset"> & {
|
|
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
|
+
payload?: never;
|
|
6
|
+
} : StructuredSerializeOptions & {
|
|
7
|
+
targetOrigin?: string;
|
|
8
|
+
} & {
|
|
9
|
+
payload?: Parameters<CONSUME[K]>[0] | undefined;
|
|
10
|
+
retry?: number;
|
|
11
|
+
} & {
|
|
12
|
+
payload: Parameters<CONSUME[K]>[0];
|
|
13
|
+
}) | undefined] : [keyname: K, reqops: Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
|
|
14
|
+
payload?: never;
|
|
15
|
+
} : StructuredSerializeOptions & {
|
|
16
|
+
targetOrigin?: string;
|
|
17
|
+
} & {
|
|
18
|
+
payload?: Parameters<CONSUME[K]>[0] | undefined;
|
|
19
|
+
retry?: number;
|
|
20
|
+
} & {
|
|
21
|
+
payload: Parameters<CONSUME[K]>[0];
|
|
22
|
+
}]) => Promise<ReturnType<CONSUME[K]>>;
|
|
23
|
+
}>;
|
|
24
|
+
//# sourceMappingURL=dedicatedWorkerGlobalScope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dedicatedWorkerGlobalScope.d.ts","sourceRoot":"","sources":["../../src/entry/dedicatedWorkerGlobalScope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,wBAAgB,mCAAmC,CACjD,KAAK,SAAS,YAAY,EAC1B,OAAO,SAAS,YAAY,EAC5B,MAAM,EAAE,0BAA0B,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;GAG1E"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import RPCDecorator from "../core/RPCDecorator.js";
|
|
2
|
+
import DedicatedWorkerGlobalScopeTransport from "../transports/DedicatedWorkerGlobalScopeTransport.js";
|
|
3
|
+
function createDedicatedWorkerGlobalScopeRPC(target, config) {
|
|
4
|
+
const { context, options } = config ?? {};
|
|
5
|
+
return RPCDecorator(new DedicatedWorkerGlobalScopeTransport(target, options), context);
|
|
6
|
+
}
|
|
7
|
+
export { createDedicatedWorkerGlobalScopeRPC };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ActionRecord } from '../RPCDecorator';
|
|
2
|
+
import { EntryOptions } from '../transports/fields';
|
|
3
|
+
export declare function createServiceWorkerGlobalScopeRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: ServiceWorkerGlobalScope, config?: EntryOptions<EVENT, CONSUME>): Readonly<Omit<import("../core/RPCAction").default, "on" | "request"> & Pick<import("../fields").Transport, "getType" | "upset"> & {
|
|
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
|
+
payload?: never;
|
|
6
|
+
} : StructuredSerializeOptions & {
|
|
7
|
+
targetOrigin?: string;
|
|
8
|
+
} & {
|
|
9
|
+
payload?: Parameters<CONSUME[K]>[0] | undefined;
|
|
10
|
+
retry?: number;
|
|
11
|
+
} & {
|
|
12
|
+
payload: Parameters<CONSUME[K]>[0];
|
|
13
|
+
}) | undefined] : [keyname: K, reqops: Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
|
|
14
|
+
payload?: never;
|
|
15
|
+
} : StructuredSerializeOptions & {
|
|
16
|
+
targetOrigin?: string;
|
|
17
|
+
} & {
|
|
18
|
+
payload?: Parameters<CONSUME[K]>[0] | undefined;
|
|
19
|
+
retry?: number;
|
|
20
|
+
} & {
|
|
21
|
+
payload: Parameters<CONSUME[K]>[0];
|
|
22
|
+
}]) => Promise<ReturnType<CONSUME[K]>>;
|
|
23
|
+
}>;
|
|
24
|
+
//# sourceMappingURL=serviceWorkerGlobalScope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serviceWorkerGlobalScope.d.ts","sourceRoot":"","sources":["../../src/entry/serviceWorkerGlobalScope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,wBAAgB,iCAAiC,CAC/C,KAAK,SAAS,YAAY,EAC1B,OAAO,SAAS,YAAY,EAC5B,MAAM,EAAE,wBAAwB,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;GAGxE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import RPCDecorator from "../core/RPCDecorator.js";
|
|
2
|
+
import ServiceWorkerGlobalScopeTransport from "../transports/ServiceWorkerGlobalScopeTransport.js";
|
|
3
|
+
function createServiceWorkerGlobalScopeRPC(target, config) {
|
|
4
|
+
const { context, options } = config ?? {};
|
|
5
|
+
return RPCDecorator(new ServiceWorkerGlobalScopeTransport(target, options), context);
|
|
6
|
+
}
|
|
7
|
+
export { createServiceWorkerGlobalScopeRPC };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ActionRecord } from '../RPCDecorator';
|
|
2
|
+
import { EntryOptions } from '../transports/fields';
|
|
3
|
+
export declare function createServiceWorkerRegistrationRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: ServiceWorkerRegistration, config?: EntryOptions<EVENT, CONSUME>): Readonly<Omit<import("../core/RPCAction").default, "on" | "request"> & Pick<import("../fields").Transport, "getType" | "upset"> & {
|
|
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
|
+
payload?: never;
|
|
6
|
+
} : StructuredSerializeOptions & {
|
|
7
|
+
targetOrigin?: string;
|
|
8
|
+
} & {
|
|
9
|
+
payload?: Parameters<CONSUME[K]>[0] | undefined;
|
|
10
|
+
retry?: number;
|
|
11
|
+
} & {
|
|
12
|
+
payload: Parameters<CONSUME[K]>[0];
|
|
13
|
+
}) | undefined] : [keyname: K, reqops: Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
|
|
14
|
+
payload?: never;
|
|
15
|
+
} : StructuredSerializeOptions & {
|
|
16
|
+
targetOrigin?: string;
|
|
17
|
+
} & {
|
|
18
|
+
payload?: Parameters<CONSUME[K]>[0] | undefined;
|
|
19
|
+
retry?: number;
|
|
20
|
+
} & {
|
|
21
|
+
payload: Parameters<CONSUME[K]>[0];
|
|
22
|
+
}]) => Promise<ReturnType<CONSUME[K]>>;
|
|
23
|
+
}>;
|
|
24
|
+
//# sourceMappingURL=serviceWorkerRegistration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serviceWorkerRegistration.d.ts","sourceRoot":"","sources":["../../src/entry/serviceWorkerRegistration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,wBAAgB,kCAAkC,CAChD,KAAK,SAAS,YAAY,EAC1B,OAAO,SAAS,YAAY,EAC5B,MAAM,EAAE,yBAAyB,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;GAGzE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import RPCDecorator from "../core/RPCDecorator.js";
|
|
2
|
+
import ServiceWorkerRegistrationTransport from "../transports/ServiceWorkerRegistrationTransport.js";
|
|
3
|
+
function createServiceWorkerRegistrationRPC(target, config) {
|
|
4
|
+
const { context, options } = config ?? {};
|
|
5
|
+
return RPCDecorator(new ServiceWorkerRegistrationTransport(target, options), context);
|
|
6
|
+
}
|
|
7
|
+
export { createServiceWorkerRegistrationRPC };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ActionRecord } from '../RPCDecorator';
|
|
2
|
+
import { EntryOptions } from '../transports/fields';
|
|
3
|
+
export declare function createSharedWorkerRPC<EVENT extends ActionRecord, CONSUME extends ActionRecord>(target: SharedWorker, config?: EntryOptions<EVENT, CONSUME>): Readonly<Omit<import("../core/RPCAction").default, "on" | "request"> & Pick<import("../fields").Transport, "getType" | "upset"> & {
|
|
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
|
+
payload?: never;
|
|
6
|
+
} : StructuredSerializeOptions & {
|
|
7
|
+
targetOrigin?: string;
|
|
8
|
+
} & {
|
|
9
|
+
payload?: Parameters<CONSUME[K]>[0] | undefined;
|
|
10
|
+
retry?: number;
|
|
11
|
+
} & {
|
|
12
|
+
payload: Parameters<CONSUME[K]>[0];
|
|
13
|
+
}) | undefined] : [keyname: K, reqops: Parameters<CONSUME[K]> extends [] ? Omit<import("../core/RPCAction").RequestOptions, "payload"> & {
|
|
14
|
+
payload?: never;
|
|
15
|
+
} : StructuredSerializeOptions & {
|
|
16
|
+
targetOrigin?: string;
|
|
17
|
+
} & {
|
|
18
|
+
payload?: Parameters<CONSUME[K]>[0] | undefined;
|
|
19
|
+
retry?: number;
|
|
20
|
+
} & {
|
|
21
|
+
payload: Parameters<CONSUME[K]>[0];
|
|
22
|
+
}]) => Promise<ReturnType<CONSUME[K]>>;
|
|
23
|
+
}>;
|
|
24
|
+
//# sourceMappingURL=sharedWorker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sharedWorker.d.ts","sourceRoot":"","sources":["../../src/entry/sharedWorker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,wBAAgB,qBAAqB,CAAC,KAAK,SAAS,YAAY,EAAE,OAAO,SAAS,YAAY,EAC5F,MAAM,EAAE,YAAY,EACpB,MAAM,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;GAItC"}
|