@pagepocket/cdp-adapter 0.5.0 → 0.5.1

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.
@@ -0,0 +1,48 @@
1
+ import type { InterceptSession, InterceptTarget, NetworkEventHandlers, NetworkInterceptorAdapter } from "@pagepocket/lib";
2
+ import type CDPTypes from "chrome-remote-interface";
3
+ type CdpConnectionOptions = CDPTypes.Options;
4
+ type CdpClient = {
5
+ send?: (method: string, params?: Record<string, unknown>) => Promise<unknown>;
6
+ on?: (event: string, listener: (payload: unknown) => void) => void;
7
+ off?: (event: string, listener: (payload: unknown) => void) => void;
8
+ close?: () => Promise<void>;
9
+ Network?: {
10
+ enable?: (params?: Record<string, unknown>) => Promise<void>;
11
+ disable?: () => Promise<void>;
12
+ getResponseBody?: (params: {
13
+ requestId: string;
14
+ }) => Promise<{
15
+ body: string;
16
+ base64Encoded?: boolean;
17
+ }>;
18
+ requestWillBeSent?: (listener: (payload: unknown) => void) => void;
19
+ responseReceived?: (listener: (payload: unknown) => void) => void;
20
+ loadingFailed?: (listener: (payload: unknown) => void) => void;
21
+ };
22
+ Page?: {
23
+ enable?: () => Promise<void>;
24
+ navigate?: (params: {
25
+ url: string;
26
+ }) => Promise<void>;
27
+ };
28
+ };
29
+ export type CdpAdapterOptions = {
30
+ host?: string;
31
+ port?: number;
32
+ target?: CdpConnectionOptions["target"];
33
+ clientFactory?: (options: CdpConnectionOptions) => Promise<CdpClient>;
34
+ };
35
+ export declare class CdpAdapter implements NetworkInterceptorAdapter {
36
+ readonly name = "cdp";
37
+ readonly capabilities: {
38
+ canGetResponseBody: boolean;
39
+ canStreamResponseBody: boolean;
40
+ canGetRequestBody: boolean;
41
+ providesResourceType: boolean;
42
+ };
43
+ private options;
44
+ constructor(options?: CdpAdapterOptions);
45
+ start(target: InterceptTarget, handlers: NetworkEventHandlers, _options?: Record<string, unknown>): Promise<InterceptSession>;
46
+ }
47
+ export {};
48
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,yBAAyB,EAK1B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,QAAQ,MAAM,yBAAyB,CAAC;AAEpD,KAAK,oBAAoB,GAAG,QAAQ,CAAC,OAAO,CAAC;AAE7C,KAAK,SAAS,GAAG;IACf,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9E,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;IACnE,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;IACpE,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9B,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC;YAC3D,IAAI,EAAE,MAAM,CAAC;YACb,aAAa,CAAC,EAAE,OAAO,CAAC;SACzB,CAAC,CAAC;QACH,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;QACnE,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;QAClE,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,KAAK,IAAI,CAAC;KAChE,CAAC;IACF,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE;YAAE,GAAG,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KACvD,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACxC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;CACvE,CAAC;AAkIF,qBAAa,UAAW,YAAW,yBAAyB;IAC1D,QAAQ,CAAC,IAAI,SAAS;IACtB,QAAQ,CAAC,YAAY;;;;;MAKnB;IAEF,OAAO,CAAC,OAAO,CAAoB;gBAEvB,OAAO,GAAE,iBAAsB;IAIrC,KAAK,CACT,MAAM,EAAE,eAAe,EACvB,QAAQ,EAAE,oBAAoB,EAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,gBAAgB,CAAC;CAqL7B"}
package/dist/index.js ADDED
@@ -0,0 +1,241 @@
1
+ import CDP from "chrome-remote-interface";
2
+ const decodeBase64 = (input) => {
3
+ const bufferCtor = globalThis.Buffer;
4
+ if (bufferCtor) {
5
+ return new Uint8Array(bufferCtor.from(input, "base64"));
6
+ }
7
+ const binary = atob(input);
8
+ const bytes = new Uint8Array(binary.length);
9
+ for (let i = 0; i < binary.length; i += 1) {
10
+ bytes[i] = binary.charCodeAt(i);
11
+ }
12
+ return bytes;
13
+ };
14
+ const encodeUtf8 = (input) => new TextEncoder().encode(input);
15
+ const normalizeHeaders = (headers) => {
16
+ const output = {};
17
+ if (!headers)
18
+ return output;
19
+ for (const key of Object.keys(headers)) {
20
+ const value = headers[key];
21
+ if (value === undefined || value === null)
22
+ continue;
23
+ output[key] = Array.isArray(value) ? value.join(", ") : String(value);
24
+ }
25
+ return output;
26
+ };
27
+ const mapResourceType = (input) => {
28
+ if (!input)
29
+ return undefined;
30
+ const normalized = input.toLowerCase();
31
+ switch (normalized) {
32
+ case "document":
33
+ return "document";
34
+ case "stylesheet":
35
+ return "stylesheet";
36
+ case "script":
37
+ return "script";
38
+ case "image":
39
+ return "image";
40
+ case "font":
41
+ return "font";
42
+ case "media":
43
+ return "media";
44
+ case "xhr":
45
+ return "xhr";
46
+ case "fetch":
47
+ return "fetch";
48
+ case "other":
49
+ return "other";
50
+ default:
51
+ return normalized;
52
+ }
53
+ };
54
+ const callCdp = async (client, method, params) => {
55
+ if (typeof client.send === "function") {
56
+ return (await client.send(method, params));
57
+ }
58
+ const [domain, command] = method.split(".");
59
+ const domainApi = client[domain];
60
+ const fn = domainApi?.[command];
61
+ if (typeof fn === "function") {
62
+ return (await fn(params));
63
+ }
64
+ throw new Error(`CDP session missing method ${method}.`);
65
+ };
66
+ const subscribe = (client, eventName, handler) => {
67
+ if (typeof client.on === "function") {
68
+ client.on(eventName, handler);
69
+ return () => client.off?.(eventName, handler);
70
+ }
71
+ const [domain, event] = eventName.split(".");
72
+ const domainApi = client[domain];
73
+ const fn = domainApi?.[event];
74
+ if (typeof fn === "function") {
75
+ fn(handler);
76
+ return () => undefined;
77
+ }
78
+ throw new Error(`CDP session missing event ${eventName}.`);
79
+ };
80
+ export class CdpAdapter {
81
+ constructor(options = {}) {
82
+ this.name = "cdp";
83
+ this.capabilities = {
84
+ canGetResponseBody: true,
85
+ canStreamResponseBody: false,
86
+ canGetRequestBody: false,
87
+ providesResourceType: true
88
+ };
89
+ this.options = options;
90
+ }
91
+ async start(target, handlers, _options) {
92
+ if (target.kind !== "cdp-session" && target.kind !== "cdp-tab") {
93
+ throw new Error("CdpAdapter only supports cdp-session or cdp-tab targets.");
94
+ }
95
+ const clientFactory = this.options.clientFactory ??
96
+ ((options) => CDP({
97
+ host: options.host,
98
+ port: options.port,
99
+ target: options.target
100
+ }));
101
+ const resolveTabTarget = (tabId) => {
102
+ return (targets) => {
103
+ const match = targets.find((entry) => entry.id === String(tabId));
104
+ if (match)
105
+ return match;
106
+ if (tabId >= 0 && tabId < targets.length)
107
+ return tabId;
108
+ return targets[0] ?? 0;
109
+ };
110
+ };
111
+ const client = target.kind === "cdp-session"
112
+ ? target.session
113
+ : await clientFactory({
114
+ host: this.options.host,
115
+ port: this.options.port,
116
+ target: this.options.target ?? resolveTabTarget(target.tabId)
117
+ });
118
+ const ownsClient = target.kind !== "cdp-session";
119
+ await callCdp(client, "Network.enable");
120
+ const activeRequestId = new Map();
121
+ const requestSequence = new Map();
122
+ const requestUrls = new Map();
123
+ const getLogicalRequestId = (cdpRequestId) => activeRequestId.get(cdpRequestId) ?? `${cdpRequestId}:0`;
124
+ const createResponseBody = (cdpRequestId) => ({
125
+ kind: "late",
126
+ read: async () => {
127
+ const result = await callCdp(client, "Network.getResponseBody", { requestId: cdpRequestId });
128
+ if (result.base64Encoded) {
129
+ return decodeBase64(result.body);
130
+ }
131
+ return encodeUtf8(result.body);
132
+ }
133
+ });
134
+ const handleRequestWillBeSent = (payload) => {
135
+ const cdpRequestId = payload.requestId;
136
+ if (payload.redirectResponse) {
137
+ const previousRequestId = getLogicalRequestId(cdpRequestId);
138
+ const redirectResponse = payload.redirectResponse;
139
+ const redirectEvent = {
140
+ type: "response",
141
+ requestId: previousRequestId,
142
+ url: redirectResponse.url,
143
+ status: redirectResponse.status,
144
+ statusText: redirectResponse.statusText,
145
+ headers: normalizeHeaders(redirectResponse.headers),
146
+ mimeType: redirectResponse.mimeType,
147
+ fromDiskCache: redirectResponse.fromDiskCache,
148
+ fromServiceWorker: redirectResponse.fromServiceWorker,
149
+ timestamp: Date.now()
150
+ };
151
+ handlers.onEvent(redirectEvent);
152
+ }
153
+ const sequence = (requestSequence.get(cdpRequestId) ?? -1) + 1;
154
+ requestSequence.set(cdpRequestId, sequence);
155
+ const logicalRequestId = `${cdpRequestId}:${sequence}`;
156
+ activeRequestId.set(cdpRequestId, logicalRequestId);
157
+ const url = payload.request.url;
158
+ requestUrls.set(logicalRequestId, url);
159
+ const requestEvent = {
160
+ type: "request",
161
+ requestId: logicalRequestId,
162
+ url,
163
+ method: payload.request.method || "GET",
164
+ headers: normalizeHeaders(payload.request.headers),
165
+ frameId: payload.frameId,
166
+ resourceType: mapResourceType(payload.type),
167
+ initiator: payload.initiator,
168
+ timestamp: Date.now()
169
+ };
170
+ handlers.onEvent(requestEvent);
171
+ };
172
+ const handleResponseReceived = (payload) => {
173
+ const cdpRequestId = payload.requestId;
174
+ const logicalRequestId = getLogicalRequestId(cdpRequestId);
175
+ const response = payload.response;
176
+ if (!requestUrls.has(logicalRequestId)) {
177
+ requestUrls.set(logicalRequestId, response.url);
178
+ }
179
+ const responseEvent = {
180
+ type: "response",
181
+ requestId: logicalRequestId,
182
+ url: response.url,
183
+ status: response.status,
184
+ statusText: response.statusText,
185
+ headers: normalizeHeaders(response.headers),
186
+ mimeType: response.mimeType,
187
+ fromDiskCache: response.fromDiskCache,
188
+ fromServiceWorker: response.fromServiceWorker,
189
+ timestamp: Date.now(),
190
+ body: createResponseBody(cdpRequestId)
191
+ };
192
+ handlers.onEvent(responseEvent);
193
+ };
194
+ const handleLoadingFailed = (payload) => {
195
+ const cdpRequestId = payload.requestId;
196
+ const logicalRequestId = getLogicalRequestId(cdpRequestId);
197
+ const url = requestUrls.get(logicalRequestId) ?? "";
198
+ const failedEvent = {
199
+ type: "failed",
200
+ requestId: logicalRequestId,
201
+ url,
202
+ errorText: payload.errorText,
203
+ timestamp: Date.now()
204
+ };
205
+ handlers.onEvent(failedEvent);
206
+ };
207
+ const cleanupHandlers = [];
208
+ try {
209
+ cleanupHandlers.push(subscribe(client, "Network.requestWillBeSent", (payload) => handleRequestWillBeSent(payload)));
210
+ cleanupHandlers.push(subscribe(client, "Network.responseReceived", (payload) => handleResponseReceived(payload)));
211
+ cleanupHandlers.push(subscribe(client, "Network.loadingFailed", (payload) => handleLoadingFailed(payload)));
212
+ }
213
+ catch (error) {
214
+ if (error instanceof Error) {
215
+ handlers.onError?.(error);
216
+ }
217
+ throw error;
218
+ }
219
+ const ensurePageEnabled = async () => {
220
+ try {
221
+ await callCdp(client, "Page.enable");
222
+ }
223
+ catch {
224
+ // Ignore if Page domain is not available.
225
+ }
226
+ };
227
+ return {
228
+ navigate: async (url) => {
229
+ await ensurePageEnabled();
230
+ await callCdp(client, "Page.navigate", { url });
231
+ },
232
+ stop: async () => {
233
+ cleanupHandlers.forEach((cleanup) => cleanup());
234
+ if (ownsClient) {
235
+ await client.close?.();
236
+ }
237
+ }
238
+ };
239
+ }
240
+ }
241
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pagepocket/cdp-adapter",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "Chrome DevTools Protocol adapter for PagePocket network interception.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,9 +13,10 @@
13
13
  ],
14
14
  "dependencies": {
15
15
  "chrome-remote-interface": "^0.33.2",
16
- "@pagepocket/lib": "0.5.0"
16
+ "@pagepocket/lib": "0.5.1"
17
17
  },
18
18
  "devDependencies": {
19
+ "@types/chrome-remote-interface": "^0.33.0",
19
20
  "@types/node": "^20.17.12",
20
21
  "tsx": "^4.21.0",
21
22
  "typescript": "^5.7.2"