silgi 0.43.28 → 0.50.0

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 (478) hide show
  1. package/README.md +103 -1
  2. package/dist/_virtual/_rolldown/runtime.mjs +5 -0
  3. package/dist/adapters/_fetch-adapter.d.mts +18 -0
  4. package/dist/adapters/_fetch-adapter.mjs +53 -0
  5. package/dist/adapters/astro.d.mts +15 -0
  6. package/dist/adapters/astro.mjs +31 -0
  7. package/dist/adapters/aws-lambda.d.mts +42 -0
  8. package/dist/adapters/aws-lambda.mjs +92 -0
  9. package/dist/adapters/express.d.mts +16 -0
  10. package/dist/adapters/express.mjs +110 -0
  11. package/dist/adapters/message-port.d.mts +42 -0
  12. package/dist/adapters/message-port.mjs +132 -0
  13. package/dist/adapters/nestjs.d.mts +25 -0
  14. package/dist/adapters/nestjs.mjs +83 -0
  15. package/dist/adapters/nextjs.d.mts +14 -0
  16. package/dist/adapters/nextjs.mjs +29 -0
  17. package/dist/adapters/peer.d.mts +27 -0
  18. package/dist/adapters/peer.mjs +36 -0
  19. package/dist/adapters/remix.d.mts +15 -0
  20. package/dist/adapters/remix.mjs +30 -0
  21. package/dist/adapters/solidstart.d.mts +12 -0
  22. package/dist/adapters/solidstart.mjs +29 -0
  23. package/dist/adapters/sveltekit.d.mts +14 -0
  24. package/dist/adapters/sveltekit.mjs +30 -0
  25. package/dist/broker/index.d.mts +62 -0
  26. package/dist/broker/index.mjs +153 -0
  27. package/dist/broker/nats.d.mts +33 -0
  28. package/dist/broker/nats.mjs +31 -0
  29. package/dist/broker/redis.d.mts +51 -0
  30. package/dist/broker/redis.mjs +92 -0
  31. package/dist/builder.d.mts +55 -0
  32. package/dist/builder.mjs +70 -0
  33. package/dist/callable.d.mts +19 -0
  34. package/dist/callable.mjs +42 -0
  35. package/dist/caller.mjs +90 -0
  36. package/dist/client/adapters/fetch/index.d.mts +15 -0
  37. package/dist/client/adapters/fetch/index.mjs +57 -0
  38. package/dist/client/adapters/ofetch/index.d.mts +55 -0
  39. package/dist/client/adapters/ofetch/index.mjs +91 -0
  40. package/dist/client/adapters/websocket/index.d.mts +20 -0
  41. package/dist/client/adapters/websocket/index.mjs +101 -0
  42. package/dist/client/client.d.mts +37 -0
  43. package/dist/client/client.mjs +80 -0
  44. package/dist/client/consume.d.mts +50 -0
  45. package/dist/client/consume.mjs +66 -0
  46. package/dist/client/dynamic-link.d.mts +16 -0
  47. package/dist/client/dynamic-link.mjs +19 -0
  48. package/dist/client/index.d.mts +6 -0
  49. package/dist/client/index.mjs +5 -0
  50. package/dist/client/interceptor.d.mts +31 -0
  51. package/dist/client/interceptor.mjs +34 -0
  52. package/dist/client/openapi.d.mts +29 -0
  53. package/dist/client/openapi.mjs +89 -0
  54. package/dist/client/plugins/batch.d.mts +26 -0
  55. package/dist/client/plugins/batch.mjs +64 -0
  56. package/dist/client/plugins/circuit-breaker.d.mts +24 -0
  57. package/dist/client/plugins/circuit-breaker.mjs +60 -0
  58. package/dist/client/plugins/csrf.d.mts +13 -0
  59. package/dist/client/plugins/csrf.mjs +20 -0
  60. package/dist/client/plugins/dedupe.d.mts +10 -0
  61. package/dist/client/plugins/dedupe.mjs +28 -0
  62. package/dist/client/plugins/index.d.mts +8 -0
  63. package/dist/client/plugins/index.mjs +8 -0
  64. package/dist/client/plugins/otel.d.mts +12 -0
  65. package/dist/client/plugins/otel.mjs +27 -0
  66. package/dist/client/plugins/retry.d.mts +34 -0
  67. package/dist/client/plugins/retry.mjs +79 -0
  68. package/dist/client/plugins/timeout.d.mts +10 -0
  69. package/dist/client/plugins/timeout.mjs +14 -0
  70. package/dist/client/server.d.mts +16 -0
  71. package/dist/client/server.mjs +59 -0
  72. package/dist/client/types.d.mts +29 -0
  73. package/dist/codec/devalue.d.mts +21 -0
  74. package/dist/codec/devalue.mjs +33 -0
  75. package/dist/codec/msgpack.d.mts +18 -0
  76. package/dist/codec/msgpack.mjs +45 -0
  77. package/dist/codec/sanitize.mjs +38 -0
  78. package/dist/codegen/emitters.d.mts +51 -0
  79. package/dist/codegen/emitters.mjs +143 -0
  80. package/dist/codegen/generate.d.mts +25 -0
  81. package/dist/codegen/generate.mjs +224 -0
  82. package/dist/codegen/index.d.mts +44 -0
  83. package/dist/codegen/index.mjs +103 -0
  84. package/dist/codegen/parse.d.mts +124 -0
  85. package/dist/codegen/parse.mjs +135 -0
  86. package/dist/codegen/preserve.d.mts +21 -0
  87. package/dist/codegen/preserve.mjs +62 -0
  88. package/dist/codegen/schema-to-code.d.mts +57 -0
  89. package/dist/codegen/schema-to-code.mjs +167 -0
  90. package/dist/compile.d.mts +46 -0
  91. package/dist/compile.mjs +332 -0
  92. package/dist/core/codec.mjs +67 -0
  93. package/dist/core/context-bridge.mjs +11 -0
  94. package/dist/core/dispatch.mjs +62 -0
  95. package/dist/core/error.d.mts +99 -60
  96. package/dist/core/error.mjs +125 -92
  97. package/dist/core/handler.d.mts +6 -0
  98. package/dist/core/handler.mjs +153 -0
  99. package/dist/core/input.mjs +49 -0
  100. package/dist/core/iterator.d.mts +17 -0
  101. package/dist/core/iterator.mjs +79 -0
  102. package/dist/core/router-utils.mjs +22 -0
  103. package/dist/core/schema.d.mts +20 -0
  104. package/dist/core/schema.mjs +33 -0
  105. package/dist/core/serve.d.mts +51 -0
  106. package/dist/core/serve.mjs +76 -0
  107. package/dist/core/sse.d.mts +18 -0
  108. package/dist/core/sse.mjs +110 -0
  109. package/dist/core/storage.d.mts +17 -4
  110. package/dist/core/storage.mjs +60 -13
  111. package/dist/core/task.d.mts +62 -0
  112. package/dist/core/task.mjs +165 -0
  113. package/dist/core/trace-map.d.mts +13 -0
  114. package/dist/core/trace-map.mjs +13 -0
  115. package/dist/core/url.mjs +28 -0
  116. package/dist/core/utils.mjs +24 -0
  117. package/dist/index.d.mts +17 -21
  118. package/dist/index.mjs +14 -22
  119. package/dist/integrations/ai/index.d.mts +25 -0
  120. package/dist/integrations/ai/index.mjs +117 -0
  121. package/dist/integrations/better-auth/index.d.mts +41 -0
  122. package/dist/integrations/better-auth/index.mjs +331 -0
  123. package/dist/integrations/drizzle/index.d.mts +27 -0
  124. package/dist/integrations/drizzle/index.mjs +285 -0
  125. package/dist/integrations/hey-api/index.d.mts +2 -0
  126. package/dist/integrations/hey-api/index.mjs +2 -0
  127. package/dist/integrations/hey-api/to-client.d.mts +20 -0
  128. package/dist/integrations/hey-api/to-client.mjs +39 -0
  129. package/dist/integrations/pinia-colada/general-utils.d.mts +13 -0
  130. package/dist/integrations/pinia-colada/general-utils.mjs +9 -0
  131. package/dist/integrations/pinia-colada/index.d.mts +6 -0
  132. package/dist/integrations/pinia-colada/index.mjs +5 -0
  133. package/dist/integrations/pinia-colada/key.d.mts +11 -0
  134. package/dist/integrations/pinia-colada/key.mjs +11 -0
  135. package/dist/integrations/pinia-colada/procedure-utils.d.mts +25 -0
  136. package/dist/integrations/pinia-colada/procedure-utils.mjs +33 -0
  137. package/dist/integrations/pinia-colada/router-utils.d.mts +17 -0
  138. package/dist/integrations/pinia-colada/router-utils.mjs +30 -0
  139. package/dist/integrations/pinia-colada/types.d.mts +25 -0
  140. package/dist/integrations/react/index.d.mts +83 -0
  141. package/dist/integrations/react/index.mjs +196 -0
  142. package/dist/integrations/tanstack-query/index.d.mts +120 -0
  143. package/dist/integrations/tanstack-query/index.mjs +100 -0
  144. package/dist/integrations/tanstack-query/ssr.d.mts +60 -0
  145. package/dist/integrations/tanstack-query/ssr.mjs +102 -0
  146. package/dist/integrations/zod/converter.d.mts +75 -0
  147. package/dist/integrations/zod/converter.mjs +345 -0
  148. package/dist/integrations/zod/index.d.mts +2 -0
  149. package/dist/integrations/zod/index.mjs +2 -0
  150. package/dist/lazy.d.mts +22 -0
  151. package/dist/lazy.mjs +34 -0
  152. package/dist/lifecycle.d.mts +36 -0
  153. package/dist/lifecycle.mjs +46 -0
  154. package/dist/map-input.d.mts +17 -0
  155. package/dist/map-input.mjs +47 -0
  156. package/dist/plugins/analytics/accumulator.d.mts +24 -0
  157. package/dist/plugins/analytics/accumulator.mjs +91 -0
  158. package/dist/plugins/analytics/alerts.d.mts +59 -0
  159. package/dist/plugins/analytics/alerts.mjs +140 -0
  160. package/dist/plugins/analytics/collector.d.mts +38 -0
  161. package/dist/plugins/analytics/collector.mjs +275 -0
  162. package/dist/plugins/analytics/cost.d.mts +61 -0
  163. package/dist/plugins/analytics/cost.mjs +97 -0
  164. package/dist/plugins/analytics/export.d.mts +7 -0
  165. package/dist/plugins/analytics/export.mjs +86 -0
  166. package/dist/plugins/analytics/normalize.mjs +144 -0
  167. package/dist/plugins/analytics/query.mjs +164 -0
  168. package/dist/plugins/analytics/request-id.mjs +34 -0
  169. package/dist/plugins/analytics/routes.d.mts +11 -0
  170. package/dist/plugins/analytics/routes.mjs +211 -0
  171. package/dist/plugins/analytics/sse.d.mts +31 -0
  172. package/dist/plugins/analytics/sse.mjs +74 -0
  173. package/dist/plugins/analytics/store.mjs +103 -0
  174. package/dist/plugins/analytics/timeseries.d.mts +50 -0
  175. package/dist/plugins/analytics/timeseries.mjs +169 -0
  176. package/dist/plugins/analytics/trace.d.mts +48 -0
  177. package/dist/plugins/analytics/trace.mjs +83 -0
  178. package/dist/plugins/analytics/types.d.mts +145 -0
  179. package/dist/plugins/analytics/types.mjs +40 -0
  180. package/dist/plugins/analytics/utils.d.mts +4 -0
  181. package/dist/plugins/analytics/utils.mjs +56 -0
  182. package/dist/plugins/analytics.d.mts +18 -0
  183. package/dist/plugins/analytics.mjs +188 -0
  184. package/dist/plugins/batch-server.d.mts +20 -0
  185. package/dist/plugins/batch-server.mjs +91 -0
  186. package/dist/plugins/body-limit.d.mts +19 -0
  187. package/dist/plugins/body-limit.mjs +49 -0
  188. package/dist/plugins/cache.d.mts +170 -0
  189. package/dist/plugins/cache.mjs +212 -0
  190. package/dist/plugins/coerce.d.mts +24 -0
  191. package/dist/plugins/coerce.mjs +70 -0
  192. package/dist/plugins/cookies.d.mts +14 -0
  193. package/dist/plugins/cookies.mjs +48 -0
  194. package/dist/plugins/cors.d.mts +43 -0
  195. package/dist/plugins/cors.mjs +62 -0
  196. package/dist/plugins/file-upload.d.mts +38 -0
  197. package/dist/plugins/file-upload.mjs +102 -0
  198. package/dist/plugins/index.d.mts +18 -0
  199. package/dist/plugins/index.mjs +17 -0
  200. package/dist/plugins/otel.d.mts +35 -0
  201. package/dist/plugins/otel.mjs +40 -0
  202. package/dist/plugins/pino.d.mts +60 -0
  203. package/dist/plugins/pino.mjs +42 -0
  204. package/dist/plugins/pubsub.d.mts +50 -0
  205. package/dist/plugins/pubsub.mjs +53 -0
  206. package/dist/plugins/ratelimit.d.mts +53 -0
  207. package/dist/plugins/ratelimit.mjs +92 -0
  208. package/dist/plugins/signing.d.mts +41 -0
  209. package/dist/plugins/signing.mjs +118 -0
  210. package/dist/plugins/strict-get.d.mts +10 -0
  211. package/dist/plugins/strict-get.mjs +33 -0
  212. package/dist/scalar.d.mts +49 -0
  213. package/dist/scalar.mjs +311 -0
  214. package/dist/silgi.d.mts +144 -0
  215. package/dist/silgi.mjs +164 -0
  216. package/dist/trpc-interop.d.mts +22 -0
  217. package/dist/trpc-interop.mjs +68 -0
  218. package/dist/types.d.mts +108 -0
  219. package/dist/ws.d.mts +88 -0
  220. package/dist/ws.mjs +205 -0
  221. package/lib/dashboard/index.html +120 -0
  222. package/lib/ocache.d.mts +1 -0
  223. package/lib/ocache.mjs +1 -0
  224. package/lib/ofetch.d.mts +1 -0
  225. package/lib/ofetch.mjs +1 -0
  226. package/lib/srvx.d.mts +1 -0
  227. package/lib/srvx.mjs +1 -0
  228. package/lib/unstorage.d.mts +1 -0
  229. package/lib/unstorage.mjs +1 -0
  230. package/package.json +314 -150
  231. package/dist/build.d.mts +0 -3
  232. package/dist/build.mjs +0 -4
  233. package/dist/cli/build/build.mjs +0 -15
  234. package/dist/cli/build/dev.d.mts +0 -10
  235. package/dist/cli/build/dev.mjs +0 -91
  236. package/dist/cli/build/prepare.d.mts +0 -6
  237. package/dist/cli/build/prepare.mjs +0 -15
  238. package/dist/cli/commands/commands.mjs +0 -90
  239. package/dist/cli/commands/env.mjs +0 -53
  240. package/dist/cli/commands/init.mjs +0 -84
  241. package/dist/cli/commands/install.mjs +0 -52
  242. package/dist/cli/commands/prepare.mjs +0 -65
  243. package/dist/cli/commands/reset.mjs +0 -46
  244. package/dist/cli/commands/run.mjs +0 -31
  245. package/dist/cli/commands/watch.mjs +0 -153
  246. package/dist/cli/config/defaults.mjs +0 -117
  247. package/dist/cli/config/index.d.mts +0 -3
  248. package/dist/cli/config/index.mjs +0 -4
  249. package/dist/cli/config/loader.d.mts +0 -6
  250. package/dist/cli/config/loader.mjs +0 -71
  251. package/dist/cli/config/resolvers/compatibility.mjs +0 -71
  252. package/dist/cli/config/resolvers/imports.mjs +0 -35
  253. package/dist/cli/config/resolvers/paths.mjs +0 -98
  254. package/dist/cli/config/resolvers/storage.mjs +0 -23
  255. package/dist/cli/config/resolvers/url.mjs +0 -9
  256. package/dist/cli/config/types.d.mts +0 -14
  257. package/dist/cli/config/types.mjs +0 -147
  258. package/dist/cli/core/apiful.mjs +0 -36
  259. package/dist/cli/core/devServer.mjs +0 -10
  260. package/dist/cli/core/env.mjs +0 -68
  261. package/dist/cli/core/installPackage.mjs +0 -60
  262. package/dist/cli/core/runtimeConfig.mjs +0 -70
  263. package/dist/cli/core/scan.mjs +0 -35
  264. package/dist/cli/core/silgi.mjs +0 -111
  265. package/dist/cli/framework/emptyFramework.mjs +0 -7
  266. package/dist/cli/framework/h3.mjs +0 -55
  267. package/dist/cli/framework/index.mjs +0 -15
  268. package/dist/cli/framework/nitro.mjs +0 -24
  269. package/dist/cli/framework/nuxt.mjs +0 -10
  270. package/dist/cli/index.d.mts +0 -1
  271. package/dist/cli/index.mjs +0 -29
  272. package/dist/cli/module/exportScan.mjs +0 -180
  273. package/dist/cli/module/install.mjs +0 -49
  274. package/dist/cli/module/scan.mjs +0 -193
  275. package/dist/cli/scan/prepareCommands.mjs +0 -40
  276. package/dist/cli/scan/prepareConfigs.mjs +0 -33
  277. package/dist/cli/scan/prepareCoreFile.mjs +0 -118
  278. package/dist/cli/scan/prepareScanFile.mjs +0 -59
  279. package/dist/cli/scan/prepareSchema.mjs +0 -128
  280. package/dist/cli/scan/scanExportFile.mjs +0 -288
  281. package/dist/cli/scan/writeCoreFile.mjs +0 -22
  282. package/dist/cli/scan/writeTypesAndFiles.mjs +0 -72
  283. package/dist/cli/utils/cancel.mjs +0 -14
  284. package/dist/cli/utils/common.mjs +0 -15
  285. package/dist/cli/utils/compatibility.mjs +0 -33
  286. package/dist/cli/utils/debug.mjs +0 -11
  287. package/dist/cli/utils/ignore.mjs +0 -56
  288. package/dist/cli/utils/processManager.mjs +0 -170
  289. package/dist/cli/utils/readScanFile.mjs +0 -58
  290. package/dist/cli/utils/storage.mjs +0 -23
  291. package/dist/core/context.d.mts +0 -30
  292. package/dist/core/context.mjs +0 -32
  293. package/dist/core/createSilgi.d.mts +0 -6
  294. package/dist/core/createSilgi.mjs +0 -153
  295. package/dist/core/event.d.mts +0 -26
  296. package/dist/core/event.mjs +0 -44
  297. package/dist/core/index.d.mts +0 -25
  298. package/dist/core/index.mjs +0 -30
  299. package/dist/core/orchestrate.mjs +0 -115
  300. package/dist/core/response.d.mts +0 -20
  301. package/dist/core/response.mjs +0 -105
  302. package/dist/core/silgi.d.mts +0 -19
  303. package/dist/core/silgi.mjs +0 -141
  304. package/dist/core/silgiApp.d.mts +0 -9
  305. package/dist/core/silgiApp.mjs +0 -23
  306. package/dist/core/unctx.d.mts +0 -21
  307. package/dist/core/unctx.mjs +0 -35
  308. package/dist/core/utils/event-stream.d.mts +0 -53
  309. package/dist/core/utils/event-stream.mjs +0 -38
  310. package/dist/core/utils/event.d.mts +0 -8
  311. package/dist/core/utils/event.mjs +0 -12
  312. package/dist/core/utils/internal/event-stream.d.mts +0 -45
  313. package/dist/core/utils/internal/event-stream.mjs +0 -137
  314. package/dist/core/utils/internal/obj.mjs +0 -9
  315. package/dist/core/utils/internal/object.mjs +0 -29
  316. package/dist/core/utils/internal/query.mjs +0 -73
  317. package/dist/core/utils/internal/req.mjs +0 -35
  318. package/dist/core/utils/merge.d.mts +0 -14
  319. package/dist/core/utils/merge.mjs +0 -27
  320. package/dist/core/utils/middleware.d.mts +0 -14
  321. package/dist/core/utils/middleware.mjs +0 -12
  322. package/dist/core/utils/request.mjs +0 -35
  323. package/dist/core/utils/resolver.d.mts +0 -7
  324. package/dist/core/utils/resolver.mjs +0 -29
  325. package/dist/core/utils/runtime.d.mts +0 -7
  326. package/dist/core/utils/runtime.mjs +0 -20
  327. package/dist/core/utils/sanitize.mjs +0 -22
  328. package/dist/core/utils/schema.d.mts +0 -34
  329. package/dist/core/utils/schema.mjs +0 -33
  330. package/dist/core/utils/service.d.mts +0 -13
  331. package/dist/core/utils/service.mjs +0 -19
  332. package/dist/core/utils/shared.d.mts +0 -6
  333. package/dist/core/utils/shared.mjs +0 -7
  334. package/dist/core/utils/storage.d.mts +0 -24
  335. package/dist/core/utils/storage.mjs +0 -54
  336. package/dist/kit/add/add-commands.d.mts +0 -6
  337. package/dist/kit/add/add-commands.mjs +0 -12
  338. package/dist/kit/add/add-core-file.d.mts +0 -9
  339. package/dist/kit/add/add-core-file.mjs +0 -11
  340. package/dist/kit/add/add-imports.d.mts +0 -14
  341. package/dist/kit/add/add-imports.mjs +0 -56
  342. package/dist/kit/add/add-npm.d.mts +0 -14
  343. package/dist/kit/add/add-npm.mjs +0 -23
  344. package/dist/kit/define.d.mts +0 -28
  345. package/dist/kit/define.mjs +0 -25
  346. package/dist/kit/errors.d.mts +0 -6
  347. package/dist/kit/errors.mjs +0 -11
  348. package/dist/kit/esm.d.mts +0 -11
  349. package/dist/kit/esm.mjs +0 -21
  350. package/dist/kit/fs.d.mts +0 -4
  351. package/dist/kit/fs.mjs +0 -13
  352. package/dist/kit/function-utils.d.mts +0 -27
  353. package/dist/kit/function-utils.mjs +0 -75
  354. package/dist/kit/gen.d.mts +0 -5
  355. package/dist/kit/gen.mjs +0 -26
  356. package/dist/kit/hash.d.mts +0 -4
  357. package/dist/kit/hash.mjs +0 -10
  358. package/dist/kit/index.d.mts +0 -22
  359. package/dist/kit/index.mjs +0 -23
  360. package/dist/kit/isFramework.d.mts +0 -6
  361. package/dist/kit/isFramework.mjs +0 -21
  362. package/dist/kit/logger.d.mts +0 -6
  363. package/dist/kit/logger.mjs +0 -10
  364. package/dist/kit/migration.d.mts +0 -113
  365. package/dist/kit/migration.mjs +0 -301
  366. package/dist/kit/module.d.mts +0 -14
  367. package/dist/kit/module.mjs +0 -53
  368. package/dist/kit/path.d.mts +0 -7
  369. package/dist/kit/path.mjs +0 -26
  370. package/dist/kit/preset.d.mts +0 -8
  371. package/dist/kit/preset.mjs +0 -11
  372. package/dist/kit/resolve.d.mts +0 -37
  373. package/dist/kit/resolve.mjs +0 -82
  374. package/dist/kit/template.d.mts +0 -19
  375. package/dist/kit/template.mjs +0 -91
  376. package/dist/kit/useRequest.d.mts +0 -19
  377. package/dist/kit/useRequest.mjs +0 -63
  378. package/dist/kit/utils.d.mts +0 -34
  379. package/dist/kit/utils.mjs +0 -91
  380. package/dist/package.mjs +0 -176
  381. package/dist/presets/_all.gen.d.mts +0 -6
  382. package/dist/presets/_all.gen.mjs +0 -18
  383. package/dist/presets/_resolve.d.mts +0 -12
  384. package/dist/presets/_resolve.mjs +0 -57
  385. package/dist/presets/_types.gen.d.mts +0 -8
  386. package/dist/presets/_types.gen.mjs +0 -5
  387. package/dist/presets/h3/preset.d.mts +0 -6
  388. package/dist/presets/h3/preset.mjs +0 -35
  389. package/dist/presets/hono/preset.d.mts +0 -6
  390. package/dist/presets/hono/preset.mjs +0 -30
  391. package/dist/presets/index.d.mts +0 -3
  392. package/dist/presets/index.mjs +0 -3
  393. package/dist/presets/nitro/preset.d.mts +0 -6
  394. package/dist/presets/nitro/preset.mjs +0 -37
  395. package/dist/presets/npmpackage/preset.d.mts +0 -6
  396. package/dist/presets/npmpackage/preset.mjs +0 -29
  397. package/dist/presets/nuxt/preset.d.mts +0 -6
  398. package/dist/presets/nuxt/preset.mjs +0 -41
  399. package/dist/runtime/index.d.mts +0 -4
  400. package/dist/runtime/index.mjs +0 -5
  401. package/dist/runtime/internal/config.d.mts +0 -11
  402. package/dist/runtime/internal/config.mjs +0 -97
  403. package/dist/runtime/internal/debug.d.mts +0 -6
  404. package/dist/runtime/internal/debug.mjs +0 -11
  405. package/dist/runtime/internal/defu.d.mts +0 -4
  406. package/dist/runtime/internal/defu.mjs +0 -9
  407. package/dist/runtime/internal/index.d.mts +0 -7
  408. package/dist/runtime/internal/index.mjs +0 -8
  409. package/dist/runtime/internal/nitro.d.mts +0 -6
  410. package/dist/runtime/internal/nitro.mjs +0 -36
  411. package/dist/runtime/internal/nuxt.d.mts +0 -12
  412. package/dist/runtime/internal/nuxt.mjs +0 -16
  413. package/dist/runtime/internal/ofetch.d.mts +0 -8
  414. package/dist/runtime/internal/ofetch.mjs +0 -39
  415. package/dist/runtime/internal/plugin.d.mts +0 -7
  416. package/dist/runtime/internal/plugin.mjs +0 -8
  417. package/dist/types/cliConfig.d.mts +0 -288
  418. package/dist/types/cliConfig.mjs +0 -0
  419. package/dist/types/cliHooks.d.mts +0 -142
  420. package/dist/types/cliHooks.mjs +0 -0
  421. package/dist/types/compatibility.d.mts +0 -13
  422. package/dist/types/compatibility.mjs +0 -0
  423. package/dist/types/config.d.mts +0 -46
  424. package/dist/types/config.mjs +0 -0
  425. package/dist/types/dotenv.d.mts +0 -29
  426. package/dist/types/dotenv.mjs +0 -0
  427. package/dist/types/event.d.mts +0 -63
  428. package/dist/types/event.mjs +0 -0
  429. package/dist/types/global.d.mts +0 -24
  430. package/dist/types/global.mjs +0 -0
  431. package/dist/types/helper.d.mts +0 -25
  432. package/dist/types/helper.mjs +0 -0
  433. package/dist/types/hooks.d.mts +0 -37
  434. package/dist/types/hooks.mjs +0 -0
  435. package/dist/types/index.d.mts +0 -26
  436. package/dist/types/index.mjs +0 -0
  437. package/dist/types/kits.d.mts +0 -32
  438. package/dist/types/kits.mjs +0 -0
  439. package/dist/types/middleware.d.mts +0 -31
  440. package/dist/types/middleware.mjs +0 -0
  441. package/dist/types/module.d.mts +0 -102
  442. package/dist/types/module.mjs +0 -0
  443. package/dist/types/preset.d.mts +0 -20
  444. package/dist/types/preset.mjs +0 -0
  445. package/dist/types/route.d.mts +0 -59
  446. package/dist/types/route.mjs +0 -0
  447. package/dist/types/runtime/index.d.mts +0 -5
  448. package/dist/types/runtime/index.mjs +0 -0
  449. package/dist/types/runtime/nuxt.d.mts +0 -13
  450. package/dist/types/runtime/nuxt.mjs +0 -0
  451. package/dist/types/runtime/ofetch.d.mts +0 -14
  452. package/dist/types/runtime/ofetch.mjs +0 -0
  453. package/dist/types/runtime/plugin.d.mts +0 -8
  454. package/dist/types/runtime/plugin.mjs +0 -0
  455. package/dist/types/runtime/silgi.d.mts +0 -11
  456. package/dist/types/runtime/silgi.mjs +0 -0
  457. package/dist/types/schema.d.mts +0 -86
  458. package/dist/types/schema.mjs +0 -0
  459. package/dist/types/service.d.mts +0 -102
  460. package/dist/types/service.mjs +0 -0
  461. package/dist/types/shared.d.mts +0 -19
  462. package/dist/types/shared.mjs +0 -0
  463. package/dist/types/silgi.d.mts +0 -71
  464. package/dist/types/silgi.mjs +0 -0
  465. package/dist/types/silgiCLI.d.mts +0 -118
  466. package/dist/types/silgiCLI.mjs +0 -0
  467. package/dist/types/standard-schema.d.mts +0 -61
  468. package/dist/types/standard-schema.mjs +0 -0
  469. package/dist/types/storage.d.mts +0 -30
  470. package/dist/types/storage.mjs +0 -0
  471. package/dist/types/tree-kill.d.mts +0 -18
  472. package/dist/types/tree-kill.mjs +0 -0
  473. package/lib/config.d.mts +0 -7
  474. package/lib/config.mjs +0 -5
  475. package/lib/meta.d.mts +0 -4
  476. package/lib/meta.mjs +0 -6
  477. package/lib/runtime-meta.d.mts +0 -4
  478. package/lib/runtime-meta.mjs +0 -32
@@ -0,0 +1,124 @@
1
+ //#region src/codegen/parse.d.ts
2
+ /**
3
+ * OpenAPI 3.x spec parser.
4
+ *
5
+ * Walks an OpenAPI document and extracts operations with their
6
+ * parameters, request body, responses, and error definitions.
7
+ */
8
+ interface OpenAPISpec {
9
+ openapi: string;
10
+ info: {
11
+ title: string;
12
+ version: string;
13
+ description?: string;
14
+ };
15
+ paths?: Record<string, PathItem>;
16
+ components?: {
17
+ schemas?: Record<string, JsonSchema>;
18
+ securitySchemes?: Record<string, unknown>;
19
+ };
20
+ tags?: {
21
+ name: string;
22
+ description?: string;
23
+ }[];
24
+ servers?: {
25
+ url: string;
26
+ description?: string;
27
+ }[];
28
+ }
29
+ interface PathItem {
30
+ get?: OperationObject;
31
+ post?: OperationObject;
32
+ put?: OperationObject;
33
+ patch?: OperationObject;
34
+ delete?: OperationObject;
35
+ head?: OperationObject;
36
+ options?: OperationObject;
37
+ trace?: OperationObject;
38
+ parameters?: ParameterObject[];
39
+ }
40
+ interface OperationObject {
41
+ operationId?: string;
42
+ summary?: string;
43
+ description?: string;
44
+ tags?: string[];
45
+ deprecated?: boolean;
46
+ parameters?: ParameterObject[];
47
+ requestBody?: RequestBodyObject;
48
+ responses?: Record<string, ResponseObject>;
49
+ security?: Record<string, string[]>[];
50
+ }
51
+ interface ParameterObject {
52
+ name: string;
53
+ in: 'path' | 'query' | 'header' | 'cookie';
54
+ required?: boolean;
55
+ schema?: JsonSchema;
56
+ description?: string;
57
+ deprecated?: boolean;
58
+ $ref?: string;
59
+ }
60
+ interface RequestBodyObject {
61
+ required?: boolean;
62
+ content?: Record<string, {
63
+ schema?: JsonSchema;
64
+ }>;
65
+ description?: string;
66
+ $ref?: string;
67
+ }
68
+ interface ResponseObject {
69
+ description?: string;
70
+ content?: Record<string, {
71
+ schema?: JsonSchema;
72
+ }>;
73
+ $ref?: string;
74
+ }
75
+ interface JsonSchema {
76
+ [key: string]: unknown;
77
+ }
78
+ interface ParsedOperation {
79
+ /** e.g. "getUser" */
80
+ operationId: string;
81
+ /** HTTP method uppercase */
82
+ method: string;
83
+ /** OpenAPI path, e.g. "/users/{id}" */
84
+ path: string;
85
+ /** Silgi path, e.g. "/users/:id" */
86
+ silgiPath: string;
87
+ summary?: string;
88
+ description?: string;
89
+ tags: string[];
90
+ deprecated: boolean;
91
+ /** Path parameters */
92
+ pathParams: ParsedParam[];
93
+ /** Query parameters */
94
+ queryParams: ParsedParam[];
95
+ /** Request body JSON Schema (if any) */
96
+ body: JsonSchema | null;
97
+ bodyRequired: boolean;
98
+ /** Success response schema */
99
+ successSchema: JsonSchema | null;
100
+ successStatus: number;
101
+ /** Error responses: status code → schema */
102
+ errors: Map<number, {
103
+ description: string;
104
+ schema: JsonSchema | null;
105
+ }>;
106
+ /** Security requirement (false = public) */
107
+ security: string[] | false | null;
108
+ }
109
+ interface ParsedParam {
110
+ name: string;
111
+ required: boolean;
112
+ schema: JsonSchema;
113
+ description?: string;
114
+ }
115
+ declare function parseOpenAPI(spec: OpenAPISpec): {
116
+ operations: ParsedOperation[];
117
+ components: Record<string, JsonSchema>;
118
+ tags: {
119
+ name: string;
120
+ description?: string;
121
+ }[];
122
+ };
123
+ //#endregion
124
+ export { OpenAPISpec, ParsedOperation, parseOpenAPI };
@@ -0,0 +1,135 @@
1
+ //#region src/codegen/parse.ts
2
+ const HTTP_METHODS = [
3
+ "get",
4
+ "post",
5
+ "put",
6
+ "patch",
7
+ "delete",
8
+ "head",
9
+ "options",
10
+ "trace"
11
+ ];
12
+ function parseOpenAPI(spec) {
13
+ const operations = [];
14
+ const components = spec.components?.schemas ?? {};
15
+ const tags = spec.tags ?? [];
16
+ if (!spec.paths) return {
17
+ operations,
18
+ components,
19
+ tags
20
+ };
21
+ for (const [path, pathItem] of Object.entries(spec.paths)) {
22
+ const sharedParams = resolveParams(pathItem.parameters ?? [], spec);
23
+ for (const method of HTTP_METHODS) {
24
+ const op = pathItem[method];
25
+ if (!op) continue;
26
+ const allParams = mergeParams(sharedParams, resolveParams(op.parameters ?? [], spec));
27
+ const pathParams = allParams.filter((p) => p.in === "path");
28
+ const queryParams = allParams.filter((p) => p.in === "query");
29
+ const bodyObj = op.requestBody ? resolveRef(op.requestBody, spec) : null;
30
+ const bodySchema = bodyObj ? extractBodySchema(bodyObj) : null;
31
+ const { successSchema, successStatus, errors } = parseResponses(op.responses ?? {}, spec);
32
+ let security = null;
33
+ if (op.security) if (op.security.length === 0) security = false;
34
+ else security = op.security.flatMap((s) => Object.keys(s));
35
+ operations.push({
36
+ operationId: op.operationId ?? generateOperationId(method, path),
37
+ method: method.toUpperCase(),
38
+ path,
39
+ silgiPath: toSilgiPath(path),
40
+ summary: op.summary,
41
+ description: op.description,
42
+ tags: op.tags ?? [],
43
+ deprecated: op.deprecated ?? false,
44
+ pathParams: pathParams.map((p) => ({
45
+ name: p.name,
46
+ required: p.required ?? true,
47
+ schema: p.schema ?? { type: "string" },
48
+ description: p.description
49
+ })),
50
+ queryParams: queryParams.map((p) => ({
51
+ name: p.name,
52
+ required: p.required ?? false,
53
+ schema: p.schema ?? { type: "string" },
54
+ description: p.description
55
+ })),
56
+ body: bodySchema,
57
+ bodyRequired: bodyObj?.required ?? false,
58
+ successSchema,
59
+ successStatus,
60
+ errors,
61
+ security
62
+ });
63
+ }
64
+ }
65
+ return {
66
+ operations,
67
+ components,
68
+ tags
69
+ };
70
+ }
71
+ /**
72
+ * Convert OpenAPI path to Silgi path.
73
+ * `/users/{id}/posts/{postId}` → `/users/:id/posts/:postId`
74
+ */
75
+ function toSilgiPath(path) {
76
+ return path.replace(/\{([^}]+)\}/g, ":$1");
77
+ }
78
+ /**
79
+ * Generate a fallback operationId from method + path.
80
+ * `GET /users/{id}` → `getUsers_id`
81
+ */
82
+ function generateOperationId(method, path) {
83
+ const camel = path.replace(/\{([^}]+)\}/g, "$1").split("/").filter(Boolean).map((s, i) => i === 0 ? s : s[0].toUpperCase() + s.slice(1)).join("");
84
+ return method + camel[0].toUpperCase() + camel.slice(1);
85
+ }
86
+ function resolveRef(obj, spec) {
87
+ if (!obj || typeof obj !== "object" || !("$ref" in obj) || !obj.$ref) return obj;
88
+ const parts = obj.$ref.replace("#/", "").split("/");
89
+ let current = spec;
90
+ for (const part of parts) current = current?.[part];
91
+ return current ?? obj;
92
+ }
93
+ function resolveParams(params, spec) {
94
+ return params.map((p) => resolveRef(p, spec));
95
+ }
96
+ function mergeParams(shared, op) {
97
+ const map = /* @__PURE__ */ new Map();
98
+ for (const p of shared) map.set(`${p.in}:${p.name}`, p);
99
+ for (const p of op) map.set(`${p.in}:${p.name}`, p);
100
+ return [...map.values()];
101
+ }
102
+ function extractBodySchema(body) {
103
+ if (!body.content) return null;
104
+ return (body.content["application/json"] ?? body.content["*/*"])?.schema ?? null;
105
+ }
106
+ function parseResponses(responses, spec) {
107
+ let successSchema = null;
108
+ let successStatus = 200;
109
+ const errors = /* @__PURE__ */ new Map();
110
+ for (const [statusCode, rawResp] of Object.entries(responses)) {
111
+ const resp = resolveRef(rawResp, spec);
112
+ const status = statusCode === "default" ? 500 : Number.parseInt(statusCode, 10);
113
+ const schema = extractResponseSchema(resp);
114
+ if (status >= 200 && status < 300) {
115
+ if (!successSchema) {
116
+ successSchema = schema;
117
+ successStatus = status;
118
+ }
119
+ } else if (status >= 400) errors.set(status, {
120
+ description: resp.description ?? "",
121
+ schema
122
+ });
123
+ }
124
+ return {
125
+ successSchema,
126
+ successStatus,
127
+ errors
128
+ };
129
+ }
130
+ function extractResponseSchema(resp) {
131
+ if (!resp.content) return null;
132
+ return (resp.content["application/json"] ?? resp.content["*/*"])?.schema ?? null;
133
+ }
134
+ //#endregion
135
+ export { parseOpenAPI };
@@ -0,0 +1,21 @@
1
+ //#region src/codegen/preserve.d.ts
2
+ /**
3
+ * Smart route preservation — uses oxc-parser to extract the $resolve() body
4
+ * from an existing route file so it survives regeneration.
5
+ *
6
+ * The strategy: parse the existing file's AST, find the .$resolve(fn) call,
7
+ * extract the fn source code by span, then splice it into the newly generated file.
8
+ */
9
+ /**
10
+ * Extract the $resolve() argument source code from a route file.
11
+ * Returns the raw source string of the resolve function, or null if not found
12
+ * or if the resolve body is a stub (contains "Not implemented").
13
+ */
14
+ declare function extractResolveBody(source: string): string | null;
15
+ /**
16
+ * Splice a preserved resolve body into a newly generated route file.
17
+ * Replaces the generated stub $resolve(...) argument with the preserved one.
18
+ */
19
+ declare function spliceResolveBody(generatedSource: string, preservedBody: string): string;
20
+ //#endregion
21
+ export { extractResolveBody, spliceResolveBody };
@@ -0,0 +1,62 @@
1
+ import { parseSync } from "oxc-parser";
2
+ //#region src/codegen/preserve.ts
3
+ /**
4
+ * Smart route preservation — uses oxc-parser to extract the $resolve() body
5
+ * from an existing route file so it survives regeneration.
6
+ *
7
+ * The strategy: parse the existing file's AST, find the .$resolve(fn) call,
8
+ * extract the fn source code by span, then splice it into the newly generated file.
9
+ */
10
+ /**
11
+ * Extract the $resolve() argument source code from a route file.
12
+ * Returns the raw source string of the resolve function, or null if not found
13
+ * or if the resolve body is a stub (contains "Not implemented").
14
+ */
15
+ function extractResolveBody(source) {
16
+ try {
17
+ const { program } = parseSync("route.ts", source);
18
+ const exportDecl = program.body.find((n) => n.type === "ExportNamedDeclaration" && n.declaration?.type === "VariableDeclaration");
19
+ if (!exportDecl) return null;
20
+ const init = exportDecl.declaration.declarations[0]?.init;
21
+ if (!init) return null;
22
+ const resolveCall = findResolveCall(init);
23
+ if (!resolveCall || !resolveCall.arguments[0]) return null;
24
+ const arg = resolveCall.arguments[0];
25
+ const body = source.slice(arg.start, arg.end);
26
+ if (body.includes("Not implemented")) return null;
27
+ return body;
28
+ } catch {
29
+ return null;
30
+ }
31
+ }
32
+ /**
33
+ * Splice a preserved resolve body into a newly generated route file.
34
+ * Replaces the generated stub $resolve(...) argument with the preserved one.
35
+ */
36
+ function spliceResolveBody(generatedSource, preservedBody) {
37
+ try {
38
+ const { program } = parseSync("route.ts", generatedSource);
39
+ const exportDecl = program.body.find((n) => n.type === "ExportNamedDeclaration" && n.declaration?.type === "VariableDeclaration");
40
+ if (!exportDecl) return generatedSource;
41
+ const init = exportDecl.declaration.declarations[0]?.init;
42
+ if (!init) return generatedSource;
43
+ const resolveCall = findResolveCall(init);
44
+ if (!resolveCall || !resolveCall.arguments[0]) return generatedSource;
45
+ const arg = resolveCall.arguments[0];
46
+ return generatedSource.slice(0, arg.start) + preservedBody + generatedSource.slice(arg.end);
47
+ } catch {
48
+ return generatedSource;
49
+ }
50
+ }
51
+ /** Walk a chained CallExpression to find .$resolve(...) */
52
+ function findResolveCall(node) {
53
+ if (!node) return null;
54
+ if (node.type === "CallExpression") {
55
+ if (node.callee?.type === "MemberExpression" && node.callee.property?.name === "$resolve") return node;
56
+ return findResolveCall(node.callee?.object);
57
+ }
58
+ if (node.type === "MemberExpression") return findResolveCall(node.object);
59
+ return null;
60
+ }
61
+ //#endregion
62
+ export { extractResolveBody, spliceResolveBody };
@@ -0,0 +1,57 @@
1
+ import { SchemaEmitter, SchemaTarget } from "./emitters.mjs";
2
+
3
+ //#region src/codegen/schema-to-code.d.ts
4
+ interface JsonSchema {
5
+ type?: string | string[];
6
+ properties?: Record<string, JsonSchema>;
7
+ required?: string[];
8
+ items?: JsonSchema;
9
+ additionalProperties?: boolean | JsonSchema;
10
+ allOf?: JsonSchema[];
11
+ anyOf?: JsonSchema[];
12
+ oneOf?: JsonSchema[];
13
+ not?: JsonSchema;
14
+ enum?: unknown[];
15
+ const?: unknown;
16
+ $ref?: string;
17
+ format?: string;
18
+ pattern?: string;
19
+ minimum?: number;
20
+ maximum?: number;
21
+ exclusiveMinimum?: number | boolean;
22
+ exclusiveMaximum?: number | boolean;
23
+ minLength?: number;
24
+ maxLength?: number;
25
+ minItems?: number;
26
+ maxItems?: number;
27
+ uniqueItems?: boolean;
28
+ default?: unknown;
29
+ nullable?: boolean;
30
+ description?: string;
31
+ deprecated?: boolean;
32
+ title?: string;
33
+ readOnly?: boolean;
34
+ writeOnly?: boolean;
35
+ discriminator?: {
36
+ propertyName: string;
37
+ mapping?: Record<string, string>;
38
+ };
39
+ [key: string]: unknown;
40
+ }
41
+ interface SchemaContext {
42
+ /** Collected component schema names that need to be emitted */
43
+ refs: Set<string>;
44
+ /** All component schemas from the spec */
45
+ components: Record<string, JsonSchema>;
46
+ /** Already-emitted schema names (prevents infinite recursion) */
47
+ emitted: Set<string>;
48
+ /** Active emitter for the target library */
49
+ emitter: SchemaEmitter;
50
+ }
51
+ declare function createSchemaContext(target: SchemaTarget, components?: Record<string, JsonSchema>): SchemaContext;
52
+ /**
53
+ * Convert a JSON Schema to a validation library code string.
54
+ */
55
+ declare function jsonSchemaToCode(schema: JsonSchema, ctx: SchemaContext): string;
56
+ //#endregion
57
+ export { SchemaContext, createSchemaContext, jsonSchemaToCode };
@@ -0,0 +1,167 @@
1
+ import { getEmitter } from "./emitters.mjs";
2
+ //#region src/codegen/schema-to-code.ts
3
+ /**
4
+ * JSON Schema → validation library code converter.
5
+ *
6
+ * Generic converter that delegates to a SchemaEmitter for library-specific output.
7
+ * Supports Zod, Valibot, and ArkType via the emitter pattern.
8
+ */
9
+ function createSchemaContext(target, components = {}) {
10
+ return {
11
+ refs: /* @__PURE__ */ new Set(),
12
+ components,
13
+ emitted: /* @__PURE__ */ new Set(),
14
+ emitter: getEmitter(target)
15
+ };
16
+ }
17
+ /**
18
+ * Convert a JSON Schema to a validation library code string.
19
+ */
20
+ function jsonSchemaToCode(schema, ctx) {
21
+ const e = ctx.emitter;
22
+ if (!schema || typeof schema !== "object") return e.unknown();
23
+ if (schema.$ref) {
24
+ const refName = resolveRefName(schema.$ref);
25
+ ctx.refs.add(refName);
26
+ return refName + "Schema";
27
+ }
28
+ if (schema.const !== void 0) return e.literal(schema.const);
29
+ if (schema.enum) {
30
+ if (schema.enum.length === 1) return e.literal(schema.enum[0]);
31
+ return e.enum(schema.enum);
32
+ }
33
+ if (schema.allOf?.length) {
34
+ if (schema.allOf.length === 1) return jsonSchemaToCode(schema.allOf[0], ctx);
35
+ const parts = schema.allOf.map((s) => jsonSchemaToCode(s, ctx));
36
+ return e.intersection(parts);
37
+ }
38
+ if (schema.oneOf?.length || schema.anyOf?.length) {
39
+ const variants = schema.oneOf ?? schema.anyOf;
40
+ if (variants.length === 1) return jsonSchemaToCode(variants[0], ctx);
41
+ const members = variants.map((v) => jsonSchemaToCode(v, ctx));
42
+ if (schema.discriminator?.propertyName) return e.discriminatedUnion(schema.discriminator.propertyName, members);
43
+ return e.union(members);
44
+ }
45
+ const types = Array.isArray(schema.type) ? schema.type : schema.type ? [schema.type] : [];
46
+ const isNullable = schema.nullable || types.includes("null");
47
+ const nonNullTypes = types.filter((t) => t !== "null");
48
+ if (nonNullTypes.length > 1) {
49
+ const members = nonNullTypes.map((t) => jsonSchemaToCode({
50
+ ...schema,
51
+ type: t
52
+ }, ctx));
53
+ let result = e.union(members);
54
+ if (isNullable) result = e.nullable(result);
55
+ return result;
56
+ }
57
+ const type = nonNullTypes[0] ?? (types.length === 0 ? void 0 : nonNullTypes[0]);
58
+ let result;
59
+ switch (type) {
60
+ case "string":
61
+ result = buildString(schema, e);
62
+ break;
63
+ case "number":
64
+ case "integer":
65
+ result = buildNumber(schema, type, e);
66
+ break;
67
+ case "boolean":
68
+ result = e.boolean();
69
+ break;
70
+ case "null": return e.null();
71
+ case "object":
72
+ result = buildObject(schema, ctx);
73
+ break;
74
+ case "array":
75
+ result = buildArray(schema, ctx);
76
+ break;
77
+ default: if (schema.properties) result = buildObject(schema, ctx);
78
+ else result = e.unknown();
79
+ }
80
+ if (isNullable && type !== "null") result = e.nullable(result);
81
+ if (schema.default !== void 0) result = e.default(result, schema.default);
82
+ if (schema.description) result = e.describe(result, schema.description);
83
+ return result;
84
+ }
85
+ function buildString(schema, e) {
86
+ if (schema.format === "email") return applyStringConstraints(e.email(), schema, e);
87
+ if (schema.format === "uri" || schema.format === "url") return applyStringConstraints(e.url(), schema, e);
88
+ if (schema.format === "uuid") return applyStringConstraints(e.uuid(), schema, e);
89
+ if (schema.format === "date-time") return applyStringConstraints(e.datetime(), schema, e);
90
+ if (schema.format === "date") return applyStringConstraints(e.date(), schema, e);
91
+ if (schema.format === "ipv4") return applyStringConstraints(e.ipv4(), schema, e);
92
+ if (schema.format === "ipv6") return applyStringConstraints(e.ipv6(), schema, e);
93
+ return applyStringConstraints(e.string(), schema, e);
94
+ }
95
+ function applyStringConstraints(base, schema, e) {
96
+ let s = base;
97
+ if (schema.minLength != null) s = e.min(s, schema.minLength);
98
+ if (schema.maxLength != null) s = e.max(s, schema.maxLength);
99
+ if (schema.pattern) s = e.regex(s, schema.pattern);
100
+ return s;
101
+ }
102
+ function buildNumber(schema, type, e) {
103
+ let s = type === "integer" ? e.int() : e.number();
104
+ if (schema.minimum != null) s = e.min(s, schema.minimum);
105
+ if (schema.maximum != null) s = e.max(s, schema.maximum);
106
+ if (typeof schema.exclusiveMinimum === "number") s = e.gt(s, schema.exclusiveMinimum);
107
+ if (typeof schema.exclusiveMaximum === "number") s = e.lt(s, schema.exclusiveMaximum);
108
+ return s;
109
+ }
110
+ function buildObject(schema, ctx) {
111
+ const e = ctx.emitter;
112
+ if (!schema.properties && schema.additionalProperties) {
113
+ const valueSchema = typeof schema.additionalProperties === "object" ? jsonSchemaToCode(schema.additionalProperties, ctx) : e.unknown();
114
+ return e.record(e.string(), valueSchema);
115
+ }
116
+ if (!schema.properties) {
117
+ if (schema.additionalProperties === false) return e.object([]);
118
+ return e.record(e.string(), e.unknown());
119
+ }
120
+ const required = new Set(schema.required ?? []);
121
+ const entries = Object.entries(schema.properties).map(([key, prop]) => ({
122
+ key,
123
+ value: jsonSchemaToCode(prop, ctx),
124
+ required: required.has(key)
125
+ }));
126
+ return e.object(entries);
127
+ }
128
+ function buildArray(schema, ctx) {
129
+ const e = ctx.emitter;
130
+ const items = schema.items ? jsonSchemaToCode(schema.items, ctx) : e.unknown();
131
+ let s = e.array(items);
132
+ if (schema.minItems != null) s = e.min(s, schema.minItems);
133
+ if (schema.maxItems != null) s = e.max(s, schema.maxItems);
134
+ return s;
135
+ }
136
+ function resolveRefName(ref) {
137
+ const parts = ref.split("/");
138
+ return parts[parts.length - 1];
139
+ }
140
+ /**
141
+ * Generate all referenced component schemas as declarations.
142
+ * Recursively resolves nested refs.
143
+ */
144
+ function emitComponentSchemas(ctx) {
145
+ const lines = [];
146
+ let toProcess = [...ctx.refs];
147
+ while (toProcess.length > 0) {
148
+ const next = [];
149
+ for (const name of toProcess) {
150
+ if (ctx.emitted.has(name)) continue;
151
+ ctx.emitted.add(name);
152
+ const schema = ctx.components[name];
153
+ if (!schema) {
154
+ lines.push(`// WARNING: Missing component schema "${name}"`);
155
+ lines.push(`export const ${name}Schema = ${ctx.emitter.unknown()}`);
156
+ continue;
157
+ }
158
+ const code = jsonSchemaToCode(schema, ctx);
159
+ lines.push(`export const ${name}Schema = ${code}`);
160
+ for (const ref of ctx.refs) if (!ctx.emitted.has(ref)) next.push(ref);
161
+ }
162
+ toProcess = next;
163
+ }
164
+ return lines.join("\n\n");
165
+ }
166
+ //#endregion
167
+ export { createSchemaContext, emitComponentSchemas, jsonSchemaToCode };
@@ -0,0 +1,46 @@
1
+ import { ProcedureDef } from "./types.mjs";
2
+
3
+ //#region src/compile.d.ts
4
+ /**
5
+ * Compiled pipeline — called per request.
6
+ * May return sync value OR Promise — caller uses instanceof check.
7
+ */
8
+ type CompiledHandler = (ctx: Record<string, unknown>, rawInput: unknown, signal: AbortSignal) => unknown | Promise<unknown>;
9
+ /**
10
+ * Compile a procedure into the fastest possible handler.
11
+ *
12
+ * Optimizations applied:
13
+ * - Guard count specialization (unrolled for 0-4)
14
+ * - Separate fast path for no-wrap case (zero closures per request)
15
+ * - Pre-computed fail function (singleton per procedure)
16
+ * - Sync fast path when all guards are sync
17
+ */
18
+ declare function compileProcedure(procedure: ProcedureDef): CompiledHandler;
19
+ interface CompiledRoute {
20
+ handler: CompiledHandler;
21
+ /** Pre-computed Cache-Control header value, or undefined if no caching */
22
+ cacheControl?: string;
23
+ /** Procedure is accessible over WebSocket */
24
+ ws?: boolean;
25
+ /** Skip body parsing — procedure receives raw request (e.g. catch-all proxy) */
26
+ passthrough?: boolean;
27
+ /** HTTP method this route is registered for (uppercase) */
28
+ method: string;
29
+ }
30
+ /** Match result from the router */
31
+ interface MatchedRoute<T = unknown> {
32
+ data: T;
33
+ params?: Record<string, string>;
34
+ }
35
+ /** Compiled router function — returns matched route + params */
36
+ type CompiledRouterFn = (method: string, path: string) => MatchedRoute<CompiledRoute> | undefined;
37
+ /**
38
+ * Compile a router tree into a rou3 radix router.
39
+ *
40
+ * Powered by rou3 (unjs) — battle-tested, fast, minimal.
41
+ */
42
+ declare function compileRouter(def: Record<string, unknown>): CompiledRouterFn;
43
+ /** Acquire a context object from the pool (or create one). */
44
+ declare function createContext(): Record<string, unknown>;
45
+ //#endregion
46
+ export { compileProcedure, compileRouter, createContext };