katanakit-js 3.2.2 → 4.0.3
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 +453 -326
- package/dist/adapters/angular/fetch.d.ts +37 -0
- package/dist/adapters/angular/fetch.d.ts.map +1 -0
- package/dist/adapters/angular/fetch.js +67 -0
- package/dist/adapters/angular/fetch.js.map +1 -0
- package/dist/adapters/angular/index.d.ts +5 -0
- package/dist/adapters/angular/index.d.ts.map +1 -0
- package/dist/adapters/angular/index.js +5 -0
- package/dist/adapters/angular/index.js.map +1 -0
- package/dist/adapters/angular/query.d.ts +90 -0
- package/dist/adapters/angular/query.d.ts.map +1 -0
- package/dist/adapters/angular/query.js +103 -0
- package/dist/adapters/angular/query.js.map +1 -0
- package/dist/adapters/angular/watch.d.ts +34 -0
- package/dist/adapters/angular/watch.d.ts.map +1 -0
- package/dist/adapters/angular/watch.js +38 -0
- package/dist/adapters/angular/watch.js.map +1 -0
- package/dist/adapters/assistant/assistant.service.js +1 -1
- package/dist/adapters/assistant/assistant.service.js.map +1 -1
- package/dist/adapters/astro/astro.service.d.ts +0 -1
- package/dist/adapters/astro/astro.service.d.ts.map +1 -1
- package/dist/adapters/astro/astro.service.js +0 -1
- package/dist/adapters/astro/astro.service.js.map +1 -1
- package/dist/adapters/bun/dummyjson.service.d.ts +88 -0
- package/dist/adapters/bun/dummyjson.service.d.ts.map +1 -0
- package/dist/adapters/bun/dummyjson.service.js +149 -0
- package/dist/adapters/bun/dummyjson.service.js.map +1 -0
- package/dist/adapters/bun/index.d.ts +5 -0
- package/dist/adapters/bun/index.d.ts.map +1 -0
- package/dist/adapters/bun/index.js +5 -0
- package/dist/adapters/bun/index.js.map +1 -0
- package/dist/adapters/bun/main.d.ts +2 -0
- package/dist/adapters/bun/main.d.ts.map +1 -0
- package/dist/adapters/bun/main.js +6 -0
- package/dist/adapters/bun/main.js.map +1 -0
- package/dist/adapters/bun/routes.d.ts +62 -0
- package/dist/adapters/bun/routes.d.ts.map +1 -0
- package/dist/adapters/bun/routes.js +60 -0
- package/dist/adapters/bun/routes.js.map +1 -0
- package/dist/adapters/bun/seed.d.ts +65 -0
- package/dist/adapters/bun/seed.d.ts.map +1 -0
- package/dist/adapters/bun/seed.js +117 -0
- package/dist/adapters/bun/seed.js.map +1 -0
- package/dist/adapters/bun/server.d.ts +53 -0
- package/dist/adapters/bun/server.d.ts.map +1 -0
- package/dist/adapters/bun/server.js +64 -0
- package/dist/adapters/bun/server.js.map +1 -0
- package/dist/adapters/express/app.d.ts +2 -1
- package/dist/adapters/express/app.d.ts.map +1 -1
- package/dist/adapters/express/app.js +14 -2
- package/dist/adapters/express/app.js.map +1 -1
- package/dist/adapters/express/products.controller.d.ts.map +1 -1
- package/dist/adapters/express/products.controller.js +3 -1
- package/dist/adapters/express/products.controller.js.map +1 -1
- package/dist/adapters/express/server.js +2 -2
- package/dist/adapters/express/server.js.map +1 -1
- package/dist/adapters/notion/notion.service.d.ts +4 -2
- package/dist/adapters/notion/notion.service.d.ts.map +1 -1
- package/dist/adapters/notion/notion.service.js +19 -5
- package/dist/adapters/notion/notion.service.js.map +1 -1
- package/dist/adapters/react/fetch.d.ts +44 -0
- package/dist/adapters/react/fetch.d.ts.map +1 -0
- package/dist/adapters/react/fetch.js +74 -0
- package/dist/adapters/react/fetch.js.map +1 -0
- package/dist/adapters/react/index.d.ts +5 -0
- package/dist/adapters/react/index.d.ts.map +1 -0
- package/dist/adapters/react/index.js +5 -0
- package/dist/adapters/react/index.js.map +1 -0
- package/dist/adapters/react/query.d.ts +59 -0
- package/dist/adapters/react/query.d.ts.map +1 -0
- package/dist/adapters/react/query.js +86 -0
- package/dist/adapters/react/query.js.map +1 -0
- package/dist/adapters/react/watch.d.ts +37 -0
- package/dist/adapters/react/watch.d.ts.map +1 -0
- package/dist/adapters/react/watch.js +39 -0
- package/dist/adapters/react/watch.js.map +1 -0
- package/dist/adapters/solid/fetch.d.ts +43 -0
- package/dist/adapters/solid/fetch.d.ts.map +1 -0
- package/dist/adapters/solid/fetch.js +72 -0
- package/dist/adapters/solid/fetch.js.map +1 -0
- package/dist/adapters/solid/index.d.ts +5 -0
- package/dist/adapters/solid/index.d.ts.map +1 -0
- package/dist/adapters/solid/index.js +5 -0
- package/dist/adapters/solid/index.js.map +1 -0
- package/dist/adapters/solid/query.d.ts +60 -0
- package/dist/adapters/solid/query.d.ts.map +1 -0
- package/dist/adapters/solid/query.js +88 -0
- package/dist/adapters/solid/query.js.map +1 -0
- package/dist/adapters/solid/watch.d.ts +32 -0
- package/dist/adapters/solid/watch.d.ts.map +1 -0
- package/dist/adapters/solid/watch.js +36 -0
- package/dist/adapters/solid/watch.js.map +1 -0
- package/dist/adapters/svelte/fetch.d.ts +40 -0
- package/dist/adapters/svelte/fetch.d.ts.map +1 -0
- package/dist/adapters/svelte/fetch.js +75 -0
- package/dist/adapters/svelte/fetch.js.map +1 -0
- package/dist/adapters/svelte/index.d.ts +5 -0
- package/dist/adapters/svelte/index.d.ts.map +1 -0
- package/dist/adapters/svelte/index.js +5 -0
- package/dist/adapters/svelte/index.js.map +1 -0
- package/dist/adapters/svelte/query.d.ts +60 -0
- package/dist/adapters/svelte/query.d.ts.map +1 -0
- package/dist/adapters/svelte/query.js +78 -0
- package/dist/adapters/svelte/query.js.map +1 -0
- package/dist/adapters/svelte/watch.d.ts +32 -0
- package/dist/adapters/svelte/watch.d.ts.map +1 -0
- package/dist/adapters/svelte/watch.js +41 -0
- package/dist/adapters/svelte/watch.js.map +1 -0
- package/dist/adapters/telegram/telegram.service.js +1 -1
- package/dist/adapters/telegram/telegram.service.js.map +1 -1
- package/dist/adapters/vanilla/index.d.ts +3 -0
- package/dist/adapters/vanilla/index.d.ts.map +1 -0
- package/dist/adapters/vanilla/index.js +3 -0
- package/dist/adapters/vanilla/index.js.map +1 -0
- package/dist/adapters/vanilla/query.d.ts +69 -0
- package/dist/adapters/vanilla/query.d.ts.map +1 -0
- package/dist/adapters/vanilla/query.js +76 -0
- package/dist/adapters/vanilla/query.js.map +1 -0
- package/dist/adapters/vue/index.d.ts +1 -0
- package/dist/adapters/vue/index.d.ts.map +1 -1
- package/dist/adapters/vue/index.js +1 -0
- package/dist/adapters/vue/index.js.map +1 -1
- package/dist/adapters/vue/query.d.ts +35 -87
- package/dist/adapters/vue/query.d.ts.map +1 -1
- package/dist/adapters/vue/query.js +57 -168
- package/dist/adapters/vue/query.js.map +1 -1
- package/dist/adapters/vue/vue.service.d.ts +9 -5
- package/dist/adapters/vue/vue.service.d.ts.map +1 -1
- package/dist/adapters/vue/vue.service.js +7 -3
- package/dist/adapters/vue/vue.service.js.map +1 -1
- package/dist/adapters/whatsapp/whatsapp.service.js +1 -1
- package/dist/adapters/whatsapp/whatsapp.service.js.map +1 -1
- package/dist/adapters/wordpress/wordpress.service.d.ts +2 -1
- package/dist/adapters/wordpress/wordpress.service.d.ts.map +1 -1
- package/dist/adapters/wordpress/wordpress.service.js +10 -5
- package/dist/adapters/wordpress/wordpress.service.js.map +1 -1
- package/dist/core/services/agent.service.d.ts.map +1 -1
- package/dist/core/services/agent.service.js +9 -1
- package/dist/core/services/agent.service.js.map +1 -1
- package/dist/core/services/dates.service.d.ts.map +1 -1
- package/dist/core/services/dates.service.js +2 -1
- package/dist/core/services/dates.service.js.map +1 -1
- package/dist/core/services/error.service.d.ts +1 -1
- package/dist/core/services/error.service.js +1 -1
- package/dist/core/services/http.service.d.ts +26 -5
- package/dist/core/services/http.service.d.ts.map +1 -1
- package/dist/core/services/http.service.js +30 -6
- package/dist/core/services/http.service.js.map +1 -1
- package/dist/core/services/logger.service.d.ts +10 -67
- package/dist/core/services/logger.service.d.ts.map +1 -1
- package/dist/core/services/logger.service.js +13 -139
- package/dist/core/services/logger.service.js.map +1 -1
- package/dist/core/services/query.service.d.ts +87 -130
- package/dist/core/services/query.service.d.ts.map +1 -1
- package/dist/core/services/query.service.js +99 -366
- package/dist/core/services/query.service.js.map +1 -1
- package/dist/core/services/reactive.service.d.ts.map +1 -1
- package/dist/core/services/reactive.service.js +7 -10
- package/dist/core/services/reactive.service.js.map +1 -1
- package/dist/core/services/timing.service.js +8 -8
- package/dist/core/services/timing.service.js.map +1 -1
- package/dist/core/services/utils.service.d.ts.map +1 -1
- package/dist/core/services/utils.service.js +3 -0
- package/dist/core/services/utils.service.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/dom/dom.service.d.ts.map +1 -1
- package/dist/infrastructure/dom/dom.service.js +18 -4
- package/dist/infrastructure/dom/dom.service.js.map +1 -1
- package/dist/infrastructure/observer/observer.service.js +2 -2
- package/dist/infrastructure/observer/observer.service.js.map +1 -1
- package/dist/infrastructure/sensors/sensors.service.js +6 -6
- package/dist/infrastructure/sensors/sensors.service.js.map +1 -1
- package/dist/infrastructure/storage/storage.service.d.ts.map +1 -1
- package/dist/infrastructure/storage/storage.service.js +12 -2
- package/dist/infrastructure/storage/storage.service.js.map +1 -1
- package/dist/prisma/assistant.store.d.ts +3 -0
- package/dist/prisma/assistant.store.d.ts.map +1 -1
- package/dist/prisma/assistant.store.js +12 -6
- package/dist/prisma/assistant.store.js.map +1 -1
- package/dist/prisma/use-prisma.d.ts +5 -4
- package/dist/prisma/use-prisma.d.ts.map +1 -1
- package/dist/prisma/use-prisma.js +5 -4
- package/dist/prisma/use-prisma.js.map +1 -1
- package/dist/types/index.d.ts +2 -6
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +251 -185
- package/dist/prisma/db.d.ts +0 -4
- package/dist/prisma/db.d.ts.map +0 -1
- package/dist/prisma/db.js +0 -12
- package/dist/prisma/db.js.map +0 -1
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { MutationObserver, QueryObserver, } from "@tanstack/query-core";
|
|
2
|
+
import { readable } from "svelte/store";
|
|
3
|
+
import { useQueryClient } from "../../core/services/query.service.js";
|
|
4
|
+
/**
|
|
5
|
+
* Svelte store factory for a cached query, backed by TanStack Query Core.
|
|
6
|
+
*
|
|
7
|
+
* Returns a `Readable` of TanStack's {@link QueryObserverResult}. Subscribe
|
|
8
|
+
* with `$query` — `$query.data`, `$query.isPending`, `$query.isError`,
|
|
9
|
+
* `$query.status`, etc.
|
|
10
|
+
*
|
|
11
|
+
* @param options - TanStack query options (`queryKey`, `queryFn`, `staleTime`, …).
|
|
12
|
+
* @param client - Optional {@link QueryClient} (defaults to the shared singleton).
|
|
13
|
+
* @returns A `Readable` of the TanStack {@link QueryObserverResult}.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```svelte
|
|
17
|
+
* <script lang="ts">
|
|
18
|
+
* import { useQuery, useSafeQueryFn } from "katanakit-js/adapters/svelte";
|
|
19
|
+
* import { useGetApi } from "katanakit-js";
|
|
20
|
+
*
|
|
21
|
+
* const query = useQuery({
|
|
22
|
+
* queryKey: ["pokemon", 25],
|
|
23
|
+
* queryFn: useSafeQueryFn(() => useGetApi("pokeapi", "pokemonById", { params: { id: 25 } })),
|
|
24
|
+
* });
|
|
25
|
+
* </script>
|
|
26
|
+
*
|
|
27
|
+
* {#if $query.isPending}
|
|
28
|
+
* <div>Loading…</div>
|
|
29
|
+
* {:else if $query.isError}
|
|
30
|
+
* <div>{$query.error?.message}</div>
|
|
31
|
+
* {:else}
|
|
32
|
+
* <div>{$query.data?.name}</div>
|
|
33
|
+
* {/if}
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export function useQuery(options, client) {
|
|
37
|
+
const queryClient = client ?? useQueryClient();
|
|
38
|
+
const observer = new QueryObserver(queryClient, queryClient.defaultQueryOptions(options));
|
|
39
|
+
return readable(observer.getCurrentResult(), (set) => {
|
|
40
|
+
const unsubscribe = observer.subscribe((result) => set(result));
|
|
41
|
+
set(observer.getCurrentResult());
|
|
42
|
+
return () => unsubscribe();
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Svelte store factory for a mutation, backed by TanStack Query Core.
|
|
47
|
+
*
|
|
48
|
+
* @param options - TanStack mutation options (`mutationFn`, `onSuccess`, …).
|
|
49
|
+
* @param client - Optional {@link QueryClient} (defaults to the shared singleton).
|
|
50
|
+
* @returns A `Readable` of the TanStack {@link MutationObserverResult}.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```svelte
|
|
54
|
+
* <script lang="ts">
|
|
55
|
+
* import { useMutation, useQueryClient } from "katanakit-js/adapters/svelte";
|
|
56
|
+
* import { usePost } from "katanakit-js";
|
|
57
|
+
*
|
|
58
|
+
* const qc = useQueryClient();
|
|
59
|
+
* const mutation = useMutation({
|
|
60
|
+
* mutationFn: (name: string) => usePost("api", "createUser", { name }),
|
|
61
|
+
* onSuccess: () => qc.invalidateQueries({ queryKey: ["users"] }),
|
|
62
|
+
* });
|
|
63
|
+
* </script>
|
|
64
|
+
*
|
|
65
|
+
* <button disabled={$mutation.isPending} on:click={() => $mutation.mutate("Ada")}>Create</button>
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export function useMutation(options, client) {
|
|
69
|
+
const queryClient = client ?? useQueryClient();
|
|
70
|
+
const observer = new MutationObserver(queryClient, options);
|
|
71
|
+
return readable(observer.getCurrentResult(), (set) => {
|
|
72
|
+
const unsubscribe = observer.subscribe((result) => set(result));
|
|
73
|
+
// Stores are lazy: re-sync the latest result on every (re)subscribe.
|
|
74
|
+
set(observer.getCurrentResult());
|
|
75
|
+
return () => unsubscribe();
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/adapters/svelte/query.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,gBAAgB,EAIhB,aAAa,GAGb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAiB,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,UAAU,QAAQ,CACvB,OAA0D,EAC1D,MAAoB;IAEpB,MAAM,WAAW,GAAG,MAAM,IAAI,cAAc,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;IAE1F,OAAO,QAAQ,CAAqC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;QACxF,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAChE,GAAG,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACjC,OAAO,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,WAAW,CAC1B,OAAqE,EACrE,MAAoB;IAEpB,MAAM,WAAW,GAAG,MAAM,IAAI,cAAc,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAE5D,OAAO,QAAQ,CACd,QAAQ,CAAC,gBAAgB,EAAE,EAC3B,CAAC,GAAG,EAAE,EAAE;QACP,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAChE,qEAAqE;QACrE,GAAG,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACjC,OAAO,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC,CACD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Readable } from "svelte/store";
|
|
2
|
+
/** Options for {@link useWatch}. Accepted for API parity; stores deliver changes directly. */
|
|
3
|
+
export interface UseWatchOptions {
|
|
4
|
+
deep?: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Svelte store watcher that invokes `callback` whenever `source` emits a new
|
|
8
|
+
* value. Tracks the previous value so the callback receives `(value, previous)`.
|
|
9
|
+
*
|
|
10
|
+
* Fires once immediately (Svelte stores push their current value to new
|
|
11
|
+
* subscribers) and on every subsequent change. Unsubscribes automatically on
|
|
12
|
+
* component destroy when called during init.
|
|
13
|
+
*
|
|
14
|
+
* @typeParam T - The watched value type.
|
|
15
|
+
* @param source - A readable store to watch.
|
|
16
|
+
* @param callback - Invoked on change as `(value, previous)`.
|
|
17
|
+
* @param options - Accepted for API parity (ignored).
|
|
18
|
+
* @returns The unsubscribe function (for manual teardown outside a component).
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```svelte
|
|
22
|
+
* <script lang="ts">
|
|
23
|
+
* import { writable } from "svelte/store";
|
|
24
|
+
* import { useWatch } from "katanakit-js/adapters/svelte";
|
|
25
|
+
*
|
|
26
|
+
* const product = writable({ name: "", price: 0 });
|
|
27
|
+
* useWatch(product, (next, prev) => console.log(next, prev));
|
|
28
|
+
* </script>
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function useWatch<T>(source: Readable<T>, callback: (value: T, previous: T | undefined) => void, _options?: UseWatchOptions): () => void;
|
|
32
|
+
//# sourceMappingURL=watch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/adapters/svelte/watch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,8FAA8F;AAC9F,MAAM,WAAW,eAAe;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EACzB,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,EACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,KAAK,IAAI,EACrD,QAAQ,GAAE,eAAoB,GAC5B,MAAM,IAAI,CAeZ"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { onDestroy } from "svelte";
|
|
2
|
+
/**
|
|
3
|
+
* Svelte store watcher that invokes `callback` whenever `source` emits a new
|
|
4
|
+
* value. Tracks the previous value so the callback receives `(value, previous)`.
|
|
5
|
+
*
|
|
6
|
+
* Fires once immediately (Svelte stores push their current value to new
|
|
7
|
+
* subscribers) and on every subsequent change. Unsubscribes automatically on
|
|
8
|
+
* component destroy when called during init.
|
|
9
|
+
*
|
|
10
|
+
* @typeParam T - The watched value type.
|
|
11
|
+
* @param source - A readable store to watch.
|
|
12
|
+
* @param callback - Invoked on change as `(value, previous)`.
|
|
13
|
+
* @param options - Accepted for API parity (ignored).
|
|
14
|
+
* @returns The unsubscribe function (for manual teardown outside a component).
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```svelte
|
|
18
|
+
* <script lang="ts">
|
|
19
|
+
* import { writable } from "svelte/store";
|
|
20
|
+
* import { useWatch } from "katanakit-js/adapters/svelte";
|
|
21
|
+
*
|
|
22
|
+
* const product = writable({ name: "", price: 0 });
|
|
23
|
+
* useWatch(product, (next, prev) => console.log(next, prev));
|
|
24
|
+
* </script>
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export function useWatch(source, callback, _options = {}) {
|
|
28
|
+
let previous;
|
|
29
|
+
const unsubscribe = source.subscribe((value) => {
|
|
30
|
+
callback(value, previous);
|
|
31
|
+
previous = value;
|
|
32
|
+
});
|
|
33
|
+
try {
|
|
34
|
+
onDestroy(unsubscribe);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
// Not inside a component init — the caller owns teardown.
|
|
38
|
+
}
|
|
39
|
+
return unsubscribe;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=watch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/adapters/svelte/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAQnC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,QAAQ,CACvB,MAAmB,EACnB,QAAqD,EACrD,WAA4B,EAAE;IAE9B,IAAI,QAAuB,CAAC;IAE5B,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9C,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1B,QAAQ,GAAG,KAAK,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACJ,SAAS,CAAC,WAAW,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACR,0DAA0D;IAC3D,CAAC;IAED,OAAO,WAAW,CAAC;AACpB,CAAC"}
|
|
@@ -95,7 +95,7 @@ export async function useStartTelegramPolling(options = {}) {
|
|
|
95
95
|
if (signal?.aborted)
|
|
96
96
|
break;
|
|
97
97
|
const message = error instanceof Error ? error.message : String(error);
|
|
98
|
-
useLogger(
|
|
98
|
+
useLogger(`[Telegram] ${message}`, undefined, "error");
|
|
99
99
|
}
|
|
100
100
|
await useSleep(intervalMs);
|
|
101
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telegram.service.js","sourceRoot":"","sources":["../../../src/adapters/telegram/telegram.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"telegram.service.js","sourceRoot":"","sources":["../../../src/adapters/telegram/telegram.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/vanilla/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,cAAc,GACd,MAAM,sCAAsC,CAAC;AAC9C,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/vanilla/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,cAAc,GACd,MAAM,sCAAsC,CAAC;AAC9C,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { MutationObserver, type MutationObserverOptions, type QueryClient, QueryObserver, type QueryObserverOptions } from "@tanstack/query-core";
|
|
2
|
+
/**
|
|
3
|
+
* Vanilla (framework-free) query binding — plain TypeScript / JavaScript, no framework.
|
|
4
|
+
*
|
|
5
|
+
* Returns a raw TanStack {@link QueryObserver}. The framework adapters are this
|
|
6
|
+
* plus a reactivity bridge (React `useSyncExternalStore`, Vue `shallowReactive`,
|
|
7
|
+
* Solid store, Svelte store, Angular signals); here **you** own the bridge:
|
|
8
|
+
* subscribe, read `getCurrentResult()`, and re-render however you want (DOM,
|
|
9
|
+
* canvas, CLI, worker, terminal UI).
|
|
10
|
+
*
|
|
11
|
+
* The observer does not start fetching until you `subscribe()` (or call
|
|
12
|
+
* `refetch()`); it stops when the last subscriber unsubscribes or you call
|
|
13
|
+
* `destroy()`.
|
|
14
|
+
*
|
|
15
|
+
* @param options - TanStack query options (`queryKey`, `queryFn`, `staleTime`, …).
|
|
16
|
+
* @param client - Optional {@link QueryClient} (defaults to the shared singleton).
|
|
17
|
+
* @returns A {@link QueryObserver} — `subscribe`, `getCurrentResult`, `setOptions`, `refetch`, `destroy`.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* import { useQuery, useSafeQueryFn } from "katanakit-js/adapters/vanilla";
|
|
22
|
+
* import { useGetApi } from "katanakit-js";
|
|
23
|
+
*
|
|
24
|
+
* const observer = useQuery({
|
|
25
|
+
* queryKey: ["pokemon", 25],
|
|
26
|
+
* queryFn: useSafeQueryFn(() => useGetApi("pokeapi", "pokemonById", { params: { id: 25 } })),
|
|
27
|
+
* });
|
|
28
|
+
*
|
|
29
|
+
* const render = () => {
|
|
30
|
+
* const { data, isPending, isError, error } = observer.getCurrentResult();
|
|
31
|
+
* // …paint `data` / `isPending` / `error` wherever you want
|
|
32
|
+
* };
|
|
33
|
+
*
|
|
34
|
+
* const unsubscribe = observer.subscribe(render);
|
|
35
|
+
* render(); // paint the current (pending) state immediately
|
|
36
|
+
*
|
|
37
|
+
* // later: unsubscribe(); observer.destroy();
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export declare function useQuery<TQueryFnData = unknown, TError = Error, TData = TQueryFnData>(options: QueryObserverOptions<TQueryFnData, TError, TData>, client?: QueryClient): QueryObserver<TQueryFnData, TError, TData>;
|
|
41
|
+
/**
|
|
42
|
+
* Vanilla (framework-free) mutation binding.
|
|
43
|
+
*
|
|
44
|
+
* Returns a raw TanStack {@link MutationObserver}. Call `observer.mutate(vars)`,
|
|
45
|
+
* read `getCurrentResult()`, and `subscribe()` if you want to react to the
|
|
46
|
+
* `isPending` → `isSuccess` / `isError` transitions.
|
|
47
|
+
*
|
|
48
|
+
* @param options - TanStack mutation options (`mutationFn`, `onSuccess`, …).
|
|
49
|
+
* @param client - Optional {@link QueryClient} (defaults to the shared singleton).
|
|
50
|
+
* @returns A {@link MutationObserver} — `mutate`, `reset`, `getCurrentResult`, `subscribe`.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```ts
|
|
54
|
+
* import { useMutation } from "katanakit-js/adapters/vanilla";
|
|
55
|
+
* import { usePost } from "katanakit-js";
|
|
56
|
+
*
|
|
57
|
+
* const mutation = useMutation({
|
|
58
|
+
* mutationFn: (name: string) => usePost("api", "createUser", { name }),
|
|
59
|
+
* });
|
|
60
|
+
*
|
|
61
|
+
* const unsubscribe = mutation.subscribe(({ isPending, isSuccess, error }) => {
|
|
62
|
+
* // …paint the mutation state
|
|
63
|
+
* });
|
|
64
|
+
*
|
|
65
|
+
* await mutation.mutate("Ada");
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export declare function useMutation<TData = unknown, TError = Error, TVariables = void>(options: MutationObserverOptions<TData, TError, TVariables>, client?: QueryClient): MutationObserver<TData, TError, TVariables>;
|
|
69
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/adapters/vanilla/query.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,WAAW,EAChB,aAAa,EACb,KAAK,oBAAoB,EACzB,MAAM,sBAAsB,CAAC;AAI9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,QAAQ,CAAC,YAAY,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,KAAK,GAAG,YAAY,EACpF,OAAO,EAAE,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAC1D,MAAM,CAAC,EAAE,WAAW,GAClB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAG5C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,WAAW,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,UAAU,GAAG,IAAI,EAC7E,OAAO,EAAE,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAC3D,MAAM,CAAC,EAAE,WAAW,GAClB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,CAG7C"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { MutationObserver, QueryObserver, } from "@tanstack/query-core";
|
|
2
|
+
import { useQueryClient } from "../../core/services/query.service.js";
|
|
3
|
+
/**
|
|
4
|
+
* Vanilla (framework-free) query binding — plain TypeScript / JavaScript, no framework.
|
|
5
|
+
*
|
|
6
|
+
* Returns a raw TanStack {@link QueryObserver}. The framework adapters are this
|
|
7
|
+
* plus a reactivity bridge (React `useSyncExternalStore`, Vue `shallowReactive`,
|
|
8
|
+
* Solid store, Svelte store, Angular signals); here **you** own the bridge:
|
|
9
|
+
* subscribe, read `getCurrentResult()`, and re-render however you want (DOM,
|
|
10
|
+
* canvas, CLI, worker, terminal UI).
|
|
11
|
+
*
|
|
12
|
+
* The observer does not start fetching until you `subscribe()` (or call
|
|
13
|
+
* `refetch()`); it stops when the last subscriber unsubscribes or you call
|
|
14
|
+
* `destroy()`.
|
|
15
|
+
*
|
|
16
|
+
* @param options - TanStack query options (`queryKey`, `queryFn`, `staleTime`, …).
|
|
17
|
+
* @param client - Optional {@link QueryClient} (defaults to the shared singleton).
|
|
18
|
+
* @returns A {@link QueryObserver} — `subscribe`, `getCurrentResult`, `setOptions`, `refetch`, `destroy`.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* import { useQuery, useSafeQueryFn } from "katanakit-js/adapters/vanilla";
|
|
23
|
+
* import { useGetApi } from "katanakit-js";
|
|
24
|
+
*
|
|
25
|
+
* const observer = useQuery({
|
|
26
|
+
* queryKey: ["pokemon", 25],
|
|
27
|
+
* queryFn: useSafeQueryFn(() => useGetApi("pokeapi", "pokemonById", { params: { id: 25 } })),
|
|
28
|
+
* });
|
|
29
|
+
*
|
|
30
|
+
* const render = () => {
|
|
31
|
+
* const { data, isPending, isError, error } = observer.getCurrentResult();
|
|
32
|
+
* // …paint `data` / `isPending` / `error` wherever you want
|
|
33
|
+
* };
|
|
34
|
+
*
|
|
35
|
+
* const unsubscribe = observer.subscribe(render);
|
|
36
|
+
* render(); // paint the current (pending) state immediately
|
|
37
|
+
*
|
|
38
|
+
* // later: unsubscribe(); observer.destroy();
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export function useQuery(options, client) {
|
|
42
|
+
const queryClient = client ?? useQueryClient();
|
|
43
|
+
return new QueryObserver(queryClient, queryClient.defaultQueryOptions(options));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Vanilla (framework-free) mutation binding.
|
|
47
|
+
*
|
|
48
|
+
* Returns a raw TanStack {@link MutationObserver}. Call `observer.mutate(vars)`,
|
|
49
|
+
* read `getCurrentResult()`, and `subscribe()` if you want to react to the
|
|
50
|
+
* `isPending` → `isSuccess` / `isError` transitions.
|
|
51
|
+
*
|
|
52
|
+
* @param options - TanStack mutation options (`mutationFn`, `onSuccess`, …).
|
|
53
|
+
* @param client - Optional {@link QueryClient} (defaults to the shared singleton).
|
|
54
|
+
* @returns A {@link MutationObserver} — `mutate`, `reset`, `getCurrentResult`, `subscribe`.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```ts
|
|
58
|
+
* import { useMutation } from "katanakit-js/adapters/vanilla";
|
|
59
|
+
* import { usePost } from "katanakit-js";
|
|
60
|
+
*
|
|
61
|
+
* const mutation = useMutation({
|
|
62
|
+
* mutationFn: (name: string) => usePost("api", "createUser", { name }),
|
|
63
|
+
* });
|
|
64
|
+
*
|
|
65
|
+
* const unsubscribe = mutation.subscribe(({ isPending, isSuccess, error }) => {
|
|
66
|
+
* // …paint the mutation state
|
|
67
|
+
* });
|
|
68
|
+
*
|
|
69
|
+
* await mutation.mutate("Ada");
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export function useMutation(options, client) {
|
|
73
|
+
const queryClient = client ?? useQueryClient();
|
|
74
|
+
return new MutationObserver(queryClient, options);
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/adapters/vanilla/query.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,gBAAgB,EAGhB,aAAa,GAEb,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,QAAQ,CACvB,OAA0D,EAC1D,MAAoB;IAEpB,MAAM,WAAW,GAAG,MAAM,IAAI,cAAc,EAAE,CAAC;IAC/C,OAAO,IAAI,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,WAAW,CAC1B,OAA2D,EAC3D,MAAoB;IAEpB,MAAM,WAAW,GAAG,MAAM,IAAI,cAAc,EAAE,CAAC;IAC/C,OAAO,IAAI,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/vue/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/vue/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,cAAc,GACd,MAAM,sCAAsC,CAAC;AAC9C,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/vue/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/vue/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,cAAc,GACd,MAAM,sCAAsC,CAAC;AAC9C,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC"}
|
|
@@ -1,101 +1,45 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import { type
|
|
3
|
-
import type { ApiError, FetchResult } from "../../types/index.js";
|
|
4
|
-
/** Reactive return value of `useQuery`. */
|
|
5
|
-
export interface UseQueryReturn<T> {
|
|
6
|
-
/** The resolved data on success, `null` otherwise. */
|
|
7
|
-
data: Ref<T | null>;
|
|
8
|
-
/** The Safe Result error on failure, `null` otherwise. */
|
|
9
|
-
error: Ref<ApiError | null>;
|
|
10
|
-
/** Whether the query is currently fetching. */
|
|
11
|
-
isLoading: Ref<boolean>;
|
|
12
|
-
/** Whether the query succeeded with data. */
|
|
13
|
-
isSuccess: Ref<boolean>;
|
|
14
|
-
/** Whether the query failed with an error. */
|
|
15
|
-
isError: Ref<boolean>;
|
|
16
|
-
/** Whether the cached data is stale. */
|
|
17
|
-
isStale: Ref<boolean>;
|
|
18
|
-
/** Current status of the query. */
|
|
19
|
-
status: Ref<"idle" | "loading" | "success" | "error">;
|
|
20
|
-
/** Manually refetch the query. */
|
|
21
|
-
refetch: () => Promise<void>;
|
|
22
|
-
}
|
|
23
|
-
/** Configuration for `useQuery` (Vue reactive version). */
|
|
24
|
-
export interface UseQueryConfig<T = unknown> {
|
|
25
|
-
/** Reactive query key — the query refetches when it changes. */
|
|
26
|
-
queryKey: MaybeRef<QueryKey>;
|
|
27
|
-
/** Fetcher function returning a Safe Result. */
|
|
28
|
-
queryFn: () => Promise<FetchResult<T>>;
|
|
29
|
-
/** Time in ms before cached data is stale (default: 0). */
|
|
30
|
-
staleTime?: MaybeRef<number>;
|
|
31
|
-
/** Time in ms to keep unused data (default: 5 min). */
|
|
32
|
-
cacheTime?: number;
|
|
33
|
-
/** Retry count on failure (default: 3). */
|
|
34
|
-
retry?: number;
|
|
35
|
-
/** Base delay for exponential backoff (default: 1000). */
|
|
36
|
-
retryDelay?: number;
|
|
37
|
-
/** Refetch on window focus (default: true). */
|
|
38
|
-
refetchOnWindowFocus?: MaybeRef<boolean>;
|
|
39
|
-
/** Whether the query is enabled (default: true). */
|
|
40
|
-
enabled?: MaybeRef<boolean>;
|
|
41
|
-
}
|
|
42
|
-
/** Configuration for `useMutation`. */
|
|
43
|
-
export interface UseMutationConfig<TData = unknown, TVariables = unknown> {
|
|
44
|
-
mutationFn: (variables: TVariables) => Promise<FetchResult<TData>>;
|
|
45
|
-
onSuccess?: (data: TData, variables: TVariables) => void;
|
|
46
|
-
onError?: (error: ApiError, variables: TVariables) => void;
|
|
47
|
-
onSettled?: (data: TData | null, error: ApiError | null, variables: TVariables) => void;
|
|
48
|
-
}
|
|
49
|
-
/** Reactive return value of `useMutation`. */
|
|
50
|
-
export interface UseMutationReturn<TData, TVariables> {
|
|
51
|
-
/** The resolved data from the last mutation. */
|
|
52
|
-
data: Ref<TData | null>;
|
|
53
|
-
/** The error from the last mutation. */
|
|
54
|
-
error: Ref<ApiError | null>;
|
|
55
|
-
/** Whether a mutation is in flight. */
|
|
56
|
-
isLoading: Ref<boolean>;
|
|
57
|
-
/** Whether the last mutation succeeded. */
|
|
58
|
-
isSuccess: Ref<boolean>;
|
|
59
|
-
/** Whether the last mutation failed. */
|
|
60
|
-
isError: Ref<boolean>;
|
|
61
|
-
/** Current status of the mutation. */
|
|
62
|
-
status: Ref<"idle" | "loading" | "success" | "error">;
|
|
63
|
-
/** Execute the mutation. */
|
|
64
|
-
mutate: (variables: TVariables) => Promise<void>;
|
|
65
|
-
/** Reset the mutation state. */
|
|
66
|
-
reset: () => void;
|
|
67
|
-
}
|
|
1
|
+
import { type MutationObserverOptions, type MutationObserverResult, type QueryClient, type QueryObserverOptions, type QueryObserverResult } from "@tanstack/query-core";
|
|
2
|
+
import { type MaybeRef } from "vue";
|
|
68
3
|
/**
|
|
69
|
-
* Vue composable
|
|
70
|
-
* Integrates with the API manager — your `queryFn` typically calls
|
|
71
|
-
* `useGetApi` or `useFetch` and returns the Safe Result.
|
|
4
|
+
* Vue composable for a cached query, backed by TanStack Query Core.
|
|
72
5
|
*
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
6
|
+
* Returns a reactive {@link QueryObserverResult} — read `query.data`,
|
|
7
|
+
* `query.isPending`, `query.isError`, `query.status`, etc. directly.
|
|
8
|
+
* Pass a `ref`/`computed` for `options` to react to key changes.
|
|
9
|
+
*
|
|
10
|
+
* Call it inside a component `setup` (or an active effect scope) so the
|
|
11
|
+
* observer and the options watcher are disposed automatically.
|
|
12
|
+
*
|
|
13
|
+
* @param options - TanStack query options, plain or inside a `ref`/`computed`.
|
|
14
|
+
* @param client - Optional {@link QueryClient} (defaults to the shared singleton).
|
|
15
|
+
* @returns A reactive {@link QueryObserverResult}.
|
|
76
16
|
*
|
|
77
17
|
* @example
|
|
78
18
|
* ```vue
|
|
79
19
|
* <script setup>
|
|
80
|
-
* import { useQuery } from "katanakit-js/adapters/vue";
|
|
20
|
+
* import { useQuery, useSafeQueryFn } from "katanakit-js/adapters/vue";
|
|
81
21
|
* import { useGetApi } from "katanakit-js";
|
|
82
22
|
*
|
|
83
|
-
* const
|
|
84
|
-
* queryKey:
|
|
85
|
-
* queryFn: () => useGetApi("pokeapi", "pokemonById", { params: { id:
|
|
86
|
-
* staleTime: 60_000,
|
|
23
|
+
* const query = useQuery({
|
|
24
|
+
* queryKey: ["pokemon", 25],
|
|
25
|
+
* queryFn: useSafeQueryFn(() => useGetApi("pokeapi", "pokemonById", { params: { id: 25 } })),
|
|
87
26
|
* });
|
|
88
27
|
* </script>
|
|
28
|
+
*
|
|
29
|
+
* <template>
|
|
30
|
+
* <span v-if="query.isPending">Loading…</span>
|
|
31
|
+
* <span v-else-if="query.isError">{{ query.error?.message }}</span>
|
|
32
|
+
* <span v-else>{{ query.data?.name }}</span>
|
|
33
|
+
* </template>
|
|
89
34
|
* ```
|
|
90
35
|
*/
|
|
91
|
-
export declare function useQuery<
|
|
36
|
+
export declare function useQuery<TQueryFnData = unknown, TError = Error, TData = TQueryFnData>(options: MaybeRef<QueryObserverOptions<TQueryFnData, TError, TData>>, client?: QueryClient): QueryObserverResult<TData, TError>;
|
|
92
37
|
/**
|
|
93
|
-
* Vue composable for
|
|
94
|
-
* Does not cache — returns a `mutate` function that executes the mutation.
|
|
38
|
+
* Vue composable for a mutation, backed by TanStack Query Core.
|
|
95
39
|
*
|
|
96
|
-
* @param
|
|
97
|
-
* @param client - Optional QueryClient
|
|
98
|
-
* @returns
|
|
40
|
+
* @param options - TanStack mutation options, plain or inside a `ref`/`computed`.
|
|
41
|
+
* @param client - Optional {@link QueryClient} (defaults to the shared singleton).
|
|
42
|
+
* @returns A reactive {@link MutationObserverResult}.
|
|
99
43
|
*
|
|
100
44
|
* @example
|
|
101
45
|
* ```vue
|
|
@@ -104,12 +48,16 @@ export declare function useQuery<T>(config: UseQueryConfig<T>, client?: QueryCli
|
|
|
104
48
|
* import { usePost } from "katanakit-js";
|
|
105
49
|
*
|
|
106
50
|
* const qc = useQueryClient();
|
|
107
|
-
* const
|
|
108
|
-
* mutationFn: (name: string) => usePost("
|
|
51
|
+
* const mutation = useMutation({
|
|
52
|
+
* mutationFn: (name: string) => usePost("api", "createUser", { name }),
|
|
109
53
|
* onSuccess: () => qc.invalidateQueries({ queryKey: ["users"] }),
|
|
110
54
|
* });
|
|
111
55
|
* </script>
|
|
56
|
+
*
|
|
57
|
+
* <template>
|
|
58
|
+
* <button :disabled="mutation.isPending" @click="mutation.mutate('Ada')">Create</button>
|
|
59
|
+
* </template>
|
|
112
60
|
* ```
|
|
113
61
|
*/
|
|
114
|
-
export declare function useMutation<TData = unknown, TVariables = unknown>(
|
|
62
|
+
export declare function useMutation<TData = unknown, TError = Error, TVariables = void, TContext = unknown>(options: MaybeRef<MutationObserverOptions<TData, TError, TVariables, TContext>>, client?: QueryClient): MutationObserverResult<TData, TError, TVariables, TContext>;
|
|
115
63
|
//# sourceMappingURL=query.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/adapters/vue/query.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/adapters/vue/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,WAAW,EAEhB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEN,KAAK,QAAQ,EAKb,MAAM,KAAK,CAAC;AAIb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,QAAQ,CAAC,YAAY,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,KAAK,GAAG,YAAY,EACpF,OAAO,EAAE,QAAQ,CAAC,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,EACpE,MAAM,CAAC,EAAE,WAAW,GAClB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAwBpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,WAAW,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE,UAAU,GAAG,IAAI,EAAE,QAAQ,GAAG,OAAO,EACjG,OAAO,EAAE,QAAQ,CAAC,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,EAC/E,MAAM,CAAC,EAAE,WAAW,GAClB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CA0B7D"}
|