Skip to content

Commit 29499be

Browse files
committed
more comprehensive logging, and add configurable verbose logging
1 parent c0ecc42 commit 29499be

13 files changed

+244
-81
lines changed

README.md

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,40 @@ let { partID, name }: Props = $props();
264264
/>
265265
```
266266

267+
## Debugging
268+
269+
### Query Debugger
270+
271+
Enables query and mutation logs to the browser console. It can be set at with the `<ViamProvier />` or with `window` functions:
272+
273+
```svelte
274+
<!-- enable query logging -->
275+
<ViamProvider
276+
{dialConfigs}
277+
logQueries
278+
>
279+
{@render children()}
280+
</ViamProvider>
281+
282+
<!-- enable verbose query logging -->
283+
<ViamProvider
284+
{dialConfigs}
285+
logQueries={{ enabled: true, verbose: true }}
286+
>
287+
{@render children()}
288+
</ViamProvider>
289+
```
290+
291+
```js
292+
// enable/disable query logging
293+
window.enableQueryLogging();
294+
window.disableQueryLogging();
295+
296+
// enable/disable verbose query logging
297+
window.enableVerboseQueryLogging();
298+
window.disableVerboseQueryLogging();
299+
```
300+
267301
## Developing
268302

269303
First install dependencies with `pnpm install`, then start a development server:

src/app.d.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ declare global {
1010
}
1111

1212
interface Window {
13-
enableDebug?: () => unknown;
14-
disableDebug?: () => unknown;
13+
enableQueryLogging?: () => unknown;
14+
disableQueryLogging?: () => unknown;
15+
enableVerboseQueryLogging?: () => unknown;
16+
disableVerboseQueryLogging?: () => unknown;
1517
}
1618
}
1719

src/lib/components/provider.svelte

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,57 @@ import type { Snippet } from 'svelte';
33
import { QueryClientProvider, QueryClient } from '@tanstack/svelte-query';
44
import type { DialConf } from '@viamrobotics/sdk';
55
import InternalProvider from './internal-provider.svelte';
6-
import { enableDebug, disableDebug } from '../debug';
6+
import {
7+
enableQueryLogging,
8+
disableQueryLogging,
9+
enableVerboseQueryLogging,
10+
disableVerboseQueryLogging,
11+
} from '../query-logger';
712
813
interface Props {
914
dialConfigs: Record<string, DialConf>;
1015
client?: QueryClient;
1116
machineStatusRefetchInterval?: number;
12-
debug?: boolean;
17+
logQueries?:
18+
| boolean
19+
| {
20+
enabled: boolean;
21+
verbose?: boolean;
22+
};
1323
children: Snippet;
1424
}
1525
1626
let {
1727
dialConfigs,
1828
client = new QueryClient(),
1929
machineStatusRefetchInterval,
20-
debug = false,
30+
logQueries,
2131
children,
2232
}: Props = $props();
2333
24-
$effect(() => (debug ? enableDebug() : disableDebug()));
34+
$effect(() => {
35+
if (typeof logQueries === 'boolean') {
36+
logQueries = { enabled: logQueries };
37+
}
38+
39+
if (logQueries?.enabled) {
40+
enableQueryLogging();
41+
} else {
42+
disableQueryLogging();
43+
}
44+
});
45+
46+
$effect(() => {
47+
if (typeof logQueries === 'boolean') {
48+
return;
49+
}
50+
51+
if (logQueries?.verbose) {
52+
enableVerboseQueryLogging();
53+
} else {
54+
disableVerboseQueryLogging();
55+
}
56+
});
2557
</script>
2658

2759
<QueryClientProvider {client}>

src/lib/debug.ts

Lines changed: 0 additions & 30 deletions
This file was deleted.

src/lib/hooks/create-resource-mutation.svelte.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type {
66
ResolvedReturnType,
77
} from './create-resource-query.svelte';
88
import { fromStore, toStore } from 'svelte/store';
9-
import { debugLogQuery } from '$lib/debug';
9+
import { useQueryLogger } from '$lib/query-logger';
1010

1111
export const createResourceMutation = <T extends Resource, K extends keyof T>(
1212
client: { current: T | undefined },
@@ -18,7 +18,7 @@ export const createResourceMutation = <T extends Resource, K extends keyof T>(
1818
const name = $derived(client.current?.name);
1919
const methodName = $derived(String(method));
2020

21-
let index = 0;
21+
const debug = useQueryLogger();
2222

2323
const mutationOptions = $derived({
2424
mutationKey: [
@@ -38,20 +38,19 @@ export const createResourceMutation = <T extends Resource, K extends keyof T>(
3838
);
3939
}
4040

41-
debugLogQuery(index, 'REQ', name, methodName, request);
41+
const logger = debug.createLogger();
42+
logger('REQ', name, methodName, request);
4243

4344
try {
44-
const result = (await clientFunc.apply(
45+
const response = (await clientFunc.apply(
4546
client.current,
4647
request
4748
)) as Promise<MutReturn>;
4849

49-
debugLogQuery(index++, 'RES', name, methodName, result);
50-
51-
return result;
50+
logger('RES', name, methodName, response);
51+
return response;
5252
} catch (error) {
53-
debugLogQuery(index++, 'ERR', name, methodName, error);
54-
53+
logger('ERR', name, methodName, error);
5554
throw error;
5655
}
5756
},

src/lib/hooks/create-resource-query.svelte.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
import type { Resource } from '@viamrobotics/sdk';
77
import { toStore, fromStore } from 'svelte/store';
88
import { usePolling } from './use-polling.svelte';
9-
import { debugLogQuery } from '../debug';
9+
import { useQueryLogger } from '../query-logger';
1010

1111
// eslint-disable-next-line @typescript-eslint/no-explicit-any
1212
export type ArgumentsType<T> = T extends (...args: infer U) => any ? U : never;
@@ -50,7 +50,7 @@ export const createResourceQuery = <T extends Resource, K extends keyof T>(
5050
const name = $derived(client.current?.name);
5151
const methodName = $derived(String(method));
5252

53-
let index = 0;
53+
const debug = useQueryLogger();
5454

5555
const queryOptions = $derived(
5656
createQueryOptions({
@@ -74,18 +74,19 @@ export const createResourceQuery = <T extends Resource, K extends keyof T>(
7474
);
7575
}
7676

77-
debugLogQuery(index, 'REQ', name, methodName, _args);
77+
const logger = debug.createLogger();
78+
logger('REQ', name, methodName, _args);
7879

7980
try {
80-
const result = (await clientFunc?.apply(
81+
const response = (await clientFunc?.apply(
8182
client.current,
8283
_args
8384
)) as Promise<ResolvedReturnType<T[K]>>;
8485

85-
debugLogQuery(index++, 'RES', name, methodName, result);
86-
return result;
86+
logger('RES', name, methodName, response);
87+
return response;
8788
} catch (error) {
88-
debugLogQuery(index++, 'ERR', name, methodName, error);
89+
logger('ERR', name, methodName, error);
8990
throw error;
9091
}
9192
},

src/lib/hooks/create-robot-mutation.svelte.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type {
66
ResolvedReturnType,
77
} from './create-resource-query.svelte';
88
import { fromStore, toStore } from 'svelte/store';
9-
import { debugLogQuery } from '$lib/debug';
9+
import { useQueryLogger } from '$lib/query-logger';
1010

1111
export const createRobotMutation = <T extends RobotClient, K extends keyof T>(
1212
client: { current: T | undefined },
@@ -17,7 +17,7 @@ export const createRobotMutation = <T extends RobotClient, K extends keyof T>(
1717

1818
const methodName = $derived(String(method));
1919

20-
let index = 0;
20+
const debug = useQueryLogger();
2121

2222
const mutationOptions = $derived({
2323
mutationKey: [
@@ -36,19 +36,19 @@ export const createRobotMutation = <T extends RobotClient, K extends keyof T>(
3636
);
3737
}
3838

39-
debugLogQuery(index, 'REQ', 'robot', methodName, request);
39+
const logger = debug.createLogger();
40+
logger('REQ', 'robot', methodName, request);
4041

4142
try {
42-
const result = (await clientFunc.apply(
43+
const response = (await clientFunc.apply(
4344
client.current,
4445
request
4546
)) as Promise<MutReturn>;
46-
debugLogQuery(index++, 'RES', 'robot', methodName, result);
4747

48-
return result;
48+
logger('RES', 'robot', methodName, response);
49+
return response;
4950
} catch (error) {
50-
debugLogQuery(index++, 'ERR', 'robot', methodName, error);
51-
51+
logger('ERR', 'robot', methodName, error);
5252
throw error;
5353
}
5454
},

src/lib/hooks/create-robot-query.svelte.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
import type { RobotClient } from '@viamrobotics/sdk';
88
import { toStore, fromStore } from 'svelte/store';
99
import { usePolling } from './use-polling.svelte';
10-
import { debugLogQuery } from '$lib/debug';
10+
import { useQueryLogger } from '$lib/query-logger';
1111

1212
// eslint-disable-next-line @typescript-eslint/no-explicit-any
1313
export type ArgumentsType<T> = T extends (...args: infer U) => any ? U : never;
@@ -50,7 +50,7 @@ export const createRobotQuery = <T extends RobotClient, K extends keyof T>(
5050

5151
const methodName = $derived(String(method));
5252

53-
let index = 0;
53+
const debug = useQueryLogger();
5454

5555
const queryOptions = $derived(
5656
createQueryOptions({
@@ -73,20 +73,19 @@ export const createRobotQuery = <T extends RobotClient, K extends keyof T>(
7373
);
7474
}
7575

76-
debugLogQuery(index, 'REQ', 'robot', methodName, _args);
76+
const logger = debug.createLogger();
77+
logger('REQ', 'robot', methodName, _args);
7778

7879
try {
79-
const result = (await clientFunc?.apply(
80+
const response = (await clientFunc?.apply(
8081
client.current,
8182
_args
8283
)) as Promise<ResolvedReturnType<T[K]>>;
8384

84-
debugLogQuery(index++, 'RES', 'robot', methodName, result);
85-
86-
return result;
85+
logger('RES', 'robot', methodName, response);
86+
return response;
8787
} catch (error) {
88-
debugLogQuery(index++, 'ERR', 'robot', methodName, error);
89-
88+
logger('ERR', 'robot', methodName, error);
9089
throw error;
9190
}
9291
},

0 commit comments

Comments
 (0)