chrome-in-iframe 1.0.0 → 2.0.0
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/CHANGELOG.md +140 -0
- package/CHANGELOG.zh-CN.md +72 -0
- package/LICENSE +15 -0
- package/README.md +91 -13
- package/README.zh-CN.md +93 -14
- package/dist/api.d.ts +4 -0
- package/dist/channel/channel.d.ts +1 -1
- package/dist/channel/deserializer.d.ts +3 -1
- package/dist/channel/listener.d.ts +3 -2
- package/dist/channel/sender.d.ts +1 -1
- package/dist/channel/serializer.d.ts +3 -1
- package/dist/channel/types.d.ts +25 -7
- package/dist/client/context.d.ts +5 -1
- package/dist/client/endpoint.d.ts +3 -1
- package/dist/index.js +772 -237
- package/dist/processor/accessProperty.d.ts +3 -3
- package/dist/processor/invoke.d.ts +3 -3
- package/dist/processor/invokeCallback.d.ts +3 -3
- package/dist/processor/lifecycle.d.ts +3 -0
- package/package.json +15 -6
package/dist/channel/types.d.ts
CHANGED
|
@@ -40,12 +40,20 @@ export interface Messages {
|
|
|
40
40
|
data?: MessageValue;
|
|
41
41
|
error?: SerializedError;
|
|
42
42
|
};
|
|
43
|
+
releaseCallbacks: {
|
|
44
|
+
ids: string[];
|
|
45
|
+
};
|
|
46
|
+
destroyEndpoint: {
|
|
47
|
+
instanceId: string;
|
|
48
|
+
};
|
|
43
49
|
}
|
|
44
50
|
export type MessageType = keyof Messages;
|
|
45
51
|
export type MessageBody<K extends MessageType = MessageType> = {
|
|
46
52
|
type: K;
|
|
47
53
|
key: string;
|
|
48
54
|
data: Messages[K];
|
|
55
|
+
senderInstanceId: string;
|
|
56
|
+
targetInstanceId?: string;
|
|
49
57
|
};
|
|
50
58
|
export interface MessagePoster {
|
|
51
59
|
postMessage(message: string): void;
|
|
@@ -60,32 +68,42 @@ export interface PromiseCallbacks {
|
|
|
60
68
|
export interface ClientContext {
|
|
61
69
|
getDelegateTarget(): MessageValue;
|
|
62
70
|
getMessageChannel(): MessageChannel;
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
71
|
+
getInstanceId(): string;
|
|
72
|
+
getFunctionCache(): LRUCache<string, CallbackEntry>;
|
|
73
|
+
getPersistentFunctionCache(): Map<string, CallbackEntry>;
|
|
74
|
+
registerFunction(fn: Callable, thisArg: MessageValue, options?: CallbackCacheOptions): string;
|
|
75
|
+
getRemoteCallback(id: string, invoke: (args: MessageValue[]) => MessageValue, options: CallbackCacheOptions | undefined, remoteInstanceId: string): Callable;
|
|
67
76
|
getAndRemovePendingPromise(id: RequestId): PromiseCallbacks | undefined;
|
|
68
77
|
invoke(path: PathKey[], args: MessageValue[]): Promise<MessageValue>;
|
|
69
78
|
accessProperty(path: PathKey[]): Promise<MessageValue>;
|
|
70
79
|
invokeFunctionById(id: string, args: MessageValue[], options?: CallbackCacheOptions): Promise<MessageValue>;
|
|
71
80
|
registerPendingPromise(id: RequestId, callbacks: PromiseCallbacks): void;
|
|
72
|
-
|
|
81
|
+
handleRemoteDestroy(instanceId: string): void;
|
|
82
|
+
destroy(notifyRemote?: boolean): void;
|
|
73
83
|
}
|
|
74
84
|
export interface CallbackCacheOptions {
|
|
75
85
|
persistent?: boolean;
|
|
76
86
|
}
|
|
87
|
+
export interface CallbackEntry {
|
|
88
|
+
fn: Callable;
|
|
89
|
+
thisArg: MessageValue;
|
|
90
|
+
}
|
|
77
91
|
export interface MessageChannel {
|
|
78
92
|
getSender(): MessageSender;
|
|
79
93
|
getContext(): ClientContext;
|
|
80
94
|
getPoster(): MessagePoster;
|
|
81
95
|
getKey(): string;
|
|
96
|
+
getInstanceId(): string;
|
|
82
97
|
destroy(): void;
|
|
83
98
|
}
|
|
84
99
|
export interface MessageSender {
|
|
85
|
-
sendMessage<K extends MessageType>(type: K, data: Messages[K]): void;
|
|
100
|
+
sendMessage<K extends MessageType>(type: K, data: Messages[K], targetInstanceId?: string): void;
|
|
86
101
|
}
|
|
87
102
|
export interface RequestHandler<K extends MessageType = MessageType> {
|
|
88
|
-
(data: Messages[K], ctx: ClientContext): void;
|
|
103
|
+
(data: Messages[K], ctx: ClientContext, meta: MessageMeta): void;
|
|
104
|
+
}
|
|
105
|
+
export interface MessageMeta {
|
|
106
|
+
senderInstanceId: string;
|
|
89
107
|
}
|
|
90
108
|
export type ProxyNode = {
|
|
91
109
|
parent?: ProxyNode;
|
package/dist/client/context.d.ts
CHANGED
|
@@ -2,5 +2,9 @@ import type { ClientContext, MessageChannel, MessageValue } from '../channel/typ
|
|
|
2
2
|
export interface ClientContextOptions {
|
|
3
3
|
delegateTarget?: MessageValue;
|
|
4
4
|
timeout?: number;
|
|
5
|
+
functionCacheMax?: number;
|
|
6
|
+
functionCacheTtl?: number;
|
|
7
|
+
remoteCallbackCacheMax?: number;
|
|
8
|
+
remoteCallbackCacheTtl?: number;
|
|
5
9
|
}
|
|
6
|
-
export declare function createClientContext(getMessageChannel: () => MessageChannel, options?: ClientContextOptions): ClientContext;
|
|
10
|
+
export declare function createClientContext(getMessageChannel: () => MessageChannel, instanceId: string, options?: ClientContextOptions): ClientContext;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { MessagePoster } from '../channel/types';
|
|
1
|
+
import type { ClientContext, MessagePoster } from '../channel/types';
|
|
2
2
|
import { type ClientContextOptions } from './context';
|
|
3
3
|
export interface EndpointOptions {
|
|
4
4
|
poster: MessagePoster;
|
|
@@ -8,5 +8,7 @@ export interface EndpointOptions {
|
|
|
8
8
|
export interface Endpoint<TProxy = unknown> {
|
|
9
9
|
proxy: TProxy;
|
|
10
10
|
destroy: () => void;
|
|
11
|
+
/** @internal Exposed for tests; do not use in application code. */
|
|
12
|
+
getContext: () => ClientContext;
|
|
11
13
|
}
|
|
12
14
|
export declare function createEndpoint<TProxy = unknown>(options: EndpointOptions): Endpoint<TProxy>;
|