eden2query 0.3.5 → 0.3.6
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 +40 -38
- package/dist/index.d.ts +47 -42
- package/dist/index.js +75 -29
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -67,56 +67,58 @@ const queryClient = new QueryClient();
|
|
|
67
67
|
queryClient.prefetchQuery(getOptions);
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
-
### Hook builders: `
|
|
70
|
+
### Hook builders: `treatyQueryHook` / `treatyMutationHook`
|
|
71
71
|
|
|
72
|
-
Create reusable, pre-configured hooks for a Treaty endpoint. The
|
|
72
|
+
Create reusable, pre-configured hooks for a Treaty endpoint. The first parameter is the **Treaty function**, and the second optional parameter is **`useOptions`** — a hook that returns default options (so you can use React hooks like `useQueryClient()`).
|
|
73
73
|
|
|
74
|
-
**
|
|
74
|
+
**Mutation hook** — pass the mutation function and optional `useOptions`:
|
|
75
75
|
|
|
76
76
|
```ts
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
77
|
+
function myMutationFn(variables: { name: string; q: string }) {
|
|
78
|
+
return client.api.resource.post(
|
|
79
|
+
{ name: variables.name },
|
|
80
|
+
{ query: { q: variables.q } }
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const useMutationHook = treatyMutationHook(myMutationFn, () => {
|
|
85
|
+
const queryClient = useQueryClient();
|
|
86
|
+
return {
|
|
87
|
+
onSuccess: () => {
|
|
88
|
+
queryClient.invalidateQueries({ queryKey: ["resource"] });
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
});
|
|
81
92
|
|
|
82
93
|
// In a component
|
|
83
|
-
const
|
|
94
|
+
const mutationResult = useMutationHook({
|
|
95
|
+
onSuccess: (data, variables) => {
|
|
96
|
+
console.log(data, variables);
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
mutationResult.mutate({
|
|
100
|
+
name: "World",
|
|
101
|
+
q: "hello",
|
|
102
|
+
});
|
|
84
103
|
```
|
|
85
104
|
|
|
86
|
-
**
|
|
105
|
+
**Query hook** — pass the query function and optional `useOptions` that receives the `request` and returns options including `queryKey`:
|
|
87
106
|
|
|
88
107
|
```ts
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
{ onSuccess: () => console.log("Success") },
|
|
93
|
-
);
|
|
108
|
+
function myQueryFn(request: { q: string }) {
|
|
109
|
+
return client.api.resource.get({ query: { q: request.q } });
|
|
110
|
+
}
|
|
94
111
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
const queryClient = useQueryClient();
|
|
100
|
-
return {
|
|
101
|
-
onSettled(...args) {
|
|
102
|
-
queryClient.invalidateQueries({ queryKey: ["resource"] });
|
|
103
|
-
options.onSettled?.(...args);
|
|
104
|
-
},
|
|
105
|
-
};
|
|
106
|
-
},
|
|
107
|
-
);
|
|
112
|
+
const useQueryHook = treatyQueryHook(myQueryFn, (request) => ({
|
|
113
|
+
queryKey: ["resource", request] as const,
|
|
114
|
+
enabled: true,
|
|
115
|
+
}));
|
|
108
116
|
|
|
109
117
|
// In a component
|
|
110
|
-
const
|
|
111
|
-
postMutation.mutate({ body: { name: "World" } });
|
|
112
|
-
|
|
113
|
-
const postWithInvalidation = usePostResourceWithInvalidation({
|
|
114
|
-
onSuccess: () => console.log("Success"),
|
|
115
|
-
});
|
|
116
|
-
postWithInvalidation.mutate({ body: { name: "World" } });
|
|
118
|
+
const queryResult = useQueryHook({ q: "hello" });
|
|
117
119
|
```
|
|
118
120
|
|
|
119
|
-
Hooks accept the same options as `useQuery` / `useMutation`; call-time options are merged with the base options from `useOptions`.
|
|
121
|
+
Hooks accept the same options as `useQuery` / `useMutation`; call-time options are merged with the base options from `useOptions`. Callbacks are chained: base options run first, then `useOptions` callbacks, then call-site callbacks.
|
|
120
122
|
|
|
121
123
|
## API
|
|
122
124
|
|
|
@@ -125,13 +127,13 @@ Hooks accept the same options as `useQuery` / `useMutation`; call-time options a
|
|
|
125
127
|
**`treatyMutationOptions(fn, mutationOptions?)`** — wraps a Treaty mutation into `mutationOptions`. Two shapes:
|
|
126
128
|
|
|
127
129
|
- **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.
|
|
128
|
-
- **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
|
|
130
|
+
- **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`).
|
|
129
131
|
|
|
130
132
|
The optional second argument accepts all `mutationOptions` fields except `mutationFn` (e.g. `onSuccess`, `onSettled`, `onMutate`).
|
|
131
133
|
|
|
132
|
-
**`
|
|
134
|
+
**`treatyMutationHook(mutationFn, useOptions?)`** — returns a hook that wraps `useMutation` with the given Treaty mutation function. **`mutationFn`** is the Treaty mutation function (e.g. `myMutationFn`). **`useOptions`** is optional; it's a hook that returns default mutation options (so you can use `useQueryClient()` for invalidation). The returned hook accepts the same options as `useMutation`; callbacks are chained (base → `useOptions` → call-site).
|
|
133
135
|
|
|
134
|
-
**`
|
|
136
|
+
**`treatyQueryHook(queryFn, useOptions?)`** — returns a hook that wraps `useQuery` with the given Treaty query function. **`queryFn`** is the Treaty query function (e.g. `myQueryFn`). **`useOptions`** is optional; it's a function `(request) => ...` that receives the query request and returns default query options including `queryKey` (so you can use React hooks like `useQueryClient()`). The returned hook is called with `(request, options?)`; callbacks are chained (base → `useOptions` → call-site).
|
|
135
137
|
|
|
136
138
|
**`InferTreatyQueryOptions<T>`** — full `UseQueryOptions` type for a given Treaty query.
|
|
137
139
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,43 +1,48 @@
|
|
|
1
1
|
import { Treaty } from "@elysiajs/eden";
|
|
2
|
-
import { UseMutationOptions, UseMutationResult, UseQueryOptions, UseQueryResult } from "@tanstack/react-query";
|
|
3
|
-
type
|
|
4
|
-
type
|
|
5
|
-
type
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
type
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
>
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
2
|
+
import { QueryKey, UseMutationOptions, UseMutationResult, UseQueryOptions, UseQueryResult } from "@tanstack/react-query";
|
|
3
|
+
type TreatyFunction = (...request: any[]) => Promise<Treaty.TreatyResponse<Record<number, unknown>>>;
|
|
4
|
+
type InferTreatyData<TFn extends TreatyFunction> = Awaited<ReturnType<TFn>>["data"];
|
|
5
|
+
type InferTreatyError<TFn extends TreatyFunction> = Awaited<ReturnType<TFn>>["error"];
|
|
6
|
+
type InferTreatyRequest<TFn extends TreatyFunction> = Parameters<TFn>[0];
|
|
7
|
+
type InferTreatyMutationOptions<TFn extends TreatyFunction> = UseMutationOptions<InferTreatyData<TFn>, InferTreatyError<TFn>, InferTreatyRequest<TFn>>;
|
|
8
|
+
type InferTreatyQueryOptions<
|
|
9
|
+
TFn extends TreatyFunction,
|
|
10
|
+
TQueryKey extends QueryKey = unknown[]
|
|
11
|
+
> = UseQueryOptions<InferTreatyData<TFn>, InferTreatyError<TFn>, InferTreatyData<TFn>, TQueryKey>;
|
|
12
|
+
declare function treatyMutationOptions<TFn extends TreatyFunction>(options: {
|
|
13
|
+
mutationFn: TFn;
|
|
14
|
+
} & Omit<InferTreatyMutationOptions<TFn>, "mutationFn">): InferTreatyMutationOptions<TFn>;
|
|
15
|
+
declare function treatyQueryOptions<
|
|
16
|
+
TFn extends TreatyFunction,
|
|
17
|
+
const TQueryKey extends QueryKey
|
|
18
|
+
>(options: {
|
|
19
|
+
queryKey: TQueryKey;
|
|
20
|
+
queryFn: TFn;
|
|
21
|
+
} & Omit<InferTreatyQueryOptions<TFn, TQueryKey>, "queryKey" | "queryFn">): InferTreatyQueryOptions<TFn, TQueryKey>;
|
|
22
|
+
type UseTreatyMutationResult<TFn extends TreatyFunction> = UseMutationResult<InferTreatyData<TFn>, InferTreatyError<TFn>, InferTreatyRequest<TFn>>;
|
|
23
|
+
type UseTreatyQueryResult<
|
|
24
|
+
TFn extends TreatyFunction,
|
|
25
|
+
TQueryKey extends QueryKey = unknown[]
|
|
26
|
+
> = UseQueryResult<InferTreatyData<TFn>, InferTreatyError<TFn>>;
|
|
27
|
+
type TreatyMutationHookOptions<TFn extends TreatyFunction> = Omit<InferTreatyMutationOptions<TFn>, "mutationFn">;
|
|
28
|
+
type TreatyQueryHookOptions<
|
|
29
|
+
TFn extends TreatyFunction,
|
|
30
|
+
TQueryKey extends QueryKey = unknown[]
|
|
31
|
+
> = Omit<InferTreatyQueryOptions<TFn, TQueryKey>, "queryKey" | "queryFn">;
|
|
32
|
+
type TreatyQueryHookUseOptions<
|
|
33
|
+
TFn extends TreatyFunction,
|
|
34
|
+
TQueryKey extends QueryKey = unknown[]
|
|
35
|
+
> = {
|
|
36
|
+
queryKey: TQueryKey;
|
|
37
|
+
} & TreatyQueryHookOptions<TFn, TQueryKey>;
|
|
38
|
+
type TreatyMutationHook<TFn extends TreatyFunction> = (options?: TreatyMutationHookOptions<TFn>) => UseTreatyMutationResult<TFn>;
|
|
39
|
+
type TreatyQueryHook<
|
|
40
|
+
TFn extends TreatyFunction,
|
|
41
|
+
TQueryKey extends QueryKey = unknown[]
|
|
42
|
+
> = (request: InferTreatyRequest<TFn>, options?: TreatyQueryHookOptions<TFn, TQueryKey>) => UseTreatyQueryResult<TFn, TQueryKey>;
|
|
43
|
+
declare function treatyMutationHook<TFn extends TreatyFunction>(mutationFn: TFn, useOptions?: () => TreatyMutationHookOptions<TFn>): TreatyMutationHook<TFn>;
|
|
44
|
+
declare function treatyQueryHook<
|
|
45
|
+
TFn extends TreatyFunction,
|
|
46
|
+
TQueryKey extends QueryKey = QueryKey
|
|
47
|
+
>(queryFn: TFn, useOptions?: (request: InferTreatyRequest<TFn>) => TreatyQueryHookUseOptions<TFn, TQueryKey>): TreatyQueryHook<TFn, TQueryKey>;
|
|
48
|
+
export { treatyQueryOptions, treatyQueryHook, treatyMutationOptions, treatyMutationHook, InferTreatyQueryOptions, InferTreatyMutationOptions };
|
package/dist/index.js
CHANGED
|
@@ -1,15 +1,57 @@
|
|
|
1
|
-
// src/
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
// src/treaty.ts
|
|
2
|
+
import { mutationOptions, queryOptions, useMutation, useQuery } from "@tanstack/react-query";
|
|
3
|
+
|
|
4
|
+
// src/utils.ts
|
|
5
|
+
function mergeMutationOptions(base, options) {
|
|
6
|
+
if (!options)
|
|
7
|
+
return base;
|
|
8
|
+
const { onSuccess, onError, onSettled, onMutate, ...rest } = options;
|
|
9
|
+
return {
|
|
10
|
+
...base,
|
|
11
|
+
...rest,
|
|
12
|
+
...onMutate !== undefined && {
|
|
13
|
+
onMutate: async (variables, context) => {
|
|
14
|
+
const prev = await base.onMutate?.(variables, context);
|
|
15
|
+
const next = await options.onMutate?.(variables, context);
|
|
16
|
+
return next !== undefined ? next : prev;
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
...onSuccess !== undefined && {
|
|
20
|
+
onSuccess: async (data, variables, onMutateResult, context) => {
|
|
21
|
+
await base.onSuccess?.(data, variables, onMutateResult, context);
|
|
22
|
+
await options.onSuccess?.(data, variables, onMutateResult, context);
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
...onError !== undefined && {
|
|
26
|
+
onError: async (error, variables, onMutateResult, context) => {
|
|
27
|
+
await base.onError?.(error, variables, onMutateResult, context);
|
|
28
|
+
await options.onError?.(error, variables, onMutateResult, context);
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
...onSettled !== undefined && {
|
|
32
|
+
onSettled: async (data, error, variables, onMutateResult, context) => {
|
|
33
|
+
await base.onSettled?.(data, error, variables, onMutateResult, context);
|
|
34
|
+
await options.onSettled?.(data, error, variables, onMutateResult, context);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function mergeQueryOptions(base, options) {
|
|
40
|
+
if (!options)
|
|
41
|
+
return base;
|
|
42
|
+
return {
|
|
43
|
+
...base,
|
|
44
|
+
...options
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// src/treaty.ts
|
|
49
|
+
function treatyMutationOptions(options) {
|
|
50
|
+
const { mutationFn, ...rest } = options;
|
|
9
51
|
return mutationOptions({
|
|
10
|
-
...
|
|
52
|
+
...rest,
|
|
11
53
|
mutationFn: async (variables) => {
|
|
12
|
-
const response = await (
|
|
54
|
+
const response = await mutationFn(variables);
|
|
13
55
|
const { data, error } = response;
|
|
14
56
|
if (error)
|
|
15
57
|
throw error;
|
|
@@ -17,11 +59,13 @@ function treatyMutationOptions(fn, options) {
|
|
|
17
59
|
}
|
|
18
60
|
});
|
|
19
61
|
}
|
|
20
|
-
function treatyQueryOptions(
|
|
62
|
+
function treatyQueryOptions(options) {
|
|
63
|
+
const { queryFn, queryKey, ...rest } = options;
|
|
21
64
|
return queryOptions({
|
|
22
|
-
...
|
|
65
|
+
...rest,
|
|
66
|
+
queryKey,
|
|
23
67
|
queryFn: async () => {
|
|
24
|
-
const response = await
|
|
68
|
+
const response = await queryFn();
|
|
25
69
|
const { data, error } = response;
|
|
26
70
|
if (error)
|
|
27
71
|
throw error;
|
|
@@ -29,30 +73,32 @@ function treatyQueryOptions(fn, options) {
|
|
|
29
73
|
}
|
|
30
74
|
});
|
|
31
75
|
}
|
|
32
|
-
function
|
|
76
|
+
function treatyMutationHook(mutationFn, useOptions) {
|
|
33
77
|
return (options) => {
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
});
|
|
78
|
+
const baseOptions = treatyMutationOptions({ mutationFn });
|
|
79
|
+
const defaultOptions = useOptions?.();
|
|
80
|
+
const merged = mergeMutationOptions(mergeMutationOptions(baseOptions, defaultOptions), options);
|
|
81
|
+
return useMutation(merged);
|
|
39
82
|
};
|
|
40
83
|
}
|
|
41
|
-
function
|
|
42
|
-
return (options) => {
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
84
|
+
function treatyQueryHook(queryFn, useOptions) {
|
|
85
|
+
return (request, options) => {
|
|
86
|
+
const defaultOptions = useOptions?.(request);
|
|
87
|
+
const baseOptions = treatyQueryOptions({
|
|
88
|
+
queryKey: defaultOptions?.queryKey ?? ["resource", request],
|
|
89
|
+
queryFn: () => queryFn(request),
|
|
90
|
+
...defaultOptions
|
|
47
91
|
});
|
|
92
|
+
const merged = mergeQueryOptions(baseOptions, options);
|
|
93
|
+
return useQuery(merged);
|
|
48
94
|
};
|
|
49
95
|
}
|
|
50
96
|
export {
|
|
51
97
|
treatyQueryOptions,
|
|
98
|
+
treatyQueryHook,
|
|
52
99
|
treatyMutationOptions,
|
|
53
|
-
|
|
54
|
-
createTreatyMutationHook
|
|
100
|
+
treatyMutationHook
|
|
55
101
|
};
|
|
56
102
|
|
|
57
|
-
//# debugId=
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjXFxsaWIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbCiAgICAiaW1wb3J0IHR5cGUgeyBUcmVhdHkgfSBmcm9tIFwiQGVseXNpYWpzL2VkZW5cIjtcclxuaW1wb3J0IHtcclxuICBtdXRhdGlvbk9wdGlvbnMsXHJcbiAgcXVlcnlPcHRpb25zLFxyXG4gIHVzZU11dGF0aW9uLFxyXG4gIHVzZVF1ZXJ5LFxyXG4gIHR5cGUgVXNlTXV0YXRpb25PcHRpb25zLFxyXG4gIHR5cGUgVXNlTXV0YXRpb25SZXN1bHQsXHJcbiAgdHlwZSBVc2VRdWVyeU9wdGlvbnMsXHJcbiAgdHlwZSBVc2VRdWVyeVJlc3VsdCxcclxufSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XHJcblxyXG50eXBlIFRyZWF0eVJlc3BvbnNlID0gUmVjb3JkPG51bWJlciwgdW5rbm93bj47XHJcblxyXG5leHBvcnQgdHlwZSBUcmVhdHlGdW5jdGlvbldpdGhvdXRQYXJhbXM8XHJcbiAgVFJlc3BvbnNlIGV4dGVuZHMgVHJlYXR5UmVzcG9uc2UgPSBUcmVhdHlSZXNwb25zZSxcclxuPiA9ICgpID0+IFByb21pc2U8VHJlYXR5LlRyZWF0eVJlc3BvbnNlPFRSZXNwb25zZT4+O1xyXG5cclxuZXhwb3J0IHR5cGUgVHJlYXR5RnVuY3Rpb25XaXRoUGFyYW1zPFxyXG4gIFRQYXJhbXMsXHJcbiAgVFJlc3BvbnNlIGV4dGVuZHMgVHJlYXR5UmVzcG9uc2UsXHJcbj4gPSAocGFyYW1zOiBUUGFyYW1zKSA9PiBQcm9taXNlPFRyZWF0eS5UcmVhdHlSZXNwb25zZTxUUmVzcG9uc2U+PjtcclxuXHJcbmV4cG9ydCB0eXBlIFRyZWF0eUZ1bmN0aW9uPFRQYXJhbXMsIFRSZXNwb25zZSBleHRlbmRzIFRyZWF0eVJlc3BvbnNlPiA9XHJcbiAgfCBUcmVhdHlGdW5jdGlvbldpdGhvdXRQYXJhbXM8VFJlc3BvbnNlPlxyXG4gIHwgVHJlYXR5RnVuY3Rpb25XaXRoUGFyYW1zPFRQYXJhbXMsIFRSZXNwb25zZT47XHJcblxyXG5leHBvcnQgdHlwZSBUcmVhdHlEYXRhPFRSZXNwb25zZSBleHRlbmRzIFRyZWF0eVJlc3BvbnNlPiA9XHJcbiAgVHJlYXR5LlRyZWF0eVJlc3BvbnNlPFRSZXNwb25zZT5bXCJkYXRhXCJdO1xyXG5cclxuZXhwb3J0IHR5cGUgVHJlYXR5RXJyb3I8VFJlc3BvbnNlIGV4dGVuZHMgVHJlYXR5UmVzcG9uc2U+ID1cclxuICBUcmVhdHkuVHJlYXR5UmVzcG9uc2U8VFJlc3BvbnNlPltcImVycm9yXCJdO1xyXG5cclxuZXhwb3J0IHR5cGUgVHJlYXR5TXV0YXRpb25PcHRpb25zPFxyXG4gIFRWYXJpYWJsZXMsXHJcbiAgVFJlc3BvbnNlIGV4dGVuZHMgVHJlYXR5UmVzcG9uc2UsXHJcbj4gPSBVc2VNdXRhdGlvbk9wdGlvbnM8XHJcbiAgVHJlYXR5RGF0YTxUUmVzcG9uc2U+LFxyXG4gIFRyZWF0eUVycm9yPFRSZXNwb25zZT4sXHJcbiAgVFZhcmlhYmxlc1xyXG4+O1xyXG5cclxuZXhwb3J0IHR5cGUgVXNlVHJlYXR5TXV0YXRpb25SZXN1bHQ8XHJcbiAgVFZhcmlhYmxlcyxcclxuICBUUmVzcG9uc2UgZXh0ZW5kcyBUcmVhdHlSZXNwb25zZSxcclxuPiA9IFVzZU11dGF0aW9uUmVzdWx0PFxyXG4gIFRyZWF0eURhdGE8VFJlc3BvbnNlPixcclxuICBUcmVhdHlFcnJvcjxUUmVzcG9uc2U+LFxyXG4gIFRWYXJpYWJsZXNcclxuPjtcclxuXHJcbmV4cG9ydCB0eXBlIFVzZVRyZWF0eVF1ZXJ5UmVzdWx0PFRSZXNwb25zZSBleHRlbmRzIFRyZWF0eVJlc3BvbnNlPiA9XHJcbiAgVXNlUXVlcnlSZXN1bHQ8VHJlYXR5RGF0YTxUUmVzcG9uc2U+LCBUcmVhdHlFcnJvcjxUUmVzcG9uc2U+PjtcclxuXHJcbmV4cG9ydCB0eXBlIFRyZWF0eVF1ZXJ5T3B0aW9uczxUUmVzcG9uc2UgZXh0ZW5kcyBSZWNvcmQ8bnVtYmVyLCB1bmtub3duPj4gPVxyXG4gIFVzZVF1ZXJ5T3B0aW9uczxUcmVhdHlEYXRhPFRSZXNwb25zZT4sIFRyZWF0eUVycm9yPFRSZXNwb25zZT4+O1xyXG5cclxuZXhwb3J0IHR5cGUgVXNlVHJlYXR5UXVlcnlPcHRpb25zPFRSZXNwb25zZSBleHRlbmRzIFRyZWF0eVJlc3BvbnNlPiA9IE9taXQ8XHJcbiAgVHJlYXR5UXVlcnlPcHRpb25zPFRSZXNwb25zZT4sXHJcbiAgXCJxdWVyeUZuXCJcclxuPjtcclxuXHJcbmV4cG9ydCB0eXBlIFVzZVRyZWF0eU11dGF0aW9uT3B0aW9uczxcclxuICBUVmFyaWFibGVzLFxyXG4gIFRSZXNwb25zZSBleHRlbmRzIFRyZWF0eVJlc3BvbnNlLFxyXG4+ID0gT21pdDxUcmVhdHlNdXRhdGlvbk9wdGlvbnM8VFZhcmlhYmxlcywgVFJlc3BvbnNlPiwgXCJtdXRhdGlvbkZuXCI+O1xyXG5cclxuZXhwb3J0IHR5cGUgVXNlVHJlYXR5TXV0YXRpb25Ib29rPFxyXG4gIFRWYXJpYWJsZXMsXHJcbiAgVFJlc3BvbnNlIGV4dGVuZHMgVHJlYXR5UmVzcG9uc2UsXHJcbj4gPSAoXHJcbiAgb3B0aW9uczogUGFydGlhbDxVc2VUcmVhdHlNdXRhdGlvbk9wdGlvbnM8VFZhcmlhYmxlcywgVFJlc3BvbnNlPj4sXHJcbikgPT4gVXNlVHJlYXR5TXV0YXRpb25SZXN1bHQ8VFZhcmlhYmxlcywgVFJlc3BvbnNlPjtcclxuXHJcbmV4cG9ydCB0eXBlIFVzZVRyZWF0eVF1ZXJ5SG9vazxUUmVzcG9uc2UgZXh0ZW5kcyBUcmVhdHlSZXNwb25zZT4gPSAoXHJcbiAgb3B0aW9uczogUGFydGlhbDxVc2VUcmVhdHlRdWVyeU9wdGlvbnM8VFJlc3BvbnNlPj4sXHJcbikgPT4gVXNlVHJlYXR5UXVlcnlSZXN1bHQ8VFJlc3BvbnNlPjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0cmVhdHlNdXRhdGlvbk9wdGlvbnM8VFJlc3BvbnNlIGV4dGVuZHMgVHJlYXR5UmVzcG9uc2U+KFxyXG4gIGZuOiBUcmVhdHlGdW5jdGlvbldpdGhvdXRQYXJhbXM8VFJlc3BvbnNlPixcclxuICBvcHRpb25zPzogVXNlVHJlYXR5TXV0YXRpb25PcHRpb25zPHZvaWQsIFRSZXNwb25zZT4sXHJcbik6IFRyZWF0eU11dGF0aW9uT3B0aW9uczx2b2lkLCBUUmVzcG9uc2U+O1xyXG5leHBvcnQgZnVuY3Rpb24gdHJlYXR5TXV0YXRpb25PcHRpb25zPFxyXG4gIFRWYXJpYWJsZXMsXHJcbiAgVFJlc3BvbnNlIGV4dGVuZHMgVHJlYXR5UmVzcG9uc2UsXHJcbj4oXHJcbiAgZm46IFRyZWF0eUZ1bmN0aW9uV2l0aFBhcmFtczxUVmFyaWFibGVzLCBUUmVzcG9uc2U+LFxyXG4gIG9wdGlvbnM/OiBVc2VUcmVhdHlNdXRhdGlvbk9wdGlvbnM8VFZhcmlhYmxlcywgVFJlc3BvbnNlPixcclxuKTogVHJlYXR5TXV0YXRpb25PcHRpb25zPFRWYXJpYWJsZXMsIFRSZXNwb25zZT47XHJcbmV4cG9ydCBmdW5jdGlvbiB0cmVhdHlNdXRhdGlvbk9wdGlvbnM8XHJcbiAgVFZhcmlhYmxlcyxcclxuICBUUmVzcG9uc2UgZXh0ZW5kcyBUcmVhdHlSZXNwb25zZSxcclxuPihcclxuICBmbjogVHJlYXR5RnVuY3Rpb248VFZhcmlhYmxlcywgVFJlc3BvbnNlPixcclxuICBvcHRpb25zPzogVXNlVHJlYXR5TXV0YXRpb25PcHRpb25zPFRWYXJpYWJsZXMsIFRSZXNwb25zZT4sXHJcbik6IFRyZWF0eU11dGF0aW9uT3B0aW9uczxUVmFyaWFibGVzLCBUUmVzcG9uc2U+IHtcclxuICB0eXBlIFREYXRhID0gVHJlYXR5RGF0YTxUUmVzcG9uc2U+O1xyXG4gIHR5cGUgVEVycm9yID0gVHJlYXR5RXJyb3I8VFJlc3BvbnNlPjtcclxuICByZXR1cm4gbXV0YXRpb25PcHRpb25zPFREYXRhLCBURXJyb3IsIFRWYXJpYWJsZXM+KHtcclxuICAgIC4uLm9wdGlvbnMsXHJcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAodmFyaWFibGVzKSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgKGZuLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgID8gKGZuIGFzICgpID0+IFByb21pc2U8VHJlYXR5LlRyZWF0eVJlc3BvbnNlPFRSZXNwb25zZT4+KSgpXHJcbiAgICAgICAgOiAoZm4gYXMgVHJlYXR5RnVuY3Rpb25XaXRoUGFyYW1zPFRWYXJpYWJsZXMsIFRSZXNwb25zZT4pKHZhcmlhYmxlcykpO1xyXG4gICAgICBjb25zdCB7IGRhdGEsIGVycm9yIH0gPSByZXNwb25zZTtcclxuICAgICAgaWYgKGVycm9yKSB0aHJvdyBlcnJvcjtcclxuICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICB9LFxyXG4gIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gdHJlYXR5UXVlcnlPcHRpb25zPFxyXG4gIFRSZXNwb25zZSBleHRlbmRzIFRyZWF0eVJlc3BvbnNlID0gVHJlYXR5UmVzcG9uc2UsXHJcbj4oXHJcbiAgZm46IFRyZWF0eUZ1bmN0aW9uV2l0aG91dFBhcmFtczxUUmVzcG9uc2U+LFxyXG4gIG9wdGlvbnM6IFVzZVRyZWF0eVF1ZXJ5T3B0aW9uczxUUmVzcG9uc2U+LFxyXG4pOiBUcmVhdHlRdWVyeU9wdGlvbnM8VFJlc3BvbnNlPiB7XHJcbiAgdHlwZSBURGF0YSA9IFRyZWF0eURhdGE8VFJlc3BvbnNlPjtcclxuICB0eXBlIFRFcnJvciA9IFRyZWF0eUVycm9yPFRSZXNwb25zZT47XHJcbiAgcmV0dXJuIHF1ZXJ5T3B0aW9uczxURGF0YSwgVEVycm9yPih7XHJcbiAgICAuLi5vcHRpb25zLFxyXG4gICAgcXVlcnlGbjogYXN5bmMgKCkgPT4ge1xyXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZuKCk7XHJcbiAgICAgIGNvbnN0IHsgZGF0YSwgZXJyb3IgfSA9IHJlc3BvbnNlO1xyXG4gICAgICBpZiAoZXJyb3IpIHRocm93IGVycm9yO1xyXG4gICAgICByZXR1cm4gZGF0YTtcclxuICAgIH0sXHJcbiAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUcmVhdHlNdXRhdGlvbkhvb2s8VFJlc3BvbnNlIGV4dGVuZHMgVHJlYXR5UmVzcG9uc2U+KFxyXG4gIGZuOiBUcmVhdHlGdW5jdGlvbldpdGhvdXRQYXJhbXM8VFJlc3BvbnNlPixcclxuICB1c2VPcHRpb25zPzpcclxuICAgIHwgVXNlVHJlYXR5TXV0YXRpb25PcHRpb25zPHZvaWQsIFRSZXNwb25zZT5cclxuICAgIHwgKChvcHRpb25zOiBQYXJ0aWFsPFVzZVRyZWF0eU11dGF0aW9uT3B0aW9uczx2b2lkLCBUUmVzcG9uc2U+PikgPT4gVXNlVHJlYXR5TXV0YXRpb25PcHRpb25zPHZvaWQsIFRSZXNwb25zZT4pLFxyXG4pOiBVc2VUcmVhdHlNdXRhdGlvbkhvb2s8dm9pZCwgVFJlc3BvbnNlPjtcclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyZWF0eU11dGF0aW9uSG9vazxcclxuICBUVmFyaWFibGVzLFxyXG4gIFRSZXNwb25zZSBleHRlbmRzIFRyZWF0eVJlc3BvbnNlLFxyXG4+KFxyXG4gIGZuOiBUcmVhdHlGdW5jdGlvbldpdGhQYXJhbXM8VFZhcmlhYmxlcywgVFJlc3BvbnNlPixcclxuICB1c2VPcHRpb25zPzpcclxuICAgIHwgVXNlVHJlYXR5TXV0YXRpb25PcHRpb25zPFRWYXJpYWJsZXMsIFRSZXNwb25zZT5cclxuICAgIHwgKChvcHRpb25zOiBQYXJ0aWFsPFVzZVRyZWF0eU11dGF0aW9uT3B0aW9uczxUVmFyaWFibGVzLCBUUmVzcG9uc2U+PikgPT4gVXNlVHJlYXR5TXV0YXRpb25PcHRpb25zPFRWYXJpYWJsZXMsIFRSZXNwb25zZT4pLFxyXG4pOiBVc2VUcmVhdHlNdXRhdGlvbkhvb2s8VFZhcmlhYmxlcywgVFJlc3BvbnNlPjtcclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyZWF0eU11dGF0aW9uSG9vazxcclxuICBUVmFyaWFibGVzLFxyXG4gIFRSZXNwb25zZSBleHRlbmRzIFRyZWF0eVJlc3BvbnNlLFxyXG4+KFxyXG4gIGZuOiBUcmVhdHlGdW5jdGlvbjxUVmFyaWFibGVzLCBUUmVzcG9uc2U+LFxyXG4gIHVzZU9wdGlvbnM/OlxyXG4gICAgfCBVc2VUcmVhdHlNdXRhdGlvbk9wdGlvbnM8VFZhcmlhYmxlcywgVFJlc3BvbnNlPlxyXG4gICAgfCAoKG9wdGlvbnM6IFBhcnRpYWw8VXNlVHJlYXR5TXV0YXRpb25PcHRpb25zPFRWYXJpYWJsZXMsIFRSZXNwb25zZT4+KSA9PiBVc2VUcmVhdHlNdXRhdGlvbk9wdGlvbnM8VFZhcmlhYmxlcywgVFJlc3BvbnNlPiksXHJcbik6IFVzZVRyZWF0eU11dGF0aW9uSG9vazxUVmFyaWFibGVzLCBUUmVzcG9uc2U+IHtcclxuICByZXR1cm4gKG9wdGlvbnMpID0+IHtcclxuICAgIGNvbnN0IGluaXRPcHRpb25zID1cclxuICAgICAgdHlwZW9mIHVzZU9wdGlvbnMgPT09IFwiZnVuY3Rpb25cIiA/IHVzZU9wdGlvbnMob3B0aW9ucykgOiB1c2VPcHRpb25zO1xyXG4gICAgcmV0dXJuIHVzZU11dGF0aW9uKHtcclxuICAgICAgLi4udHJlYXR5TXV0YXRpb25PcHRpb25zKGZuLCBpbml0T3B0aW9ucyksXHJcbiAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICB9KTtcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHJlYXR5UXVlcnlIb29rPFRSZXNwb25zZSBleHRlbmRzIFRyZWF0eVJlc3BvbnNlPihcclxuICBmbjogVHJlYXR5RnVuY3Rpb25XaXRob3V0UGFyYW1zPFRSZXNwb25zZT4sXHJcbiAgdXNlT3B0aW9uczpcclxuICAgIHwgVXNlVHJlYXR5UXVlcnlPcHRpb25zPFRSZXNwb25zZT5cclxuICAgIHwgKChvcHRpb25zOiBQYXJ0aWFsPFVzZVRyZWF0eVF1ZXJ5T3B0aW9uczxUUmVzcG9uc2U+PikgPT4gVXNlVHJlYXR5UXVlcnlPcHRpb25zPFRSZXNwb25zZT4pLFxyXG4pOiBVc2VUcmVhdHlRdWVyeUhvb2s8VFJlc3BvbnNlPiB7XHJcbiAgcmV0dXJuIChvcHRpb25zKSA9PiB7XHJcbiAgICBjb25zdCBpbml0T3B0aW9ucyA9XHJcbiAgICAgIHR5cGVvZiB1c2VPcHRpb25zID09PSBcImZ1bmN0aW9uXCIgPyB1c2VPcHRpb25zKG9wdGlvbnMpIDogdXNlT3B0aW9ucztcclxuICAgIHJldHVybiB1c2VRdWVyeSh7XHJcbiAgICAgIC4uLnRyZWF0eVF1ZXJ5T3B0aW9ucyhmbiwgaW5pdE9wdGlvbnMpLFxyXG4gICAgICAuLi5vcHRpb25zLFxyXG4gICAgfSk7XHJcbiAgfTtcclxufVxyXG4iCiAgXSwKICAibWFwcGluZ3MiOiAiO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBd0ZPLFNBQVMscUJBR2YsQ0FDQyxJQUNBLFNBQzhDO0FBQUEsRUFHOUMsT0FBTyxnQkFBMkM7QUFBQSxPQUM3QztBQUFBLElBQ0gsWUFBWSxPQUFPLGNBQWM7QUFBQSxNQUMvQixNQUFNLFdBQVcsT0FBTyxHQUFHLFdBQVcsSUFDakMsR0FBdUQsSUFDdkQsR0FBdUQsU0FBUztBQUFBLE1BQ3JFLFFBQVEsTUFBTSxVQUFVO0FBQUEsTUFDeEIsSUFBSTtBQUFBLFFBQU8sTUFBTTtBQUFBLE1BQ2pCLE9BQU87QUFBQTtBQUFBLEVBRVgsQ0FBQztBQUFBO0FBR0ksU0FBUyxrQkFFZixDQUNDLElBQ0EsU0FDK0I7QUFBQSxFQUcvQixPQUFPLGFBQTRCO0FBQUEsT0FDOUI7QUFBQSxJQUNILFNBQVMsWUFBWTtBQUFBLE1BQ25CLE1BQU0sV0FBVyxNQUFNLEdBQUc7QUFBQSxNQUMxQixRQUFRLE1BQU0sVUFBVTtBQUFBLE1BQ3hCLElBQUk7QUFBQSxRQUFPLE1BQU07QUFBQSxNQUNqQixPQUFPO0FBQUE7QUFBQSxFQUVYLENBQUM7QUFBQTtBQWtCSSxTQUFTLHdCQUdmLENBQ0MsSUFDQSxZQUc4QztBQUFBLEVBQzlDLE9BQU8sQ0FBQyxZQUFZO0FBQUEsSUFDbEIsTUFBTSxjQUNKLE9BQU8sZUFBZSxhQUFhLFdBQVcsT0FBTyxJQUFJO0FBQUEsSUFDM0QsT0FBTyxZQUFZO0FBQUEsU0FDZCxzQkFBc0IsSUFBSSxXQUFXO0FBQUEsU0FDckM7QUFBQSxJQUNMLENBQUM7QUFBQTtBQUFBO0FBSUUsU0FBUyxxQkFBdUQsQ0FDckUsSUFDQSxZQUcrQjtBQUFBLEVBQy9CLE9BQU8sQ0FBQyxZQUFZO0FBQUEsSUFDbEIsTUFBTSxjQUNKLE9BQU8sZUFBZSxhQUFhLFdBQVcsT0FBTyxJQUFJO0FBQUEsSUFDM0QsT0FBTyxTQUFTO0FBQUEsU0FDWCxtQkFBbUIsSUFBSSxXQUFXO0FBQUEsU0FDbEM7QUFBQSxJQUNMLENBQUM7QUFBQTtBQUFBOyIsCiAgImRlYnVnSWQiOiAiREIyMDY2OUFFRjJDOTU0RTY0NzU2RTIxNjQ3NTZFMjEiLAogICJuYW1lcyI6IFtdCn0=
|
|
103
|
+
//# debugId=3974E80E199B9F8064756E2164756E21
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsic3JjXFx0cmVhdHkudHMiLCAic3JjXFx1dGlscy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsKICAgICJpbXBvcnQgdHlwZSB7IFRyZWF0eSB9IGZyb20gXCJAZWx5c2lhanMvZWRlblwiO1xyXG5pbXBvcnQgeyBtdXRhdGlvbk9wdGlvbnMsIHF1ZXJ5T3B0aW9ucywgdXNlTXV0YXRpb24sIHVzZVF1ZXJ5LCB0eXBlIFF1ZXJ5S2V5LCB0eXBlIFVzZU11dGF0aW9uT3B0aW9ucywgdHlwZSBVc2VNdXRhdGlvblJlc3VsdCwgdHlwZSBVc2VRdWVyeU9wdGlvbnMsIHR5cGUgVXNlUXVlcnlSZXN1bHQgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XHJcbmltcG9ydCB7IG1lcmdlTXV0YXRpb25PcHRpb25zLCBtZXJnZVF1ZXJ5T3B0aW9ucyB9IGZyb20gXCIuL3V0aWxzXCI7XHJcblxyXG50eXBlIFRyZWF0eUZ1bmN0aW9uID0gKC4uLnJlcXVlc3Q6IGFueVtdKSA9PiBcclxuICBQcm9taXNlPFRyZWF0eS5UcmVhdHlSZXNwb25zZTxSZWNvcmQ8bnVtYmVyLCB1bmtub3duPj4+O1xyXG5cclxuZXhwb3J0IHR5cGUgSW5mZXJUcmVhdHlEYXRhPFxyXG4gIFRGbiBleHRlbmRzIFRyZWF0eUZ1bmN0aW9uLFxyXG4+ID0gQXdhaXRlZDxSZXR1cm5UeXBlPFRGbj4+W1wiZGF0YVwiXTtcclxuXHJcbmV4cG9ydCB0eXBlIEluZmVyVHJlYXR5RXJyb3I8XHJcbiAgVEZuIGV4dGVuZHMgVHJlYXR5RnVuY3Rpb24sXHJcbj4gPSBBd2FpdGVkPFJldHVyblR5cGU8VEZuPj5bXCJlcnJvclwiXTtcclxuXHJcbmV4cG9ydCB0eXBlIEluZmVyVHJlYXR5UmVxdWVzdDxcclxuICBURm4gZXh0ZW5kcyBUcmVhdHlGdW5jdGlvbixcclxuPiA9IFBhcmFtZXRlcnM8VEZuPlswXTtcclxuXHJcbmV4cG9ydCB0eXBlIEluZmVyVHJlYXR5TXV0YXRpb25PcHRpb25zPFxyXG4gIFRGbiBleHRlbmRzIFRyZWF0eUZ1bmN0aW9uLFxyXG4+ID0gVXNlTXV0YXRpb25PcHRpb25zPFxyXG4gIEluZmVyVHJlYXR5RGF0YTxURm4+LFxyXG4gIEluZmVyVHJlYXR5RXJyb3I8VEZuPixcclxuICBJbmZlclRyZWF0eVJlcXVlc3Q8VEZuPlxyXG4+O1xyXG5cclxuZXhwb3J0IHR5cGUgSW5mZXJUcmVhdHlRdWVyeU9wdGlvbnM8XHJcbiAgVEZuIGV4dGVuZHMgVHJlYXR5RnVuY3Rpb24sXHJcbiAgVFF1ZXJ5S2V5IGV4dGVuZHMgUXVlcnlLZXkgPSB1bmtub3duW10sXHJcbj4gPSBVc2VRdWVyeU9wdGlvbnM8XHJcbiAgSW5mZXJUcmVhdHlEYXRhPFRGbj4sXHJcbiAgSW5mZXJUcmVhdHlFcnJvcjxURm4+LFxyXG4gIEluZmVyVHJlYXR5RGF0YTxURm4+LFxyXG4gIFRRdWVyeUtleVxyXG4+O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHRyZWF0eU11dGF0aW9uT3B0aW9uczxURm4gZXh0ZW5kcyBUcmVhdHlGdW5jdGlvbj4oXHJcbiAgb3B0aW9uczoge1xyXG4gICAgbXV0YXRpb25GbjogVEZuO1xyXG4gIH0gJiBPbWl0PFxyXG4gICAgSW5mZXJUcmVhdHlNdXRhdGlvbk9wdGlvbnM8VEZuPixcclxuICAgIFwibXV0YXRpb25GblwiXHJcbiAgPlxyXG4pOiBJbmZlclRyZWF0eU11dGF0aW9uT3B0aW9uczxURm4+IHtcclxuICB0eXBlIFREYXRhID0gSW5mZXJUcmVhdHlEYXRhPFRGbj47XHJcbiAgdHlwZSBURXJyb3IgPSBJbmZlclRyZWF0eUVycm9yPFRGbj47XHJcbiAgdHlwZSBUVmFyaWFibGVzID0gSW5mZXJUcmVhdHlSZXF1ZXN0PFRGbj47XHJcbiAgY29uc3QgeyBtdXRhdGlvbkZuLCAuLi5yZXN0IH0gPSBvcHRpb25zO1xyXG4gIHJldHVybiBtdXRhdGlvbk9wdGlvbnM8VERhdGEsIFRFcnJvciwgVFZhcmlhYmxlcz4oe1xyXG4gICAgLi4ucmVzdCxcclxuICAgIG11dGF0aW9uRm46IGFzeW5jICh2YXJpYWJsZXMpID0+IHtcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBtdXRhdGlvbkZuKHZhcmlhYmxlcyk7XHJcbiAgICAgIGNvbnN0IHsgZGF0YSwgZXJyb3IgfSA9IHJlc3BvbnNlO1xyXG4gICAgICBpZiAoZXJyb3IpIHRocm93IGVycm9yO1xyXG4gICAgICByZXR1cm4gZGF0YTtcclxuICAgIH0sXHJcbiAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0cmVhdHlRdWVyeU9wdGlvbnM8XHJcbiAgVEZuIGV4dGVuZHMgVHJlYXR5RnVuY3Rpb24sXHJcbiAgY29uc3QgVFF1ZXJ5S2V5IGV4dGVuZHMgUXVlcnlLZXksXHJcbj4oXHJcbiAgb3B0aW9uczoge1xyXG4gICAgcXVlcnlLZXk6IFRRdWVyeUtleTtcclxuICAgIHF1ZXJ5Rm46IFRGbjtcclxuICB9ICYgT21pdDxcclxuICAgIEluZmVyVHJlYXR5UXVlcnlPcHRpb25zPFRGbiwgVFF1ZXJ5S2V5PixcclxuICAgIFwicXVlcnlLZXlcIiB8IFwicXVlcnlGblwiXHJcbiAgPlxyXG4pOiBJbmZlclRyZWF0eVF1ZXJ5T3B0aW9uczxURm4sIFRRdWVyeUtleT4ge1xyXG4gIHR5cGUgVERhdGEgPSBJbmZlclRyZWF0eURhdGE8VEZuPjtcclxuICB0eXBlIFRFcnJvciA9IEluZmVyVHJlYXR5RXJyb3I8VEZuPjtcclxuICBjb25zdCB7IHF1ZXJ5Rm4sIHF1ZXJ5S2V5LCAuLi5yZXN0IH0gPSBvcHRpb25zO1xyXG4gIHJldHVybiBxdWVyeU9wdGlvbnM8VERhdGEsIFRFcnJvciwgVERhdGEsIFRRdWVyeUtleT4oe1xyXG4gICAgLi4ucmVzdCxcclxuICAgIHF1ZXJ5S2V5LFxyXG4gICAgcXVlcnlGbjogYXN5bmMgKCkgPT4ge1xyXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHF1ZXJ5Rm4oKTtcclxuICAgICAgY29uc3QgeyBkYXRhLCBlcnJvciB9ID0gcmVzcG9uc2U7XHJcbiAgICAgIGlmIChlcnJvcikgdGhyb3cgZXJyb3I7XHJcbiAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgfSxcclxuICB9KTtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgVXNlVHJlYXR5TXV0YXRpb25SZXN1bHQ8VEZuIGV4dGVuZHMgVHJlYXR5RnVuY3Rpb24+ID0gVXNlTXV0YXRpb25SZXN1bHQ8XHJcbiAgSW5mZXJUcmVhdHlEYXRhPFRGbj4sXHJcbiAgSW5mZXJUcmVhdHlFcnJvcjxURm4+LFxyXG4gIEluZmVyVHJlYXR5UmVxdWVzdDxURm4+XHJcbj47XHJcblxyXG5leHBvcnQgdHlwZSBVc2VUcmVhdHlRdWVyeVJlc3VsdDxcclxuICBURm4gZXh0ZW5kcyBUcmVhdHlGdW5jdGlvbixcclxuICBUUXVlcnlLZXkgZXh0ZW5kcyBRdWVyeUtleSA9IHVua25vd25bXSxcclxuPiA9IFVzZVF1ZXJ5UmVzdWx0PFxyXG4gIEluZmVyVHJlYXR5RGF0YTxURm4+LFxyXG4gIEluZmVyVHJlYXR5RXJyb3I8VEZuPlxyXG4+O1xyXG5cclxuZXhwb3J0IHR5cGUgVHJlYXR5TXV0YXRpb25Ib29rT3B0aW9uczxURm4gZXh0ZW5kcyBUcmVhdHlGdW5jdGlvbj4gPSBPbWl0PFxyXG4gIEluZmVyVHJlYXR5TXV0YXRpb25PcHRpb25zPFRGbj4sXHJcbiAgXCJtdXRhdGlvbkZuXCJcclxuPjtcclxuXHJcbmV4cG9ydCB0eXBlIFRyZWF0eVF1ZXJ5SG9va09wdGlvbnM8XHJcbiAgVEZuIGV4dGVuZHMgVHJlYXR5RnVuY3Rpb24sXHJcbiAgVFF1ZXJ5S2V5IGV4dGVuZHMgUXVlcnlLZXkgPSB1bmtub3duW10sXHJcbj4gPSBPbWl0PFxyXG4gIEluZmVyVHJlYXR5UXVlcnlPcHRpb25zPFRGbiwgVFF1ZXJ5S2V5PixcclxuICBcInF1ZXJ5S2V5XCIgfCBcInF1ZXJ5Rm5cIlxyXG4+O1xyXG5cclxuZXhwb3J0IHR5cGUgVHJlYXR5UXVlcnlIb29rVXNlT3B0aW9uczxcclxuICBURm4gZXh0ZW5kcyBUcmVhdHlGdW5jdGlvbixcclxuICBUUXVlcnlLZXkgZXh0ZW5kcyBRdWVyeUtleSA9IHVua25vd25bXSxcclxuPiA9IHtcclxuICBxdWVyeUtleTogVFF1ZXJ5S2V5O1xyXG59ICYgVHJlYXR5UXVlcnlIb29rT3B0aW9uczxURm4sIFRRdWVyeUtleT47XHJcblxyXG5leHBvcnQgdHlwZSBUcmVhdHlNdXRhdGlvbkhvb2s8VEZuIGV4dGVuZHMgVHJlYXR5RnVuY3Rpb24+ID0gKFxyXG4gIG9wdGlvbnM/OiBUcmVhdHlNdXRhdGlvbkhvb2tPcHRpb25zPFRGbj5cclxuKSA9PiBVc2VUcmVhdHlNdXRhdGlvblJlc3VsdDxURm4+O1xyXG5cclxuZXhwb3J0IHR5cGUgVHJlYXR5UXVlcnlIb29rPFxyXG4gIFRGbiBleHRlbmRzIFRyZWF0eUZ1bmN0aW9uLFxyXG4gIFRRdWVyeUtleSBleHRlbmRzIFF1ZXJ5S2V5ID0gdW5rbm93bltdLFxyXG4+ID0gKFxyXG4gIHJlcXVlc3Q6IEluZmVyVHJlYXR5UmVxdWVzdDxURm4+LFxyXG4gIG9wdGlvbnM/OiBUcmVhdHlRdWVyeUhvb2tPcHRpb25zPFRGbiwgVFF1ZXJ5S2V5PlxyXG4pID0+IFVzZVRyZWF0eVF1ZXJ5UmVzdWx0PFRGbiwgVFF1ZXJ5S2V5PjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0cmVhdHlNdXRhdGlvbkhvb2s8VEZuIGV4dGVuZHMgVHJlYXR5RnVuY3Rpb24+KFxyXG4gIG11dGF0aW9uRm46IFRGbixcclxuICB1c2VPcHRpb25zPzogKCkgPT4gVHJlYXR5TXV0YXRpb25Ib29rT3B0aW9uczxURm4+XHJcbik6IFRyZWF0eU11dGF0aW9uSG9vazxURm4+IHtcclxuICByZXR1cm4gKG9wdGlvbnMpID0+IHtcclxuICAgIGNvbnN0IGJhc2VPcHRpb25zID0gdHJlYXR5TXV0YXRpb25PcHRpb25zKHsgbXV0YXRpb25GbiB9KTtcclxuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0gdXNlT3B0aW9ucz8uKCk7XHJcbiAgICBjb25zdCBtZXJnZWQgPSBtZXJnZU11dGF0aW9uT3B0aW9ucyhcclxuICAgICAgbWVyZ2VNdXRhdGlvbk9wdGlvbnMoYmFzZU9wdGlvbnMsIGRlZmF1bHRPcHRpb25zKSxcclxuICAgICAgb3B0aW9uc1xyXG4gICAgKTtcclxuICAgIHJldHVybiB1c2VNdXRhdGlvbihtZXJnZWQpO1xyXG4gIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB0cmVhdHlRdWVyeUhvb2s8XHJcbiAgVEZuIGV4dGVuZHMgVHJlYXR5RnVuY3Rpb24sXHJcbiAgVFF1ZXJ5S2V5IGV4dGVuZHMgUXVlcnlLZXkgPSBRdWVyeUtleSxcclxuPihcclxuICBxdWVyeUZuOiBURm4sXHJcbiAgdXNlT3B0aW9ucz86IChcclxuICAgIHJlcXVlc3Q6IEluZmVyVHJlYXR5UmVxdWVzdDxURm4+XHJcbiAgKSA9PiBUcmVhdHlRdWVyeUhvb2tVc2VPcHRpb25zPFRGbiwgVFF1ZXJ5S2V5PlxyXG4pOiBUcmVhdHlRdWVyeUhvb2s8VEZuLCBUUXVlcnlLZXk+IHtcclxuICByZXR1cm4gKHJlcXVlc3QsIG9wdGlvbnMpID0+IHtcclxuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0gdXNlT3B0aW9ucz8uKHJlcXVlc3QpO1xyXG4gICAgY29uc3QgYmFzZU9wdGlvbnMgPSB0cmVhdHlRdWVyeU9wdGlvbnMoe1xyXG4gICAgICBxdWVyeUtleTogKGRlZmF1bHRPcHRpb25zPy5xdWVyeUtleSA/PyAoW1wicmVzb3VyY2VcIiwgcmVxdWVzdF0gYXMgdW5rbm93bikpIGFzIFRRdWVyeUtleSxcclxuICAgICAgcXVlcnlGbjogKCgpID0+IHF1ZXJ5Rm4ocmVxdWVzdCkpIGFzIFRGbixcclxuICAgICAgLi4uZGVmYXVsdE9wdGlvbnMsXHJcbiAgICB9KTtcclxuICAgIGNvbnN0IG1lcmdlZCA9IG1lcmdlUXVlcnlPcHRpb25zKFxyXG4gICAgICBiYXNlT3B0aW9ucyxcclxuICAgICAgb3B0aW9ucyBhcyBVc2VRdWVyeU9wdGlvbnM8XHJcbiAgICAgICAgSW5mZXJUcmVhdHlEYXRhPFRGbj4sXHJcbiAgICAgICAgSW5mZXJUcmVhdHlFcnJvcjxURm4+LFxyXG4gICAgICAgIEluZmVyVHJlYXR5RGF0YTxURm4+LFxyXG4gICAgICAgIFRRdWVyeUtleVxyXG4gICAgICA+IHwgdW5kZWZpbmVkXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHVzZVF1ZXJ5KG1lcmdlZCk7XHJcbiAgfTtcclxufSIsCiAgICAiaW1wb3J0IHR5cGUgeyBRdWVyeUtleSwgVXNlTXV0YXRpb25PcHRpb25zLCBVc2VRdWVyeU9wdGlvbnMgfSBmcm9tIFwiQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5XCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VNdXRhdGlvbk9wdGlvbnM8VERhdGEsIFRFcnJvciwgVFZhcmlhYmxlcywgVENvbnRleHQ+KFxyXG4gIGJhc2U6IFVzZU11dGF0aW9uT3B0aW9uczxURGF0YSwgVEVycm9yLCBUVmFyaWFibGVzLCBUQ29udGV4dD4sXHJcbiAgb3B0aW9ucz86IFBhcnRpYWw8VXNlTXV0YXRpb25PcHRpb25zPFREYXRhLCBURXJyb3IsIFRWYXJpYWJsZXMsIFRDb250ZXh0Pj5cclxuKTogVXNlTXV0YXRpb25PcHRpb25zPFREYXRhLCBURXJyb3IsIFRWYXJpYWJsZXMsIFRDb250ZXh0PiB7XHJcbiAgaWYgKCFvcHRpb25zKSByZXR1cm4gYmFzZTtcclxuICBjb25zdCB7IG9uU3VjY2Vzcywgb25FcnJvciwgb25TZXR0bGVkLCBvbk11dGF0ZSwgLi4ucmVzdCB9ID0gb3B0aW9ucztcclxuICByZXR1cm4ge1xyXG4gICAgLi4uYmFzZSxcclxuICAgIC4uLnJlc3QsXHJcbiAgICAuLi4ob25NdXRhdGUgIT09IHVuZGVmaW5lZCAmJiB7XHJcbiAgICAgIG9uTXV0YXRlOiBhc3luYyAodmFyaWFibGVzLCBjb250ZXh0KSA9PiB7XHJcbiAgICAgICAgY29uc3QgcHJldiA9IGF3YWl0IGJhc2Uub25NdXRhdGU/Lih2YXJpYWJsZXMsIGNvbnRleHQpO1xyXG4gICAgICAgIGNvbnN0IG5leHQgPSBhd2FpdCBvcHRpb25zLm9uTXV0YXRlPy4odmFyaWFibGVzLCBjb250ZXh0KTtcclxuICAgICAgICByZXR1cm4gKG5leHQgIT09IHVuZGVmaW5lZCA/IG5leHQgOiBwcmV2KSBhcyBUQ29udGV4dDtcclxuICAgICAgfSxcclxuICAgIH0pLFxyXG4gICAgLi4uKG9uU3VjY2VzcyAhPT0gdW5kZWZpbmVkICYmIHtcclxuICAgICAgb25TdWNjZXNzOiBhc3luYyAoZGF0YSwgdmFyaWFibGVzLCBvbk11dGF0ZVJlc3VsdCwgY29udGV4dCkgPT4ge1xyXG4gICAgICAgIGF3YWl0IGJhc2Uub25TdWNjZXNzPy4oZGF0YSwgdmFyaWFibGVzLCBvbk11dGF0ZVJlc3VsdCwgY29udGV4dCk7XHJcbiAgICAgICAgYXdhaXQgb3B0aW9ucy5vblN1Y2Nlc3M/LihkYXRhLCB2YXJpYWJsZXMsIG9uTXV0YXRlUmVzdWx0LCBjb250ZXh0KTtcclxuICAgICAgfSxcclxuICAgIH0pLFxyXG4gICAgLi4uKG9uRXJyb3IgIT09IHVuZGVmaW5lZCAmJiB7XHJcbiAgICAgIG9uRXJyb3I6IGFzeW5jIChlcnJvciwgdmFyaWFibGVzLCBvbk11dGF0ZVJlc3VsdCwgY29udGV4dCkgPT4ge1xyXG4gICAgICAgIGF3YWl0IGJhc2Uub25FcnJvcj8uKGVycm9yLCB2YXJpYWJsZXMsIG9uTXV0YXRlUmVzdWx0LCBjb250ZXh0KTtcclxuICAgICAgICBhd2FpdCBvcHRpb25zLm9uRXJyb3I/LihlcnJvciwgdmFyaWFibGVzLCBvbk11dGF0ZVJlc3VsdCwgY29udGV4dCk7XHJcbiAgICAgIH0sXHJcbiAgICB9KSxcclxuICAgIC4uLihvblNldHRsZWQgIT09IHVuZGVmaW5lZCAmJiB7XHJcbiAgICAgIG9uU2V0dGxlZDogYXN5bmMgKGRhdGEsIGVycm9yLCB2YXJpYWJsZXMsIG9uTXV0YXRlUmVzdWx0LCBjb250ZXh0KSA9PiB7XHJcbiAgICAgICAgYXdhaXQgYmFzZS5vblNldHRsZWQ/LihkYXRhLCBlcnJvciwgdmFyaWFibGVzLCBvbk11dGF0ZVJlc3VsdCwgY29udGV4dCk7XHJcbiAgICAgICAgYXdhaXQgb3B0aW9ucy5vblNldHRsZWQ/LihkYXRhLCBlcnJvciwgdmFyaWFibGVzLCBvbk11dGF0ZVJlc3VsdCwgY29udGV4dCk7XHJcbiAgICAgIH0sXHJcbiAgICB9KSxcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VRdWVyeU9wdGlvbnM8VERhdGEsIFRFcnJvciwgVFF1ZXJ5S2V5IGV4dGVuZHMgUXVlcnlLZXk+KFxyXG4gIGJhc2U6IFVzZVF1ZXJ5T3B0aW9uczxURGF0YSwgVEVycm9yLCBURGF0YSwgVFF1ZXJ5S2V5PixcclxuICBvcHRpb25zPzogUGFydGlhbDxVc2VRdWVyeU9wdGlvbnM8VERhdGEsIFRFcnJvciwgVERhdGEsIFRRdWVyeUtleT4+XHJcbik6IFVzZVF1ZXJ5T3B0aW9uczxURGF0YSwgVEVycm9yLCBURGF0YSwgVFF1ZXJ5S2V5PiB7XHJcbiAgaWYgKCFvcHRpb25zKSByZXR1cm4gYmFzZTtcclxuICByZXR1cm4ge1xyXG4gICAgLi4uYmFzZSxcclxuICAgIC4uLm9wdGlvbnMsXHJcbiAgfTtcclxufVxyXG4iCiAgXSwKICAibWFwcGluZ3MiOiAiO0FBQ0E7OztBQ0NPLFNBQVMsb0JBQXlELENBQ3ZFLE1BQ0EsU0FDeUQ7QUFBQSxFQUN6RCxJQUFJLENBQUM7QUFBQSxJQUFTLE9BQU87QUFBQSxFQUNyQixRQUFRLFdBQVcsU0FBUyxXQUFXLGFBQWEsU0FBUztBQUFBLEVBQzdELE9BQU87QUFBQSxPQUNGO0FBQUEsT0FDQTtBQUFBLE9BQ0MsYUFBYSxhQUFhO0FBQUEsTUFDNUIsVUFBVSxPQUFPLFdBQVcsWUFBWTtBQUFBLFFBQ3RDLE1BQU0sT0FBTyxNQUFNLEtBQUssV0FBVyxXQUFXLE9BQU87QUFBQSxRQUNyRCxNQUFNLE9BQU8sTUFBTSxRQUFRLFdBQVcsV0FBVyxPQUFPO0FBQUEsUUFDeEQsT0FBUSxTQUFTLFlBQVksT0FBTztBQUFBO0FBQUEsSUFFeEM7QUFBQSxPQUNJLGNBQWMsYUFBYTtBQUFB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
|
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.3.
|
|
4
|
+
"version": "0.3.6",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
7
7
|
"dist"
|
|
@@ -41,10 +41,12 @@
|
|
|
41
41
|
"peerDependencies": {
|
|
42
42
|
"@elysiajs/eden": "^1.4.6",
|
|
43
43
|
"@tanstack/react-query": "^5.90.20",
|
|
44
|
+
"react": "^19.2.4",
|
|
44
45
|
"typescript": "^5"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|
|
47
48
|
"@types/bun": "latest",
|
|
49
|
+
"@types/react": "^19.2.14",
|
|
48
50
|
"bunup": "^0.16.22",
|
|
49
51
|
"elysia": "^1.4.22",
|
|
50
52
|
"prettier": "^3.4.2"
|