@ytspar/sweetlink 1.0.0-canary.cdf7fa2 → 1.0.0-canary.deff6e9

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 (87) hide show
  1. package/README.md +46 -78
  2. package/dist/auto.d.ts +55 -0
  3. package/dist/auto.d.ts.map +1 -0
  4. package/dist/auto.js +89 -0
  5. package/dist/auto.js.map +1 -0
  6. package/dist/browser/SweetlinkBridge.d.ts +2 -3
  7. package/dist/browser/SweetlinkBridge.d.ts.map +1 -1
  8. package/dist/browser/SweetlinkBridge.js +13 -55
  9. package/dist/browser/SweetlinkBridge.js.map +1 -1
  10. package/dist/browser/commands/dom.d.ts +2 -2
  11. package/dist/browser/commands/dom.d.ts.map +1 -1
  12. package/dist/browser/commands/dom.js.map +1 -1
  13. package/dist/browser/commands/exec.d.ts +2 -2
  14. package/dist/browser/commands/exec.d.ts.map +1 -1
  15. package/dist/browser/commands/exec.js +36 -3
  16. package/dist/browser/commands/exec.js.map +1 -1
  17. package/dist/browser/commands/logs.d.ts +2 -2
  18. package/dist/browser/commands/logs.d.ts.map +1 -1
  19. package/dist/browser/commands/logs.js.map +1 -1
  20. package/dist/browser/commands/screenshot.d.ts +3 -3
  21. package/dist/browser/commands/screenshot.d.ts.map +1 -1
  22. package/dist/browser/commands/screenshot.js +54 -40
  23. package/dist/browser/commands/screenshot.js.map +1 -1
  24. package/dist/browser/consoleCapture.d.ts +32 -0
  25. package/dist/browser/consoleCapture.d.ts.map +1 -1
  26. package/dist/browser/consoleCapture.js +97 -1
  27. package/dist/browser/consoleCapture.js.map +1 -1
  28. package/dist/browser/earlyConsoleCapture.d.ts +30 -0
  29. package/dist/browser/earlyConsoleCapture.d.ts.map +1 -0
  30. package/dist/browser/earlyConsoleCapture.js +71 -0
  31. package/dist/browser/earlyConsoleCapture.js.map +1 -0
  32. package/dist/browser/hmr.d.ts.map +1 -1
  33. package/dist/browser/hmr.js +7 -7
  34. package/dist/browser/hmr.js.map +1 -1
  35. package/dist/cdp.d.ts +3 -3
  36. package/dist/cdp.d.ts.map +1 -1
  37. package/dist/cdp.js +1 -1
  38. package/dist/cdp.js.map +1 -1
  39. package/dist/cli/sweetlink.js +212 -0
  40. package/dist/cli/sweetlink.js.map +1 -1
  41. package/dist/index.d.ts +8 -8
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +8 -10
  44. package/dist/index.js.map +1 -1
  45. package/dist/playwright.js +1 -1
  46. package/dist/playwright.js.map +1 -1
  47. package/dist/ruler.d.ts +0 -4
  48. package/dist/ruler.d.ts.map +1 -1
  49. package/dist/ruler.js +0 -13
  50. package/dist/ruler.js.map +1 -1
  51. package/dist/server/anthropic.d.ts +47 -8
  52. package/dist/server/anthropic.d.ts.map +1 -1
  53. package/dist/server/anthropic.js +26 -13
  54. package/dist/server/anthropic.js.map +1 -1
  55. package/dist/server/constants.js +1 -1
  56. package/dist/server/constants.js.map +1 -1
  57. package/dist/server/handlers/consoleLogs.d.ts +19 -0
  58. package/dist/server/handlers/consoleLogs.d.ts.map +1 -0
  59. package/dist/server/handlers/consoleLogs.js +41 -0
  60. package/dist/server/handlers/consoleLogs.js.map +1 -0
  61. package/dist/server/handlers/designReview.d.ts.map +1 -1
  62. package/dist/server/handlers/designReview.js +2 -3
  63. package/dist/server/handlers/designReview.js.map +1 -1
  64. package/dist/server/handlers/index.d.ts +1 -0
  65. package/dist/server/handlers/index.d.ts.map +1 -1
  66. package/dist/server/handlers/index.js +1 -0
  67. package/dist/server/handlers/index.js.map +1 -1
  68. package/dist/server/handlers/screenshot.d.ts +2 -1
  69. package/dist/server/handlers/screenshot.d.ts.map +1 -1
  70. package/dist/server/handlers/settings.d.ts +2 -6
  71. package/dist/server/handlers/settings.d.ts.map +1 -1
  72. package/dist/server/handlers/settings.js +4 -4
  73. package/dist/server/handlers/settings.js.map +1 -1
  74. package/dist/server/index.d.ts +1 -1
  75. package/dist/server/index.d.ts.map +1 -1
  76. package/dist/server/index.js +85 -26
  77. package/dist/server/index.js.map +1 -1
  78. package/dist/types.d.ts +236 -16
  79. package/dist/types.d.ts.map +1 -1
  80. package/dist/types.js +138 -1
  81. package/dist/types.js.map +1 -1
  82. package/dist/vite.d.ts +30 -0
  83. package/dist/vite.d.ts.map +1 -0
  84. package/dist/vite.js +55 -0
  85. package/dist/vite.js.map +1 -0
  86. package/package.json +36 -14
  87. package/scripts/setup-claude-context.mjs +1 -1
package/README.md CHANGED
@@ -38,6 +38,10 @@ This provides AI agents with easy access to visual state and debugging informati
38
38
 
39
39
  **File Location Rationale**: Files are saved to `.tmp/sweetlink-screenshots/` (relative to project root) for easy agent access - keeps screenshots with the project and is typically gitignored via `.tmp/` patterns.
40
40
 
41
+ ## Requirements
42
+
43
+ This package is **ESM-only**. It requires `"type": "module"` in your `package.json` or an ESM-capable bundler (Vite, webpack, esbuild, etc.).
44
+
41
45
  ## Installation
42
46
 
43
47
  ```bash
@@ -53,118 +57,82 @@ pnpm add @ytspar/sweetlink@canary
53
57
 
54
58
  ## Quick Start
55
59
 
56
- ### 1. Add Sweetlink Server to Your Dev Setup
60
+ ### For Vite Apps (Recommended)
57
61
 
58
- #### For Remix Apps
62
+ Just add the plugin - zero configuration needed:
59
63
 
60
64
  ```typescript
61
- // server.ts or entry.server.tsx
62
- import { initSweetlink } from '@ytspar/sweetlink';
65
+ // vite.config.ts
66
+ import { defineConfig } from 'vite';
67
+ import { sweetlink } from '@ytspar/sweetlink/vite';
63
68
 
64
- if (process.env.NODE_ENV === 'development') {
65
- const port = parseInt(process.env.SWEETLINK_WS_PORT || '9223', 10);
66
- initSweetlink({ port });
67
- console.log(`[Sweetlink] WebSocket server started on ws://localhost:${port}`);
68
- }
69
+ export default defineConfig({
70
+ plugins: [sweetlink()]
71
+ });
69
72
  ```
70
73
 
71
- #### For Next.js Apps
72
-
73
- ```typescript
74
- // next.config.js
75
- const { initSweetlink } = require('@ytspar/sweetlink');
74
+ That's it! The plugin automatically:
75
+ - Starts the Sweetlink server when Vite starts
76
+ - Detects Vite's port and configures everything
77
+ - DevBar connects automatically
76
78
 
77
- if (process.env.NODE_ENV === 'development') {
78
- initSweetlink({ port: 9223 });
79
- }
79
+ ### For Any Node.js App (Express, Next.js, Remix, etc.)
80
80
 
81
- module.exports = {
82
- // your next config...
83
- }
84
- ```
85
-
86
- #### For Vite Apps
81
+ Add one line at the top of your server file:
87
82
 
88
83
  ```typescript
89
- // vite.config.ts
90
- import { defineConfig } from 'vite';
91
- import { initSweetlink } from '@ytspar/sweetlink';
92
-
93
- if (process.env.NODE_ENV === 'development') {
94
- initSweetlink({ port: 9223 });
95
- }
84
+ // server.ts, app.ts, or entry point
85
+ import '@ytspar/sweetlink/auto';
96
86
 
97
- export default defineConfig({
98
- // your vite config...
99
- });
87
+ // Your app code...
100
88
  ```
101
89
 
102
- ### 2. Add Browser Bridge Component
90
+ This automatically:
91
+ - Starts Sweetlink in development mode only
92
+ - Reads port from `process.env.PORT` (or defaults to 3000)
93
+ - DevBar connects automatically
103
94
 
104
- #### Basic Usage (Standard Tailwind Colors)
95
+ #### With Explicit Configuration
105
96
 
106
97
  ```typescript
107
- // app/root.tsx (Remix) or _app.tsx (Next.js) or App.tsx (React)
108
- import { SweetlinkBridge } from '@ytspar/sweetlink/browser';
98
+ import { startSweetlink } from '@ytspar/sweetlink/auto';
109
99
 
110
- export default function App() {
111
- return (
112
- <>
113
- {/* Your app content */}
114
- {process.env.NODE_ENV === 'development' && <SweetlinkBridge />}
115
- </>
116
- );
117
- }
100
+ startSweetlink({ appPort: 3000 });
118
101
  ```
119
102
 
120
- #### Custom Theme Colors
103
+ ### Using DevBar (Browser UI)
104
+
105
+ Add DevBar to your app for the screenshot button and dev toolbar:
121
106
 
122
107
  ```typescript
123
- import { SweetlinkBridge } from '@ytspar/sweetlink/browser';
108
+ // app/root.tsx, _app.tsx, or App.tsx
109
+ import { initGlobalDevBar } from '@ytspar/devbar';
124
110
 
125
- export default function App() {
126
- return (
127
- <>
128
- {/* Your app content */}
129
- {process.env.NODE_ENV === 'development' && (
130
- <SweetlinkBridge
131
- connectedStyles="bg-terminal-green/20 border-terminal-green text-terminal-green"
132
- disconnectedStyles="bg-gray-700/20 border-gray-600 text-gray-400"
133
- />
134
- )}
135
- </>
136
- );
111
+ if (process.env.NODE_ENV === 'development') {
112
+ initGlobalDevBar();
137
113
  }
138
114
  ```
139
115
 
140
- ### 3. Add CLI Scripts to package.json
116
+ DevBar automatically connects to Sweetlink - no configuration needed.
117
+
118
+ ### CLI Usage
119
+
120
+ Add to your package.json for CLI access:
141
121
 
142
122
  ```json
143
123
  {
144
124
  "scripts": {
145
- "dev": "run-p dev:app sweetlink:dev",
146
- "dev:app": "remix dev",
147
- "sweetlink:dev": "sweetlink-dev",
148
125
  "sweetlink": "sweetlink"
149
- },
150
- "devDependencies": {
151
- "npm-run-all": "^4.1.5"
152
126
  }
153
127
  }
154
128
  ```
155
129
 
156
- ### 4. Start Development
130
+ Then use:
157
131
 
158
132
  ```bash
159
- pnpm dev
160
- ```
161
-
162
- You should see:
163
-
164
- ```
165
- [Sweetlink] WebSocket server started on ws://localhost:9223
166
- 💿 Remix App Server started at http://localhost:3000
167
- [Sweetlink] Connected to server
133
+ pnpm sweetlink screenshot
134
+ pnpm sweetlink logs
135
+ pnpm sweetlink query --selector "h1"
168
136
  ```
169
137
 
170
138
  ## CLI Usage
@@ -584,7 +552,7 @@ SWEETLINK_WS_PORT=9224 pnpm dev
584
552
 
585
553
  ## Contributing
586
554
 
587
- Contributions welcome! Please open an issue or PR at https://github.com/ytspar/devtools
555
+ Contributions welcome! Please open an issue or PR at https://github.com/ytspar/devbar
588
556
 
589
557
  ## License
590
558
 
@@ -593,4 +561,4 @@ MIT
593
561
  ## Credits
594
562
 
595
563
  - Inspired by [Peter Steinberger's autonomous debugging](https://x.com/steipete/status/1981998733736001727)
596
- - Powered by html2canvas, Puppeteer, and WebSocket
564
+ - Powered by html2canvas, Playwright, and WebSocket
package/dist/auto.d.ts ADDED
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Sweetlink Auto-Start
3
+ *
4
+ * Zero-config Sweetlink server that works with any Node.js app.
5
+ * Just import this module in development to start the server automatically.
6
+ *
7
+ * Usage:
8
+ * ```typescript
9
+ * // At the top of your server entry file
10
+ * import '@ytspar/sweetlink/auto';
11
+ * ```
12
+ *
13
+ * Or with explicit configuration:
14
+ * ```typescript
15
+ * import { startSweetlink } from '@ytspar/sweetlink/auto';
16
+ * startSweetlink({ appPort: 3000 });
17
+ * ```
18
+ *
19
+ * Port Calculation:
20
+ * - Reads app port from process.env.PORT (default: 3000)
21
+ * - WebSocket port = app port + 6223 (matches devbar's calculation)
22
+ * - Example: app on 3000 → Sweetlink on 9223
23
+ */
24
+ export interface AutoStartOptions {
25
+ /**
26
+ * Your app's HTTP port. If not specified, reads from process.env.PORT
27
+ * or defaults to 3000.
28
+ */
29
+ appPort?: number;
30
+ /**
31
+ * WebSocket server port. If not specified, calculated as appPort + 6223.
32
+ */
33
+ wsPort?: number;
34
+ /**
35
+ * Only start in development mode. Default: true
36
+ */
37
+ devOnly?: boolean;
38
+ }
39
+ /**
40
+ * Start Sweetlink server with automatic port configuration.
41
+ *
42
+ * @example
43
+ * // Auto-detect port from process.env.PORT
44
+ * startSweetlink();
45
+ *
46
+ * @example
47
+ * // Explicit app port
48
+ * startSweetlink({ appPort: 3000 });
49
+ */
50
+ export declare function startSweetlink(options?: AutoStartOptions): void;
51
+ /**
52
+ * Stop the Sweetlink server
53
+ */
54
+ export declare function stopSweetlink(): Promise<void>;
55
+ //# sourceMappingURL=auto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../src/auto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAUH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,gBAAqB,GAAG,IAAI,CAwCnE;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAKnD"}
package/dist/auto.js ADDED
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Sweetlink Auto-Start
3
+ *
4
+ * Zero-config Sweetlink server that works with any Node.js app.
5
+ * Just import this module in development to start the server automatically.
6
+ *
7
+ * Usage:
8
+ * ```typescript
9
+ * // At the top of your server entry file
10
+ * import '@ytspar/sweetlink/auto';
11
+ * ```
12
+ *
13
+ * Or with explicit configuration:
14
+ * ```typescript
15
+ * import { startSweetlink } from '@ytspar/sweetlink/auto';
16
+ * startSweetlink({ appPort: 3000 });
17
+ * ```
18
+ *
19
+ * Port Calculation:
20
+ * - Reads app port from process.env.PORT (default: 3000)
21
+ * - WebSocket port = app port + 6223 (matches devbar's calculation)
22
+ * - Example: app on 3000 → Sweetlink on 9223
23
+ */
24
+ import { closeSweetlink, initSweetlink } from './server/index.js';
25
+ /** Port offset from app port to calculate WebSocket port */
26
+ const WS_PORT_OFFSET = 6223;
27
+ /** Default app port if not specified */
28
+ const DEFAULT_APP_PORT = 3000;
29
+ let started = false;
30
+ /**
31
+ * Start Sweetlink server with automatic port configuration.
32
+ *
33
+ * @example
34
+ * // Auto-detect port from process.env.PORT
35
+ * startSweetlink();
36
+ *
37
+ * @example
38
+ * // Explicit app port
39
+ * startSweetlink({ appPort: 3000 });
40
+ */
41
+ export function startSweetlink(options = {}) {
42
+ if (started) {
43
+ console.log('[Sweetlink] Already started');
44
+ return;
45
+ }
46
+ const { devOnly = true } = options;
47
+ // Skip in production unless explicitly enabled
48
+ if (devOnly && process.env.NODE_ENV === 'production') {
49
+ return;
50
+ }
51
+ // Determine app port
52
+ const appPort = options.appPort ?? (process.env.PORT ? parseInt(process.env.PORT, 10) : DEFAULT_APP_PORT);
53
+ // Calculate WebSocket port (matches devbar's calculation)
54
+ const wsPort = options.wsPort ?? appPort + WS_PORT_OFFSET;
55
+ initSweetlink({
56
+ port: wsPort,
57
+ appPort,
58
+ onReady: (actualPort) => {
59
+ started = true;
60
+ if (actualPort !== wsPort) {
61
+ console.log(`[Sweetlink] Started on port ${actualPort} (${wsPort} was in use)`);
62
+ }
63
+ else {
64
+ console.log(`[Sweetlink] Started on port ${actualPort}`);
65
+ }
66
+ console.log(`[Sweetlink] devbar will auto-connect from app port ${appPort}`);
67
+ },
68
+ });
69
+ // Graceful shutdown on SIGTERM and SIGINT
70
+ const handleShutdown = () => {
71
+ closeSweetlink();
72
+ };
73
+ process.on('SIGTERM', handleShutdown);
74
+ process.on('SIGINT', handleShutdown);
75
+ }
76
+ /**
77
+ * Stop the Sweetlink server
78
+ */
79
+ export async function stopSweetlink() {
80
+ if (started) {
81
+ await closeSweetlink();
82
+ started = false;
83
+ }
84
+ }
85
+ // Auto-start when this module is imported (unless NODE_ENV=production)
86
+ if (process.env.NODE_ENV !== 'production') {
87
+ startSweetlink();
88
+ }
89
+ //# sourceMappingURL=auto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto.js","sourceRoot":"","sources":["../src/auto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElE,4DAA4D;AAC5D,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B,wCAAwC;AACxC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAoB9B,IAAI,OAAO,GAAG,KAAK,CAAC;AAEpB;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAAC,UAA4B,EAAE;IAC3D,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAEnC,+CAA+C;IAC/C,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;QACrD,OAAO;IACT,CAAC;IAED,qBAAqB;IACrB,MAAM,OAAO,GACX,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAE5F,0DAA0D;IAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,GAAG,cAAc,CAAC;IAE1D,aAAa,CAAC;QACZ,IAAI,EAAE,MAAM;QACZ,OAAO;QACP,OAAO,EAAE,CAAC,UAAU,EAAE,EAAE;YACtB,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,+BAA+B,UAAU,KAAK,MAAM,cAAc,CAAC,CAAC;YAClF,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,+BAA+B,UAAU,EAAE,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,sDAAsD,OAAO,EAAE,CAAC,CAAC;QAC/E,CAAC;KACF,CAAC,CAAC;IAEH,0CAA0C;IAC1C,MAAM,cAAc,GAAG,GAAS,EAAE;QAChC,cAAc,EAAE,CAAC;IACnB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,cAAc,EAAE,CAAC;QACvB,OAAO,GAAG,KAAK,CAAC;IAClB,CAAC;AACH,CAAC;AAED,uEAAuE;AACvE,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;IAC1C,cAAc,EAAE,CAAC;AACnB,CAAC"}
@@ -4,7 +4,7 @@
4
4
  * This module provides framework-agnostic browser integration for Sweetlink,
5
5
  * eliminating the React dependency to avoid conflicts with host applications.
6
6
  *
7
- * @version 2.1.0
7
+ * @version 1.0.0
8
8
  */
9
9
  import type { ServerInfo } from '../types.js';
10
10
  export interface SweetlinkBridgeConfig {
@@ -30,7 +30,7 @@ export declare class SweetlinkBridge {
30
30
  private readonly hmrConfig;
31
31
  private readonly currentAppPort;
32
32
  private cleanupFunctions;
33
- private originalConsole;
33
+ private capture;
34
34
  constructor(config?: SweetlinkBridgeConfig);
35
35
  /**
36
36
  * Initialize the bridge - call this to start the connection
@@ -48,7 +48,6 @@ export declare class SweetlinkBridge {
48
48
  * Get server info
49
49
  */
50
50
  getServerInfo(): ServerInfo | null;
51
- private setupConsoleCapture;
52
51
  private setupErrorHandlers;
53
52
  private connectWebSocket;
54
53
  private handleCommand;
@@ -1 +1 @@
1
- {"version":3,"file":"SweetlinkBridge.d.ts","sourceRoot":"","sources":["../../src/browser/SweetlinkBridge.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAc,UAAU,EAAuC,MAAM,aAAa,CAAC;AA4C/F,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAMD,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,gBAAgB,CAA8C;IACtE,OAAO,CAAC,sBAAsB,CAA8C;IAC5E,OAAO,CAAC,kBAAkB,CAA8C;IAGxE,OAAO,CAAC,QAAQ,CAId;IAGF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAGxC,OAAO,CAAC,gBAAgB,CAAsB;IAC9C,OAAO,CAAC,eAAe,CAAyB;gBAEpC,MAAM,GAAE,qBAA0B;IA6C9C;;OAEG;IACH,IAAI,IAAI,IAAI;IAyBZ;;OAEG;IACH,OAAO,IAAI,IAAI;IA6Cf;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,aAAa,IAAI,UAAU,GAAG,IAAI;IAQlC,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,gBAAgB;YAkIV,aAAa;CAyB5B;AAQD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,qBAAqB,GAAG,eAAe,CAQnF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,GAAG,IAAI,CAE3D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAK7C;AAGD,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"SweetlinkBridge.d.ts","sourceRoot":"","sources":["../../src/browser/SweetlinkBridge.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAc,UAAU,EAAuC,MAAM,aAAa,CAAC;AAqC/F,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAMD,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,gBAAgB,CAA8C;IACtE,OAAO,CAAC,sBAAsB,CAA8C;IAC5E,OAAO,CAAC,kBAAkB,CAA8C;IAGxE,OAAO,CAAC,QAAQ,CAId;IAGF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAGxC,OAAO,CAAC,gBAAgB,CAAsB;IAC9C,OAAO,CAAC,OAAO,CAAwB;gBAE3B,MAAM,GAAE,qBAA0B;IA+B9C;;OAEG;IACH,IAAI,IAAI,IAAI;IA8BZ;;OAEG;IACH,OAAO,IAAI,IAAI;IA0Cf;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,aAAa,IAAI,UAAU,GAAG,IAAI;IAQlC,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,gBAAgB;YAkIV,aAAa;CAyB5B;AAQD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,qBAAqB,GAAG,eAAe,CAQnF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,eAAe,GAAG,IAAI,CAE3D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAK7C;AAGD,eAAe,eAAe,CAAC"}
@@ -4,19 +4,17 @@
4
4
  * This module provides framework-agnostic browser integration for Sweetlink,
5
5
  * eliminating the React dependency to avoid conflicts with host applications.
6
6
  *
7
- * @version 2.1.0
7
+ * @version 1.0.0
8
8
  */
9
9
  // Import command handlers
10
10
  import { handleExecJS, handleGetLogs, handleQueryDOM, handleRequestScreenshot, handleScreenshot, } from './commands/index.js';
11
- import { createErrorHandler, createRejectionHandler, formatArgs, MAX_CONSOLE_LOGS, } from './consoleCapture.js';
11
+ import { ConsoleCapture } from './consoleCapture.js';
12
12
  // Import HMR utilities
13
13
  import { captureHmrScreenshot, setupHmrDetection, } from './hmr.js';
14
14
  // ============================================================================
15
15
  // Constants
16
16
  // ============================================================================
17
- /** Port offset from app port to calculate WebSocket port */
18
- const SWEETLINK_PORT_OFFSET = 6223;
19
- const DEFAULT_WS_PORT = 9223;
17
+ import { DEFAULT_WS_PORT, WS_PORT_OFFSET as SWEETLINK_PORT_OFFSET } from '../types.js';
20
18
  const DEFAULT_MAX_PORT_RETRIES = 10;
21
19
  /** HMR settings */
22
20
  const DEFAULT_HMR_DEBOUNCE_MS = 300;
@@ -52,7 +50,7 @@ export class SweetlinkBridge {
52
50
  currentAppPort;
53
51
  // Cleanup functions
54
52
  cleanupFunctions = [];
55
- originalConsole;
53
+ capture = new ConsoleCapture();
56
54
  constructor(config = {}) {
57
55
  // Skip on server-side
58
56
  if (typeof window === 'undefined') {
@@ -64,12 +62,6 @@ export class SweetlinkBridge {
64
62
  captureDelay: DEFAULT_HMR_CAPTURE_DELAY_MS,
65
63
  };
66
64
  this.currentAppPort = 0;
67
- this.originalConsole = {
68
- log: console.log,
69
- error: console.error,
70
- warn: console.warn,
71
- info: console.info,
72
- };
73
65
  return;
74
66
  }
75
67
  // Calculate app port from URL
@@ -85,13 +77,6 @@ export class SweetlinkBridge {
85
77
  debounceMs: config.hmrDebounceMs ?? DEFAULT_HMR_DEBOUNCE_MS,
86
78
  captureDelay: config.hmrCaptureDelay ?? DEFAULT_HMR_CAPTURE_DELAY_MS,
87
79
  };
88
- // Store original console methods
89
- this.originalConsole = {
90
- log: console.log.bind(console),
91
- error: console.error.bind(console),
92
- warn: console.warn.bind(console),
93
- info: console.info.bind(console),
94
- };
95
80
  }
96
81
  /**
97
82
  * Initialize the bridge - call this to start the connection
@@ -99,7 +84,12 @@ export class SweetlinkBridge {
99
84
  init() {
100
85
  if (typeof window === 'undefined')
101
86
  return;
102
- this.setupConsoleCapture();
87
+ this.capture.importEarlyLogs();
88
+ this.capture.start();
89
+ this.consoleLogs = this.capture.getLogs();
90
+ this.capture.addListener(() => {
91
+ this.consoleLogs = this.capture.getLogs();
92
+ });
103
93
  this.setupErrorHandlers();
104
94
  this.connectWebSocket(this.basePort);
105
95
  if (this.hmrScreenshots) {
@@ -140,10 +130,7 @@ export class SweetlinkBridge {
140
130
  this.ws = null;
141
131
  }
142
132
  // Restore console
143
- console.log = this.originalConsole.log;
144
- console.error = this.originalConsole.error;
145
- console.warn = this.originalConsole.warn;
146
- console.info = this.originalConsole.info;
133
+ this.capture.stop();
147
134
  // Run cleanup functions
148
135
  this.cleanupFunctions.forEach((fn) => fn());
149
136
  this.cleanupFunctions = [];
@@ -169,38 +156,9 @@ export class SweetlinkBridge {
169
156
  // ==========================================================================
170
157
  // Private Methods
171
158
  // ==========================================================================
172
- setupConsoleCapture() {
173
- const captureLog = (level, args) => {
174
- this.consoleLogs.push({
175
- level,
176
- message: formatArgs(args),
177
- timestamp: Date.now(),
178
- });
179
- // Keep only last N logs
180
- if (this.consoleLogs.length > MAX_CONSOLE_LOGS) {
181
- this.consoleLogs = this.consoleLogs.slice(-MAX_CONSOLE_LOGS);
182
- }
183
- };
184
- // Patch all console methods with a unified wrapper
185
- const levels = ['log', 'error', 'warn', 'info'];
186
- for (const level of levels) {
187
- const original = this.originalConsole[level];
188
- console[level] = (...args) => {
189
- captureLog(level, args);
190
- original(...args);
191
- };
192
- }
193
- }
194
159
  setupErrorHandlers() {
195
- const logsRef = { logs: this.consoleLogs };
196
- const errorHandler = createErrorHandler(logsRef, MAX_CONSOLE_LOGS);
197
- const rejectionHandler = createRejectionHandler(logsRef, MAX_CONSOLE_LOGS);
198
- window.addEventListener('error', errorHandler);
199
- window.addEventListener('unhandledrejection', rejectionHandler);
200
- this.cleanupFunctions.push(() => {
201
- window.removeEventListener('error', errorHandler);
202
- window.removeEventListener('unhandledrejection', rejectionHandler);
203
- });
160
+ const cleanup = this.capture.startErrorHandlers();
161
+ this.cleanupFunctions.push(cleanup);
204
162
  }
205
163
  connectWebSocket(port) {
206
164
  const wsUrl = `ws://localhost:${port}`;
@@ -1 +1 @@
1
- {"version":3,"file":"SweetlinkBridge.js","sourceRoot":"","sources":["../../src/browser/SweetlinkBridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SweetlinkBridge.js","sourceRoot":"","sources":["../../src/browser/SweetlinkBridge.ts"],"names":[],"mappings":"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"}
@@ -3,9 +3,9 @@
3
3
  *
4
4
  * Handles DOM query commands from the server.
5
5
  */
6
- import type { SweetlinkCommand, SweetlinkResponse } from '../../types.js';
6
+ import type { QueryDomCommand, SweetlinkResponse } from '../../types.js';
7
7
  /**
8
8
  * Handle query-dom command
9
9
  */
10
- export declare function handleQueryDOM(command: SweetlinkCommand): SweetlinkResponse;
10
+ export declare function handleQueryDOM(command: QueryDomCommand): SweetlinkResponse;
11
11
  //# sourceMappingURL=dom.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/browser/commands/dom.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAE1E;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,iBAAiB,CAyE3E"}
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/browser/commands/dom.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEzE;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,iBAAiB,CAyE1E"}
@@ -1 +1 @@
1
- {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../src/browser/commands/dom.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../src/browser/commands/dom.ts"],"names":[],"mappings":"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"}
@@ -6,9 +6,9 @@
6
6
  * SECURITY WARNING: This module executes arbitrary JavaScript for debugging.
7
7
  * It is restricted to localhost connections and development environments only.
8
8
  */
9
- import type { SweetlinkCommand, SweetlinkResponse } from '../../types.js';
9
+ import type { ExecJsCommand, SweetlinkResponse } from '../../types.js';
10
10
  /**
11
11
  * Handle exec-js command with security guards
12
12
  */
13
- export declare function handleExecJS(command: SweetlinkCommand): SweetlinkResponse;
13
+ export declare function handleExecJS(command: ExecJsCommand): SweetlinkResponse;
14
14
  //# sourceMappingURL=exec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../../src/browser/commands/exec.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAQ1E;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,iBAAiB,CAkCzE"}
1
+ {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../../src/browser/commands/exec.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAqCvE;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,iBAAiB,CA0CtE"}
@@ -7,9 +7,32 @@
7
7
  * It is restricted to localhost connections and development environments only.
8
8
  */
9
9
  const MAX_CODE_LENGTH = 10000;
10
+ const SCRIPT_RESULT_KEY = '__sweetlink_exec_result__';
10
11
  function errorResponse(error) {
11
12
  return { success: false, error, timestamp: Date.now() };
12
13
  }
14
+ /**
15
+ * Check whether an error was caused by CSP blocking `unsafe-eval`.
16
+ */
17
+ function isCspEvalBlocked(error) {
18
+ return (error instanceof EvalError ||
19
+ (error instanceof DOMException && error.message.includes('unsafe-eval')));
20
+ }
21
+ /**
22
+ * Execute code via inline `<script>` tag injection.
23
+ * Works on pages where CSP allows 'unsafe-inline' but not 'unsafe-eval'.
24
+ */
25
+ function execViaScriptTag(code) {
26
+ const global = window;
27
+ delete global[SCRIPT_RESULT_KEY];
28
+ const script = document.createElement('script');
29
+ script.textContent = `window["${SCRIPT_RESULT_KEY}"] = (function(){ return (${code}); })()`;
30
+ document.documentElement.appendChild(script);
31
+ script.remove();
32
+ const result = global[SCRIPT_RESULT_KEY];
33
+ delete global[SCRIPT_RESULT_KEY];
34
+ return result;
35
+ }
13
36
  /**
14
37
  * Handle exec-js command with security guards
15
38
  */
@@ -28,9 +51,19 @@ export function handleExecJS(command) {
28
51
  return errorResponse(`Code exceeds maximum length of ${MAX_CODE_LENGTH} characters`);
29
52
  }
30
53
  try {
31
- // Execute the code - intentional for dev tools debugging
32
- // eslint-disable-next-line no-eval
33
- const result = (0, eval)(command.code);
54
+ let result;
55
+ try {
56
+ // eslint-disable-next-line no-eval
57
+ result = (0, eval)(command.code);
58
+ }
59
+ catch (evalError) {
60
+ if (isCspEvalBlocked(evalError)) {
61
+ result = execViaScriptTag(command.code);
62
+ }
63
+ else {
64
+ throw evalError;
65
+ }
66
+ }
34
67
  return {
35
68
  success: true,
36
69
  data: {