Skip to content

Commit 473d69b

Browse files
committed
move methods to prototype
1 parent 6378a4a commit 473d69b

File tree

10 files changed

+343
-173
lines changed

10 files changed

+343
-173
lines changed

examples/vite/src/App.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ const builder = new HttpQueryBuilder().withClient(queryClient).withBaseUrl(baseU
2222
refreshable: unknown;
2323
}>();
2424

25+
console.log(builder);
26+
2527
const resetMutation = builder.withPath('/reset').withMethod('post').withUpdates('*');
2628

2729
const postsQuery = builder
@@ -34,7 +36,7 @@ const postsQuery = builder
3436
getNextPageParam: (prev, __, lastVars) => (!prev?.length ? null : { search: { page: (lastVars?.search?.page || 0) + 1 } }),
3537
});
3638

37-
const postQuery = builder
39+
const { useQuery: usePost, ...postQuery } = builder
3840
.withTags('refreshable')
3941
.withPath('/posts/:id')
4042
.withData<PostData>()
@@ -43,7 +45,8 @@ const postQuery = builder
4345
.withMiddleware(async (ctx, next) => {
4446
const res = await next(ctx);
4547
return { ...res, titleUppercase: res.title.toUpperCase() };
46-
});
48+
})
49+
.asBound();
4750

4851
const commentsQuery = builder
4952
.withTags('refreshable')
@@ -148,7 +151,7 @@ function AppCore() {
148151
}
149152

150153
function PostPage({ postId, onBack }: { postId: number; onBack: () => void }) {
151-
const post = postQuery.useQuery({ id: postId });
154+
const post = usePost({ id: postId });
152155
const comments = commentsQuery.useQuery({ search: { postId: postId } });
153156
const [showEdit, setShowEdit] = useState(false);
154157
const editPost = editPostMutation.useMutation();

packages/tanstack-query-builder/src/builder/QueryBuilder.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,11 @@ export class QueryBuilder<
110110
return this.withConfig({ paginationOptions }) as any;
111111
}
112112

113-
freeze(): QueryBuilderFrozen<TVars, TData, TError, TKey, TTags, TFlags> {
113+
asFrozen(): QueryBuilderFrozen<TVars, TData, TError, TKey, TTags, TFlags> {
114114
return this;
115115
}
116+
117+
asBound(): QueryBuilder<TVars, TData, TError, TKey, TTags, TFlags | 'bound'> {
118+
return this.withConfig({ bound: true });
119+
}
116120
}

packages/tanstack-query-builder/src/builder/QueryBuilderClient.ts

Lines changed: 51 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -24,65 +24,82 @@ export class QueryBuilderClient<
2424
private declare _pgOptions: BuilderConfig<TVars, TData, TError, TKey>['paginationOptions'];
2525
constructor(private builder: QueryBuilderFrozen<TVars, TData, TError, TKey, TTags, any>) {}
2626

27-
readonly ensureData = (vars: TVars, opts?: typeof this._options) =>
28-
this.builder.config.queryClient?.ensureQueryData(this.builder.getQueryOptions(vars, opts));
27+
ensureData(vars: TVars, opts?: typeof this._options) {
28+
return this.builder.config.queryClient?.ensureQueryData(this.builder.getQueryOptions(vars, opts));
29+
}
2930

30-
readonly ensureInfiniteData = (vars: TVars, opts?: typeof this._pgOptions) =>
31-
this.builder.config.queryClient?.ensureInfiniteQueryData(this.builder.getInfiniteQueryOptions(vars, opts));
31+
ensureInfiniteData(vars: TVars, opts?: typeof this._pgOptions) {
32+
return this.builder.config.queryClient?.ensureInfiniteQueryData(this.builder.getInfiniteQueryOptions(vars, opts));
33+
}
3234

33-
readonly refetch = (vars: TVars, filters?: TFilters, opts?: RefetchOptions) =>
34-
this.builder.config.queryClient?.refetchQueries({ queryKey: this.builder.getQueryKey(vars), ...filters }, opts);
35+
refetch(vars: TVars, filters?: TFilters, opts?: RefetchOptions) {
36+
return this.builder.config.queryClient?.refetchQueries({ queryKey: this.builder.getQueryKey(vars), ...filters }, opts);
37+
}
3538

36-
readonly fetch = (vars: TVars, opts?: typeof this._options) =>
37-
this.builder.config.queryClient?.fetchQuery(this.builder.getQueryOptions(vars, opts));
39+
fetch(vars: TVars, opts?: typeof this._options) {
40+
return this.builder.config.queryClient?.fetchQuery(this.builder.getQueryOptions(vars, opts));
41+
}
3842

39-
readonly fetchInfinite = (vars: TVars, opts?: typeof this._pgOptions) =>
40-
this.builder.config.queryClient?.fetchInfiniteQuery(this.builder.getInfiniteQueryOptions(vars, opts));
43+
fetchInfinite(vars: TVars, opts?: typeof this._pgOptions) {
44+
return this.builder.config.queryClient?.fetchInfiniteQuery(this.builder.getInfiniteQueryOptions(vars, opts));
45+
}
4146

42-
readonly isFetching = (vars: TVars, filters?: TFilters) =>
43-
this.builder.config.queryClient?.isFetching({ queryKey: this.builder.getQueryKey(vars), ...filters });
47+
isFetching(vars: TVars, filters?: TFilters) {
48+
return this.builder.config.queryClient?.isFetching({ queryKey: this.builder.getQueryKey(vars), ...filters });
49+
}
4450

45-
readonly prefetch = (vars: TVars, opts?: typeof this._options) =>
46-
this.builder.config.queryClient?.prefetchQuery(this.builder.getQueryOptions(vars, opts));
51+
prefetch(vars: TVars, opts?: typeof this._options) {
52+
return this.builder.config.queryClient?.prefetchQuery(this.builder.getQueryOptions(vars, opts));
53+
}
4754

48-
readonly prefetchInfinite = (vars: TVars, opts?: typeof this._pgOptions) =>
49-
this.builder.config.queryClient?.prefetchInfiniteQuery(this.builder.getInfiniteQueryOptions(vars, opts));
55+
prefetchInfinite(vars: TVars, opts?: typeof this._pgOptions) {
56+
return this.builder.config.queryClient?.prefetchInfiniteQuery(this.builder.getInfiniteQueryOptions(vars, opts));
57+
}
5058

51-
readonly reset = (vars: TVars, filters?: TFilters, opts?: ResetOptions) =>
52-
this.builder.config.queryClient?.resetQueries({ queryKey: this.builder.getQueryKey(vars), ...filters }, opts);
59+
reset(vars: TVars, filters?: TFilters, opts?: ResetOptions) {
60+
return this.builder.config.queryClient?.resetQueries({ queryKey: this.builder.getQueryKey(vars), ...filters }, opts);
61+
}
5362

54-
readonly remove = (vars: TVars, filters?: TFilters) =>
55-
this.builder.config.queryClient?.removeQueries({ queryKey: this.builder.getQueryKey(vars), ...filters });
63+
remove(vars: TVars, filters?: TFilters) {
64+
return this.builder.config.queryClient?.removeQueries({ queryKey: this.builder.getQueryKey(vars), ...filters });
65+
}
5666

57-
readonly cancel = (vars: TVars, filters?: TFilters, opts?: CancelOptions) =>
58-
this.builder.config.queryClient?.cancelQueries({ queryKey: this.builder.getQueryKey(vars), ...filters }, opts);
67+
cancel(vars: TVars, filters?: TFilters, opts?: CancelOptions) {
68+
return this.builder.config.queryClient?.cancelQueries({ queryKey: this.builder.getQueryKey(vars), ...filters }, opts);
69+
}
5970

60-
readonly invalidate = (vars: TVars, filters?: TFilters, opts?: InvalidateOptions) =>
61-
this.builder.config.queryClient?.invalidateQueries({ queryKey: this.builder.getQueryKey(vars), ...filters }, opts);
71+
invalidate(vars: TVars, filters?: TFilters, opts?: InvalidateOptions) {
72+
return this.builder.config.queryClient?.invalidateQueries({ queryKey: this.builder.getQueryKey(vars), ...filters }, opts);
73+
}
6274

63-
readonly getData = (vars: TVars) => this.builder.config.queryClient?.getQueryData<TData>(this.builder.getQueryKey(vars));
75+
getData(vars: TVars) {
76+
return this.builder.config.queryClient?.getQueryData<TData>(this.builder.getQueryKey(vars));
77+
}
6478

65-
readonly setData = (vars: TVars, updater: SetDataUpdater<TData>, opts?: SetDataOptions) =>
66-
this.builder.config.queryClient?.setQueryData<TData>(this.builder.getQueryKey(vars), updater, opts);
79+
setData(vars: TVars, updater: SetDataUpdater<TData>, opts?: SetDataOptions) {
80+
return this.builder.config.queryClient?.setQueryData<TData>(this.builder.getQueryKey(vars), updater, opts);
81+
}
6782

68-
readonly getState = (vars: TVars) => this.builder.config.queryClient?.getQueryState<TData, TError>(this.builder.getQueryKey(vars));
83+
getState(vars: TVars) {
84+
return this.builder.config.queryClient?.getQueryState<TData, TError>(this.builder.getQueryKey(vars));
85+
}
6986

70-
readonly getMutation = (vars?: TVars, filters?: MutationFilters<TData, TError, TVars>, queryClient?: QueryClient) => {
87+
getMutation(vars?: TVars, filters?: MutationFilters<TData, TError, TVars>, queryClient?: QueryClient) {
7188
const client = queryClient || this.builder.config.queryClient!;
7289
return client.getMutationCache().find(this.builder.getMutationFilters(vars, filters));
73-
};
90+
}
7491

75-
readonly isMutating = (vars?: TVars, filters?: MutationFilters<TData, TError, TVars>, queryClient?: QueryClient) => {
92+
isMutating(vars?: TVars, filters?: MutationFilters<TData, TError, TVars>, queryClient?: QueryClient) {
7693
const client = queryClient || this.builder.config.queryClient!;
7794
return client.isMutating(this.builder.getMutationFilters(vars, filters));
78-
};
95+
}
7996

80-
readonly mutate = async (vars: TVars, opts?: typeof this._options, queryClient?: QueryClient) => {
97+
async mutate(vars: TVars, opts?: typeof this._options, queryClient?: QueryClient) {
8198
const client = queryClient || this.builder.config.queryClient!;
8299
const options = this.builder.getMutationOptions(client, opts);
83100
const observer = new MutationObserver<TData, TError, TVars>(client, options);
84101
return observer.mutate(vars, options).finally(() => observer.reset());
85-
};
102+
}
86103
}
87104

88105
type SetDataUpdater<T> = T | undefined | ((oldData: T | undefined) => T | undefined);

0 commit comments

Comments
 (0)