@zenstackhq/tanstack-query 1.0.0-beta.8 → 1.0.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.
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __spreadValues = (a, b) => {
12
+ for (var prop in b || (b = {}))
13
+ if (__hasOwnProp.call(b, prop))
14
+ __defNormalProp(a, prop, b[prop]);
15
+ if (__getOwnPropSymbols)
16
+ for (var prop of __getOwnPropSymbols(b)) {
17
+ if (__propIsEnum.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ }
20
+ return a;
21
+ };
22
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
+ var __export = (target, all) => {
24
+ for (var name in all)
25
+ __defProp(target, name, { get: all[name], enumerable: true });
26
+ };
27
+ var __copyProps = (to, from, except, desc) => {
28
+ if (from && typeof from === "object" || typeof from === "function") {
29
+ for (let key of __getOwnPropNames(from))
30
+ if (!__hasOwnProp.call(to, key) && key !== except)
31
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
32
+ }
33
+ return to;
34
+ };
35
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
36
+ var __async = (__this, __arguments, generator) => {
37
+ return new Promise((resolve, reject) => {
38
+ var fulfilled = (value) => {
39
+ try {
40
+ step(generator.next(value));
41
+ } catch (e) {
42
+ reject(e);
43
+ }
44
+ };
45
+ var rejected = (value) => {
46
+ try {
47
+ step(generator.throw(value));
48
+ } catch (e) {
49
+ reject(e);
50
+ }
51
+ };
52
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
53
+ step((generator = generator.apply(__this, __arguments)).next());
54
+ });
55
+ };
56
+
57
+ // src/runtime/react.ts
58
+ var react_exports = {};
59
+ __export(react_exports, {
60
+ Provider: () => Provider,
61
+ RequestHandlerContext: () => RequestHandlerContext,
62
+ deleteMutation: () => deleteMutation,
63
+ infiniteQuery: () => infiniteQuery,
64
+ postMutation: () => postMutation,
65
+ putMutation: () => putMutation,
66
+ query: () => query
67
+ });
68
+ module.exports = __toCommonJS(react_exports);
69
+ var import_react_query = require("@tanstack/react-query");
70
+ var import_react = require("react");
71
+
72
+ // src/runtime/common.ts
73
+ var import_browser = require("@zenstackhq/runtime/browser");
74
+ var DEFAULT_QUERY_ENDPOINT = "/api/model";
75
+ var QUERY_KEY_PREFIX = "zenstack:";
76
+ function fetcher(url, options, fetch, checkReadBack) {
77
+ return __async(this, null, function* () {
78
+ var _a, _b, _c;
79
+ const _fetch = fetch != null ? fetch : window.fetch;
80
+ const res = yield _fetch(url, options);
81
+ if (!res.ok) {
82
+ const errData = unmarshal(yield res.text());
83
+ if (checkReadBack !== false && ((_a = errData.error) == null ? void 0 : _a.prisma) && ((_b = errData.error) == null ? void 0 : _b.code) === "P2004" && ((_c = errData.error) == null ? void 0 : _c.reason) === "RESULT_NOT_READABLE") {
84
+ return void 0;
85
+ }
86
+ const error = new Error(
87
+ "An error occurred while fetching the data."
88
+ );
89
+ error.info = errData.error;
90
+ error.status = res.status;
91
+ throw error;
92
+ }
93
+ const textResult = yield res.text();
94
+ try {
95
+ return unmarshal(textResult).data;
96
+ } catch (err) {
97
+ console.error(`Unable to deserialize data:`, textResult);
98
+ throw err;
99
+ }
100
+ });
101
+ }
102
+ function marshal(value) {
103
+ const { data, meta } = (0, import_browser.serialize)(value);
104
+ if (meta) {
105
+ return JSON.stringify(__spreadProps(__spreadValues({}, data), { meta: { serialization: meta } }));
106
+ } else {
107
+ return JSON.stringify(data);
108
+ }
109
+ }
110
+ function unmarshal(value) {
111
+ var _a;
112
+ const parsed = JSON.parse(value);
113
+ if (parsed.data && ((_a = parsed.meta) == null ? void 0 : _a.serialization)) {
114
+ const deserializedData = (0, import_browser.deserialize)(parsed.data, parsed.meta.serialization);
115
+ return __spreadProps(__spreadValues({}, parsed), { data: deserializedData });
116
+ } else {
117
+ return parsed;
118
+ }
119
+ }
120
+ function makeUrl(url, args) {
121
+ if (!args) {
122
+ return url;
123
+ }
124
+ const { data, meta } = (0, import_browser.serialize)(args);
125
+ let result = `${url}?q=${encodeURIComponent(JSON.stringify(data))}`;
126
+ if (meta) {
127
+ result += `&meta=${encodeURIComponent(JSON.stringify({ serialization: meta }))}`;
128
+ }
129
+ return result;
130
+ }
131
+
132
+ // src/runtime/react.ts
133
+ var RequestHandlerContext = (0, import_react.createContext)({
134
+ endpoint: DEFAULT_QUERY_ENDPOINT,
135
+ fetch: void 0
136
+ });
137
+ var Provider = RequestHandlerContext.Provider;
138
+ function query(model, url, args, options, fetch) {
139
+ const reqUrl = makeUrl(url, args);
140
+ return (0, import_react_query.useQuery)(__spreadValues({
141
+ queryKey: [QUERY_KEY_PREFIX + model, url, args],
142
+ queryFn: () => fetcher(reqUrl, void 0, fetch, false)
143
+ }, options));
144
+ }
145
+ function infiniteQuery(model, url, args, options, fetch) {
146
+ return (0, import_react_query.useInfiniteQuery)(__spreadValues({
147
+ queryKey: [QUERY_KEY_PREFIX + model, url, args],
148
+ queryFn: ({ pageParam }) => {
149
+ return fetcher(makeUrl(url, pageParam != null ? pageParam : args), void 0, fetch, false);
150
+ }
151
+ }, options));
152
+ }
153
+ function postMutation(model, url, options, fetch, invalidateQueries = true, checkReadBack) {
154
+ const queryClient = (0, import_react_query.useQueryClient)();
155
+ const mutationFn = (data) => fetcher(
156
+ url,
157
+ {
158
+ method: "POST",
159
+ headers: {
160
+ "content-type": "application/json"
161
+ },
162
+ body: marshal(data)
163
+ },
164
+ fetch,
165
+ checkReadBack
166
+ );
167
+ const finalOptions = mergeOptions(model, options, invalidateQueries, mutationFn, queryClient);
168
+ const mutation = (0, import_react_query.useMutation)(finalOptions);
169
+ return mutation;
170
+ }
171
+ function putMutation(model, url, options, fetch, invalidateQueries = true, checkReadBack) {
172
+ const queryClient = (0, import_react_query.useQueryClient)();
173
+ const mutationFn = (data) => fetcher(
174
+ url,
175
+ {
176
+ method: "PUT",
177
+ headers: {
178
+ "content-type": "application/json"
179
+ },
180
+ body: marshal(data)
181
+ },
182
+ fetch,
183
+ checkReadBack
184
+ );
185
+ const finalOptions = mergeOptions(model, options, invalidateQueries, mutationFn, queryClient);
186
+ const mutation = (0, import_react_query.useMutation)(finalOptions);
187
+ return mutation;
188
+ }
189
+ function deleteMutation(model, url, options, fetch, invalidateQueries = true, checkReadBack) {
190
+ const queryClient = (0, import_react_query.useQueryClient)();
191
+ const mutationFn = (data) => fetcher(
192
+ makeUrl(url, data),
193
+ {
194
+ method: "DELETE"
195
+ },
196
+ fetch,
197
+ checkReadBack
198
+ );
199
+ const finalOptions = mergeOptions(model, options, invalidateQueries, mutationFn, queryClient);
200
+ const mutation = (0, import_react_query.useMutation)(finalOptions);
201
+ return mutation;
202
+ }
203
+ function mergeOptions(model, options, invalidateQueries, mutationFn, queryClient) {
204
+ const result = __spreadProps(__spreadValues({}, options), { mutationFn });
205
+ if ((options == null ? void 0 : options.onSuccess) || invalidateQueries) {
206
+ result.onSuccess = (...args) => {
207
+ var _a;
208
+ if (invalidateQueries) {
209
+ queryClient.invalidateQueries([QUERY_KEY_PREFIX + model]);
210
+ }
211
+ return (_a = options == null ? void 0 : options.onSuccess) == null ? void 0 : _a.call(options, ...args);
212
+ };
213
+ }
214
+ return result;
215
+ }
216
+ // Annotate the CommonJS export names for ESM import in node:
217
+ 0 && (module.exports = {
218
+ Provider,
219
+ RequestHandlerContext,
220
+ deleteMutation,
221
+ infiniteQuery,
222
+ postMutation,
223
+ putMutation,
224
+ query
225
+ });
226
+ //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/runtime/react.ts","../../src/runtime/common.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n useInfiniteQuery,\n useMutation,\n useQuery,\n useQueryClient,\n type MutateFunction,\n type QueryClient,\n type UseInfiniteQueryOptions,\n type UseMutationOptions,\n type UseQueryOptions,\n} from '@tanstack/react-query';\nimport { createContext } from 'react';\nimport {\n DEFAULT_QUERY_ENDPOINT,\n FetchFn,\n QUERY_KEY_PREFIX,\n fetcher,\n makeUrl,\n marshal,\n type APIContext,\n} from './common';\n\n/**\n * Context for configuring react hooks.\n */\nexport const RequestHandlerContext = createContext<APIContext>({\n endpoint: DEFAULT_QUERY_ENDPOINT,\n fetch: undefined,\n});\n\n/**\n * Context provider.\n */\nexport const Provider = RequestHandlerContext.Provider;\n\n/**\n * Creates a react-query query.\n *\n * @param model The name of the model under query.\n * @param url The request URL.\n * @param args The request args object, URL-encoded and appended as \"?q=\" parameter\n * @param options The react-query options object\n * @returns useQuery hook\n */\nexport function query<R>(model: string, url: string, args?: unknown, options?: UseQueryOptions<R>, fetch?: FetchFn) {\n const reqUrl = makeUrl(url, args);\n return useQuery<R>({\n queryKey: [QUERY_KEY_PREFIX + model, url, args],\n queryFn: () => fetcher<R, false>(reqUrl, undefined, fetch, false),\n ...options,\n });\n}\n\n/**\n * Creates a react-query infinite query.\n *\n * @param model The name of the model under query.\n * @param url The request URL.\n * @param args The initial request args object, URL-encoded and appended as \"?q=\" parameter\n * @param options The react-query infinite query options object\n * @returns useInfiniteQuery hook\n */\nexport function infiniteQuery<R>(\n model: string,\n url: string,\n args?: unknown,\n options?: UseInfiniteQueryOptions<R>,\n fetch?: FetchFn\n) {\n return useInfiniteQuery<R>({\n queryKey: [QUERY_KEY_PREFIX + model, url, args],\n queryFn: ({ pageParam }) => {\n return fetcher<R, false>(makeUrl(url, pageParam ?? args), undefined, fetch, false);\n },\n ...options,\n });\n}\n\n/**\n * Creates a POST mutation with react-query.\n *\n * @param model The name of the model under mutation.\n * @param url The request URL.\n * @param options The react-query options.\n * @param invalidateQueries Whether to invalidate queries after mutation.\n * @returns useMutation hooks\n */\nexport function postMutation<T, R = any, C extends boolean = boolean, Result = C extends true ? R | undefined : R>(\n model: string,\n url: string,\n options?: Omit<UseMutationOptions<Result, unknown, T>, 'mutationFn'>,\n fetch?: FetchFn,\n invalidateQueries = true,\n checkReadBack?: C\n) {\n const queryClient = useQueryClient();\n const mutationFn = (data: any) =>\n fetcher<R, C>(\n url,\n {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n },\n body: marshal(data),\n },\n fetch,\n checkReadBack\n ) as Promise<Result>;\n\n const finalOptions = mergeOptions<T, Result>(model, options, invalidateQueries, mutationFn, queryClient);\n const mutation = useMutation<Result, unknown, T>(finalOptions);\n return mutation;\n}\n\n/**\n * Creates a PUT mutation with react-query.\n *\n * @param model The name of the model under mutation.\n * @param url The request URL.\n * @param options The react-query options.\n * @param invalidateQueries Whether to invalidate queries after mutation.\n * @returns useMutation hooks\n */\nexport function putMutation<T, R = any, C extends boolean = boolean, Result = C extends true ? R | undefined : R>(\n model: string,\n url: string,\n options?: Omit<UseMutationOptions<Result, unknown, T>, 'mutationFn'>,\n fetch?: FetchFn,\n invalidateQueries = true,\n checkReadBack?: C\n) {\n const queryClient = useQueryClient();\n const mutationFn = (data: any) =>\n fetcher<R, C>(\n url,\n {\n method: 'PUT',\n headers: {\n 'content-type': 'application/json',\n },\n body: marshal(data),\n },\n fetch,\n checkReadBack\n ) as Promise<Result>;\n\n const finalOptions = mergeOptions<T, Result>(model, options, invalidateQueries, mutationFn, queryClient);\n const mutation = useMutation<Result, unknown, T>(finalOptions);\n return mutation;\n}\n\n/**\n * Creates a DELETE mutation with react-query.\n *\n * @param model The name of the model under mutation.\n * @param url The request URL.\n * @param options The react-query options.\n * @param invalidateQueries Whether to invalidate queries after mutation.\n * @returns useMutation hooks\n */\nexport function deleteMutation<T, R = any, C extends boolean = boolean, Result = C extends true ? R | undefined : R>(\n model: string,\n url: string,\n options?: Omit<UseMutationOptions<Result, unknown, T>, 'mutationFn'>,\n fetch?: FetchFn,\n invalidateQueries = true,\n checkReadBack?: C\n) {\n const queryClient = useQueryClient();\n const mutationFn = (data: any) =>\n fetcher<R, C>(\n makeUrl(url, data),\n {\n method: 'DELETE',\n },\n fetch,\n checkReadBack\n ) as Promise<Result>;\n\n const finalOptions = mergeOptions<T, Result>(model, options, invalidateQueries, mutationFn, queryClient);\n const mutation = useMutation<Result, unknown, T>(finalOptions);\n return mutation;\n}\n\nfunction mergeOptions<T, R = any>(\n model: string,\n options: Omit<UseMutationOptions<R, unknown, T, unknown>, 'mutationFn'> | undefined,\n invalidateQueries: boolean,\n mutationFn: MutateFunction<R, unknown, T>,\n queryClient: QueryClient\n): UseMutationOptions<R, unknown, T, unknown> {\n const result = { ...options, mutationFn };\n if (options?.onSuccess || invalidateQueries) {\n result.onSuccess = (...args) => {\n if (invalidateQueries) {\n queryClient.invalidateQueries([QUERY_KEY_PREFIX + model]);\n }\n return options?.onSuccess?.(...args);\n };\n }\n return result;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { serialize, deserialize } from '@zenstackhq/runtime/browser';\n\n/**\n * The default query endpoint.\n */\nexport const DEFAULT_QUERY_ENDPOINT = '/api/model';\n\n/**\n * Prefix for react-query keys.\n */\nexport const QUERY_KEY_PREFIX = 'zenstack:';\n\n/**\n * Function signature for `fetch`.\n */\nexport type FetchFn = (url: string, options?: RequestInit) => Promise<Response>;\n\n/**\n * Context type for configuring the hooks.\n */\nexport type APIContext = {\n /**\n * The endpoint to use for the queries.\n */\n endpoint: string;\n\n /**\n * A custom fetch function for sending the HTTP requests.\n */\n fetch?: FetchFn;\n};\n\nexport async function fetcher<R, C extends boolean>(\n url: string,\n options?: RequestInit,\n fetch?: FetchFn,\n checkReadBack?: C\n): Promise<C extends true ? R | undefined : R> {\n const _fetch = fetch ?? window.fetch;\n const res = await _fetch(url, options);\n if (!res.ok) {\n const errData = unmarshal(await res.text());\n if (\n checkReadBack !== false &&\n errData.error?.prisma &&\n errData.error?.code === 'P2004' &&\n errData.error?.reason === 'RESULT_NOT_READABLE'\n ) {\n // policy doesn't allow mutation result to be read back, just return undefined\n return undefined as any;\n }\n const error: Error & { info?: unknown; status?: number } = new Error(\n 'An error occurred while fetching the data.'\n );\n error.info = errData.error;\n error.status = res.status;\n throw error;\n }\n\n const textResult = await res.text();\n try {\n return unmarshal(textResult).data as R;\n } catch (err) {\n console.error(`Unable to deserialize data:`, textResult);\n throw err;\n }\n}\n\nexport function marshal(value: unknown) {\n const { data, meta } = serialize(value);\n if (meta) {\n return JSON.stringify({ ...(data as any), meta: { serialization: meta } });\n } else {\n return JSON.stringify(data);\n }\n}\n\nexport function unmarshal(value: string) {\n const parsed = JSON.parse(value);\n if (parsed.data && parsed.meta?.serialization) {\n const deserializedData = deserialize(parsed.data, parsed.meta.serialization);\n return { ...parsed, data: deserializedData };\n } else {\n return parsed;\n }\n}\n\nexport function makeUrl(url: string, args: unknown) {\n if (!args) {\n return url;\n }\n\n const { data, meta } = serialize(args);\n let result = `${url}?q=${encodeURIComponent(JSON.stringify(data))}`;\n if (meta) {\n result += `&meta=${encodeURIComponent(JSON.stringify({ serialization: meta }))}`;\n }\n return result;\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,203 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __async = (__this, __arguments, generator) => {
21
+ return new Promise((resolve, reject) => {
22
+ var fulfilled = (value) => {
23
+ try {
24
+ step(generator.next(value));
25
+ } catch (e) {
26
+ reject(e);
27
+ }
28
+ };
29
+ var rejected = (value) => {
30
+ try {
31
+ step(generator.throw(value));
32
+ } catch (e) {
33
+ reject(e);
34
+ }
35
+ };
36
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
37
+ step((generator = generator.apply(__this, __arguments)).next());
38
+ });
39
+ };
40
+
41
+ // src/runtime/react.ts
42
+ import {
43
+ useInfiniteQuery,
44
+ useMutation,
45
+ useQuery,
46
+ useQueryClient
47
+ } from "@tanstack/react-query";
48
+ import { createContext } from "react";
49
+
50
+ // src/runtime/common.ts
51
+ import { serialize, deserialize } from "@zenstackhq/runtime/browser";
52
+ var DEFAULT_QUERY_ENDPOINT = "/api/model";
53
+ var QUERY_KEY_PREFIX = "zenstack:";
54
+ function fetcher(url, options, fetch, checkReadBack) {
55
+ return __async(this, null, function* () {
56
+ var _a, _b, _c;
57
+ const _fetch = fetch != null ? fetch : window.fetch;
58
+ const res = yield _fetch(url, options);
59
+ if (!res.ok) {
60
+ const errData = unmarshal(yield res.text());
61
+ if (checkReadBack !== false && ((_a = errData.error) == null ? void 0 : _a.prisma) && ((_b = errData.error) == null ? void 0 : _b.code) === "P2004" && ((_c = errData.error) == null ? void 0 : _c.reason) === "RESULT_NOT_READABLE") {
62
+ return void 0;
63
+ }
64
+ const error = new Error(
65
+ "An error occurred while fetching the data."
66
+ );
67
+ error.info = errData.error;
68
+ error.status = res.status;
69
+ throw error;
70
+ }
71
+ const textResult = yield res.text();
72
+ try {
73
+ return unmarshal(textResult).data;
74
+ } catch (err) {
75
+ console.error(`Unable to deserialize data:`, textResult);
76
+ throw err;
77
+ }
78
+ });
79
+ }
80
+ function marshal(value) {
81
+ const { data, meta } = serialize(value);
82
+ if (meta) {
83
+ return JSON.stringify(__spreadProps(__spreadValues({}, data), { meta: { serialization: meta } }));
84
+ } else {
85
+ return JSON.stringify(data);
86
+ }
87
+ }
88
+ function unmarshal(value) {
89
+ var _a;
90
+ const parsed = JSON.parse(value);
91
+ if (parsed.data && ((_a = parsed.meta) == null ? void 0 : _a.serialization)) {
92
+ const deserializedData = deserialize(parsed.data, parsed.meta.serialization);
93
+ return __spreadProps(__spreadValues({}, parsed), { data: deserializedData });
94
+ } else {
95
+ return parsed;
96
+ }
97
+ }
98
+ function makeUrl(url, args) {
99
+ if (!args) {
100
+ return url;
101
+ }
102
+ const { data, meta } = serialize(args);
103
+ let result = `${url}?q=${encodeURIComponent(JSON.stringify(data))}`;
104
+ if (meta) {
105
+ result += `&meta=${encodeURIComponent(JSON.stringify({ serialization: meta }))}`;
106
+ }
107
+ return result;
108
+ }
109
+
110
+ // src/runtime/react.ts
111
+ var RequestHandlerContext = createContext({
112
+ endpoint: DEFAULT_QUERY_ENDPOINT,
113
+ fetch: void 0
114
+ });
115
+ var Provider = RequestHandlerContext.Provider;
116
+ function query(model, url, args, options, fetch) {
117
+ const reqUrl = makeUrl(url, args);
118
+ return useQuery(__spreadValues({
119
+ queryKey: [QUERY_KEY_PREFIX + model, url, args],
120
+ queryFn: () => fetcher(reqUrl, void 0, fetch, false)
121
+ }, options));
122
+ }
123
+ function infiniteQuery(model, url, args, options, fetch) {
124
+ return useInfiniteQuery(__spreadValues({
125
+ queryKey: [QUERY_KEY_PREFIX + model, url, args],
126
+ queryFn: ({ pageParam }) => {
127
+ return fetcher(makeUrl(url, pageParam != null ? pageParam : args), void 0, fetch, false);
128
+ }
129
+ }, options));
130
+ }
131
+ function postMutation(model, url, options, fetch, invalidateQueries = true, checkReadBack) {
132
+ const queryClient = useQueryClient();
133
+ const mutationFn = (data) => fetcher(
134
+ url,
135
+ {
136
+ method: "POST",
137
+ headers: {
138
+ "content-type": "application/json"
139
+ },
140
+ body: marshal(data)
141
+ },
142
+ fetch,
143
+ checkReadBack
144
+ );
145
+ const finalOptions = mergeOptions(model, options, invalidateQueries, mutationFn, queryClient);
146
+ const mutation = useMutation(finalOptions);
147
+ return mutation;
148
+ }
149
+ function putMutation(model, url, options, fetch, invalidateQueries = true, checkReadBack) {
150
+ const queryClient = useQueryClient();
151
+ const mutationFn = (data) => fetcher(
152
+ url,
153
+ {
154
+ method: "PUT",
155
+ headers: {
156
+ "content-type": "application/json"
157
+ },
158
+ body: marshal(data)
159
+ },
160
+ fetch,
161
+ checkReadBack
162
+ );
163
+ const finalOptions = mergeOptions(model, options, invalidateQueries, mutationFn, queryClient);
164
+ const mutation = useMutation(finalOptions);
165
+ return mutation;
166
+ }
167
+ function deleteMutation(model, url, options, fetch, invalidateQueries = true, checkReadBack) {
168
+ const queryClient = useQueryClient();
169
+ const mutationFn = (data) => fetcher(
170
+ makeUrl(url, data),
171
+ {
172
+ method: "DELETE"
173
+ },
174
+ fetch,
175
+ checkReadBack
176
+ );
177
+ const finalOptions = mergeOptions(model, options, invalidateQueries, mutationFn, queryClient);
178
+ const mutation = useMutation(finalOptions);
179
+ return mutation;
180
+ }
181
+ function mergeOptions(model, options, invalidateQueries, mutationFn, queryClient) {
182
+ const result = __spreadProps(__spreadValues({}, options), { mutationFn });
183
+ if ((options == null ? void 0 : options.onSuccess) || invalidateQueries) {
184
+ result.onSuccess = (...args) => {
185
+ var _a;
186
+ if (invalidateQueries) {
187
+ queryClient.invalidateQueries([QUERY_KEY_PREFIX + model]);
188
+ }
189
+ return (_a = options == null ? void 0 : options.onSuccess) == null ? void 0 : _a.call(options, ...args);
190
+ };
191
+ }
192
+ return result;
193
+ }
194
+ export {
195
+ Provider,
196
+ RequestHandlerContext,
197
+ deleteMutation,
198
+ infiniteQuery,
199
+ postMutation,
200
+ putMutation,
201
+ query
202
+ };
203
+ //# sourceMappingURL=react.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/runtime/react.ts","../../src/runtime/common.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n useInfiniteQuery,\n useMutation,\n useQuery,\n useQueryClient,\n type MutateFunction,\n type QueryClient,\n type UseInfiniteQueryOptions,\n type UseMutationOptions,\n type UseQueryOptions,\n} from '@tanstack/react-query';\nimport { createContext } from 'react';\nimport {\n DEFAULT_QUERY_ENDPOINT,\n FetchFn,\n QUERY_KEY_PREFIX,\n fetcher,\n makeUrl,\n marshal,\n type APIContext,\n} from './common';\n\n/**\n * Context for configuring react hooks.\n */\nexport const RequestHandlerContext = createContext<APIContext>({\n endpoint: DEFAULT_QUERY_ENDPOINT,\n fetch: undefined,\n});\n\n/**\n * Context provider.\n */\nexport const Provider = RequestHandlerContext.Provider;\n\n/**\n * Creates a react-query query.\n *\n * @param model The name of the model under query.\n * @param url The request URL.\n * @param args The request args object, URL-encoded and appended as \"?q=\" parameter\n * @param options The react-query options object\n * @returns useQuery hook\n */\nexport function query<R>(model: string, url: string, args?: unknown, options?: UseQueryOptions<R>, fetch?: FetchFn) {\n const reqUrl = makeUrl(url, args);\n return useQuery<R>({\n queryKey: [QUERY_KEY_PREFIX + model, url, args],\n queryFn: () => fetcher<R, false>(reqUrl, undefined, fetch, false),\n ...options,\n });\n}\n\n/**\n * Creates a react-query infinite query.\n *\n * @param model The name of the model under query.\n * @param url The request URL.\n * @param args The initial request args object, URL-encoded and appended as \"?q=\" parameter\n * @param options The react-query infinite query options object\n * @returns useInfiniteQuery hook\n */\nexport function infiniteQuery<R>(\n model: string,\n url: string,\n args?: unknown,\n options?: UseInfiniteQueryOptions<R>,\n fetch?: FetchFn\n) {\n return useInfiniteQuery<R>({\n queryKey: [QUERY_KEY_PREFIX + model, url, args],\n queryFn: ({ pageParam }) => {\n return fetcher<R, false>(makeUrl(url, pageParam ?? args), undefined, fetch, false);\n },\n ...options,\n });\n}\n\n/**\n * Creates a POST mutation with react-query.\n *\n * @param model The name of the model under mutation.\n * @param url The request URL.\n * @param options The react-query options.\n * @param invalidateQueries Whether to invalidate queries after mutation.\n * @returns useMutation hooks\n */\nexport function postMutation<T, R = any, C extends boolean = boolean, Result = C extends true ? R | undefined : R>(\n model: string,\n url: string,\n options?: Omit<UseMutationOptions<Result, unknown, T>, 'mutationFn'>,\n fetch?: FetchFn,\n invalidateQueries = true,\n checkReadBack?: C\n) {\n const queryClient = useQueryClient();\n const mutationFn = (data: any) =>\n fetcher<R, C>(\n url,\n {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n },\n body: marshal(data),\n },\n fetch,\n checkReadBack\n ) as Promise<Result>;\n\n const finalOptions = mergeOptions<T, Result>(model, options, invalidateQueries, mutationFn, queryClient);\n const mutation = useMutation<Result, unknown, T>(finalOptions);\n return mutation;\n}\n\n/**\n * Creates a PUT mutation with react-query.\n *\n * @param model The name of the model under mutation.\n * @param url The request URL.\n * @param options The react-query options.\n * @param invalidateQueries Whether to invalidate queries after mutation.\n * @returns useMutation hooks\n */\nexport function putMutation<T, R = any, C extends boolean = boolean, Result = C extends true ? R | undefined : R>(\n model: string,\n url: string,\n options?: Omit<UseMutationOptions<Result, unknown, T>, 'mutationFn'>,\n fetch?: FetchFn,\n invalidateQueries = true,\n checkReadBack?: C\n) {\n const queryClient = useQueryClient();\n const mutationFn = (data: any) =>\n fetcher<R, C>(\n url,\n {\n method: 'PUT',\n headers: {\n 'content-type': 'application/json',\n },\n body: marshal(data),\n },\n fetch,\n checkReadBack\n ) as Promise<Result>;\n\n const finalOptions = mergeOptions<T, Result>(model, options, invalidateQueries, mutationFn, queryClient);\n const mutation = useMutation<Result, unknown, T>(finalOptions);\n return mutation;\n}\n\n/**\n * Creates a DELETE mutation with react-query.\n *\n * @param model The name of the model under mutation.\n * @param url The request URL.\n * @param options The react-query options.\n * @param invalidateQueries Whether to invalidate queries after mutation.\n * @returns useMutation hooks\n */\nexport function deleteMutation<T, R = any, C extends boolean = boolean, Result = C extends true ? R | undefined : R>(\n model: string,\n url: string,\n options?: Omit<UseMutationOptions<Result, unknown, T>, 'mutationFn'>,\n fetch?: FetchFn,\n invalidateQueries = true,\n checkReadBack?: C\n) {\n const queryClient = useQueryClient();\n const mutationFn = (data: any) =>\n fetcher<R, C>(\n makeUrl(url, data),\n {\n method: 'DELETE',\n },\n fetch,\n checkReadBack\n ) as Promise<Result>;\n\n const finalOptions = mergeOptions<T, Result>(model, options, invalidateQueries, mutationFn, queryClient);\n const mutation = useMutation<Result, unknown, T>(finalOptions);\n return mutation;\n}\n\nfunction mergeOptions<T, R = any>(\n model: string,\n options: Omit<UseMutationOptions<R, unknown, T, unknown>, 'mutationFn'> | undefined,\n invalidateQueries: boolean,\n mutationFn: MutateFunction<R, unknown, T>,\n queryClient: QueryClient\n): UseMutationOptions<R, unknown, T, unknown> {\n const result = { ...options, mutationFn };\n if (options?.onSuccess || invalidateQueries) {\n result.onSuccess = (...args) => {\n if (invalidateQueries) {\n queryClient.invalidateQueries([QUERY_KEY_PREFIX + model]);\n }\n return options?.onSuccess?.(...args);\n };\n }\n return result;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { serialize, deserialize } from '@zenstackhq/runtime/browser';\n\n/**\n * The default query endpoint.\n */\nexport const DEFAULT_QUERY_ENDPOINT = '/api/model';\n\n/**\n * Prefix for react-query keys.\n */\nexport const QUERY_KEY_PREFIX = 'zenstack:';\n\n/**\n * Function signature for `fetch`.\n */\nexport type FetchFn = (url: string, options?: RequestInit) => Promise<Response>;\n\n/**\n * Context type for configuring the hooks.\n */\nexport type APIContext = {\n /**\n * The endpoint to use for the queries.\n */\n endpoint: string;\n\n /**\n * A custom fetch function for sending the HTTP requests.\n */\n fetch?: FetchFn;\n};\n\nexport async function fetcher<R, C extends boolean>(\n url: string,\n options?: RequestInit,\n fetch?: FetchFn,\n checkReadBack?: C\n): Promise<C extends true ? R | undefined : R> {\n const _fetch = fetch ?? window.fetch;\n const res = await _fetch(url, options);\n if (!res.ok) {\n const errData = unmarshal(await res.text());\n if (\n checkReadBack !== false &&\n errData.error?.prisma &&\n errData.error?.code === 'P2004' &&\n errData.error?.reason === 'RESULT_NOT_READABLE'\n ) {\n // policy doesn't allow mutation result to be read back, just return undefined\n return undefined as any;\n }\n const error: Error & { info?: unknown; status?: number } = new Error(\n 'An error occurred while fetching the data.'\n );\n error.info = errData.error;\n error.status = res.status;\n throw error;\n }\n\n const textResult = await res.text();\n try {\n return unmarshal(textResult).data as R;\n } catch (err) {\n console.error(`Unable to deserialize data:`, textResult);\n throw err;\n }\n}\n\nexport function marshal(value: unknown) {\n const { data, meta } = serialize(value);\n if (meta) {\n return JSON.stringify({ ...(data as any), meta: { serialization: meta } });\n } else {\n return JSON.stringify(data);\n }\n}\n\nexport function unmarshal(value: string) {\n const parsed = JSON.parse(value);\n if (parsed.data && parsed.meta?.serialization) {\n const deserializedData = deserialize(parsed.data, parsed.meta.serialization);\n return { ...parsed, data: deserializedData };\n } else {\n return parsed;\n }\n}\n\nexport function makeUrl(url: string, args: unknown) {\n if (!args) {\n return url;\n }\n\n const { data, meta } = serialize(args);\n let result = `${url}?q=${encodeURIComponent(JSON.stringify(data))}`;\n if (meta) {\n result += `&meta=${encodeURIComponent(JSON.stringify({ serialization: meta }))}`;\n }\n return result;\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,61 @@
1
+ import * as _tanstack_svelte_query from '@tanstack/svelte-query';
2
+ import { QueryOptions, CreateInfiniteQueryOptions, MutationOptions } from '@tanstack/svelte-query';
3
+ import { F as FetchFn } from './common-52ab2c3a.js';
4
+ export { A as RequestHandlerContext } from './common-52ab2c3a.js';
5
+
6
+ /**
7
+ * Key for setting and getting the global query context.
8
+ */
9
+ declare const SvelteQueryContextKey = "zenstack-svelte-query-context";
10
+ /**
11
+ * Creates a svelte-query query.
12
+ *
13
+ * @param model The name of the model under query.
14
+ * @param url The request URL.
15
+ * @param args The request args object, URL-encoded and appended as "?q=" parameter
16
+ * @param options The svelte-query options object
17
+ * @returns useQuery hook
18
+ */
19
+ declare function query<R>(model: string, url: string, args?: unknown, options?: QueryOptions<R>, fetch?: FetchFn): _tanstack_svelte_query.CreateQueryResult<R, unknown>;
20
+ /**
21
+ * Creates a svelte-query infinite query.
22
+ *
23
+ * @param model The name of the model under query.
24
+ * @param url The request URL.
25
+ * @param args The initial request args object, URL-encoded and appended as "?q=" parameter
26
+ * @param options The svelte-query infinite query options object
27
+ * @returns useQuery hook
28
+ */
29
+ declare function infiniteQuery<R>(model: string, url: string, args?: unknown, options?: CreateInfiniteQueryOptions<R>, fetch?: FetchFn): _tanstack_svelte_query.CreateInfiniteQueryResult<R, unknown>;
30
+ /**
31
+ * Creates a POST mutation with svelte-query.
32
+ *
33
+ * @param model The name of the model under mutation.
34
+ * @param url The request URL.
35
+ * @param options The svelte-query options.
36
+ * @param invalidateQueries Whether to invalidate queries after mutation.
37
+ * @returns useMutation hooks
38
+ */
39
+ declare function postMutation<T, R = any, C extends boolean = boolean, Result = C extends true ? R | undefined : R>(model: string, url: string, options?: Omit<MutationOptions<Result, unknown, T>, 'mutationFn'>, fetch?: FetchFn, invalidateQueries?: boolean, checkReadBack?: C): _tanstack_svelte_query.CreateMutationResult<Result, unknown, T, unknown>;
40
+ /**
41
+ * Creates a PUT mutation with svelte-query.
42
+ *
43
+ * @param model The name of the model under mutation.
44
+ * @param url The request URL.
45
+ * @param options The svelte-query options.
46
+ * @param invalidateQueries Whether to invalidate queries after mutation.
47
+ * @returns useMutation hooks
48
+ */
49
+ declare function putMutation<T, R = any, C extends boolean = boolean, Result = C extends true ? R | undefined : R>(model: string, url: string, options?: Omit<MutationOptions<Result, unknown, T>, 'mutationFn'>, fetch?: FetchFn, invalidateQueries?: boolean, checkReadBack?: C): _tanstack_svelte_query.CreateMutationResult<Result, unknown, T, unknown>;
50
+ /**
51
+ * Creates a DELETE mutation with svelte-query.
52
+ *
53
+ * @param model The name of the model under mutation.
54
+ * @param url The request URL.
55
+ * @param options The svelte-query options.
56
+ * @param invalidateQueries Whether to invalidate queries after mutation.
57
+ * @returns useMutation hooks
58
+ */
59
+ declare function deleteMutation<T, R = any, C extends boolean = boolean, Result = C extends true ? R | undefined : R>(model: string, url: string, options?: Omit<MutationOptions<Result, unknown, T>, 'mutationFn'>, fetch?: FetchFn, invalidateQueries?: boolean, checkReadBack?: C): _tanstack_svelte_query.CreateMutationResult<Result, unknown, T, unknown>;
60
+
61
+ export { SvelteQueryContextKey, deleteMutation, infiniteQuery, postMutation, putMutation, query };
@@ -0,0 +1,61 @@
1
+ import * as _tanstack_svelte_query from '@tanstack/svelte-query';
2
+ import { QueryOptions, CreateInfiniteQueryOptions, MutationOptions } from '@tanstack/svelte-query';
3
+ import { F as FetchFn } from './common-52ab2c3a.js';
4
+ export { A as RequestHandlerContext } from './common-52ab2c3a.js';
5
+
6
+ /**
7
+ * Key for setting and getting the global query context.
8
+ */
9
+ declare const SvelteQueryContextKey = "zenstack-svelte-query-context";
10
+ /**
11
+ * Creates a svelte-query query.
12
+ *
13
+ * @param model The name of the model under query.
14
+ * @param url The request URL.
15
+ * @param args The request args object, URL-encoded and appended as "?q=" parameter
16
+ * @param options The svelte-query options object
17
+ * @returns useQuery hook
18
+ */
19
+ declare function query<R>(model: string, url: string, args?: unknown, options?: QueryOptions<R>, fetch?: FetchFn): _tanstack_svelte_query.CreateQueryResult<R, unknown>;
20
+ /**
21
+ * Creates a svelte-query infinite query.
22
+ *
23
+ * @param model The name of the model under query.
24
+ * @param url The request URL.
25
+ * @param args The initial request args object, URL-encoded and appended as "?q=" parameter
26
+ * @param options The svelte-query infinite query options object
27
+ * @returns useQuery hook
28
+ */
29
+ declare function infiniteQuery<R>(model: string, url: string, args?: unknown, options?: CreateInfiniteQueryOptions<R>, fetch?: FetchFn): _tanstack_svelte_query.CreateInfiniteQueryResult<R, unknown>;
30
+ /**
31
+ * Creates a POST mutation with svelte-query.
32
+ *
33
+ * @param model The name of the model under mutation.
34
+ * @param url The request URL.
35
+ * @param options The svelte-query options.
36
+ * @param invalidateQueries Whether to invalidate queries after mutation.
37
+ * @returns useMutation hooks
38
+ */
39
+ declare function postMutation<T, R = any, C extends boolean = boolean, Result = C extends true ? R | undefined : R>(model: string, url: string, options?: Omit<MutationOptions<Result, unknown, T>, 'mutationFn'>, fetch?: FetchFn, invalidateQueries?: boolean, checkReadBack?: C): _tanstack_svelte_query.CreateMutationResult<Result, unknown, T, unknown>;
40
+ /**
41
+ * Creates a PUT mutation with svelte-query.
42
+ *
43
+ * @param model The name of the model under mutation.
44
+ * @param url The request URL.
45
+ * @param options The svelte-query options.
46
+ * @param invalidateQueries Whether to invalidate queries after mutation.
47
+ * @returns useMutation hooks
48
+ */
49
+ declare function putMutation<T, R = any, C extends boolean = boolean, Result = C extends true ? R | undefined : R>(model: string, url: string, options?: Omit<MutationOptions<Result, unknown, T>, 'mutationFn'>, fetch?: FetchFn, invalidateQueries?: boolean, checkReadBack?: C): _tanstack_svelte_query.CreateMutationResult<Result, unknown, T, unknown>;
50
+ /**
51
+ * Creates a DELETE mutation with svelte-query.
52
+ *
53
+ * @param model The name of the model under mutation.
54
+ * @param url The request URL.
55
+ * @param options The svelte-query options.
56
+ * @param invalidateQueries Whether to invalidate queries after mutation.
57
+ * @returns useMutation hooks
58
+ */
59
+ declare function deleteMutation<T, R = any, C extends boolean = boolean, Result = C extends true ? R | undefined : R>(model: string, url: string, options?: Omit<MutationOptions<Result, unknown, T>, 'mutationFn'>, fetch?: FetchFn, invalidateQueries?: boolean, checkReadBack?: C): _tanstack_svelte_query.CreateMutationResult<Result, unknown, T, unknown>;
60
+
61
+ export { SvelteQueryContextKey, deleteMutation, infiniteQuery, postMutation, putMutation, query };