@guckdev/browser 0.6.0 → 0.7.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.
package/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Guck (Browser SDK)
2
2
 
3
3
  Browser SDK for emitting Guck telemetry to a local MCP HTTP ingest endpoint.
4
+ This package is intended for **development only** and throws if used in production builds.
4
5
 
5
6
  ## Usage
6
7
 
@@ -24,6 +25,72 @@ const client = createBrowserClient({
24
25
  await client.emit({ message: "hello from the browser" });
25
26
  ```
26
27
 
28
+ ## Vite drop-in (dev)
29
+
30
+ 1) `pnpm add -D @guckdev/vite`
31
+ 2) Add the plugin in `vite.config.ts`:
32
+
33
+ ```ts
34
+ import { defineConfig } from "vite";
35
+ import { guckVitePlugin } from "@guckdev/vite";
36
+
37
+ export default defineConfig({
38
+ plugins: [guckVitePlugin()],
39
+ });
40
+ ```
41
+
42
+ 3) Use `/guck/emit` as the browser endpoint.
43
+
44
+ The browser will POST to your Vite dev server (for example `http://localhost:5173/guck/emit`).
45
+ The plugin forwards those requests to the shared MCP ingest at `http://127.0.0.1:7331/guck/emit`.
46
+
47
+ ## Quick local setup (HTTPS dev host, no Vite plugin)
48
+
49
+ 1) Start the MCP server with HTTP ingest:
50
+
51
+ ```sh
52
+ guck mcp --http-port 7331
53
+ ```
54
+
55
+ 2) If your app runs on HTTPS (e.g. `https://local.dev`), proxy the ingest
56
+ endpoint through Caddy so the browser stays on HTTPS:
57
+
58
+ ```caddyfile
59
+ :443 {
60
+ # your existing site config...
61
+
62
+ handle_path /guck/emit {
63
+ reverse_proxy 127.0.0.1:7331
64
+ }
65
+ }
66
+ ```
67
+
68
+ 3) Use the proxied endpoint:
69
+
70
+ ```ts
71
+ const client = createBrowserClient({
72
+ endpoint: "https://local.dev/guck/emit",
73
+ service: "playground",
74
+ sessionId: "dev-1",
75
+ });
76
+ ```
77
+
78
+ ## Keep it out of production
79
+
80
+ Use a development-only import so the SDK never gets bundled for production:
81
+
82
+ ```ts
83
+ if (import.meta.env.DEV) {
84
+ const { createBrowserClient } = await import("@guckdev/browser");
85
+ const client = createBrowserClient({
86
+ endpoint: "https://local.dev/guck/emit",
87
+ service: "playground",
88
+ sessionId: "dev-1",
89
+ });
90
+ client.installAutoCapture();
91
+ }
92
+ ```
93
+
27
94
  ## Auto-capture console + errors
28
95
 
29
96
  ```ts
@@ -38,6 +105,8 @@ stop();
38
105
  Notes:
39
106
  - The HTTP ingest endpoint is CORS-enabled by default.
40
107
  - If your page is served over HTTPS, posting to an HTTP localhost endpoint may be blocked by mixed-content rules.
108
+ - The SDK only runs when the endpoint host is local (`localhost`, `127.0.0.1`, `local.*`, `*.local`).
109
+ - `createBrowserClient()` throws when `NODE_ENV` / `import.meta.env.PROD` indicates production.
41
110
  - `installAutoCapture()` should usually be called once at app startup; repeated calls will wrap console multiple times.
42
111
  - If you install it inside a component or test, call `stop()` on cleanup to avoid duplicate logging.
43
112
  - For SPAs, it's fine to call `installAutoCapture()` once in your app entry (e.g. `index.ts`) and never call `stop()`.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,KAAK,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEzE,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,kBAAkB,EAAE,CAAC,IAAI,CAAC,EAAE,kBAAkB,KAAK;QAAE,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;CACzE,CAAC;AAgIF,eAAO,MAAM,mBAAmB,GAAI,SAAS,oBAAoB,KAAG,aAoJnE,CAAC;AAEF,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,KAAK,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEzE,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,SAAS,GAAG;IACf,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACpC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,kBAAkB,EAAE,CAAC,IAAI,CAAC,EAAE,kBAAkB,KAAK;QAAE,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;CACzE,CAAC;AA2KF,eAAO,MAAM,mBAAmB,GAAI,SAAS,oBAAoB,KAAG,aAmKnE,CAAC;AAEF,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -108,17 +108,57 @@ const mapConsoleLevel = (method) => {
108
108
  return "info";
109
109
  }
110
110
  };
111
+ const isDevHost = (hostname) => {
112
+ if (!hostname) {
113
+ return false;
114
+ }
115
+ return (hostname === "localhost" ||
116
+ hostname === "127.0.0.1" ||
117
+ hostname === "[::1]" ||
118
+ hostname.startsWith("local.") ||
119
+ hostname.endsWith(".local"));
120
+ };
121
+ const isDevEndpoint = (endpoint) => {
122
+ try {
123
+ const url = new URL(endpoint);
124
+ return isDevHost(url.hostname);
125
+ }
126
+ catch {
127
+ return false;
128
+ }
129
+ };
130
+ const isProdBuild = () => {
131
+ const globalProcess = globalThis.process;
132
+ const nodeEnv = globalProcess?.env?.NODE_ENV;
133
+ if (typeof nodeEnv === "string") {
134
+ return nodeEnv === "production";
135
+ }
136
+ const meta = typeof import.meta !== "undefined"
137
+ ? import.meta.env
138
+ : undefined;
139
+ if (meta && typeof meta.PROD === "boolean") {
140
+ return meta.PROD;
141
+ }
142
+ if (meta && typeof meta.MODE === "string") {
143
+ return meta.MODE === "production";
144
+ }
145
+ return false;
146
+ };
111
147
  export const createBrowserClient = (options) => {
112
148
  if (!options?.endpoint) {
113
149
  throw new Error("[guck] endpoint is required");
114
150
  }
151
+ if (isProdBuild()) {
152
+ throw new Error("[guck] browser SDK is development-only");
153
+ }
115
154
  const endpoint = options.endpoint;
116
155
  const service = options.service ?? "guck";
117
156
  const sessionId = options.sessionId;
118
157
  const runId = options.runId ?? randomId();
119
158
  const tags = options.tags;
120
159
  const headers = options.headers ?? {};
121
- const enabled = options.enabled ?? true;
160
+ const devHost = isDevEndpoint(endpoint);
161
+ const enabled = devHost && (options.enabled ?? true);
122
162
  const keepalive = options.keepalive ?? true;
123
163
  const fetcher = options.fetch ?? fetch;
124
164
  const onError = options.onError;
@@ -141,12 +181,13 @@ export const createBrowserClient = (options) => {
141
181
  span_id: input.span_id,
142
182
  source: input.source ?? { kind: "sdk" },
143
183
  };
184
+ const requestHeaders = {
185
+ "content-type": "application/json",
186
+ ...headers,
187
+ };
144
188
  const response = await fetcher(endpoint, {
145
189
  method: "POST",
146
- headers: {
147
- "content-type": "application/json",
148
- ...headers,
149
- },
190
+ headers: requestHeaders,
150
191
  body: JSON.stringify(event),
151
192
  keepalive,
152
193
  });
@@ -163,10 +204,17 @@ export const createBrowserClient = (options) => {
163
204
  }
164
205
  const originals = {};
165
206
  const listeners = [];
207
+ let suppressConsoleCapture = false;
166
208
  const safeEmit = (payload) => {
167
209
  void emit(payload).catch((error) => {
168
210
  if (onError) {
169
- onError(error);
211
+ suppressConsoleCapture = true;
212
+ try {
213
+ onError(error);
214
+ }
215
+ finally {
216
+ suppressConsoleCapture = false;
217
+ }
170
218
  }
171
219
  });
172
220
  };
@@ -177,6 +225,9 @@ export const createBrowserClient = (options) => {
177
225
  originals[method] = original;
178
226
  console[method] = (...args) => {
179
227
  original.apply(console, args);
228
+ if (suppressConsoleCapture) {
229
+ return;
230
+ }
180
231
  safeEmit({
181
232
  type: "console",
182
233
  level: mapConsoleLevel(method),
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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@guckdev/browser",
3
- "version": "0.6.0",
3
+ "version": "0.7.1",
4
4
  "description": "Guck browser SDK",
5
5
  "repository": {
6
6
  "type": "git",
package/src/index.ts CHANGED
@@ -171,17 +171,64 @@ const mapConsoleLevel = (method: ConsoleMethod): GuckLevel => {
171
171
  }
172
172
  };
173
173
 
174
+ const isDevHost = (hostname?: string): boolean => {
175
+ if (!hostname) {
176
+ return false;
177
+ }
178
+ return (
179
+ hostname === "localhost" ||
180
+ hostname === "127.0.0.1" ||
181
+ hostname === "[::1]" ||
182
+ hostname.startsWith("local.") ||
183
+ hostname.endsWith(".local")
184
+ );
185
+ };
186
+
187
+ const isDevEndpoint = (endpoint: string): boolean => {
188
+ try {
189
+ const url = new URL(endpoint);
190
+ return isDevHost(url.hostname);
191
+ } catch {
192
+ return false;
193
+ }
194
+ };
195
+
196
+ const isProdBuild = (): boolean => {
197
+ const globalProcess = (
198
+ globalThis as { process?: { env?: Record<string, string | undefined> } }
199
+ ).process;
200
+ const nodeEnv = globalProcess?.env?.NODE_ENV;
201
+ if (typeof nodeEnv === "string") {
202
+ return nodeEnv === "production";
203
+ }
204
+ const meta =
205
+ typeof import.meta !== "undefined"
206
+ ? (import.meta as { env?: Record<string, unknown> }).env
207
+ : undefined;
208
+ if (meta && typeof meta.PROD === "boolean") {
209
+ return meta.PROD;
210
+ }
211
+ if (meta && typeof meta.MODE === "string") {
212
+ return meta.MODE === "production";
213
+ }
214
+ return false;
215
+ };
216
+
174
217
  export const createBrowserClient = (options: BrowserClientOptions): BrowserClient => {
175
218
  if (!options?.endpoint) {
176
219
  throw new Error("[guck] endpoint is required");
177
220
  }
221
+ if (isProdBuild()) {
222
+ throw new Error("[guck] browser SDK is development-only");
223
+ }
178
224
  const endpoint = options.endpoint;
179
225
  const service = options.service ?? "guck";
180
226
  const sessionId = options.sessionId;
181
227
  const runId = options.runId ?? randomId();
182
228
  const tags = options.tags;
183
229
  const headers = options.headers ?? {};
184
- const enabled = options.enabled ?? true;
230
+ const devHost = isDevEndpoint(endpoint);
231
+ const enabled = devHost && (options.enabled ?? true);
185
232
  const keepalive = options.keepalive ?? true;
186
233
  const fetcher = options.fetch ?? fetch;
187
234
  const onError = options.onError;
@@ -206,12 +253,14 @@ export const createBrowserClient = (options: BrowserClientOptions): BrowserClien
206
253
  source: input.source ?? { kind: "sdk" },
207
254
  };
208
255
 
256
+ const requestHeaders: Record<string, string> = {
257
+ "content-type": "application/json",
258
+ ...headers,
259
+ };
260
+
209
261
  const response = await fetcher(endpoint, {
210
262
  method: "POST",
211
- headers: {
212
- "content-type": "application/json",
213
- ...headers,
214
- },
263
+ headers: requestHeaders,
215
264
  body: JSON.stringify(event),
216
265
  keepalive,
217
266
  });
@@ -233,10 +282,16 @@ export const createBrowserClient = (options: BrowserClientOptions): BrowserClien
233
282
  const originals: Partial<Record<ConsoleMethod, (...args: unknown[]) => void>> = {};
234
283
  const listeners: Array<() => void> = [];
235
284
 
285
+ let suppressConsoleCapture = false;
236
286
  const safeEmit = (payload: Partial<GuckEvent>) => {
237
287
  void emit(payload).catch((error) => {
238
288
  if (onError) {
239
- onError(error);
289
+ suppressConsoleCapture = true;
290
+ try {
291
+ onError(error);
292
+ } finally {
293
+ suppressConsoleCapture = false;
294
+ }
240
295
  }
241
296
  });
242
297
  };
@@ -248,6 +303,9 @@ export const createBrowserClient = (options: BrowserClientOptions): BrowserClien
248
303
  originals[method] = original;
249
304
  console[method] = (...args: unknown[]) => {
250
305
  original.apply(console, args);
306
+ if (suppressConsoleCapture) {
307
+ return;
308
+ }
251
309
  safeEmit({
252
310
  type: "console",
253
311
  level: mapConsoleLevel(method),