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,345 @@
1
+ //#region src/integrations/zod/converter.ts
2
+ /**
3
+ * Composite converter — tries each converter in order.
4
+ */
5
+ var CompositeSchemaConverter = class {
6
+ #converters;
7
+ constructor(converters) {
8
+ this.#converters = converters;
9
+ }
10
+ convert(schema, options) {
11
+ if (!schema) return [false, {}];
12
+ for (const converter of this.#converters) if (converter.condition(schema)) return converter.convert(schema, options);
13
+ return [false, {}];
14
+ }
15
+ };
16
+ /**
17
+ * Zod v4 → JSON Schema converter.
18
+ */
19
+ var ZodSchemaConverter = class {
20
+ #maxDepth;
21
+ constructor(options) {
22
+ this.#maxDepth = options?.maxDepth ?? 10;
23
+ }
24
+ condition(schema) {
25
+ return schema["~standard"]?.vendor === "zod";
26
+ }
27
+ convert(schema, options) {
28
+ return this.#convert(schema, options, 0);
29
+ }
30
+ #convert(schema, options, depth) {
31
+ if (depth > this.#maxDepth) return [true, {}];
32
+ const zod = schema._zod;
33
+ const def = zod?.def ?? schema._def;
34
+ const bag = zod?.bag;
35
+ if (!def) return [true, {}];
36
+ switch (def.type ?? def.typeName) {
37
+ case "string":
38
+ case "ZodString": return [true, this.#convertString(def, bag)];
39
+ case "number":
40
+ case "ZodNumber": {
41
+ const result = this.#convertNumber(def, bag);
42
+ if (bag?.format === "safeint" || this.#hasIntCheck(def)) result.type = "integer";
43
+ return [true, result];
44
+ }
45
+ case "int": return [true, {
46
+ ...this.#convertNumber(def, bag),
47
+ type: "integer"
48
+ }];
49
+ case "boolean":
50
+ case "ZodBoolean": return [true, { type: "boolean" }];
51
+ case "bigint":
52
+ case "ZodBigInt": return [true, {
53
+ type: "string",
54
+ pattern: "^-?[0-9]+$",
55
+ "x-native-type": "bigint"
56
+ }];
57
+ case "date":
58
+ case "ZodDate": return [true, {
59
+ type: "string",
60
+ format: "date-time",
61
+ "x-native-type": "date"
62
+ }];
63
+ case "symbol":
64
+ case "ZodSymbol": return [true, {}];
65
+ case "undefined":
66
+ case "ZodUndefined": return [false, { not: {} }];
67
+ case "null":
68
+ case "ZodNull": return [true, { type: "null" }];
69
+ case "void":
70
+ case "ZodVoid": return [false, { type: "null" }];
71
+ case "any":
72
+ case "ZodAny": return [true, {}];
73
+ case "unknown":
74
+ case "ZodUnknown": return [true, {}];
75
+ case "never":
76
+ case "ZodNever": return [true, { not: {} }];
77
+ case "nan":
78
+ case "ZodNaN": return options.strategy === "input" ? [true, { not: {} }] : [true, { type: "null" }];
79
+ case "literal":
80
+ case "ZodLiteral": {
81
+ const values = def.values ?? [def.value];
82
+ return [true, values.length === 1 ? { const: values[0] } : { enum: values }];
83
+ }
84
+ case "enum":
85
+ case "ZodEnum": {
86
+ const entries = def.entries;
87
+ return [true, { enum: Array.isArray(def.values) ? def.values : entries ? Object.values(entries) : [] }];
88
+ }
89
+ case "nativeEnum":
90
+ case "ZodNativeEnum": return [true, { enum: Object.values(def.values ?? def.entries) }];
91
+ case "array":
92
+ case "ZodArray": {
93
+ const inner = def.element ?? def.type;
94
+ if (!inner) return [true, { type: "array" }];
95
+ const [, itemSchema] = this.#convert(inner, options, depth + 1);
96
+ const result = {
97
+ type: "array",
98
+ items: itemSchema
99
+ };
100
+ if (bag?.minimum != null) result.minItems = bag.minimum;
101
+ if (bag?.maximum != null) result.maxItems = bag.maximum;
102
+ if (def.minLength != null) result.minItems ??= def.minLength.value ?? def.minLength;
103
+ if (def.maxLength != null) result.maxItems ??= def.maxLength.value ?? def.maxLength;
104
+ return [true, result];
105
+ }
106
+ case "object":
107
+ case "ZodObject": {
108
+ const shape = def.shape ?? (typeof schema.shape === "function" ? schema.shape() : schema.shape);
109
+ if (!shape) return [true, { type: "object" }];
110
+ const properties = {};
111
+ const required = [];
112
+ for (const [key, value] of Object.entries(shape)) {
113
+ const [isRequired, propSchema] = this.#convert(value, options, depth + 1);
114
+ properties[key] = propSchema;
115
+ if (isRequired) required.push(key);
116
+ }
117
+ const result = {
118
+ type: "object",
119
+ properties
120
+ };
121
+ if (required.length > 0) result.required = required;
122
+ if (def.catchall) {
123
+ const [, catchSchema] = this.#convert(def.catchall, options, depth + 1);
124
+ result.additionalProperties = catchSchema;
125
+ } else if (def.unknownKeys === "strict") result.additionalProperties = false;
126
+ return [true, result];
127
+ }
128
+ case "union":
129
+ case "ZodUnion":
130
+ case "ZodDiscriminatedUnion": {
131
+ const unionOptions = def.options ?? def.members;
132
+ if (!Array.isArray(unionOptions)) return [true, {}];
133
+ return [true, { anyOf: unionOptions.map((o) => this.#convert(o, options, depth + 1)).map(([, s]) => s) }];
134
+ }
135
+ case "intersection":
136
+ case "ZodIntersection": {
137
+ const [, left] = this.#convert(def.left, options, depth + 1);
138
+ const [, right] = this.#convert(def.right, options, depth + 1);
139
+ return [true, { allOf: [left, right] }];
140
+ }
141
+ case "tuple":
142
+ case "ZodTuple": {
143
+ const result = {
144
+ type: "array",
145
+ prefixItems: (def.items ?? def.types ?? []).map((t) => this.#convert(t, options, depth + 1)[1])
146
+ };
147
+ if (def.rest) result.items = this.#convert(def.rest, options, depth + 1)[1];
148
+ return [true, result];
149
+ }
150
+ case "record":
151
+ case "ZodRecord": {
152
+ const [, valSchema] = this.#convert(def.valueType ?? def.element, options, depth + 1);
153
+ return [true, {
154
+ type: "object",
155
+ additionalProperties: valSchema
156
+ }];
157
+ }
158
+ case "map":
159
+ case "ZodMap": {
160
+ const [, keySchema] = this.#convert(def.keyType, options, depth + 1);
161
+ const [, valSchema] = this.#convert(def.valueType, options, depth + 1);
162
+ return [true, {
163
+ type: "array",
164
+ items: {
165
+ type: "array",
166
+ prefixItems: [keySchema, valSchema]
167
+ },
168
+ "x-native-type": "map"
169
+ }];
170
+ }
171
+ case "set":
172
+ case "ZodSet": {
173
+ const [, itemSchema] = this.#convert(def.valueType ?? def.element, options, depth + 1);
174
+ return [true, {
175
+ type: "array",
176
+ items: itemSchema,
177
+ uniqueItems: true,
178
+ "x-native-type": "set"
179
+ }];
180
+ }
181
+ case "optional":
182
+ case "ZodOptional": {
183
+ const inner = def.innerType ?? def.wrapped;
184
+ const [, innerSchema] = this.#convert(inner, options, depth + 1);
185
+ return [false, innerSchema];
186
+ }
187
+ case "nullable":
188
+ case "ZodNullable": {
189
+ const inner = def.innerType ?? def.wrapped;
190
+ const [req, innerSchema] = this.#convert(inner, options, depth + 1);
191
+ return [req, { anyOf: [innerSchema, { type: "null" }] }];
192
+ }
193
+ case "default":
194
+ case "ZodDefault": {
195
+ const inner = def.innerType ?? def.wrapped;
196
+ const [, innerSchema] = this.#convert(inner, options, depth + 1);
197
+ const defaultValue = typeof def.defaultValue === "function" ? def.defaultValue() : def.defaultValue;
198
+ return [false, {
199
+ ...innerSchema,
200
+ default: defaultValue
201
+ }];
202
+ }
203
+ case "readonly":
204
+ case "ZodReadonly": {
205
+ const inner = def.innerType ?? def.wrapped;
206
+ const [req, innerSchema] = this.#convert(inner, options, depth + 1);
207
+ return [req, {
208
+ ...innerSchema,
209
+ readOnly: true
210
+ }];
211
+ }
212
+ case "catch":
213
+ case "ZodCatch": {
214
+ const inner = def.innerType ?? def.wrapped;
215
+ return this.#convert(inner, options, depth + 1);
216
+ }
217
+ case "brand":
218
+ case "ZodBranded": {
219
+ const inner = def.type ?? def.wrapped;
220
+ return this.#convert(inner, options, depth + 1);
221
+ }
222
+ case "lazy":
223
+ case "ZodLazy": {
224
+ const getter = def.getter ?? def.get;
225
+ if (typeof getter === "function") return this.#convert(getter(), options, depth + 1);
226
+ return [true, {}];
227
+ }
228
+ case "promise":
229
+ case "ZodPromise": {
230
+ const inner = def.type ?? def.wrapped;
231
+ return this.#convert(inner, options, depth + 1);
232
+ }
233
+ case "transform":
234
+ case "ZodEffects": {
235
+ const inner = def.schema ?? def.in ?? def.wrapped;
236
+ if (!inner) return [true, {}];
237
+ if (options.strategy === "input") return this.#convert(inner, options, depth + 1);
238
+ return [true, {}];
239
+ }
240
+ case "pipe":
241
+ case "ZodPipeline":
242
+ if (options.strategy === "input") return this.#convert(def.in ?? def.from, options, depth + 1);
243
+ return this.#convert(def.out ?? def.to, options, depth + 1);
244
+ default: return [true, {}];
245
+ }
246
+ }
247
+ #convertString(def, bag) {
248
+ const result = { type: "string" };
249
+ const checks = def.checks ?? [];
250
+ bag = bag ?? {};
251
+ if (bag.minimum != null) result.minLength = bag.minimum;
252
+ if (bag.maximum != null) result.maxLength = bag.maximum;
253
+ if (bag.patterns) {
254
+ const patterns = Object.values(bag.patterns);
255
+ if (patterns.length > 0) result.pattern = patterns[0]?.source ?? String(patterns[0]);
256
+ }
257
+ if (bag.format) result.format = this.#normalizeFormat(bag.format);
258
+ for (const check of checks) switch (check.kind ?? check.type) {
259
+ case "min":
260
+ result.minLength = check.value;
261
+ break;
262
+ case "max":
263
+ result.maxLength = check.value;
264
+ break;
265
+ case "length":
266
+ result.minLength = check.value;
267
+ result.maxLength = check.value;
268
+ break;
269
+ case "email":
270
+ result.format = "email";
271
+ break;
272
+ case "url":
273
+ result.format = "uri";
274
+ break;
275
+ case "uuid":
276
+ result.format = "uuid";
277
+ break;
278
+ case "regex":
279
+ result.pattern = check.regex?.source ?? check.value;
280
+ break;
281
+ case "datetime":
282
+ result.format = "date-time";
283
+ break;
284
+ case "date":
285
+ result.format = "date";
286
+ break;
287
+ case "time":
288
+ result.format = "time";
289
+ break;
290
+ case "ip":
291
+ result.format = check.version === "v6" ? "ipv6" : "ipv4";
292
+ break;
293
+ }
294
+ if (def.description) result.description = def.description;
295
+ return result;
296
+ }
297
+ #hasIntCheck(def) {
298
+ return (def.checks ?? []).some((c) => (c.kind ?? c.type ?? c._zod?.def?.check) === "int" || c.isInt === true || c._zod?.def?.format === "safeint");
299
+ }
300
+ #convertNumber(def, bag) {
301
+ const result = { type: "number" };
302
+ const checks = def.checks ?? [];
303
+ bag = bag ?? {};
304
+ if (bag.minimum != null) result.minimum = bag.minimum;
305
+ if (bag.maximum != null) result.maximum = bag.maximum;
306
+ if (bag.multipleOf != null) result.multipleOf = bag.multipleOf;
307
+ for (const check of checks) switch (check.kind ?? check.type) {
308
+ case "min":
309
+ result.minimum = check.value;
310
+ break;
311
+ case "max":
312
+ result.maximum = check.value;
313
+ break;
314
+ case "int":
315
+ result.type = "integer";
316
+ break;
317
+ case "multipleOf":
318
+ result.multipleOf = check.value;
319
+ break;
320
+ case "finite": break;
321
+ case "nonnegative":
322
+ result.minimum = 0;
323
+ break;
324
+ case "nonpositive":
325
+ result.maximum = 0;
326
+ break;
327
+ case "positive":
328
+ result.exclusiveMinimum = 0;
329
+ break;
330
+ case "negative":
331
+ result.exclusiveMaximum = 0;
332
+ break;
333
+ }
334
+ if (def.description) result.description = def.description;
335
+ return result;
336
+ }
337
+ #normalizeFormat(format) {
338
+ return {
339
+ guid: "uuid",
340
+ url: "uri"
341
+ }[format] ?? format;
342
+ }
343
+ };
344
+ //#endregion
345
+ export { CompositeSchemaConverter, ZodSchemaConverter };
@@ -0,0 +1,2 @@
1
+ import { CompositeSchemaConverter, ConvertOptions, JSONSchema, SchemaConverter, ZodSchemaConverter } from "./converter.mjs";
2
+ export { CompositeSchemaConverter, type ConvertOptions, type JSONSchema, type SchemaConverter, ZodSchemaConverter };
@@ -0,0 +1,2 @@
1
+ import { CompositeSchemaConverter, ZodSchemaConverter } from "./converter.mjs";
2
+ export { CompositeSchemaConverter, ZodSchemaConverter };
@@ -0,0 +1,22 @@
1
+ import { ProcedureDef, RouterDef } from "./types.mjs";
2
+
3
+ //#region src/lazy.d.ts
4
+ interface LazyRouter {
5
+ readonly __lazy: true;
6
+ readonly load: () => Promise<{
7
+ default: RouterDef | ProcedureDef;
8
+ }>;
9
+ }
10
+ /**
11
+ * Wrap a dynamic import for lazy loading.
12
+ * The module must export its router/procedure as `default`.
13
+ */
14
+ declare function lazy(loader: () => Promise<{
15
+ default: RouterDef | ProcedureDef;
16
+ }>): LazyRouter;
17
+ /** Check if a value is a lazy router */
18
+ declare function isLazy(value: unknown): value is LazyRouter;
19
+ /** Resolve a lazy router (cached after first load, race-safe) */
20
+ declare function resolveLazy(value: LazyRouter): Promise<RouterDef | ProcedureDef>;
21
+ //#endregion
22
+ export { LazyRouter, isLazy, lazy, resolveLazy };
package/dist/lazy.mjs ADDED
@@ -0,0 +1,34 @@
1
+ //#region src/lazy.ts
2
+ const resolved = /* @__PURE__ */ new WeakMap();
3
+ const loading = /* @__PURE__ */ new WeakMap();
4
+ /**
5
+ * Wrap a dynamic import for lazy loading.
6
+ * The module must export its router/procedure as `default`.
7
+ */
8
+ function lazy(loader) {
9
+ return {
10
+ __lazy: true,
11
+ load: loader
12
+ };
13
+ }
14
+ /** Check if a value is a lazy router */
15
+ function isLazy(value) {
16
+ return typeof value === "object" && value !== null && value.__lazy === true;
17
+ }
18
+ /** Resolve a lazy router (cached after first load, race-safe) */
19
+ async function resolveLazy(value) {
20
+ const cached = resolved.get(value);
21
+ if (cached) return cached;
22
+ let pending = loading.get(value);
23
+ if (!pending) {
24
+ pending = value.load().then((mod) => {
25
+ resolved.set(value, mod.default);
26
+ loading.delete(value);
27
+ return mod.default;
28
+ });
29
+ loading.set(value, pending);
30
+ }
31
+ return pending;
32
+ }
33
+ //#endregion
34
+ export { isLazy, lazy, resolveLazy };
@@ -0,0 +1,36 @@
1
+ import { WrapDef } from "./types.mjs";
2
+
3
+ //#region src/lifecycle.d.ts
4
+ interface LifecycleHooks<TCtx = Record<string, unknown>> {
5
+ /** Called before the procedure runs */
6
+ onStart?: (event: {
7
+ ctx: TCtx;
8
+ }) => void | Promise<void>;
9
+ /** Called after a successful result */
10
+ onSuccess?: (event: {
11
+ ctx: TCtx;
12
+ output: unknown;
13
+ durationMs: number;
14
+ }) => void | Promise<void>;
15
+ /** Called when the procedure throws */
16
+ onError?: (event: {
17
+ ctx: TCtx;
18
+ error: unknown;
19
+ durationMs: number;
20
+ }) => void | Promise<void>;
21
+ /** Called after the procedure completes (success or failure) */
22
+ onFinish?: (event: {
23
+ ctx: TCtx;
24
+ durationMs: number;
25
+ error?: unknown;
26
+ }) => void | Promise<void>;
27
+ }
28
+ /**
29
+ * Create a wrap middleware with declarative lifecycle hooks.
30
+ *
31
+ * All hooks are optional. The procedure result is never modified —
32
+ * hooks are purely for side effects (logging, metrics, error reporting).
33
+ */
34
+ declare function lifecycleWrap<TCtx = Record<string, unknown>>(hooks: LifecycleHooks<TCtx>): WrapDef<TCtx>;
35
+ //#endregion
36
+ export { LifecycleHooks, lifecycleWrap };
@@ -0,0 +1,46 @@
1
+ //#region src/lifecycle.ts
2
+ /**
3
+ * Create a wrap middleware with declarative lifecycle hooks.
4
+ *
5
+ * All hooks are optional. The procedure result is never modified —
6
+ * hooks are purely for side effects (logging, metrics, error reporting).
7
+ */
8
+ function lifecycleWrap(hooks) {
9
+ return {
10
+ kind: "wrap",
11
+ fn: async (ctx, next) => {
12
+ const typedCtx = ctx;
13
+ if (hooks.onStart) await hooks.onStart({ ctx: typedCtx });
14
+ const t0 = performance.now();
15
+ let error;
16
+ try {
17
+ const output = await next();
18
+ const durationMs = performance.now() - t0;
19
+ if (hooks.onSuccess) await hooks.onSuccess({
20
+ ctx: typedCtx,
21
+ output,
22
+ durationMs
23
+ });
24
+ return output;
25
+ } catch (err) {
26
+ error = err;
27
+ const durationMs = performance.now() - t0;
28
+ if (hooks.onError) await hooks.onError({
29
+ ctx: typedCtx,
30
+ error: err,
31
+ durationMs
32
+ });
33
+ throw err;
34
+ } finally {
35
+ const durationMs = performance.now() - t0;
36
+ if (hooks.onFinish) await hooks.onFinish({
37
+ ctx: typedCtx,
38
+ durationMs,
39
+ error
40
+ });
41
+ }
42
+ }
43
+ };
44
+ }
45
+ //#endregion
46
+ export { lifecycleWrap };
@@ -0,0 +1,17 @@
1
+ import { WrapDef } from "./types.mjs";
2
+
3
+ //#region src/map-input.d.ts
4
+ /**
5
+ * Create a wrap that transforms the procedure input before execution.
6
+ *
7
+ * The mapper function receives the raw input and returns the transformed input.
8
+ * The mapped input is set on the context as `__mappedInput` and picked up
9
+ * by the pipeline.
10
+ *
11
+ * Note: Since Silgi's pipeline receives input as a separate argument
12
+ * (not on ctx), mapInput works as a wrap that intercepts and transforms
13
+ * before calling next().
14
+ */
15
+ declare function mapInput<TIn = unknown, TOut = unknown>(mapper: (input: TIn) => TOut | Promise<TOut>): WrapDef;
16
+ //#endregion
17
+ export { mapInput };
@@ -0,0 +1,47 @@
1
+ import { RAW_INPUT } from "./compile.mjs";
2
+ //#region src/map-input.ts
3
+ /**
4
+ * mapInput — transform the input shape before a procedure runs.
5
+ *
6
+ * Useful when the client sends data in one shape but the procedure
7
+ * expects a different shape, or when you want to pre-process input
8
+ * in a reusable way.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { mapInput } from "silgi"
13
+ *
14
+ * // Rename fields
15
+ * const mapUserId = mapInput((input: { userId: string }) => ({
16
+ * id: input.userId,
17
+ * }))
18
+ *
19
+ * const getUser = k
20
+ * .$use(mapUserId)
21
+ * .$resolve(({ input }) => db.users.find(input.id))
22
+ * // input is { id: string } after mapping
23
+ * ```
24
+ */
25
+ /**
26
+ * Create a wrap that transforms the procedure input before execution.
27
+ *
28
+ * The mapper function receives the raw input and returns the transformed input.
29
+ * The mapped input is set on the context as `__mappedInput` and picked up
30
+ * by the pipeline.
31
+ *
32
+ * Note: Since Silgi's pipeline receives input as a separate argument
33
+ * (not on ctx), mapInput works as a wrap that intercepts and transforms
34
+ * before calling next().
35
+ */
36
+ function mapInput(mapper) {
37
+ return {
38
+ kind: "wrap",
39
+ fn: async (ctx, next) => {
40
+ const rawInput = ctx[RAW_INPUT];
41
+ ctx[RAW_INPUT] = await mapper(rawInput);
42
+ return next();
43
+ }
44
+ };
45
+ }
46
+ //#endregion
47
+ export { mapInput };
@@ -0,0 +1,24 @@
1
+ import { ProcedureCall } from "./types.mjs";
2
+ import { AnalyticsCollector } from "./collector.mjs";
3
+
4
+ //#region src/plugins/analytics/accumulator.d.ts
5
+ declare class RequestAccumulator {
6
+ #private;
7
+ readonly requestId: string;
8
+ readonly sessionId: string;
9
+ readonly traceId: string;
10
+ readonly parentRequestId?: string;
11
+ /** True if a new session cookie needs to be set. */
12
+ readonly isNewSession: boolean;
13
+ t0: number;
14
+ constructor(request: Request, collector: AnalyticsCollector, traceId?: string, parentRequestId?: string);
15
+ addProcedure(call: ProcedureCall): void;
16
+ /** Get Set-Cookie header value (only if new session). */
17
+ getSessionCookie(): string | null;
18
+ /** Flush with response headers extracted from the actual Response object. */
19
+ flushWithResponse(res: Response): void;
20
+ /** Whether any procedures have been recorded. */
21
+ get hasProcedures(): boolean;
22
+ }
23
+ //#endregion
24
+ export { RequestAccumulator };
@@ -0,0 +1,91 @@
1
+ import { parseUrlPath } from "../../core/url.mjs";
2
+ import { generateRequestId } from "./request-id.mjs";
3
+ import { redactHeaderValue, round } from "./utils.mjs";
4
+ import { parse } from "cookie-es";
5
+ //#region src/plugins/analytics/accumulator.ts
6
+ /**
7
+ * RequestAccumulator — HTTP-level request grouping.
8
+ *
9
+ * Collects procedure calls within a single HTTP request.
10
+ * Created at the start of handleRequest, procedures are added as they complete,
11
+ * then flushed to the collector at the end.
12
+ */
13
+ const SESSION_COOKIE = "_sid";
14
+ const SESSION_MAX_AGE = 365 * 24 * 60 * 60;
15
+ var RequestAccumulator = class {
16
+ requestId;
17
+ sessionId;
18
+ traceId;
19
+ parentRequestId;
20
+ /** True if a new session cookie needs to be set. */
21
+ isNewSession;
22
+ t0;
23
+ #request;
24
+ #procedures = [];
25
+ #collector;
26
+ constructor(request, collector, traceId, parentRequestId) {
27
+ this.requestId = generateRequestId();
28
+ this.traceId = traceId ?? this.requestId;
29
+ this.parentRequestId = parentRequestId;
30
+ this.t0 = performance.now();
31
+ this.#request = request;
32
+ this.#collector = collector;
33
+ const cookieHeader = request.headers.get("cookie");
34
+ const existing = cookieHeader ? parse(cookieHeader)[SESSION_COOKIE] : void 0;
35
+ if (existing && existing.length >= 10) {
36
+ this.sessionId = existing;
37
+ this.isNewSession = false;
38
+ } else {
39
+ this.sessionId = generateRequestId();
40
+ this.isNewSession = true;
41
+ }
42
+ }
43
+ addProcedure(call) {
44
+ this.#procedures.push(call);
45
+ }
46
+ /** Get Set-Cookie header value (only if new session). */
47
+ getSessionCookie() {
48
+ if (!this.isNewSession) return null;
49
+ return `${SESSION_COOKIE}=${this.sessionId}; Path=/; Max-Age=${SESSION_MAX_AGE}; SameSite=Lax; HttpOnly`;
50
+ }
51
+ /** Flush with response headers extracted from the actual Response object. */
52
+ flushWithResponse(res) {
53
+ if (this.#procedures.length === 0) return;
54
+ const durationMs = round(performance.now() - this.t0);
55
+ const headers = {};
56
+ this.#request.headers.forEach((v, k) => {
57
+ headers[k] = redactHeaderValue(k, v);
58
+ });
59
+ const responseHeaders = {};
60
+ res.headers.forEach((v, k) => {
61
+ responseHeaders[k] = redactHeaderValue(k, v);
62
+ });
63
+ let worstStatus = 200;
64
+ for (const p of this.#procedures) if (p.status > worstStatus) worstStatus = p.status;
65
+ const path = parseUrlPath(this.#request.url);
66
+ this.#collector.recordDetailedRequest({
67
+ requestId: this.requestId,
68
+ sessionId: this.sessionId,
69
+ timestamp: Date.now(),
70
+ durationMs,
71
+ method: this.#request.method,
72
+ url: this.#request.url,
73
+ path,
74
+ ip: headers["x-forwarded-for"] || headers["x-real-ip"] || "",
75
+ headers,
76
+ responseHeaders,
77
+ userAgent: this.#request.headers.get("user-agent") ?? "",
78
+ status: worstStatus,
79
+ procedures: this.#procedures,
80
+ isBatch: this.#procedures.length > 1,
81
+ traceId: this.traceId,
82
+ parentRequestId: this.parentRequestId
83
+ });
84
+ }
85
+ /** Whether any procedures have been recorded. */
86
+ get hasProcedures() {
87
+ return this.#procedures.length > 0;
88
+ }
89
+ };
90
+ //#endregion
91
+ export { RequestAccumulator };