Skip to content

Commit b028f84

Browse files
Merge branch 'main' into poll-1
2 parents 7712e9a + eef2e3f commit b028f84

13 files changed

+389
-254
lines changed

.changeset/large-birds-brake.md

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

.prettierignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
# Package Managers
22
package-lock.json
33
pnpm-lock.yaml
4-
yarn.lock
4+
yarn.lock
5+
.changeset/*.md

CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,26 @@
11
# @viamrobotics/svelte-sdk
22

3+
## 0.7.0
4+
5+
### Minor Changes
6+
7+
- 7e38d05: Export usePolling hook
8+
- cd4b20f: Add enable queries hook
9+
10+
## 0.6.2
11+
12+
### Patch Changes
13+
14+
- 79604ac: Export streamQueryKey factory to help with query management
15+
- eb67d3d: Fix create-resource-stream params
16+
17+
## 0.6.1
18+
19+
### Patch Changes
20+
21+
- 92cfb39: Fix tanstack stream query options
22+
- 5c0c4b4: Use new `robotClient.dial` method for connection
23+
324
## 0.6.0
425

526
### Minor Changes

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "@viamrobotics/svelte-sdk",
33
"description": "Build Svelte apps with Viam",
44
"license": "Apache-2.0",
5-
"version": "0.6.0",
5+
"version": "0.7.0",
66
"scripts": {
77
"dev": "vite dev",
88
"build": "vite build && npm run prepack",
@@ -44,7 +44,7 @@
4444
},
4545
"peerDependencies": {
4646
"@tanstack/svelte-query": "5.87.1",
47-
"@viamrobotics/sdk": ">=0.38",
47+
"@viamrobotics/sdk": ">=0.51",
4848
"svelte": ">=5"
4949
},
5050
"devDependencies": {

pnpm-lock.yaml

Lines changed: 258 additions & 227 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import type { Resource } from '@viamrobotics/sdk';
77
import { toStore, fromStore } from 'svelte/store';
88
import { usePolling } from './use-polling.svelte';
99
import { useQueryLogger } from '../query-logger';
10+
import { useEnabledQueries } from './use-enabled-queries.svelte';
1011

1112
// eslint-disable-next-line @typescript-eslint/no-explicit-any
1213
export type ArgumentsType<T> = T extends (...args: infer U) => any ? U : never;
@@ -36,6 +37,7 @@ export const createResourceQuery = <T extends Resource, K extends keyof T>(
3637
| [options?: (() => QueryOptions) | QueryOptions]
3738
): { current: QueryObserverResult<ResolvedReturnType<T[K]>> } => {
3839
const debug = useQueryLogger();
40+
const enabledQueries = useEnabledQueries();
3941

4042
let [args, options] = additional;
4143

@@ -62,7 +64,10 @@ export const createResourceQuery = <T extends Resource, K extends keyof T>(
6264
methodName,
6365
...(_args ? [_args] : []),
6466
],
65-
enabled: client.current !== undefined && _options?.enabled !== false,
67+
enabled:
68+
client.current !== undefined &&
69+
_options?.enabled !== false &&
70+
enabledQueries.resourceQueries,
6671
retry: false,
6772
queryFn: async () => {
6873
const clientFunc = client.current?.[method];

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

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
import type { Resource } from '@viamrobotics/sdk';
88
import { toStore, fromStore } from 'svelte/store';
99
import { useQueryLogger } from '../query-logger';
10+
import { useEnabledQueries } from './use-enabled-queries.svelte';
1011

1112
// eslint-disable-next-line @typescript-eslint/no-explicit-any
1213
export type ArgumentsType<T> = T extends (...args: infer U) => any ? U : never;
@@ -22,12 +23,27 @@ export type StreamItemType<T> = T extends (
2223
interface QueryOptions {
2324
// enabled defaults to true if unspecified
2425
enabled?: boolean;
26+
// refetchMode defaults to 'reset' if unspecified
2527
refetchMode?: 'append' | 'reset' | 'replace';
26-
maxChunks?: number;
2728
}
2829

2930
type QueryResult<U> = QueryObserverResult<U[], Error>;
3031

32+
export const streamQueryKey = (
33+
partID: string,
34+
name: string | undefined,
35+
methodName: string,
36+
args?: QueryOptions | unknown
37+
) => [
38+
'viam-svelte-sdk',
39+
'partID',
40+
partID,
41+
'resource',
42+
name,
43+
methodName,
44+
...(args ? [args] : []),
45+
];
46+
3147
export const createResourceStream = <T extends Resource, K extends keyof T>(
3248
client: { current: T | undefined },
3349
method: K,
@@ -39,6 +55,7 @@ export const createResourceStream = <T extends Resource, K extends keyof T>(
3955
| [options?: (() => QueryOptions) | QueryOptions]
4056
): { current: QueryResult<StreamItemType<T[K]>> } => {
4157
const debug = useQueryLogger();
58+
const enabledQueries = useEnabledQueries();
4259

4360
let [args, options] = additional;
4461

@@ -54,15 +71,9 @@ export const createResourceStream = <T extends Resource, K extends keyof T>(
5471
const _args = $derived(typeof args === 'function' ? args() : args);
5572
const name = $derived(client.current?.name);
5673
const methodName = $derived(String(method));
57-
const queryKey = $derived([
58-
'viam-svelte-sdk',
59-
'partID',
60-
(client.current as T & { partID: string })?.partID,
61-
'resource',
62-
name,
63-
methodName,
64-
...(_args ? [_args] : []),
65-
]);
74+
const refetchMode = $derived(_options?.refetchMode ?? 'reset');
75+
const partID = $derived((client.current as T & { partID: string })?.partID);
76+
const queryKey = $derived(streamQueryKey(partID, name, methodName, _args));
6677

6778
function processStream() {
6879
const clientFunc = client.current?.[method];
@@ -94,10 +105,13 @@ export const createResourceStream = <T extends Resource, K extends keyof T>(
94105
const queryOptions = $derived(
95106
createQueryOptions({
96107
queryKey,
97-
enabled: client.current !== undefined && _options?.enabled !== false,
108+
enabled:
109+
client.current !== undefined &&
110+
_options?.enabled !== false &&
111+
enabledQueries.resourceQueries,
98112
queryFn: streamedQuery<StreamItemType<T[K]>>({
99113
streamFn: processStream,
100-
..._options,
114+
refetchMode,
101115
}),
102116
})
103117
);

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import type { RobotClient } from '@viamrobotics/sdk';
88
import { toStore, fromStore } from 'svelte/store';
99
import { usePolling } from './use-polling.svelte';
1010
import { useQueryLogger } from '$lib/query-logger';
11+
import { useEnabledQueries } from './use-enabled-queries.svelte';
1112

1213
// eslint-disable-next-line @typescript-eslint/no-explicit-any
1314
export type ArgumentsType<T> = T extends (...args: infer U) => any ? U : never;
@@ -37,6 +38,7 @@ export const createRobotQuery = <T extends RobotClient, K extends keyof T>(
3738
| [options?: (() => QueryOptions) | QueryOptions]
3839
): { current: QueryObserverResult<ResolvedReturnType<T[K]>> } => {
3940
const debug = useQueryLogger();
41+
const enabledQueries = useEnabledQueries();
4042
let [args, options] = additional;
4143

4244
if (options === undefined && args !== undefined) {
@@ -60,7 +62,10 @@ export const createRobotQuery = <T extends RobotClient, K extends keyof T>(
6062
methodName,
6163
...(_args ? [_args] : []),
6264
],
63-
enabled: client.current !== undefined && _options?.enabled !== false,
65+
enabled:
66+
client.current !== undefined &&
67+
_options?.enabled !== false &&
68+
enabledQueries.robotQueries,
6469
retry: false,
6570
queryFn: async () => {
6671
const clientFunc = client.current?.[method];

src/lib/hooks/create-stream-client.svelte.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@ import {
88
} from '@tanstack/svelte-query';
99
import { fromStore, toStore } from 'svelte/store';
1010
import { useQueryLogger } from '../query-logger';
11+
import { useEnabledQueries } from './use-enabled-queries.svelte';
1112

1213
export const createStreamClient = (
1314
partID: () => string,
1415
resourceName: () => string
1516
) => {
1617
const debug = useQueryLogger();
18+
const enabledQueries = useEnabledQueries();
1719
let mediaStream = $state.raw<MediaStream | null>(null);
1820
let error = $state<Error>();
1921

@@ -61,7 +63,7 @@ export const createStreamClient = (
6163
'stream',
6264
'getOptions',
6365
],
64-
enabled: streamClient !== undefined,
66+
enabled: streamClient !== undefined && enabledQueries.streams,
6567
retry: false,
6668
refetchOnWindowFocus: false,
6769
queryFn: async () => {

src/lib/hooks/machine-status.svelte.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import type { PartID } from '$lib/part';
1010
import type { RobotClient } from '@viamrobotics/sdk';
1111
import { usePolling } from './use-polling.svelte';
1212
import { useQueryLogger } from '$lib/query-logger';
13+
import { useEnabledQueries } from './use-enabled-queries.svelte';
1314

1415
const key = Symbol('machine-status-context');
1516

@@ -23,11 +24,12 @@ interface Context {
2324
export const provideMachineStatusContext = (refetchInterval: () => number) => {
2425
const clients = useRobotClients();
2526
const debug = useQueryLogger();
27+
const enabledQueries = useEnabledQueries();
2628

2729
const options = $derived(
2830
Object.entries(clients.current).map(([partID, client]) => {
2931
return queryOptions({
30-
enabled: client !== undefined,
32+
enabled: client !== undefined && enabledQueries.machineStatus,
3133
queryKey: [
3234
'viam-svelte-sdk',
3335
'partID',

0 commit comments

Comments
 (0)