Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ulixee
GitHub Repository: ulixee/secret-agent
Path: blob/main/interfaces/IDevtoolsSession.ts
1028 views
1
import { ProtocolMapping } from 'devtools-protocol/types/protocol-mapping';
2
import Protocol from 'devtools-protocol';
3
import ITypedEventEmitter from './ITypedEventEmitter';
4
import { FilterFlags, FilterOutFlags } from './AllowedNames';
5
6
export declare type DevtoolsEvents = {
7
[Key in keyof ProtocolMapping.Events]: ProtocolMapping.Events[Key][0];
8
} & { disconnected: void };
9
10
type DevtoolsCommandParams = {
11
[Key in keyof ProtocolMapping.Commands]: ProtocolMapping.Commands[Key]['paramsType'][0];
12
};
13
type OptionalParamsCommands = keyof FilterFlags<DevtoolsCommandParams, void | never>;
14
type RequiredParamsCommands = keyof FilterOutFlags<DevtoolsCommandParams, void | never>;
15
16
export default interface IDevtoolsSession
17
extends Omit<ITypedEventEmitter<DevtoolsEvents>, 'waitOn'> {
18
id: string;
19
send<T extends RequiredParamsCommands>(
20
method: T,
21
params: DevtoolsCommandParams[T],
22
sendInitiator?: object,
23
): Promise<ProtocolMapping.Commands[T]['returnType']>;
24
send<T extends OptionalParamsCommands>(
25
method: T,
26
params?: DevtoolsCommandParams[T],
27
sendInitiator?: object,
28
): Promise<ProtocolMapping.Commands[T]['returnType']>;
29
30
onMessage(object: IDevtoolsResponseMessage & IDevtoolsEventMessage): void;
31
}
32
33
export { Protocol };
34
35
export interface IDevtoolsResponseMessage {
36
sessionId: string;
37
id: number;
38
error?: { message: string; data: any };
39
result?: any;
40
timestamp: Date;
41
}
42
43
export interface IDevtoolsEventMessage {
44
sessionId: string;
45
method: string;
46
params: any;
47
timestamp: Date;
48
}
49
50