@graphty/remote-logger 1.2.2 → 1.3.0

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 (84) hide show
  1. package/README.md +53 -2
  2. package/dist/bundle/browser-entry.d.ts +34 -0
  3. package/dist/bundle/browser-entry.d.ts.map +1 -0
  4. package/dist/bundle/browser-entry.js +129 -0
  5. package/dist/bundle/browser-entry.js.map +1 -0
  6. package/dist/client/RemoteLogClient.d.ts +2 -1
  7. package/dist/client/RemoteLogClient.d.ts.map +1 -1
  8. package/dist/client/RemoteLogClient.js +20 -10
  9. package/dist/client/RemoteLogClient.js.map +1 -1
  10. package/dist/client/types.d.ts +6 -0
  11. package/dist/client/types.d.ts.map +1 -1
  12. package/dist/mcp/index.d.ts +1 -1
  13. package/dist/mcp/index.d.ts.map +1 -1
  14. package/dist/mcp/index.js +20 -1
  15. package/dist/mcp/index.js.map +1 -1
  16. package/dist/mcp/mcp-server.d.ts +5 -0
  17. package/dist/mcp/mcp-server.d.ts.map +1 -1
  18. package/dist/mcp/mcp-server.js +54 -8
  19. package/dist/mcp/mcp-server.js.map +1 -1
  20. package/dist/mcp/tools/index.d.ts +6 -6
  21. package/dist/mcp/tools/index.d.ts.map +1 -1
  22. package/dist/mcp/tools/index.js +1 -1
  23. package/dist/mcp/tools/index.js.map +1 -1
  24. package/dist/mcp/tools/logs-clear.d.ts +1 -2
  25. package/dist/mcp/tools/logs-clear.d.ts.map +1 -1
  26. package/dist/mcp/tools/logs-get-all.d.ts +1 -2
  27. package/dist/mcp/tools/logs-get-all.d.ts.map +1 -1
  28. package/dist/mcp/tools/logs-get-errors.d.ts +1 -2
  29. package/dist/mcp/tools/logs-get-errors.d.ts.map +1 -1
  30. package/dist/mcp/tools/logs-get-file-path.d.ts +8 -2
  31. package/dist/mcp/tools/logs-get-file-path.d.ts.map +1 -1
  32. package/dist/mcp/tools/logs-get-file-path.js +1 -1
  33. package/dist/mcp/tools/logs-get-file-path.js.map +1 -1
  34. package/dist/mcp/tools/logs-receive.d.ts +9 -10
  35. package/dist/mcp/tools/logs-receive.d.ts.map +1 -1
  36. package/dist/mcp/tools/logs-search.d.ts +1 -2
  37. package/dist/mcp/tools/logs-search.d.ts.map +1 -1
  38. package/dist/mcp/tools/logs-status.d.ts.map +1 -1
  39. package/dist/mcp/tools/logs-status.js +4 -1
  40. package/dist/mcp/tools/logs-status.js.map +1 -1
  41. package/dist/remote-logger.browser.js +166 -0
  42. package/dist/remote-logger.browser.js.map +1 -0
  43. package/dist/server/dual-server.d.ts +7 -4
  44. package/dist/server/dual-server.d.ts.map +1 -1
  45. package/dist/server/dual-server.js +124 -50
  46. package/dist/server/dual-server.js.map +1 -1
  47. package/dist/server/log-server.d.ts +12 -2
  48. package/dist/server/log-server.d.ts.map +1 -1
  49. package/dist/server/log-server.js +109 -63
  50. package/dist/server/log-server.js.map +1 -1
  51. package/dist/server/log-storage.d.ts +4 -0
  52. package/dist/server/log-storage.d.ts.map +1 -1
  53. package/dist/server/log-storage.js.map +1 -1
  54. package/dist/server/proxy.d.ts +39 -0
  55. package/dist/server/proxy.d.ts.map +1 -0
  56. package/dist/server/proxy.js +290 -0
  57. package/dist/server/proxy.js.map +1 -0
  58. package/dist/server/self-signed-cert.d.ts +9 -0
  59. package/dist/server/self-signed-cert.d.ts.map +1 -1
  60. package/dist/server/self-signed-cert.js +9 -0
  61. package/dist/server/self-signed-cert.js.map +1 -1
  62. package/dist/ui/ConsoleCaptureUI.d.ts.map +1 -1
  63. package/dist/ui/ConsoleCaptureUI.js +6 -1
  64. package/dist/ui/ConsoleCaptureUI.js.map +1 -1
  65. package/package.json +7 -2
  66. package/src/bundle/browser-entry.ts +157 -0
  67. package/src/client/RemoteLogClient.ts +22 -11
  68. package/src/client/types.ts +6 -0
  69. package/src/mcp/index.ts +42 -0
  70. package/src/mcp/mcp-server.ts +54 -8
  71. package/src/mcp/tools/index.ts +7 -0
  72. package/src/mcp/tools/logs-clear.ts +1 -1
  73. package/src/mcp/tools/logs-get-all.ts +1 -1
  74. package/src/mcp/tools/logs-get-errors.ts +1 -1
  75. package/src/mcp/tools/logs-get-file-path.ts +2 -2
  76. package/src/mcp/tools/logs-receive.ts +1 -1
  77. package/src/mcp/tools/logs-search.ts +1 -1
  78. package/src/mcp/tools/logs-status.ts +4 -1
  79. package/src/server/dual-server.ts +165 -57
  80. package/src/server/log-server.ts +126 -68
  81. package/src/server/log-storage.ts +4 -0
  82. package/src/server/proxy.ts +357 -0
  83. package/src/server/self-signed-cert.ts +9 -0
  84. package/src/ui/ConsoleCaptureUI.ts +6 -1
@@ -0,0 +1,290 @@
1
+ /**
2
+ * Reverse proxy with automatic remote-logger injection.
3
+ *
4
+ * Proxies requests to a target URL and injects the remote-logger script
5
+ * into HTML responses. Non-HTML responses pass through unmodified.
6
+ * @module server/proxy
7
+ */
8
+ import httpProxy from "http-proxy";
9
+ import * as https from "https";
10
+ import { defaultTreeAdapter, html as parse5Html, parse, serialize } from "parse5";
11
+ const HEADERS_TO_REMOVE = [
12
+ "content-security-policy",
13
+ "content-security-policy-report-only",
14
+ "x-frame-options",
15
+ "strict-transport-security",
16
+ "content-length",
17
+ "content-encoding",
18
+ "transfer-encoding",
19
+ "link",
20
+ "etag",
21
+ "cache-control",
22
+ "age",
23
+ "server",
24
+ "x-sveltekit-page",
25
+ "x-vercel-cache",
26
+ "x-vercel-id",
27
+ "x-powered-by",
28
+ "via",
29
+ ];
30
+ /**
31
+ * Extract the origin (protocol + host) from a full URL.
32
+ * @param targetUrl - The full target URL
33
+ * @returns The origin portion of the URL
34
+ */
35
+ function extractOrigin(targetUrl) {
36
+ const parsed = new URL(targetUrl);
37
+ return parsed.origin;
38
+ }
39
+ /**
40
+ * Extract the path portion from a full URL.
41
+ * @param targetUrl - The full target URL
42
+ * @returns The path including query string
43
+ */
44
+ function extractPath(targetUrl) {
45
+ const parsed = new URL(targetUrl);
46
+ return parsed.pathname + parsed.search;
47
+ }
48
+ /**
49
+ * Rewrite a Location header to route back through the proxy.
50
+ * @param location - The original Location header value
51
+ * @param proxyBaseUrl - The proxy base URL (e.g., "/proxy/")
52
+ * @returns The rewritten Location header
53
+ */
54
+ function rewriteLocationHeader(location, proxyBaseUrl) {
55
+ if (location.startsWith("http://") || location.startsWith("https://")) {
56
+ return proxyBaseUrl + location;
57
+ }
58
+ return location;
59
+ }
60
+ /**
61
+ * Rewrite Set-Cookie attributes for proxied responses.
62
+ * Removes Domain (wrong domain) and Secure (proxy may serve over HTTP).
63
+ * @param cookie - The original Set-Cookie header value
64
+ * @returns The rewritten cookie
65
+ */
66
+ function rewriteSetCookie(cookie) {
67
+ let rewritten = cookie.replace(/;\s*domain=[^;]*/gi, "");
68
+ rewritten = rewritten.replace(/;\s*secure/gi, "");
69
+ return rewritten;
70
+ }
71
+ /**
72
+ * Find the first element with a given tag name in the AST.
73
+ * @param node - The AST node to search from
74
+ * @param tagName - The tag name to find
75
+ * @returns The element or null
76
+ */
77
+ function findElement(node, tagName) {
78
+ if (defaultTreeAdapter.isElementNode(node) && node.tagName === tagName) {
79
+ return node;
80
+ }
81
+ const children = node.childNodes ?? [];
82
+ for (const child of children) {
83
+ if (defaultTreeAdapter.isElementNode(child)) {
84
+ const found = findElement(child, tagName);
85
+ if (found) {
86
+ return found;
87
+ }
88
+ }
89
+ }
90
+ return null;
91
+ }
92
+ /**
93
+ * Strip integrity attributes from all script and link elements in the AST.
94
+ * @param node - The AST node to search from
95
+ */
96
+ function stripIntegrityAttributes(node) {
97
+ if (defaultTreeAdapter.isElementNode(node)) {
98
+ if (node.tagName === "script" || node.tagName === "link") {
99
+ node.attrs = node.attrs.filter(a => a.name !== "integrity");
100
+ }
101
+ }
102
+ const children = node.childNodes ?? [];
103
+ for (const child of children) {
104
+ if (defaultTreeAdapter.isElementNode(child)) {
105
+ stripIntegrityAttributes(child);
106
+ }
107
+ }
108
+ }
109
+ const XHTML_NS = parse5Html.NS.HTML;
110
+ const CHROME_UA = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36";
111
+ /**
112
+ * Inject the remote-logger script and base tag into HTML using parse5.
113
+ * Inserts base at start of head, script at end of head, and strips
114
+ * integrity attributes from script/link elements.
115
+ * @param html - The original HTML string
116
+ * @param scriptUrl - URL to the remote-logger script
117
+ * @param baseHref - Base href for rewriting absolute paths
118
+ * @returns The modified HTML
119
+ */
120
+ export function injectScript(html, scriptUrl, baseHref) {
121
+ const doc = parse(html);
122
+ const head = findElement(doc, "head");
123
+ if (head) {
124
+ const baseEl = defaultTreeAdapter.createElement("base", XHTML_NS, [{ name: "href", value: baseHref }]);
125
+ const scriptEl = defaultTreeAdapter.createElement("script", XHTML_NS, [{ name: "src", value: scriptUrl }]);
126
+ // Insert base at start of head (before any relative URLs)
127
+ if (head.childNodes.length > 0) {
128
+ defaultTreeAdapter.insertBefore(head, baseEl, head.childNodes[0]);
129
+ }
130
+ else {
131
+ defaultTreeAdapter.appendChild(head, baseEl);
132
+ }
133
+ // Append script at end of head
134
+ defaultTreeAdapter.appendChild(head, scriptEl);
135
+ }
136
+ stripIntegrityAttributes(doc);
137
+ return serialize(doc);
138
+ }
139
+ /**
140
+ * Check if a content-type header indicates HTML.
141
+ * @param contentType - The Content-Type header value
142
+ * @returns True if the content is HTML
143
+ */
144
+ function isHtmlContentType(contentType) {
145
+ if (!contentType) {
146
+ return false;
147
+ }
148
+ return contentType.includes("text/html");
149
+ }
150
+ /**
151
+ * Validate that a URL is a valid proxy target.
152
+ * @param targetUrl - The URL to validate
153
+ * @returns True if the URL is valid for proxying
154
+ */
155
+ export function isValidProxyTarget(targetUrl) {
156
+ try {
157
+ const parsed = new URL(targetUrl);
158
+ return parsed.protocol === "http:" || parsed.protocol === "https:";
159
+ }
160
+ catch {
161
+ return false;
162
+ }
163
+ }
164
+ /**
165
+ * Create a proxy instance that injects the remote-logger into HTML responses.
166
+ * @param proxyBasePath - Base path for the proxy (e.g., "/proxy/")
167
+ * @param quiet - Suppress terminal output
168
+ * @returns A proxy instance with handleRequest and close methods
169
+ */
170
+ export function createProxy(proxyBasePath, quiet) {
171
+ // Custom TLS agent to avoid JA3 fingerprint-based blocking by CDNs.
172
+ // Fastly, Akamai, etc. blocklist Node.js's default TLS fingerprint.
173
+ // Using a custom sigalgs list changes the fingerprint without restricting
174
+ // TLS version, so sites that only support TLS 1.2 still work.
175
+ const httpsAgent = new https.Agent({
176
+ rejectUnauthorized: false,
177
+ sigalgs: "ecdsa_secp256r1_sha256:rsa_pss_rsae_sha256:rsa_pkcs1_sha256:ecdsa_secp384r1_sha384:rsa_pss_rsae_sha384:rsa_pkcs1_sha384:rsa_pss_rsae_sha512:rsa_pkcs1_sha512",
178
+ });
179
+ const proxy = httpProxy.createProxyServer({
180
+ selfHandleResponse: true,
181
+ changeOrigin: true,
182
+ followRedirects: false,
183
+ secure: false,
184
+ });
185
+ proxy.on("proxyRes", (proxyRes, req, res) => {
186
+ const chunks = [];
187
+ proxyRes.on("data", (chunk) => {
188
+ chunks.push(chunk);
189
+ });
190
+ proxyRes.on("end", () => {
191
+ const body = Buffer.concat(chunks);
192
+ // Copy headers with modifications
193
+ const headers = {};
194
+ for (const [key, value] of Object.entries(proxyRes.headers)) {
195
+ if (value === undefined) {
196
+ continue;
197
+ }
198
+ if (HEADERS_TO_REMOVE.includes(key.toLowerCase())) {
199
+ continue;
200
+ }
201
+ if (key.toLowerCase() === "location" && typeof value === "string") {
202
+ headers[key] = rewriteLocationHeader(value, proxyBasePath);
203
+ continue;
204
+ }
205
+ if (key.toLowerCase() === "set-cookie" && Array.isArray(value)) {
206
+ headers[key] = value.map(rewriteSetCookie);
207
+ continue;
208
+ }
209
+ headers[key] = value;
210
+ }
211
+ const contentType = proxyRes.headers["content-type"];
212
+ const statusCode = proxyRes.statusCode ?? 200;
213
+ if (isHtmlContentType(contentType)) {
214
+ const html = body.toString("utf-8");
215
+ const reqExtra = req;
216
+ const originalUrl = reqExtra._proxyTargetUrl;
217
+ const reqScriptUrl = reqExtra._proxyScriptUrl ?? "/remote-logger.js";
218
+ const baseHref = originalUrl ? `${proxyBasePath}${extractOrigin(originalUrl)}/` : proxyBasePath;
219
+ const modified = injectScript(html, reqScriptUrl, baseHref);
220
+ headers["content-type"] = "text/html; charset=utf-8";
221
+ headers["cache-control"] = "no-cache, no-store";
222
+ res.writeHead(statusCode, headers);
223
+ res.end(modified);
224
+ }
225
+ else {
226
+ if (body.length > 0) {
227
+ headers["content-length"] = String(body.length);
228
+ }
229
+ res.writeHead(statusCode, headers);
230
+ res.end(body);
231
+ }
232
+ });
233
+ });
234
+ proxy.on("error", (err, _req, res) => {
235
+ const isTlsError = err.message.includes("SSL") ||
236
+ err.message.includes("TLS") ||
237
+ err.message.includes("EPROTO");
238
+ const message = isTlsError
239
+ ? `TLS connection failed: ${err.message}`
240
+ : err.message;
241
+ if (!quiet) {
242
+ console.error(`[proxy] Error: ${message}`);
243
+ }
244
+ const serverRes = res;
245
+ if (!serverRes.headersSent) {
246
+ serverRes.writeHead(502, { "Content-Type": "application/json" });
247
+ }
248
+ serverRes.end(JSON.stringify({ error: "Bad Gateway", message }));
249
+ });
250
+ const handleRequest = (req, res, targetUrl, requestProtocol, requestHost) => {
251
+ if (!isValidProxyTarget(targetUrl)) {
252
+ res.writeHead(400, { "Content-Type": "application/json" });
253
+ res.end(JSON.stringify({ error: "Invalid target URL. Must start with http:// or https://" }));
254
+ return;
255
+ }
256
+ const target = extractOrigin(targetUrl);
257
+ const targetPath = extractPath(targetUrl);
258
+ // Stash per-request data for the proxyRes handler
259
+ const reqExtra = req;
260
+ reqExtra._proxyTargetUrl = targetUrl;
261
+ reqExtra._proxyScriptUrl = `${requestProtocol}://${requestHost}/remote-logger.js`;
262
+ // Override the request path to the target's path
263
+ req.url = targetPath;
264
+ // Request uncompressed content so we can modify HTML
265
+ req.headers["accept-encoding"] = "identity";
266
+ // Strip headers that reveal this is a cross-origin/proxy/headless request.
267
+ // CDNs like Fastly use these for bot detection.
268
+ delete req.headers["sec-fetch-site"];
269
+ delete req.headers["sec-fetch-mode"];
270
+ delete req.headers["sec-fetch-dest"];
271
+ delete req.headers["sec-fetch-user"];
272
+ delete req.headers["sec-ch-ua"];
273
+ delete req.headers["sec-ch-ua-mobile"];
274
+ delete req.headers["sec-ch-ua-platform"];
275
+ delete req.headers.origin;
276
+ delete req.headers.referer;
277
+ // Use a standard Chrome UA to avoid bot detection
278
+ req.headers["user-agent"] = CHROME_UA;
279
+ const proxyOptions = { target };
280
+ if (targetUrl.startsWith("https://")) {
281
+ proxyOptions.agent = httpsAgent;
282
+ }
283
+ proxy.web(req, res, proxyOptions);
284
+ };
285
+ const close = () => {
286
+ proxy.close();
287
+ };
288
+ return { handleRequest, close };
289
+ }
290
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/server/proxy.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,17 @@ export interface GeneratedCert {
9
9
  /**
10
10
  * Generate a self-signed certificate for HTTPS.
11
11
  * The certificate is valid for localhost and common local development hostnames.
12
+ *
13
+ * NOTE: This function is currently unused because modern browsers reject
14
+ * self-signed certificates by default. It is retained for potential use cases:
15
+ * - Node.js clients that can disable certificate verification
16
+ * - Testing environments
17
+ * - Development setups where users manually trust the certificate
18
+ *
19
+ * For browser use, provide valid certificates via --cert and --key flags.
12
20
  * @param hostname - Optional hostname to include in the certificate (default: localhost)
13
21
  * @returns Object containing PEM-encoded certificate and private key
22
+ * @internal
14
23
  */
15
24
  export declare function generateSelfSignedCert(hostname?: string): GeneratedCert;
16
25
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"self-signed-cert.d.ts","sourceRoot":"","sources":["../../src/server/self-signed-cert.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,SAAc,GAAG,aAAa,CA4C5E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAQzE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAK9E"}
1
+ {"version":3,"file":"self-signed-cert.d.ts","sourceRoot":"","sources":["../../src/server/self-signed-cert.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,aAAa;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,SAAc,GAAG,aAAa,CA4C5E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAQzE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAK9E"}
@@ -7,8 +7,17 @@ import selfsigned from "selfsigned";
7
7
  /**
8
8
  * Generate a self-signed certificate for HTTPS.
9
9
  * The certificate is valid for localhost and common local development hostnames.
10
+ *
11
+ * NOTE: This function is currently unused because modern browsers reject
12
+ * self-signed certificates by default. It is retained for potential use cases:
13
+ * - Node.js clients that can disable certificate verification
14
+ * - Testing environments
15
+ * - Development setups where users manually trust the certificate
16
+ *
17
+ * For browser use, provide valid certificates via --cert and --key flags.
10
18
  * @param hostname - Optional hostname to include in the certificate (default: localhost)
11
19
  * @returns Object containing PEM-encoded certificate and private key
20
+ * @internal
12
21
  */
13
22
  export function generateSelfSignedCert(hostname = "localhost") {
14
23
  const attrs = [
@@ -1 +1 @@
1
- {"version":3,"file":"self-signed-cert.js","sourceRoot":"","sources":["../../src/server/self-signed-cert.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,UAAU,MAAM,YAAY,CAAC;AAOpC;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAQ,GAAG,WAAW;IACzD,MAAM,KAAK,GAAG;QACV,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE;QACvC,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,mBAAmB,EAAE;QACxD,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE;KACvC,CAAC;IAEF,MAAM,OAAO,GAAG;QACZ,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,GAAG;QACT,SAAS,EAAE,QAAiB;QAC5B,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,kBAAkB;gBACxB,EAAE,EAAE,KAAK;aACZ;YACD;gBACI,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,KAAK;gBAClB,gBAAgB,EAAE,IAAI;gBACtB,eAAe,EAAE,IAAI;aACxB;YACD;gBACI,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE,IAAI;aACnB;YACD;gBACI,IAAI,EAAE,gBAAgB;gBACtB,QAAQ,EAAE;oBACN,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,WAAW;oBACzC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE;oBAC/B,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,aAAa;oBAC3C,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,iBAAiB;iBAC5C;aACJ;SACJ;KACJ,CAAC;IAEF,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAEjD,OAAO;QACH,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,EAAE,IAAI,CAAC,OAAO;KACpB,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB,EAAE,OAAe;IAC5D,IAAI,CAAC;QACD,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3C,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,OAAe;IAC3D,OAAO;QACH,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC;QACxC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC;KACzC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"self-signed-cert.js","sourceRoot":"","sources":["../../src/server/self-signed-cert.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,UAAU,MAAM,YAAY,CAAC;AAOpC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAQ,GAAG,WAAW;IACzD,MAAM,KAAK,GAAG;QACV,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE;QACvC,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,mBAAmB,EAAE;QACxD,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE;KACvC,CAAC;IAEF,MAAM,OAAO,GAAG;QACZ,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,GAAG;QACT,SAAS,EAAE,QAAiB;QAC5B,UAAU,EAAE;YACR;gBACI,IAAI,EAAE,kBAAkB;gBACxB,EAAE,EAAE,KAAK;aACZ;YACD;gBACI,IAAI,EAAE,UAAU;gBAChB,WAAW,EAAE,KAAK;gBAClB,gBAAgB,EAAE,IAAI;gBACtB,eAAe,EAAE,IAAI;aACxB;YACD;gBACI,IAAI,EAAE,aAAa;gBACnB,UAAU,EAAE,IAAI;aACnB;YACD;gBACI,IAAI,EAAE,gBAAgB;gBACtB,QAAQ,EAAE;oBACN,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,WAAW;oBACzC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE;oBAC/B,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,aAAa;oBAC3C,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,iBAAiB;iBAC5C;aACJ;SACJ;KACJ,CAAC;IAEF,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAEjD,OAAO;QACH,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,EAAE,IAAI,CAAC,OAAO;KACpB,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB,EAAE,OAAe;IAC5D,IAAI,CAAC;QACD,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3C,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,OAAe;IAC3D,OAAO;QACH,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC;QACxC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC;KACzC,CAAC;AACN,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConsoleCaptureUI.d.ts","sourceRoot":"","sources":["../../src/ui/ConsoleCaptureUI.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,WAAW,CAAC,EAAE;YACV,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1B,QAAQ,EAAE,MAAM,IAAI,CAAC;YACrB,KAAK,EAAE,MAAM,IAAI,CAAC;YAClB,GAAG,EAAE,MAAM,MAAM,CAAC;YAClB,IAAI,EAAE,gBAAgB,EAAE,CAAC;SAC5B,CAAC;KACL;CACJ;AAED,kCAAkC;AAClC,UAAU,gBAAgB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACrB;AAQD;;GAEG;AACH,qBAAa,gBAAgB;IACzB,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,eAAe,CAAkD;IACzE,OAAO,CAAC,eAAe,CAA4B;IAEnD;;;OAGG;;IAgBH;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA0BxB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAqKhB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAoBjB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAcvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAqBrB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAmCzB;;OAEG;IACH,OAAO,CAAC,aAAa;IA+HrB;;;OAGG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,SAAS,IAAI,IAAI;IAMjB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB/B;;OAEG;IACH,YAAY,IAAI,IAAI;IAsBpB;;OAEG;IACH,OAAO,IAAI,IAAI;CA8BlB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,gBAAgB,CAEvD"}
1
+ {"version":3,"file":"ConsoleCaptureUI.d.ts","sourceRoot":"","sources":["../../src/ui/ConsoleCaptureUI.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,WAAW,CAAC,EAAE;YACV,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1B,QAAQ,EAAE,MAAM,IAAI,CAAC;YACrB,KAAK,EAAE,MAAM,IAAI,CAAC;YAClB,GAAG,EAAE,MAAM,MAAM,CAAC;YAClB,IAAI,EAAE,gBAAgB,EAAE,CAAC;SAC5B,CAAC;KACL;CACJ;AAED,kCAAkC;AAClC,UAAU,gBAAgB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACrB;AAQD;;GAEG;AACH,qBAAa,gBAAgB;IACzB,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,eAAe,CAAkD;IACzE,OAAO,CAAC,eAAe,CAA4B;IAEnD;;;OAGG;;IAgBH;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA0BxB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAqKhB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IAoBjB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqB1B;;OAEG;IACH,OAAO,CAAC,eAAe;IAcvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAqBrB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAmCzB;;OAEG;IACH,OAAO,CAAC,aAAa;IA+HrB;;;OAGG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,SAAS,IAAI,IAAI;IAMjB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB/B;;OAEG;IACH,YAAY,IAAI,IAAI;IAsBpB;;OAEG;IACH,OAAO,IAAI,IAAI;CA8BlB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,gBAAgB,CAEvD"}
@@ -265,6 +265,8 @@ export class ConsoleCaptureUI {
265
265
  */
266
266
  setupGlobalMethods() {
267
267
  if (typeof window !== "undefined") {
268
+ // Create a function that returns current logs to avoid stale reference
269
+ const getCurrentLogs = () => [...this.logs];
268
270
  window.__console__ = {
269
271
  copy: () => this.copyLogs(),
270
272
  download: () => {
@@ -274,7 +276,10 @@ export class ConsoleCaptureUI {
274
276
  this.clearLogs();
275
277
  },
276
278
  get: () => this.getLogs(),
277
- logs: this.logs,
279
+ // Use getter to always return fresh copy of current logs
280
+ get logs() {
281
+ return getCurrentLogs();
282
+ },
278
283
  };
279
284
  }
280
285
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ConsoleCaptureUI.js","sourceRoot":"","sources":["../../src/ui/ConsoleCaptureUI.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConsoleCaptureUI.js","sourceRoot":"","sources":["../../src/ui/ConsoleCaptureUI.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@graphty/remote-logger",
3
- "version": "1.2.2",
3
+ "version": "1.3.0",
4
4
  "description": "Remote logging client and server for browser debugging",
5
5
  "author": "Adam Powers <apowers@ato.ms>",
6
6
  "main": "dist/index.js",
@@ -69,13 +69,18 @@
69
69
  },
70
70
  "dependencies": {
71
71
  "@modelcontextprotocol/sdk": "^1.0.0",
72
+ "http-proxy": "^1.18.1",
73
+ "parse5": "^7.3.0",
74
+ "internal-ip": "^8.0.1",
72
75
  "selfsigned": "^2.4.1",
73
76
  "zod": "^3.25.0"
74
77
  },
75
78
  "devDependencies": {
79
+ "@types/http-proxy": "^1.17.17",
76
80
  "@types/node": "^20.0.0",
77
81
  "@vitest/coverage-v8": "^3.2.3",
78
82
  "typescript": "^5.8.3",
83
+ "vite": "^6.3.0",
79
84
  "vitest": "^3.2.3"
80
85
  },
81
86
  "scripts": {
@@ -87,7 +92,7 @@
87
92
  "lint:fix": "eslint --fix",
88
93
  "lint:knip": "cd .. && pnpm run lint:knip -- --workspace remote-logger",
89
94
  "typecheck": "tsc --noEmit",
90
- "build": "tsc",
95
+ "build": "tsc && vite build --config vite.bundle.config.ts",
91
96
  "build:watch": "tsc --watch",
92
97
  "dev": "tsc --watch"
93
98
  }
@@ -0,0 +1,157 @@
1
+ /**
2
+ * Browser bundle entry point for the remote logger.
3
+ *
4
+ * When loaded as a script tag, this auto-initializes a RemoteLogClient
5
+ * that intercepts console methods and forwards them to the server.
6
+ *
7
+ * Server URL detection priority:
8
+ * 1. window.__REMOTE_LOG_SERVER_URL__ (injected by server when serving this file)
9
+ * 2. document.currentScript.src (parse origin from script tag URL)
10
+ * 3. window.location.origin (fallback)
11
+ *
12
+ * Exposes window.__remoteLogger__ for manual control.
13
+ * @module bundle/browser-entry
14
+ */
15
+
16
+ import { RemoteLogClient } from "../client/RemoteLogClient.js";
17
+ import { ConsoleCaptureUI } from "../ui/ConsoleCaptureUI.js";
18
+
19
+ declare global {
20
+ interface Window {
21
+ __REMOTE_LOG_SERVER_URL__?: string;
22
+ __remoteLogger__?: RemoteLoggerGlobal;
23
+ }
24
+ }
25
+
26
+ type ConsoleMethod = "log" | "warn" | "error" | "info" | "debug";
27
+
28
+ const CONSOLE_LEVEL_MAP: Record<ConsoleMethod, string> = {
29
+ log: "LOG",
30
+ warn: "WARN",
31
+ error: "ERROR",
32
+ info: "INFO",
33
+ debug: "DEBUG",
34
+ };
35
+
36
+ const INTERCEPTED_METHODS: ConsoleMethod[] = ["log", "warn", "error", "info", "debug"];
37
+
38
+ export interface RemoteLoggerGlobal {
39
+ client: RemoteLogClient;
40
+ ui?: ConsoleCaptureUI;
41
+ destroy: () => void;
42
+ }
43
+
44
+ function detectServerUrl(): string | undefined {
45
+ if (typeof window !== "undefined" && window.__REMOTE_LOG_SERVER_URL__) {
46
+ return window.__REMOTE_LOG_SERVER_URL__;
47
+ }
48
+
49
+ if (typeof document !== "undefined" && document.currentScript) {
50
+ try {
51
+ const scriptUrl = new URL((document.currentScript as HTMLScriptElement).src);
52
+ return scriptUrl.origin;
53
+ } catch {
54
+ // Invalid URL, fall through
55
+ }
56
+ }
57
+
58
+ if (typeof window !== "undefined" && window.location) {
59
+ return window.location.origin;
60
+ }
61
+
62
+ return undefined;
63
+ }
64
+
65
+ function shouldShowUI(): boolean {
66
+ if (typeof document === "undefined" || !document.currentScript) {
67
+ return false;
68
+ }
69
+
70
+ try {
71
+ const {src} = (document.currentScript as HTMLScriptElement);
72
+ if (!src) {return false;}
73
+ const params = new URL(src).searchParams;
74
+ return params.get("ui") === "true";
75
+ } catch {
76
+ return false;
77
+ }
78
+ }
79
+
80
+ function formatArg(arg: unknown): string {
81
+ if (typeof arg === "string") {return arg;}
82
+ if (arg instanceof Error) {return `${arg.name}: ${arg.message}`;}
83
+ try {
84
+ return JSON.stringify(arg);
85
+ } catch {
86
+ return String(arg);
87
+ }
88
+ }
89
+
90
+ function formatArgs(args: unknown[]): string {
91
+ return args.map(formatArg).join(" ");
92
+ }
93
+
94
+ /**
95
+ * Initialize the remote logger, intercepting console methods.
96
+ * @returns The remote logger global object, or undefined if no server URL detected
97
+ */
98
+ export function initRemoteLogger(): RemoteLoggerGlobal | undefined {
99
+ const serverUrl = detectServerUrl();
100
+ if (!serverUrl) {
101
+ console.warn("[RemoteLogger] Could not detect server URL. Set window.__REMOTE_LOG_SERVER_URL__ before loading.");
102
+ return undefined;
103
+ }
104
+
105
+ const client = new RemoteLogClient({
106
+ serverUrl,
107
+ sessionPrefix: "remote",
108
+ batchIntervalMs: 500,
109
+ });
110
+
111
+ const originalMethods: Record<ConsoleMethod, typeof console.log> = {} as Record<ConsoleMethod, typeof console.log>;
112
+
113
+ for (const method of INTERCEPTED_METHODS) {
114
+ // eslint-disable-next-line no-console
115
+ originalMethods[method] = console[method];
116
+
117
+ // eslint-disable-next-line no-console
118
+ console[method] = (...args: unknown[]) => {
119
+ originalMethods[method].apply(console, args);
120
+ const message = formatArgs(args);
121
+ client.log(CONSOLE_LEVEL_MAP[method], message);
122
+ };
123
+ }
124
+
125
+ let ui: ConsoleCaptureUI | undefined;
126
+ if (shouldShowUI()) {
127
+ ui = new ConsoleCaptureUI();
128
+ }
129
+
130
+ const destroy = (): void => {
131
+ for (const method of INTERCEPTED_METHODS) {
132
+ // eslint-disable-next-line no-console
133
+ console[method] = originalMethods[method];
134
+ }
135
+ void client.close();
136
+ if (ui) {
137
+ ui.destroy();
138
+ }
139
+ if (typeof window !== "undefined") {
140
+ delete window.__remoteLogger__;
141
+ }
142
+ };
143
+
144
+ const global: RemoteLoggerGlobal = { client, ui, destroy };
145
+
146
+ if (typeof window !== "undefined") {
147
+ window.__remoteLogger__ = global;
148
+ }
149
+
150
+ return global;
151
+ }
152
+
153
+ // Auto-initialize on load
154
+ initRemoteLogger();
155
+
156
+ // Re-export for manual use via the IIFE global
157
+ export { ConsoleCaptureUI,RemoteLogClient };