@event-chat/rpc 0.1.27 → 0.1.29
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 -5
- package/dist/core/RPCAction.d.ts.map +1 -1
- package/dist/core/RPCAction.js +1 -2
- package/dist/core/registry.d.ts +2 -3
- package/dist/core/registry.d.ts.map +1 -1
- package/dist/createCtx.d.ts +1 -1
- package/dist/createCtx.d.ts.map +1 -1
- package/dist/entry/broadcastChannel.d.ts +3 -3
- package/dist/entry/broadcastChannel.d.ts.map +1 -1
- package/dist/entry/dedicatedWorkerGlobalScope.d.ts +3 -3
- package/dist/entry/dedicatedWorkerGlobalScope.d.ts.map +1 -1
- package/dist/entry/messagePort.d.ts +3 -3
- package/dist/entry/messagePort.d.ts.map +1 -1
- package/dist/entry/serviceWorkerGlobalScope.d.ts +3 -3
- package/dist/entry/serviceWorkerGlobalScope.d.ts.map +1 -1
- package/dist/entry/serviceWorkerRegistration.d.ts +3 -3
- package/dist/entry/serviceWorkerRegistration.d.ts.map +1 -1
- package/dist/entry/sharedWorker.d.ts +3 -3
- package/dist/entry/sharedWorker.d.ts.map +1 -1
- package/dist/entry/sharedWorkerGlobalScope.d.ts +3 -3
- package/dist/entry/sharedWorkerGlobalScope.d.ts.map +1 -1
- package/dist/entry/webSocket.d.ts +3 -3
- package/dist/entry/webSocket.d.ts.map +1 -1
- package/dist/entry/window.d.ts +3 -3
- package/dist/entry/window.d.ts.map +1 -1
- package/dist/entry/worker.d.ts +3 -3
- package/dist/entry/worker.d.ts.map +1 -1
- package/dist/fields.d.ts +16 -40
- package/dist/fields.d.ts.map +1 -1
- package/dist/fields.js +1 -30
- package/dist/index.d.ts +3 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -4
- package/dist/react/fields.d.ts +0 -3
- package/dist/react/fields.d.ts.map +1 -1
- package/dist/react/hooks.d.ts +2 -4
- package/dist/react/hooks.d.ts.map +1 -1
- package/dist/react/index.d.ts +0 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +0 -1
- package/dist/transports/BaseTransport.d.ts +2 -6
- package/dist/transports/BaseTransport.d.ts.map +1 -1
- package/dist/transports/BroadcastChannelTransport.d.ts.map +1 -1
- package/dist/transports/BroadcastChannelTransport.js +1 -1
- package/dist/transports/DedicatedWorkerGlobalScopeTransport.d.ts.map +1 -1
- package/dist/transports/DedicatedWorkerGlobalScopeTransport.js +1 -1
- package/dist/transports/MessagePortTransport.d.ts.map +1 -1
- package/dist/transports/MessagePortTransport.js +1 -1
- package/dist/transports/ServiceWorkerGlobalScopeTransport.d.ts +2 -2
- package/dist/transports/ServiceWorkerGlobalScopeTransport.d.ts.map +1 -1
- package/dist/transports/ServiceWorkerGlobalScopeTransport.js +2 -2
- package/dist/transports/ServiceWorkerRegistrationTransport.d.ts +2 -2
- package/dist/transports/ServiceWorkerRegistrationTransport.d.ts.map +1 -1
- package/dist/transports/ServiceWorkerRegistrationTransport.js +1 -1
- package/dist/transports/SharedWorkerGlobalScopeTransport.d.ts.map +1 -1
- package/dist/transports/SharedWorkerGlobalScopeTransport.js +1 -1
- package/dist/transports/SharedWorkerTransport.d.ts.map +1 -1
- package/dist/transports/SharedWorkerTransport.js +1 -1
- package/dist/transports/WebSocketTransport.d.ts.map +1 -1
- package/dist/transports/WebSocketTransport.js +1 -1
- package/dist/transports/WindowTransport.d.ts +2 -2
- package/dist/transports/WindowTransport.d.ts.map +1 -1
- package/dist/transports/WindowTransport.js +1 -1
- package/dist/transports/WorkerTransport.d.ts.map +1 -1
- package/dist/transports/WorkerTransport.js +1 -1
- package/dist/utils.d.ts +6 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +17 -1
- package/package.json +1 -1
- package/dist/RPCAction.d.ts +0 -43
- package/dist/RPCAction.d.ts.map +0 -1
- package/dist/RPCAction.js +0 -196
- package/dist/RPCDecorator.d.ts +0 -21
- package/dist/RPCDecorator.d.ts.map +0 -1
- package/dist/RPCDecorator.js +0 -57
- package/dist/RPCFactory.d.ts +0 -22
- package/dist/RPCFactory.d.ts.map +0 -1
- package/dist/RPCFactory.js +0 -141
- package/dist/RPCProvider.d.ts +0 -4
- package/dist/RPCProvider.d.ts.map +0 -1
- package/dist/RPCProvider.js +0 -34
- package/dist/hooks.d.ts +0 -34
- package/dist/hooks.d.ts.map +0 -1
- package/dist/hooks.js +0 -82
- package/dist/react/createCtx.d.ts +0 -13
- package/dist/react/createCtx.d.ts.map +0 -1
- package/dist/react/createCtx.js +0 -33
- package/dist/transports/fields.d.ts +0 -19
- package/dist/transports/fields.d.ts.map +0 -1
- package/dist/transports/fields.js +0 -0
package/dist/RPCFactory.js
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
import { TARGET_TYPE_STRINGS } from "./fields.js";
|
|
2
|
-
function isSafeBufferSource(data) {
|
|
3
|
-
return data instanceof ArrayBuffer || ArrayBuffer.isView(data) && data.buffer instanceof ArrayBuffer;
|
|
4
|
-
}
|
|
5
|
-
class RPCFactory {
|
|
6
|
-
_target;
|
|
7
|
-
_options;
|
|
8
|
-
_onconnect = {};
|
|
9
|
-
constructor(_target, _options = {}){
|
|
10
|
-
this._target = _target;
|
|
11
|
-
this._options = _options;
|
|
12
|
-
this._onconnect = {
|
|
13
|
-
WebSocketPort: new Promise((resolve)=>{
|
|
14
|
-
if (this._target instanceof WebSocket) {
|
|
15
|
-
this._target.onopen = ()=>{
|
|
16
|
-
resolve(true);
|
|
17
|
-
};
|
|
18
|
-
this._target.onclose = ()=>{
|
|
19
|
-
resolve(false);
|
|
20
|
-
};
|
|
21
|
-
} else resolve(false);
|
|
22
|
-
})
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
destory() {
|
|
26
|
-
if (this._target instanceof BroadcastChannel) this._target.close();
|
|
27
|
-
if (this._target instanceof WebSocket) {
|
|
28
|
-
this._target.onclose = null;
|
|
29
|
-
this._target.onopen = null;
|
|
30
|
-
if (this._target.readyState === WebSocket.OPEN) this._target.close();
|
|
31
|
-
}
|
|
32
|
-
this._target, ServiceWorkerContainer;
|
|
33
|
-
if (this._target instanceof SharedWorker) this._target.port.close();
|
|
34
|
-
if ('undefined' != typeof SharedWorkerGlobalScope && this._target instanceof SharedWorkerGlobalScope) {
|
|
35
|
-
this._onconnect.SharedWorkerGlobalPort?.then((messagePort)=>messagePort.close()).catch(()=>{});
|
|
36
|
-
if (this._onconnect.SharedWorkerGlobalScope) this._target.removeEventListener('connect', this._onconnect.SharedWorkerGlobalScope);
|
|
37
|
-
}
|
|
38
|
-
if (this._target instanceof Worker) this._target.terminate();
|
|
39
|
-
this._onconnect = {};
|
|
40
|
-
}
|
|
41
|
-
getType() {
|
|
42
|
-
return `${Object.prototype.toString.call(this._target)}`;
|
|
43
|
-
}
|
|
44
|
-
is(source) {
|
|
45
|
-
return this._target === source;
|
|
46
|
-
}
|
|
47
|
-
onmessage(listener) {
|
|
48
|
-
if (this._target instanceof BroadcastChannel) this._target.addEventListener('message', listener, this._options.message);
|
|
49
|
-
if (this._target instanceof WebSocket) this._target.onmessage = listener;
|
|
50
|
-
if (this.getType() === TARGET_TYPE_STRINGS.Window) window.addEventListener('message', listener, this._options.message);
|
|
51
|
-
if ('undefined' != typeof ServiceWorkerRegistration && this._target instanceof ServiceWorkerRegistration) navigator.serviceWorker.addEventListener('message', listener, this._options.message);
|
|
52
|
-
if ('undefined' != typeof ServiceWorkerGlobalScope && this._target instanceof ServiceWorkerGlobalScope) {
|
|
53
|
-
this._onconnect.ServiceWorkerGlobalScope = (event)=>{
|
|
54
|
-
const ports = event.ports.map((i)=>i);
|
|
55
|
-
const source = event.source instanceof Client ? null : event.source;
|
|
56
|
-
const messageEvent = new MessageEvent('serverWork', {
|
|
57
|
-
...event,
|
|
58
|
-
ports,
|
|
59
|
-
source
|
|
60
|
-
});
|
|
61
|
-
listener(messageEvent);
|
|
62
|
-
};
|
|
63
|
-
this._target.addEventListener('message', this._onconnect.ServiceWorkerGlobalScope, this._options.message);
|
|
64
|
-
}
|
|
65
|
-
if (this._target instanceof SharedWorker) {
|
|
66
|
-
this._target.port.addEventListener('message', listener, this._options.message);
|
|
67
|
-
this._target.port.start();
|
|
68
|
-
}
|
|
69
|
-
if ('undefined' != typeof SharedWorkerGlobalScope && this._target instanceof SharedWorkerGlobalScope) {
|
|
70
|
-
const SharedWorker1 = this._target;
|
|
71
|
-
this._onconnect.SharedWorkerGlobalPort = new Promise((resolve)=>{
|
|
72
|
-
this._onconnect.SharedWorkerGlobalScope = (event)=>{
|
|
73
|
-
const port = event.ports[0];
|
|
74
|
-
resolve(port);
|
|
75
|
-
port.addEventListener('message', listener, this._options.message);
|
|
76
|
-
port.start();
|
|
77
|
-
};
|
|
78
|
-
SharedWorker1.addEventListener('connect', this._onconnect.SharedWorkerGlobalScope);
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
if (this._target instanceof Worker) this._target.addEventListener('message', listener, this._options.message);
|
|
82
|
-
if ('undefined' != typeof DedicatedWorkerGlobalScope && this._target instanceof DedicatedWorkerGlobalScope) this._target.addEventListener('message', listener, this._options.message);
|
|
83
|
-
}
|
|
84
|
-
onremove(listener) {
|
|
85
|
-
if (this._target instanceof BroadcastChannel) this._target.removeEventListener('message', listener, this._options.message);
|
|
86
|
-
if (this._target instanceof WebSocket) this._target.onmessage = null;
|
|
87
|
-
if (this.getType() === TARGET_TYPE_STRINGS.Window) window.removeEventListener('message', listener, this._options.message);
|
|
88
|
-
if ('undefined' != typeof ServiceWorkerRegistration && this._target instanceof ServiceWorkerRegistration) navigator.serviceWorker.removeEventListener('message', listener, this._options.message);
|
|
89
|
-
if ('undefined' != typeof ServiceWorkerGlobalScope && this._target instanceof ServiceWorkerGlobalScope && this._onconnect.ServiceWorkerGlobalScope) this._target.removeEventListener('message', this._onconnect.ServiceWorkerGlobalScope, this._options.message);
|
|
90
|
-
if (this._target instanceof SharedWorker) this._target.port.removeEventListener('message', listener, this._options.message);
|
|
91
|
-
if ('undefined' != typeof SharedWorkerGlobalScope && this._target instanceof SharedWorkerGlobalScope) this._onconnect.SharedWorkerGlobalPort?.then((messagePort)=>{
|
|
92
|
-
messagePort.removeEventListener('message', listener, this._options.message);
|
|
93
|
-
}).catch(()=>{});
|
|
94
|
-
if (this._target instanceof Worker) this._target.removeEventListener('message', listener, this._options.message);
|
|
95
|
-
if ('undefined' != typeof DedicatedWorkerGlobalScope && this._target instanceof DedicatedWorkerGlobalScope) this._target.removeEventListener('message', listener, this._options.message);
|
|
96
|
-
}
|
|
97
|
-
postMessage(message, options) {
|
|
98
|
-
const { transfer, targetOrigin = '*' } = options ?? {};
|
|
99
|
-
if (this._target instanceof BroadcastChannel) this._target.postMessage(message);
|
|
100
|
-
if (this._target instanceof WebSocket) {
|
|
101
|
-
const target = this._target;
|
|
102
|
-
this._onconnect.WebSocketPort?.then((open)=>{
|
|
103
|
-
if (open) target.send(isSafeBufferSource(message) || message instanceof Blob ? message : String(message));
|
|
104
|
-
}).catch(()=>{});
|
|
105
|
-
}
|
|
106
|
-
if (this.getType() === TARGET_TYPE_STRINGS.Window && 'postMessage' in this._target) this._target.postMessage(message, {
|
|
107
|
-
targetOrigin,
|
|
108
|
-
transfer
|
|
109
|
-
});
|
|
110
|
-
if ('undefined' != typeof ServiceWorkerRegistration && this._target instanceof ServiceWorkerRegistration) this._target.active?.postMessage(message, {
|
|
111
|
-
transfer
|
|
112
|
-
});
|
|
113
|
-
if ('undefined' != typeof ServiceWorkerGlobalScope && this._target instanceof ServiceWorkerGlobalScope) this._target.clients.matchAll().then((clients)=>{
|
|
114
|
-
clients.forEach((client)=>client.postMessage(message, {
|
|
115
|
-
transfer
|
|
116
|
-
}));
|
|
117
|
-
}).catch(()=>{});
|
|
118
|
-
if (this._target instanceof SharedWorker) this._target.port.postMessage(message, {
|
|
119
|
-
transfer
|
|
120
|
-
});
|
|
121
|
-
if ('undefined' != typeof SharedWorkerGlobalScope && this._target instanceof SharedWorkerGlobalScope) this._onconnect.SharedWorkerGlobalPort?.then((messagePort)=>{
|
|
122
|
-
messagePort.postMessage(message, {
|
|
123
|
-
transfer
|
|
124
|
-
});
|
|
125
|
-
}).catch(()=>{});
|
|
126
|
-
if (this._target instanceof Worker) this._target.postMessage(message, {
|
|
127
|
-
transfer
|
|
128
|
-
});
|
|
129
|
-
if ('undefined' != typeof DedicatedWorkerGlobalScope && this._target instanceof DedicatedWorkerGlobalScope) this._target.postMessage(message, {
|
|
130
|
-
transfer
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
upset(options) {
|
|
134
|
-
this._options = {
|
|
135
|
-
...this._options,
|
|
136
|
-
...options
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
const src_RPCFactory = RPCFactory;
|
|
141
|
-
export { src_RPCFactory as default };
|
package/dist/RPCProvider.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RPCProvider.d.ts","sourceRoot":"","sources":["../src/RPCProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,iBAAiB,EAAkC,MAAM,OAAO,CAAA;AAW7E,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,iBAAiB,CA4CtC,CAAA;AAED,eAAe,WAAW,CAAA"}
|
package/dist/RPCProvider.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useCallback, useEffect, useRef } from "react";
|
|
3
|
-
import { RPCInstanceContext, TARGET_TYPE_STRINGS } from "./fields.js";
|
|
4
|
-
import { objectValues } from "./utils.js";
|
|
5
|
-
const RPCProvider = ({ children })=>{
|
|
6
|
-
const list = useRef(new Map());
|
|
7
|
-
const brodcastScope = useCallback((data, options)=>{
|
|
8
|
-
const { exclude, include, typein, typeout } = options ?? {};
|
|
9
|
-
if (list.current.size > 0) {
|
|
10
|
-
const scope = objectValues(TARGET_TYPE_STRINGS).filter((item)=>!exclude?.includes(item)).filter((item)=>!include || include.includes(item)).map(String);
|
|
11
|
-
list.current.forEach((group, item)=>{
|
|
12
|
-
if (scope.includes(item.getType()) && !typeout?.includes(group) && (!typein || typein.includes(group))) item.broadcast(data);
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
}, []);
|
|
16
|
-
const mount = useCallback((data, name)=>{
|
|
17
|
-
const newMap = new Map(list.current);
|
|
18
|
-
if (void 0 !== name) newMap.set(data, name);
|
|
19
|
-
else newMap.delete(data);
|
|
20
|
-
list.current = newMap;
|
|
21
|
-
}, []);
|
|
22
|
-
useEffect(()=>()=>{
|
|
23
|
-
list.current = new Map();
|
|
24
|
-
}, []);
|
|
25
|
-
return /*#__PURE__*/ jsx(RPCInstanceContext.Provider, {
|
|
26
|
-
value: {
|
|
27
|
-
brodcastScope,
|
|
28
|
-
mount
|
|
29
|
-
},
|
|
30
|
-
children: children
|
|
31
|
-
});
|
|
32
|
-
};
|
|
33
|
-
const src_RPCProvider = RPCProvider;
|
|
34
|
-
export { src_RPCProvider as default };
|
package/dist/hooks.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { ActionRecord, DecoratorContext } from './RPCDecorator';
|
|
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, "request" | "on"> & Pick<import("./RPCFactory").default<import("./RPCFactory").TargetType>, "getType" | "upset"> & {
|
|
4
|
-
request: <K extends keyof CONSUME>(...args: Parameters<CONSUME[K]> extends [] ? [keyname: K, reqops?: (Parameters<CONSUME[K]> extends [] ? Omit<import("./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("./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
|
-
}>, "destroy">>;
|
|
24
|
-
mount: (name: string) => void;
|
|
25
|
-
connected: boolean;
|
|
26
|
-
brodcastScope: <T>(data: import("./RPCAction").RequestOptions<T>, options?: import("./fields").ScopeProps) => void;
|
|
27
|
-
}>;
|
|
28
|
-
export default useRPC;
|
|
29
|
-
interface RPCHooksOptions<EVENT extends ActionRecord, CONSUME extends ActionRecord> extends DecoratorContext<EVENT, CONSUME> {
|
|
30
|
-
init: () => TargetInit | Promise<TargetInit>;
|
|
31
|
-
name?: string;
|
|
32
|
-
}
|
|
33
|
-
type TargetInit = BroadcastChannel | ServiceWorkerRegistration | SharedWorker | WebSocket | Window | Worker | HTMLIFrameElement | null;
|
|
34
|
-
//# sourceMappingURL=hooks.d.ts.map
|
package/dist/hooks.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AACA,OAAqB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAI7E,QAAA,MAAM,MAAM,GAAI,KAAK,SAAS,YAAY,EAAE,OAAO,SAAS,YAAY,EAAE,kBAGvE,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;kBAoDvB,MAAM;;;EAkDhB,CAAA;AAED,eAAe,MAAM,CAAA;AAErB,UAAU,eAAe,CACvB,KAAK,SAAS,YAAY,EAC1B,OAAO,SAAS,YAAY,CAC5B,SAAQ,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC;IACxC,IAAI,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAOD,KAAK,UAAU,GACX,gBAAgB,GAChB,yBAAyB,GACzB,YAAY,GACZ,SAAS,GACT,MAAM,GACN,MAAM,GACN,iBAAiB,GACjB,IAAI,CAAA"}
|
package/dist/hooks.js
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
2
|
-
import RPCDecorator from "./RPCDecorator.js";
|
|
3
|
-
import { RPCInstanceContext } from "./fields.js";
|
|
4
|
-
const disableKey = [
|
|
5
|
-
'destroy'
|
|
6
|
-
];
|
|
7
|
-
const useRPC = ({ init, ...ops })=>{
|
|
8
|
-
const { mount, brodcastScope = ()=>{} } = useContext(RPCInstanceContext);
|
|
9
|
-
const [connected, setConnected] = useState(false);
|
|
10
|
-
const initRef = useRef(init);
|
|
11
|
-
const opsRef = useRef(ops);
|
|
12
|
-
const decoratorRef = useRef(null);
|
|
13
|
-
const processRef = useRef(Promise.resolve(null));
|
|
14
|
-
const isRPCResult = useCallback((data, key)=>null !== data && key in data, []);
|
|
15
|
-
const rpcIns = useMemo(()=>new Proxy({}, {
|
|
16
|
-
get (_, key) {
|
|
17
|
-
const decorator = decoratorRef.current;
|
|
18
|
-
const keyname = key.toString();
|
|
19
|
-
if (decorator && !disableKey.map(String).includes(keyname) && isRPCResult(decorator, keyname)) return decorator[keyname];
|
|
20
|
-
throw new Error(`outof decorator: ${key.toString()}`);
|
|
21
|
-
},
|
|
22
|
-
has (_, key) {
|
|
23
|
-
const decorator = decoratorRef.current;
|
|
24
|
-
const keyname = key.toString();
|
|
25
|
-
return null !== decorator && !disableKey.map(String).includes(keyname) && isRPCResult(decorator, keyname);
|
|
26
|
-
},
|
|
27
|
-
set () {
|
|
28
|
-
throw new Error('decorator is readonly');
|
|
29
|
-
}
|
|
30
|
-
}), [
|
|
31
|
-
decoratorRef,
|
|
32
|
-
isRPCResult
|
|
33
|
-
]);
|
|
34
|
-
const mounHandle = useCallback((name)=>{
|
|
35
|
-
if (decoratorRef.current) mount?.(decoratorRef.current, name);
|
|
36
|
-
}, [
|
|
37
|
-
mount
|
|
38
|
-
]);
|
|
39
|
-
useEffect(()=>{
|
|
40
|
-
const { config, name = '', ...opConfig } = opsRef.current;
|
|
41
|
-
processRef.current = processRef.current.then(initRef.current).then((tar)=>{
|
|
42
|
-
const result = RPCDecorator(tar instanceof HTMLIFrameElement ? tar.contentWindow : tar, {
|
|
43
|
-
...opConfig,
|
|
44
|
-
config: {
|
|
45
|
-
...config,
|
|
46
|
-
onConnect () {
|
|
47
|
-
config?.onConnect?.();
|
|
48
|
-
setConnected(true);
|
|
49
|
-
},
|
|
50
|
-
onDisconnect () {
|
|
51
|
-
config?.onDisconnect?.();
|
|
52
|
-
setConnected(false);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
decoratorRef.current = result;
|
|
57
|
-
mount?.(result, name);
|
|
58
|
-
return result;
|
|
59
|
-
});
|
|
60
|
-
return ()=>{
|
|
61
|
-
processRef.current = processRef.current.then((result)=>{
|
|
62
|
-
setConnected(false);
|
|
63
|
-
if (result) {
|
|
64
|
-
mount?.(result);
|
|
65
|
-
result.destroy();
|
|
66
|
-
}
|
|
67
|
-
decoratorRef.current = null;
|
|
68
|
-
return null;
|
|
69
|
-
});
|
|
70
|
-
};
|
|
71
|
-
}, [
|
|
72
|
-
mount
|
|
73
|
-
]);
|
|
74
|
-
return Object.freeze({
|
|
75
|
-
rpc: rpcIns,
|
|
76
|
-
mount: mounHandle,
|
|
77
|
-
connected,
|
|
78
|
-
brodcastScope
|
|
79
|
-
});
|
|
80
|
-
};
|
|
81
|
-
const hooks = useRPC;
|
|
82
|
-
export { hooks as default };
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { ActionFunType, BrodcastItem } from '../core/RPCAction';
|
|
2
|
-
declare function createCtx<CTX extends Record<string, unknown>, ACTIONS extends Record<string, ActionFunType>, BRODCATS extends Record<string, BrodcastItem>>(factory: (ctx: Partial<CTX>) => ACTIONS, brodcast?: (ctx: Partial<CTX>) => BRODCATS): Readonly<{
|
|
3
|
-
actions: ACTIONS;
|
|
4
|
-
brodcasts: BRODCATS | undefined;
|
|
5
|
-
provider: (next: Partial<CTX>) => () => void;
|
|
6
|
-
}>;
|
|
7
|
-
declare function createService<CTX extends Record<string, unknown>>(): <ACTIONS extends Record<string, ActionFunType>, BRODCATS extends Record<string, BrodcastItem>>(factory: (ctx: Partial<CTX>) => ACTIONS, brodcast?: (ctx: Partial<CTX>) => BRODCATS) => Readonly<{
|
|
8
|
-
actions: ACTIONS;
|
|
9
|
-
brodcasts: BRODCATS | undefined;
|
|
10
|
-
provider: (next: Partial<CTX>) => () => void;
|
|
11
|
-
}>;
|
|
12
|
-
export { createCtx, createService };
|
|
13
|
-
//# sourceMappingURL=createCtx.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createCtx.d.ts","sourceRoot":"","sources":["../../src/react/createCtx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAE/D,iBAAS,SAAS,CAChB,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC7C,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAC7C,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ;;;qBAiB3D,OAAO,CAAC,GAAG,CAAC;GAYrC;AAED,iBAAS,aAAa,CAAC,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAEtD,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC7C,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EAE7C,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EACvC,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ;;;;GAE7C;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAA"}
|
package/dist/react/createCtx.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
function createCtx(factory, brodcast) {
|
|
2
|
-
const ctx = {
|
|
3
|
-
current: null
|
|
4
|
-
};
|
|
5
|
-
const proxyCtx = new Proxy({}, {
|
|
6
|
-
get (_, key) {
|
|
7
|
-
return ctx.current ? Reflect.get(ctx.current, key) : void 0;
|
|
8
|
-
},
|
|
9
|
-
set () {
|
|
10
|
-
throw new Error('ctx is readonly');
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
const actions = factory(proxyCtx);
|
|
14
|
-
const brodcasts = brodcast?.(proxyCtx);
|
|
15
|
-
const provider = (next)=>{
|
|
16
|
-
ctx.current = {
|
|
17
|
-
...ctx.current ?? {},
|
|
18
|
-
...next
|
|
19
|
-
};
|
|
20
|
-
return ()=>{
|
|
21
|
-
ctx.current = null;
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
return Object.freeze({
|
|
25
|
-
actions,
|
|
26
|
-
brodcasts,
|
|
27
|
-
provider
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
function createService() {
|
|
31
|
-
return (factory, brodcast)=>createCtx(factory, brodcast);
|
|
32
|
-
}
|
|
33
|
-
export { createCtx, createService };
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { ActionRecord, DecoratorContext } from '../core/RPCDecorator';
|
|
2
|
-
import { FactoryOptions } from './BaseTransport';
|
|
3
|
-
export interface Transport {
|
|
4
|
-
destory: () => void;
|
|
5
|
-
getType: () => string;
|
|
6
|
-
is: (source: MessageEventSource | null) => boolean;
|
|
7
|
-
onmessage: (listener: (ev: MessageEvent) => unknown) => void;
|
|
8
|
-
onremove: (listener: (ev: MessageEvent) => unknown) => void;
|
|
9
|
-
postMessage: (message: unknown, options?: IframeSerializeOptions) => void;
|
|
10
|
-
upset: (options: FactoryOptions) => void;
|
|
11
|
-
}
|
|
12
|
-
export type IframeSerializeOptions = StructuredSerializeOptions & {
|
|
13
|
-
targetOrigin?: string;
|
|
14
|
-
};
|
|
15
|
-
export interface EntryOptions<EVENT extends ActionRecord, CONSUME extends ActionRecord> {
|
|
16
|
-
options?: FactoryOptions;
|
|
17
|
-
context?: DecoratorContext<EVENT, CONSUME>;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=fields.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/transports/fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAMhD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,OAAO,EAAE,MAAM,MAAM,CAAA;IACrB,EAAE,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,KAAK,OAAO,CAAA;IAClD,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,KAAK,IAAI,CAAA;IAC5D,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,YAAY,KAAK,OAAO,KAAK,IAAI,CAAA;IAC3D,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,sBAAsB,KAAK,IAAI,CAAA;IACzE,KAAK,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAA;CACzC;AAED,MAAM,MAAM,sBAAsB,GAAG,0BAA0B,GAAG;IAChE,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,MAAM,WAAW,YAAY,CAAC,KAAK,SAAS,YAAY,EAAE,OAAO,SAAS,YAAY;IACpF,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,OAAO,CAAC,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;CAC3C"}
|
|
File without changes
|