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.
Files changed (193) hide show
  1. package/README.md +453 -326
  2. package/dist/adapters/angular/fetch.d.ts +37 -0
  3. package/dist/adapters/angular/fetch.d.ts.map +1 -0
  4. package/dist/adapters/angular/fetch.js +67 -0
  5. package/dist/adapters/angular/fetch.js.map +1 -0
  6. package/dist/adapters/angular/index.d.ts +5 -0
  7. package/dist/adapters/angular/index.d.ts.map +1 -0
  8. package/dist/adapters/angular/index.js +5 -0
  9. package/dist/adapters/angular/index.js.map +1 -0
  10. package/dist/adapters/angular/query.d.ts +90 -0
  11. package/dist/adapters/angular/query.d.ts.map +1 -0
  12. package/dist/adapters/angular/query.js +103 -0
  13. package/dist/adapters/angular/query.js.map +1 -0
  14. package/dist/adapters/angular/watch.d.ts +34 -0
  15. package/dist/adapters/angular/watch.d.ts.map +1 -0
  16. package/dist/adapters/angular/watch.js +38 -0
  17. package/dist/adapters/angular/watch.js.map +1 -0
  18. package/dist/adapters/assistant/assistant.service.js +1 -1
  19. package/dist/adapters/assistant/assistant.service.js.map +1 -1
  20. package/dist/adapters/astro/astro.service.d.ts +0 -1
  21. package/dist/adapters/astro/astro.service.d.ts.map +1 -1
  22. package/dist/adapters/astro/astro.service.js +0 -1
  23. package/dist/adapters/astro/astro.service.js.map +1 -1
  24. package/dist/adapters/bun/dummyjson.service.d.ts +88 -0
  25. package/dist/adapters/bun/dummyjson.service.d.ts.map +1 -0
  26. package/dist/adapters/bun/dummyjson.service.js +149 -0
  27. package/dist/adapters/bun/dummyjson.service.js.map +1 -0
  28. package/dist/adapters/bun/index.d.ts +5 -0
  29. package/dist/adapters/bun/index.d.ts.map +1 -0
  30. package/dist/adapters/bun/index.js +5 -0
  31. package/dist/adapters/bun/index.js.map +1 -0
  32. package/dist/adapters/bun/main.d.ts +2 -0
  33. package/dist/adapters/bun/main.d.ts.map +1 -0
  34. package/dist/adapters/bun/main.js +6 -0
  35. package/dist/adapters/bun/main.js.map +1 -0
  36. package/dist/adapters/bun/routes.d.ts +62 -0
  37. package/dist/adapters/bun/routes.d.ts.map +1 -0
  38. package/dist/adapters/bun/routes.js +60 -0
  39. package/dist/adapters/bun/routes.js.map +1 -0
  40. package/dist/adapters/bun/seed.d.ts +65 -0
  41. package/dist/adapters/bun/seed.d.ts.map +1 -0
  42. package/dist/adapters/bun/seed.js +117 -0
  43. package/dist/adapters/bun/seed.js.map +1 -0
  44. package/dist/adapters/bun/server.d.ts +53 -0
  45. package/dist/adapters/bun/server.d.ts.map +1 -0
  46. package/dist/adapters/bun/server.js +64 -0
  47. package/dist/adapters/bun/server.js.map +1 -0
  48. package/dist/adapters/express/app.d.ts +2 -1
  49. package/dist/adapters/express/app.d.ts.map +1 -1
  50. package/dist/adapters/express/app.js +14 -2
  51. package/dist/adapters/express/app.js.map +1 -1
  52. package/dist/adapters/express/products.controller.d.ts.map +1 -1
  53. package/dist/adapters/express/products.controller.js +3 -1
  54. package/dist/adapters/express/products.controller.js.map +1 -1
  55. package/dist/adapters/express/server.js +2 -2
  56. package/dist/adapters/express/server.js.map +1 -1
  57. package/dist/adapters/notion/notion.service.d.ts +4 -2
  58. package/dist/adapters/notion/notion.service.d.ts.map +1 -1
  59. package/dist/adapters/notion/notion.service.js +19 -5
  60. package/dist/adapters/notion/notion.service.js.map +1 -1
  61. package/dist/adapters/react/fetch.d.ts +44 -0
  62. package/dist/adapters/react/fetch.d.ts.map +1 -0
  63. package/dist/adapters/react/fetch.js +74 -0
  64. package/dist/adapters/react/fetch.js.map +1 -0
  65. package/dist/adapters/react/index.d.ts +5 -0
  66. package/dist/adapters/react/index.d.ts.map +1 -0
  67. package/dist/adapters/react/index.js +5 -0
  68. package/dist/adapters/react/index.js.map +1 -0
  69. package/dist/adapters/react/query.d.ts +59 -0
  70. package/dist/adapters/react/query.d.ts.map +1 -0
  71. package/dist/adapters/react/query.js +86 -0
  72. package/dist/adapters/react/query.js.map +1 -0
  73. package/dist/adapters/react/watch.d.ts +37 -0
  74. package/dist/adapters/react/watch.d.ts.map +1 -0
  75. package/dist/adapters/react/watch.js +39 -0
  76. package/dist/adapters/react/watch.js.map +1 -0
  77. package/dist/adapters/solid/fetch.d.ts +43 -0
  78. package/dist/adapters/solid/fetch.d.ts.map +1 -0
  79. package/dist/adapters/solid/fetch.js +72 -0
  80. package/dist/adapters/solid/fetch.js.map +1 -0
  81. package/dist/adapters/solid/index.d.ts +5 -0
  82. package/dist/adapters/solid/index.d.ts.map +1 -0
  83. package/dist/adapters/solid/index.js +5 -0
  84. package/dist/adapters/solid/index.js.map +1 -0
  85. package/dist/adapters/solid/query.d.ts +60 -0
  86. package/dist/adapters/solid/query.d.ts.map +1 -0
  87. package/dist/adapters/solid/query.js +88 -0
  88. package/dist/adapters/solid/query.js.map +1 -0
  89. package/dist/adapters/solid/watch.d.ts +32 -0
  90. package/dist/adapters/solid/watch.d.ts.map +1 -0
  91. package/dist/adapters/solid/watch.js +36 -0
  92. package/dist/adapters/solid/watch.js.map +1 -0
  93. package/dist/adapters/svelte/fetch.d.ts +40 -0
  94. package/dist/adapters/svelte/fetch.d.ts.map +1 -0
  95. package/dist/adapters/svelte/fetch.js +75 -0
  96. package/dist/adapters/svelte/fetch.js.map +1 -0
  97. package/dist/adapters/svelte/index.d.ts +5 -0
  98. package/dist/adapters/svelte/index.d.ts.map +1 -0
  99. package/dist/adapters/svelte/index.js +5 -0
  100. package/dist/adapters/svelte/index.js.map +1 -0
  101. package/dist/adapters/svelte/query.d.ts +60 -0
  102. package/dist/adapters/svelte/query.d.ts.map +1 -0
  103. package/dist/adapters/svelte/query.js +78 -0
  104. package/dist/adapters/svelte/query.js.map +1 -0
  105. package/dist/adapters/svelte/watch.d.ts +32 -0
  106. package/dist/adapters/svelte/watch.d.ts.map +1 -0
  107. package/dist/adapters/svelte/watch.js +41 -0
  108. package/dist/adapters/svelte/watch.js.map +1 -0
  109. package/dist/adapters/telegram/telegram.service.js +1 -1
  110. package/dist/adapters/telegram/telegram.service.js.map +1 -1
  111. package/dist/adapters/vanilla/index.d.ts +3 -0
  112. package/dist/adapters/vanilla/index.d.ts.map +1 -0
  113. package/dist/adapters/vanilla/index.js +3 -0
  114. package/dist/adapters/vanilla/index.js.map +1 -0
  115. package/dist/adapters/vanilla/query.d.ts +69 -0
  116. package/dist/adapters/vanilla/query.d.ts.map +1 -0
  117. package/dist/adapters/vanilla/query.js +76 -0
  118. package/dist/adapters/vanilla/query.js.map +1 -0
  119. package/dist/adapters/vue/index.d.ts +1 -0
  120. package/dist/adapters/vue/index.d.ts.map +1 -1
  121. package/dist/adapters/vue/index.js +1 -0
  122. package/dist/adapters/vue/index.js.map +1 -1
  123. package/dist/adapters/vue/query.d.ts +35 -87
  124. package/dist/adapters/vue/query.d.ts.map +1 -1
  125. package/dist/adapters/vue/query.js +57 -168
  126. package/dist/adapters/vue/query.js.map +1 -1
  127. package/dist/adapters/vue/vue.service.d.ts +9 -5
  128. package/dist/adapters/vue/vue.service.d.ts.map +1 -1
  129. package/dist/adapters/vue/vue.service.js +7 -3
  130. package/dist/adapters/vue/vue.service.js.map +1 -1
  131. package/dist/adapters/whatsapp/whatsapp.service.js +1 -1
  132. package/dist/adapters/whatsapp/whatsapp.service.js.map +1 -1
  133. package/dist/adapters/wordpress/wordpress.service.d.ts +2 -1
  134. package/dist/adapters/wordpress/wordpress.service.d.ts.map +1 -1
  135. package/dist/adapters/wordpress/wordpress.service.js +10 -5
  136. package/dist/adapters/wordpress/wordpress.service.js.map +1 -1
  137. package/dist/core/services/agent.service.d.ts.map +1 -1
  138. package/dist/core/services/agent.service.js +9 -1
  139. package/dist/core/services/agent.service.js.map +1 -1
  140. package/dist/core/services/dates.service.d.ts.map +1 -1
  141. package/dist/core/services/dates.service.js +2 -1
  142. package/dist/core/services/dates.service.js.map +1 -1
  143. package/dist/core/services/error.service.d.ts +1 -1
  144. package/dist/core/services/error.service.js +1 -1
  145. package/dist/core/services/http.service.d.ts +26 -5
  146. package/dist/core/services/http.service.d.ts.map +1 -1
  147. package/dist/core/services/http.service.js +30 -6
  148. package/dist/core/services/http.service.js.map +1 -1
  149. package/dist/core/services/logger.service.d.ts +10 -67
  150. package/dist/core/services/logger.service.d.ts.map +1 -1
  151. package/dist/core/services/logger.service.js +13 -139
  152. package/dist/core/services/logger.service.js.map +1 -1
  153. package/dist/core/services/query.service.d.ts +87 -130
  154. package/dist/core/services/query.service.d.ts.map +1 -1
  155. package/dist/core/services/query.service.js +99 -366
  156. package/dist/core/services/query.service.js.map +1 -1
  157. package/dist/core/services/reactive.service.d.ts.map +1 -1
  158. package/dist/core/services/reactive.service.js +7 -10
  159. package/dist/core/services/reactive.service.js.map +1 -1
  160. package/dist/core/services/timing.service.js +8 -8
  161. package/dist/core/services/timing.service.js.map +1 -1
  162. package/dist/core/services/utils.service.d.ts.map +1 -1
  163. package/dist/core/services/utils.service.js +3 -0
  164. package/dist/core/services/utils.service.js.map +1 -1
  165. package/dist/index.d.ts +0 -1
  166. package/dist/index.d.ts.map +1 -1
  167. package/dist/index.js +0 -1
  168. package/dist/index.js.map +1 -1
  169. package/dist/infrastructure/dom/dom.service.d.ts.map +1 -1
  170. package/dist/infrastructure/dom/dom.service.js +18 -4
  171. package/dist/infrastructure/dom/dom.service.js.map +1 -1
  172. package/dist/infrastructure/observer/observer.service.js +2 -2
  173. package/dist/infrastructure/observer/observer.service.js.map +1 -1
  174. package/dist/infrastructure/sensors/sensors.service.js +6 -6
  175. package/dist/infrastructure/sensors/sensors.service.js.map +1 -1
  176. package/dist/infrastructure/storage/storage.service.d.ts.map +1 -1
  177. package/dist/infrastructure/storage/storage.service.js +12 -2
  178. package/dist/infrastructure/storage/storage.service.js.map +1 -1
  179. package/dist/prisma/assistant.store.d.ts +3 -0
  180. package/dist/prisma/assistant.store.d.ts.map +1 -1
  181. package/dist/prisma/assistant.store.js +12 -6
  182. package/dist/prisma/assistant.store.js.map +1 -1
  183. package/dist/prisma/use-prisma.d.ts +5 -4
  184. package/dist/prisma/use-prisma.d.ts.map +1 -1
  185. package/dist/prisma/use-prisma.js +5 -4
  186. package/dist/prisma/use-prisma.js.map +1 -1
  187. package/dist/types/index.d.ts +2 -6
  188. package/dist/types/index.d.ts.map +1 -1
  189. package/package.json +251 -185
  190. package/dist/prisma/db.d.ts +0 -4
  191. package/dist/prisma/db.d.ts.map +0 -1
  192. package/dist/prisma/db.js +0 -12
  193. 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("error", `[Telegram] ${message}`);
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,3 @@
1
+ export { useCreateQueryClient, useInitQueryClient, useQueryClient, useSafeQueryFn, } from "../../core/services/query.service.js";
2
+ export * from "./query.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ export { useCreateQueryClient, useInitQueryClient, useQueryClient, useSafeQueryFn, } from "../../core/services/query.service.js";
2
+ export * from "./query.js";
3
+ //# sourceMappingURL=index.js.map
@@ -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,3 +1,4 @@
1
+ export { useCreateQueryClient, useInitQueryClient, useQueryClient, useSafeQueryFn, } from "../../core/services/query.service.js";
1
2
  export * from "./query.js";
2
3
  export * from "./vue.service.js";
3
4
  export * from "./watch.js";
@@ -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,3 +1,4 @@
1
+ export { useCreateQueryClient, useInitQueryClient, useQueryClient, useSafeQueryFn, } from "../../core/services/query.service.js";
1
2
  export * from "./query.js";
2
3
  export * from "./vue.service.js";
3
4
  export * from "./watch.js";
@@ -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 MaybeRef, type Ref } from "vue";
2
- import { type QueryClient, type QueryKey } from "../../core/services/query.service.js";
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 that wraps the {@link QueryClient} with reactive state.
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
- * @param config - Query configuration with reactive query key.
74
- * @param client - Optional QueryClient instance (uses global singleton by default).
75
- * @returns Reactive `{ data, error, isLoading, isSuccess, isError, isStale, status, refetch }`.
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 { data, isLoading, error } = useQuery({
84
- * queryKey: () => ["pokemon", id.value],
85
- * queryFn: () => useGetApi("pokeapi", "pokemonById", { params: { id: id.value } }),
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<T>(config: UseQueryConfig<T>, client?: QueryClient): UseQueryReturn<T>;
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 mutations (POST/PUT/PATCH/DELETE).
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 config - Mutation configuration.
97
- * @param client - Optional QueryClient instance.
98
- * @returns Reactive `{ data, error, isLoading, isSuccess, isError, status, mutate, reset }`.
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 { mutate, isLoading } = useMutation({
108
- * mutationFn: (name: string) => usePost("myApi", "createUser", { name }),
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>(config: UseMutationConfig<TData, TVariables>, client?: QueryClient): UseMutationReturn<TData, TVariables>;
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":"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"}
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"}