@pagepocket/cdp-adapter 0.5.1 → 0.6.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,12 @@
1
+ import type { ResourceType } from "@pagepocket/interceptor";
2
+ import type { CdpClient } from "./types";
3
+ export declare const decodeBase64: (input: string) => Uint8Array<ArrayBuffer>;
4
+ export declare const encodeUtf8: (input: string) => Uint8Array<ArrayBuffer>;
5
+ export declare const normalizeHeaders: (headers?: Record<string, unknown>) => Record<string, string>;
6
+ export declare const mapResourceType: (input?: string) => ResourceType | undefined;
7
+ export declare const inferResourceTypeFromMime: (mimeType?: string) => ResourceType | undefined;
8
+ export declare const callCdp: <T>(client: CdpClient, method: string, params?: Record<string, unknown>) => Promise<T>;
9
+ export declare const subscribe: (client: CdpClient, eventName: string, handler: (payload: unknown) => void) => () => void | undefined;
10
+ export declare const isNoBodyError: (error: unknown) => boolean;
11
+ export declare const logInfo: (label: string, data: Record<string, unknown>) => void;
12
+ //# sourceMappingURL=cdp-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdp-utils.d.ts","sourceRoot":"","sources":["../src/cdp-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,4BAWzC,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,4BAAoC,CAAC;AAE7E,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,2BASjE,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,KAAG,YAAY,GAAG,SAyB/D,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,WAAW,MAAM,KAAG,YAAY,GAAG,SA2B5E,CAAC;AAEF,eAAO,MAAM,OAAO,GAAU,CAAC,EAC7B,QAAQ,SAAS,EACjB,QAAQ,MAAM,EACd,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,OAAO,CAAC,CAAC,CAaX,CAAC;AAEF,eAAO,MAAM,SAAS,GACpB,QAAQ,SAAS,EACjB,WAAW,MAAM,EACjB,SAAS,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,2BAgBpC,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,YAG3C,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SAEnE,CAAC"}
@@ -0,0 +1,113 @@
1
+ export const decodeBase64 = (input) => {
2
+ const bufferCtor = globalThis.Buffer;
3
+ if (bufferCtor) {
4
+ return new Uint8Array(bufferCtor.from(input, "base64"));
5
+ }
6
+ const binary = atob(input);
7
+ const bytes = new Uint8Array(binary.length);
8
+ for (let i = 0; i < binary.length; i += 1) {
9
+ bytes[i] = binary.charCodeAt(i);
10
+ }
11
+ return bytes;
12
+ };
13
+ export const encodeUtf8 = (input) => new TextEncoder().encode(input);
14
+ export const normalizeHeaders = (headers) => {
15
+ const output = {};
16
+ if (!headers)
17
+ return output;
18
+ for (const key of Object.keys(headers)) {
19
+ const value = headers[key];
20
+ if (value === undefined || value === null)
21
+ continue;
22
+ output[key] = Array.isArray(value) ? value.join(", ") : String(value);
23
+ }
24
+ return output;
25
+ };
26
+ export const mapResourceType = (input) => {
27
+ if (!input)
28
+ return undefined;
29
+ const normalized = input.toLowerCase();
30
+ switch (normalized) {
31
+ case "document":
32
+ return "document";
33
+ case "stylesheet":
34
+ return "stylesheet";
35
+ case "script":
36
+ return "script";
37
+ case "image":
38
+ return "image";
39
+ case "font":
40
+ return "font";
41
+ case "media":
42
+ return "media";
43
+ case "xhr":
44
+ return "xhr";
45
+ case "fetch":
46
+ return "fetch";
47
+ case "other":
48
+ return "other";
49
+ default:
50
+ return normalized;
51
+ }
52
+ };
53
+ export const inferResourceTypeFromMime = (mimeType) => {
54
+ if (!mimeType)
55
+ return undefined;
56
+ const normalized = mimeType.toLowerCase();
57
+ if (normalized.includes("text/html") || normalized.includes("application/xhtml+xml")) {
58
+ return "document";
59
+ }
60
+ if (normalized.includes("text/css")) {
61
+ return "stylesheet";
62
+ }
63
+ if (normalized.includes("javascript") || normalized.includes("ecmascript")) {
64
+ return "script";
65
+ }
66
+ if (normalized.startsWith("image/")) {
67
+ return "image";
68
+ }
69
+ if (normalized.startsWith("font/") ||
70
+ normalized.includes("woff") ||
71
+ normalized.includes("ttf") ||
72
+ normalized.includes("otf")) {
73
+ return "font";
74
+ }
75
+ if (normalized.startsWith("audio/") || normalized.startsWith("video/")) {
76
+ return "media";
77
+ }
78
+ return undefined;
79
+ };
80
+ export const callCdp = async (client, method, params) => {
81
+ if (typeof client.send === "function") {
82
+ return (await client.send(method, params));
83
+ }
84
+ const [domain, command] = method.split(".");
85
+ const domainApi = client[domain];
86
+ const fn = domainApi?.[command];
87
+ if (typeof fn === "function") {
88
+ return (await fn(params));
89
+ }
90
+ throw new Error(`CDP session missing method ${method}.`);
91
+ };
92
+ export const subscribe = (client, eventName, handler) => {
93
+ if (typeof client.on === "function") {
94
+ client.on(eventName, handler);
95
+ return () => client.off?.(eventName, handler);
96
+ }
97
+ const [domain, event] = eventName.split(".");
98
+ const domainApi = client[domain];
99
+ const fn = domainApi?.[event];
100
+ if (typeof fn === "function") {
101
+ fn(handler);
102
+ return () => undefined;
103
+ }
104
+ throw new Error(`CDP session missing event ${eventName}.`);
105
+ };
106
+ export const isNoBodyError = (error) => {
107
+ const message = error instanceof Error ? error.message : String(error);
108
+ return message.includes("No data found for resource with given identifier");
109
+ };
110
+ export const logInfo = (label, data) => {
111
+ console.info(`[pagepocket][cdp-adapter] ${label} ${JSON.stringify(data)}`);
112
+ };
113
+ //# sourceMappingURL=cdp-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdp-utils.js","sourceRoot":"","sources":["../src/cdp-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CdpClient, ChromeDebuggerTarget } from "./types";
2
+ export declare const createChromeDebuggerClient: (target: ChromeDebuggerTarget, protocolVersion: string) => CdpClient;
3
+ //# sourceMappingURL=chrome-debugger-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrome-debugger-client.d.ts","sourceRoot":"","sources":["../src/chrome-debugger-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAuB,oBAAoB,EAAgB,MAAM,SAAS,CAAC;AAIlG,eAAO,MAAM,0BAA0B,GACrC,QAAQ,oBAAoB,EAC5B,iBAAiB,MAAM,KACtB,SAqFF,CAAC"}
@@ -0,0 +1,90 @@
1
+ const getChromeGlobal = () => globalThis.chrome;
2
+ export const createChromeDebuggerClient = (target, protocolVersion) => {
3
+ const chromeGlobal = getChromeGlobal();
4
+ const chromeDebugger = chromeGlobal?.debugger;
5
+ if (!chromeDebugger) {
6
+ throw new Error("chrome.debugger API is not available in this environment.");
7
+ }
8
+ const chromeRuntime = chromeGlobal?.runtime;
9
+ let attached = false;
10
+ let closed = false;
11
+ const listeners = new Map();
12
+ const assertNoLastError = (action) => {
13
+ const lastError = chromeRuntime?.lastError;
14
+ if (lastError?.message) {
15
+ throw new Error(`${action} failed: ${lastError.message}`);
16
+ }
17
+ };
18
+ const attach = () => new Promise((resolve, reject) => {
19
+ chromeDebugger.attach(target, protocolVersion, () => {
20
+ try {
21
+ assertNoLastError("chrome.debugger.attach");
22
+ attached = true;
23
+ resolve();
24
+ }
25
+ catch (error) {
26
+ reject(error);
27
+ }
28
+ });
29
+ });
30
+ const detach = () => new Promise((resolve, reject) => {
31
+ chromeDebugger.detach(target, () => {
32
+ try {
33
+ assertNoLastError("chrome.debugger.detach");
34
+ attached = false;
35
+ resolve();
36
+ }
37
+ catch (error) {
38
+ reject(error);
39
+ }
40
+ });
41
+ });
42
+ const ensureAttached = async () => {
43
+ if (attached)
44
+ return;
45
+ await attach();
46
+ };
47
+ return {
48
+ send: async (method, params) => {
49
+ await ensureAttached();
50
+ return new Promise((resolve, reject) => {
51
+ chromeDebugger.sendCommand(target, method, params ?? {}, (result) => {
52
+ try {
53
+ assertNoLastError(`chrome.debugger.sendCommand(${method})`);
54
+ resolve(result);
55
+ }
56
+ catch (error) {
57
+ reject(error);
58
+ }
59
+ });
60
+ });
61
+ },
62
+ on: (event, listener) => {
63
+ const handler = (source, method, params) => {
64
+ if (source.tabId !== target.tabId)
65
+ return;
66
+ if (method !== event)
67
+ return;
68
+ listener(params);
69
+ };
70
+ listeners.set(listener, handler);
71
+ chromeDebugger.onEvent.addListener(handler);
72
+ },
73
+ off: (_event, listener) => {
74
+ const handler = listeners.get(listener);
75
+ if (!handler)
76
+ return;
77
+ listeners.delete(listener);
78
+ chromeDebugger.onEvent.removeListener(handler);
79
+ },
80
+ close: async () => {
81
+ if (closed)
82
+ return;
83
+ closed = true;
84
+ if (!attached)
85
+ return;
86
+ await detach();
87
+ }
88
+ };
89
+ };
90
+ //# sourceMappingURL=chrome-debugger-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrome-debugger-client.js","sourceRoot":"","sources":["../src/chrome-debugger-client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,36 +1,12 @@
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
- };
1
+ import type { InterceptSession, InterceptTarget, NetworkEventHandlers, NetworkInterceptorAdapter, TriggerAction } from "@pagepocket/interceptor";
2
+ import type { CdpClient } from "./types";
29
3
  export type CdpAdapterOptions = {
30
- host?: string;
31
- port?: number;
32
- target?: CdpConnectionOptions["target"];
33
- clientFactory?: (options: CdpConnectionOptions) => Promise<CdpClient>;
4
+ protocolVersion?: string;
5
+ clientFactory?: (options?: {
6
+ tabId: number;
7
+ protocolVersion: string;
8
+ }) => Promise<CdpClient> | CdpClient;
9
+ triggerActions?: TriggerAction[];
34
10
  };
35
11
  export declare class CdpAdapter implements NetworkInterceptorAdapter {
36
12
  readonly name = "cdp";
@@ -44,5 +20,4 @@ export declare class CdpAdapter implements NetworkInterceptorAdapter {
44
20
  constructor(options?: CdpAdapterOptions);
45
21
  start(target: InterceptTarget, handlers: NetworkEventHandlers, _options?: Record<string, unknown>): Promise<InterceptSession>;
46
22
  }
47
- export {};
48
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +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"}
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,EACzB,aAAa,EACd,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE;QACzB,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,EAAE,MAAM,CAAC;KACzB,KAAK,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;IACrC,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;CAClC,CAAC;AAEF,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;CAmB7B"}
package/dist/index.js CHANGED
@@ -1,82 +1,5 @@
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
- };
1
+ import { createChromeDebuggerClient } from "./chrome-debugger-client";
2
+ import { createCdpSession } from "./session";
80
3
  export class CdpAdapter {
81
4
  constructor(options = {}) {
82
5
  this.name = "cdp";
@@ -89,153 +12,20 @@ export class CdpAdapter {
89
12
  this.options = options;
90
13
  }
91
14
  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.");
15
+ if (target.kind !== "cdp-tab") {
16
+ throw new Error("CdpAdapter only supports cdp-tab targets.");
94
17
  }
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
- }
18
+ const protocolVersion = this.options.protocolVersion ?? "1.3";
19
+ const clientFactory = this.options.clientFactory;
20
+ const client = (await clientFactory?.({ tabId: target.tabId, protocolVersion })) ??
21
+ createChromeDebuggerClient({ tabId: target.tabId }, protocolVersion);
22
+ const ownsClient = true;
23
+ return createCdpSession({
24
+ client,
25
+ handlers,
26
+ ownsClient,
27
+ triggerActions: this.options.triggerActions
133
28
  });
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
29
  }
240
30
  }
241
31
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAY7C,MAAM,OAAO,UAAU;IAWrB,YAAY,UAA6B,EAAE;QAVlC,SAAI,GAAG,KAAK,CAAC;QACb,iBAAY,GAAG;YACtB,kBAAkB,EAAE,IAAI;YACxB,qBAAqB,EAAE,KAAK;YAC5B,iBAAiB,EAAE,KAAK;YACxB,oBAAoB,EAAE,IAAI;SAC3B,CAAC;QAKA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,KAAK,CACT,MAAuB,EACvB,QAA8B,EAC9B,QAAkC;QAElC,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,KAAK,CAAC;QAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACjD,MAAM,MAAM,GACV,CAAC,MAAM,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;YACjE,0BAA0B,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,eAAe,CAAC,CAAC;QACvE,MAAM,UAAU,GAAG,IAAI,CAAC;QAExB,OAAO,gBAAgB,CAAC;YACtB,MAAM;YACN,QAAQ;YACR,UAAU;YACV,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;SAC5C,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,7 @@
1
+ import { type NetworkEventHandlers, type TriggerAction } from "@pagepocket/interceptor";
2
+ import type { CdpClient } from "./types";
3
+ export declare const createPageActions: (client: CdpClient, handlers: NetworkEventHandlers) => {
4
+ ensurePageEnabled: () => Promise<void>;
5
+ runTriggerActions: (actions?: TriggerAction[]) => Promise<void>;
6
+ };
7
+ //# sourceMappingURL=page-actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-actions.d.ts","sourceRoot":"","sources":["../src/page-actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,aAAa,EACnB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,eAAO,MAAM,iBAAiB,GAAI,QAAQ,SAAS,EAAE,UAAU,oBAAoB;;kCASvC,aAAa,EAAE;CA6C1D,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { TriggerActionValues } from "@pagepocket/interceptor";
2
+ import { callCdp } from "./cdp-utils";
3
+ export const createPageActions = (client, handlers) => {
4
+ const ensurePageEnabled = async () => {
5
+ try {
6
+ await callCdp(client, "Page.enable");
7
+ }
8
+ catch {
9
+ // Page domain may be unavailable; ignore.
10
+ }
11
+ };
12
+ const runTriggerActions = async (actions = []) => {
13
+ if (actions.length === 0) {
14
+ return;
15
+ }
16
+ await ensurePageEnabled();
17
+ for (const action of actions) {
18
+ if (action === TriggerActionValues.HOVER) {
19
+ try {
20
+ await callCdp(client, "Runtime.evaluate", {
21
+ expression: `(() => {
22
+ const elements = Array.from(document.querySelectorAll('*'));
23
+ for (const el of elements) {
24
+ const rect = el.getBoundingClientRect();
25
+ const x = rect.left + rect.width / 2;
26
+ const y = rect.top + rect.height / 2;
27
+ const ev = new MouseEvent('mouseover', { bubbles: true, cancelable: true, clientX: x, clientY: y });
28
+ el.dispatchEvent(ev);
29
+ }
30
+ })();`
31
+ });
32
+ }
33
+ catch (error) {
34
+ handlers.onError?.(error);
35
+ }
36
+ }
37
+ if (action === TriggerActionValues.SCROLL_TO_END) {
38
+ try {
39
+ await callCdp(client, "Runtime.evaluate", {
40
+ expression: `(() => {
41
+ const scrollHeight = document.documentElement?.scrollHeight ?? document.body?.scrollHeight;
42
+ if (typeof scrollHeight === 'number') {
43
+ window.scrollTo({ top: scrollHeight, behavior: 'instant' });
44
+ }
45
+ })();`
46
+ });
47
+ }
48
+ catch (error) {
49
+ handlers.onError?.(error);
50
+ }
51
+ }
52
+ }
53
+ };
54
+ return { ensurePageEnabled, runTriggerActions };
55
+ };
56
+ //# sourceMappingURL=page-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-actions.js","sourceRoot":"","sources":["../src/page-actions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EAGpB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAiB,EAAE,QAA8B,EAAE,EAAE;IACrF,MAAM,iBAAiB,GAAG,KAAK,IAAI,EAAE;QACnC,IAAI,CAAC;YACH,MAAM,OAAO,CAAO,MAAM,EAAE,aAAa,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,0CAA0C;QAC5C,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,KAAK,EAAE,UAA2B,EAAE,EAAE,EAAE;QAChE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,iBAAiB,EAAE,CAAC;QAE1B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,MAAM,KAAK,mBAAmB,CAAC,KAAK,EAAE,CAAC;gBACzC,IAAI,CAAC;oBACH,MAAM,OAAO,CAAC,MAAM,EAAE,kBAAkB,EAAE;wBACxC,UAAU,EAAE;;;;;;;;;kBASN;qBACP,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAc,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;YAED,IAAI,MAAM,KAAK,mBAAmB,CAAC,aAAa,EAAE,CAAC;gBACjD,IAAI,CAAC;oBACH,MAAM,OAAO,CAAC,MAAM,EAAE,kBAAkB,EAAE;wBACxC,UAAU,EAAE;;;;;kBAKN;qBACP,CAAC,CAAC;gBACL,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAc,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;AAClD,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { InterceptSession, NetworkEventHandlers, TriggerAction } from "@pagepocket/interceptor";
2
+ import type { CdpClient } from "./types";
3
+ type CreateSessionOptions = {
4
+ client: CdpClient;
5
+ handlers: NetworkEventHandlers;
6
+ ownsClient: boolean;
7
+ triggerActions?: TriggerAction[];
8
+ };
9
+ export declare const createCdpSession: ({ client, handlers, ownsClient, triggerActions }: CreateSessionOptions) => Promise<InterceptSession>;
10
+ export {};
11
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EAIpB,aAAa,EACd,MAAM,yBAAyB,CAAC;AAcjC,OAAO,KAAK,EACV,SAAS,EAOV,MAAM,SAAS,CAAC;AAEjB,KAAK,oBAAoB,GAAG;IAC1B,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;CAClC,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAU,kDAKpC,oBAAoB,KAAG,OAAO,CAAC,gBAAgB,CA0TjD,CAAC"}
@@ -0,0 +1,277 @@
1
+ import { callCdp, decodeBase64, encodeUtf8, inferResourceTypeFromMime, isNoBodyError, logInfo, mapResourceType, normalizeHeaders, subscribe } from "./cdp-utils";
2
+ import { createPageActions } from "./page-actions";
3
+ export const createCdpSession = async ({ client, handlers, ownsClient, triggerActions }) => {
4
+ await callCdp(client, "Network.enable");
5
+ const { ensurePageEnabled, runTriggerActions } = createPageActions(client, handlers);
6
+ const activeRequestId = new Map();
7
+ const requestSequence = new Map();
8
+ const requestUrls = new Map();
9
+ const requestInfo = new Map();
10
+ const requestEvents = new Map();
11
+ const responses = new Map();
12
+ const requestTimeOffsets = new Map();
13
+ let globalTimeOffset = null;
14
+ const getLogicalRequestId = (cdpRequestId) => activeRequestId.get(cdpRequestId) ?? `${cdpRequestId}:0`;
15
+ const resolveTimestampMs = (payload, requestId) => {
16
+ if (typeof payload.wallTime === "number") {
17
+ if (typeof payload.timestamp === "number") {
18
+ const offset = payload.wallTime - payload.timestamp;
19
+ if (requestId) {
20
+ requestTimeOffsets.set(requestId, offset);
21
+ }
22
+ globalTimeOffset = offset;
23
+ }
24
+ return payload.wallTime * 1000;
25
+ }
26
+ if (typeof payload.timestamp === "number") {
27
+ const offset = (requestId ? requestTimeOffsets.get(requestId) : undefined) ?? globalTimeOffset;
28
+ if (typeof offset === "number") {
29
+ return (payload.timestamp + offset) * 1000;
30
+ }
31
+ }
32
+ return Date.now();
33
+ };
34
+ const handleRequestWillBeSent = (payload) => {
35
+ const cdpRequestId = payload.requestId;
36
+ const eventTimestamp = resolveTimestampMs(payload, cdpRequestId);
37
+ if (payload.redirectResponse) {
38
+ const previousRequestId = getLogicalRequestId(cdpRequestId);
39
+ const redirectResponse = payload.redirectResponse;
40
+ const redirectEvent = {
41
+ type: "response",
42
+ requestId: previousRequestId,
43
+ url: redirectResponse.url,
44
+ status: redirectResponse.status,
45
+ statusText: redirectResponse.statusText,
46
+ headers: normalizeHeaders(redirectResponse.headers),
47
+ mimeType: redirectResponse.mimeType,
48
+ fromDiskCache: redirectResponse.fromDiskCache,
49
+ fromServiceWorker: redirectResponse.fromServiceWorker,
50
+ timestamp: eventTimestamp
51
+ };
52
+ handlers.onEvent(redirectEvent);
53
+ }
54
+ const sequence = (requestSequence.get(cdpRequestId) ?? -1) + 1;
55
+ requestSequence.set(cdpRequestId, sequence);
56
+ const logicalRequestId = `${cdpRequestId}:${sequence}`;
57
+ activeRequestId.set(cdpRequestId, logicalRequestId);
58
+ const url = payload.request.url;
59
+ requestUrls.set(logicalRequestId, url);
60
+ requestInfo.set(cdpRequestId, {
61
+ url,
62
+ frameId: payload.frameId,
63
+ resourceType: mapResourceType(payload.type),
64
+ initiator: payload.initiator
65
+ });
66
+ const requestEvent = {
67
+ type: "request",
68
+ requestId: logicalRequestId,
69
+ url,
70
+ method: payload.request.method || "GET",
71
+ headers: normalizeHeaders(payload.request.headers),
72
+ frameId: payload.frameId,
73
+ resourceType: mapResourceType(payload.type),
74
+ initiator: payload.initiator,
75
+ timestamp: eventTimestamp
76
+ };
77
+ requestEvents.set(cdpRequestId, requestEvent);
78
+ handlers.onEvent(requestEvent);
79
+ };
80
+ const handleResponseReceived = (payload) => {
81
+ const cdpRequestId = payload.requestId;
82
+ const logicalRequestId = getLogicalRequestId(cdpRequestId);
83
+ const eventTimestamp = resolveTimestampMs(payload, cdpRequestId);
84
+ const response = payload.response;
85
+ if (!requestUrls.has(logicalRequestId)) {
86
+ requestUrls.set(logicalRequestId, response.url);
87
+ }
88
+ const storedRequest = requestEvents.get(cdpRequestId);
89
+ const existingInfo = requestInfo.get(cdpRequestId);
90
+ const inferred = inferResourceTypeFromMime(response.mimeType);
91
+ if ((!existingInfo || !existingInfo.resourceType) && inferred) {
92
+ requestInfo.set(cdpRequestId, {
93
+ url: response.url,
94
+ frameId: existingInfo?.frameId ?? payload.frameId,
95
+ resourceType: inferred,
96
+ initiator: existingInfo?.initiator
97
+ });
98
+ }
99
+ if (!storedRequest && inferred) {
100
+ const synthesizedRequest = {
101
+ type: "request",
102
+ requestId: logicalRequestId,
103
+ url: response.url,
104
+ method: "GET",
105
+ headers: {},
106
+ frameId: payload.frameId,
107
+ resourceType: inferred,
108
+ initiator: undefined,
109
+ timestamp: eventTimestamp
110
+ };
111
+ requestEvents.set(cdpRequestId, synthesizedRequest);
112
+ handlers.onEvent(synthesizedRequest);
113
+ }
114
+ else if (storedRequest && inferred && !storedRequest.resourceType) {
115
+ const updatedRequest = {
116
+ ...storedRequest,
117
+ resourceType: inferred,
118
+ timestamp: eventTimestamp
119
+ };
120
+ requestEvents.set(cdpRequestId, updatedRequest);
121
+ handlers.onEvent(updatedRequest);
122
+ }
123
+ logInfo("response received", {
124
+ requestId: cdpRequestId,
125
+ url: response.url,
126
+ status: response.status,
127
+ mimeType: response.mimeType,
128
+ fromDiskCache: response.fromDiskCache,
129
+ fromServiceWorker: response.fromServiceWorker
130
+ });
131
+ responses.set(cdpRequestId, {
132
+ requestId: logicalRequestId,
133
+ response
134
+ });
135
+ };
136
+ const tryGetResponseBody = async (cdpRequestId) => {
137
+ try {
138
+ const result = await callCdp(client, "Network.getResponseBody", { requestId: cdpRequestId });
139
+ if (result.base64Encoded) {
140
+ return decodeBase64(result.body);
141
+ }
142
+ return encodeUtf8(result.body);
143
+ }
144
+ catch (error) {
145
+ if (isNoBodyError(error)) {
146
+ return null;
147
+ }
148
+ throw error;
149
+ }
150
+ };
151
+ const tryGetPageResourceContent = async (info) => {
152
+ if (!info.frameId || !info.url) {
153
+ return null;
154
+ }
155
+ try {
156
+ const result = await callCdp(client, "Page.getResourceContent", {
157
+ frameId: info.frameId,
158
+ url: info.url
159
+ });
160
+ if (result.base64Encoded) {
161
+ return decodeBase64(result.content);
162
+ }
163
+ return encodeUtf8(result.content);
164
+ }
165
+ catch {
166
+ return null;
167
+ }
168
+ };
169
+ const handleLoadingFinished = async (payload) => {
170
+ const cdpRequestId = payload.requestId;
171
+ const eventTimestamp = resolveTimestampMs(payload, cdpRequestId);
172
+ const storedResponse = responses.get(cdpRequestId);
173
+ if (!storedResponse) {
174
+ logInfo("loadingFinished without response", {
175
+ requestId: cdpRequestId
176
+ });
177
+ return;
178
+ }
179
+ const inferred = inferResourceTypeFromMime(storedResponse.response.mimeType);
180
+ const info = requestInfo.get(cdpRequestId);
181
+ if ((!info || !info.resourceType) && inferred) {
182
+ requestInfo.set(cdpRequestId, {
183
+ url: storedResponse.response.url,
184
+ frameId: info?.frameId,
185
+ resourceType: inferred,
186
+ initiator: info?.initiator
187
+ });
188
+ const storedRequest = requestEvents.get(cdpRequestId);
189
+ if (storedRequest && !storedRequest.resourceType) {
190
+ const updatedRequest = {
191
+ ...storedRequest,
192
+ resourceType: inferred
193
+ };
194
+ requestEvents.set(cdpRequestId, updatedRequest);
195
+ handlers.onEvent(updatedRequest);
196
+ }
197
+ }
198
+ let bodyBytes = null;
199
+ try {
200
+ bodyBytes = await tryGetResponseBody(cdpRequestId);
201
+ }
202
+ catch (error) {
203
+ handlers.onError?.(error instanceof Error ? error : new Error(String(error)));
204
+ }
205
+ if (bodyBytes && bodyBytes.byteLength === 0) {
206
+ bodyBytes = null;
207
+ }
208
+ if (!bodyBytes) {
209
+ const fallbackInfo = requestInfo.get(cdpRequestId);
210
+ if (fallbackInfo?.frameId) {
211
+ bodyBytes = await tryGetPageResourceContent(fallbackInfo);
212
+ }
213
+ }
214
+ logInfo("response body status", {
215
+ requestId: cdpRequestId,
216
+ url: storedResponse.response.url,
217
+ resourceType: requestInfo.get(cdpRequestId)?.resourceType,
218
+ bodyBytes: bodyBytes ? bodyBytes.byteLength : 0
219
+ });
220
+ const responseEvent = {
221
+ type: "response",
222
+ requestId: storedResponse.requestId,
223
+ url: storedResponse.response.url,
224
+ status: storedResponse.response.status,
225
+ statusText: storedResponse.response.statusText,
226
+ headers: normalizeHeaders(storedResponse.response.headers),
227
+ mimeType: storedResponse.response.mimeType,
228
+ fromDiskCache: storedResponse.response.fromDiskCache,
229
+ fromServiceWorker: storedResponse.response.fromServiceWorker,
230
+ timestamp: eventTimestamp,
231
+ body: bodyBytes ? { kind: "buffer", data: bodyBytes } : undefined
232
+ };
233
+ handlers.onEvent(responseEvent);
234
+ };
235
+ const handleLoadingFailed = (payload) => {
236
+ const cdpRequestId = payload.requestId;
237
+ const logicalRequestId = getLogicalRequestId(cdpRequestId);
238
+ const url = requestUrls.get(logicalRequestId) ?? "";
239
+ const failedEvent = {
240
+ type: "failed",
241
+ requestId: logicalRequestId,
242
+ url,
243
+ errorText: payload.errorText,
244
+ timestamp: resolveTimestampMs(payload, cdpRequestId)
245
+ };
246
+ handlers.onEvent(failedEvent);
247
+ };
248
+ const cleanupHandlers = [];
249
+ try {
250
+ cleanupHandlers.push(subscribe(client, "Network.requestWillBeSent", (payload) => handleRequestWillBeSent(payload)));
251
+ cleanupHandlers.push(subscribe(client, "Network.responseReceived", (payload) => handleResponseReceived(payload)));
252
+ cleanupHandlers.push(subscribe(client, "Network.loadingFailed", (payload) => handleLoadingFailed(payload)));
253
+ cleanupHandlers.push(subscribe(client, "Network.loadingFinished", (payload) => {
254
+ void handleLoadingFinished(payload);
255
+ }));
256
+ }
257
+ catch (error) {
258
+ if (error instanceof Error) {
259
+ handlers.onError?.(error);
260
+ }
261
+ throw error;
262
+ }
263
+ return {
264
+ navigate: async (url) => {
265
+ await ensurePageEnabled();
266
+ await callCdp(client, "Page.navigate", { url });
267
+ await runTriggerActions(triggerActions);
268
+ },
269
+ stop: async () => {
270
+ cleanupHandlers.forEach((cleanup) => cleanup());
271
+ if (ownsClient) {
272
+ await client.close?.();
273
+ }
274
+ }
275
+ };
276
+ };
277
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ import type { ResourceType } from "@pagepocket/interceptor";
2
+ export type ChromeDebuggerTarget = {
3
+ tabId: number;
4
+ };
5
+ export type ChromeDebuggerEvent = (source: ChromeDebuggerTarget, method: string, params?: Record<string, unknown>) => void;
6
+ export type ChromeDebuggerApi = {
7
+ attach: (target: ChromeDebuggerTarget, version: string, callback: () => void) => void;
8
+ detach: (target: ChromeDebuggerTarget, callback: () => void) => void;
9
+ sendCommand: (target: ChromeDebuggerTarget, method: string, params: Record<string, unknown>, callback: (result?: unknown) => void) => void;
10
+ onEvent: {
11
+ addListener: (listener: ChromeDebuggerEvent) => void;
12
+ removeListener: (listener: ChromeDebuggerEvent) => void;
13
+ };
14
+ };
15
+ export type ChromeRuntimeApi = {
16
+ lastError?: {
17
+ message?: string;
18
+ };
19
+ };
20
+ export type ChromeGlobal = {
21
+ debugger?: ChromeDebuggerApi;
22
+ runtime?: ChromeRuntimeApi;
23
+ };
24
+ export type CdpClient = {
25
+ send?: (method: string, params?: Record<string, unknown>) => Promise<unknown>;
26
+ on?: (event: string, listener: (payload: unknown) => void) => void;
27
+ off?: (event: string, listener: (payload: unknown) => void) => void;
28
+ close?: () => Promise<void>;
29
+ Network?: {
30
+ enable?: (params?: Record<string, unknown>) => Promise<void>;
31
+ disable?: () => Promise<void>;
32
+ getResponseBody?: (params: {
33
+ requestId: string;
34
+ }) => Promise<{
35
+ body: string;
36
+ base64Encoded?: boolean;
37
+ }>;
38
+ requestWillBeSent?: (listener: (payload: unknown) => void) => void;
39
+ responseReceived?: (listener: (payload: unknown) => void) => void;
40
+ loadingFailed?: (listener: (payload: unknown) => void) => void;
41
+ loadingFinished?: (listener: (payload: unknown) => void) => void;
42
+ };
43
+ Page?: {
44
+ enable?: () => Promise<void>;
45
+ navigate?: (params: {
46
+ url: string;
47
+ }) => Promise<void>;
48
+ getResourceContent?: (params: {
49
+ frameId: string;
50
+ url: string;
51
+ }) => Promise<{
52
+ content: string;
53
+ base64Encoded?: boolean;
54
+ }>;
55
+ };
56
+ };
57
+ export type RequestWillBeSent = {
58
+ requestId: string;
59
+ frameId?: string;
60
+ timestamp?: number;
61
+ wallTime?: number;
62
+ type?: string;
63
+ initiator?: {
64
+ type?: string;
65
+ url?: string;
66
+ };
67
+ request: {
68
+ url: string;
69
+ method: string;
70
+ headers?: Record<string, unknown>;
71
+ };
72
+ redirectResponse?: ResponseReceived["response"];
73
+ };
74
+ export type ResponseReceived = {
75
+ requestId: string;
76
+ frameId?: string;
77
+ timestamp?: number;
78
+ wallTime?: number;
79
+ type?: string;
80
+ response: {
81
+ url: string;
82
+ status: number;
83
+ statusText?: string;
84
+ headers?: Record<string, unknown>;
85
+ mimeType?: string;
86
+ fromDiskCache?: boolean;
87
+ fromServiceWorker?: boolean;
88
+ };
89
+ };
90
+ export type LoadingFailed = {
91
+ requestId: string;
92
+ timestamp?: number;
93
+ wallTime?: number;
94
+ errorText: string;
95
+ };
96
+ export type LoadingFinished = {
97
+ requestId: string;
98
+ timestamp?: number;
99
+ wallTime?: number;
100
+ };
101
+ export type StoredResponse = {
102
+ requestId: string;
103
+ response: ResponseReceived["response"];
104
+ };
105
+ export type RequestInfo = {
106
+ url: string;
107
+ frameId?: string;
108
+ resourceType?: ResourceType;
109
+ initiator?: {
110
+ type?: string;
111
+ url?: string;
112
+ };
113
+ };
114
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pagepocket/cdp-adapter",
3
- "version": "0.5.1",
3
+ "version": "0.6.1",
4
4
  "description": "Chrome DevTools Protocol adapter for PagePocket network interception.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -12,17 +12,16 @@
12
12
  "dist"
13
13
  ],
14
14
  "dependencies": {
15
- "chrome-remote-interface": "^0.33.2",
16
- "@pagepocket/lib": "0.5.1"
15
+ "@pagepocket/interceptor": "0.6.1"
17
16
  },
18
17
  "devDependencies": {
19
- "@types/chrome-remote-interface": "^0.33.0",
20
18
  "@types/node": "^20.17.12",
21
19
  "tsx": "^4.21.0",
22
- "typescript": "^5.7.2"
20
+ "typescript": "^5.7.2",
21
+ "@pagepocket/lib": "0.6.1"
23
22
  },
24
23
  "scripts": {
25
24
  "build": "tsc -p tsconfig.json",
26
- "test": "tsx --test specs/**/*.test.ts"
25
+ "test": "tsx --test specs/*.spec.ts"
27
26
  }
28
27
  }