exisjs 0.1.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 (495) hide show
  1. package/README.md +52 -0
  2. package/bin/exis.js +2 -0
  3. package/dist/adapters/aws-lambda.d.ts +21 -0
  4. package/dist/adapters/aws-lambda.d.ts.map +1 -0
  5. package/dist/adapters/aws-lambda.js +110 -0
  6. package/dist/adapters/aws-lambda.js.map +1 -0
  7. package/dist/adapters/bun.d.ts +9 -0
  8. package/dist/adapters/bun.d.ts.map +1 -0
  9. package/dist/adapters/bun.js +15 -0
  10. package/dist/adapters/bun.js.map +1 -0
  11. package/dist/adapters/cloudflare.d.ts +10 -0
  12. package/dist/adapters/cloudflare.d.ts.map +1 -0
  13. package/dist/adapters/cloudflare.js +14 -0
  14. package/dist/adapters/cloudflare.js.map +1 -0
  15. package/dist/adapters/deno.d.ts +7 -0
  16. package/dist/adapters/deno.d.ts.map +1 -0
  17. package/dist/adapters/deno.js +11 -0
  18. package/dist/adapters/deno.js.map +1 -0
  19. package/dist/adapters/fastly.d.ts +6 -0
  20. package/dist/adapters/fastly.d.ts.map +1 -0
  21. package/dist/adapters/fastly.js +12 -0
  22. package/dist/adapters/fastly.js.map +1 -0
  23. package/dist/adapters/fetch.d.ts +30 -0
  24. package/dist/adapters/fetch.d.ts.map +1 -0
  25. package/dist/adapters/fetch.js +119 -0
  26. package/dist/adapters/fetch.js.map +1 -0
  27. package/dist/adapters/index.d.ts +9 -0
  28. package/dist/adapters/index.d.ts.map +1 -0
  29. package/dist/adapters/index.js +28 -0
  30. package/dist/adapters/index.js.map +1 -0
  31. package/dist/adapters/netlify.d.ts +8 -0
  32. package/dist/adapters/netlify.d.ts.map +1 -0
  33. package/dist/adapters/netlify.js +12 -0
  34. package/dist/adapters/netlify.js.map +1 -0
  35. package/dist/adapters/vercel.d.ts +14 -0
  36. package/dist/adapters/vercel.d.ts.map +1 -0
  37. package/dist/adapters/vercel.js +20 -0
  38. package/dist/adapters/vercel.js.map +1 -0
  39. package/dist/auth/jwt.d.ts +20 -0
  40. package/dist/auth/jwt.d.ts.map +1 -0
  41. package/dist/auth/jwt.js +79 -0
  42. package/dist/auth/jwt.js.map +1 -0
  43. package/dist/auth/password.d.ts +25 -0
  44. package/dist/auth/password.d.ts.map +1 -0
  45. package/dist/auth/password.js +93 -0
  46. package/dist/auth/password.js.map +1 -0
  47. package/dist/auth/rbac.d.ts +10 -0
  48. package/dist/auth/rbac.d.ts.map +1 -0
  49. package/dist/auth/rbac.js +34 -0
  50. package/dist/auth/rbac.js.map +1 -0
  51. package/dist/auth/session.d.ts +23 -0
  52. package/dist/auth/session.d.ts.map +1 -0
  53. package/dist/auth/session.js +105 -0
  54. package/dist/auth/session.js.map +1 -0
  55. package/dist/cache/index.d.ts +2 -0
  56. package/dist/cache/index.d.ts.map +1 -0
  57. package/dist/cache/index.js +9 -0
  58. package/dist/cache/index.js.map +1 -0
  59. package/dist/cache/store.d.ts +48 -0
  60. package/dist/cache/store.d.ts.map +1 -0
  61. package/dist/cache/store.js +211 -0
  62. package/dist/cache/store.js.map +1 -0
  63. package/dist/cli/commands/build.d.ts +7 -0
  64. package/dist/cli/commands/build.d.ts.map +1 -0
  65. package/dist/cli/commands/build.js +183 -0
  66. package/dist/cli/commands/build.js.map +1 -0
  67. package/dist/cli/commands/dev.d.ts +9 -0
  68. package/dist/cli/commands/dev.d.ts.map +1 -0
  69. package/dist/cli/commands/dev.js +290 -0
  70. package/dist/cli/commands/dev.js.map +1 -0
  71. package/dist/cli/commands/exports.d.ts +2 -0
  72. package/dist/cli/commands/exports.d.ts.map +1 -0
  73. package/dist/cli/commands/exports.js +76 -0
  74. package/dist/cli/commands/exports.js.map +1 -0
  75. package/dist/cli/commands/generate.d.ts +5 -0
  76. package/dist/cli/commands/generate.d.ts.map +1 -0
  77. package/dist/cli/commands/generate.js +149 -0
  78. package/dist/cli/commands/generate.js.map +1 -0
  79. package/dist/cli/commands/init.d.ts +2 -0
  80. package/dist/cli/commands/init.d.ts.map +1 -0
  81. package/dist/cli/commands/init.js +37 -0
  82. package/dist/cli/commands/init.js.map +1 -0
  83. package/dist/cli/commands/repl.d.ts +6 -0
  84. package/dist/cli/commands/repl.d.ts.map +1 -0
  85. package/dist/cli/commands/repl.js +75 -0
  86. package/dist/cli/commands/repl.js.map +1 -0
  87. package/dist/cli/commands/start.d.ts +7 -0
  88. package/dist/cli/commands/start.d.ts.map +1 -0
  89. package/dist/cli/commands/start.js +111 -0
  90. package/dist/cli/commands/start.js.map +1 -0
  91. package/dist/cli/commands/test.d.ts +7 -0
  92. package/dist/cli/commands/test.d.ts.map +1 -0
  93. package/dist/cli/commands/test.js +170 -0
  94. package/dist/cli/commands/test.js.map +1 -0
  95. package/dist/cli/index.d.ts +3 -0
  96. package/dist/cli/index.d.ts.map +1 -0
  97. package/dist/cli/index.js +183 -0
  98. package/dist/cli/index.js.map +1 -0
  99. package/dist/cli/manifest.d.ts +2 -0
  100. package/dist/cli/manifest.d.ts.map +1 -0
  101. package/dist/cli/manifest.js +160 -0
  102. package/dist/cli/manifest.js.map +1 -0
  103. package/dist/cli/optimizers/aot-routes.d.ts +2 -0
  104. package/dist/cli/optimizers/aot-routes.d.ts.map +1 -0
  105. package/dist/cli/optimizers/aot-routes.js +59 -0
  106. package/dist/cli/optimizers/aot-routes.js.map +1 -0
  107. package/dist/cli/optimizers/precompile-serializers.d.ts +2 -0
  108. package/dist/cli/optimizers/precompile-serializers.d.ts.map +1 -0
  109. package/dist/cli/optimizers/precompile-serializers.js +68 -0
  110. package/dist/cli/optimizers/precompile-serializers.js.map +1 -0
  111. package/dist/cli/optimizers/tree-shake.d.ts +2 -0
  112. package/dist/cli/optimizers/tree-shake.d.ts.map +1 -0
  113. package/dist/cli/optimizers/tree-shake.js +64 -0
  114. package/dist/cli/optimizers/tree-shake.js.map +1 -0
  115. package/dist/cli/routes.d.ts +2 -0
  116. package/dist/cli/routes.d.ts.map +1 -0
  117. package/dist/cli/routes.js +158 -0
  118. package/dist/cli/routes.js.map +1 -0
  119. package/dist/cli/utils.d.ts +24 -0
  120. package/dist/cli/utils.d.ts.map +1 -0
  121. package/dist/cli/utils.js +54 -0
  122. package/dist/cli/utils.js.map +1 -0
  123. package/dist/config/constants.d.ts +11 -0
  124. package/dist/config/constants.d.ts.map +1 -0
  125. package/dist/config/constants.js +14 -0
  126. package/dist/config/constants.js.map +1 -0
  127. package/dist/cron/parser.d.ts +2 -0
  128. package/dist/cron/parser.d.ts.map +1 -0
  129. package/dist/cron/parser.js +52 -0
  130. package/dist/cron/parser.js.map +1 -0
  131. package/dist/cron/scheduler.d.ts +22 -0
  132. package/dist/cron/scheduler.d.ts.map +1 -0
  133. package/dist/cron/scheduler.js +102 -0
  134. package/dist/cron/scheduler.js.map +1 -0
  135. package/dist/dataloader/dataloader.d.ts +23 -0
  136. package/dist/dataloader/dataloader.d.ts.map +1 -0
  137. package/dist/dataloader/dataloader.js +98 -0
  138. package/dist/dataloader/dataloader.js.map +1 -0
  139. package/dist/dataloader/registry.d.ts +17 -0
  140. package/dist/dataloader/registry.d.ts.map +1 -0
  141. package/dist/dataloader/registry.js +47 -0
  142. package/dist/dataloader/registry.js.map +1 -0
  143. package/dist/decorators/index.d.ts +63 -0
  144. package/dist/decorators/index.d.ts.map +1 -0
  145. package/dist/decorators/index.js +460 -0
  146. package/dist/decorators/index.js.map +1 -0
  147. package/dist/di/container.d.ts +21 -0
  148. package/dist/di/container.d.ts.map +1 -0
  149. package/dist/di/container.js +81 -0
  150. package/dist/di/container.js.map +1 -0
  151. package/dist/di/inject.d.ts +3 -0
  152. package/dist/di/inject.d.ts.map +1 -0
  153. package/dist/di/inject.js +12 -0
  154. package/dist/di/inject.js.map +1 -0
  155. package/dist/exports/auth.d.ts +6 -0
  156. package/dist/exports/auth.d.ts.map +1 -0
  157. package/dist/exports/auth.js +46 -0
  158. package/dist/exports/auth.js.map +1 -0
  159. package/dist/exports/cache.d.ts +4 -0
  160. package/dist/exports/cache.d.ts.map +1 -0
  161. package/dist/exports/cache.js +20 -0
  162. package/dist/exports/cache.js.map +1 -0
  163. package/dist/exports/config.d.ts +4 -0
  164. package/dist/exports/config.d.ts.map +1 -0
  165. package/dist/exports/config.js +23 -0
  166. package/dist/exports/config.js.map +1 -0
  167. package/dist/exports/dataloader.d.ts +3 -0
  168. package/dist/exports/dataloader.d.ts.map +1 -0
  169. package/dist/exports/dataloader.js +19 -0
  170. package/dist/exports/dataloader.js.map +1 -0
  171. package/dist/exports/decorators.d.ts +2 -0
  172. package/dist/exports/decorators.d.ts.map +1 -0
  173. package/dist/exports/decorators.js +18 -0
  174. package/dist/exports/decorators.js.map +1 -0
  175. package/dist/exports/di.d.ts +4 -0
  176. package/dist/exports/di.d.ts.map +1 -0
  177. package/dist/exports/di.js +8 -0
  178. package/dist/exports/di.js.map +1 -0
  179. package/dist/exports/error.d.ts +2 -0
  180. package/dist/exports/error.d.ts.map +1 -0
  181. package/dist/exports/error.js +16 -0
  182. package/dist/exports/error.js.map +1 -0
  183. package/dist/exports/module.d.ts +3 -0
  184. package/dist/exports/module.d.ts.map +1 -0
  185. package/dist/exports/module.js +6 -0
  186. package/dist/exports/module.js.map +1 -0
  187. package/dist/exports/plugin.d.ts +3 -0
  188. package/dist/exports/plugin.d.ts.map +1 -0
  189. package/dist/exports/plugin.js +6 -0
  190. package/dist/exports/plugin.js.map +1 -0
  191. package/dist/exports/queue.d.ts +9 -0
  192. package/dist/exports/queue.d.ts.map +1 -0
  193. package/dist/exports/queue.js +16 -0
  194. package/dist/exports/queue.js.map +1 -0
  195. package/dist/exports/response.d.ts +2 -0
  196. package/dist/exports/response.d.ts.map +1 -0
  197. package/dist/exports/response.js +18 -0
  198. package/dist/exports/response.js.map +1 -0
  199. package/dist/exports/route.d.ts +14 -0
  200. package/dist/exports/route.d.ts.map +1 -0
  201. package/dist/exports/route.js +25 -0
  202. package/dist/exports/route.js.map +1 -0
  203. package/dist/exports/security.d.ts +3 -0
  204. package/dist/exports/security.d.ts.map +1 -0
  205. package/dist/exports/security.js +13 -0
  206. package/dist/exports/security.js.map +1 -0
  207. package/dist/exports/swagger.d.ts +3 -0
  208. package/dist/exports/swagger.d.ts.map +1 -0
  209. package/dist/exports/swagger.js +6 -0
  210. package/dist/exports/swagger.js.map +1 -0
  211. package/dist/exports/validation.d.ts +2 -0
  212. package/dist/exports/validation.d.ts.map +1 -0
  213. package/dist/exports/validation.js +8 -0
  214. package/dist/exports/validation.js.map +1 -0
  215. package/dist/index.d.ts +11 -0
  216. package/dist/index.d.ts.map +1 -0
  217. package/dist/index.js +71 -0
  218. package/dist/index.js.map +1 -0
  219. package/dist/integrations/drizzle.d.ts +10 -0
  220. package/dist/integrations/drizzle.d.ts.map +1 -0
  221. package/dist/integrations/drizzle.js +34 -0
  222. package/dist/integrations/drizzle.js.map +1 -0
  223. package/dist/integrations/jwt.d.ts +12 -0
  224. package/dist/integrations/jwt.d.ts.map +1 -0
  225. package/dist/integrations/jwt.js +27 -0
  226. package/dist/integrations/jwt.js.map +1 -0
  227. package/dist/integrations/mongodb.d.ts +13 -0
  228. package/dist/integrations/mongodb.d.ts.map +1 -0
  229. package/dist/integrations/mongodb.js +48 -0
  230. package/dist/integrations/mongodb.js.map +1 -0
  231. package/dist/integrations/mongoose.d.ts +13 -0
  232. package/dist/integrations/mongoose.d.ts.map +1 -0
  233. package/dist/integrations/mongoose.js +58 -0
  234. package/dist/integrations/mongoose.js.map +1 -0
  235. package/dist/integrations/openai.d.ts +12 -0
  236. package/dist/integrations/openai.d.ts.map +1 -0
  237. package/dist/integrations/openai.js +47 -0
  238. package/dist/integrations/openai.js.map +1 -0
  239. package/dist/integrations/postgres.d.ts +13 -0
  240. package/dist/integrations/postgres.d.ts.map +1 -0
  241. package/dist/integrations/postgres.js +55 -0
  242. package/dist/integrations/postgres.js.map +1 -0
  243. package/dist/integrations/posthog.d.ts +13 -0
  244. package/dist/integrations/posthog.d.ts.map +1 -0
  245. package/dist/integrations/posthog.js +49 -0
  246. package/dist/integrations/posthog.js.map +1 -0
  247. package/dist/integrations/prisma.d.ts +10 -0
  248. package/dist/integrations/prisma.d.ts.map +1 -0
  249. package/dist/integrations/prisma.js +27 -0
  250. package/dist/integrations/prisma.js.map +1 -0
  251. package/dist/integrations/redis.d.ts +12 -0
  252. package/dist/integrations/redis.d.ts.map +1 -0
  253. package/dist/integrations/redis.js +48 -0
  254. package/dist/integrations/redis.js.map +1 -0
  255. package/dist/integrations/resend.d.ts +12 -0
  256. package/dist/integrations/resend.d.ts.map +1 -0
  257. package/dist/integrations/resend.js +47 -0
  258. package/dist/integrations/resend.js.map +1 -0
  259. package/dist/integrations/s3.d.ts +15 -0
  260. package/dist/integrations/s3.d.ts.map +1 -0
  261. package/dist/integrations/s3.js +60 -0
  262. package/dist/integrations/s3.js.map +1 -0
  263. package/dist/integrations/supabase.d.ts +13 -0
  264. package/dist/integrations/supabase.d.ts.map +1 -0
  265. package/dist/integrations/supabase.js +51 -0
  266. package/dist/integrations/supabase.js.map +1 -0
  267. package/dist/lib/start-repl.d.ts +2 -0
  268. package/dist/lib/start-repl.d.ts.map +1 -0
  269. package/dist/lib/start-repl.js +122 -0
  270. package/dist/lib/start-repl.js.map +1 -0
  271. package/dist/lib/start-server.d.ts +2 -0
  272. package/dist/lib/start-server.d.ts.map +1 -0
  273. package/dist/lib/start-server.js +103 -0
  274. package/dist/lib/start-server.js.map +1 -0
  275. package/dist/middleware/backpressure.d.ts +11 -0
  276. package/dist/middleware/backpressure.d.ts.map +1 -0
  277. package/dist/middleware/backpressure.js +55 -0
  278. package/dist/middleware/backpressure.js.map +1 -0
  279. package/dist/middleware/cache.d.ts +10 -0
  280. package/dist/middleware/cache.d.ts.map +1 -0
  281. package/dist/middleware/cache.js +97 -0
  282. package/dist/middleware/cache.js.map +1 -0
  283. package/dist/middleware/compression.d.ts +3 -0
  284. package/dist/middleware/compression.d.ts.map +1 -0
  285. package/dist/middleware/compression.js +132 -0
  286. package/dist/middleware/compression.js.map +1 -0
  287. package/dist/middleware/dedupe.d.ts +10 -0
  288. package/dist/middleware/dedupe.d.ts.map +1 -0
  289. package/dist/middleware/dedupe.js +79 -0
  290. package/dist/middleware/dedupe.js.map +1 -0
  291. package/dist/middleware/exception-filter.d.ts +9 -0
  292. package/dist/middleware/exception-filter.d.ts.map +1 -0
  293. package/dist/middleware/exception-filter.js +26 -0
  294. package/dist/middleware/exception-filter.js.map +1 -0
  295. package/dist/middleware/guard.d.ts +11 -0
  296. package/dist/middleware/guard.d.ts.map +1 -0
  297. package/dist/middleware/guard.js +26 -0
  298. package/dist/middleware/guard.js.map +1 -0
  299. package/dist/middleware/interceptor.d.ts +4 -0
  300. package/dist/middleware/interceptor.d.ts.map +1 -0
  301. package/dist/middleware/interceptor.js +32 -0
  302. package/dist/middleware/interceptor.js.map +1 -0
  303. package/dist/middleware/ip-filter.d.ts +11 -0
  304. package/dist/middleware/ip-filter.d.ts.map +1 -0
  305. package/dist/middleware/ip-filter.js +27 -0
  306. package/dist/middleware/ip-filter.js.map +1 -0
  307. package/dist/middleware/middleware.d.ts +26 -0
  308. package/dist/middleware/middleware.d.ts.map +1 -0
  309. package/dist/middleware/middleware.js +271 -0
  310. package/dist/middleware/middleware.js.map +1 -0
  311. package/dist/middleware/pipe.d.ts +9 -0
  312. package/dist/middleware/pipe.d.ts.map +1 -0
  313. package/dist/middleware/pipe.js +24 -0
  314. package/dist/middleware/pipe.js.map +1 -0
  315. package/dist/middleware/security.d.ts +53 -0
  316. package/dist/middleware/security.d.ts.map +1 -0
  317. package/dist/middleware/security.js +257 -0
  318. package/dist/middleware/security.js.map +1 -0
  319. package/dist/module/module.d.ts +17 -0
  320. package/dist/module/module.d.ts.map +1 -0
  321. package/dist/module/module.js +37 -0
  322. package/dist/module/module.js.map +1 -0
  323. package/dist/observability/health.d.ts +23 -0
  324. package/dist/observability/health.d.ts.map +1 -0
  325. package/dist/observability/health.js +49 -0
  326. package/dist/observability/health.js.map +1 -0
  327. package/dist/observability/index.d.ts +4 -0
  328. package/dist/observability/index.d.ts.map +1 -0
  329. package/dist/observability/index.js +10 -0
  330. package/dist/observability/index.js.map +1 -0
  331. package/dist/observability/otel.d.ts +27 -0
  332. package/dist/observability/otel.d.ts.map +1 -0
  333. package/dist/observability/otel.js +45 -0
  334. package/dist/observability/otel.js.map +1 -0
  335. package/dist/observability/prometheus.d.ts +30 -0
  336. package/dist/observability/prometheus.d.ts.map +1 -0
  337. package/dist/observability/prometheus.js +31 -0
  338. package/dist/observability/prometheus.js.map +1 -0
  339. package/dist/queue/client.d.ts +13 -0
  340. package/dist/queue/client.d.ts.map +1 -0
  341. package/dist/queue/client.js +64 -0
  342. package/dist/queue/client.js.map +1 -0
  343. package/dist/queue/drivers/MemoryDriver.d.ts +17 -0
  344. package/dist/queue/drivers/MemoryDriver.d.ts.map +1 -0
  345. package/dist/queue/drivers/MemoryDriver.js +109 -0
  346. package/dist/queue/drivers/MemoryDriver.js.map +1 -0
  347. package/dist/queue/drivers/RedisDriver.d.ts +18 -0
  348. package/dist/queue/drivers/RedisDriver.d.ts.map +1 -0
  349. package/dist/queue/drivers/RedisDriver.js +120 -0
  350. package/dist/queue/drivers/RedisDriver.js.map +1 -0
  351. package/dist/queue/index.d.ts +12 -0
  352. package/dist/queue/index.d.ts.map +1 -0
  353. package/dist/queue/index.js +27 -0
  354. package/dist/queue/index.js.map +1 -0
  355. package/dist/queue/types.d.ts +51 -0
  356. package/dist/queue/types.d.ts.map +1 -0
  357. package/dist/queue/types.js +3 -0
  358. package/dist/queue/types.js.map +1 -0
  359. package/dist/queue/worker.d.ts +18 -0
  360. package/dist/queue/worker.d.ts.map +1 -0
  361. package/dist/queue/worker.js +160 -0
  362. package/dist/queue/worker.js.map +1 -0
  363. package/dist/response/index.d.ts +16 -0
  364. package/dist/response/index.d.ts.map +1 -0
  365. package/dist/response/index.js +19 -0
  366. package/dist/response/index.js.map +1 -0
  367. package/dist/router/gateway.d.ts +64 -0
  368. package/dist/router/gateway.d.ts.map +1 -0
  369. package/dist/router/gateway.js +11 -0
  370. package/dist/router/gateway.js.map +1 -0
  371. package/dist/router/radix.d.ts +42 -0
  372. package/dist/router/radix.d.ts.map +1 -0
  373. package/dist/router/radix.js +523 -0
  374. package/dist/router/radix.js.map +1 -0
  375. package/dist/router/router.d.ts +59 -0
  376. package/dist/router/router.d.ts.map +1 -0
  377. package/dist/router/router.js +386 -0
  378. package/dist/router/router.js.map +1 -0
  379. package/dist/server/app.d.ts +206 -0
  380. package/dist/server/app.d.ts.map +1 -0
  381. package/dist/server/app.js +2191 -0
  382. package/dist/server/app.js.map +1 -0
  383. package/dist/server/cluster.d.ts +52 -0
  384. package/dist/server/cluster.d.ts.map +1 -0
  385. package/dist/server/cluster.js +165 -0
  386. package/dist/server/cluster.js.map +1 -0
  387. package/dist/server/context.d.ts +40 -0
  388. package/dist/server/context.d.ts.map +1 -0
  389. package/dist/server/context.js +74 -0
  390. package/dist/server/context.js.map +1 -0
  391. package/dist/server/define.d.ts +14 -0
  392. package/dist/server/define.d.ts.map +1 -0
  393. package/dist/server/define.js +22 -0
  394. package/dist/server/define.js.map +1 -0
  395. package/dist/server/dep-graph.d.ts +2 -0
  396. package/dist/server/dep-graph.d.ts.map +1 -0
  397. package/dist/server/dep-graph.js +109 -0
  398. package/dist/server/dep-graph.js.map +1 -0
  399. package/dist/server/dev-error-overlay.d.ts +3 -0
  400. package/dist/server/dev-error-overlay.d.ts.map +1 -0
  401. package/dist/server/dev-error-overlay.js +116 -0
  402. package/dist/server/dev-error-overlay.js.map +1 -0
  403. package/dist/server/hot-reload.d.ts +28 -0
  404. package/dist/server/hot-reload.d.ts.map +1 -0
  405. package/dist/server/hot-reload.js +253 -0
  406. package/dist/server/hot-reload.js.map +1 -0
  407. package/dist/server/request.d.ts +71 -0
  408. package/dist/server/request.d.ts.map +1 -0
  409. package/dist/server/request.js +408 -0
  410. package/dist/server/request.js.map +1 -0
  411. package/dist/server/response.d.ts +36 -0
  412. package/dist/server/response.d.ts.map +1 -0
  413. package/dist/server/response.js +254 -0
  414. package/dist/server/response.js.map +1 -0
  415. package/dist/server/route.d.ts +148 -0
  416. package/dist/server/route.d.ts.map +1 -0
  417. package/dist/server/route.js +56 -0
  418. package/dist/server/route.js.map +1 -0
  419. package/dist/server/sse.d.ts +16 -0
  420. package/dist/server/sse.d.ts.map +1 -0
  421. package/dist/server/sse.js +51 -0
  422. package/dist/server/sse.js.map +1 -0
  423. package/dist/server/uws-adapter.d.ts +101 -0
  424. package/dist/server/uws-adapter.d.ts.map +1 -0
  425. package/dist/server/uws-adapter.js +338 -0
  426. package/dist/server/uws-adapter.js.map +1 -0
  427. package/dist/swagger/index.d.ts +9 -0
  428. package/dist/swagger/index.d.ts.map +1 -0
  429. package/dist/swagger/index.js +147 -0
  430. package/dist/swagger/index.js.map +1 -0
  431. package/dist/testing/client.d.ts +44 -0
  432. package/dist/testing/client.d.ts.map +1 -0
  433. package/dist/testing/client.js +105 -0
  434. package/dist/testing/client.js.map +1 -0
  435. package/dist/testing/index.d.ts +7 -0
  436. package/dist/testing/index.d.ts.map +1 -0
  437. package/dist/testing/index.js +128 -0
  438. package/dist/testing/index.js.map +1 -0
  439. package/dist/testing/mocks.d.ts +25 -0
  440. package/dist/testing/mocks.d.ts.map +1 -0
  441. package/dist/testing/mocks.js +117 -0
  442. package/dist/testing/mocks.js.map +1 -0
  443. package/dist/testing/reporter.d.ts +13 -0
  444. package/dist/testing/reporter.d.ts.map +1 -0
  445. package/dist/testing/reporter.js +101 -0
  446. package/dist/testing/reporter.js.map +1 -0
  447. package/dist/threads/pool.d.ts +13 -0
  448. package/dist/threads/pool.d.ts.map +1 -0
  449. package/dist/threads/pool.js +93 -0
  450. package/dist/threads/pool.js.map +1 -0
  451. package/dist/threads/worker-runner.d.ts +2 -0
  452. package/dist/threads/worker-runner.d.ts.map +1 -0
  453. package/dist/threads/worker-runner.js +71 -0
  454. package/dist/threads/worker-runner.js.map +1 -0
  455. package/dist/types.d.ts +200 -0
  456. package/dist/types.d.ts.map +1 -0
  457. package/dist/types.js +3 -0
  458. package/dist/types.js.map +1 -0
  459. package/dist/utils/circuit-breaker.d.ts +30 -0
  460. package/dist/utils/circuit-breaker.d.ts.map +1 -0
  461. package/dist/utils/circuit-breaker.js +72 -0
  462. package/dist/utils/circuit-breaker.js.map +1 -0
  463. package/dist/utils/config.d.ts +9 -0
  464. package/dist/utils/config.d.ts.map +1 -0
  465. package/dist/utils/config.js +229 -0
  466. package/dist/utils/config.js.map +1 -0
  467. package/dist/utils/env.d.ts +25 -0
  468. package/dist/utils/env.d.ts.map +1 -0
  469. package/dist/utils/env.js +155 -0
  470. package/dist/utils/env.js.map +1 -0
  471. package/dist/utils/errors.d.ts +51 -0
  472. package/dist/utils/errors.d.ts.map +1 -0
  473. package/dist/utils/errors.js +233 -0
  474. package/dist/utils/errors.js.map +1 -0
  475. package/dist/utils/logger.d.ts +6 -0
  476. package/dist/utils/logger.d.ts.map +1 -0
  477. package/dist/utils/logger.js +70 -0
  478. package/dist/utils/logger.js.map +1 -0
  479. package/dist/utils/plugin.d.ts +7 -0
  480. package/dist/utils/plugin.d.ts.map +1 -0
  481. package/dist/utils/plugin.js +30 -0
  482. package/dist/utils/plugin.js.map +1 -0
  483. package/dist/utils/validator.d.ts +300 -0
  484. package/dist/utils/validator.d.ts.map +1 -0
  485. package/dist/utils/validator.js +719 -0
  486. package/dist/utils/validator.js.map +1 -0
  487. package/dist/websocket/server.d.ts +66 -0
  488. package/dist/websocket/server.d.ts.map +1 -0
  489. package/dist/websocket/server.js +156 -0
  490. package/dist/websocket/server.js.map +1 -0
  491. package/dist/websocket/socket.d.ts +119 -0
  492. package/dist/websocket/socket.d.ts.map +1 -0
  493. package/dist/websocket/socket.js +240 -0
  494. package/dist/websocket/socket.js.map +1 -0
  495. package/package.json +270 -0
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InternalError = exports.RateLimitError = exports.UnprocessableError = exports.ConflictError = exports.NotFoundError = exports.ForbiddenError = exports.UnauthorizedError = exports.BadRequestError = exports.HttpError = void 0;
4
+ exports.createErrorHandler = createErrorHandler;
5
+ exports.asyncHandler = asyncHandler;
6
+ // ─── HttpError ─────────────────────────────────────────────────────────────────
7
+ class HttpError extends Error {
8
+ constructor(message, statusCode = 500, code = 'INTERNAL_ERROR', details) {
9
+ super(message);
10
+ this.name = 'HttpError';
11
+ this.statusCode = statusCode;
12
+ this.code = code;
13
+ this.isOperational = true;
14
+ this.details = details;
15
+ // maintains proper stack trace
16
+ Error.captureStackTrace(this, this.constructor);
17
+ }
18
+ // ─── Factory methods ─────────────────────────────────────────────────────────
19
+ static badRequest(message, details) {
20
+ return new HttpError(message, 400, 'BAD_REQUEST', details);
21
+ }
22
+ static unauthorized(message = 'Unauthorized') {
23
+ return new HttpError(message, 401, 'UNAUTHORIZED');
24
+ }
25
+ static forbidden(message = 'Forbidden') {
26
+ return new HttpError(message, 403, 'FORBIDDEN');
27
+ }
28
+ static notFound(resource = 'Resource') {
29
+ return new HttpError(`${resource} not found`, 404, 'NOT_FOUND');
30
+ }
31
+ static conflict(message) {
32
+ return new HttpError(message, 409, 'CONFLICT');
33
+ }
34
+ static unprocessable(message, details) {
35
+ return new HttpError(message, 422, 'UNPROCESSABLE_ENTITY', details);
36
+ }
37
+ static tooManyRequests(message = 'Too many requests') {
38
+ return new HttpError(message, 429, 'RATE_LIMITED');
39
+ }
40
+ static internal(message = 'Internal server error') {
41
+ return new HttpError(message, 500, 'INTERNAL_ERROR');
42
+ }
43
+ static serviceUnavailable(message = 'Service unavailable') {
44
+ return new HttpError(message, 503, 'SERVICE_UNAVAILABLE');
45
+ }
46
+ toJSON() {
47
+ return {
48
+ success: false,
49
+ error: {
50
+ code: this.code,
51
+ message: this.message,
52
+ ...(this.details !== undefined && { details: this.details }),
53
+ },
54
+ };
55
+ }
56
+ }
57
+ exports.HttpError = HttpError;
58
+ class BadRequestError extends HttpError {
59
+ constructor(message = 'Bad Request', details) {
60
+ super(message, 400, 'BAD_REQUEST', details);
61
+ this.name = 'BadRequestError';
62
+ }
63
+ }
64
+ exports.BadRequestError = BadRequestError;
65
+ class UnauthorizedError extends HttpError {
66
+ constructor(message = 'Unauthorized') {
67
+ super(message, 401, 'UNAUTHORIZED');
68
+ this.name = 'UnauthorizedError';
69
+ }
70
+ }
71
+ exports.UnauthorizedError = UnauthorizedError;
72
+ class ForbiddenError extends HttpError {
73
+ constructor(message = 'Forbidden') {
74
+ super(message, 403, 'FORBIDDEN');
75
+ this.name = 'ForbiddenError';
76
+ }
77
+ }
78
+ exports.ForbiddenError = ForbiddenError;
79
+ class NotFoundError extends HttpError {
80
+ constructor(resource = 'Resource') {
81
+ super(`${resource} not found`, 404, 'NOT_FOUND');
82
+ this.name = 'NotFoundError';
83
+ }
84
+ }
85
+ exports.NotFoundError = NotFoundError;
86
+ class ConflictError extends HttpError {
87
+ constructor(message = 'Conflict') {
88
+ super(message, 409, 'CONFLICT');
89
+ this.name = 'ConflictError';
90
+ }
91
+ }
92
+ exports.ConflictError = ConflictError;
93
+ class UnprocessableError extends HttpError {
94
+ constructor(message = 'Unprocessable Entity', details) {
95
+ super(message, 422, 'UNPROCESSABLE_ENTITY', details);
96
+ this.name = 'UnprocessableError';
97
+ }
98
+ }
99
+ exports.UnprocessableError = UnprocessableError;
100
+ class RateLimitError extends HttpError {
101
+ constructor(message = 'Too many requests') {
102
+ super(message, 429, 'RATE_LIMITED');
103
+ this.name = 'RateLimitError';
104
+ }
105
+ }
106
+ exports.RateLimitError = RateLimitError;
107
+ class InternalError extends HttpError {
108
+ constructor(message = 'Internal server error') {
109
+ super(message, 500, 'INTERNAL_ERROR');
110
+ this.name = 'InternalError';
111
+ }
112
+ }
113
+ exports.InternalError = InternalError;
114
+ // ─── Global Error Handler ─────────────────────────────────────────────────────
115
+ function renderErrorHtml(err, req) {
116
+ const stack = err.stack
117
+ ? err.stack.replace(/\n/g, '<br/>').replace(/ {2}/g, '&nbsp;&nbsp;')
118
+ : 'No stack trace available.';
119
+ return `
120
+ <!DOCTYPE html>
121
+ <html lang="en">
122
+ <head>
123
+ <meta charset="UTF-8">
124
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
125
+ <title>Unhandled Error | Exis</title>
126
+ <style>
127
+ body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; background-color: #fcebeb; color: #333; margin: 0; padding: 40px; }
128
+ .container { max-width: 900px; margin: 0 auto; background: #fff; padding: 30px; border-radius: 8px; box-shadow: 0 10px 25px rgba(200, 0, 0, 0.1); border-left: 6px solid #e53e3e; }
129
+ h1 { color: #e53e3e; margin-top: 0; font-size: 24px; }
130
+ .message { font-size: 18px; font-weight: 500; margin-bottom: 20px; padding-bottom: 10px; border-bottom: 1px solid #eee; }
131
+ .code-block { background: #1e1e1e; color: #d4d4d4; padding: 20px; border-radius: 6px; overflow-x: auto; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 14px; line-height: 1.5; }
132
+ .req-info { margin-top: 20px; font-size: 14px; color: #666; }
133
+ .highlight { color: #e53e3e; font-weight: bold; }
134
+ </style>
135
+ </head>
136
+ <body>
137
+ <div class="container">
138
+ <h1>Unhandled Server Error</h1>
139
+ <div class="message">${err.message || 'Unknown Error'}</div>
140
+ <div class="code-block">${stack}</div>
141
+ <div class="req-info">
142
+ <strong>Request:</strong> <span class="highlight">${req.method}</span> ${req.path}
143
+ </div>
144
+ </div>
145
+ </body>
146
+ </html>
147
+ `.trim();
148
+ }
149
+ function createErrorHandler(isDev = false) {
150
+ return (err, req, res, _next) => {
151
+ if (res.headersSent)
152
+ return;
153
+ // known operational error
154
+ if (err instanceof HttpError) {
155
+ if (isDev &&
156
+ req.headers.accept?.includes('text/html') &&
157
+ err.statusCode >= 500) {
158
+ res.status(err.statusCode).html(renderErrorHtml(err, req));
159
+ return;
160
+ }
161
+ res.status(err.statusCode).json(err.toJSON());
162
+ return;
163
+ }
164
+ if (err.name === 'ZodError' ||
165
+ err.name === 'ValidationError' ||
166
+ err.name === 'ValidatorError') {
167
+ let message = err.message;
168
+ // Normalize ZodError
169
+ if (err.name === 'ZodError' && 'errors' in err && Array.isArray(err.errors)) {
170
+ const zodErrors = err.errors;
171
+ message = 'Validation Error: ' + zodErrors.map((e) => `${e.path.join('.')}: ${e.message}`).join(', ');
172
+ }
173
+ // Normalize Yup ValidationError
174
+ else if (err.name === 'ValidationError' && 'inner' in err && Array.isArray(err.inner) && err.inner.length > 0) {
175
+ const yupErrors = err.inner;
176
+ message = 'Validation Error: ' + yupErrors.map((e) => `${e.path}: ${e.message}`).join(', ');
177
+ }
178
+ res.status(400).json({
179
+ statusCode: 400,
180
+ error: 'Bad Request',
181
+ message,
182
+ });
183
+ return;
184
+ }
185
+ // syntax error in body
186
+ if (err instanceof SyntaxError && 'body' in err) {
187
+ res.status(400).json({
188
+ success: false,
189
+ error: {
190
+ code: 'INVALID_JSON',
191
+ message: 'Invalid JSON in request body',
192
+ },
193
+ });
194
+ return;
195
+ }
196
+ // unknown error — don't leak internals in production
197
+ if (req.log) {
198
+ req.log.error({ err }, 'unhandled server error');
199
+ }
200
+ if (isDev) {
201
+ console.error('\n\x1b[31m[Exis Unhandled Error]\x1b[0m', err, '\n');
202
+ }
203
+ else if (!req.log) {
204
+ console.error('[Exis Error]', err);
205
+ }
206
+ if (isDev && req.headers.accept?.includes('text/html')) {
207
+ res
208
+ .status(500)
209
+ .html(renderErrorHtml(err instanceof Error ? err : new Error(String(err)), req));
210
+ return;
211
+ }
212
+ res.status(500).json({
213
+ success: false,
214
+ error: {
215
+ code: 'INTERNAL_ERROR',
216
+ message: isDev ? err.message : 'An unexpected error occurred',
217
+ ...(isDev && { stack: err.stack }),
218
+ },
219
+ });
220
+ };
221
+ }
222
+ /**
223
+ * Async handler wrapper — catches promise rejections.
224
+ * Note: Exis automatically handles async promise rejections internally.
225
+ * This is kept solely for API compatibility with Express middleware.
226
+ * It is redundant and adds unnecessary Promise allocations.
227
+ */
228
+ function asyncHandler(fn) {
229
+ return (req, res, next) => {
230
+ Promise.resolve(fn(req, res, next)).catch(next);
231
+ };
232
+ }
233
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { LoggerConfig, Logger } from '../types';
2
+ export declare function createLogger(config?: LoggerConfig): Logger;
3
+ export declare function createSilentLogger(): Logger;
4
+ export declare function isLogger(obj: unknown): obj is Logger;
5
+ export declare function resolveLoggerConfig(config: LoggerConfig | boolean | undefined): LoggerConfig;
6
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +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,CA8B9D;AAID,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAID,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CASpD;AAID,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,GAAG,OAAO,GAAG,SAAS,GACzC,YAAY,CAId"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createLogger = createLogger;
7
+ exports.createSilentLogger = createSilentLogger;
8
+ exports.isLogger = isLogger;
9
+ exports.resolveLoggerConfig = resolveLoggerConfig;
10
+ const pino_1 = __importDefault(require("pino"));
11
+ // ─── Create Logger ────────────────────────────────────────────────────────────
12
+ const DEFAULT_REDACT = [
13
+ 'req.headers.authorization',
14
+ 'req.headers.cookie',
15
+ 'req.body.password',
16
+ 'req.body.token',
17
+ 'req.body.secret',
18
+ '*.password',
19
+ '*.token',
20
+ '*.secret',
21
+ 'password',
22
+ 'token',
23
+ 'secret',
24
+ ];
25
+ function createLogger(config = {}) {
26
+ const { level = 'info', pretty = process.env.NODE_ENV !== 'production', redact = DEFAULT_REDACT, } = config;
27
+ const options = {
28
+ level,
29
+ ...(redact && redact.length > 0 && { redact }),
30
+ };
31
+ const streams = [];
32
+ if (pretty) {
33
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
34
+ const prettyStream = require('pino-pretty')({
35
+ colorize: true,
36
+ translateTime: 'SYS:HH:MM:ss',
37
+ ignore: 'pid,hostname',
38
+ });
39
+ streams.push({
40
+ level: options.level,
41
+ stream: prettyStream,
42
+ });
43
+ }
44
+ else {
45
+ streams.push({ level: options.level, stream: process.stdout });
46
+ }
47
+ return (0, pino_1.default)(options, pino_1.default.multistream(streams));
48
+ }
49
+ // ─── Silent Logger ────────────────────────────────────────────────────────────
50
+ function createSilentLogger() {
51
+ return (0, pino_1.default)({ level: 'silent' });
52
+ }
53
+ // ─── Type Guard ───────────────────────────────────────────────────────────────
54
+ function isLogger(obj) {
55
+ return (typeof obj === 'object' &&
56
+ obj !== null &&
57
+ 'child' in obj &&
58
+ typeof obj.child === 'function' &&
59
+ 'info' in obj &&
60
+ typeof obj.info === 'function');
61
+ }
62
+ // ─── Resolve Config ───────────────────────────────────────────────────────────
63
+ function resolveLoggerConfig(config) {
64
+ if (config === false)
65
+ return { level: 'silent' };
66
+ if (config === true || config === undefined)
67
+ return {};
68
+ return config;
69
+ }
70
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;;;AAmBA,oCA8BC;AAID,gDAEC;AAID,4BASC;AAID,kDAMC;AA9ED,gDAAuB;AAGvB,iFAAiF;AAEjF,MAAM,cAAc,GAAG;IACrB,2BAA2B;IAC3B,oBAAoB;IACpB,mBAAmB;IACnB,gBAAgB;IAChB,iBAAiB;IACjB,YAAY;IACZ,SAAS;IACT,UAAU;IACV,UAAU;IACV,OAAO;IACP,QAAQ;CACT,CAAA;AAED,SAAgB,YAAY,CAAC,SAAuB,EAAE;IACpD,MAAM,EACJ,KAAK,GAAG,MAAM,EACd,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAC9C,MAAM,GAAG,cAAc,GACxB,GAAG,MAAM,CAAA;IAEV,MAAM,OAAO,GAAuB;QAClC,KAAK;QACL,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;KAC/C,CAAA;IAED,MAAM,OAAO,GAAuB,EAAE,CAAA;IAEtC,IAAI,MAAM,EAAE,CAAC;QACX,iEAAiE;QACjE,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;YAC1C,QAAQ,EAAE,IAAI;YACd,aAAa,EAAE,cAAc;YAC7B,MAAM,EAAE,cAAc;SACvB,CAAC,CAAA;QACF,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,OAAO,CAAC,KAAmB;YAClC,MAAM,EAAE,YAAY;SACrB,CAAC,CAAA;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAmB,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC9E,CAAC;IAED,OAAO,IAAA,cAAI,EAAC,OAAO,EAAE,cAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAsB,CAAA;AACtE,CAAC;AAED,iFAAiF;AAEjF,SAAgB,kBAAkB;IAChC,OAAO,IAAA,cAAI,EAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAsB,CAAA;AACvD,CAAC;AAED,iFAAiF;AAEjF,SAAgB,QAAQ,CAAC,GAAY;IACnC,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,OAAO,IAAI,GAAG;QACd,OAAQ,GAA+B,CAAC,KAAK,KAAK,UAAU;QAC5D,MAAM,IAAI,GAAG;QACb,OAAQ,GAA+B,CAAC,IAAI,KAAK,UAAU,CAC5D,CAAA;AACH,CAAC;AAED,iFAAiF;AAEjF,SAAgB,mBAAmB,CACjC,MAA0C;IAE1C,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,QAAiB,EAAE,CAAA;IACzD,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;IACtD,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { ExisPlugin, ExisPluginInstance } from '../types';
2
+ /**
3
+ * Defines a new Exis plugin.
4
+ * Returns a hybrid object that can be passed directly to `app.register()` OR called as a function `myPlugin({ options })`.
5
+ */
6
+ export declare function definePlugin<TOptions = Record<string, unknown>>(plugin: ExisPlugin<TOptions>): ExisPlugin<TOptions> & ((options?: TOptions) => ExisPluginInstance);
7
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/utils/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAE9D;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7D,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,GAC3B,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,KAAK,kBAAkB,CAAC,CAsBrE"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.definePlugin = definePlugin;
4
+ /**
5
+ * Defines a new Exis plugin.
6
+ * Returns a hybrid object that can be passed directly to `app.register()` OR called as a function `myPlugin({ options })`.
7
+ */
8
+ function definePlugin(plugin) {
9
+ const factory = (options) => ({
10
+ plugin: plugin,
11
+ options,
12
+ });
13
+ // Safely copy properties from the plugin object to the factory function
14
+ // Functions have a read-only 'name' property, so we must use Object.defineProperty
15
+ for (const key of Object.keys(plugin)) {
16
+ if (key === 'name') {
17
+ Object.defineProperty(factory, 'name', {
18
+ value: plugin.name,
19
+ writable: false,
20
+ configurable: true,
21
+ });
22
+ }
23
+ else {
24
+ ;
25
+ factory[key] = plugin[key];
26
+ }
27
+ }
28
+ return factory;
29
+ }
30
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/utils/plugin.ts"],"names":[],"mappings":";;AAMA,oCAwBC;AA5BD;;;GAGG;AACH,SAAgB,YAAY,CAC1B,MAA4B;IAE5B,MAAM,OAAO,GAAG,CAAC,OAAkB,EAAE,EAAE,CAAC,CAAC;QACvC,MAAM,EAAE,MAA6B;QACrC,OAAO;KACR,CAAC,CAAA;IAEF,wEAAwE;IACxE,mFAAmF;IACnF,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACnB,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE;gBACrC,KAAK,EAAE,MAAM,CAAC,IAAI;gBAClB,QAAQ,EAAE,KAAK;gBACf,YAAY,EAAE,IAAI;aACnB,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,CAAC;YAAC,OAAe,CAAC,GAAG,CAAC,GAAI,MAAc,CAAC,GAAG,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC;IAED,OAAO,OACuC,CAAA;AAChD,CAAC"}
@@ -0,0 +1,300 @@
1
+ export type ValidationError = {
2
+ path: string;
3
+ message: string;
4
+ };
5
+ export declare class ValidatorError extends Error {
6
+ errors: ValidationError[];
7
+ constructor(errors: ValidationError[]);
8
+ }
9
+ export declare abstract class ValidatorType<T> {
10
+ protected isOptional: boolean;
11
+ protected _hasDefault: boolean;
12
+ protected defaultValue?: T | (() => T);
13
+ optional(): ValidatorType<T | undefined>;
14
+ default(val: T | (() => T)): ValidatorType<T>;
15
+ refine(check: (val: T) => boolean, message?: string | ((val: T) => string)): ValidatorType<T>;
16
+ transform<U>(fn: (val: T) => U): ValidatorType<U>;
17
+ abstract toOpenApi(): Record<string, unknown>;
18
+ abstract _validate(value: unknown, path: string): {
19
+ success: true;
20
+ data: T;
21
+ } | {
22
+ success: false;
23
+ errors: ValidationError[];
24
+ };
25
+ _validateAsync(value: unknown, path: string): Promise<{
26
+ success: true;
27
+ data: T;
28
+ } | {
29
+ success: false;
30
+ errors: ValidationError[];
31
+ }>;
32
+ validate(value: unknown, path?: string): {
33
+ success: true;
34
+ data: T;
35
+ } | {
36
+ success: false;
37
+ errors: ValidationError[];
38
+ };
39
+ validateAsync(value: unknown, path?: string): Promise<{
40
+ success: true;
41
+ data: T;
42
+ } | {
43
+ success: false;
44
+ errors: ValidationError[];
45
+ }>;
46
+ refineAsync(check: (val: T) => Promise<boolean>, message?: string | ((val: T) => string)): ValidatorType<T>;
47
+ parse(value: unknown): T;
48
+ parseAsync(value: unknown): Promise<T>;
49
+ }
50
+ export declare class RefineValidator<T> extends ValidatorType<T> {
51
+ private base;
52
+ private check;
53
+ private message;
54
+ constructor(base: ValidatorType<T>, check: (val: T) => boolean, message: string | ((val: T) => string));
55
+ toOpenApi(): Record<string, unknown>;
56
+ _validate(value: unknown, path: string): {
57
+ success: true;
58
+ data: T;
59
+ } | {
60
+ success: false;
61
+ errors: ValidationError[];
62
+ };
63
+ }
64
+ export declare class TransformValidator<T, U> extends ValidatorType<U> {
65
+ private base;
66
+ private fn;
67
+ constructor(base: ValidatorType<T>, fn: (val: T) => U);
68
+ toOpenApi(): Record<string, unknown>;
69
+ _validate(value: unknown, path: string): {
70
+ success: true;
71
+ data: U;
72
+ } | {
73
+ success: false;
74
+ errors: ValidationError[];
75
+ };
76
+ }
77
+ export declare class AsyncRefineValidator<T> extends ValidatorType<T> {
78
+ private base;
79
+ private check;
80
+ private message;
81
+ constructor(base: ValidatorType<T>, check: (val: T) => Promise<boolean>, message: string | ((val: T) => string));
82
+ toOpenApi(): Record<string, unknown>;
83
+ _validate(_value: unknown, _path: string): {
84
+ success: true;
85
+ data: T;
86
+ } | {
87
+ success: false;
88
+ errors: ValidationError[];
89
+ };
90
+ _validateAsync(value: unknown, path: string): Promise<{
91
+ success: true;
92
+ data: T;
93
+ } | {
94
+ success: false;
95
+ errors: ValidationError[];
96
+ }>;
97
+ }
98
+ export declare class StringValidator extends ValidatorType<string> {
99
+ private minLen?;
100
+ private minMsg?;
101
+ private maxLen?;
102
+ private maxMsg?;
103
+ private isEmail?;
104
+ private emailMsg?;
105
+ private regexPattern?;
106
+ private regexMsg?;
107
+ min(len: number, message?: string): this;
108
+ max(len: number, message?: string): this;
109
+ email(message?: string): this;
110
+ regex(pattern: RegExp, message?: string): this;
111
+ toOpenApi(): Record<string, unknown>;
112
+ _validate(value: unknown, path: string): {
113
+ success: true;
114
+ data: string;
115
+ } | {
116
+ success: false;
117
+ errors: ValidationError[];
118
+ };
119
+ }
120
+ export declare class NumberValidator extends ValidatorType<number> {
121
+ private minVal?;
122
+ private minMsg?;
123
+ private maxVal?;
124
+ private maxMsg?;
125
+ min(val: number, message?: string): this;
126
+ max(val: number, message?: string): this;
127
+ toOpenApi(): Record<string, unknown>;
128
+ _validate(value: unknown, path: string): {
129
+ success: true;
130
+ data: number;
131
+ } | {
132
+ success: false;
133
+ errors: ValidationError[];
134
+ };
135
+ }
136
+ export declare class BooleanValidator extends ValidatorType<boolean> {
137
+ toOpenApi(): Record<string, unknown>;
138
+ _validate(value: unknown, path: string): {
139
+ success: true;
140
+ data: boolean;
141
+ } | {
142
+ success: false;
143
+ errors: ValidationError[];
144
+ };
145
+ }
146
+ export declare class ObjectValidator<T extends Record<string, ValidatorType<unknown>>> extends ValidatorType<{
147
+ [K in keyof T]: ReturnType<T[K]['parse']>;
148
+ }> {
149
+ private shape;
150
+ private _keys;
151
+ constructor(shape: T);
152
+ partial(): ObjectValidator<{
153
+ [K in keyof T]: ValidatorType<any>;
154
+ }>;
155
+ pick<K extends keyof T>(keys: K[]): ObjectValidator<{
156
+ [P in K]: T[P];
157
+ }>;
158
+ omit<K extends keyof T>(keys: K[]): ObjectValidator<Omit<T, K>>;
159
+ toOpenApi(): Record<string, unknown>;
160
+ _validate(value: unknown, path: string): {
161
+ success: true;
162
+ data: {
163
+ [K in keyof T]: ReturnType<T[K]['parse']>;
164
+ };
165
+ } | {
166
+ success: false;
167
+ errors: ValidationError[];
168
+ };
169
+ _validateAsync(value: unknown, path: string): Promise<{
170
+ success: true;
171
+ data: {
172
+ [K in keyof T]: ReturnType<T[K]['parse']>;
173
+ };
174
+ } | {
175
+ success: false;
176
+ errors: ValidationError[];
177
+ }>;
178
+ }
179
+ export declare class ArrayValidator<T extends ValidatorType<unknown>> extends ValidatorType<ReturnType<T['parse']>[]> {
180
+ private schema;
181
+ private minLen?;
182
+ private minMsg?;
183
+ private maxLen?;
184
+ private maxMsg?;
185
+ constructor(schema: T);
186
+ min(len: number, message?: string): this;
187
+ max(len: number, message?: string): this;
188
+ toOpenApi(): Record<string, unknown>;
189
+ _validate(value: unknown, path: string): {
190
+ success: true;
191
+ data: ReturnType<T['parse']>[];
192
+ } | {
193
+ success: false;
194
+ errors: ValidationError[];
195
+ };
196
+ }
197
+ export declare class EnumValidator<U extends string, T extends [U, ...U[]]> extends ValidatorType<T[number]> {
198
+ private values;
199
+ constructor(values: T);
200
+ toOpenApi(): Record<string, unknown>;
201
+ _validate(value: unknown, path: string): {
202
+ success: true;
203
+ data: T[number];
204
+ } | {
205
+ success: false;
206
+ errors: ValidationError[];
207
+ };
208
+ }
209
+ export declare class LiteralValidator<T extends string | number | boolean> extends ValidatorType<T> {
210
+ private exact;
211
+ constructor(exact: T);
212
+ toOpenApi(): Record<string, unknown>;
213
+ _validate(value: unknown, path: string): {
214
+ success: true;
215
+ data: T;
216
+ } | {
217
+ success: false;
218
+ errors: ValidationError[];
219
+ };
220
+ }
221
+ export declare class UnionValidator<T extends ValidatorType<unknown>[]> extends ValidatorType<ReturnType<T[number]['parse']>> {
222
+ private schemas;
223
+ constructor(schemas: T);
224
+ toOpenApi(): Record<string, unknown>;
225
+ _validate(value: unknown, path: string): {
226
+ success: true;
227
+ data: ReturnType<T[number]['parse']>;
228
+ } | {
229
+ success: false;
230
+ errors: ValidationError[];
231
+ };
232
+ }
233
+ export declare class DateValidator extends ValidatorType<Date> {
234
+ toOpenApi(): Record<string, unknown>;
235
+ _validate(value: unknown, path: string): {
236
+ success: true;
237
+ data: Date;
238
+ } | {
239
+ success: false;
240
+ errors: ValidationError[];
241
+ };
242
+ }
243
+ export declare class RecordValidator<T extends ValidatorType<unknown>> extends ValidatorType<Record<string, ReturnType<T['parse']>>> {
244
+ private schema;
245
+ constructor(schema: T);
246
+ toOpenApi(): Record<string, unknown>;
247
+ _validate(value: unknown, path: string): {
248
+ success: true;
249
+ data: Record<string, ReturnType<T['parse']>>;
250
+ } | {
251
+ success: false;
252
+ errors: ValidationError[];
253
+ };
254
+ }
255
+ export declare class AnyValidator extends ValidatorType<unknown> {
256
+ toOpenApi(): Record<string, unknown>;
257
+ _validate(value: unknown): {
258
+ success: true;
259
+ data: unknown;
260
+ };
261
+ }
262
+ export declare class FileValidator extends ValidatorType<{
263
+ filename: string;
264
+ mimeType: string;
265
+ buffer: Buffer;
266
+ }> {
267
+ private _maxSize?;
268
+ private _mimeTypes?;
269
+ maxSize(bytes: number): this;
270
+ mimeTypes(types: string[]): this;
271
+ toOpenApi(): Record<string, unknown>;
272
+ _validate(value: unknown, path: string): {
273
+ success: true;
274
+ data: {
275
+ filename: string;
276
+ mimeType: string;
277
+ buffer: Buffer;
278
+ };
279
+ } | {
280
+ success: false;
281
+ errors: ValidationError[];
282
+ };
283
+ }
284
+ export declare const v: {
285
+ string: () => StringValidator;
286
+ number: () => NumberValidator;
287
+ boolean: () => BooleanValidator;
288
+ object: <T extends Record<string, ValidatorType<unknown>>>(shape: T) => ObjectValidator<T>;
289
+ array: <T extends ValidatorType<unknown>>(schema: T) => ArrayValidator<T>;
290
+ enum: <U extends string, T extends [U, ...U[]]>(values: T) => EnumValidator<U, T>;
291
+ literal: <T extends string | number | boolean>(exact: T) => LiteralValidator<T>;
292
+ union: <T extends ValidatorType<unknown>[]>(schemas: T) => UnionValidator<T>;
293
+ date: () => DateValidator;
294
+ record: <T extends ValidatorType<unknown>>(schema: T) => RecordValidator<T>;
295
+ any: () => AnyValidator;
296
+ file: () => FileValidator;
297
+ env: <T extends Record<string, ValidatorType<unknown>>>(schema: ObjectValidator<T>) => ReturnType<ObjectValidator<T>["parse"]>;
298
+ };
299
+ export type Infer<T extends ValidatorType<any>> = ReturnType<T['parse']>;
300
+ //# sourceMappingURL=validator.d.ts.map