exisjs 0.7.5 → 0.7.7

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 (321) hide show
  1. package/dist/cli/commands/build.d.ts.map +1 -1
  2. package/dist/cli/commands/build.js +12 -0
  3. package/dist/cli/commands/build.js.map +1 -1
  4. package/dist/cli/commands/clean.d.ts +5 -0
  5. package/dist/cli/commands/clean.d.ts.map +1 -0
  6. package/dist/cli/commands/clean.js +30 -0
  7. package/dist/cli/commands/clean.js.map +1 -0
  8. package/dist/cli/commands/dev.d.ts.map +1 -1
  9. package/dist/cli/commands/dev.js +171 -86
  10. package/dist/cli/commands/dev.js.map +1 -1
  11. package/dist/cli/commands/generate.d.ts +6 -1
  12. package/dist/cli/commands/generate.d.ts.map +1 -1
  13. package/dist/cli/commands/generate.js +57 -2
  14. package/dist/cli/commands/generate.js.map +1 -1
  15. package/dist/cli/commands/start.d.ts.map +1 -1
  16. package/dist/cli/commands/start.js +54 -16
  17. package/dist/cli/commands/start.js.map +1 -1
  18. package/dist/cli/index.js +26 -3
  19. package/dist/cli/index.js.map +1 -1
  20. package/dist/cli/manifest.d.ts +1 -0
  21. package/dist/cli/manifest.d.ts.map +1 -1
  22. package/dist/cli/manifest.js +264 -33
  23. package/dist/cli/manifest.js.map +1 -1
  24. package/dist/cli/resolve-aliases.d.ts +1 -1
  25. package/dist/cli/resolve-aliases.d.ts.map +1 -1
  26. package/dist/cli/resolve-aliases.js +30 -13
  27. package/dist/cli/resolve-aliases.js.map +1 -1
  28. package/dist/config/config.d.ts +3 -1
  29. package/dist/config/config.d.ts.map +1 -1
  30. package/dist/config/config.js +9 -0
  31. package/dist/config/config.js.map +1 -1
  32. package/dist/config/types.d.ts +6 -0
  33. package/dist/config/types.d.ts.map +1 -1
  34. package/dist/cron/expressions.d.ts +45 -0
  35. package/dist/cron/expressions.d.ts.map +1 -0
  36. package/dist/cron/expressions.js +87 -0
  37. package/dist/cron/expressions.js.map +1 -0
  38. package/dist/cron/index.d.ts +6 -0
  39. package/dist/cron/index.d.ts.map +1 -0
  40. package/dist/cron/index.js +22 -0
  41. package/dist/cron/index.js.map +1 -0
  42. package/dist/cron/job.d.ts +50 -0
  43. package/dist/cron/job.d.ts.map +1 -0
  44. package/dist/cron/job.js +247 -0
  45. package/dist/cron/job.js.map +1 -0
  46. package/dist/cron/manager.d.ts +105 -0
  47. package/dist/cron/manager.d.ts.map +1 -0
  48. package/dist/cron/manager.js +245 -0
  49. package/dist/cron/manager.js.map +1 -0
  50. package/dist/cron/parser.d.ts +22 -0
  51. package/dist/cron/parser.d.ts.map +1 -0
  52. package/dist/cron/parser.js +269 -0
  53. package/dist/cron/parser.js.map +1 -0
  54. package/dist/cron/types.d.ts +76 -0
  55. package/dist/cron/types.d.ts.map +1 -0
  56. package/dist/cron/types.js +3 -0
  57. package/dist/cron/types.js.map +1 -0
  58. package/dist/decorators/constants.d.ts +2 -0
  59. package/dist/decorators/constants.d.ts.map +1 -1
  60. package/dist/decorators/constants.js +3 -1
  61. package/dist/decorators/constants.js.map +1 -1
  62. package/dist/decorators/core.d.ts +29 -11
  63. package/dist/decorators/core.d.ts.map +1 -1
  64. package/dist/decorators/core.js +49 -11
  65. package/dist/decorators/core.js.map +1 -1
  66. package/dist/decorators/cron.d.ts +57 -0
  67. package/dist/decorators/cron.d.ts.map +1 -0
  68. package/dist/decorators/cron.js +143 -0
  69. package/dist/decorators/cron.js.map +1 -0
  70. package/dist/decorators/index.d.ts +2 -0
  71. package/dist/decorators/index.d.ts.map +1 -1
  72. package/dist/decorators/index.js +2 -0
  73. package/dist/decorators/index.js.map +1 -1
  74. package/dist/decorators/middleware.d.ts +65 -2
  75. package/dist/decorators/middleware.d.ts.map +1 -1
  76. package/dist/decorators/middleware.js +148 -62
  77. package/dist/decorators/middleware.js.map +1 -1
  78. package/dist/decorators/params.d.ts +102 -2
  79. package/dist/decorators/params.d.ts.map +1 -1
  80. package/dist/decorators/params.js +105 -3
  81. package/dist/decorators/params.js.map +1 -1
  82. package/dist/decorators/response.d.ts.map +1 -1
  83. package/dist/decorators/response.js +32 -22
  84. package/dist/decorators/response.js.map +1 -1
  85. package/dist/decorators/routing.d.ts +81 -16
  86. package/dist/decorators/routing.d.ts.map +1 -1
  87. package/dist/decorators/routing.js +81 -16
  88. package/dist/decorators/routing.js.map +1 -1
  89. package/dist/di/container.d.ts.map +1 -1
  90. package/dist/di/container.js +6 -1
  91. package/dist/di/container.js.map +1 -1
  92. package/dist/docs/content/cli/commands.mdx +1 -1
  93. package/dist/docs/content/controllers.mdx +127 -10
  94. package/dist/docs/content/cron.mdx +196 -0
  95. package/dist/docs/content/decorators.mdx +22 -4
  96. package/dist/docs/content/errors.mdx +58 -9
  97. package/dist/docs/content/introduction.mdx +7 -7
  98. package/dist/docs/content/middleware.mdx +269 -6
  99. package/dist/docs/content/requests.mdx +180 -6
  100. package/dist/docs/content/responses.mdx +283 -32
  101. package/dist/docs/content/routing.mdx +46 -0
  102. package/dist/docs/content/swagger.mdx +228 -0
  103. package/dist/docs/content/validation.mdx +190 -11
  104. package/dist/docs/reference/context.mdx +11 -0
  105. package/dist/docs/reference/cron.mdx +300 -0
  106. package/dist/docs/reference/decorators.mdx +22 -4
  107. package/dist/docs/reference/error.mdx +88 -0
  108. package/dist/docs/reference/logger.mdx +175 -43
  109. package/dist/docs/reference/middleware.mdx +31 -0
  110. package/dist/docs/reference/router.mdx +22 -0
  111. package/dist/docs/reference/swagger.mdx +143 -0
  112. package/dist/docs/reference/validator.mdx +83 -23
  113. package/dist/error/errors.d.ts.map +1 -1
  114. package/dist/error/errors.js +95 -43
  115. package/dist/error/errors.js.map +1 -1
  116. package/dist/error/index.d.ts +1 -0
  117. package/dist/error/index.d.ts.map +1 -1
  118. package/dist/error/index.js +11 -1
  119. package/dist/error/index.js.map +1 -1
  120. package/dist/error/overlay.d.ts +42 -0
  121. package/dist/error/overlay.d.ts.map +1 -0
  122. package/dist/error/overlay.js +306 -0
  123. package/dist/error/overlay.js.map +1 -0
  124. package/dist/index.d.ts +1 -0
  125. package/dist/index.d.ts.map +1 -1
  126. package/dist/index.js +22 -1
  127. package/dist/index.js.map +1 -1
  128. package/dist/lib/start-server.js +33 -7
  129. package/dist/lib/start-server.js.map +1 -1
  130. package/dist/logger/index.d.ts +1 -1
  131. package/dist/logger/index.d.ts.map +1 -1
  132. package/dist/logger/index.js +9 -1
  133. package/dist/logger/index.js.map +1 -1
  134. package/dist/middleware/guard.d.ts +2 -2
  135. package/dist/middleware/guard.d.ts.map +1 -1
  136. package/dist/middleware/guard.js.map +1 -1
  137. package/dist/middleware/ip-filter.d.ts +1 -0
  138. package/dist/middleware/ip-filter.d.ts.map +1 -1
  139. package/dist/middleware/ip-filter.js +2 -0
  140. package/dist/middleware/ip-filter.js.map +1 -1
  141. package/dist/middleware/middleware.d.ts +2 -2
  142. package/dist/middleware/middleware.d.ts.map +1 -1
  143. package/dist/middleware/middleware.js +20 -2
  144. package/dist/middleware/middleware.js.map +1 -1
  145. package/dist/middleware/security.d.ts +43 -1
  146. package/dist/middleware/security.d.ts.map +1 -1
  147. package/dist/middleware/security.js +101 -0
  148. package/dist/middleware/security.js.map +1 -1
  149. package/dist/response/index.d.ts +229 -6
  150. package/dist/response/index.d.ts.map +1 -1
  151. package/dist/response/index.js +272 -2
  152. package/dist/response/index.js.map +1 -1
  153. package/dist/router/boundary.d.ts +41 -11
  154. package/dist/router/boundary.d.ts.map +1 -1
  155. package/dist/router/boundary.js +24 -2
  156. package/dist/router/boundary.js.map +1 -1
  157. package/dist/router/controller-registrar.d.ts.map +1 -1
  158. package/dist/router/controller-registrar.js +108 -4
  159. package/dist/router/controller-registrar.js.map +1 -1
  160. package/dist/router/index.d.ts +2 -2
  161. package/dist/router/index.d.ts.map +1 -1
  162. package/dist/router/index.js +2 -1
  163. package/dist/router/index.js.map +1 -1
  164. package/dist/router/route-builder.d.ts +262 -65
  165. package/dist/router/route-builder.d.ts.map +1 -1
  166. package/dist/router/route-builder.js +181 -23
  167. package/dist/router/route-builder.js.map +1 -1
  168. package/dist/router/route-scanner.d.ts +6 -0
  169. package/dist/router/route-scanner.d.ts.map +1 -1
  170. package/dist/router/route-scanner.js +71 -792
  171. package/dist/router/route-scanner.js.map +1 -1
  172. package/dist/router/router.d.ts.map +1 -1
  173. package/dist/router/router.js +62 -17
  174. package/dist/router/router.js.map +1 -1
  175. package/dist/router/scanner/boundary-loader.d.ts +18 -0
  176. package/dist/router/scanner/boundary-loader.d.ts.map +1 -0
  177. package/dist/router/scanner/boundary-loader.js +539 -0
  178. package/dist/router/scanner/boundary-loader.js.map +1 -0
  179. package/dist/router/scanner/cron-mounter.d.ts +15 -0
  180. package/dist/router/scanner/cron-mounter.d.ts.map +1 -0
  181. package/dist/router/scanner/cron-mounter.js +216 -0
  182. package/dist/router/scanner/cron-mounter.js.map +1 -0
  183. package/dist/router/scanner/error-mounter.d.ts +14 -0
  184. package/dist/router/scanner/error-mounter.d.ts.map +1 -0
  185. package/dist/router/scanner/error-mounter.js +200 -0
  186. package/dist/router/scanner/error-mounter.js.map +1 -0
  187. package/dist/router/scanner/fs-scanner.d.ts +25 -0
  188. package/dist/router/scanner/fs-scanner.d.ts.map +1 -0
  189. package/dist/router/scanner/fs-scanner.js +115 -0
  190. package/dist/router/scanner/fs-scanner.js.map +1 -0
  191. package/dist/router/scanner/functional-compiler.d.ts +9 -0
  192. package/dist/router/scanner/functional-compiler.d.ts.map +1 -0
  193. package/dist/router/scanner/functional-compiler.js +233 -0
  194. package/dist/router/scanner/functional-compiler.js.map +1 -0
  195. package/dist/router/scanner/index.d.ts +9 -0
  196. package/dist/router/scanner/index.d.ts.map +1 -0
  197. package/dist/router/scanner/index.js +19 -0
  198. package/dist/router/scanner/index.js.map +1 -0
  199. package/dist/router/types.d.ts +23 -0
  200. package/dist/router/types.d.ts.map +1 -1
  201. package/dist/server/app.d.ts +3 -0
  202. package/dist/server/app.d.ts.map +1 -1
  203. package/dist/server/app.js +13 -0
  204. package/dist/server/app.js.map +1 -1
  205. package/dist/server/bootstrapper.d.ts.map +1 -1
  206. package/dist/server/bootstrapper.js +91 -30
  207. package/dist/server/bootstrapper.js.map +1 -1
  208. package/dist/server/cluster.d.ts.map +1 -1
  209. package/dist/server/cluster.js +13 -2
  210. package/dist/server/cluster.js.map +1 -1
  211. package/dist/server/context.d.ts +8 -0
  212. package/dist/server/context.d.ts.map +1 -1
  213. package/dist/server/context.js +50 -6
  214. package/dist/server/context.js.map +1 -1
  215. package/dist/server/helpers/body-parser.d.ts +18 -0
  216. package/dist/server/helpers/body-parser.d.ts.map +1 -0
  217. package/dist/server/helpers/body-parser.js +246 -0
  218. package/dist/server/helpers/body-parser.js.map +1 -0
  219. package/dist/server/helpers/cookie.d.ts +4 -0
  220. package/dist/server/helpers/cookie.d.ts.map +1 -0
  221. package/dist/server/helpers/cookie.js +61 -0
  222. package/dist/server/helpers/cookie.js.map +1 -0
  223. package/dist/server/helpers/etag.d.ts +3 -0
  224. package/dist/server/helpers/etag.d.ts.map +1 -0
  225. package/dist/server/helpers/etag.js +25 -0
  226. package/dist/server/helpers/etag.js.map +1 -0
  227. package/dist/server/helpers/index.d.ts +6 -0
  228. package/dist/server/helpers/index.d.ts.map +1 -0
  229. package/dist/server/helpers/index.js +21 -0
  230. package/dist/server/helpers/index.js.map +1 -0
  231. package/dist/server/helpers/ip.d.ts +9 -0
  232. package/dist/server/helpers/ip.d.ts.map +1 -0
  233. package/dist/server/helpers/ip.js +62 -0
  234. package/dist/server/helpers/ip.js.map +1 -0
  235. package/dist/server/helpers/stream.d.ts +4 -0
  236. package/dist/server/helpers/stream.d.ts.map +1 -0
  237. package/dist/server/helpers/stream.js +193 -0
  238. package/dist/server/helpers/stream.js.map +1 -0
  239. package/dist/server/lifecycle.d.ts +22 -0
  240. package/dist/server/lifecycle.d.ts.map +1 -0
  241. package/dist/server/lifecycle.js +106 -0
  242. package/dist/server/lifecycle.js.map +1 -0
  243. package/dist/server/request-handler.d.ts +1 -0
  244. package/dist/server/request-handler.d.ts.map +1 -1
  245. package/dist/server/request-handler.js +27 -17
  246. package/dist/server/request-handler.js.map +1 -1
  247. package/dist/server/request.d.ts +1 -139
  248. package/dist/server/request.d.ts.map +1 -1
  249. package/dist/server/request.js +37 -433
  250. package/dist/server/request.js.map +1 -1
  251. package/dist/server/response.d.ts +112 -156
  252. package/dist/server/response.d.ts.map +1 -1
  253. package/dist/server/response.js +129 -279
  254. package/dist/server/response.js.map +1 -1
  255. package/dist/swagger/decorators.d.ts +81 -0
  256. package/dist/swagger/decorators.d.ts.map +1 -0
  257. package/dist/swagger/decorators.js +172 -0
  258. package/dist/swagger/decorators.js.map +1 -0
  259. package/dist/swagger/generator.d.ts +19 -0
  260. package/dist/swagger/generator.d.ts.map +1 -0
  261. package/dist/swagger/generator.js +344 -0
  262. package/dist/swagger/generator.js.map +1 -0
  263. package/dist/swagger/index.d.ts +31 -0
  264. package/dist/swagger/index.d.ts.map +1 -0
  265. package/dist/swagger/index.js +53 -0
  266. package/dist/swagger/index.js.map +1 -0
  267. package/dist/swagger/mounter.d.ts +7 -0
  268. package/dist/swagger/mounter.d.ts.map +1 -0
  269. package/dist/swagger/mounter.js +56 -0
  270. package/dist/swagger/mounter.js.map +1 -0
  271. package/dist/swagger/types.d.ts +190 -0
  272. package/dist/swagger/types.d.ts.map +1 -0
  273. package/dist/swagger/types.js +3 -0
  274. package/dist/swagger/types.js.map +1 -0
  275. package/dist/swagger/ui.d.ts +6 -0
  276. package/dist/swagger/ui.d.ts.map +1 -0
  277. package/dist/swagger/ui.js +118 -0
  278. package/dist/swagger/ui.js.map +1 -0
  279. package/dist/testing/index.d.ts.map +1 -1
  280. package/dist/testing/index.js +6 -1
  281. package/dist/testing/index.js.map +1 -1
  282. package/dist/testing/mocks.d.ts.map +1 -1
  283. package/dist/testing/mocks.js +15 -3
  284. package/dist/testing/mocks.js.map +1 -1
  285. package/dist/utils/logger.d.ts +8 -0
  286. package/dist/utils/logger.d.ts.map +1 -1
  287. package/dist/utils/logger.js +184 -1
  288. package/dist/utils/logger.js.map +1 -1
  289. package/dist/validator/builder.d.ts +223 -0
  290. package/dist/validator/builder.d.ts.map +1 -0
  291. package/dist/validator/builder.js +517 -0
  292. package/dist/validator/builder.js.map +1 -0
  293. package/dist/validator/engine.d.ts +19 -0
  294. package/dist/validator/engine.d.ts.map +1 -0
  295. package/dist/validator/engine.js +568 -0
  296. package/dist/validator/engine.js.map +1 -0
  297. package/dist/validator/error.d.ts +12 -0
  298. package/dist/validator/error.d.ts.map +1 -0
  299. package/dist/validator/error.js +63 -0
  300. package/dist/validator/error.js.map +1 -0
  301. package/dist/validator/pagination.d.ts +40 -0
  302. package/dist/validator/pagination.d.ts.map +1 -0
  303. package/dist/validator/pagination.js +60 -0
  304. package/dist/validator/pagination.js.map +1 -0
  305. package/dist/validator/tex-types.d.ts +2 -1
  306. package/dist/validator/tex-types.d.ts.map +1 -1
  307. package/dist/validator/tex-types.js +2 -1
  308. package/dist/validator/tex-types.js.map +1 -1
  309. package/dist/validator/tex.d.ts +6 -142
  310. package/dist/validator/tex.d.ts.map +1 -1
  311. package/dist/validator/tex.js +14 -733
  312. package/dist/validator/tex.js.map +1 -1
  313. package/dist/validator/types.d.ts +83 -0
  314. package/dist/validator/types.d.ts.map +1 -0
  315. package/dist/validator/types.js +3 -0
  316. package/dist/validator/types.js.map +1 -0
  317. package/package.json +8 -4
  318. package/dist/dev/error-overlay.d.ts +0 -3
  319. package/dist/dev/error-overlay.d.ts.map +0 -1
  320. package/dist/dev/error-overlay.js +0 -118
  321. package/dist/dev/error-overlay.js.map +0 -1
@@ -1,4 +1,12 @@
1
1
  import type { LoggerConfig, Logger } from '../types';
2
+ export declare function formatBytes(bytes?: number): string;
3
+ export declare function formatLatency(ms?: number): string;
4
+ export declare function formatMethod(method?: string): string;
5
+ export declare function formatStatus(status: number): string;
6
+ export declare function formatUrl(url?: string): string;
7
+ export declare function formatIp(ip?: string): string;
8
+ export declare function extractValidationSummary(val: any): string;
9
+ export declare function extractErrorMessage(err: any): string;
2
10
  export declare function createLogger(config?: LoggerConfig): Logger;
3
11
  export declare function createSilentLogger(): Logger;
4
12
  export declare function isLogger(obj: unknown): obj is Logger;
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAkBpD,wBAAgB,YAAY,CAAC,MAAM,GAAE,YAAiB,GAAG,MAAM,CAmD9D;AAID,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAID,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CASpD;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,GAAG,OAAO,GAAG,SAAS,GACzC,YAAY,CAId"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAOpD,wBAAgB,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED,wBAAgB,aAAa,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAWjD;AAED,wBAAgB,YAAY,CAAC,MAAM,SAAQ,GAAG,MAAM,CAkCnD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQnD;AAED,wBAAgB,SAAS,CAAC,GAAG,SAAM,GAAG,MAAM,CAQ3C;AAED,wBAAgB,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAG5C;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAkBzD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAMpD;AAkBD,wBAAgB,YAAY,CAAC,MAAM,GAAE,YAAiB,GAAG,MAAM,CA4G9D;AAID,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAID,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CASpD;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,GAAG,OAAO,GAAG,SAAS,GACzC,YAAY,CAId"}
@@ -3,11 +3,142 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.formatBytes = formatBytes;
7
+ exports.formatLatency = formatLatency;
8
+ exports.formatMethod = formatMethod;
9
+ exports.formatStatus = formatStatus;
10
+ exports.formatUrl = formatUrl;
11
+ exports.formatIp = formatIp;
12
+ exports.extractValidationSummary = extractValidationSummary;
13
+ exports.extractErrorMessage = extractErrorMessage;
6
14
  exports.createLogger = createLogger;
7
15
  exports.createSilentLogger = createSilentLogger;
8
16
  exports.isLogger = isLogger;
9
17
  exports.resolveLoggerConfig = resolveLoggerConfig;
10
18
  const pino_1 = __importDefault(require("pino"));
19
+ const node_http_1 = require("node:http");
20
+ const node_stream_1 = require("node:stream");
21
+ // ─── Request Log Terminal Formatting Helpers ─────────────────────────────────
22
+ function formatBytes(bytes) {
23
+ if (bytes === undefined || bytes === null || isNaN(bytes) || bytes <= 0)
24
+ return '';
25
+ if (bytes < 1024)
26
+ return `${bytes} B`;
27
+ if (bytes < 1024 * 1024)
28
+ return `${(bytes / 1024).toFixed(1)} KB`;
29
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
30
+ }
31
+ function formatLatency(ms) {
32
+ if (ms === undefined || ms === null || isNaN(ms))
33
+ return '';
34
+ let text;
35
+ if (ms < 1)
36
+ text = '<1ms';
37
+ else if (ms < 1000)
38
+ text = `${Math.round(ms * 10) / 10}ms`;
39
+ else
40
+ text = `${(ms / 1000).toFixed(2)}s`;
41
+ // Color coding: <50ms green, 50-250ms yellow, >250ms red
42
+ if (ms < 50)
43
+ return `\x1b[32m${text}\x1b[0m`;
44
+ if (ms < 250)
45
+ return `\x1b[33m${text}\x1b[0m`;
46
+ return `\x1b[1;31m${text}\x1b[0m`;
47
+ }
48
+ function formatMethod(method = 'GET') {
49
+ const m = method.toUpperCase();
50
+ const padded = m.padEnd(7);
51
+ switch (m) {
52
+ case 'GET':
53
+ return `\x1b[1;36m${padded}\x1b[0m`;
54
+ case 'POST':
55
+ return `\x1b[1;32m${padded}\x1b[0m`;
56
+ case 'PUT':
57
+ case 'PATCH':
58
+ return `\x1b[1;33m${padded}\x1b[0m`;
59
+ case 'DELETE':
60
+ return `\x1b[1;31m${padded}\x1b[0m`;
61
+ case 'QUERY':
62
+ return `\x1b[38;2;60;160;255m\x1b[1m${padded}\x1b[0m`;
63
+ case 'SEARCH':
64
+ return `\x1b[1;36m${padded}\x1b[0m`;
65
+ case 'OPTIONS':
66
+ case 'HEAD':
67
+ return `\x1b[1;35m${padded}\x1b[0m`;
68
+ case 'WS':
69
+ case 'WSS':
70
+ case 'UPGRADE':
71
+ return `\x1b[38;2;160;70;255m\x1b[1m${padded}\x1b[0m`;
72
+ case 'SSE':
73
+ return `\x1b[1;36m${padded}\x1b[0m`;
74
+ case 'PURGE':
75
+ return `\x1b[1;31m${padded}\x1b[0m`;
76
+ case 'CONNECT':
77
+ case 'TRACE':
78
+ return `\x1b[1;90m${padded}\x1b[0m`;
79
+ default:
80
+ return `\x1b[1;37m${padded}\x1b[0m`;
81
+ }
82
+ }
83
+ function formatStatus(status) {
84
+ const phrase = node_http_1.STATUS_CODES[status] || '';
85
+ const text = `${status} ${phrase}`.trim();
86
+ if (status === 101)
87
+ return `\x1b[38;2;160;70;255m\x1b[1m${text}\x1b[0m`;
88
+ if (status < 300)
89
+ return `\x1b[1;32m${text}\x1b[0m`;
90
+ if (status < 400)
91
+ return `\x1b[1;36m${text}\x1b[0m`;
92
+ if (status < 500)
93
+ return `\x1b[1;33m${text}\x1b[0m`;
94
+ return `\x1b[1;31m${text}\x1b[0m`;
95
+ }
96
+ function formatUrl(url = '/') {
97
+ const qIdx = url.indexOf('?');
98
+ if (qIdx === -1) {
99
+ return `\x1b[37m${url}\x1b[0m`;
100
+ }
101
+ const path = url.slice(0, qIdx);
102
+ const query = url.slice(qIdx);
103
+ return `\x1b[37m${path}\x1b[0m\x1b[90m${query}\x1b[0m`;
104
+ }
105
+ function formatIp(ip) {
106
+ if (!ip || ip === '127.0.0.1' || ip === '::1' || ip === 'localhost')
107
+ return '';
108
+ return `\x1b[90m${ip}\x1b[0m`;
109
+ }
110
+ function extractValidationSummary(val) {
111
+ if (!val)
112
+ return '';
113
+ if (typeof val === 'string')
114
+ return val;
115
+ const partTag = val.httpPart ? ` [${val.httpPart}]` : '';
116
+ if (val.errors && typeof val.errors === 'object') {
117
+ const entries = Object.entries(val.errors);
118
+ if (entries.length === 1) {
119
+ return `${partTag ? partTag.trim() + ': ' : ''}Field "${entries[0][0]}" ${entries[0][1]}`;
120
+ }
121
+ if (entries.length > 1) {
122
+ return `${partTag ? partTag.trim() + ': ' : ''}${entries.length} validation errors (${entries.map(([k]) => k).join(', ')})`;
123
+ }
124
+ }
125
+ if (Array.isArray(val.details) && val.details.length > 0) {
126
+ const first = val.details[0];
127
+ return `${partTag ? partTag.trim() + ': ' : ''}Field "${first.field}" expected ${first.expected}, received ${first.received}`;
128
+ }
129
+ return typeof val === 'object' ? JSON.stringify(val) : String(val);
130
+ }
131
+ function extractErrorMessage(err) {
132
+ if (!err)
133
+ return '';
134
+ if (typeof err === 'string')
135
+ return err;
136
+ if (err.message)
137
+ return String(err.message);
138
+ if (err.msg)
139
+ return String(err.msg);
140
+ return typeof err === 'object' ? JSON.stringify(err) : String(err);
141
+ }
11
142
  // ─── Create Logger ────────────────────────────────────────────────────────────
12
143
  const DEFAULT_REDACT = [
13
144
  'req.headers.authorization',
@@ -51,11 +182,63 @@ function createLogger(config = {}) {
51
182
  };
52
183
  const streams = [];
53
184
  if (pretty) {
185
+ const stripColonStream = new node_stream_1.Transform({
186
+ transform(chunk, _encoding, callback) {
187
+ const str = chunk
188
+ .toString()
189
+ // eslint-disable-next-line no-control-regex
190
+ .replace(/(\[\w+\](?:\x1b\[[0-9;]*m)?):/g, '$1');
191
+ this.push(str);
192
+ callback();
193
+ },
194
+ });
195
+ stripColonStream.pipe(process.stdout);
54
196
  // eslint-disable-next-line @typescript-eslint/no-require-imports
55
197
  const prettyStream = require('pino-pretty')({
56
198
  colorize: true,
57
199
  translateTime: 'SYS:HH:MM:ss',
58
- ignore: 'pid,hostname',
200
+ ignore: 'pid,hostname,statusCode,responseTime,method,url,contentLength,ip,validation,err,error,requestId,silentLog,probeBlocked',
201
+ customPrettifiers: {
202
+ level: (lvl) => {
203
+ const l = String(lvl).toLowerCase();
204
+ if (l.includes('error') ||
205
+ l.includes('50') ||
206
+ l.includes('fatal') ||
207
+ l.includes('60')) {
208
+ return `\x1b[1;31m[error]\x1b[0m`;
209
+ }
210
+ if (l.includes('warn') || l.includes('40')) {
211
+ return `\x1b[1;33m[warn]\x1b[0m`;
212
+ }
213
+ if (l.includes('debug') || l.includes('20')) {
214
+ return `\x1b[90m[debug]\x1b[0m`;
215
+ }
216
+ return `\x1b[38;2;160;70;255m[exis]\x1b[0m`;
217
+ },
218
+ },
219
+ messageFormat: (log, messageKey) => {
220
+ if (log.statusCode !== undefined) {
221
+ const method = formatMethod(log.method);
222
+ const url = formatUrl(log.url);
223
+ const status = formatStatus(log.statusCode);
224
+ const latency = formatLatency(log.responseTime);
225
+ const size = log.contentLength
226
+ ? `\x1b[90m${formatBytes(log.contentLength)}\x1b[0m`
227
+ : '';
228
+ const ip = formatIp(log.ip);
229
+ const parts = [method, url, status, latency, size, ip].filter(Boolean);
230
+ let out = parts.join(' ');
231
+ if (log.validation) {
232
+ out += `\n \x1b[33m└─ ⚠ Validation:\x1b[0m \x1b[90m${extractValidationSummary(log.validation)}\x1b[0m`;
233
+ }
234
+ else if (log.error || log.err) {
235
+ out += `\n \x1b[31m└─ ✖ Error:\x1b[0m \x1b[90m${extractErrorMessage(log.error || log.err)}\x1b[0m`;
236
+ }
237
+ return out;
238
+ }
239
+ return log[messageKey] || '';
240
+ },
241
+ destination: stripColonStream,
59
242
  });
60
243
  streams.push({
61
244
  level: options.level,
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,223 @@
1
+ import { TexString, TexNumber, TexBoolean, TexArray, TexEnum, TexLiteral, TexUnion, TexDate, TexRecord, TexAny, TexFile, ResolveSchema } from './tex-types';
2
+ import type { TexBaseOptions, TexStringOptions, TexNumberOptions, TexBooleanOptions, TexArrayOptions, TexEnumOptions, TexObjectOptions, TexFileOptions, TexPasswordOptions, TexDateOptions } from './types';
3
+ import { TexEngine } from './engine';
4
+ /**
5
+ * Ultra-high performance declarative schema builder powered by the native Rust validator.
6
+ */
7
+ export declare class TexBuilder {
8
+ /**
9
+ * Defines a string schema with built-in sanitization and security protections.
10
+ *
11
+ * @param opts Validation rules and transformations (min, max, trim, toLowerCase, escapeHtml, etc.)
12
+ * @returns Strongly typed string schema descriptor
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const username = tex.string({ min: 3, max: 20, trim: true, toLowerCase: true })
17
+ * ```
18
+ */
19
+ string<O extends TexStringOptions = TexStringOptions>(opts?: O): TexString<O['optional'] extends true ? true : false>;
20
+ /**
21
+ * Defines a number schema with bounds and optional auto-coercion from string query parameters.
22
+ *
23
+ * @param opts Validation rules (min, max, coerce, default)
24
+ * @returns Strongly typed number schema descriptor
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * const age = tex.number({ min: 18, max: 120, coerce: true })
29
+ * ```
30
+ */
31
+ number<O extends TexNumberOptions = TexNumberOptions>(opts?: O): TexNumber<O['optional'] extends true ? true : false>;
32
+ /**
33
+ * Defines a boolean schema with optional string-to-boolean coercion (`"true"`, `"false"`).
34
+ *
35
+ * @param opts Validation rules (coerce, optional, default)
36
+ * @returns Strongly typed boolean schema descriptor
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * const isActive = tex.boolean({ coerce: true, default: true })
41
+ * ```
42
+ */
43
+ boolean<O extends TexBooleanOptions = TexBooleanOptions>(opts?: O): TexBoolean<O['optional'] extends true ? true : false>;
44
+ /**
45
+ * Defines an email schema verified natively against RFC standards.
46
+ *
47
+ * @param opts Validation and formatting rules
48
+ * @returns Strongly typed email string schema descriptor
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * const userEmail = tex.email({ trim: true, toLowerCase: true })
53
+ * ```
54
+ */
55
+ email<O extends TexStringOptions = TexStringOptions>(opts?: O): TexString<O['optional'] extends true ? true : false>;
56
+ /**
57
+ * Defines a UUID v1 or v4 schema.
58
+ *
59
+ * @param opts UUID options including optional version specification
60
+ * @returns Strongly typed UUID string schema descriptor
61
+ */
62
+ uuid<O extends TexStringOptions & {
63
+ version?: 1 | 4;
64
+ } = TexStringOptions & {
65
+ version?: 1 | 4;
66
+ }>(opts?: O): TexString<O['optional'] extends true ? true : false>;
67
+ /**
68
+ * Defines a CUID (Collision-resistant Unique Identifier) schema.
69
+ */
70
+ cuid<O extends TexStringOptions = TexStringOptions>(opts?: O): TexString<O['optional'] extends true ? true : false>;
71
+ /**
72
+ * Defines a Credit Card schema validated via the Luhn checksum algorithm.
73
+ */
74
+ creditCard<O extends TexStringOptions = TexStringOptions>(opts?: O): TexString<O['optional'] extends true ? true : false>;
75
+ /**
76
+ * Defines a secure password schema with enforcement for length, numbers, symbols, and casing.
77
+ *
78
+ * @param opts Complexity constraints (min, requireNumbers, requireSymbols, requireUppercase, requireLowercase)
79
+ * @returns Strongly typed password schema descriptor
80
+ *
81
+ * @example
82
+ * ```ts
83
+ * const password = tex.password({
84
+ * min: 8,
85
+ * requireNumbers: true,
86
+ * requireSymbols: true,
87
+ * requireUppercase: true
88
+ * })
89
+ * ```
90
+ */
91
+ password<O extends TexPasswordOptions = TexPasswordOptions>(opts?: O): TexString<O['optional'] extends true ? true : false>;
92
+ /**
93
+ * Defines an array schema with item validation, bounds, and automatic coercion from comma-delimited strings.
94
+ *
95
+ * @param schema Schema descriptor for each item in the array
96
+ * @param opts Array rules (min, max, dedupe, coerce, default)
97
+ * @returns Strongly typed array schema descriptor
98
+ *
99
+ * @example
100
+ * ```ts
101
+ * const tags = tex.array(tex.string({ trim: true }), { min: 1, max: 10, dedupe: true })
102
+ * ```
103
+ */
104
+ array<T, O extends TexArrayOptions<T> = TexArrayOptions<T>>(schema: T, opts?: O): TexArray<T, O['optional'] extends true ? true : false>;
105
+ /**
106
+ * Defines an enum schema restricted to an exact list of allowed string literals.
107
+ *
108
+ * @param values Array of allowed string values
109
+ * @param opts Enum options (optional, default)
110
+ * @returns Strongly typed enum schema descriptor
111
+ *
112
+ * @example
113
+ * ```ts
114
+ * const role = tex.enum(['admin', 'user', 'guest'], { default: 'user' })
115
+ * ```
116
+ */
117
+ enum<T extends string, O extends TexEnumOptions<T> = TexEnumOptions<T>>(values: T[], opts?: O): TexEnum<T, O['optional'] extends true ? true : false>;
118
+ /**
119
+ * Defines an exact literal value schema (e.g. `'v1'`, `42`, `true`).
120
+ */
121
+ literal<T extends string | number | boolean, O extends TexBaseOptions = TexBaseOptions>(value: T, opts?: O): TexLiteral<T, O['optional'] extends true ? true : false>;
122
+ /**
123
+ * Defines a union schema that succeeds if any of the provided candidate schemas match.
124
+ *
125
+ * @example
126
+ * ```ts
127
+ * const idOrEmail = tex.union([tex.number({ coerce: true }), tex.email()])
128
+ * ```
129
+ */
130
+ union<T extends any[], O extends TexBaseOptions = TexBaseOptions>(schemas: T, opts?: O): TexUnion<T, O['optional'] extends true ? true : false>;
131
+ /**
132
+ * Defines a date schema with bounds checking and automatic coercion from ISO strings or timestamps.
133
+ *
134
+ * @param opts Date options (minDate, maxDate, coerce, default)
135
+ * @returns Strongly typed Date schema descriptor
136
+ *
137
+ * @example
138
+ * ```ts
139
+ * const createdAt = tex.date({ coerce: true, minDate: '2024-01-01' })
140
+ * ```
141
+ */
142
+ date<O extends TexDateOptions = TexDateOptions>(opts?: O): TexDate<O['optional'] extends true ? true : false>;
143
+ /**
144
+ * Defines a dynamic key-value record schema (e.g. `Record<string, T>`).
145
+ */
146
+ record<T, O extends TexBaseOptions = TexBaseOptions>(schema: T, opts?: O): TexRecord<T, O['optional'] extends true ? true : false>;
147
+ /**
148
+ * Defines an unconstrained pass-through schema.
149
+ */
150
+ any<O extends TexBaseOptions = TexBaseOptions>(opts?: O): TexAny<O['optional'] extends true ? true : false>;
151
+ /**
152
+ * Defines a file upload validation schema.
153
+ */
154
+ file<O extends TexFileOptions = TexFileOptions>(opts?: O): TexFile<O['optional'] extends true ? true : false>;
155
+ /**
156
+ * Compiles an object structure into a fast `TexEngine` validator instance.
157
+ *
158
+ * @param schema Object map containing field definitions
159
+ * @param opts Object options (e.g. `{ strict: true }` to reject unknown fields)
160
+ * @returns Compiled `TexEngine` validator
161
+ *
162
+ * @example
163
+ * ```ts
164
+ * const UserSchema = tex.object({
165
+ * id: tex.number({ coerce: true }),
166
+ * name: tex.string({ min: 2 }),
167
+ * email: tex.email()
168
+ * }, { strict: true })
169
+ *
170
+ * const user = UserSchema.parse(req.body)
171
+ * ```
172
+ */
173
+ object<T extends Record<string, any>>(schema: T, opts?: TexObjectOptions): TexEngine<ResolveSchema<T>>;
174
+ /**
175
+ * Dedicated Environment Schema parser (`tex.env`).
176
+ * Automatically coerces numbers, booleans, dates, and arrays from `process.env` string values,
177
+ * while preserving strict type validation and defaults.
178
+ *
179
+ * @param schema Environment variable schema definition
180
+ * @param opts Schema configuration
181
+ * @returns Compiled `TexEngine` tailored for environment variable parsing
182
+ *
183
+ * @example
184
+ * ```ts
185
+ * export const env = tex.env({
186
+ * PORT: tex.number({ default: 3000 }),
187
+ * NODE_ENV: tex.enum(['development', 'production', 'test'], { default: 'development' }),
188
+ * DATABASE_URL: tex.string(),
189
+ * ENABLE_METRICS: tex.boolean({ default: false })
190
+ * }).parse(process.env)
191
+ * ```
192
+ */
193
+ env<T extends Record<string, any>>(schema: T, opts?: TexObjectOptions): TexEngine<ResolveSchema<T>>;
194
+ /**
195
+ * Helper that builds standard query pagination schema (`page`, `limit`, `sort`, `order`).
196
+ *
197
+ * @param options Configuration for default and maximum limit
198
+ * @returns Compiled pagination query validator
199
+ *
200
+ * @example
201
+ * ```ts
202
+ * export default controller({
203
+ * listUsers: route.get('/', {
204
+ * query: tex.pagination({ defaultLimit: 25, maxLimit: 100 }),
205
+ * async handle({ query }) {
206
+ * const { skip, limit } = getPaginationSkip(query)
207
+ * return UserService.find(skip, limit)
208
+ * }
209
+ * })
210
+ * })
211
+ * ```
212
+ */
213
+ pagination(options?: {
214
+ defaultLimit?: number;
215
+ maxLimit?: number;
216
+ }): TexEngine<ResolveSchema<{
217
+ page: TexNumber<true>;
218
+ limit: TexNumber<true>;
219
+ sort: TexString<true>;
220
+ order: TexEnum<"asc" | "desc", true>;
221
+ }>>;
222
+ }
223
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/validator/builder.ts"],"names":[],"mappings":"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"}