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,37 @@
|
|
|
1
|
+
import { type Signal } from "@angular/core";
|
|
2
|
+
import type { ApiError, UrlOptions } from "../../types/index.js";
|
|
3
|
+
/** Reactive state exposed by the {@link useRequest} factory (Angular signals). */
|
|
4
|
+
export interface RequestState<T = unknown> {
|
|
5
|
+
data: Signal<T | null>;
|
|
6
|
+
error: Signal<ApiError | null>;
|
|
7
|
+
loading: Signal<boolean>;
|
|
8
|
+
refetch: () => Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Angular signal factory that wraps KatanaKit's HTTP GET. Bridges the Safe
|
|
12
|
+
* Result pattern to Angular signals and never throws on HTTP errors.
|
|
13
|
+
*
|
|
14
|
+
* Must be called within an injection context (component field initializer,
|
|
15
|
+
* constructor, or service) so it can abort in-flight requests via `DestroyRef`.
|
|
16
|
+
* Stale responses are ignored via a request version counter.
|
|
17
|
+
*
|
|
18
|
+
* @param apiName - Name of the registered API (see `useInitApis`).
|
|
19
|
+
* @param endpointName - Name of the endpoint inside that API.
|
|
20
|
+
* @param options - Optional `UrlOptions` (path/query params).
|
|
21
|
+
* @returns Signals `{ data, error, loading }` plus `refetch`.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* import { Component } from "@angular/core";
|
|
26
|
+
* import { useRequest } from "katanakit-js/adapters/angular";
|
|
27
|
+
*
|
|
28
|
+
* @Component({ selector: "app-pokemon", template: `@if (loading()) { Loading… } @else { {{ data()?.name }} }` })
|
|
29
|
+
* export class PokemonComponent {
|
|
30
|
+
* readonly result = useRequest<{ name: string }>("pokeapi", "pokemonById", { params: { id: 25 } });
|
|
31
|
+
* readonly data = this.result.data;
|
|
32
|
+
* readonly loading = this.result.loading;
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export declare function useRequest<T>(apiName: string, endpointName: string, options?: UrlOptions): RequestState<T>;
|
|
37
|
+
//# sourceMappingURL=fetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../src/adapters/angular/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,MAAM,EAAU,MAAM,eAAe,CAAC;AAGxE,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEjE,kFAAkF;AAClF,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACxC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAC3B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,UAAU,GAClB,YAAY,CAAC,CAAC,CAAC,CA6CjB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { DestroyRef, inject, signal } from "@angular/core";
|
|
2
|
+
import { useFetch } from "../../core/services/http.service.js";
|
|
3
|
+
/**
|
|
4
|
+
* Angular signal factory that wraps KatanaKit's HTTP GET. Bridges the Safe
|
|
5
|
+
* Result pattern to Angular signals and never throws on HTTP errors.
|
|
6
|
+
*
|
|
7
|
+
* Must be called within an injection context (component field initializer,
|
|
8
|
+
* constructor, or service) so it can abort in-flight requests via `DestroyRef`.
|
|
9
|
+
* Stale responses are ignored via a request version counter.
|
|
10
|
+
*
|
|
11
|
+
* @param apiName - Name of the registered API (see `useInitApis`).
|
|
12
|
+
* @param endpointName - Name of the endpoint inside that API.
|
|
13
|
+
* @param options - Optional `UrlOptions` (path/query params).
|
|
14
|
+
* @returns Signals `{ data, error, loading }` plus `refetch`.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { Component } from "@angular/core";
|
|
19
|
+
* import { useRequest } from "katanakit-js/adapters/angular";
|
|
20
|
+
*
|
|
21
|
+
* @Component({ selector: "app-pokemon", template: `@if (loading()) { Loading… } @else { {{ data()?.name }} }` })
|
|
22
|
+
* export class PokemonComponent {
|
|
23
|
+
* readonly result = useRequest<{ name: string }>("pokeapi", "pokemonById", { params: { id: 25 } });
|
|
24
|
+
* readonly data = this.result.data;
|
|
25
|
+
* readonly loading = this.result.loading;
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export function useRequest(apiName, endpointName, options) {
|
|
30
|
+
const destroyRef = inject(DestroyRef);
|
|
31
|
+
const data = signal(null);
|
|
32
|
+
const error = signal(null);
|
|
33
|
+
const loading = signal(true);
|
|
34
|
+
let version = 0;
|
|
35
|
+
let controller = null;
|
|
36
|
+
let disposed = false;
|
|
37
|
+
const refetch = async () => {
|
|
38
|
+
const current = ++version;
|
|
39
|
+
controller?.abort();
|
|
40
|
+
const next = new AbortController();
|
|
41
|
+
controller = next;
|
|
42
|
+
loading.set(true);
|
|
43
|
+
error.set(null);
|
|
44
|
+
const result = await useFetch(apiName, endpointName, {
|
|
45
|
+
method: "GET",
|
|
46
|
+
urlOptions: options,
|
|
47
|
+
signal: next.signal,
|
|
48
|
+
});
|
|
49
|
+
if (disposed || current !== version)
|
|
50
|
+
return;
|
|
51
|
+
if (result.ok) {
|
|
52
|
+
data.set(result.data);
|
|
53
|
+
error.set(null);
|
|
54
|
+
}
|
|
55
|
+
else if (!next.signal.aborted) {
|
|
56
|
+
error.set(result.error);
|
|
57
|
+
}
|
|
58
|
+
loading.set(false);
|
|
59
|
+
};
|
|
60
|
+
destroyRef.onDestroy(() => {
|
|
61
|
+
disposed = true;
|
|
62
|
+
controller?.abort();
|
|
63
|
+
});
|
|
64
|
+
void refetch();
|
|
65
|
+
return { data, error, loading, refetch };
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/adapters/angular/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAe,MAAM,EAAE,MAAM,eAAe,CAAC;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAW/D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,UAAU,CACzB,OAAe,EACf,YAAoB,EACpB,OAAoB;IAEpB,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAEtC,MAAM,IAAI,GAAG,MAAM,CAAW,IAAI,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,CAAkB,IAAI,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAE7B,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,UAAU,GAA2B,IAAI,CAAC;IAC9C,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,MAAM,OAAO,GAAG,KAAK,IAAmB,EAAE;QACzC,MAAM,OAAO,GAAG,EAAE,OAAO,CAAC;QAC1B,UAAU,EAAE,KAAK,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;QACnC,UAAU,GAAG,IAAI,CAAC;QAElB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEhB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAI,OAAO,EAAE,YAAY,EAAE;YACvD,MAAM,EAAE,KAAK;YACb,UAAU,EAAE,OAAO;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;SACnB,CAAC,CAAC;QAEH,IAAI,QAAQ,IAAI,OAAO,KAAK,OAAO;YAAE,OAAO;QAE5C,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACtB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACjC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE;QACzB,QAAQ,GAAG,IAAI,CAAC;QAChB,UAAU,EAAE,KAAK,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,KAAK,OAAO,EAAE,CAAC;IAEf,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/angular/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,cAAc,GACd,MAAM,sCAAsC,CAAC;AAC9C,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/angular/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,cAAc,GACd,MAAM,sCAAsC,CAAC;AAC9C,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { type Signal } from "@angular/core";
|
|
2
|
+
import { type FetchStatus, type MutationObserverOptions, type MutationStatus, type QueryClient, type QueryObserverOptions, type QueryObserverResult, type QueryStatus, type RefetchOptions } from "@tanstack/query-core";
|
|
3
|
+
/** Signal-based query result returned by {@link useQuery}. */
|
|
4
|
+
export interface AngularQueryResult<TData = unknown, TError = Error> {
|
|
5
|
+
readonly data: Signal<TData | undefined>;
|
|
6
|
+
readonly error: Signal<TError | null>;
|
|
7
|
+
readonly isPending: Signal<boolean>;
|
|
8
|
+
readonly isFetching: Signal<boolean>;
|
|
9
|
+
readonly isLoading: Signal<boolean>;
|
|
10
|
+
readonly isSuccess: Signal<boolean>;
|
|
11
|
+
readonly isError: Signal<boolean>;
|
|
12
|
+
readonly isStale: Signal<boolean>;
|
|
13
|
+
readonly status: Signal<QueryStatus>;
|
|
14
|
+
readonly fetchStatus: Signal<FetchStatus>;
|
|
15
|
+
readonly refetch: (options?: RefetchOptions) => Promise<QueryObserverResult<TData, TError>>;
|
|
16
|
+
}
|
|
17
|
+
/** Signal-based mutation result returned by {@link useMutation}. */
|
|
18
|
+
export interface AngularMutationResult<TData = unknown, TError = Error, TVariables = void> {
|
|
19
|
+
readonly data: Signal<TData | undefined>;
|
|
20
|
+
readonly error: Signal<TError | null>;
|
|
21
|
+
readonly variables: Signal<TVariables | undefined>;
|
|
22
|
+
readonly isPending: Signal<boolean>;
|
|
23
|
+
readonly isSuccess: Signal<boolean>;
|
|
24
|
+
readonly isError: Signal<boolean>;
|
|
25
|
+
readonly isIdle: Signal<boolean>;
|
|
26
|
+
readonly status: Signal<MutationStatus>;
|
|
27
|
+
readonly mutate: (variables: TVariables) => Promise<TData>;
|
|
28
|
+
readonly reset: () => void;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Angular signal factory for a cached query, backed by TanStack Query Core.
|
|
32
|
+
*
|
|
33
|
+
* Returns one signal per field — `query.data()`, `query.isPending()`,
|
|
34
|
+
* `query.isError()`, `query.status()`, etc.
|
|
35
|
+
*
|
|
36
|
+
* Must be called within an injection context (so it auto-cleans via `DestroyRef`).
|
|
37
|
+
*
|
|
38
|
+
* @param options - TanStack query options (`queryKey`, `queryFn`, `staleTime`, …).
|
|
39
|
+
* @param client - Optional {@link QueryClient} (defaults to the shared singleton).
|
|
40
|
+
* @returns An {@link AngularQueryResult} of signals.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* import { Component } from "@angular/core";
|
|
45
|
+
* import { useQuery, useSafeQueryFn } from "katanakit-js/adapters/angular";
|
|
46
|
+
* import { useGetApi } from "katanakit-js";
|
|
47
|
+
*
|
|
48
|
+
* @Component({
|
|
49
|
+
* selector: "app-pokemon",
|
|
50
|
+
* template: `@if (query.isPending()) { Loading… } @else { {{ query.data()?.name }} }`,
|
|
51
|
+
* })
|
|
52
|
+
* export class PokemonComponent {
|
|
53
|
+
* readonly query = useQuery({
|
|
54
|
+
* queryKey: ["pokemon", 25],
|
|
55
|
+
* queryFn: useSafeQueryFn(() => useGetApi("pokeapi", "pokemonById", { params: { id: 25 } })),
|
|
56
|
+
* });
|
|
57
|
+
* }
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare function useQuery<TQueryFnData = unknown, TError = Error, TData = TQueryFnData>(options: QueryObserverOptions<TQueryFnData, TError, TData>, client?: QueryClient): AngularQueryResult<TData, TError>;
|
|
61
|
+
/**
|
|
62
|
+
* Angular signal factory for a mutation, backed by TanStack Query Core.
|
|
63
|
+
*
|
|
64
|
+
* Must be called within an injection context (so it auto-cleans via `DestroyRef`).
|
|
65
|
+
*
|
|
66
|
+
* @param options - TanStack mutation options (`mutationFn`, `onSuccess`, …).
|
|
67
|
+
* @param client - Optional {@link QueryClient} (defaults to the shared singleton).
|
|
68
|
+
* @returns An {@link AngularMutationResult} of signals.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* import { Component } from "@angular/core";
|
|
73
|
+
* import { useMutation, useQueryClient } from "katanakit-js/adapters/angular";
|
|
74
|
+
* import { usePost } from "katanakit-js";
|
|
75
|
+
*
|
|
76
|
+
* @Component({
|
|
77
|
+
* selector: "app-create",
|
|
78
|
+
* template: `<button [disabled]="mutation.isPending()" (click)="mutation.mutate('Ada')">Create</button>`,
|
|
79
|
+
* })
|
|
80
|
+
* export class CreateUserComponent {
|
|
81
|
+
* private readonly qc = useQueryClient();
|
|
82
|
+
* readonly mutation = useMutation({
|
|
83
|
+
* mutationFn: (name: string) => usePost("api", "createUser", { name }),
|
|
84
|
+
* onSuccess: () => this.qc.invalidateQueries({ queryKey: ["users"] }),
|
|
85
|
+
* });
|
|
86
|
+
* }
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export declare function useMutation<TData = unknown, TError = Error, TVariables = void>(options: MutationObserverOptions<TData, TError, TVariables>, client?: QueryClient): AngularMutationResult<TData, TError, TVariables>;
|
|
90
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/adapters/angular/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { computed, DestroyRef, inject, signal } from "@angular/core";
|
|
2
|
+
import { MutationObserver, QueryObserver, } from "@tanstack/query-core";
|
|
3
|
+
import { useQueryClient } from "../../core/services/query.service.js";
|
|
4
|
+
/**
|
|
5
|
+
* Angular signal factory for a cached query, backed by TanStack Query Core.
|
|
6
|
+
*
|
|
7
|
+
* Returns one signal per field — `query.data()`, `query.isPending()`,
|
|
8
|
+
* `query.isError()`, `query.status()`, etc.
|
|
9
|
+
*
|
|
10
|
+
* Must be called within an injection context (so it auto-cleans via `DestroyRef`).
|
|
11
|
+
*
|
|
12
|
+
* @param options - TanStack query options (`queryKey`, `queryFn`, `staleTime`, …).
|
|
13
|
+
* @param client - Optional {@link QueryClient} (defaults to the shared singleton).
|
|
14
|
+
* @returns An {@link AngularQueryResult} of signals.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { Component } from "@angular/core";
|
|
19
|
+
* import { useQuery, useSafeQueryFn } from "katanakit-js/adapters/angular";
|
|
20
|
+
* import { useGetApi } from "katanakit-js";
|
|
21
|
+
*
|
|
22
|
+
* @Component({
|
|
23
|
+
* selector: "app-pokemon",
|
|
24
|
+
* template: `@if (query.isPending()) { Loading… } @else { {{ query.data()?.name }} }`,
|
|
25
|
+
* })
|
|
26
|
+
* export class PokemonComponent {
|
|
27
|
+
* readonly query = useQuery({
|
|
28
|
+
* queryKey: ["pokemon", 25],
|
|
29
|
+
* queryFn: useSafeQueryFn(() => useGetApi("pokeapi", "pokemonById", { params: { id: 25 } })),
|
|
30
|
+
* });
|
|
31
|
+
* }
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export function useQuery(options, client) {
|
|
35
|
+
const queryClient = client ?? useQueryClient();
|
|
36
|
+
const destroyRef = inject(DestroyRef);
|
|
37
|
+
const observer = new QueryObserver(queryClient, queryClient.defaultQueryOptions(options));
|
|
38
|
+
const result = signal(observer.getCurrentResult());
|
|
39
|
+
const unsubscribe = observer.subscribe((next) => result.set(next));
|
|
40
|
+
destroyRef.onDestroy(unsubscribe);
|
|
41
|
+
return {
|
|
42
|
+
data: computed(() => result().data),
|
|
43
|
+
error: computed(() => result().error),
|
|
44
|
+
isPending: computed(() => result().isPending),
|
|
45
|
+
isFetching: computed(() => result().isFetching),
|
|
46
|
+
isLoading: computed(() => result().isLoading),
|
|
47
|
+
isSuccess: computed(() => result().isSuccess),
|
|
48
|
+
isError: computed(() => result().isError),
|
|
49
|
+
isStale: computed(() => result().isStale),
|
|
50
|
+
status: computed(() => result().status),
|
|
51
|
+
fetchStatus: computed(() => result().fetchStatus),
|
|
52
|
+
refetch: (refetchOptions) => observer.refetch(refetchOptions),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Angular signal factory for a mutation, backed by TanStack Query Core.
|
|
57
|
+
*
|
|
58
|
+
* Must be called within an injection context (so it auto-cleans via `DestroyRef`).
|
|
59
|
+
*
|
|
60
|
+
* @param options - TanStack mutation options (`mutationFn`, `onSuccess`, …).
|
|
61
|
+
* @param client - Optional {@link QueryClient} (defaults to the shared singleton).
|
|
62
|
+
* @returns An {@link AngularMutationResult} of signals.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```ts
|
|
66
|
+
* import { Component } from "@angular/core";
|
|
67
|
+
* import { useMutation, useQueryClient } from "katanakit-js/adapters/angular";
|
|
68
|
+
* import { usePost } from "katanakit-js";
|
|
69
|
+
*
|
|
70
|
+
* @Component({
|
|
71
|
+
* selector: "app-create",
|
|
72
|
+
* template: `<button [disabled]="mutation.isPending()" (click)="mutation.mutate('Ada')">Create</button>`,
|
|
73
|
+
* })
|
|
74
|
+
* export class CreateUserComponent {
|
|
75
|
+
* private readonly qc = useQueryClient();
|
|
76
|
+
* readonly mutation = useMutation({
|
|
77
|
+
* mutationFn: (name: string) => usePost("api", "createUser", { name }),
|
|
78
|
+
* onSuccess: () => this.qc.invalidateQueries({ queryKey: ["users"] }),
|
|
79
|
+
* });
|
|
80
|
+
* }
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
export function useMutation(options, client) {
|
|
84
|
+
const queryClient = client ?? useQueryClient();
|
|
85
|
+
const destroyRef = inject(DestroyRef);
|
|
86
|
+
const observer = new MutationObserver(queryClient, options);
|
|
87
|
+
const result = signal(observer.getCurrentResult());
|
|
88
|
+
const unsubscribe = observer.subscribe((next) => result.set(next));
|
|
89
|
+
destroyRef.onDestroy(unsubscribe);
|
|
90
|
+
return {
|
|
91
|
+
data: computed(() => result().data),
|
|
92
|
+
error: computed(() => result().error),
|
|
93
|
+
variables: computed(() => result().variables),
|
|
94
|
+
isPending: computed(() => result().isPending),
|
|
95
|
+
isSuccess: computed(() => result().isSuccess),
|
|
96
|
+
isError: computed(() => result().isError),
|
|
97
|
+
isIdle: computed(() => result().isIdle),
|
|
98
|
+
status: computed(() => result().status),
|
|
99
|
+
mutate: (variables) => observer.mutate(variables),
|
|
100
|
+
reset: () => observer.reset(),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/adapters/angular/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** Options for {@link useWatch}. Accepted for API parity; Angular tracks signal reads natively. */
|
|
2
|
+
export interface UseWatchOptions {
|
|
3
|
+
deep?: boolean;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Angular signal watcher that invokes `callback` whenever any signal read
|
|
7
|
+
* inside `source` changes. Tracks the previous value so the callback receives
|
|
8
|
+
* `(value, previous)`.
|
|
9
|
+
*
|
|
10
|
+
* Must be called within an injection context; the effect auto-disposes with
|
|
11
|
+
* the owning scope. Angular tracks nested signal reads automatically, so
|
|
12
|
+
* `deep` is effectively always on.
|
|
13
|
+
*
|
|
14
|
+
* @typeParam T - The watched value type.
|
|
15
|
+
* @param source - A getter that reads the signals to watch.
|
|
16
|
+
* @param callback - Invoked on change as `(value, previous)`.
|
|
17
|
+
* @param options - Accepted for API parity (ignored).
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* import { Component, signal } from "@angular/core";
|
|
22
|
+
* import { useWatch } from "katanakit-js/adapters/angular";
|
|
23
|
+
*
|
|
24
|
+
* @Component({ selector: "app-form", template: "" })
|
|
25
|
+
* export class FormComponent {
|
|
26
|
+
* readonly product = signal({ name: "", price: 0 });
|
|
27
|
+
* constructor() {
|
|
28
|
+
* useWatch(() => this.product(), (next, prev) => console.log(next, prev));
|
|
29
|
+
* }
|
|
30
|
+
* }
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare function useWatch<T>(source: () => T, callback: (value: T, previous: T | undefined) => void, _options?: UseWatchOptions): void;
|
|
34
|
+
//# sourceMappingURL=watch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/adapters/angular/watch.ts"],"names":[],"mappings":"AAEA,mGAAmG;AACnG,MAAM,WAAW,eAAe;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EACzB,MAAM,EAAE,MAAM,CAAC,EACf,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,KAAK,IAAI,EACrD,QAAQ,GAAE,eAAoB,GAC5B,IAAI,CAQN"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { effect } from "@angular/core";
|
|
2
|
+
/**
|
|
3
|
+
* Angular signal watcher that invokes `callback` whenever any signal read
|
|
4
|
+
* inside `source` changes. Tracks the previous value so the callback receives
|
|
5
|
+
* `(value, previous)`.
|
|
6
|
+
*
|
|
7
|
+
* Must be called within an injection context; the effect auto-disposes with
|
|
8
|
+
* the owning scope. Angular tracks nested signal reads automatically, so
|
|
9
|
+
* `deep` is effectively always on.
|
|
10
|
+
*
|
|
11
|
+
* @typeParam T - The watched value type.
|
|
12
|
+
* @param source - A getter that reads the signals to watch.
|
|
13
|
+
* @param callback - Invoked on change as `(value, previous)`.
|
|
14
|
+
* @param options - Accepted for API parity (ignored).
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { Component, signal } from "@angular/core";
|
|
19
|
+
* import { useWatch } from "katanakit-js/adapters/angular";
|
|
20
|
+
*
|
|
21
|
+
* @Component({ selector: "app-form", template: "" })
|
|
22
|
+
* export class FormComponent {
|
|
23
|
+
* readonly product = signal({ name: "", price: 0 });
|
|
24
|
+
* constructor() {
|
|
25
|
+
* useWatch(() => this.product(), (next, prev) => console.log(next, prev));
|
|
26
|
+
* }
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export function useWatch(source, callback, _options = {}) {
|
|
31
|
+
let previous;
|
|
32
|
+
effect(() => {
|
|
33
|
+
const value = source();
|
|
34
|
+
callback(value, previous);
|
|
35
|
+
previous = value;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=watch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/adapters/angular/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAOvC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,QAAQ,CACvB,MAAe,EACf,QAAqD,EACrD,WAA4B,EAAE;IAE9B,IAAI,QAAuB,CAAC;IAE5B,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;QACvB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1B,QAAQ,GAAG,KAAK,CAAC;IAClB,CAAC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -27,7 +27,7 @@ export function useCreateAssistantRouter(options = {}) {
|
|
|
27
27
|
return;
|
|
28
28
|
}
|
|
29
29
|
const result = await useReply(sessionId, message);
|
|
30
|
-
response.status(result.ok ? 200 : 502).json(result);
|
|
30
|
+
response.status(result.ok ? 200 : (result.error?.status ?? 502)).json(result);
|
|
31
31
|
});
|
|
32
32
|
router.get("/sessions/:id", async (request, response) => {
|
|
33
33
|
const id = String(request.params.id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assistant.service.js","sourceRoot":"","sources":["../../../src/adapters/assistant/assistant.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoD,MAAM,EAAE,MAAM,SAAS,CAAC;AACnF,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EACN,aAAa,EACb,QAAQ,EACR,eAAe,EACf,gBAAgB,GAChB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAUzE,2DAA2D;AAC3D,MAAM,oBAAoB,GAAG,SAAS,CAAC;IACtC,QAAQ,EAAE,MAAM;IAChB,GAAG,EAAE,EAAE;IACP,eAAe,EAAE,SAAS;IAC1B,aAAa,EAAE,KAAK;IACpB,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;CACxF,CAAC,CAAC;AAEH,sEAAsE;AACtE,MAAM,UAAU,wBAAwB,CAAC,UAAkC,EAAE;IAC5E,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;IAExB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,IAAI,CACV,OAAO,EACP,OAAO,CAAC,SAAS,IAAI,oBAAoB,EACzC,KAAK,EAAE,OAAgB,EAAE,QAAkB,EAAE,EAAE;QAC9C,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAGjD,CAAC;QAEF,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC1D,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACzB,EAAE,EAAE,KAAK;gBACT,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,EAAE,OAAO,EAAE,6BAA6B,EAAE,MAAM,EAAE,GAAG,EAAE;aAC9D,CAAC,CAAC;YACH,OAAO;QACR,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClD,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"assistant.service.js","sourceRoot":"","sources":["../../../src/adapters/assistant/assistant.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,7 +33,6 @@ export declare function useAstroPathsFrom<T, TParam extends string = "slug", TPr
|
|
|
33
33
|
* export async function getStaticPaths() {
|
|
34
34
|
* const result = await useAstroGetStaticPaths(getCollection, "blog");
|
|
35
35
|
* if (result.ok) return result.data;
|
|
36
|
-
* TODO: traer el useLogger('error', result.error)
|
|
37
36
|
* console.error(result.error);
|
|
38
37
|
* return [];
|
|
39
38
|
* }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astro.service.d.ts","sourceRoot":"","sources":["../../../src/adapters/astro/astro.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,CAAC,EAC9E,KAAK,EAAE,CAAC,EAAE,EACV,OAAO,GAAE,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAM,GAC3C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAkB7B;AAED
|
|
1
|
+
{"version":3,"file":"astro.service.d.ts","sourceRoot":"","sources":["../../../src/adapters/astro/astro.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,YAAY,EACZ,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,CAAC,EAC9E,KAAK,EAAE,CAAC,EAAE,EACV,OAAO,GAAE,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAM,GAC3C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAkB7B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,sBAAsB,CAC3C,KAAK,GAAG,OAAO,EACf,MAAM,SAAS,MAAM,GAAG,MAAM,EAC9B,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,EAEnC,eAAe,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC,EAC9E,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAM,GACpE,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAe1D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAClC,KAAK,EAAE,CAAC,EAAE,EACV,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,GACpC,CAAC,GAAG,IAAI,CAQV;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,MAAM,SAAS,MAAM,GAAG,MAAM,EAC3E,KAAK,EAAE,CAAC,EAAE,EACV,QAAQ,SAAK,EACb,KAAK,GAAE,MAAyB,GAC9B,SAAS,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAYzC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,EACrE,MAAM,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,EAC3B,KAAK,GAAE,MAAyB,GAC9B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,CAKtC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAEhG"}
|
|
@@ -41,7 +41,6 @@ export function useAstroPathsFrom(items, options = {}) {
|
|
|
41
41
|
* export async function getStaticPaths() {
|
|
42
42
|
* const result = await useAstroGetStaticPaths(getCollection, "blog");
|
|
43
43
|
* if (result.ok) return result.data;
|
|
44
|
-
* TODO: traer el useLogger('error', result.error)
|
|
45
44
|
* console.error(result.error);
|
|
46
45
|
* return [];
|
|
47
46
|
* }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astro.service.js","sourceRoot":"","sources":["../../../src/adapters/astro/astro.service.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iBAAiB,CAChC,KAAU,EACV,UAA2C,EAAE;IAE7C,MAAM,EACL,KAAK,GAAG,MAAgB,EACxB,SAAS,GAAG,CAAC,IAAO,EAAE,EAAE;QACvB,MAAM,MAAM,GAAG,IAAyD,CAAC;QACzE,OAAO,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC;IACzC,CAAC,EACD,SAAS,GAAG,CAAC,IAAO,EAAE,EAAE,CAAC,IAAyB,EAClD,UAAU,GACV,GAAG,OAAO,CAAC;IAEZ,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC3B,MAAM,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAG5E;QACD,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC;KACtB,CAAC,CAAC,CAAC;AACL,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"astro.service.js","sourceRoot":"","sources":["../../../src/adapters/astro/astro.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/** Base URL of the public dummyjson.com REST API. */
|
|
2
|
+
export declare const DUMMYJSON_BASE_URL = "https://dummyjson.com";
|
|
3
|
+
/**
|
|
4
|
+
* Registers the dummyjson.com API in the HTTP manager under the `dummyjson`
|
|
5
|
+
* key. Call once before any {@link useDummyJsonProducts}-style handler.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { useInitDummyJson } from "katanakit-js/adapters/bun";
|
|
10
|
+
*
|
|
11
|
+
* useInitDummyJson();
|
|
12
|
+
* ```
|
|
13
|
+
*/
|
|
14
|
+
export declare function useInitDummyJson(): void;
|
|
15
|
+
/** Serializes `data` into a JSON {@link Response}. */
|
|
16
|
+
export declare function jsonResponse(data: unknown, status?: number): Response;
|
|
17
|
+
/**
|
|
18
|
+
* Lists products from dummyjson.com.
|
|
19
|
+
*
|
|
20
|
+
* @returns A JSON `Response` wrapping the product list.
|
|
21
|
+
*/
|
|
22
|
+
export declare function useDummyJsonProducts(): Promise<Response>;
|
|
23
|
+
/**
|
|
24
|
+
* Fetches a single product by id.
|
|
25
|
+
*
|
|
26
|
+
* @param id - The product id.
|
|
27
|
+
* @returns A JSON `Response` wrapping the product.
|
|
28
|
+
*/
|
|
29
|
+
export declare function useDummyJsonProductById(id: string): Promise<Response>;
|
|
30
|
+
/**
|
|
31
|
+
* Searches products by a free-text query.
|
|
32
|
+
*
|
|
33
|
+
* @param query - The search term.
|
|
34
|
+
* @returns A JSON `Response` wrapping the search results.
|
|
35
|
+
*/
|
|
36
|
+
export declare function useDummyJsonProductSearch(query: string): Promise<Response>;
|
|
37
|
+
/**
|
|
38
|
+
* Lists all product categories.
|
|
39
|
+
*
|
|
40
|
+
* @returns A JSON `Response` wrapping the category list.
|
|
41
|
+
*/
|
|
42
|
+
export declare function useDummyJsonProductCategories(): Promise<Response>;
|
|
43
|
+
/**
|
|
44
|
+
* Lists products within a category.
|
|
45
|
+
*
|
|
46
|
+
* @param category - The category slug (e.g. `smartphones`).
|
|
47
|
+
* @returns A JSON `Response` wrapping the products.
|
|
48
|
+
*/
|
|
49
|
+
export declare function useDummyJsonProductsByCategory(category: string): Promise<Response>;
|
|
50
|
+
/**
|
|
51
|
+
* Lists users from dummyjson.com.
|
|
52
|
+
*
|
|
53
|
+
* @returns A JSON `Response` wrapping the user list.
|
|
54
|
+
*/
|
|
55
|
+
export declare function useDummyJsonUsers(): Promise<Response>;
|
|
56
|
+
/**
|
|
57
|
+
* Fetches a single user by id.
|
|
58
|
+
*
|
|
59
|
+
* @param id - The user id.
|
|
60
|
+
* @returns A JSON `Response` wrapping the user.
|
|
61
|
+
*/
|
|
62
|
+
export declare function useDummyJsonUserById(id: string): Promise<Response>;
|
|
63
|
+
/**
|
|
64
|
+
* Lists posts from dummyjson.com.
|
|
65
|
+
*
|
|
66
|
+
* @returns A JSON `Response` wrapping the post list.
|
|
67
|
+
*/
|
|
68
|
+
export declare function useDummyJsonPosts(): Promise<Response>;
|
|
69
|
+
/**
|
|
70
|
+
* Fetches a single post by id.
|
|
71
|
+
*
|
|
72
|
+
* @param id - The post id.
|
|
73
|
+
* @returns A JSON `Response` wrapping the post.
|
|
74
|
+
*/
|
|
75
|
+
export declare function useDummyJsonPostById(id: string): Promise<Response>;
|
|
76
|
+
/**
|
|
77
|
+
* Lists quotes from dummyjson.com.
|
|
78
|
+
*
|
|
79
|
+
* @returns A JSON `Response` wrapping the quote list.
|
|
80
|
+
*/
|
|
81
|
+
export declare function useDummyJsonQuotes(): Promise<Response>;
|
|
82
|
+
/**
|
|
83
|
+
* Fetches a random quote from dummyjson.com.
|
|
84
|
+
*
|
|
85
|
+
* @returns A JSON `Response` wrapping the quote.
|
|
86
|
+
*/
|
|
87
|
+
export declare function useDummyJsonRandomQuote(): Promise<Response>;
|
|
88
|
+
//# sourceMappingURL=dummyjson.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dummyjson.service.d.ts","sourceRoot":"","sources":["../../../src/adapters/bun/dummyjson.service.ts"],"names":[],"mappings":"AAGA,qDAAqD;AACrD,eAAO,MAAM,kBAAkB,0BAA0B,CAAC;AAiB1D;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAOvC;AAkBD,sDAAsD;AACtD,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,SAAM,GAAG,QAAQ,CAKlE;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAE9D;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAE3E;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAIhF;AAED;;;;GAIG;AACH,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,QAAQ,CAAC,CAEvE;AAED;;;;;GAKG;AACH,wBAAsB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAIxF;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAE3D;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAExE;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAE3D;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAExE;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAE5D;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAEjE"}
|