@guckdev/browser 0.6.0 → 0.7.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.
- package/README.md +69 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +57 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +64 -6
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()`.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
|
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
|
-
|
|
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
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
|
|
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
|
-
|
|
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),
|