eden2query 0.2.0 → 0.3.1

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 CHANGED
@@ -10,69 +10,79 @@ bun add eden2query @elysiajs/eden @tanstack/react-query
10
10
 
11
11
  ## Usage
12
12
 
13
- ```ts
14
- import { treaty } from "@elysiajs/eden";
15
- import { edenQueryOptions, edenMutationOptions } from "eden2query";
16
- import type { App } from "./server"; // your Elysia app type
17
-
18
- const client = treaty<App>("localhost:3000");
13
+ **Queries (GET)** — pass a thunk that calls the Treaty GET:
19
14
 
20
- // GET → queryOptions (first arg is a thunk that calls the Eden GET function)
21
- const resourceQuery = edenQueryOptions(
15
+ ```ts
16
+ const getOptions = treatyQueryOptions(
22
17
  () => client.api.resource.get({ query: { q: "hello" } }),
23
- { queryKey: ["resource"] },
18
+ { queryKey: ["resource"], refetchInterval: 1000 },
24
19
  );
20
+ ```
21
+
22
+ **Mutations with variables (POST, PUT, etc.)** — pass a function that receives the mutation input, or a bound Treaty method:
25
23
 
26
- // POST / PUT / DELETE → mutationOptions
27
- const createResource = edenMutationOptions(client.api.resource.post);
24
+ ```ts
25
+ // Wrapper when Treaty uses (body, options)
26
+ const postOptions = treatyMutationOptions(
27
+ (vars: { body: { name: string }; query: { q: string } }) =>
28
+ client.api.resource.post(vars.body, { query: vars.query }),
29
+ { onSuccess: () => console.log("Success") },
30
+ );
28
31
 
29
32
  // Parameterised routes — bind params first
30
- const updateResource = edenMutationOptions(
31
- client.api.resource({ id: "some-id" }).put,
33
+ const putOptions = treatyMutationOptions(
34
+ client.api.resource({ id: "dummy" }).put,
35
+ { onSettled: () => console.log("Settled") },
36
+ );
37
+ ```
38
+
39
+ **Mutations without variables (e.g. DELETE with fixed params)** — pass a no-argument function; `mutate()` is then called with no args:
40
+
41
+ ```ts
42
+ const deleteOptions = treatyMutationOptions(
43
+ () => client.api.resource({ id: "dummy" }).delete(),
44
+ { onMutate: () => console.log("Mutate") },
32
45
  );
33
46
  ```
34
47
 
35
- Then use them with React Query as usual:
48
+ Use with React Query as usual:
36
49
 
37
50
  ```tsx
38
- const { data } = useQuery(resourceQuery);
39
- const mutation = useMutation(createResource);
51
+ const { data } = useQuery(getOptions);
40
52
 
41
- mutation.mutate({ body: { name: "New item" }, query: { q: "hello" } }); // fully typed input
42
- ```
53
+ const postMutation = useMutation(postOptions);
54
+ postMutation.mutate({ body: { name: "World" }, query: { q: "hello" } });
43
55
 
44
- Works with `prefetchQuery`, `ensureQueryData`, `useSuspenseQuery`, etc:
56
+ const putMutation = useMutation(putOptions);
57
+ putMutation.mutate({ name: "World" });
45
58
 
46
- ```ts
47
- const queryClient = new QueryClient();
48
- await queryClient.prefetchQuery(resourceQuery);
59
+ const deleteMutation = useMutation(deleteOptions);
60
+ deleteMutation.mutate(); // no arguments
49
61
  ```
50
62
 
51
- You can also pass any standard React Query options as the second argument:
63
+ Prefetch and other helpers work as usual:
52
64
 
53
65
  ```ts
54
- const resourceQuery = edenQueryOptions(
55
- () => client.api.resource.get({ query: { q: "hello" } }),
56
- { queryKey: ["resource"], refetchInterval: 1000 },
57
- );
58
-
59
- const createResource = edenMutationOptions(
60
- client.api.resource.post,
61
- { onSuccess: () => console.log("created!") },
62
- );
66
+ const queryClient = new QueryClient();
67
+ queryClient.prefetchQuery(getOptions);
63
68
  ```
64
69
 
65
70
  ## API
66
71
 
67
- **`edenQueryOptions(fn, queryOptions)`** — wraps an Eden GET call into `queryOptions`. `fn` is a **thunk** (zero-argument function) that calls the Eden GET function, e.g. `() => client.api.resource.get({ query: { ... } })`. This lets you bind query parameters, headers, or any other Eden options at definition time. The second argument accepts all `queryOptions` fields except `queryFn`. Extracts `data` from the response and throws on `error`.
72
+ **`treatyQueryOptions(fn, queryOptions)`** — wraps a Treaty GET call into `queryOptions`. `fn` is a **thunk** (zero-argument function) that calls the Treaty GET, e.g. `() => client.api.resource.get({ query: { ... } })`. The second argument accepts all `queryOptions` fields except `queryFn`. Extracts `data` from the response and throws on `error`.
73
+
74
+ **`treatyMutationOptions(fn, mutationOptions?)`** — wraps a Treaty mutation into `mutationOptions`. Two shapes:
75
+
76
+ - **No-arg:** `fn` is `() => Promise<...>`. Use when the mutation has no call-time input (e.g. DELETE with fixed path params). `mutate()` is called with no arguments.
77
+ - **With variables:** `fn` is `(vars) => Promise<...>`. Use for POST/PUT etc. `mutate(vars)` receives a single object (e.g. `{ body, query }` or the Treaty method’s first argument). You can pass the Treaty method directly when its signature matches (e.g. `client.api.resource({ id }).put`).
68
78
 
69
- **`edenMutationOptions(fn, mutationOptions?)`** — wraps an Eden mutation function into `mutationOptions`. The optional second argument accepts all `mutationOptions` fields except `mutationFn` (e.g. `onSuccess`, `onSettled`, `onMutate`). The `mutate` call receives a single object with `body` and any other Eden options (like `query`) as the input.
79
+ The optional second argument accepts all `mutationOptions` fields except `mutationFn` (e.g. `onSuccess`, `onSettled`, `onMutate`).
70
80
 
71
- **`InferQueryOptions<TFn>`** — extracts the full `UseQueryOptions` type for a given Eden GET thunk.
81
+ **`InferTreatyQueryOptions<T>`** — full `UseQueryOptions` type for a given Treaty query.
72
82
 
73
- **`InferMutationOptions<TFn>`** — extracts the full `UseMutationOptions` type for a given Eden mutation function.
83
+ **`InferTreatyMutationOptions<TVariables, TResponse>`** — full `UseMutationOptions` type for a given Treaty mutation.
74
84
 
75
- All helpers infer data, error, and input types end-to-end from your Elysia route definitions. No manual generics needed.
85
+ Data, error, and input types are inferred end-to-end from your Elysia route definitions.
76
86
 
77
87
  ## License
78
88
 
package/dist/index.d.ts CHANGED
@@ -1,16 +1,22 @@
1
1
  import { Treaty } from "@elysiajs/eden";
2
2
  import { UseMutationOptions, UseQueryOptions } from "@tanstack/react-query";
3
- type EdenMutationFn<
4
- TBody = any,
5
- TOptions = any,
6
- TResponse extends Record<number, unknown> = Record<number, unknown>
7
- > = ((body: TBody, options: TOptions) => Promise<Treaty.TreatyResponse<TResponse>>);
8
- type EdenQueryFn<TResponse extends Record<number, unknown> = Record<number, unknown>> = (() => Promise<Treaty.TreatyResponse<TResponse>>);
9
- type InferMutationVariables<TFn extends EdenMutationFn> = (unknown extends Parameters<TFn>[0] ? Parameters<TFn>[1] : Parameters<TFn>[1] & {
10
- body: Parameters<TFn>[0];
11
- });
12
- type InferMutationOptions<TFn extends EdenMutationFn> = (UseMutationOptions<Awaited<ReturnType<TFn>>["data"], Awaited<ReturnType<TFn>>["error"], InferMutationVariables<TFn>>);
13
- type InferQueryOptions<TFn extends EdenQueryFn> = (UseQueryOptions<Awaited<ReturnType<TFn>>["data"], Awaited<ReturnType<TFn>>["error"]>);
14
- declare function edenMutationOptions<TFn extends EdenMutationFn>(fn: TFn, options?: Omit<InferMutationOptions<TFn>, "mutationFn">): InferMutationOptions<TFn>;
15
- declare function edenQueryOptions<TFn extends EdenQueryFn>(fn: TFn, options: Omit<InferQueryOptions<TFn>, "queryFn">): InferQueryOptions<TFn>;
16
- export { edenQueryOptions, edenMutationOptions, InferQueryOptions, InferMutationOptions };
3
+ type TreatyResponse = Record<number, unknown>;
4
+ type TreatyFunctionWithoutParams<TResponse extends TreatyResponse = TreatyResponse> = () => Promise<Treaty.TreatyResponse<TResponse>>;
5
+ type TreatyFunctionWithParams<
6
+ TParams,
7
+ TResponse extends TreatyResponse
8
+ > = (params: TParams) => Promise<Treaty.TreatyResponse<TResponse>>;
9
+ type InferTreatyData<TResponse extends TreatyResponse> = Treaty.TreatyResponse<TResponse>["data"];
10
+ type InferTreatyError<TResponse extends TreatyResponse> = Treaty.TreatyResponse<TResponse>["error"];
11
+ type InferTreatyMutationOptions<
12
+ TInput,
13
+ TResponse extends TreatyResponse
14
+ > = UseMutationOptions<InferTreatyData<TResponse>, InferTreatyError<TResponse>, TInput>;
15
+ type InferTreatyQueryOptions<TResponse extends Record<number, unknown>> = UseQueryOptions<InferTreatyData<TResponse>, InferTreatyError<TResponse>>;
16
+ declare function treatyMutationOptions<TResponse extends TreatyResponse>(fn: TreatyFunctionWithoutParams<TResponse>, options?: Omit<InferTreatyMutationOptions<void, TResponse>, "mutationFn">): InferTreatyMutationOptions<void, TResponse>;
17
+ declare function treatyMutationOptions<
18
+ TVariables,
19
+ TResponse extends TreatyResponse
20
+ >(fn: TreatyFunctionWithParams<TVariables, TResponse>, options?: Omit<InferTreatyMutationOptions<TVariables, TResponse>, "mutationFn">): InferTreatyMutationOptions<TVariables, TResponse>;
21
+ declare function treatyQueryOptions<TResponse extends TreatyResponse = TreatyResponse>(fn: TreatyFunctionWithoutParams<TResponse>, options: Omit<InferTreatyQueryOptions<TResponse>, "queryFn">): InferTreatyQueryOptions<TResponse>;
22
+ export { treatyQueryOptions, treatyMutationOptions, TreatyFunctionWithoutParams as TreatyQueryFunction, TreatyFunctionWithParams as TreatyMutationFunction, InferTreatyQueryOptions, InferTreatyMutationOptions, InferTreatyError, InferTreatyData };
package/dist/index.js CHANGED
@@ -1,34 +1,36 @@
1
1
  // src/lib.ts
2
- import { mutationOptions, queryOptions } from "@tanstack/react-query";
3
- function edenMutationOptions(fn, options) {
2
+ import {
3
+ mutationOptions,
4
+ queryOptions
5
+ } from "@tanstack/react-query";
6
+ function treatyMutationOptions(fn, options) {
4
7
  return mutationOptions({
8
+ ...options,
5
9
  mutationFn: async (variables) => {
6
- const { body, ...rest } = variables;
7
- const response = await fn(body, rest);
10
+ const response = await (fn.length === 0 ? fn() : fn(variables));
8
11
  const { data, error } = response;
9
12
  if (error)
10
13
  throw error;
11
14
  return data;
12
- },
13
- ...options
15
+ }
14
16
  });
15
17
  }
16
- function edenQueryOptions(fn, options) {
18
+ function treatyQueryOptions(fn, options) {
17
19
  return queryOptions({
20
+ ...options,
18
21
  queryFn: async () => {
19
22
  const response = await fn();
20
23
  const { data, error } = response;
21
24
  if (error)
22
25
  throw error;
23
26
  return data;
24
- },
25
- ...options
27
+ }
26
28
  });
27
29
  }
28
30
  export {
29
- edenQueryOptions,
30
- edenMutationOptions
31
+ treatyQueryOptions,
32
+ treatyMutationOptions
31
33
  };
32
34
 
33
- //# debugId=536B0B1CEFDDC08764756E2164756E21
34
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjXFxsaWIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiaW1wb3J0IHR5cGUgeyBUcmVhdHkgfSBmcm9tIFwiQGVseXNpYWpzL2VkZW5cIjtcclxuaW1wb3J0IHsgbXV0YXRpb25PcHRpb25zLCBxdWVyeU9wdGlvbnMsIHVzZVF1ZXJ5LCB0eXBlIFVzZU11dGF0aW9uT3B0aW9ucywgdHlwZSBVc2VNdXRhdGlvblJlc3VsdCwgdHlwZSBVc2VRdWVyeU9wdGlvbnMgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XHJcblxyXG50eXBlIEVkZW5NdXRhdGlvbkZuPFxyXG4gIFRCb2R5ID0gYW55LCBcclxuICBUT3B0aW9ucyA9IGFueSwgXHJcbiAgVFJlc3BvbnNlIGV4dGVuZHMgUmVjb3JkPG51bWJlciwgdW5rbm93bj4gPSBSZWNvcmQ8bnVtYmVyLCB1bmtub3duPlxyXG4+ID0gKFxyXG4gIChib2R5OiBUQm9keSwgb3B0aW9uczogVE9wdGlvbnMpID0+IFByb21pc2U8VHJlYXR5LlRyZWF0eVJlc3BvbnNlPFRSZXNwb25zZT4+XHJcbik7XHJcblxyXG50eXBlIEVkZW5RdWVyeUZuPFxyXG4gIFRSZXNwb25zZSBleHRlbmRzIFJlY29yZDxudW1iZXIsIHVua25vd24+ID0gUmVjb3JkPG51bWJlciwgdW5rbm93bj5cclxuPiA9IChcclxuICAoKSA9PiBQcm9taXNlPFRyZWF0eS5UcmVhdHlSZXNwb25zZTxUUmVzcG9uc2U+PlxyXG4pO1xyXG5cclxudHlwZSBJbmZlck11dGF0aW9uVmFyaWFibGVzPFRGbiBleHRlbmRzIEVkZW5NdXRhdGlvbkZuPiA9IChcclxuICB1bmtub3duIGV4dGVuZHMgUGFyYW1ldGVyczxURm4+WzBdXHJcbiAgICA/IFBhcmFtZXRlcnM8VEZuPlsxXVxyXG4gICAgOiBQYXJhbWV0ZXJzPFRGbj5bMV0gJiB7IGJvZHk6IFBhcmFtZXRlcnM8VEZuPlswXSB9XHJcbik7XHJcblxyXG5leHBvcnQgdHlwZSBJbmZlck11dGF0aW9uT3B0aW9uczxURm4gZXh0ZW5kcyBFZGVuTXV0YXRpb25Gbj4gPSAoXHJcbiAgVXNlTXV0YXRpb25PcHRpb25zPFxyXG4gICAgQXdhaXRlZDxSZXR1cm5UeXBlPFRGbj4+W1wiZGF0YVwiXSxcclxuICAgIEF3YWl0ZWQ8UmV0dXJuVHlwZTxURm4+PltcImVycm9yXCJdLFxyXG4gICAgSW5mZXJNdXRhdGlvblZhcmlhYmxlczxURm4+XHJcbiAgPlxyXG4pO1xyXG5cclxuZXhwb3J0IHR5cGUgSW5mZXJRdWVyeU9wdGlvbnM8XHJcbiAgVEZuIGV4dGVuZHMgRWRlblF1ZXJ5Rm4sIFxyXG4+ID0gKFxyXG4gIFVzZVF1ZXJ5T3B0aW9uczxcclxuICAgIEF3YWl0ZWQ8UmV0dXJuVHlwZTxURm4+PltcImRhdGFcIl0sXHJcbiAgICBBd2FpdGVkPFJldHVyblR5cGU8VEZuPj5bXCJlcnJvclwiXVxyXG4gID5cclxuKTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBlZGVuTXV0YXRpb25PcHRpb25zPFRGbiBleHRlbmRzIEVkZW5NdXRhdGlvbkZuPihcclxuICBmbjogVEZuLFxyXG4gIG9wdGlvbnM/OiBPbWl0PEluZmVyTXV0YXRpb25PcHRpb25zPFRGbj4sIFwibXV0YXRpb25GblwiPlxyXG4pOiBJbmZlck11dGF0aW9uT3B0aW9uczxURm4+IHtcclxuICByZXR1cm4gbXV0YXRpb25PcHRpb25zKHtcclxuICAgIG11dGF0aW9uRm46IGFzeW5jICh2YXJpYWJsZXMpID0+IHtcclxuICAgICAgY29uc3QgeyBib2R5LCAuLi5yZXN0IH0gPSB2YXJpYWJsZXM7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZm4oYm9keSwgcmVzdCk7XHJcbiAgICAgIGNvbnN0IHsgZGF0YSwgZXJyb3IgfSA9IHJlc3BvbnNlO1xyXG4gICAgICBpZiAoZXJyb3IpIHRocm93IGVycm9yO1xyXG4gICAgICByZXR1cm4gZGF0YTtcclxuICAgIH0sXHJcbiAgICAuLi5vcHRpb25zLFxyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZWRlblF1ZXJ5T3B0aW9uczxcclxuICBURm4gZXh0ZW5kcyBFZGVuUXVlcnlGbixcclxuPihcclxuICBmbjogVEZuLFxyXG4gIG9wdGlvbnM6IE9taXQ8SW5mZXJRdWVyeU9wdGlvbnM8VEZuPiwgXCJxdWVyeUZuXCI+XHJcbik6IEluZmVyUXVlcnlPcHRpb25zPFRGbj4ge1xyXG4gIHJldHVybiBxdWVyeU9wdGlvbnMoe1xyXG4gICAgcXVlcnlGbjogYXN5bmMgKCkgPT4ge1xyXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZuKCk7XHJcbiAgICAgIGNvbnN0IHsgZGF0YSwgZXJyb3IgfSA9IHJlc3BvbnNlO1xyXG4gICAgICBpZiAoZXJyb3IpIHRocm93IGVycm9yO1xyXG4gICAgICByZXR1cm4gZGF0YTtcclxuICAgIH0sXHJcbiAgICAuLi5vcHRpb25zLFxyXG4gIH0pIGFzIEluZmVyUXVlcnlPcHRpb25zPFRGbj47XHJcbn0iCiAgXSwKICAibWFwcGluZ3MiOiAiO0FBQ0E7QUF1Q08sU0FBUyxtQkFBK0MsQ0FDN0QsSUFDQSxTQUMyQjtBQUFBLEVBQzNCLE9BQU8sZ0JBQWdCO0FBQUEsSUFDckIsWUFBWSxPQUFPLGNBQWM7QUFBQSxNQUMvQixRQUFRLFNBQVMsU0FBUztBQUFBLE1BQzFCLE1BQU0sV0FBVyxNQUFNLEdBQUcsTUFBTSxJQUFJO0FBQUEsTUFDcEMsUUFBUSxNQUFNLFVBQVU7QUFBQSxNQUN4QixJQUFJO0FBQUEsUUFBTyxNQUFNO0FBQUEsTUFDakIsT0FBTztBQUFBO0FBQUEsT0FFTjtBQUFBLEVBQ0wsQ0FBQztBQUFBO0FBR0ksU0FBUyxnQkFFZixDQUNDLElBQ0EsU0FDd0I7QUFBQSxFQUN4QixPQUFPLGFBQWE7QUFBQSxJQUNsQixTQUFTLFlBQVk7QUFBQSxNQUNuQixNQUFNLFdBQVcsTUFBTSxHQUFHO0FBQUEsTUFDMUIsUUFBUSxNQUFNLFVBQVU7QUFBQSxNQUN4QixJQUFJO0FBQUEsUUFBTyxNQUFNO0FBQUEsTUFDakIsT0FBTztBQUFBO0FBQUEsT0FFTjtBQUFBLEVBQ0wsQ0FBQztBQUFBOyIsCiAgImRlYnVnSWQiOiAiNTM2QjBCMUNFRkREQzA4NzY0NzU2RTIxNjQ3NTZFMjEiLAogICJuYW1lcyI6IFtdCn0=
35
+ //# debugId=668F4CB9D073178564756E2164756E21
36
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjXFxsaWIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiaW1wb3J0IHR5cGUgeyBUcmVhdHkgfSBmcm9tIFwiQGVseXNpYWpzL2VkZW5cIjtcclxuaW1wb3J0IHtcclxuICBtdXRhdGlvbk9wdGlvbnMsXHJcbiAgcXVlcnlPcHRpb25zLFxyXG4gIHR5cGUgVXNlTXV0YXRpb25PcHRpb25zLFxyXG4gIHR5cGUgVXNlUXVlcnlPcHRpb25zLFxyXG59IGZyb20gXCJAdGFuc3RhY2svcmVhY3QtcXVlcnlcIjtcclxuXHJcbnR5cGUgVHJlYXR5UmVzcG9uc2UgPSBSZWNvcmQ8bnVtYmVyLCB1bmtub3duPjtcclxuXHJcbmV4cG9ydCB0eXBlIFRyZWF0eUZ1bmN0aW9uV2l0aG91dFBhcmFtczxcclxuICBUUmVzcG9uc2UgZXh0ZW5kcyBUcmVhdHlSZXNwb25zZSA9IFRyZWF0eVJlc3BvbnNlLFxyXG4+ID0gKCkgPT4gUHJvbWlzZTxUcmVhdHkuVHJlYXR5UmVzcG9uc2U8VFJlc3BvbnNlPj47XHJcblxyXG5leHBvcnQgdHlwZSBUcmVhdHlGdW5jdGlvbldpdGhQYXJhbXM8XHJcbiAgVFBhcmFtcyxcclxuICBUUmVzcG9uc2UgZXh0ZW5kcyBUcmVhdHlSZXNwb25zZSxcclxuPiA9IChwYXJhbXM6IFRQYXJhbXMpID0+IFByb21pc2U8VHJlYXR5LlRyZWF0eVJlc3BvbnNlPFRSZXNwb25zZT4+O1xyXG5cclxuZXhwb3J0IHR5cGUgSW5mZXJUcmVhdHlEYXRhPFRSZXNwb25zZSBleHRlbmRzIFRyZWF0eVJlc3BvbnNlPiA9XHJcbiAgVHJlYXR5LlRyZWF0eVJlc3BvbnNlPFRSZXNwb25zZT5bXCJkYXRhXCJdO1xyXG5cclxuZXhwb3J0IHR5cGUgSW5mZXJUcmVhdHlFcnJvcjxUUmVzcG9uc2UgZXh0ZW5kcyBUcmVhdHlSZXNwb25zZT4gPVxyXG4gIFRyZWF0eS5UcmVhdHlSZXNwb25zZTxUUmVzcG9uc2U+W1wiZXJyb3JcIl07XHJcblxyXG5leHBvcnQgdHlwZSBJbmZlclRyZWF0eU11dGF0aW9uT3B0aW9uczxcclxuICBUSW5wdXQsXHJcbiAgVFJlc3BvbnNlIGV4dGVuZHMgVHJlYXR5UmVzcG9uc2UsXHJcbj4gPSBVc2VNdXRhdGlvbk9wdGlvbnM8XHJcbiAgSW5mZXJUcmVhdHlEYXRhPFRSZXNwb25zZT4sXHJcbiAgSW5mZXJUcmVhdHlFcnJvcjxUUmVzcG9uc2U+LFxyXG4gIFRJbnB1dFxyXG4+O1xyXG5cclxuZXhwb3J0IHR5cGUgSW5mZXJUcmVhdHlRdWVyeU9wdGlvbnM8VFJlc3BvbnNlIGV4dGVuZHMgUmVjb3JkPG51bWJlciwgdW5rbm93bj4+ID1cclxuICBVc2VRdWVyeU9wdGlvbnM8SW5mZXJUcmVhdHlEYXRhPFRSZXNwb25zZT4sIEluZmVyVHJlYXR5RXJyb3I8VFJlc3BvbnNlPj47XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdHJlYXR5TXV0YXRpb25PcHRpb25zPFRSZXNwb25zZSBleHRlbmRzIFRyZWF0eVJlc3BvbnNlPihcclxuICBmbjogVHJlYXR5RnVuY3Rpb25XaXRob3V0UGFyYW1zPFRSZXNwb25zZT4sXHJcbiAgb3B0aW9ucz86IE9taXQ8SW5mZXJUcmVhdHlNdXRhdGlvbk9wdGlvbnM8dm9pZCwgVFJlc3BvbnNlPiwgXCJtdXRhdGlvbkZuXCI+LFxyXG4pOiBJbmZlclRyZWF0eU11dGF0aW9uT3B0aW9uczx2b2lkLCBUUmVzcG9uc2U+O1xyXG5leHBvcnQgZnVuY3Rpb24gdHJlYXR5TXV0YXRpb25PcHRpb25zPFxyXG4gIFRWYXJpYWJsZXMsXHJcbiAgVFJlc3BvbnNlIGV4dGVuZHMgVHJlYXR5UmVzcG9uc2UsXHJcbj4oXHJcbiAgZm46IFRyZWF0eUZ1bmN0aW9uV2l0aFBhcmFtczxUVmFyaWFibGVzLCBUUmVzcG9uc2U+LFxyXG4gIG9wdGlvbnM/OiBPbWl0PEluZmVyVHJlYXR5TXV0YXRpb25PcHRpb25zPFRWYXJpYWJsZXMsIFRSZXNwb25zZT4sIFwibXV0YXRpb25GblwiPixcclxuKTogSW5mZXJUcmVhdHlNdXRhdGlvbk9wdGlvbnM8VFZhcmlhYmxlcywgVFJlc3BvbnNlPjtcclxuZXhwb3J0IGZ1bmN0aW9uIHRyZWF0eU11dGF0aW9uT3B0aW9uczxcclxuICBUVmFyaWFibGVzLFxyXG4gIFRSZXNwb25zZSBleHRlbmRzIFRyZWF0eVJlc3BvbnNlLFxyXG4+KFxyXG4gIGZuOlxyXG4gICAgfCAoKCkgPT4gUHJvbWlzZTxUcmVhdHkuVHJlYXR5UmVzcG9uc2U8VFJlc3BvbnNlPj4pXHJcbiAgICB8IFRyZWF0eUZ1bmN0aW9uV2l0aFBhcmFtczxUVmFyaWFibGVzLCBUUmVzcG9uc2U+LFxyXG4gIG9wdGlvbnM/OiBPbWl0PEluZmVyVHJlYXR5TXV0YXRpb25PcHRpb25zPFRWYXJpYWJsZXMsIFRSZXNwb25zZT4sIFwibXV0YXRpb25GblwiPixcclxuKTogSW5mZXJUcmVhdHlNdXRhdGlvbk9wdGlvbnM8VFZhcmlhYmxlcywgVFJlc3BvbnNlPiB7XHJcbiAgdHlwZSBURGF0YSA9IEluZmVyVHJlYXR5RGF0YTxUUmVzcG9uc2U+O1xyXG4gIHR5cGUgVEVycm9yID0gSW5mZXJUcmVhdHlFcnJvcjxUUmVzcG9uc2U+O1xyXG4gIHJldHVybiBtdXRhdGlvbk9wdGlvbnM8VERhdGEsIFRFcnJvciwgVFZhcmlhYmxlcz4oe1xyXG4gICAgLi4ub3B0aW9ucyxcclxuICAgIG11dGF0aW9uRm46IGFzeW5jICh2YXJpYWJsZXMpID0+IHtcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCAoXHJcbiAgICAgICAgZm4ubGVuZ3RoID09PSAwID8gKGZuIGFzICgpID0+IFByb21pc2U8VHJlYXR5LlRyZWF0eVJlc3BvbnNlPFRSZXNwb25zZT4+KSgpIDogKGZuIGFzIFRyZWF0eUZ1bmN0aW9uV2l0aFBhcmFtczxUVmFyaWFibGVzLCBUUmVzcG9uc2U+KSh2YXJpYWJsZXMpXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IHsgZGF0YSwgZXJyb3IgfSA9IHJlc3BvbnNlO1xyXG4gICAgICBpZiAoZXJyb3IpIHRocm93IGVycm9yO1xyXG4gICAgICByZXR1cm4gZGF0YTtcclxuICAgIH0sXHJcbiAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0cmVhdHlRdWVyeU9wdGlvbnM8XHJcbiAgVFJlc3BvbnNlIGV4dGVuZHMgVHJlYXR5UmVzcG9uc2UgPSBUcmVhdHlSZXNwb25zZSxcclxuPihcclxuICBmbjogVHJlYXR5RnVuY3Rpb25XaXRob3V0UGFyYW1zPFRSZXNwb25zZT4sXHJcbiAgb3B0aW9uczogT21pdDxJbmZlclRyZWF0eVF1ZXJ5T3B0aW9uczxUUmVzcG9uc2U+LCBcInF1ZXJ5Rm5cIj4sXHJcbik6IEluZmVyVHJlYXR5UXVlcnlPcHRpb25zPFRSZXNwb25zZT4ge1xyXG4gIHR5cGUgVERhdGEgPSBJbmZlclRyZWF0eURhdGE8VFJlc3BvbnNlPjtcclxuICB0eXBlIFRFcnJvciA9IEluZmVyVHJlYXR5RXJyb3I8VFJlc3BvbnNlPjtcclxuICByZXR1cm4gcXVlcnlPcHRpb25zPFREYXRhLCBURXJyb3I+KHtcclxuICAgIC4uLm9wdGlvbnMsXHJcbiAgICBxdWVyeUZuOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZm4oKTtcclxuICAgICAgY29uc3QgeyBkYXRhLCBlcnJvciB9ID0gcmVzcG9uc2U7XHJcbiAgICAgIGlmIChlcnJvcikgdGhyb3cgZXJyb3I7XHJcbiAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgfSxcclxuICB9KTtcclxufSIKICBdLAogICJtYXBwaW5ncyI6ICI7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQStDTyxTQUFTLHFCQUdmLENBQ0MsSUFHQSxTQUNtRDtBQUFBLEVBR25ELE9BQU8sZ0JBQTJDO0FBQUEsT0FDN0M7QUFBQSxJQUNILFlBQVksT0FBTyxjQUFjO0FBQUEsTUFDL0IsTUFBTSxXQUFXLE9BQ2YsR0FBRyxXQUFXLElBQUssR0FBdUQsSUFBSyxHQUF1RCxTQUFTO0FBQUEsTUFFakosUUFBUSxNQUFNLFVBQVU7QUFBQSxNQUN4QixJQUFJO0FBQUEsUUFBTyxNQUFNO0FBQUEsTUFDakIsT0FBTztBQUFBO0FBQUEsRUFFWCxDQUFDO0FBQUE7QUFHSSxTQUFTLGtCQUVmLENBQ0MsSUFDQSxTQUNvQztBQUFBLEVBR3BDLE9BQU8sYUFBNEI7QUFBQSxPQUM5QjtBQUFBLElBQ0gsU0FBUyxZQUFZO0FBQUEsTUFDbkIsTUFBTSxXQUFXLE1BQU0sR0FBRztBQUFBLE1BQzFCLFFBQVEsTUFBTSxVQUFVO0FBQUEsTUFDeEIsSUFBSTtBQUFBLFFBQU8sTUFBTTtBQUFBLE1BQ2pCLE9BQU87QUFBQTtBQUFBLEVBRVgsQ0FBQztBQUFBOyIsCiAgImRlYnVnSWQiOiAiNjY4RjRDQjlEMDczMTc4NTY0NzU2RTIxNjQ3NTZFMjEiLAogICJuYW1lcyI6IFtdCn0=
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "eden2query",
3
3
  "description": "Type-safe Eden Treaty to React Query helpers",
4
- "version": "0.2.0",
4
+ "version": "0.3.1",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist"
@@ -35,6 +35,7 @@
35
35
  ],
36
36
  "scripts": {
37
37
  "build": "bunup",
38
+ "format": "prettier --write .",
38
39
  "prepublishOnly": "bun run build"
39
40
  },
40
41
  "peerDependencies": {
@@ -45,6 +46,7 @@
45
46
  "devDependencies": {
46
47
  "@types/bun": "latest",
47
48
  "bunup": "^0.16.22",
48
- "elysia": "^1.4.22"
49
+ "elysia": "^1.4.22",
50
+ "prettier": "^3.4.2"
49
51
  }
50
52
  }