katanakit-js 3.2.1 → 4.0.2

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 (181) hide show
  1. package/README.md +435 -307
  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 +4 -0
  7. package/dist/adapters/angular/index.d.ts.map +1 -0
  8. package/dist/adapters/angular/index.js +4 -0
  9. package/dist/adapters/angular/index.js.map +1 -0
  10. package/dist/adapters/angular/query.d.ts +107 -0
  11. package/dist/adapters/angular/query.d.ts.map +1 -0
  12. package/dist/adapters/angular/query.js +166 -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 +4 -0
  66. package/dist/adapters/react/index.d.ts.map +1 -0
  67. package/dist/adapters/react/index.js +4 -0
  68. package/dist/adapters/react/index.js.map +1 -0
  69. package/dist/adapters/react/query.d.ts +104 -0
  70. package/dist/adapters/react/query.d.ts.map +1 -0
  71. package/dist/adapters/react/query.js +200 -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 +4 -0
  82. package/dist/adapters/solid/index.d.ts.map +1 -0
  83. package/dist/adapters/solid/index.js +4 -0
  84. package/dist/adapters/solid/index.js.map +1 -0
  85. package/dist/adapters/solid/query.d.ts +102 -0
  86. package/dist/adapters/solid/query.d.ts.map +1 -0
  87. package/dist/adapters/solid/query.js +163 -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 +4 -0
  98. package/dist/adapters/svelte/index.d.ts.map +1 -0
  99. package/dist/adapters/svelte/index.js +4 -0
  100. package/dist/adapters/svelte/index.js.map +1 -0
  101. package/dist/adapters/svelte/query.d.ts +108 -0
  102. package/dist/adapters/svelte/query.d.ts.map +1 -0
  103. package/dist/adapters/svelte/query.js +172 -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/vue/query.d.ts +1 -2
  112. package/dist/adapters/vue/query.d.ts.map +1 -1
  113. package/dist/adapters/vue/query.js +9 -9
  114. package/dist/adapters/vue/query.js.map +1 -1
  115. package/dist/adapters/vue/vue.service.d.ts +9 -5
  116. package/dist/adapters/vue/vue.service.d.ts.map +1 -1
  117. package/dist/adapters/vue/vue.service.js +7 -3
  118. package/dist/adapters/vue/vue.service.js.map +1 -1
  119. package/dist/adapters/whatsapp/whatsapp.service.js +1 -1
  120. package/dist/adapters/whatsapp/whatsapp.service.js.map +1 -1
  121. package/dist/adapters/wordpress/wordpress.service.d.ts +2 -1
  122. package/dist/adapters/wordpress/wordpress.service.d.ts.map +1 -1
  123. package/dist/adapters/wordpress/wordpress.service.js +10 -5
  124. package/dist/adapters/wordpress/wordpress.service.js.map +1 -1
  125. package/dist/core/services/agent.service.d.ts.map +1 -1
  126. package/dist/core/services/agent.service.js +9 -1
  127. package/dist/core/services/agent.service.js.map +1 -1
  128. package/dist/core/services/dates.service.d.ts.map +1 -1
  129. package/dist/core/services/dates.service.js +2 -1
  130. package/dist/core/services/dates.service.js.map +1 -1
  131. package/dist/core/services/error.service.d.ts +1 -1
  132. package/dist/core/services/error.service.js +1 -1
  133. package/dist/core/services/http.service.d.ts +26 -5
  134. package/dist/core/services/http.service.d.ts.map +1 -1
  135. package/dist/core/services/http.service.js +30 -6
  136. package/dist/core/services/http.service.js.map +1 -1
  137. package/dist/core/services/logger.service.d.ts +10 -67
  138. package/dist/core/services/logger.service.d.ts.map +1 -1
  139. package/dist/core/services/logger.service.js +13 -139
  140. package/dist/core/services/logger.service.js.map +1 -1
  141. package/dist/core/services/query.service.d.ts +4 -0
  142. package/dist/core/services/query.service.d.ts.map +1 -1
  143. package/dist/core/services/query.service.js +75 -63
  144. package/dist/core/services/query.service.js.map +1 -1
  145. package/dist/core/services/reactive.service.d.ts.map +1 -1
  146. package/dist/core/services/reactive.service.js +7 -10
  147. package/dist/core/services/reactive.service.js.map +1 -1
  148. package/dist/core/services/timing.service.js +8 -8
  149. package/dist/core/services/timing.service.js.map +1 -1
  150. package/dist/core/services/utils.service.d.ts.map +1 -1
  151. package/dist/core/services/utils.service.js +3 -0
  152. package/dist/core/services/utils.service.js.map +1 -1
  153. package/dist/index.d.ts +0 -1
  154. package/dist/index.d.ts.map +1 -1
  155. package/dist/index.js +0 -1
  156. package/dist/index.js.map +1 -1
  157. package/dist/infrastructure/dom/dom.service.d.ts.map +1 -1
  158. package/dist/infrastructure/dom/dom.service.js +18 -4
  159. package/dist/infrastructure/dom/dom.service.js.map +1 -1
  160. package/dist/infrastructure/observer/observer.service.js +2 -2
  161. package/dist/infrastructure/observer/observer.service.js.map +1 -1
  162. package/dist/infrastructure/sensors/sensors.service.js +6 -6
  163. package/dist/infrastructure/sensors/sensors.service.js.map +1 -1
  164. package/dist/infrastructure/storage/storage.service.d.ts.map +1 -1
  165. package/dist/infrastructure/storage/storage.service.js +12 -2
  166. package/dist/infrastructure/storage/storage.service.js.map +1 -1
  167. package/dist/prisma/assistant.store.d.ts +3 -0
  168. package/dist/prisma/assistant.store.d.ts.map +1 -1
  169. package/dist/prisma/assistant.store.js +12 -6
  170. package/dist/prisma/assistant.store.js.map +1 -1
  171. package/dist/prisma/use-prisma.d.ts +5 -4
  172. package/dist/prisma/use-prisma.d.ts.map +1 -1
  173. package/dist/prisma/use-prisma.js +5 -4
  174. package/dist/prisma/use-prisma.js.map +1 -1
  175. package/dist/types/index.d.ts +2 -6
  176. package/dist/types/index.d.ts.map +1 -1
  177. package/package.json +244 -185
  178. package/dist/prisma/db.d.ts +0 -4
  179. package/dist/prisma/db.d.ts.map +0 -1
  180. package/dist/prisma/db.js +0 -12
  181. package/dist/prisma/db.js.map +0 -1
@@ -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"}
@@ -0,0 +1,149 @@
1
+ import { useFetch, useInitApis } from "../../core/services/http.service.js";
2
+ /** Base URL of the public dummyjson.com REST API. */
3
+ export const DUMMYJSON_BASE_URL = "https://dummyjson.com";
4
+ /** Endpoints of the dummyjson.com REST API (relative to {@link DUMMYJSON_BASE_URL}). */
5
+ const DUMMYJSON_ENDPOINTS = {
6
+ products: "/products",
7
+ productById: "/products/:id",
8
+ productSearch: "/products/search",
9
+ productCategories: "/products/categories",
10
+ productByCategory: "/products/category/:category",
11
+ users: "/users",
12
+ userById: "/users/:id",
13
+ posts: "/posts",
14
+ postById: "/posts/:id",
15
+ quotes: "/quotes",
16
+ quoteRandom: "/quotes/random",
17
+ };
18
+ /**
19
+ * Registers the dummyjson.com API in the HTTP manager under the `dummyjson`
20
+ * key. Call once before any {@link useDummyJsonProducts}-style handler.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * import { useInitDummyJson } from "katanakit-js/adapters/bun";
25
+ *
26
+ * useInitDummyJson();
27
+ * ```
28
+ */
29
+ export function useInitDummyJson() {
30
+ useInitApis({
31
+ dummyjson: {
32
+ baseUri: DUMMYJSON_BASE_URL,
33
+ endpoints: DUMMYJSON_ENDPOINTS,
34
+ },
35
+ });
36
+ }
37
+ /**
38
+ * Converts a Safe Result into a JSON {@link Response}.
39
+ *
40
+ * @param result - The Safe Result from `useFetch`.
41
+ * @returns A JSON `Response` with the data or error body.
42
+ */
43
+ function toResponse(result) {
44
+ if (result.ok) {
45
+ return jsonResponse(result.data);
46
+ }
47
+ return jsonResponse({ message: result.error.message, details: result.error.details }, result.error.status || 500);
48
+ }
49
+ /** Serializes `data` into a JSON {@link Response}. */
50
+ export function jsonResponse(data, status = 200) {
51
+ return new Response(JSON.stringify(data), {
52
+ status,
53
+ headers: { "Content-Type": "application/json" },
54
+ });
55
+ }
56
+ /**
57
+ * Lists products from dummyjson.com.
58
+ *
59
+ * @returns A JSON `Response` wrapping the product list.
60
+ */
61
+ export async function useDummyJsonProducts() {
62
+ return toResponse(await useFetch("dummyjson", "products"));
63
+ }
64
+ /**
65
+ * Fetches a single product by id.
66
+ *
67
+ * @param id - The product id.
68
+ * @returns A JSON `Response` wrapping the product.
69
+ */
70
+ export async function useDummyJsonProductById(id) {
71
+ return toResponse(await useFetch("dummyjson", "productById", { urlOptions: { params: { id } } }));
72
+ }
73
+ /**
74
+ * Searches products by a free-text query.
75
+ *
76
+ * @param query - The search term.
77
+ * @returns A JSON `Response` wrapping the search results.
78
+ */
79
+ export async function useDummyJsonProductSearch(query) {
80
+ return toResponse(await useFetch("dummyjson", "productSearch", { urlOptions: { query: { q: query } } }));
81
+ }
82
+ /**
83
+ * Lists all product categories.
84
+ *
85
+ * @returns A JSON `Response` wrapping the category list.
86
+ */
87
+ export async function useDummyJsonProductCategories() {
88
+ return toResponse(await useFetch("dummyjson", "productCategories"));
89
+ }
90
+ /**
91
+ * Lists products within a category.
92
+ *
93
+ * @param category - The category slug (e.g. `smartphones`).
94
+ * @returns A JSON `Response` wrapping the products.
95
+ */
96
+ export async function useDummyJsonProductsByCategory(category) {
97
+ return toResponse(await useFetch("dummyjson", "productByCategory", { urlOptions: { params: { category } } }));
98
+ }
99
+ /**
100
+ * Lists users from dummyjson.com.
101
+ *
102
+ * @returns A JSON `Response` wrapping the user list.
103
+ */
104
+ export async function useDummyJsonUsers() {
105
+ return toResponse(await useFetch("dummyjson", "users"));
106
+ }
107
+ /**
108
+ * Fetches a single user by id.
109
+ *
110
+ * @param id - The user id.
111
+ * @returns A JSON `Response` wrapping the user.
112
+ */
113
+ export async function useDummyJsonUserById(id) {
114
+ return toResponse(await useFetch("dummyjson", "userById", { urlOptions: { params: { id } } }));
115
+ }
116
+ /**
117
+ * Lists posts from dummyjson.com.
118
+ *
119
+ * @returns A JSON `Response` wrapping the post list.
120
+ */
121
+ export async function useDummyJsonPosts() {
122
+ return toResponse(await useFetch("dummyjson", "posts"));
123
+ }
124
+ /**
125
+ * Fetches a single post by id.
126
+ *
127
+ * @param id - The post id.
128
+ * @returns A JSON `Response` wrapping the post.
129
+ */
130
+ export async function useDummyJsonPostById(id) {
131
+ return toResponse(await useFetch("dummyjson", "postById", { urlOptions: { params: { id } } }));
132
+ }
133
+ /**
134
+ * Lists quotes from dummyjson.com.
135
+ *
136
+ * @returns A JSON `Response` wrapping the quote list.
137
+ */
138
+ export async function useDummyJsonQuotes() {
139
+ return toResponse(await useFetch("dummyjson", "quotes"));
140
+ }
141
+ /**
142
+ * Fetches a random quote from dummyjson.com.
143
+ *
144
+ * @returns A JSON `Response` wrapping the quote.
145
+ */
146
+ export async function useDummyJsonRandomQuote() {
147
+ return toResponse(await useFetch("dummyjson", "quoteRandom"));
148
+ }
149
+ //# sourceMappingURL=dummyjson.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dummyjson.service.js","sourceRoot":"","sources":["../../../src/adapters/bun/dummyjson.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from "./dummyjson.service.js";
2
+ export * from "./routes.js";
3
+ export * from "./seed.js";
4
+ export * from "./server.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/bun/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from "./dummyjson.service.js";
2
+ export * from "./routes.js";
3
+ export * from "./seed.js";
4
+ export * from "./server.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/bun/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/adapters/bun/main.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { useInitDummyJson } from "./dummyjson.service.js";
2
+ import { useBunStart } from "./server.js";
3
+ useInitDummyJson();
4
+ const server = useBunStart(Number(process.env.PORT ?? 3000), process.env.HOST ?? "localhost");
5
+ console.log(`Server running at ${server.url}`);
6
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/adapters/bun/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,gBAAgB,EAAE,CAAC;AAEnB,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC;AAC9F,OAAO,CAAC,GAAG,CAAC,qBAAqB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Builds the Bun.serve `routes` table for the dummyjson.com demo.
3
+ *
4
+ * Maps KatanaKit's dummyjson handlers onto a Bun router: static routes,
5
+ * `:param` routes (with typed `req.params`), per-method handlers, and a
6
+ * `/api/*` catch-all.
7
+ *
8
+ * @returns A route table ready for `Bun.serve({ routes })`.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { useBuildDummyJsonRoutes } from "katanakit-js/adapters/bun";
13
+ *
14
+ * Bun.serve({
15
+ * routes: useBuildDummyJsonRoutes(),
16
+ * fetch: () => new Response("Not Found", { status: 404 }),
17
+ * });
18
+ * ```
19
+ */
20
+ export declare function useBuildDummyJsonRoutes(): {
21
+ "/api/status": Response;
22
+ "/api/products": {
23
+ GET: () => Promise<Response>;
24
+ };
25
+ "/api/products/:id": {
26
+ GET: (req: Bun.BunRequest<"/api/products/:id">) => Promise<Response>;
27
+ };
28
+ "/api/products/search": {
29
+ GET: (req: Request) => Promise<Response>;
30
+ };
31
+ "/api/products/categories": {
32
+ GET: () => Promise<Response>;
33
+ };
34
+ "/api/products/category/:category": {
35
+ GET: (req: Bun.BunRequest<"/api/products/category/:category">) => Promise<Response>;
36
+ };
37
+ "/api/users": {
38
+ GET: () => Promise<Response>;
39
+ };
40
+ "/api/users/:id": {
41
+ GET: (req: Bun.BunRequest<"/api/users/:id">) => Promise<Response>;
42
+ };
43
+ "/api/posts": {
44
+ GET: () => Promise<Response>;
45
+ };
46
+ "/api/posts/:id": {
47
+ GET: (req: Bun.BunRequest<"/api/posts/:id">) => Promise<Response>;
48
+ };
49
+ "/api/quotes": {
50
+ GET: () => Promise<Response>;
51
+ };
52
+ "/api/quotes/random": {
53
+ GET: () => Promise<Response>;
54
+ };
55
+ "/api/seed": {
56
+ GET: () => Response;
57
+ };
58
+ "/api/*": Response;
59
+ };
60
+ /** Route table type inferred from {@link useBuildDummyJsonRoutes}. */
61
+ export type DummyJsonRoutes = ReturnType<typeof useBuildDummyJsonRoutes>;
62
+ //# sourceMappingURL=routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/adapters/bun/routes.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB;;;;;;mBAOzB,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC;;;mBAGnC,OAAO;;;;;;mBAOP,GAAG,CAAC,UAAU,CAAC,kCAAkC,CAAC;;;;;;mBAOlD,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC;;;;;;mBAMhC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC;;;;;;;;;;;;EAa7C;AAED,sEAAsE;AACtE,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,60 @@
1
+ /// <reference types="bun-types" />
2
+ import { jsonResponse, useDummyJsonPostById, useDummyJsonPosts, useDummyJsonProductById, useDummyJsonProductCategories, useDummyJsonProducts, useDummyJsonProductsByCategory, useDummyJsonProductSearch, useDummyJsonQuotes, useDummyJsonRandomQuote, useDummyJsonUserById, useDummyJsonUsers, } from "./dummyjson.service.js";
3
+ import { useGetDummyJsonSeed } from "./seed.js";
4
+ /**
5
+ * Builds the Bun.serve `routes` table for the dummyjson.com demo.
6
+ *
7
+ * Maps KatanaKit's dummyjson handlers onto a Bun router: static routes,
8
+ * `:param` routes (with typed `req.params`), per-method handlers, and a
9
+ * `/api/*` catch-all.
10
+ *
11
+ * @returns A route table ready for `Bun.serve({ routes })`.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { useBuildDummyJsonRoutes } from "katanakit-js/adapters/bun";
16
+ *
17
+ * Bun.serve({
18
+ * routes: useBuildDummyJsonRoutes(),
19
+ * fetch: () => new Response("Not Found", { status: 404 }),
20
+ * });
21
+ * ```
22
+ */
23
+ export function useBuildDummyJsonRoutes() {
24
+ return {
25
+ "/api/status": jsonResponse({ status: "ok", service: "katanakit-js/adapters/bun" }),
26
+ // Products
27
+ "/api/products": { GET: () => useDummyJsonProducts() },
28
+ "/api/products/:id": {
29
+ GET: (req) => useDummyJsonProductById(req.params.id),
30
+ },
31
+ "/api/products/search": {
32
+ GET: (req) => {
33
+ const query = new URL(req.url).searchParams.get("q") ?? "";
34
+ return useDummyJsonProductSearch(query);
35
+ },
36
+ },
37
+ "/api/products/categories": { GET: () => useDummyJsonProductCategories() },
38
+ "/api/products/category/:category": {
39
+ GET: (req) => useDummyJsonProductsByCategory(req.params.category),
40
+ },
41
+ // Users
42
+ "/api/users": { GET: () => useDummyJsonUsers() },
43
+ "/api/users/:id": {
44
+ GET: (req) => useDummyJsonUserById(req.params.id),
45
+ },
46
+ // Posts
47
+ "/api/posts": { GET: () => useDummyJsonPosts() },
48
+ "/api/posts/:id": {
49
+ GET: (req) => useDummyJsonPostById(req.params.id),
50
+ },
51
+ // Quotes
52
+ "/api/quotes": { GET: () => useDummyJsonQuotes() },
53
+ "/api/quotes/random": { GET: () => useDummyJsonRandomQuote() },
54
+ // Offline seed
55
+ "/api/seed": { GET: () => jsonResponse(useGetDummyJsonSeed()) },
56
+ // Catch-all for unmatched /api/* routes
57
+ "/api/*": jsonResponse({ message: "Not found" }, 404),
58
+ };
59
+ }
60
+ //# sourceMappingURL=routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/adapters/bun/routes.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAEnC,OAAO,EACN,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,6BAA6B,EAC7B,oBAAoB,EACpB,8BAA8B,EAC9B,yBAAyB,EACzB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,uBAAuB;IACtC,OAAO;QACN,aAAa,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;QAEnF,WAAW;QACX,eAAe,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,oBAAoB,EAAE,EAAE;QACtD,mBAAmB,EAAE;YACpB,GAAG,EAAE,CAAC,GAAwC,EAAE,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;SACzF;QACD,sBAAsB,EAAE;YACvB,GAAG,EAAE,CAAC,GAAY,EAAE,EAAE;gBACrB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC3D,OAAO,yBAAyB,CAAC,KAAK,CAAC,CAAC;YACzC,CAAC;SACD;QACD,0BAA0B,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,6BAA6B,EAAE,EAAE;QAC1E,kCAAkC,EAAE;YACnC,GAAG,EAAE,CAAC,GAAuD,EAAE,EAAE,CAChE,8BAA8B,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;SACpD;QAED,QAAQ;QACR,YAAY,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,iBAAiB,EAAE,EAAE;QAChD,gBAAgB,EAAE;YACjB,GAAG,EAAE,CAAC,GAAqC,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;SACnF;QAED,QAAQ;QACR,YAAY,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,iBAAiB,EAAE,EAAE;QAChD,gBAAgB,EAAE;YACjB,GAAG,EAAE,CAAC,GAAqC,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;SACnF;QAED,SAAS;QACT,aAAa,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,kBAAkB,EAAE,EAAE;QAClD,oBAAoB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,uBAAuB,EAAE,EAAE;QAE9D,eAAe;QACf,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC,EAAE;QAE/D,wCAAwC;QACxC,QAAQ,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,GAAG,CAAC;KACrD,CAAC;AACH,CAAC"}
@@ -0,0 +1,65 @@
1
+ /** A single product in the dummyjson-shaped seed. */
2
+ export interface SeedProduct {
3
+ id: number;
4
+ title: string;
5
+ description: string;
6
+ category: string;
7
+ price: number;
8
+ rating: number;
9
+ stock: number;
10
+ brand: string;
11
+ }
12
+ /** A single user in the dummyjson-shaped seed. */
13
+ export interface SeedUser {
14
+ id: number;
15
+ firstName: string;
16
+ lastName: string;
17
+ username: string;
18
+ email: string;
19
+ age: number;
20
+ role: string;
21
+ }
22
+ /** A single post in the dummyjson-shaped seed. */
23
+ export interface SeedPost {
24
+ id: number;
25
+ title: string;
26
+ body: string;
27
+ tags: string[];
28
+ reactions: number;
29
+ userId: number;
30
+ }
31
+ /** A single quote in the dummyjson-shaped seed. */
32
+ export interface SeedQuote {
33
+ id: number;
34
+ quote: string;
35
+ author: string;
36
+ }
37
+ /** Container for the Bun adapter seed data (dummyjson-compatible shapes). */
38
+ export interface DummyJsonSeed {
39
+ products: SeedProduct[];
40
+ users: SeedUser[];
41
+ posts: SeedPost[];
42
+ quotes: SeedQuote[];
43
+ }
44
+ /**
45
+ * Offline seed data shaped after https://dummyjson.com responses.
46
+ * Useful for tests, demos and local development without hitting the network.
47
+ *
48
+ * Deep-frozen so callers can't mutate the shared module singleton.
49
+ */
50
+ export declare const dummyJsonSeed: DummyJsonSeed;
51
+ /**
52
+ * Returns the Bun adapter seed data.
53
+ *
54
+ * @returns The deep-frozen {@link dummyJsonSeed}.
55
+ *
56
+ * @example
57
+ * ```ts
58
+ * import { useGetDummyJsonSeed } from "katanakit-js/adapters/bun";
59
+ *
60
+ * const seed = useGetDummyJsonSeed();
61
+ * seed.products; // [{ id: 1, title: "Essence Mascara Lash Princess", ... }]
62
+ * ```
63
+ */
64
+ export declare function useGetDummyJsonSeed(): DummyJsonSeed;
65
+ //# sourceMappingURL=seed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../../src/adapters/bun/seed.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,MAAM,WAAW,WAAW;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACd;AAED,kDAAkD;AAClD,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACb;AAED,kDAAkD;AAClD,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CACf;AAED,mDAAmD;AACnD,MAAM,WAAW,SAAS;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAED,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,MAAM,EAAE,SAAS,EAAE,CAAC;CACpB;AAaD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,aAoF1B,CAAC;AAEH;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CAEnD"}
@@ -0,0 +1,117 @@
1
+ /** Recursively freezes a value (arrays and plain objects) in place. */
2
+ function deepFreeze(value) {
3
+ if (value && typeof value === "object" && !Object.isFrozen(value)) {
4
+ Object.freeze(value);
5
+ for (const key of Object.keys(value)) {
6
+ deepFreeze(value[key]);
7
+ }
8
+ }
9
+ return value;
10
+ }
11
+ /**
12
+ * Offline seed data shaped after https://dummyjson.com responses.
13
+ * Useful for tests, demos and local development without hitting the network.
14
+ *
15
+ * Deep-frozen so callers can't mutate the shared module singleton.
16
+ */
17
+ export const dummyJsonSeed = deepFreeze({
18
+ products: [
19
+ {
20
+ id: 1,
21
+ title: "Essence Mascara Lash Princess",
22
+ description: "The Essence Mascara Lash Princess is a popular mascara known for its volumizing and lengthening effects.",
23
+ category: "beauty",
24
+ price: 9.99,
25
+ rating: 4.94,
26
+ stock: 5,
27
+ brand: "Essence",
28
+ },
29
+ {
30
+ id: 2,
31
+ title: "iPhone X",
32
+ description: "SIM-Free, Model A19211 6.5-inch Super Retina HD display with OLED technology.",
33
+ category: "smartphones",
34
+ price: 899,
35
+ rating: 4.44,
36
+ stock: 34,
37
+ brand: "Apple",
38
+ },
39
+ {
40
+ id: 3,
41
+ title: "Samsung Universe 9",
42
+ description: "Samsung's new variant which goes beyond Galaxy to the Universe.",
43
+ category: "smartphones",
44
+ price: 1249,
45
+ rating: 4.09,
46
+ stock: 36,
47
+ brand: "Samsung",
48
+ },
49
+ ],
50
+ users: [
51
+ {
52
+ id: 1,
53
+ firstName: "Terry",
54
+ lastName: "Medhurst",
55
+ username: "atuny0",
56
+ email: "atuny0@sohu.com",
57
+ age: 50,
58
+ role: "admin",
59
+ },
60
+ {
61
+ id: 2,
62
+ firstName: "Sheldon",
63
+ lastName: "Quigley",
64
+ username: "hbingley1",
65
+ email: "hbingley1@plala.or.jp",
66
+ age: 28,
67
+ role: "moderator",
68
+ },
69
+ ],
70
+ posts: [
71
+ {
72
+ id: 1,
73
+ title: "His mother had always taught him",
74
+ body: "His mother had always taught him not to ever think of himself as better than others...",
75
+ tags: ["history", "american", "crime"],
76
+ reactions: 2,
77
+ userId: 121,
78
+ },
79
+ {
80
+ id: 2,
81
+ title: "He was an expert but not in a discipline",
82
+ body: "He was an expert but not in a discipline that anyone could fully appreciate...",
83
+ tags: ["french", "fiction", "english"],
84
+ reactions: 2,
85
+ userId: 69,
86
+ },
87
+ ],
88
+ quotes: [
89
+ {
90
+ id: 1,
91
+ quote: "Life isn't about getting and having, it's about giving and being.",
92
+ author: "Kevin Kruse",
93
+ },
94
+ {
95
+ id: 2,
96
+ quote: "Whatever the mind of man can conceive and believe, it can achieve.",
97
+ author: "Napoleon Hill",
98
+ },
99
+ ],
100
+ });
101
+ /**
102
+ * Returns the Bun adapter seed data.
103
+ *
104
+ * @returns The deep-frozen {@link dummyJsonSeed}.
105
+ *
106
+ * @example
107
+ * ```ts
108
+ * import { useGetDummyJsonSeed } from "katanakit-js/adapters/bun";
109
+ *
110
+ * const seed = useGetDummyJsonSeed();
111
+ * seed.products; // [{ id: 1, title: "Essence Mascara Lash Princess", ... }]
112
+ * ```
113
+ */
114
+ export function useGetDummyJsonSeed() {
115
+ return dummyJsonSeed;
116
+ }
117
+ //# sourceMappingURL=seed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed.js","sourceRoot":"","sources":["../../../src/adapters/bun/seed.ts"],"names":[],"mappings":"AAgDA,uEAAuE;AACvE,SAAS,UAAU,CAAI,KAAQ;IAC9B,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,UAAU,CAAE,KAAiC,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAkB,UAAU,CAAC;IACtD,QAAQ,EAAE;QACT;YACC,EAAE,EAAE,CAAC;YACL,KAAK,EAAE,+BAA+B;YACtC,WAAW,EACV,0GAA0G;YAC3G,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,CAAC;YACR,KAAK,EAAE,SAAS;SAChB;QACD;YACC,EAAE,EAAE,CAAC;YACL,KAAK,EAAE,UAAU;YACjB,WAAW,EAAE,+EAA+E;YAC5F,QAAQ,EAAE,aAAa;YACvB,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,OAAO;SACd;QACD;YACC,EAAE,EAAE,CAAC;YACL,KAAK,EAAE,oBAAoB;YAC3B,WAAW,EAAE,iEAAiE;YAC9E,QAAQ,EAAE,aAAa;YACvB,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,SAAS;SAChB;KACD;IACD,KAAK,EAAE;QACN;YACC,EAAE,EAAE,CAAC;YACL,SAAS,EAAE,OAAO;YAClB,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,iBAAiB;YACxB,GAAG,EAAE,EAAE;YACP,IAAI,EAAE,OAAO;SACb;QACD;YACC,EAAE,EAAE,CAAC;YACL,SAAS,EAAE,SAAS;YACpB,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,WAAW;YACrB,KAAK,EAAE,uBAAuB;YAC9B,GAAG,EAAE,EAAE;YACP,IAAI,EAAE,WAAW;SACjB;KACD;IACD,KAAK,EAAE;QACN;YACC,EAAE,EAAE,CAAC;YACL,KAAK,EAAE,kCAAkC;YACzC,IAAI,EAAE,wFAAwF;YAC9F,IAAI,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC;YACtC,SAAS,EAAE,CAAC;YACZ,MAAM,EAAE,GAAG;SACX;QACD;YACC,EAAE,EAAE,CAAC;YACL,KAAK,EAAE,0CAA0C;YACjD,IAAI,EAAE,gFAAgF;YACtF,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC;YACtC,SAAS,EAAE,CAAC;YACZ,MAAM,EAAE,EAAE;SACV;KACD;IACD,MAAM,EAAE;QACP;YACC,EAAE,EAAE,CAAC;YACL,KAAK,EAAE,mEAAmE;YAC1E,MAAM,EAAE,aAAa;SACrB;QACD;YACC,EAAE,EAAE,CAAC;YACL,KAAK,EAAE,oEAAoE;YAC3E,MAAM,EAAE,eAAe;SACvB;KACD;CACD,CAAC,CAAC;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB;IAClC,OAAO,aAAa,CAAC;AACtB,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { type DummyJsonRoutes } from "./routes.js";
2
+ /** Options accepted by {@link useBunCreate}. */
3
+ export interface BunServerOptions {
4
+ /** Port to listen on (default `3000`). */
5
+ port?: string | number;
6
+ /** Hostname to bind to (default `"localhost"`). */
7
+ hostname?: string;
8
+ /** Route table (defaults to {@link useBuildDummyJsonRoutes}). */
9
+ routes?: DummyJsonRoutes;
10
+ /** Optional fallback handler for unmatched routes. */
11
+ fetch?: (req: Request, server: Bun.Server<undefined>) => Response | Promise<Response>;
12
+ }
13
+ /**
14
+ * Creates (or returns the existing) Bun HTTP server with the dummyjson route
15
+ * table. Idempotent — subsequent calls return the same server.
16
+ *
17
+ * Requires the Bun runtime (Bun v1.2.3+ for the `routes` API).
18
+ *
19
+ * @param options - Optional port, hostname, routes and fetch handler.
20
+ * @returns The running {@link Bun.Server}.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * import { useInitDummyJson, useBunCreate } from "katanakit-js/adapters/bun";
25
+ *
26
+ * useInitDummyJson();
27
+ * const server = useBunCreate({ port: 3000 });
28
+ * console.log(`Server running at ${server.url}`);
29
+ * ```
30
+ */
31
+ export declare function useBunCreate(options?: BunServerOptions): Bun.Server<undefined>;
32
+ /**
33
+ * Starts the Bun server on the given port/hostname (Singleton).
34
+ *
35
+ * @param port - Port to listen on (default `3000`).
36
+ * @param hostname - Hostname to bind to (default `"localhost"`).
37
+ * @returns The running {@link Bun.Server}.
38
+ */
39
+ export declare function useBunStart(port?: string | number, hostname?: string): Bun.Server<undefined>;
40
+ /**
41
+ * Returns the current Bun server singleton, or `null` before {@link useBunCreate}.
42
+ *
43
+ * @returns The {@link Bun.Server} or `null`.
44
+ */
45
+ export declare function useBunGetServer(): Bun.Server<undefined> | null;
46
+ /**
47
+ * Stops the Bun server and clears the singleton.
48
+ *
49
+ * @param closeActiveConnections - Immediately terminate in-flight requests.
50
+ * @returns A promise that resolves once all connections are closed.
51
+ */
52
+ export declare function useBunStop(closeActiveConnections?: boolean): Promise<void>;
53
+ //# sourceMappingURL=server.d.ts.map