1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 | export interface Endpoint {
|
14 | postMessage(message: any, transfer?: any[]): void;
|
15 | addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: {}): void;
|
16 | removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: {}): void;
|
17 | }
|
18 | declare type Promisify<T> = T extends Promise<any> ? T : Promise<T>;
|
19 |
|
20 |
|
21 |
|
22 | export declare const proxyValueSymbol: unique symbol;
|
23 |
|
24 |
|
25 |
|
26 | export interface ProxyValue {
|
27 | [proxyValueSymbol]: true;
|
28 | }
|
29 |
|
30 | declare type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 | declare type ProxiedObject<T> = {
|
37 | [P in keyof T]: T[P] extends (...args: infer Arguments) => infer R ? (...args: Arguments) => Promisify<R> : (T[P] extends ProxyValue ? ProxiedObject<Omit<T[P], keyof ProxyValue>> : Promisify<T[P]>);
|
38 | };
|
39 |
|
40 |
|
41 |
|
42 |
|
43 | export declare type ProxyResult<T> = ProxiedObject<T> & (T extends (...args: infer Arguments) => infer R ? (...args: Arguments) => Promisify<R> : unknown) & (T extends {
|
44 | new (...args: infer ArgumentsType): infer InstanceType;
|
45 | } ? {
|
46 | new (...args: ArgumentsType): Promisify<ProxiedObject<InstanceType>>;
|
47 | } : unknown);
|
48 | export declare type Proxy = Function;
|
49 | export declare type Exposable = Function | Object;
|
50 | export interface TransferHandler {
|
51 | canHandle: (obj: {}) => Boolean;
|
52 | serialize: (obj: {}) => {};
|
53 | deserialize: (obj: {}) => {};
|
54 | }
|
55 | export declare const transferHandlers: Map<string, TransferHandler>;
|
56 | export declare function proxy<T = any>(endpoint: Endpoint | Window, target?: any): ProxyResult<T>;
|
57 | export declare function proxyValue<T>(obj: T): T & ProxyValue;
|
58 | export declare function expose(rootObj: Exposable, endpoint: Endpoint | Window): void;
|
59 | export {};
|