@ytspar/sweetlink 0.0.1 → 1.0.0-canary.2b99e1e

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.
Files changed (128) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +579 -28
  3. package/dist/browser/SweetlinkBridge.d.ts +69 -0
  4. package/dist/browser/SweetlinkBridge.d.ts.map +1 -0
  5. package/dist/browser/SweetlinkBridge.js +360 -0
  6. package/dist/browser/SweetlinkBridge.js.map +1 -0
  7. package/dist/browser/commands/dom.d.ts +11 -0
  8. package/dist/browser/commands/dom.d.ts.map +1 -0
  9. package/dist/browser/commands/dom.js +79 -0
  10. package/dist/browser/commands/dom.js.map +1 -0
  11. package/dist/browser/commands/exec.d.ts +14 -0
  12. package/dist/browser/commands/exec.d.ts.map +1 -0
  13. package/dist/browser/commands/exec.js +47 -0
  14. package/dist/browser/commands/exec.js.map +1 -0
  15. package/dist/browser/commands/index.d.ts +10 -0
  16. package/dist/browser/commands/index.d.ts.map +1 -0
  17. package/dist/browser/commands/index.js +10 -0
  18. package/dist/browser/commands/index.js.map +1 -0
  19. package/dist/browser/commands/logs.d.ts +11 -0
  20. package/dist/browser/commands/logs.d.ts.map +1 -0
  21. package/dist/browser/commands/logs.js +25 -0
  22. package/dist/browser/commands/logs.js.map +1 -0
  23. package/dist/browser/commands/screenshot.d.ts +16 -0
  24. package/dist/browser/commands/screenshot.d.ts.map +1 -0
  25. package/dist/browser/commands/screenshot.js +118 -0
  26. package/dist/browser/commands/screenshot.js.map +1 -0
  27. package/dist/browser/consoleCapture.d.ts +107 -0
  28. package/dist/browser/consoleCapture.d.ts.map +1 -0
  29. package/dist/browser/consoleCapture.js +215 -0
  30. package/dist/browser/consoleCapture.js.map +1 -0
  31. package/dist/browser/hmr.d.ts +25 -0
  32. package/dist/browser/hmr.d.ts.map +1 -0
  33. package/dist/browser/hmr.js +97 -0
  34. package/dist/browser/hmr.js.map +1 -0
  35. package/dist/browser/screenshotUtils.d.ts +102 -0
  36. package/dist/browser/screenshotUtils.d.ts.map +1 -0
  37. package/dist/browser/screenshotUtils.js +143 -0
  38. package/dist/browser/screenshotUtils.js.map +1 -0
  39. package/dist/browser.d.ts +2 -0
  40. package/dist/browser.d.ts.map +1 -0
  41. package/dist/browser.js +5 -0
  42. package/dist/browser.js.map +1 -0
  43. package/dist/cdp.d.ts +99 -0
  44. package/dist/cdp.d.ts.map +1 -0
  45. package/dist/cdp.js +347 -0
  46. package/dist/cdp.js.map +1 -0
  47. package/dist/cli/sweetlink-dev.d.ts +14 -0
  48. package/dist/cli/sweetlink-dev.d.ts.map +1 -0
  49. package/dist/cli/sweetlink-dev.js +36 -0
  50. package/dist/cli/sweetlink-dev.js.map +1 -0
  51. package/dist/cli/sweetlink.d.ts +9 -0
  52. package/dist/cli/sweetlink.d.ts.map +1 -0
  53. package/dist/cli/sweetlink.js +1018 -0
  54. package/dist/cli/sweetlink.js.map +1 -0
  55. package/dist/index.d.ts +17 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +22 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/playwright.d.ts +29 -0
  60. package/dist/playwright.d.ts.map +1 -0
  61. package/dist/playwright.js +172 -0
  62. package/dist/playwright.js.map +1 -0
  63. package/dist/ruler.d.ts +82 -0
  64. package/dist/ruler.d.ts.map +1 -0
  65. package/dist/ruler.js +293 -0
  66. package/dist/ruler.js.map +1 -0
  67. package/dist/server/anthropic.d.ts +19 -0
  68. package/dist/server/anthropic.d.ts.map +1 -0
  69. package/dist/server/anthropic.js +26 -0
  70. package/dist/server/anthropic.js.map +1 -0
  71. package/dist/server/constants.d.ts +17 -0
  72. package/dist/server/constants.d.ts.map +1 -0
  73. package/dist/server/constants.js +17 -0
  74. package/dist/server/constants.js.map +1 -0
  75. package/dist/server/handlers/designReview.d.ts +27 -0
  76. package/dist/server/handlers/designReview.d.ts.map +1 -0
  77. package/dist/server/handlers/designReview.js +165 -0
  78. package/dist/server/handlers/designReview.js.map +1 -0
  79. package/dist/server/handlers/hmr.d.ts +21 -0
  80. package/dist/server/handlers/hmr.d.ts.map +1 -0
  81. package/dist/server/handlers/hmr.js +81 -0
  82. package/dist/server/handlers/hmr.js.map +1 -0
  83. package/dist/server/handlers/index.d.ts +12 -0
  84. package/dist/server/handlers/index.d.ts.map +1 -0
  85. package/dist/server/handlers/index.js +12 -0
  86. package/dist/server/handlers/index.js.map +1 -0
  87. package/dist/server/handlers/outline.d.ts +19 -0
  88. package/dist/server/handlers/outline.d.ts.map +1 -0
  89. package/dist/server/handlers/outline.js +41 -0
  90. package/dist/server/handlers/outline.js.map +1 -0
  91. package/dist/server/handlers/schema.d.ts +19 -0
  92. package/dist/server/handlers/schema.d.ts.map +1 -0
  93. package/dist/server/handlers/schema.js +49 -0
  94. package/dist/server/handlers/schema.js.map +1 -0
  95. package/dist/server/handlers/screenshot.d.ts +51 -0
  96. package/dist/server/handlers/screenshot.d.ts.map +1 -0
  97. package/dist/server/handlers/screenshot.js +101 -0
  98. package/dist/server/handlers/screenshot.js.map +1 -0
  99. package/dist/server/handlers/settings.d.ts +53 -0
  100. package/dist/server/handlers/settings.d.ts.map +1 -0
  101. package/dist/server/handlers/settings.js +69 -0
  102. package/dist/server/handlers/settings.js.map +1 -0
  103. package/dist/server/index.d.ts +33 -0
  104. package/dist/server/index.d.ts.map +1 -0
  105. package/dist/server/index.js +539 -0
  106. package/dist/server/index.js.map +1 -0
  107. package/dist/server/subscriptions.d.ts +26 -0
  108. package/dist/server/subscriptions.d.ts.map +1 -0
  109. package/dist/server/subscriptions.js +35 -0
  110. package/dist/server/subscriptions.js.map +1 -0
  111. package/dist/server.d.ts +8 -0
  112. package/dist/server.d.ts.map +1 -0
  113. package/dist/server.js +8 -0
  114. package/dist/server.js.map +1 -0
  115. package/dist/types.d.ts +132 -0
  116. package/dist/types.d.ts.map +1 -0
  117. package/dist/types.js +8 -0
  118. package/dist/types.js.map +1 -0
  119. package/dist/urlUtils.d.ts +75 -0
  120. package/dist/urlUtils.d.ts.map +1 -0
  121. package/dist/urlUtils.js +121 -0
  122. package/dist/urlUtils.js.map +1 -0
  123. package/dist/viewportUtils.d.ts +51 -0
  124. package/dist/viewportUtils.d.ts.map +1 -0
  125. package/dist/viewportUtils.js +70 -0
  126. package/dist/viewportUtils.js.map +1 -0
  127. package/package.json +99 -6
  128. package/scripts/setup-claude-context.mjs +101 -0
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Screenshot Utilities
3
+ *
4
+ * Shared canvas and screenshot helper functions used by both
5
+ * GlobalDevBar and SweetlinkBridge for capturing and processing screenshots.
6
+ */
7
+ /** Default screenshot scale factor */
8
+ export declare const DEFAULT_SCREENSHOT_SCALE = 0.25;
9
+ /** Default JPEG quality */
10
+ export declare const DEFAULT_SCREENSHOT_QUALITY = 0.7;
11
+ /** Higher quality scale for design review */
12
+ export declare const DESIGN_REVIEW_SCALE = 0.75;
13
+ /** Higher quality JPEG for devbar screenshots */
14
+ export declare const DEVBAR_SCREENSHOT_QUALITY = 0.8;
15
+ /**
16
+ * Options for canvas scaling
17
+ */
18
+ export interface ScaleCanvasOptions {
19
+ scale: number;
20
+ smoothing?: boolean;
21
+ smoothingQuality?: ImageSmoothingQuality;
22
+ }
23
+ /**
24
+ * Scale a canvas down to a smaller size
25
+ *
26
+ * @param originalCanvas - The source canvas to scale
27
+ * @param options - Scaling options
28
+ * @returns A new scaled canvas
29
+ */
30
+ export declare function scaleCanvas(originalCanvas: HTMLCanvasElement, options: ScaleCanvasOptions): HTMLCanvasElement;
31
+ /**
32
+ * Options for converting canvas to data URL
33
+ */
34
+ export interface ToDataUrlOptions {
35
+ format?: 'jpeg' | 'png';
36
+ quality?: number;
37
+ }
38
+ /**
39
+ * Convert a canvas to a data URL
40
+ *
41
+ * @param canvas - The canvas to convert
42
+ * @param options - Conversion options
43
+ * @returns Data URL string
44
+ */
45
+ export declare function canvasToDataUrl(canvas: HTMLCanvasElement, options?: ToDataUrlOptions): string;
46
+ /**
47
+ * Extract base64 data from a data URL
48
+ *
49
+ * @param dataUrl - The data URL to extract from
50
+ * @returns Base64 encoded string without the prefix
51
+ */
52
+ export declare function extractBase64FromDataUrl(dataUrl: string): string;
53
+ /**
54
+ * Get the media type from a data URL
55
+ *
56
+ * @param dataUrl - The data URL to check
57
+ * @returns The media type ('image/png' or 'image/jpeg')
58
+ */
59
+ export declare function getMediaTypeFromDataUrl(dataUrl: string): 'image/png' | 'image/jpeg';
60
+ /**
61
+ * Prepare the page for screenshot capture
62
+ * Blurs active element and adds capturing class to body
63
+ *
64
+ * @returns Cleanup function to restore state
65
+ */
66
+ export declare function prepareForCapture(): () => void;
67
+ /**
68
+ * Wait for a specified delay (useful for letting UI settle)
69
+ *
70
+ * @param ms - Milliseconds to wait
71
+ */
72
+ export declare function delay(ms: number): Promise<void>;
73
+ /**
74
+ * Copy a canvas to the clipboard as a PNG image
75
+ *
76
+ * @param canvas - The canvas to copy
77
+ * @returns Promise that resolves when copy is complete
78
+ */
79
+ export declare function copyCanvasToClipboard(canvas: HTMLCanvasElement): Promise<void>;
80
+ /**
81
+ * Screenshot metadata for saved files
82
+ */
83
+ export interface ScreenshotMetadata {
84
+ url: string;
85
+ width: number;
86
+ height: number;
87
+ timestamp: number;
88
+ viewport?: {
89
+ width: number;
90
+ height: number;
91
+ };
92
+ selector?: string;
93
+ }
94
+ /**
95
+ * Gather current viewport metadata
96
+ *
97
+ * @param canvas - The canvas that was captured
98
+ * @param selector - Optional selector that was used
99
+ * @returns Screenshot metadata
100
+ */
101
+ export declare function gatherScreenshotMetadata(canvas: HTMLCanvasElement, selector?: string): ScreenshotMetadata;
102
+ //# sourceMappingURL=screenshotUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshotUtils.d.ts","sourceRoot":"","sources":["../../src/browser/screenshotUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,sCAAsC;AACtC,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C,2BAA2B;AAC3B,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C,6CAA6C;AAC7C,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC,iDAAiD;AACjD,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAM7C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;CAC1C;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,cAAc,EAAE,iBAAiB,EACjC,OAAO,EAAE,kBAAkB,GAC1B,iBAAiB,CAiBnB;AAMD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,EAAE,OAAO,GAAE,gBAAqB,GAAG,MAAM,CAOjG;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,YAAY,CAEnF;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,IAAI,CAU9C;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAMD;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBpF;AAMD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,iBAAiB,EACzB,QAAQ,CAAC,EAAE,MAAM,GAChB,kBAAkB,CAYpB"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Screenshot Utilities
3
+ *
4
+ * Shared canvas and screenshot helper functions used by both
5
+ * GlobalDevBar and SweetlinkBridge for capturing and processing screenshots.
6
+ */
7
+ // ============================================================================
8
+ // Constants
9
+ // ============================================================================
10
+ /** Default screenshot scale factor */
11
+ export const DEFAULT_SCREENSHOT_SCALE = 0.25;
12
+ /** Default JPEG quality */
13
+ export const DEFAULT_SCREENSHOT_QUALITY = 0.7;
14
+ /** Higher quality scale for design review */
15
+ export const DESIGN_REVIEW_SCALE = 0.75;
16
+ /** Higher quality JPEG for devbar screenshots */
17
+ export const DEVBAR_SCREENSHOT_QUALITY = 0.8;
18
+ /**
19
+ * Scale a canvas down to a smaller size
20
+ *
21
+ * @param originalCanvas - The source canvas to scale
22
+ * @param options - Scaling options
23
+ * @returns A new scaled canvas
24
+ */
25
+ export function scaleCanvas(originalCanvas, options) {
26
+ const { scale, smoothing = true, smoothingQuality = 'high' } = options;
27
+ const scaledCanvas = document.createElement('canvas');
28
+ scaledCanvas.width = Math.floor(originalCanvas.width * scale);
29
+ scaledCanvas.height = Math.floor(originalCanvas.height * scale);
30
+ const ctx = scaledCanvas.getContext('2d');
31
+ if (!ctx) {
32
+ throw new Error('Failed to get canvas 2D context');
33
+ }
34
+ ctx.imageSmoothingEnabled = smoothing;
35
+ ctx.imageSmoothingQuality = smoothingQuality;
36
+ ctx.drawImage(originalCanvas, 0, 0, scaledCanvas.width, scaledCanvas.height);
37
+ return scaledCanvas;
38
+ }
39
+ /**
40
+ * Convert a canvas to a data URL
41
+ *
42
+ * @param canvas - The canvas to convert
43
+ * @param options - Conversion options
44
+ * @returns Data URL string
45
+ */
46
+ export function canvasToDataUrl(canvas, options = {}) {
47
+ const { format = 'jpeg', quality = DEFAULT_SCREENSHOT_QUALITY } = options;
48
+ if (format === 'png') {
49
+ return canvas.toDataURL('image/png');
50
+ }
51
+ return canvas.toDataURL('image/jpeg', quality);
52
+ }
53
+ /**
54
+ * Extract base64 data from a data URL
55
+ *
56
+ * @param dataUrl - The data URL to extract from
57
+ * @returns Base64 encoded string without the prefix
58
+ */
59
+ export function extractBase64FromDataUrl(dataUrl) {
60
+ return dataUrl.replace(/^data:image\/(png|jpeg);base64,/, '');
61
+ }
62
+ /**
63
+ * Get the media type from a data URL
64
+ *
65
+ * @param dataUrl - The data URL to check
66
+ * @returns The media type ('image/png' or 'image/jpeg')
67
+ */
68
+ export function getMediaTypeFromDataUrl(dataUrl) {
69
+ return dataUrl.startsWith('data:image/png') ? 'image/png' : 'image/jpeg';
70
+ }
71
+ // ============================================================================
72
+ // Screenshot Capture Helpers
73
+ // ============================================================================
74
+ /**
75
+ * Prepare the page for screenshot capture
76
+ * Blurs active element and adds capturing class to body
77
+ *
78
+ * @returns Cleanup function to restore state
79
+ */
80
+ export function prepareForCapture() {
81
+ document.body.classList.add('devbar-capturing');
82
+ if (document.activeElement instanceof HTMLElement) {
83
+ document.activeElement.blur();
84
+ }
85
+ return () => {
86
+ document.body.classList.remove('devbar-capturing');
87
+ };
88
+ }
89
+ /**
90
+ * Wait for a specified delay (useful for letting UI settle)
91
+ *
92
+ * @param ms - Milliseconds to wait
93
+ */
94
+ export function delay(ms) {
95
+ return new Promise((resolve) => setTimeout(resolve, ms));
96
+ }
97
+ // ============================================================================
98
+ // Clipboard Utilities
99
+ // ============================================================================
100
+ /**
101
+ * Copy a canvas to the clipboard as a PNG image
102
+ *
103
+ * @param canvas - The canvas to copy
104
+ * @returns Promise that resolves when copy is complete
105
+ */
106
+ export async function copyCanvasToClipboard(canvas) {
107
+ return new Promise((resolve, reject) => {
108
+ canvas.toBlob(async (blob) => {
109
+ if (!blob) {
110
+ reject(new Error('Failed to create blob from canvas'));
111
+ return;
112
+ }
113
+ try {
114
+ await navigator.clipboard.write([new ClipboardItem({ 'image/png': blob })]);
115
+ resolve();
116
+ }
117
+ catch (error) {
118
+ reject(error);
119
+ }
120
+ }, 'image/png');
121
+ });
122
+ }
123
+ /**
124
+ * Gather current viewport metadata
125
+ *
126
+ * @param canvas - The canvas that was captured
127
+ * @param selector - Optional selector that was used
128
+ * @returns Screenshot metadata
129
+ */
130
+ export function gatherScreenshotMetadata(canvas, selector) {
131
+ return {
132
+ url: window.location.href,
133
+ width: canvas.width,
134
+ height: canvas.height,
135
+ timestamp: Date.now(),
136
+ viewport: {
137
+ width: window.innerWidth,
138
+ height: window.innerHeight,
139
+ },
140
+ selector: selector || 'body',
141
+ };
142
+ }
143
+ //# sourceMappingURL=screenshotUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshotUtils.js","sourceRoot":"","sources":["../../src/browser/screenshotUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { SweetlinkBridge, type SweetlinkBridgeConfig } from './browser/SweetlinkBridge';
2
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,5 @@
1
+ // Browser entry point for @sweetlink/dev-toolkit/browser
2
+ // Vanilla JS version (no React dependency)
3
+ export { SweetlinkBridge } from './browser/SweetlinkBridge';
4
+ // React version available via separate import: '@ytspar/sweetlink/browser/react'
5
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,2CAA2C;AAC3C,OAAO,EAAE,eAAe,EAA8B,MAAM,2BAA2B,CAAC;AAExF,iFAAiF"}
package/dist/cdp.d.ts ADDED
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Sweetlink CDP (Chrome DevTools Protocol) Integration
3
+ *
4
+ * Provides enhanced screenshot and debugging capabilities using Puppeteer
5
+ * to connect to a Chrome instance running with remote debugging enabled.
6
+ */
7
+ import { type Browser, type Page } from 'puppeteer-core';
8
+ /**
9
+ * Check if Chrome DevTools Protocol is available
10
+ */
11
+ export declare function detectCDP(): Promise<boolean>;
12
+ /**
13
+ * Connect to Chrome via CDP
14
+ */
15
+ export declare function getCDPBrowser(): Promise<Browser>;
16
+ /**
17
+ * Find the local development page (localhost:3000)
18
+ */
19
+ export declare function findLocalDevPage(browser: Browser): Promise<Page>;
20
+ /**
21
+ * Take a screenshot using CDP
22
+ */
23
+ export declare function screenshotViaCDP(options: {
24
+ selector?: string;
25
+ output?: string;
26
+ fullPage?: boolean;
27
+ waitForNetwork?: boolean;
28
+ viewport?: string;
29
+ hover?: boolean;
30
+ }): Promise<{
31
+ buffer: Buffer;
32
+ width: number;
33
+ height: number;
34
+ }>;
35
+ /**
36
+ * Get console logs from the page
37
+ */
38
+ export declare function getConsoleLogsViaCDP(): Promise<Array<{
39
+ type: string;
40
+ text: string;
41
+ location?: {
42
+ url?: string;
43
+ lineNumber?: number;
44
+ };
45
+ timestamp: number;
46
+ }>>;
47
+ /**
48
+ * Query DOM elements via CDP
49
+ */
50
+ export declare function queryDOMViaCDP(selector: string, property?: string): Promise<any>;
51
+ /**
52
+ * Execute JavaScript in the page context
53
+ *
54
+ * SECURITY: This function executes arbitrary JavaScript via CDP.
55
+ * It is intended for development/debugging only and includes guards:
56
+ * - Production environment check
57
+ * - Code length limit
58
+ * - Type validation
59
+ */
60
+ export declare function execJSViaCDP(code: string): Promise<unknown>;
61
+ /**
62
+ * Get network requests from the page
63
+ */
64
+ export declare function getNetworkRequestsViaCDP(options?: {
65
+ filter?: string;
66
+ }): Promise<Array<{
67
+ url: string;
68
+ method: string;
69
+ status?: number;
70
+ statusText?: string;
71
+ resourceType?: string;
72
+ timestamp: number;
73
+ }>>;
74
+ /**
75
+ * Get page performance metrics
76
+ */
77
+ export declare function getPerformanceMetricsViaCDP(): Promise<{
78
+ metrics: import("puppeteer-core").Metrics;
79
+ timings: {
80
+ domContentLoaded: number;
81
+ loadComplete: number;
82
+ domInteractive: number;
83
+ firstPaint: number | undefined;
84
+ firstContentfulPaint: number | undefined;
85
+ };
86
+ }>;
87
+ /**
88
+ * Test CDP connection and return browser info
89
+ */
90
+ export declare function testCDPConnection(): Promise<{
91
+ connected: boolean;
92
+ browserVersion?: string;
93
+ pages?: Array<{
94
+ url: string;
95
+ title: string;
96
+ }>;
97
+ error?: string;
98
+ }>;
99
+ //# sourceMappingURL=cdp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cdp.d.ts","sourceRoot":"","sources":["../src/cdp.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAkB,EAChB,KAAK,OAAO,EAIZ,KAAK,IAAI,EACV,MAAM,gBAAgB,CAAC;AAkBxB;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAOlD;AAED;;GAEG;AACH,wBAAsB,aAAa,qBAalC;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,iBAwBtD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA8F7D;AAED;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CACnD,KAAK,CAAC;IACJ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CACH,CA8BA;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CA+BtF;AAKD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAgCjE;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CACpF,KAAK,CAAC;IACJ,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CACH,CAmDA;AAED;;GAEG;AACH,wBAAsB,2BAA2B;;;;;;;;;GAkChD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IACjD,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CA4BD"}