katanakit-js 6.4.3 → 6.7.1

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 (93) hide show
  1. package/README.md +4 -3
  2. package/dist/adapters/express/server.d.ts +133 -1
  3. package/dist/adapters/express/server.d.ts.map +1 -1
  4. package/dist/adapters/express/server.js +199 -97
  5. package/dist/adapters/express/server.js.map +1 -1
  6. package/dist/adapters/insforge/insforge.service.d.ts +139 -4
  7. package/dist/adapters/insforge/insforge.service.d.ts.map +1 -1
  8. package/dist/adapters/insforge/insforge.service.js +383 -213
  9. package/dist/adapters/insforge/insforge.service.js.map +1 -1
  10. package/dist/adapters/notion/notion.service.d.ts +130 -144
  11. package/dist/adapters/notion/notion.service.d.ts.map +1 -1
  12. package/dist/adapters/notion/notion.service.js +330 -341
  13. package/dist/adapters/notion/notion.service.js.map +1 -1
  14. package/dist/adapters/telegram/telegram.service.d.ts +82 -13
  15. package/dist/adapters/telegram/telegram.service.d.ts.map +1 -1
  16. package/dist/adapters/telegram/telegram.service.js +133 -55
  17. package/dist/adapters/telegram/telegram.service.js.map +1 -1
  18. package/dist/adapters/wordpress/wordpress.service.d.ts +181 -110
  19. package/dist/adapters/wordpress/wordpress.service.d.ts.map +1 -1
  20. package/dist/adapters/wordpress/wordpress.service.js +556 -465
  21. package/dist/adapters/wordpress/wordpress.service.js.map +1 -1
  22. package/dist/core/services/access.service.d.ts +167 -4
  23. package/dist/core/services/access.service.d.ts.map +1 -1
  24. package/dist/core/services/access.service.js +241 -31
  25. package/dist/core/services/access.service.js.map +1 -1
  26. package/dist/core/services/agent.service.d.ts +182 -27
  27. package/dist/core/services/agent.service.d.ts.map +1 -1
  28. package/dist/core/services/agent.service.js +296 -164
  29. package/dist/core/services/agent.service.js.map +1 -1
  30. package/dist/core/services/assistant.service.d.ts +96 -5
  31. package/dist/core/services/assistant.service.d.ts.map +1 -1
  32. package/dist/core/services/assistant.service.js +171 -66
  33. package/dist/core/services/assistant.service.js.map +1 -1
  34. package/dist/core/services/dates.service.d.ts +183 -11
  35. package/dist/core/services/dates.service.d.ts.map +1 -1
  36. package/dist/core/services/dates.service.js +256 -57
  37. package/dist/core/services/dates.service.js.map +1 -1
  38. package/dist/core/services/http.service.d.ts +172 -133
  39. package/dist/core/services/http.service.d.ts.map +1 -1
  40. package/dist/core/services/http.service.js +381 -310
  41. package/dist/core/services/http.service.js.map +1 -1
  42. package/dist/core/services/logger.service.d.ts +96 -34
  43. package/dist/core/services/logger.service.d.ts.map +1 -1
  44. package/dist/core/services/logger.service.js +128 -41
  45. package/dist/core/services/logger.service.js.map +1 -1
  46. package/dist/core/services/query.service.d.ts +101 -0
  47. package/dist/core/services/query.service.d.ts.map +1 -1
  48. package/dist/core/services/query.service.js +131 -14
  49. package/dist/core/services/query.service.js.map +1 -1
  50. package/dist/core/services/utils.service.d.ts +286 -131
  51. package/dist/core/services/utils.service.d.ts.map +1 -1
  52. package/dist/core/services/utils.service.js +417 -227
  53. package/dist/core/services/utils.service.js.map +1 -1
  54. package/dist/core/services/validation.service.d.ts +48 -3
  55. package/dist/core/services/validation.service.d.ts.map +1 -1
  56. package/dist/core/services/validation.service.js +75 -23
  57. package/dist/core/services/validation.service.js.map +1 -1
  58. package/dist/infrastructure/decorators/cache.decorator.d.ts +53 -0
  59. package/dist/infrastructure/decorators/cache.decorator.d.ts.map +1 -0
  60. package/dist/infrastructure/decorators/cache.decorator.js +47 -0
  61. package/dist/infrastructure/decorators/cache.decorator.js.map +1 -0
  62. package/dist/infrastructure/decorators/index.d.ts +4 -0
  63. package/dist/infrastructure/decorators/index.d.ts.map +1 -0
  64. package/dist/infrastructure/decorators/index.js +4 -0
  65. package/dist/infrastructure/decorators/index.js.map +1 -0
  66. package/dist/infrastructure/decorators/logger.decorator.d.ts +38 -0
  67. package/dist/infrastructure/decorators/logger.decorator.d.ts.map +1 -0
  68. package/dist/infrastructure/decorators/logger.decorator.js +66 -0
  69. package/dist/infrastructure/decorators/logger.decorator.js.map +1 -0
  70. package/dist/infrastructure/decorators/retry.decorator.d.ts +37 -0
  71. package/dist/infrastructure/decorators/retry.decorator.d.ts.map +1 -0
  72. package/dist/infrastructure/decorators/retry.decorator.js +54 -0
  73. package/dist/infrastructure/decorators/retry.decorator.js.map +1 -0
  74. package/dist/infrastructure/dom/dom.service.d.ts +11 -5
  75. package/dist/infrastructure/dom/dom.service.d.ts.map +1 -1
  76. package/dist/infrastructure/dom/dom.service.js +20 -6
  77. package/dist/infrastructure/dom/dom.service.js.map +1 -1
  78. package/dist/infrastructure/index.d.ts +1 -0
  79. package/dist/infrastructure/index.d.ts.map +1 -1
  80. package/dist/infrastructure/index.js +1 -0
  81. package/dist/infrastructure/index.js.map +1 -1
  82. package/dist/prisma/schema.json +17 -13
  83. package/dist/styles.css +2 -0
  84. package/package.json +32 -38
  85. package/scss/_flags.scss +179 -0
  86. package/scss/_functions.scss +168 -0
  87. package/scss/_mixins.scss +658 -0
  88. package/scss/_reset.scss +275 -0
  89. package/scss/_utilities.scss +449 -0
  90. package/scss/_variables.scss +539 -0
  91. package/scss/components/_index.scss +50 -0
  92. package/scss/demo.scss +12 -0
  93. package/scss/main.scss +56 -0
@@ -8,8 +8,133 @@ import { QueryClient, } from "@tanstack/query-core";
8
8
  * without installing TanStack separately.
9
9
  */
10
10
  export * from "@tanstack/query-core";
11
- /** Module-level {@link QueryClient} singleton shared by every adapter (browser). */
12
- let instance = null;
11
+ /**
12
+ * QueryClientFactory - Factory Pattern para crear instancias de QueryClient.
13
+ *
14
+ * Centraliza la creación de clientes: `create()` fabrica un cliente nuevo
15
+ * (por petición en SSR) y `createShared()` reemplaza el singleton compartido.
16
+ * El resto del código no llama `new QueryClient()` directamente, así que la
17
+ * política de creación vive en un único punto (Open/Closed).
18
+ *
19
+ * @example
20
+ * ```ts
21
+ * // SSR: un cliente por petición
22
+ * const client = QueryClientFactory.create({ defaultOptions: { queries: { staleTime: 60_000 } } });
23
+ *
24
+ * // Browser: singleton compartido
25
+ * QueryClientFactory.createShared();
26
+ * ```
27
+ */
28
+ export class QueryClientFactory {
29
+ /**
30
+ * Fabrica un **nuevo** {@link QueryClient}. Úsalo en el servidor (SSR) para
31
+ * obtener un cliente por petición y evitar compartir la caché global.
32
+ *
33
+ * @param config - TanStack {@link QueryClientConfig} (caches, default options).
34
+ * @returns Un {@link QueryClient} fresco.
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * const client = QueryClientFactory.create();
39
+ * await client.prefetchQuery({ queryKey, queryFn });
40
+ * ```
41
+ */
42
+ static create(config = {}) {
43
+ return new QueryClient(config);
44
+ }
45
+ /**
46
+ * Reemplaza el singleton compartido con un cliente configurado.
47
+ * Limpia la caché del cliente anterior antes de intercambiarlo.
48
+ *
49
+ * @param config - TanStack {@link QueryClientConfig}.
50
+ * @returns El nuevo {@link QueryClient} compartido.
51
+ */
52
+ static createShared(config = {}) {
53
+ return QueryService.getInstance().useInit(config);
54
+ }
55
+ }
56
+ /**
57
+ * QueryService - Singleton para el QueryClient compartido.
58
+ *
59
+ * Aplica el patrón Singleton: una única instancia mantiene el
60
+ * {@link QueryClient} global que comparten todos los adaptadores de
61
+ * framework (browser). En SSR, usa {@link QueryClientFactory.create} para
62
+ * un cliente por petición.
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * const client = QueryService.getInstance().useGetClient();
67
+ * await client.invalidateQueries({ queryKey: ["users"] });
68
+ * ```
69
+ */
70
+ export class QueryService {
71
+ static instance;
72
+ /** Shared {@link QueryClient} singleton (browser). */
73
+ client = null;
74
+ /**
75
+ * Constructor privado - enforce singleton.
76
+ */
77
+ constructor() { }
78
+ /**
79
+ * Obtiene la instancia única del QueryService (Singleton).
80
+ *
81
+ * @returns La instancia única de {@link QueryService}.
82
+ */
83
+ static getInstance() {
84
+ if (!QueryService.instance) {
85
+ QueryService.instance = new QueryService();
86
+ }
87
+ return QueryService.instance;
88
+ }
89
+ /**
90
+ * Returns the shared {@link QueryClient}, creating one on first call.
91
+ *
92
+ * This is a **process-global** instance: it is the right default in the browser,
93
+ * but on the server it would leak cached data across requests. Use
94
+ * {@link QueryClientFactory.create} per request when running under SSR.
95
+ *
96
+ * @returns The shared {@link QueryClient}.
97
+ */
98
+ useGetClient() {
99
+ this.client ??= QueryClientFactory.create();
100
+ return this.client;
101
+ }
102
+ /**
103
+ * Replaces the shared {@link QueryClient} with a configured instance.
104
+ * The previous client's caches are cleared before swapping.
105
+ *
106
+ * @param config - TanStack {@link QueryClientConfig} (caches, default options).
107
+ * @returns The newly created {@link QueryClient}.
108
+ */
109
+ useInit(config = {}) {
110
+ this.client?.clear();
111
+ this.client = QueryClientFactory.create(config);
112
+ return this.client;
113
+ }
114
+ /**
115
+ * Bridges a KatanaKit Safe Result fetcher into a TanStack `queryFn`.
116
+ *
117
+ * TanStack expects `queryFn` to resolve with data and **throw** on failure;
118
+ * KatanaKit returns `{ data, error, ok }`. This adapter unwraps the Safe Result
119
+ * so the two fit together. Throws a real `Error` (with `status`) so `instanceof`
120
+ * checks and error boundaries work.
121
+ *
122
+ * @typeParam T - The resolved data type.
123
+ * @param fn - A function returning a Safe Result (e.g. `() => useGetApi(...)`).
124
+ * @returns A `queryFn` that throws on error.
125
+ */
126
+ useSafeQueryFn(fn) {
127
+ return async (context) => {
128
+ const result = await fn(context);
129
+ if (!result.ok) {
130
+ throw Object.assign(new Error(result.error.message), {
131
+ status: result.error.status,
132
+ });
133
+ }
134
+ return result.data;
135
+ };
136
+ }
137
+ }
13
138
  /**
14
139
  * Creates a **new** {@link QueryClient}. Use this on the server (SSR) to get one
15
140
  * client per request and avoid sharing a process-global cache across users.
@@ -26,7 +151,7 @@ let instance = null;
26
151
  * ```
27
152
  */
28
153
  export function useCreateQueryClient(config = {}) {
29
- return new QueryClient(config);
154
+ return QueryClientFactory.create(config);
30
155
  }
31
156
  /**
32
157
  * Returns the shared {@link QueryClient} singleton, creating one on first call.
@@ -46,7 +171,7 @@ export function useCreateQueryClient(config = {}) {
46
171
  * ```
47
172
  */
48
173
  export function useQueryClient() {
49
- return (instance ??= new QueryClient());
174
+ return QueryService.getInstance().useGetClient();
50
175
  }
51
176
  /**
52
177
  * Replaces the shared {@link QueryClient} singleton with a configured instance.
@@ -65,9 +190,7 @@ export function useQueryClient() {
65
190
  * ```
66
191
  */
67
192
  export function useInitQueryClient(config = {}) {
68
- instance?.clear();
69
- instance = new QueryClient(config);
70
- return instance;
193
+ return QueryService.getInstance().useInit(config);
71
194
  }
72
195
  /**
73
196
  * Bridges a KatanaKit Safe Result fetcher into a TanStack `queryFn`.
@@ -99,12 +222,6 @@ export function useInitQueryClient(config = {}) {
99
222
  * ```
100
223
  */
101
224
  export function useSafeQueryFn(fn) {
102
- return async (context) => {
103
- const result = await fn(context);
104
- if (!result.ok) {
105
- throw Object.assign(new Error(result.error.message), { status: result.error.status });
106
- }
107
- return result.data;
108
- };
225
+ return QueryService.getInstance().useSafeQueryFn(fn);
109
226
  }
110
227
  //# sourceMappingURL=query.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.service.js","sourceRoot":"","sources":["../../../src/core/services/query.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,WAAW,GAGX,MAAM,sBAAsB,CAAC;AAI9B;;;;;;;GAOG;AACH,cAAc,sBAAsB,CAAC;AAErC,oFAAoF;AACpF,IAAI,QAAQ,GAAuB,IAAI,CAAC;AAExC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAA4B,EAAE;IAClE,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,cAAc;IAC7B,OAAO,CAAC,QAAQ,KAAK,IAAI,WAAW,EAAE,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAA4B,EAAE;IAChE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClB,QAAQ,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,cAAc,CAC7B,EAA8D;IAE9D,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,OAAO,MAAM,CAAC,IAAS,CAAC;IACzB,CAAC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"query.service.js","sourceRoot":"","sources":["../../../src/core/services/query.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,WAAW,GAGX,MAAM,sBAAsB,CAAC;AAI9B;;;;;;;GAOG;AACH,cAAc,sBAAsB,CAAC;AAErC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,kBAAkB;IAC9B;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,MAAM,CAAC,SAA4B,EAAE;QAC3C,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,YAAY,CAAC,SAA4B,EAAE;QACjD,OAAO,YAAY,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;CACD;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,YAAY;IAChB,MAAM,CAAC,QAAQ,CAAe;IAEtC,sDAAsD;IAC9C,MAAM,GAAuB,IAAI,CAAC;IAE1C;;OAEG;IACH,gBAAuB,CAAC;IAExB;;;;OAIG;IACH,MAAM,CAAC,WAAW;QACjB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC5B,YAAY,CAAC,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAC5C,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAED;;;;;;;;OAQG;IACH,YAAY;QACX,IAAI,CAAC,MAAM,KAAK,kBAAkB,CAAC,MAAM,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CAAC,SAA4B,EAAE;QACrC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC,MAAM,CAAC;IACpB,CAAC;IAED;;;;;;;;;;;OAWG;IACH,cAAc,CACb,EAA8D;QAE9D,OAAO,KAAK,EAAE,OAAO,EAAE,EAAE;YACxB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBAChB,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;oBACpD,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;iBAC3B,CAAC,CAAC;YACJ,CAAC;YACD,OAAO,MAAM,CAAC,IAAS,CAAC;QACzB,CAAC,CAAC;IACH,CAAC;CACD;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAA4B,EAAE;IAClE,OAAO,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,cAAc;IAC7B,OAAO,YAAY,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAA4B,EAAE;IAChE,OAAO,YAAY,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,cAAc,CAC7B,EAA8D;IAE9D,OAAO,YAAY,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;AACtD,CAAC"}