eden2query 0.1.2 → 0.2.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.
package/README.md CHANGED
@@ -12,22 +12,22 @@ bun add eden2query @elysiajs/eden @tanstack/react-query
12
12
 
13
13
  ```ts
14
14
  import { treaty } from "@elysiajs/eden";
15
- import { treatyQueryOptions, treatyMutationOptions } from "eden2query";
15
+ import { edenQueryOptions, edenMutationOptions } from "eden2query";
16
16
  import type { App } from "./server"; // your Elysia app type
17
17
 
18
18
  const client = treaty<App>("localhost:3000");
19
19
 
20
20
  // GET → queryOptions (first arg is a thunk that calls the Eden GET function)
21
- const resourceQuery = treatyQueryOptions(
21
+ const resourceQuery = edenQueryOptions(
22
22
  () => client.api.resource.get({ query: { q: "hello" } }),
23
23
  { queryKey: ["resource"] },
24
24
  );
25
25
 
26
26
  // POST / PUT / DELETE → mutationOptions
27
- const createResource = treatyMutationOptions(client.api.resource.post);
27
+ const createResource = edenMutationOptions(client.api.resource.post);
28
28
 
29
29
  // Parameterised routes — bind params first
30
- const updateResource = treatyMutationOptions(
30
+ const updateResource = edenMutationOptions(
31
31
  client.api.resource({ id: "some-id" }).put,
32
32
  );
33
33
  ```
@@ -51,12 +51,12 @@ await queryClient.prefetchQuery(resourceQuery);
51
51
  You can also pass any standard React Query options as the second argument:
52
52
 
53
53
  ```ts
54
- const resourceQuery = treatyQueryOptions(
54
+ const resourceQuery = edenQueryOptions(
55
55
  () => client.api.resource.get({ query: { q: "hello" } }),
56
56
  { queryKey: ["resource"], refetchInterval: 1000 },
57
57
  );
58
58
 
59
- const createResource = treatyMutationOptions(
59
+ const createResource = edenMutationOptions(
60
60
  client.api.resource.post,
61
61
  { onSuccess: () => console.log("created!") },
62
62
  );
@@ -64,11 +64,15 @@ const createResource = treatyMutationOptions(
64
64
 
65
65
  ## API
66
66
 
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`.
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`.
68
68
 
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.
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.
70
70
 
71
- Both infer data, error, and input types end-to-end from your Elysia route definitions. No manual generics needed.
71
+ **`InferQueryOptions<TFn>`** extracts the full `UseQueryOptions` type for a given Eden GET thunk.
72
+
73
+ **`InferMutationOptions<TFn>`** — extracts the full `UseMutationOptions` type for a given Eden mutation function.
74
+
75
+ All helpers infer data, error, and input types end-to-end from your Elysia route definitions. No manual generics needed.
72
76
 
73
77
  ## License
74
78
 
package/dist/index.d.ts CHANGED
@@ -11,6 +11,6 @@ type InferMutationVariables<TFn extends EdenMutationFn> = (unknown extends Param
11
11
  });
12
12
  type InferMutationOptions<TFn extends EdenMutationFn> = (UseMutationOptions<Awaited<ReturnType<TFn>>["data"], Awaited<ReturnType<TFn>>["error"], InferMutationVariables<TFn>>);
13
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>;
16
- export { treatyQueryOptions, treatyMutationOptions };
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 };
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // src/lib.ts
2
2
  import { mutationOptions, queryOptions } from "@tanstack/react-query";
3
- function treatyMutationOptions(fn, options) {
3
+ function edenMutationOptions(fn, options) {
4
4
  return mutationOptions({
5
5
  mutationFn: async (variables) => {
6
6
  const { body, ...rest } = variables;
@@ -13,7 +13,7 @@ function treatyMutationOptions(fn, options) {
13
13
  ...options
14
14
  });
15
15
  }
16
- function treatyQueryOptions(fn, options) {
16
+ function edenQueryOptions(fn, options) {
17
17
  return queryOptions({
18
18
  queryFn: async () => {
19
19
  const response = await fn();
@@ -26,9 +26,9 @@ function treatyQueryOptions(fn, options) {
26
26
  });
27
27
  }
28
28
  export {
29
- treatyQueryOptions,
30
- treatyMutationOptions
29
+ edenQueryOptions,
30
+ edenMutationOptions
31
31
  };
32
32
 
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==
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=
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.2",
4
+ "version": "0.2.0",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist"