@catbee/utils 0.0.8-rc.1 → 0.0.8-rc.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 (280) hide show
  1. package/build/esm/config.d.ts +0 -1
  2. package/build/esm/config.js +6 -7
  3. package/build/esm/index.d.ts +0 -1
  4. package/build/esm/index.js +0 -1
  5. package/build/esm/servers/server.builder.d.ts +0 -1
  6. package/build/esm/servers/server.builder.js +99 -147
  7. package/build/esm/servers/server.d.ts +0 -1
  8. package/build/esm/servers/server.js +591 -876
  9. package/build/esm/types/api-response.d.ts +0 -1
  10. package/build/esm/types/api-response.js +0 -1
  11. package/build/esm/types/index.d.ts +0 -1
  12. package/build/esm/types/index.js +0 -1
  13. package/build/esm/types/server.d.ts +0 -1
  14. package/build/esm/types/server.js +0 -1
  15. package/build/esm/utils/array.utils.d.ts +0 -1
  16. package/build/esm/utils/array.utils.js +48 -86
  17. package/build/esm/utils/async.utils.d.ts +0 -1
  18. package/build/esm/utils/async.utils.js +247 -524
  19. package/build/esm/utils/cache.utils.d.ts +0 -1
  20. package/build/esm/utils/cache.utils.js +96 -301
  21. package/build/esm/utils/context-store.utils.d.ts +0 -1
  22. package/build/esm/utils/context-store.utils.js +62 -79
  23. package/build/esm/utils/crypto.utils.d.ts +0 -1
  24. package/build/esm/utils/crypto.utils.js +78 -175
  25. package/build/esm/utils/date.utils.d.ts +0 -1
  26. package/build/esm/utils/date.utils.js +47 -53
  27. package/build/esm/utils/decorators.utils.d.ts +30 -27
  28. package/build/esm/utils/decorators.utils.js +417 -461
  29. package/build/esm/utils/dir.utils.d.ts +0 -1
  30. package/build/esm/utils/dir.utils.js +264 -786
  31. package/build/esm/utils/env.utils.d.ts +0 -1
  32. package/build/esm/utils/env.utils.js +180 -271
  33. package/build/esm/utils/exception.utils.d.ts +0 -1
  34. package/build/esm/utils/exception.utils.js +112 -289
  35. package/build/esm/utils/fs.utils.d.ts +0 -1
  36. package/build/esm/utils/fs.utils.js +169 -401
  37. package/build/esm/utils/http-status-codes.d.ts +0 -1
  38. package/build/esm/utils/http-status-codes.js +0 -1
  39. package/build/esm/utils/id.utils.d.ts +0 -1
  40. package/build/esm/utils/id.utils.js +5 -9
  41. package/build/esm/utils/logger.utils.d.ts +0 -1
  42. package/build/esm/utils/logger.utils.js +34 -71
  43. package/build/esm/utils/middleware.utils.d.ts +0 -1
  44. package/build/esm/utils/middleware.utils.js +65 -155
  45. package/build/esm/utils/obj.utils.d.ts +0 -1
  46. package/build/esm/utils/obj.utils.js +69 -176
  47. package/build/esm/utils/performance.utils.d.ts +0 -1
  48. package/build/esm/utils/performance.utils.js +92 -195
  49. package/build/esm/utils/request.utils.d.ts +0 -1
  50. package/build/esm/utils/request.utils.js +41 -74
  51. package/build/esm/utils/response.utils.d.ts +0 -1
  52. package/build/esm/utils/response.utils.js +84 -107
  53. package/build/esm/utils/stream.utils.d.ts +0 -1
  54. package/build/esm/utils/stream.utils.js +38 -113
  55. package/build/esm/utils/string.utils.d.ts +0 -1
  56. package/build/esm/utils/string.utils.js +6 -11
  57. package/build/esm/utils/type.utils.d.ts +0 -1
  58. package/build/esm/utils/type.utils.js +8 -12
  59. package/build/esm/utils/url.utils.d.ts +0 -1
  60. package/build/esm/utils/url.utils.js +49 -127
  61. package/build/esm/utils/validate.utils.d.ts +0 -1
  62. package/build/esm/utils/validate.utils.js +23 -40
  63. package/package.json +3 -33
  64. package/build/esm/config.js.map +0 -1
  65. package/build/esm/index.js.map +0 -1
  66. package/build/esm/servers/server.builder.js.map +0 -1
  67. package/build/esm/servers/server.js.map +0 -1
  68. package/build/esm/types/api-response.js.map +0 -1
  69. package/build/esm/types/index.js.map +0 -1
  70. package/build/esm/types/server.js.map +0 -1
  71. package/build/esm/utils/array.utils.js.map +0 -1
  72. package/build/esm/utils/async.utils.js.map +0 -1
  73. package/build/esm/utils/cache.utils.js.map +0 -1
  74. package/build/esm/utils/context-store.utils.js.map +0 -1
  75. package/build/esm/utils/crypto.utils.js.map +0 -1
  76. package/build/esm/utils/date.utils.js.map +0 -1
  77. package/build/esm/utils/decorators.utils.js.map +0 -1
  78. package/build/esm/utils/dir.utils.js.map +0 -1
  79. package/build/esm/utils/env.utils.js.map +0 -1
  80. package/build/esm/utils/exception.utils.js.map +0 -1
  81. package/build/esm/utils/fs.utils.js.map +0 -1
  82. package/build/esm/utils/http-status-codes.js.map +0 -1
  83. package/build/esm/utils/id.utils.js.map +0 -1
  84. package/build/esm/utils/logger.utils.js.map +0 -1
  85. package/build/esm/utils/middleware.utils.js.map +0 -1
  86. package/build/esm/utils/obj.utils.js.map +0 -1
  87. package/build/esm/utils/performance.utils.js.map +0 -1
  88. package/build/esm/utils/request.utils.js.map +0 -1
  89. package/build/esm/utils/response.utils.js.map +0 -1
  90. package/build/esm/utils/stream.utils.js.map +0 -1
  91. package/build/esm/utils/string.utils.js.map +0 -1
  92. package/build/esm/utils/type.utils.js.map +0 -1
  93. package/build/esm/utils/url.utils.js.map +0 -1
  94. package/build/esm/utils/validate.utils.js.map +0 -1
  95. package/build/esnext/config.d.ts +0 -122
  96. package/build/esnext/config.js +0 -133
  97. package/build/esnext/config.js.map +0 -1
  98. package/build/esnext/index.d.ts +0 -27
  99. package/build/esnext/index.js +0 -50
  100. package/build/esnext/index.js.map +0 -1
  101. package/build/esnext/servers/server.builder.d.ts +0 -508
  102. package/build/esnext/servers/server.builder.js +0 -657
  103. package/build/esnext/servers/server.builder.js.map +0 -1
  104. package/build/esnext/servers/server.d.ts +0 -256
  105. package/build/esnext/servers/server.js +0 -955
  106. package/build/esnext/servers/server.js.map +0 -1
  107. package/build/esnext/types/api-response.d.ts +0 -152
  108. package/build/esnext/types/api-response.js +0 -34
  109. package/build/esnext/types/api-response.js.map +0 -1
  110. package/build/esnext/types/index.d.ts +0 -125
  111. package/build/esnext/types/index.js +0 -25
  112. package/build/esnext/types/index.js.map +0 -1
  113. package/build/esnext/types/server.d.ts +0 -268
  114. package/build/esnext/types/server.js +0 -25
  115. package/build/esnext/types/server.js.map +0 -1
  116. package/build/esnext/utils/array.utils.d.ts +0 -168
  117. package/build/esnext/utils/array.utils.js +0 -345
  118. package/build/esnext/utils/array.utils.js.map +0 -1
  119. package/build/esnext/utils/async.utils.d.ts +0 -265
  120. package/build/esnext/utils/async.utils.js +0 -620
  121. package/build/esnext/utils/async.utils.js.map +0 -1
  122. package/build/esnext/utils/cache.utils.d.ts +0 -153
  123. package/build/esnext/utils/cache.utils.js +0 -293
  124. package/build/esnext/utils/cache.utils.js.map +0 -1
  125. package/build/esnext/utils/context-store.utils.d.ts +0 -189
  126. package/build/esnext/utils/context-store.utils.js +0 -289
  127. package/build/esnext/utils/context-store.utils.js.map +0 -1
  128. package/build/esnext/utils/crypto.utils.d.ts +0 -160
  129. package/build/esnext/utils/crypto.utils.js +0 -276
  130. package/build/esnext/utils/crypto.utils.js.map +0 -1
  131. package/build/esnext/utils/date.utils.d.ts +0 -159
  132. package/build/esnext/utils/date.utils.js +0 -384
  133. package/build/esnext/utils/date.utils.js.map +0 -1
  134. package/build/esnext/utils/decorators.utils.d.ts +0 -508
  135. package/build/esnext/utils/decorators.utils.js +0 -877
  136. package/build/esnext/utils/decorators.utils.js.map +0 -1
  137. package/build/esnext/utils/dir.utils.d.ts +0 -196
  138. package/build/esnext/utils/dir.utils.js +0 -477
  139. package/build/esnext/utils/dir.utils.js.map +0 -1
  140. package/build/esnext/utils/env.utils.d.ts +0 -377
  141. package/build/esnext/utils/env.utils.js +0 -785
  142. package/build/esnext/utils/env.utils.js.map +0 -1
  143. package/build/esnext/utils/exception.utils.d.ts +0 -230
  144. package/build/esnext/utils/exception.utils.js +0 -381
  145. package/build/esnext/utils/exception.utils.js.map +0 -1
  146. package/build/esnext/utils/fs.utils.d.ts +0 -164
  147. package/build/esnext/utils/fs.utils.js +0 -349
  148. package/build/esnext/utils/fs.utils.js.map +0 -1
  149. package/build/esnext/utils/http-status-codes.d.ts +0 -266
  150. package/build/esnext/utils/http-status-codes.js +0 -295
  151. package/build/esnext/utils/http-status-codes.js.map +0 -1
  152. package/build/esnext/utils/id.utils.d.ts +0 -36
  153. package/build/esnext/utils/id.utils.js +0 -84
  154. package/build/esnext/utils/id.utils.js.map +0 -1
  155. package/build/esnext/utils/logger.utils.d.ts +0 -160
  156. package/build/esnext/utils/logger.utils.js +0 -300
  157. package/build/esnext/utils/logger.utils.js.map +0 -1
  158. package/build/esnext/utils/middleware.utils.d.ts +0 -100
  159. package/build/esnext/utils/middleware.utils.js +0 -236
  160. package/build/esnext/utils/middleware.utils.js.map +0 -1
  161. package/build/esnext/utils/obj.utils.d.ts +0 -124
  162. package/build/esnext/utils/obj.utils.js +0 -413
  163. package/build/esnext/utils/obj.utils.js.map +0 -1
  164. package/build/esnext/utils/performance.utils.d.ts +0 -136
  165. package/build/esnext/utils/performance.utils.js +0 -271
  166. package/build/esnext/utils/performance.utils.js.map +0 -1
  167. package/build/esnext/utils/request.utils.d.ts +0 -86
  168. package/build/esnext/utils/request.utils.js +0 -186
  169. package/build/esnext/utils/request.utils.js.map +0 -1
  170. package/build/esnext/utils/response.utils.d.ts +0 -163
  171. package/build/esnext/utils/response.utils.js +0 -247
  172. package/build/esnext/utils/response.utils.js.map +0 -1
  173. package/build/esnext/utils/stream.utils.d.ts +0 -88
  174. package/build/esnext/utils/stream.utils.js +0 -210
  175. package/build/esnext/utils/stream.utils.js.map +0 -1
  176. package/build/esnext/utils/string.utils.d.ts +0 -93
  177. package/build/esnext/utils/string.utils.js +0 -165
  178. package/build/esnext/utils/string.utils.js.map +0 -1
  179. package/build/esnext/utils/type.utils.d.ts +0 -90
  180. package/build/esnext/utils/type.utils.js +0 -187
  181. package/build/esnext/utils/type.utils.js.map +0 -1
  182. package/build/esnext/utils/url.utils.d.ts +0 -141
  183. package/build/esnext/utils/url.utils.js +0 -304
  184. package/build/esnext/utils/url.utils.js.map +0 -1
  185. package/build/esnext/utils/validate.utils.d.ts +0 -177
  186. package/build/esnext/utils/validate.utils.js +0 -320
  187. package/build/esnext/utils/validate.utils.js.map +0 -1
  188. package/build/src/config.d.ts +0 -122
  189. package/build/src/config.js +0 -138
  190. package/build/src/config.js.map +0 -1
  191. package/build/src/index.d.ts +0 -27
  192. package/build/src/index.js +0 -69
  193. package/build/src/index.js.map +0 -1
  194. package/build/src/servers/server.builder.d.ts +0 -508
  195. package/build/src/servers/server.builder.js +0 -661
  196. package/build/src/servers/server.builder.js.map +0 -1
  197. package/build/src/servers/server.d.ts +0 -256
  198. package/build/src/servers/server.js +0 -962
  199. package/build/src/servers/server.js.map +0 -1
  200. package/build/src/types/api-response.d.ts +0 -152
  201. package/build/src/types/api-response.js +0 -37
  202. package/build/src/types/api-response.js.map +0 -1
  203. package/build/src/types/index.d.ts +0 -125
  204. package/build/src/types/index.js +0 -26
  205. package/build/src/types/index.js.map +0 -1
  206. package/build/src/types/server.d.ts +0 -268
  207. package/build/src/types/server.js +0 -26
  208. package/build/src/types/server.js.map +0 -1
  209. package/build/src/utils/array.utils.d.ts +0 -168
  210. package/build/src/utils/array.utils.js +0 -364
  211. package/build/src/utils/array.utils.js.map +0 -1
  212. package/build/src/utils/async.utils.d.ts +0 -265
  213. package/build/src/utils/async.utils.js +0 -641
  214. package/build/src/utils/async.utils.js.map +0 -1
  215. package/build/src/utils/cache.utils.d.ts +0 -153
  216. package/build/src/utils/cache.utils.js +0 -297
  217. package/build/src/utils/cache.utils.js.map +0 -1
  218. package/build/src/utils/context-store.utils.d.ts +0 -189
  219. package/build/src/utils/context-store.utils.js +0 -296
  220. package/build/src/utils/context-store.utils.js.map +0 -1
  221. package/build/src/utils/crypto.utils.d.ts +0 -160
  222. package/build/src/utils/crypto.utils.js +0 -293
  223. package/build/src/utils/crypto.utils.js.map +0 -1
  224. package/build/src/utils/date.utils.d.ts +0 -159
  225. package/build/src/utils/date.utils.js +0 -396
  226. package/build/src/utils/date.utils.js.map +0 -1
  227. package/build/src/utils/decorators.utils.d.ts +0 -508
  228. package/build/src/utils/decorators.utils.js +0 -896
  229. package/build/src/utils/decorators.utils.js.map +0 -1
  230. package/build/src/utils/dir.utils.d.ts +0 -196
  231. package/build/src/utils/dir.utils.js +0 -501
  232. package/build/src/utils/dir.utils.js.map +0 -1
  233. package/build/src/utils/env.utils.d.ts +0 -377
  234. package/build/src/utils/env.utils.js +0 -789
  235. package/build/src/utils/env.utils.js.map +0 -1
  236. package/build/src/utils/exception.utils.d.ts +0 -230
  237. package/build/src/utils/exception.utils.js +0 -407
  238. package/build/src/utils/exception.utils.js.map +0 -1
  239. package/build/src/utils/fs.utils.d.ts +0 -164
  240. package/build/src/utils/fs.utils.js +0 -372
  241. package/build/src/utils/fs.utils.js.map +0 -1
  242. package/build/src/utils/http-status-codes.d.ts +0 -266
  243. package/build/src/utils/http-status-codes.js +0 -298
  244. package/build/src/utils/http-status-codes.js.map +0 -1
  245. package/build/src/utils/id.utils.d.ts +0 -36
  246. package/build/src/utils/id.utils.js +0 -91
  247. package/build/src/utils/id.utils.js.map +0 -1
  248. package/build/src/utils/logger.utils.d.ts +0 -160
  249. package/build/src/utils/logger.utils.js +0 -346
  250. package/build/src/utils/logger.utils.js.map +0 -1
  251. package/build/src/utils/middleware.utils.d.ts +0 -100
  252. package/build/src/utils/middleware.utils.js +0 -244
  253. package/build/src/utils/middleware.utils.js.map +0 -1
  254. package/build/src/utils/obj.utils.d.ts +0 -124
  255. package/build/src/utils/obj.utils.js +0 -429
  256. package/build/src/utils/obj.utils.js.map +0 -1
  257. package/build/src/utils/performance.utils.d.ts +0 -136
  258. package/build/src/utils/performance.utils.js +0 -278
  259. package/build/src/utils/performance.utils.js.map +0 -1
  260. package/build/src/utils/request.utils.d.ts +0 -86
  261. package/build/src/utils/request.utils.js +0 -195
  262. package/build/src/utils/request.utils.js.map +0 -1
  263. package/build/src/utils/response.utils.d.ts +0 -163
  264. package/build/src/utils/response.utils.js +0 -260
  265. package/build/src/utils/response.utils.js.map +0 -1
  266. package/build/src/utils/stream.utils.d.ts +0 -88
  267. package/build/src/utils/stream.utils.js +0 -218
  268. package/build/src/utils/stream.utils.js.map +0 -1
  269. package/build/src/utils/string.utils.d.ts +0 -93
  270. package/build/src/utils/string.utils.js +0 -179
  271. package/build/src/utils/string.utils.js.map +0 -1
  272. package/build/src/utils/type.utils.d.ts +0 -90
  273. package/build/src/utils/type.utils.js +0 -196
  274. package/build/src/utils/type.utils.js.map +0 -1
  275. package/build/src/utils/url.utils.d.ts +0 -141
  276. package/build/src/utils/url.utils.js +0 -317
  277. package/build/src/utils/url.utils.js.map +0 -1
  278. package/build/src/utils/validate.utils.d.ts +0 -177
  279. package/build/src/utils/validate.utils.js +0 -345
  280. package/build/src/utils/validate.utils.js.map +0 -1
@@ -95,7 +95,7 @@ export function getTypeOf(value) {
95
95
  export function isArrayOf(value, itemTypeGuard) {
96
96
  if (!Array.isArray(value))
97
97
  return false;
98
- return value.every(function (item) { return itemTypeGuard(item); });
98
+ return value.every(item => itemTypeGuard(item));
99
99
  }
100
100
  /**
101
101
  * Convert a value to a string.
@@ -104,8 +104,7 @@ export function isArrayOf(value, itemTypeGuard) {
104
104
  * @param defaultValue - Default value if conversion fails
105
105
  * @returns String representation of the value
106
106
  */
107
- export function toStr(value, defaultValue) {
108
- if (defaultValue === void 0) { defaultValue = ''; }
107
+ export function toStr(value, defaultValue = '') {
109
108
  if (value === null || value === undefined)
110
109
  return defaultValue;
111
110
  try {
@@ -114,7 +113,7 @@ export function toStr(value, defaultValue) {
114
113
  }
115
114
  return String(value);
116
115
  }
117
- catch (_a) {
116
+ catch {
118
117
  return defaultValue;
119
118
  }
120
119
  }
@@ -125,17 +124,16 @@ export function toStr(value, defaultValue) {
125
124
  * @param defaultValue - Default value if conversion fails
126
125
  * @returns Numeric representation of the value
127
126
  */
128
- export function toNum(value, defaultValue) {
129
- if (defaultValue === void 0) { defaultValue = 0; }
127
+ export function toNum(value, defaultValue = 0) {
130
128
  if (value === null || value === undefined)
131
129
  return defaultValue;
132
130
  if (typeof value === 'number')
133
131
  return value;
134
132
  try {
135
- var num = Number(value);
133
+ const num = Number(value);
136
134
  return isNaN(num) ? defaultValue : num;
137
135
  }
138
- catch (_a) {
136
+ catch {
139
137
  return defaultValue;
140
138
  }
141
139
  }
@@ -146,14 +144,13 @@ export function toNum(value, defaultValue) {
146
144
  * @param defaultValue - Default value if conversion fails
147
145
  * @returns Boolean representation of the value
148
146
  */
149
- export function toBool(value, defaultValue) {
150
- if (defaultValue === void 0) { defaultValue = false; }
147
+ export function toBool(value, defaultValue = false) {
151
148
  if (value === null || value === undefined)
152
149
  return defaultValue;
153
150
  if (typeof value === 'boolean')
154
151
  return value;
155
152
  if (typeof value === 'string') {
156
- var lowercased = value.toLowerCase();
153
+ const lowercased = value.toLowerCase();
157
154
  if (lowercased === 'true' || lowercased === 'yes' || lowercased === 'y' || lowercased === '1') {
158
155
  return true;
159
156
  }
@@ -187,4 +184,3 @@ export function ensureType(value, expectedType, defaultValue) {
187
184
  }
188
185
  return defaultValue;
189
186
  }
190
- //# sourceMappingURL=type.utils.js.map
@@ -138,4 +138,3 @@ export declare function getExtension(url: string): string;
138
138
  * // → { page: 2, q: 'test' }
139
139
  */
140
140
  export declare function parseTypedQueryParams<T extends Record<string, any>>(url: string, converters?: Record<keyof T, (val: string) => any>): Partial<T>;
141
- //# sourceMappingURL=url.utils.d.ts.map
@@ -21,33 +21,6 @@
21
21
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
22
  * SOFTWARE.
23
23
  */
24
- var __values = (this && this.__values) || function(o) {
25
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
26
- if (m) return m.call(o);
27
- if (o && typeof o.length === "number") return {
28
- next: function () {
29
- if (o && i >= o.length) o = void 0;
30
- return { value: o && o[i++], done: !o };
31
- }
32
- };
33
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
34
- };
35
- var __read = (this && this.__read) || function (o, n) {
36
- var m = typeof Symbol === "function" && o[Symbol.iterator];
37
- if (!m) return o;
38
- var i = m.call(o), r, ar = [], e;
39
- try {
40
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
41
- }
42
- catch (error) { e = { error: error }; }
43
- finally {
44
- try {
45
- if (r && !r.done && (m = i["return"])) m.call(i);
46
- }
47
- finally { if (e) throw e.error; }
48
- }
49
- return ar;
50
- };
51
24
  import { URL, URLSearchParams } from 'url';
52
25
  /**
53
26
  * Appends query parameters to a given URL.
@@ -61,20 +34,9 @@ import { URL, URLSearchParams } from 'url';
61
34
  * // → 'https://example.com/?page=1&limit=10'
62
35
  */
63
36
  export function appendQueryParams(url, params) {
64
- var e_1, _a;
65
- var urlObj = new URL(url);
66
- try {
67
- for (var _b = __values(Object.entries(params)), _c = _b.next(); !_c.done; _c = _b.next()) {
68
- var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
69
- urlObj.searchParams.set(key, value.toString());
70
- }
71
- }
72
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
73
- finally {
74
- try {
75
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
76
- }
77
- finally { if (e_1) throw e_1.error; }
37
+ const urlObj = new URL(url);
38
+ for (const [key, value] of Object.entries(params)) {
39
+ urlObj.searchParams.set(key, value.toString());
78
40
  }
79
41
  return urlObj.toString();
80
42
  }
@@ -89,7 +51,7 @@ export function appendQueryParams(url, params) {
89
51
  * // → { page: '1', limit: '10' }
90
52
  */
91
53
  export function parseQueryString(query) {
92
- var cleanQuery = query.startsWith('?') ? query.slice(1) : query;
54
+ const cleanQuery = query.startsWith('?') ? query.slice(1) : query;
93
55
  // Object.fromEntries guarantees string values in result
94
56
  return Object.fromEntries(new URLSearchParams(cleanQuery));
95
57
  }
@@ -100,17 +62,16 @@ export function parseQueryString(query) {
100
62
  * @param {boolean} [requireHttps=false] - If true, requires the URL to use HTTPS.
101
63
  * @returns {boolean} True if the URL is valid, false otherwise.
102
64
  */
103
- export function isValidUrl(url, requireHttps) {
104
- if (requireHttps === void 0) { requireHttps = false; }
65
+ export function isValidUrl(url, requireHttps = false) {
105
66
  try {
106
- var parsedUrl = new URL(url);
67
+ const parsedUrl = new URL(url);
107
68
  if (!parsedUrl.protocol || !parsedUrl.hostname)
108
69
  return false;
109
70
  if (requireHttps && parsedUrl.protocol !== 'https:')
110
71
  return false;
111
72
  return true;
112
73
  }
113
- catch (_a) {
74
+ catch {
114
75
  return false;
115
76
  }
116
77
  }
@@ -128,26 +89,25 @@ export function isValidUrl(url, requireHttps) {
128
89
  * getDomain('https://api.example.com/path', true);
129
90
  * // → 'example.com'
130
91
  */
131
- export function getDomain(url, removeSubdomains) {
132
- if (removeSubdomains === void 0) { removeSubdomains = false; }
92
+ export function getDomain(url, removeSubdomains = false) {
133
93
  try {
134
- var hostname = new URL(url).hostname;
94
+ const { hostname } = new URL(url);
135
95
  if (!removeSubdomains) {
136
96
  return hostname;
137
97
  }
138
98
  // Extract root domain (remove subdomains)
139
- var parts = hostname.split('.');
99
+ const parts = hostname.split('.');
140
100
  if (parts.length <= 2)
141
101
  return hostname;
142
102
  // Handle special cases like co.in, com.au
143
- var secondLevelDomains = ['co', 'com', 'org', 'net', 'gov', 'edu', 'ac'];
144
- var sld = parts[parts.length - 2];
103
+ const secondLevelDomains = ['co', 'com', 'org', 'net', 'gov', 'edu', 'ac'];
104
+ const sld = parts[parts.length - 2];
145
105
  if (secondLevelDomains.includes(sld) && parts.length > 2) {
146
106
  return parts.slice(-3).join('.');
147
107
  }
148
108
  return parts.slice(-2).join('.');
149
109
  }
150
- catch (_a) {
110
+ catch {
151
111
  return '';
152
112
  }
153
113
  }
@@ -161,14 +121,10 @@ export function getDomain(url, removeSubdomains) {
161
121
  * joinPaths('https://example.com/', '/api/', '/users');
162
122
  * // → 'https://example.com/api/users'
163
123
  */
164
- export function joinPaths() {
165
- var segments = [];
166
- for (var _i = 0; _i < arguments.length; _i++) {
167
- segments[_i] = arguments[_i];
168
- }
169
- var result = segments
170
- .filter(function (s) { return s !== undefined && s !== null; })
171
- .map(function (segment, index) {
124
+ export function joinPaths(...segments) {
125
+ let result = segments
126
+ .filter(s => s !== undefined && s !== null)
127
+ .map((segment, index) => {
172
128
  if (index === 0)
173
129
  return segment.replace(/\/+$/, '');
174
130
  return segment.replace(/^\/+|\/+$/g, '');
@@ -194,17 +150,17 @@ export function normalizeUrl(url, base) {
194
150
  try {
195
151
  // Handle protocol-relative URLs
196
152
  if (url.startsWith('//')) {
197
- url = "https:".concat(url);
153
+ url = `https:${url}`;
198
154
  }
199
155
  // Resolve relative URLs against a base
200
- var parsedUrl = base ? new URL(url, base) : new URL(url);
156
+ const parsedUrl = base ? new URL(url, base) : new URL(url);
201
157
  // Normalize
202
158
  parsedUrl.pathname = parsedUrl.pathname.replace(/\/+/g, '/'); // Collapse multiple slashes
203
159
  parsedUrl.pathname = parsedUrl.pathname.replace(/\/+$/, ''); // Remove trailing slash
204
160
  parsedUrl.hostname = parsedUrl.hostname.toLowerCase();
205
161
  return parsedUrl.toString();
206
162
  }
207
- catch (_a) {
163
+ catch {
208
164
  return url; // Return original if invalid
209
165
  }
210
166
  }
@@ -228,8 +184,8 @@ export function createUrlBuilder(baseUrl) {
228
184
  * @param {Record<string, any>} [params] - Query parameters to add.
229
185
  * @returns {string} The complete URL.
230
186
  */
231
- path: function (path, params) {
232
- var url = joinPaths(baseUrl, path);
187
+ path(path, params) {
188
+ const url = joinPaths(baseUrl, path);
233
189
  return params ? appendQueryParams(url, params) : url;
234
190
  },
235
191
  /**
@@ -238,7 +194,7 @@ export function createUrlBuilder(baseUrl) {
238
194
  * @param {Record<string, any>} params - Query parameters to add.
239
195
  * @returns {string} The complete URL with query parameters.
240
196
  */
241
- query: function (params) {
197
+ query(params) {
242
198
  return appendQueryParams(baseUrl, params);
243
199
  }
244
200
  };
@@ -251,29 +207,18 @@ export function createUrlBuilder(baseUrl) {
251
207
  * @returns {Record<string, string>} Object containing the extracted parameters.
252
208
  */
253
209
  export function extractQueryParams(url, paramNames) {
254
- var e_2, _a;
255
210
  try {
256
- var parsedUrl = new URL(url);
257
- var result = {};
258
- try {
259
- for (var paramNames_1 = __values(paramNames), paramNames_1_1 = paramNames_1.next(); !paramNames_1_1.done; paramNames_1_1 = paramNames_1.next()) {
260
- var name_1 = paramNames_1_1.value;
261
- var value = parsedUrl.searchParams.get(name_1);
262
- if (value !== null) {
263
- result[name_1] = value;
264
- }
265
- }
266
- }
267
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
268
- finally {
269
- try {
270
- if (paramNames_1_1 && !paramNames_1_1.done && (_a = paramNames_1.return)) _a.call(paramNames_1);
211
+ const parsedUrl = new URL(url);
212
+ const result = {};
213
+ for (const name of paramNames) {
214
+ const value = parsedUrl.searchParams.get(name);
215
+ if (value !== null) {
216
+ result[name] = value;
271
217
  }
272
- finally { if (e_2) throw e_2.error; }
273
218
  }
274
219
  return result;
275
220
  }
276
- catch (_b) {
221
+ catch {
277
222
  return {};
278
223
  }
279
224
  }
@@ -285,25 +230,14 @@ export function extractQueryParams(url, paramNames) {
285
230
  * @returns {string} URL with parameters removed.
286
231
  */
287
232
  export function removeQueryParams(url, paramsToRemove) {
288
- var e_3, _a;
289
233
  try {
290
- var parsedUrl = new URL(url);
291
- try {
292
- for (var paramsToRemove_1 = __values(paramsToRemove), paramsToRemove_1_1 = paramsToRemove_1.next(); !paramsToRemove_1_1.done; paramsToRemove_1_1 = paramsToRemove_1.next()) {
293
- var param = paramsToRemove_1_1.value;
294
- parsedUrl.searchParams.delete(param);
295
- }
296
- }
297
- catch (e_3_1) { e_3 = { error: e_3_1 }; }
298
- finally {
299
- try {
300
- if (paramsToRemove_1_1 && !paramsToRemove_1_1.done && (_a = paramsToRemove_1.return)) _a.call(paramsToRemove_1);
301
- }
302
- finally { if (e_3) throw e_3.error; }
234
+ const parsedUrl = new URL(url);
235
+ for (const param of paramsToRemove) {
236
+ parsedUrl.searchParams.delete(param);
303
237
  }
304
238
  return parsedUrl.toString();
305
239
  }
306
- catch (_b) {
240
+ catch {
307
241
  return url;
308
242
  }
309
243
  }
@@ -319,13 +253,13 @@ export function removeQueryParams(url, paramsToRemove) {
319
253
  */
320
254
  export function getExtension(url) {
321
255
  try {
322
- var pathname = new URL(url).pathname;
323
- var match = pathname.match(/\.([^./\\?#]+)$/);
256
+ const { pathname } = new URL(url);
257
+ const match = pathname.match(/\.([^./\\?#]+)$/);
324
258
  return match ? match[1].toLowerCase() : '';
325
259
  }
326
- catch (_a) {
260
+ catch {
327
261
  // If URL parsing fails, try a simpler approach
328
- var match = url.match(/\.([^./\\?#]+)$/);
262
+ const match = url.match(/\.([^./\\?#]+)$/);
329
263
  return match ? match[1].toLowerCase() : '';
330
264
  }
331
265
  }
@@ -345,37 +279,25 @@ export function getExtension(url) {
345
279
  * // → { page: 2, q: 'test' }
346
280
  */
347
281
  export function parseTypedQueryParams(url, converters) {
348
- var e_4, _a;
349
282
  try {
350
- var searchParams = new URL(url).searchParams;
351
- var result = {};
352
- try {
353
- for (var _b = __values(searchParams.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
354
- var _d = __read(_c.value, 2), key = _d[0], value = _d[1];
355
- if (converters && key in converters) {
356
- try {
357
- result[key] = converters[key](value);
358
- }
359
- catch (_e) {
360
- // Skip on conversion error
361
- }
283
+ const { searchParams } = new URL(url);
284
+ const result = {};
285
+ for (const [key, value] of searchParams.entries()) {
286
+ if (converters && key in converters) {
287
+ try {
288
+ result[key] = converters[key](value);
362
289
  }
363
- else {
364
- result[key] = value;
290
+ catch {
291
+ // Skip on conversion error
365
292
  }
366
293
  }
367
- }
368
- catch (e_4_1) { e_4 = { error: e_4_1 }; }
369
- finally {
370
- try {
371
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
294
+ else {
295
+ result[key] = value;
372
296
  }
373
- finally { if (e_4) throw e_4.error; }
374
297
  }
375
298
  return result;
376
299
  }
377
- catch (_f) {
300
+ catch {
378
301
  return {};
379
302
  }
380
303
  }
381
- //# sourceMappingURL=url.utils.js.map
@@ -174,4 +174,3 @@ export declare function matchesPattern(str: string, pattern: RegExp): boolean;
174
174
  * @returns {boolean} True if value passes all validations.
175
175
  */
176
176
  export declare function validateAll(value: unknown, validators: Array<(value: unknown) => boolean>): boolean;
177
- //# sourceMappingURL=validate.utils.d.ts.map
@@ -21,22 +21,6 @@
21
21
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
22
  * SOFTWARE.
23
23
  */
24
- var __read = (this && this.__read) || function (o, n) {
25
- var m = typeof Symbol === "function" && o[Symbol.iterator];
26
- if (!m) return o;
27
- var i = m.call(o), r, ar = [], e;
28
- try {
29
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
30
- }
31
- catch (error) { e = { error: error }; }
32
- finally {
33
- try {
34
- if (r && !r.done && (m = i["return"])) m.call(i);
35
- }
36
- finally { if (e) throw e.error; }
37
- }
38
- return ar;
39
- };
40
24
  /**
41
25
  * Collection of common validation helpers for strings, numbers, email, UUID, etc.
42
26
  */
@@ -47,7 +31,7 @@ var __read = (this && this.__read) || function (o, n) {
47
31
  * @returns True if valid port number, else false.
48
32
  */
49
33
  export function isPort(value) {
50
- var port = typeof value === 'string' ? Number(value.trim()) : value;
34
+ const port = typeof value === 'string' ? Number(value.trim()) : value;
51
35
  return Number.isInteger(port) && port > 0 && port <= 65535;
52
36
  }
53
37
  /**
@@ -60,7 +44,7 @@ export function isEmail(str) {
60
44
  if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(str))
61
45
  return false;
62
46
  // Additional checks
63
- var _a = __read(str.split('@'), 2), local = _a[0], domain = _a[1];
47
+ const [local, domain] = str.split('@');
64
48
  if (!local || !domain)
65
49
  return false;
66
50
  // Disallow consecutive dots in local or domain part
@@ -88,7 +72,7 @@ export function isURL(str) {
88
72
  new URL(str);
89
73
  return true;
90
74
  }
91
- catch (_a) {
75
+ catch {
92
76
  return false;
93
77
  }
94
78
  }
@@ -102,7 +86,7 @@ export function isPhone(str) {
102
86
  if (typeof str !== 'string')
103
87
  return false;
104
88
  // Strip non-digit characters to count total digits
105
- var digitsOnly = str.replace(/\D/g, '');
89
+ const digitsOnly = str.replace(/\D/g, '');
106
90
  if (digitsOnly.length < 6 || digitsOnly.length > 15)
107
91
  return false;
108
92
  // Accept typical phone characters: +, digits, space, -, (, )
@@ -126,7 +110,7 @@ export function isAlphanumeric(str) {
126
110
  export function isNumeric(value) {
127
111
  if (typeof value === 'string' && value.trim() === '')
128
112
  return false;
129
- var num = typeof value === 'number' ? value : Number(value);
113
+ const num = typeof value === 'number' ? value : Number(value);
130
114
  return typeof num === 'number' && isFinite(num);
131
115
  }
132
116
  /**
@@ -145,10 +129,10 @@ export function isHexColor(str) {
145
129
  * @returns {boolean}
146
130
  */
147
131
  export function isISODate(str) {
148
- var isoRegex = /^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})?)?$/;
132
+ const isoRegex = /^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})?)?$/;
149
133
  if (!isoRegex.test(str))
150
134
  return false;
151
- var date = new Date(str);
135
+ const date = new Date(str);
152
136
  return !isNaN(date.getTime()) && date.toISOString().startsWith(str.slice(0, 10));
153
137
  }
154
138
  /**
@@ -192,10 +176,10 @@ export function isAlpha(str) {
192
176
  export function isStrongPassword(str) {
193
177
  if (str.length < 8)
194
178
  return false;
195
- var hasUpperCase = /[A-Z]/.test(str);
196
- var hasLowerCase = /[a-z]/.test(str);
197
- var hasNumbers = /[0-9]/.test(str);
198
- var hasSpecialChar = /[!@#$%^&*()_+\-=[\]{};':"\\|,.<>?]/.test(str);
179
+ const hasUpperCase = /[A-Z]/.test(str);
180
+ const hasLowerCase = /[a-z]/.test(str);
181
+ const hasNumbers = /[0-9]/.test(str);
182
+ const hasSpecialChar = /[!@#$%^&*()_+\-=[\]{};':"\\|,.<>?]/.test(str);
199
183
  return hasUpperCase && hasLowerCase && hasNumbers && hasSpecialChar;
200
184
  }
201
185
  /**
@@ -205,11 +189,11 @@ export function isStrongPassword(str) {
205
189
  * @returns {boolean} True if valid IPv4 address.
206
190
  */
207
191
  export function isIPv4(str) {
208
- var parts = str.split('.');
192
+ const parts = str.split('.');
209
193
  if (parts.length !== 4)
210
194
  return false;
211
- return parts.every(function (part) {
212
- var num = parseInt(part, 10);
195
+ return parts.every(part => {
196
+ const num = parseInt(part, 10);
213
197
  return part === num.toString() && num >= 0 && num <= 255;
214
198
  });
215
199
  }
@@ -231,14 +215,14 @@ export function isIPv6(str) {
231
215
  */
232
216
  export function isCreditCard(str) {
233
217
  // Remove non-digit characters
234
- var cardNumber = str.replace(/\D/g, '');
218
+ const cardNumber = str.replace(/\D/g, '');
235
219
  if (cardNumber.length < 13 || cardNumber.length > 19)
236
220
  return false;
237
221
  // Luhn algorithm implementation
238
- var sum = 0;
239
- var shouldDouble = false;
240
- for (var i = cardNumber.length - 1; i >= 0; i--) {
241
- var digit = parseInt(cardNumber.charAt(i), 10);
222
+ let sum = 0;
223
+ let shouldDouble = false;
224
+ for (let i = cardNumber.length - 1; i >= 0; i--) {
225
+ let digit = parseInt(cardNumber.charAt(i), 10);
242
226
  if (shouldDouble) {
243
227
  digit *= 2;
244
228
  if (digit > 9)
@@ -260,7 +244,7 @@ export function isValidJSON(str) {
260
244
  JSON.parse(str);
261
245
  return true;
262
246
  }
263
- catch (_a) {
247
+ catch {
264
248
  return false;
265
249
  }
266
250
  }
@@ -275,7 +259,7 @@ export function isValidJSON(str) {
275
259
  export function isArray(value, itemGuard) {
276
260
  if (!Array.isArray(value))
277
261
  return false;
278
- return !itemGuard || value.every(function (item) { return itemGuard(item); });
262
+ return !itemGuard || value.every(item => itemGuard(item));
279
263
  }
280
264
  /**
281
265
  * Checks if a string is a valid base64 encoded string.
@@ -294,7 +278,7 @@ export function isBase64(str) {
294
278
  * @returns {boolean} True if all required properties exist.
295
279
  */
296
280
  export function hasRequiredProps(obj, requiredProps) {
297
- return requiredProps.every(function (prop) { return Object.prototype.hasOwnProperty.call(obj, prop) && obj[prop] !== undefined && obj[prop] !== null; });
281
+ return requiredProps.every(prop => Object.prototype.hasOwnProperty.call(obj, prop) && obj[prop] !== undefined && obj[prop] !== null);
298
282
  }
299
283
  /**
300
284
  * Validates a date is within a specified range.
@@ -331,6 +315,5 @@ export function matchesPattern(str, pattern) {
331
315
  * @returns {boolean} True if value passes all validations.
332
316
  */
333
317
  export function validateAll(value, validators) {
334
- return validators.every(function (validator) { return validator(value); });
318
+ return validators.every(validator => validator(value));
335
319
  }
336
- //# sourceMappingURL=validate.utils.js.map
package/package.json CHANGED
@@ -1,11 +1,10 @@
1
1
  {
2
2
  "name": "@catbee/utils",
3
- "version": "0.0.8-rc.1",
3
+ "version": "0.0.8-rc.2",
4
4
  "description": "A modular, production-grade utility toolkit for Node.js and TypeScript, designed for robust, scalable applications (including Express-based services). All utilities are tree-shakable and can be imported independently.",
5
- "main": "build/src/index.js",
5
+ "main": "build/esm/index.js",
6
6
  "module": "build/esm/index.js",
7
- "esnext": "build/esnext/index.js",
8
- "types": "build/src/index.d.ts",
7
+ "types": "build/esm/index.d.ts",
9
8
  "publishConfig": {
10
9
  "access": "public"
11
10
  },
@@ -14,28 +13,6 @@
14
13
  "email": "hprasath.dev@gmail.com"
15
14
  },
16
15
  "license": "MIT",
17
- "scripts": {
18
- "start": "node build/src/index.js",
19
- "prepack": "npm run compile",
20
- "compile": "npm run clean && tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
21
- "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
22
- "lint": "eslint src tests",
23
- "lint:fix": "eslint --fix src tests",
24
- "preversion": "npm run check-license && npm run lint && npm run test && npm run compile",
25
- "pretest": "npm run compile",
26
- "dryrun": "npm pack --dry-run",
27
- "dryrun:list": "npm pack --dry-run --json > pack-output.json",
28
- "test": "cross-env LOGGER_LEVEL=silent jest",
29
- "test:coverage": "cross-env LOGGER_LEVEL=silent jest --coverage",
30
- "coverage": "npm run test:coverage",
31
- "test:debug": "cross-env LOGGER_LEVEL=info jest",
32
- "add-license": "npx license-check-and-add add -f file-banner-lic.json && npm run lint:fix",
33
- "check-license": "npx license-check-and-add check -f file-banner-lic.json",
34
- "docs:install": "cd docs && npm install",
35
- "docs:start": "cd docs && npm run start",
36
- "docs:build": "cd docs && npm run build",
37
- "docs:serve": "npm run docs:build && cd docs && npm run serve"
38
- },
39
16
  "keywords": [
40
17
  "utils",
41
18
  "utility",
@@ -90,14 +67,7 @@
90
67
  },
91
68
  "files": [
92
69
  "build/esm/**/*.js",
93
- "build/esm/**/*.js.map",
94
70
  "build/esm/**/*.d.ts",
95
- "build/esnext/**/*.js",
96
- "build/esnext/**/*.js.map",
97
- "build/esnext/**/*.d.ts",
98
- "build/src/**/*.js",
99
- "build/src/**/*.js.map",
100
- "build/src/**/*.d.ts",
101
71
  "LICENSE",
102
72
  "README.md"
103
73
  ]
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * The MIT License\n *\n * Copyright (c) 2025 Catbee Technologies. https://catbee-utils.npm.hprasath.com/license\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nimport { ServerConfig } from './types/server';\nimport { Env } from './utils/env.utils';\nimport { uuid } from './utils/id.utils';\nimport { Logger, LoggerLevels } from './utils/logger.utils';\nimport { deepObjMerge } from './utils/obj.utils';\n\n/**\n * Extends Express Request interface to add request ID tracking.\n * Added by requestId middleware during request processing.\n */\ndeclare global {\n namespace Express {\n interface Request {\n /** Unique request identifier (set by middleware) */\n id?: string;\n /** Logger instance for the request (set by middleware) */\n logger?: Logger;\n /** User information (set by authentication middleware) */\n user?: any;\n }\n }\n}\n\n/**\n * Application runtime configuration loaded from environment variables.\n */\nexport let config = {\n logger: {\n /**\n * Logging level (e.g., 'info', 'debug', 'warn', 'error').\n */\n level: Env.get('LOGGER_LEVEL', 'info') as LoggerLevels,\n\n /**\n * Name of the logger instance (defaults to npm package name).\n */\n name: Env.get('LOGGER_NAME', Env.get('npm_package_name', '@catbee/utils')),\n\n /**\n * Enables pretty-print logging in development.\n * Has no effect in production.\n */\n pretty: Env.getBoolean('LOGGER_PRETTY', true),\n /**\n * Single line output for pretty-print (default: false)\n */\n singleLine: Env.getBoolean('LOGGER_PRETTY_SINGLE_LINE', false)\n },\n\n cache: {\n /**\n * Default TTL (time to live) for cache entries in seconds\n */\n defaultTtl: Env.getNumber('CACHE_DEFAULT_TTL_SECONDS', 3600) * 1000\n }\n};\n\nexport const defaultServerConfig = {\n port: 3000,\n host: '0.0.0.0',\n cors: false,\n helmet: false,\n compression: false,\n bodyParser: {\n json: { limit: '1mb' },\n urlencoded: { extended: true, limit: '1mb' }\n },\n cookieParser: false,\n isMicroservice: false,\n appName: 'express_app',\n globalHeaders: {},\n rateLimit: {\n enable: false,\n windowMs: 15 * 60 * 1000,\n max: 100,\n message: 'Too many requests',\n standardHeaders: true,\n legacyHeaders: false\n },\n requestLogging: {\n enable: Env.isDev(),\n ignorePaths: (req, _res) => {\n const skipPaths = ['/healthz', '/favicon.ico', '/metrics', '/docs', '/.well-known'];\n return skipPaths.some(path => req.path.startsWith(path));\n },\n skipNotFoundRoutes: false\n },\n openApi: {\n enable: false,\n mountPath: '/docs',\n verbose: false,\n withGlobalPrefix: false\n },\n healthCheck: {\n path: '/healthz',\n detailed: true\n },\n requestTimeout: 30000,\n responseTime: {\n enable: false,\n addHeader: true,\n logOnComplete: false\n },\n requestId: {\n headerName: 'x-request-id',\n exposeHeader: true,\n generator: () => uuid()\n },\n metrics: {\n enable: false,\n path: '/metrics',\n withGlobalPrefix: false\n },\n serviceVersion: {\n enable: false,\n headerName: 'x-service-version',\n version: '0.0.0'\n }\n} satisfies ServerConfig;\n\n/**\n * Update the @catbee/utils configuration.\n * @param value Partial configuration object.\n */\nexport function setConfig(value: Partial<typeof config>): void {\n deepObjMerge(config, value);\n}\n\n/**\n * Get the current @catbee/utils configuration.\n * @returns The current configuration object.\n */\nexport function getConfig(): typeof config {\n return config;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEhD,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AAEvC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AAErC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC","sourcesContent":["/*\n * The MIT License\n *\n * Copyright (c) 2025 Catbee Technologies. https://catbee-utils.npm.hprasath.com/license\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\nexport { setConfig, getConfig } from './config';\n\nexport * from './utils/array.utils';\nexport * from './utils/async.utils';\nexport * from './utils/cache.utils';\nexport * from './utils/context-store.utils';\nexport * from './utils/crypto.utils';\nexport * from './utils/decorators.utils';\nexport * from './utils/dir.utils';\nexport * from './utils/env.utils';\nexport * from './utils/exception.utils';\nexport * from './utils/fs.utils';\nexport * from './utils/http-status-codes';\nexport * from './utils/id.utils';\nexport * from './utils/logger.utils';\nexport * from './utils/middleware.utils';\nexport * from './utils/obj.utils';\nexport * from './utils/request.utils';\nexport * from './utils/response.utils';\nexport * from './utils/string.utils';\nexport * from './utils/url.utils';\nexport * from './utils/validate.utils';\n\nexport * from './types/index';\nexport * from './types/server';\nexport * from './types/api-response';\n\nexport * from './servers/server';\nexport * from './servers/server.builder';\n"]}