eden2query 0.1.0 → 0.1.2

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
@@ -17,21 +17,19 @@ import type { App } from "./server"; // your Elysia app type
17
17
 
18
18
  const client = treaty<App>("localhost:3000");
19
19
 
20
- // GET → queryOptions
21
- const resourceQuery = treatyQueryOptions({
22
- queryKey: ["resource"],
23
- fn: client.api.resource.get,
24
- });
20
+ // GET → queryOptions (first arg is a thunk that calls the Eden GET function)
21
+ const resourceQuery = treatyQueryOptions(
22
+ () => client.api.resource.get({ query: { q: "hello" } }),
23
+ { queryKey: ["resource"] },
24
+ );
25
25
 
26
26
  // POST / PUT / DELETE → mutationOptions
27
- const createResource = treatyMutationOptions({
28
- fn: client.api.resource.post,
29
- });
27
+ const createResource = treatyMutationOptions(client.api.resource.post);
30
28
 
31
29
  // Parameterised routes — bind params first
32
- const updateResource = treatyMutationOptions({
33
- fn: client.api.resource({ id: "some-id" }).put,
34
- });
30
+ const updateResource = treatyMutationOptions(
31
+ client.api.resource({ id: "some-id" }).put,
32
+ );
35
33
  ```
36
34
 
37
35
  Then use them with React Query as usual:
@@ -40,31 +38,35 @@ Then use them with React Query as usual:
40
38
  const { data } = useQuery(resourceQuery);
41
39
  const mutation = useMutation(createResource);
42
40
 
43
- mutation.mutate({ name: "New item" }); // fully typed input
41
+ mutation.mutate({ body: { name: "New item" }, query: { q: "hello" } }); // fully typed input
44
42
  ```
45
43
 
46
- Works with `prefetchQuery`, `ensureQueryData`, `useSuspenseQuery`, etc.
44
+ Works with `prefetchQuery`, `ensureQueryData`, `useSuspenseQuery`, etc:
47
45
 
48
- You can also pass any standard React Query options alongside `fn`:
46
+ ```ts
47
+ const queryClient = new QueryClient();
48
+ await queryClient.prefetchQuery(resourceQuery);
49
+ ```
50
+
51
+ You can also pass any standard React Query options as the second argument:
49
52
 
50
53
  ```ts
51
- const resourceQuery = treatyQueryOptions({
52
- queryKey: ["resource"],
53
- fn: client.api.resource.get,
54
- refetchInterval: 1000,
55
- });
56
-
57
- const createResource = treatyMutationOptions({
58
- fn: client.api.resource.post,
59
- onSuccess: () => console.log("created!"),
60
- });
54
+ const resourceQuery = treatyQueryOptions(
55
+ () => client.api.resource.get({ query: { q: "hello" } }),
56
+ { queryKey: ["resource"], refetchInterval: 1000 },
57
+ );
58
+
59
+ const createResource = treatyMutationOptions(
60
+ client.api.resource.post,
61
+ { onSuccess: () => console.log("created!") },
62
+ );
61
63
  ```
62
64
 
63
65
  ## API
64
66
 
65
- **`treatyQueryOptions({ queryKey, fn, ...queryOptions })`** — wraps an Eden GET function into `queryOptions`. Accepts all `queryOptions` fields except `queryFn`. Extracts `data` from the response and throws on `error`.
67
+ **`treatyQueryOptions(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`.
66
68
 
67
- **`treatyMutationOptions({ fn, ...mutationOptions })`** — wraps an Eden mutation function into `mutationOptions`. Accepts all `mutationOptions` fields except `mutationFn` (e.g. `onSuccess`, `onSettled`, `onMutate`). The `mutate` call accepts the same input the Eden function expects.
69
+ **`treatyMutationOptions(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.
68
70
 
69
71
  Both infer data, error, and input types end-to-end from your Elysia route definitions. No manual generics needed.
70
72
 
package/dist/index.d.ts CHANGED
@@ -1,22 +1,16 @@
1
1
  import { Treaty } from "@elysiajs/eden";
2
- import { mutationOptions, queryOptions } from "@tanstack/react-query";
3
- type EdenFn<
4
- I = any,
5
- T extends Record<number, unknown> = Record<number, unknown>
6
- > = (input: I) => Promise<Treaty.TreatyResponse<T>>;
7
- declare function treatyMutationOptions<
8
- T extends EdenFn,
9
- P extends Parameters<T>,
10
- R extends Awaited<ReturnType<T>>
11
- >(params: {
12
- fn: T;
13
- } & Omit<Parameters<typeof mutationOptions<R["data"], R["error"], P[0]>>[0], "mutationFn">);
14
- declare function treatyQueryOptions<
15
- T extends EdenFn,
16
- P extends Parameters<T>,
17
- R extends Awaited<ReturnType<T>>
18
- >(params: {
19
- queryKey: string[];
20
- fn: T;
21
- } & Omit<Parameters<typeof queryOptions<R["data"], R["error"], P[0]>>[0], "queryFn">);
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 treatyMutationOptions<TFn extends EdenMutationFn>(fn: TFn, options?: Omit<InferMutationOptions<TFn>, "mutationFn">): InferMutationOptions<TFn>;
15
+ declare function treatyQueryOptions<TFn extends EdenQueryFn>(fn: TFn, options: Omit<InferQueryOptions<TFn>, "queryFn">): InferQueryOptions<TFn>;
22
16
  export { treatyQueryOptions, treatyMutationOptions };
package/dist/index.js CHANGED
@@ -1,28 +1,28 @@
1
1
  // src/lib.ts
2
2
  import { mutationOptions, queryOptions } from "@tanstack/react-query";
3
- function treatyMutationOptions(params) {
3
+ function treatyMutationOptions(fn, options) {
4
4
  return mutationOptions({
5
5
  mutationFn: async (variables) => {
6
- const response = await params.fn(variables);
6
+ const { body, ...rest } = variables;
7
+ const response = await fn(body, rest);
7
8
  const { data, error } = response;
8
- if (error) {
9
+ if (error)
9
10
  throw error;
10
- }
11
11
  return data;
12
12
  },
13
- ...params
13
+ ...options
14
14
  });
15
15
  }
16
- function treatyQueryOptions(params) {
16
+ function treatyQueryOptions(fn, options) {
17
17
  return queryOptions({
18
- queryKey: params.queryKey,
19
- queryFn: async (variables) => {
20
- const { data, error } = await params.fn(variables);
21
- if (error) {
18
+ queryFn: async () => {
19
+ const response = await fn();
20
+ const { data, error } = response;
21
+ if (error)
22
22
  throw error;
23
- }
24
23
  return data;
25
- }
24
+ },
25
+ ...options
26
26
  });
27
27
  }
28
28
  export {
@@ -30,5 +30,5 @@ export {
30
30
  treatyMutationOptions
31
31
  };
32
32
 
33
- //# debugId=FB96D23A27CEDEEE64756E2164756E21
34
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjXFxsaWIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiaW1wb3J0IHR5cGUgeyBUcmVhdHkgfSBmcm9tIFwiQGVseXNpYWpzL2VkZW5cIjtcclxuaW1wb3J0IHsgbXV0YXRpb25PcHRpb25zLCBxdWVyeU9wdGlvbnMsIHR5cGUgVXNlTXV0YXRpb25PcHRpb25zIH0gZnJvbSBcIkB0YW5zdGFjay9yZWFjdC1xdWVyeVwiO1xyXG5cclxudHlwZSBFZGVuRm48SSA9IGFueSwgVCBleHRlbmRzIFJlY29yZDxudW1iZXIsIHVua25vd24+ID0gUmVjb3JkPG51bWJlciwgdW5rbm93bj4+ID0gKGlucHV0OiBJKSA9PiBQcm9taXNlPFRyZWF0eS5UcmVhdHlSZXNwb25zZTxUPj47XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdHJlYXR5TXV0YXRpb25PcHRpb25zPFxyXG4gIFQgZXh0ZW5kcyBFZGVuRm4sXHJcbiAgUCBleHRlbmRzIFBhcmFtZXRlcnM8VD4sXHJcbiAgUiBleHRlbmRzIEF3YWl0ZWQ8UmV0dXJuVHlwZTxUPj5cclxuPihwYXJhbXM6IHtcclxuICBmbjogVCxcclxufSAmIE9taXQ8XHJcbiAgUGFyYW1ldGVyczx0eXBlb2YgbXV0YXRpb25PcHRpb25zPFJbXCJkYXRhXCJdLCBSW1wiZXJyb3JcIl0sIFBbMF0+PlswXSwgXHJcbiAgXCJtdXRhdGlvbkZuXCJcclxuPikge1xyXG4gIHJldHVybiBtdXRhdGlvbk9wdGlvbnM8UltcImRhdGFcIl0sIFJbXCJlcnJvclwiXSwgUFswXT4oe1xyXG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHZhcmlhYmxlcykgPT4ge1xyXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHBhcmFtcy5mbih2YXJpYWJsZXMpO1xyXG4gICAgICBjb25zdCB7IGRhdGEsIGVycm9yIH0gPSByZXNwb25zZTtcclxuICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICB9LFxyXG4gICAgLi4ucGFyYW1zLFxyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdHJlYXR5UXVlcnlPcHRpb25zPFxyXG4gIFQgZXh0ZW5kcyBFZGVuRm4sXHJcbiAgUCBleHRlbmRzIFBhcmFtZXRlcnM8VD4sXHJcbiAgUiBleHRlbmRzIEF3YWl0ZWQ8UmV0dXJuVHlwZTxUPj5cclxuPihwYXJhbXM6IHtcclxuICBxdWVyeUtleTogc3RyaW5nW107XHJcbiAgZm46IFRcclxufSAmIE9taXQ8XHJcbiAgUGFyYW1ldGVyczx0eXBlb2YgcXVlcnlPcHRpb25zPFJbXCJkYXRhXCJdLCBSW1wiZXJyb3JcIl0sIFBbMF0+PlswXSwgXHJcbiAgXCJxdWVyeUZuXCJcclxuPikge1xyXG4gIHJldHVybiBxdWVyeU9wdGlvbnM8UltcImRhdGFcIl0sIFJbXCJlcnJvclwiXSwgUFswXT4oe1xyXG4gICAgcXVlcnlLZXk6IHBhcmFtcy5xdWVyeUtleSxcclxuICAgIHF1ZXJ5Rm46IGFzeW5jICh2YXJpYWJsZXMpID0+IHtcclxuICAgICAgY29uc3QgeyBkYXRhLCBlcnJvciB9ID0gYXdhaXQgcGFyYW1zLmZuKHZhcmlhYmxlcyk7XHJcbiAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcbiIKICBdLAogICJtYXBwaW5ncyI6ICI7QUFDQTtBQUlPLFNBQVMscUJBSWYsQ0FBQyxRQUtDO0FBQUEsRUFDRCxPQUFPLGdCQUE2QztBQUFBLElBQ2xELFlBQVksT0FBTyxjQUFjO0FBQUEsTUFDL0IsTUFBTSxXQUFXLE1BQU0sT0FBTyxHQUFHLFNBQVM7QUFBQSxNQUMxQyxRQUFRLE1BQU0sVUFBVTtBQUFBLE1BQ3hCLElBQUksT0FBTztBQUFBLFFBQ1QsTUFBTTtBQUFBLE1BQ1I7QUFBQSxNQUNBLE9BQU87QUFBQTtBQUFBLE9BRU47QUFBQSxFQUNMLENBQUM7QUFBQTtBQUdJLFNBQVMsa0JBSWYsQ0FBQyxRQU1DO0FBQUEsRUFDRCxPQUFPLGFBQTBDO0FBQUEsSUFDL0MsVUFBVSxPQUFPO0FBQUEsSUFDakIsU0FBUyxPQUFPLGNBQWM7QUFBQSxNQUM1QixRQUFRLE1BQU0sVUFBVSxNQUFNLE9BQU8sR0FBRyxTQUFTO0FBQUEsTUFDakQsSUFBSSxPQUFPO0FBQUEsUUFDVCxNQUFNO0FBQUEsTUFDUjtBQUFBLE1BQ0EsT0FBTztBQUFBO0FBQUEsRUFFWCxDQUFDO0FBQUE7IiwKICAiZGVidWdJZCI6ICJGQjk2RDIzQTI3Q0VERUVFNjQ3NTZFMjE2NDc1NkUyMSIsCiAgIm5hbWVzIjogW10KfQ==
33
+ //# debugId=42FF79B46773B5DF64756E2164756E21
34
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjXFxsaWIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiaW1wb3J0IHR5cGUgeyBUcmVhdHkgfSBmcm9tIFwiQGVseXNpYWpzL2VkZW5cIjtcclxuaW1wb3J0IHsgbXV0YXRpb25PcHRpb25zLCBxdWVyeU9wdGlvbnMsIHVzZVF1ZXJ5LCB0eXBlIFVzZU11dGF0aW9uT3B0aW9ucywgdHlwZSBVc2VNdXRhdGlvblJlc3VsdCwgdHlwZSBVc2VRdWVyeU9wdGlvbnMgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XHJcblxyXG50eXBlIEVkZW5NdXRhdGlvbkZuPFxyXG4gIFRCb2R5ID0gYW55LCBcclxuICBUT3B0aW9ucyA9IGFueSwgXHJcbiAgVFJlc3BvbnNlIGV4dGVuZHMgUmVjb3JkPG51bWJlciwgdW5rbm93bj4gPSBSZWNvcmQ8bnVtYmVyLCB1bmtub3duPlxyXG4+ID0gKFxyXG4gIChib2R5OiBUQm9keSwgb3B0aW9uczogVE9wdGlvbnMpID0+IFByb21pc2U8VHJlYXR5LlRyZWF0eVJlc3BvbnNlPFRSZXNwb25zZT4+XHJcbik7XHJcblxyXG50eXBlIEVkZW5RdWVyeUZuPFxyXG4gIFRSZXNwb25zZSBleHRlbmRzIFJlY29yZDxudW1iZXIsIHVua25vd24+ID0gUmVjb3JkPG51bWJlciwgdW5rbm93bj5cclxuPiA9IChcclxuICAoKSA9PiBQcm9taXNlPFRyZWF0eS5UcmVhdHlSZXNwb25zZTxUUmVzcG9uc2U+PlxyXG4pO1xyXG5cclxudHlwZSBJbmZlck11dGF0aW9uVmFyaWFibGVzPFRGbiBleHRlbmRzIEVkZW5NdXRhdGlvbkZuPiA9IChcclxuICB1bmtub3duIGV4dGVuZHMgUGFyYW1ldGVyczxURm4+WzBdXHJcbiAgICA/IFBhcmFtZXRlcnM8VEZuPlsxXVxyXG4gICAgOiBQYXJhbWV0ZXJzPFRGbj5bMV0gJiB7IGJvZHk6IFBhcmFtZXRlcnM8VEZuPlswXSB9XHJcbik7XHJcblxyXG50eXBlIEluZmVyTXV0YXRpb25PcHRpb25zPFRGbiBleHRlbmRzIEVkZW5NdXRhdGlvbkZuPiA9IChcclxuICBVc2VNdXRhdGlvbk9wdGlvbnM8XHJcbiAgICBBd2FpdGVkPFJldHVyblR5cGU8VEZuPj5bXCJkYXRhXCJdLFxyXG4gICAgQXdhaXRlZDxSZXR1cm5UeXBlPFRGbj4+W1wiZXJyb3JcIl0sXHJcbiAgICBJbmZlck11dGF0aW9uVmFyaWFibGVzPFRGbj5cclxuICA+XHJcbik7XHJcblxyXG50eXBlIEluZmVyUXVlcnlPcHRpb25zPFxyXG4gIFRGbiBleHRlbmRzIEVkZW5RdWVyeUZuLCBcclxuPiA9IChcclxuICBVc2VRdWVyeU9wdGlvbnM8XHJcbiAgICBBd2FpdGVkPFJldHVyblR5cGU8VEZuPj5bXCJkYXRhXCJdLFxyXG4gICAgQXdhaXRlZDxSZXR1cm5UeXBlPFRGbj4+W1wiZXJyb3JcIl1cclxuICA+XHJcbik7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdHJlYXR5TXV0YXRpb25PcHRpb25zPFRGbiBleHRlbmRzIEVkZW5NdXRhdGlvbkZuPihcclxuICBmbjogVEZuLFxyXG4gIG9wdGlvbnM/OiBPbWl0PEluZmVyTXV0YXRpb25PcHRpb25zPFRGbj4sIFwibXV0YXRpb25GblwiPlxyXG4pOiBJbmZlck11dGF0aW9uT3B0aW9uczxURm4+IHtcclxuICByZXR1cm4gbXV0YXRpb25PcHRpb25zKHtcclxuICAgIG11dGF0aW9uRm46IGFzeW5jICh2YXJpYWJsZXMpID0+IHtcclxuICAgICAgY29uc3QgeyBib2R5LCAuLi5yZXN0IH0gPSB2YXJpYWJsZXM7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZm4oYm9keSwgcmVzdCk7XHJcbiAgICAgIGNvbnN0IHsgZGF0YSwgZXJyb3IgfSA9IHJlc3BvbnNlO1xyXG4gICAgICBpZiAoZXJyb3IpIHRocm93IGVycm9yO1xyXG4gICAgICByZXR1cm4gZGF0YTtcclxuICAgIH0sXHJcbiAgICAuLi5vcHRpb25zLFxyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdHJlYXR5UXVlcnlPcHRpb25zPFxyXG4gIFRGbiBleHRlbmRzIEVkZW5RdWVyeUZuLFxyXG4+KFxyXG4gIGZuOiBURm4sXHJcbiAgb3B0aW9uczogT21pdDxJbmZlclF1ZXJ5T3B0aW9uczxURm4+LCBcInF1ZXJ5Rm5cIj5cclxuKTogSW5mZXJRdWVyeU9wdGlvbnM8VEZuPiB7XHJcbiAgcmV0dXJuIHF1ZXJ5T3B0aW9ucyh7XHJcbiAgICBxdWVyeUZuOiBhc3luYyAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZm4oKTtcclxuICAgICAgY29uc3QgeyBkYXRhLCBlcnJvciB9ID0gcmVzcG9uc2U7XHJcbiAgICAgIGlmIChlcnJvcikgdGhyb3cgZXJyb3I7XHJcbiAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgfSxcclxuICAgIC4uLm9wdGlvbnMsXHJcbiAgfSkgYXMgSW5mZXJRdWVyeU9wdGlvbnM8VEZuPjtcclxufSIKICBdLAogICJtYXBwaW5ncyI6ICI7QUFDQTtBQXVDTyxTQUFTLHFCQUFpRCxDQUMvRCxJQUNBLFNBQzJCO0FBQUEsRUFDM0IsT0FBTyxnQkFBZ0I7QUFBQSxJQUNyQixZQUFZLE9BQU8sY0FBYztBQUFBLE1BQy9CLFFBQVEsU0FBUyxTQUFTO0FBQUEsTUFDMUIsTUFBTSxXQUFXLE1BQU0sR0FBRyxNQUFNLElBQUk7QUFBQSxNQUNwQyxRQUFRLE1BQU0sVUFBVTtBQUFBLE1BQ3hCLElBQUk7QUFBQSxRQUFPLE1BQU07QUFBQSxNQUNqQixPQUFPO0FBQUE7QUFBQSxPQUVOO0FBQUEsRUFDTCxDQUFDO0FBQUE7QUFHSSxTQUFTLGtCQUVmLENBQ0MsSUFDQSxTQUN3QjtBQUFBLEVBQ3hCLE9BQU8sYUFBYTtBQUFBLElBQ2xCLFNBQVMsWUFBWTtBQUFBLE1BQ25CLE1BQU0sV0FBVyxNQUFNLEdBQUc7QUFBQSxNQUMxQixRQUFRLE1BQU0sVUFBVTtBQUFBLE1BQ3hCLElBQUk7QUFBQSxRQUFPLE1BQU07QUFBQSxNQUNqQixPQUFPO0FBQUE7QUFBQSxPQUVOO0FBQUEsRUFDTCxDQUFDO0FBQUE7IiwKICAiZGVidWdJZCI6ICI0MkZGNzlCNDY3NzNCNURGNjQ3NTZFMjE2NDc1NkUyMSIsCiAgIm5hbWVzIjogW10KfQ==
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.1.0",
4
+ "version": "0.1.2",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist"
@@ -18,6 +18,14 @@
18
18
  "./package.json": "./package.json"
19
19
  },
20
20
  "license": "MIT",
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "git+https://github.com/eyueldk/eden2query.git"
24
+ },
25
+ "homepage": "https://github.com/eyueldk/eden2query#readme",
26
+ "bugs": {
27
+ "url": "https://github.com/eyueldk/eden2query/issues"
28
+ },
21
29
  "keywords": [
22
30
  "elysia",
23
31
  "eden",
@@ -35,8 +43,6 @@
35
43
  "typescript": "^5"
36
44
  },
37
45
  "devDependencies": {
38
- "@elysiajs/eden": "^1.4.6",
39
- "@tanstack/react-query": "^5.90.20",
40
46
  "@types/bun": "latest",
41
47
  "bunup": "^0.16.22",
42
48
  "elysia": "^1.4.22"