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,68 @@
1
+ //#region src/trpc-interop.ts
2
+ /**
3
+ * Convert a tRPC router to a Silgi RouterDef.
4
+ *
5
+ * Walks the tRPC router's `_def.procedures` and wraps each one as
6
+ * a Silgi ProcedureDef that calls the tRPC procedure's resolver.
7
+ *
8
+ * Supports:
9
+ * - tRPC v10 and v11 routers
10
+ * - Queries, mutations, and subscriptions
11
+ * - Input schemas (passed through as-is)
12
+ * - Middleware (runs inside tRPC, not Silgi's pipeline)
13
+ *
14
+ * Does NOT support:
15
+ * - Converting tRPC middleware to Silgi guards/wraps
16
+ * - tRPC context factories (use Silgi's context instead)
17
+ */
18
+ function fromTRPC(trpcRouter) {
19
+ if (!trpcRouter || typeof trpcRouter !== "object") throw new Error("fromTRPC: expected a tRPC router object");
20
+ const router = trpcRouter;
21
+ return walkTRPCRouter(router._def?.procedures ?? router);
22
+ }
23
+ function walkTRPCRouter(node) {
24
+ const result = {};
25
+ for (const [key, value] of Object.entries(node)) {
26
+ if (!value || typeof value !== "object") continue;
27
+ const proc = value;
28
+ if (isTRPCProcedure(proc)) result[key] = convertProcedure(proc);
29
+ else if (isTRPCRouter(proc)) result[key] = walkTRPCRouter(proc._def?.procedures ?? proc);
30
+ else result[key] = walkTRPCRouter(proc);
31
+ }
32
+ return result;
33
+ }
34
+ function isTRPCProcedure(value) {
35
+ const def = value._def;
36
+ if (!def) return false;
37
+ return def.type === "query" || def.type === "mutation" || def.type === "subscription";
38
+ }
39
+ function isTRPCRouter(value) {
40
+ return !!value._def?.procedures;
41
+ }
42
+ function convertProcedure(trpcProc) {
43
+ const def = trpcProc._def;
44
+ const type = def.type === "subscription" ? "subscription" : def.type === "mutation" ? "mutation" : "query";
45
+ return {
46
+ type,
47
+ input: def.inputs?.[0] ?? null,
48
+ output: null,
49
+ errors: null,
50
+ use: null,
51
+ resolve: async ({ input, ctx }) => {
52
+ if (typeof def.resolver === "function") return def.resolver({
53
+ input,
54
+ ctx,
55
+ type
56
+ });
57
+ if (typeof trpcProc.call === "function") return trpcProc.call({
58
+ input,
59
+ ctx
60
+ });
61
+ throw new Error(`Cannot resolve tRPC procedure: ${JSON.stringify(Object.keys(def))}`);
62
+ },
63
+ route: null,
64
+ meta: { __trpc: true }
65
+ };
66
+ }
67
+ //#endregion
68
+ export { fromTRPC };
@@ -0,0 +1,108 @@
1
+ import { AnySchema, InferSchemaInput } from "./core/schema.mjs";
2
+ import { TaskDef } from "./core/task.mjs";
3
+
4
+ //#region src/types.d.ts
5
+ /** HTTP route metadata + OpenAPI operation metadata */
6
+ interface Route {
7
+ method?: string;
8
+ path?: string;
9
+ /** Short summary of the operation (OpenAPI `summary`) */
10
+ summary?: string;
11
+ /** Detailed description of the operation (OpenAPI `description`, supports markdown) */
12
+ description?: string;
13
+ /** Tags for grouping operations in API docs */
14
+ tags?: string[];
15
+ /** Mark operation as deprecated in API docs */
16
+ deprecated?: boolean;
17
+ /** Custom operationId (default: router path joined with `_`) */
18
+ operationId?: string;
19
+ /** HTTP status code for successful responses (default: 200) */
20
+ successStatus?: number;
21
+ /** Description for the success response in API docs */
22
+ successDescription?: string;
23
+ /**
24
+ * Per-procedure security override.
25
+ * - `false` — public endpoint (no auth), overrides global security
26
+ * - `string[]` — named security scheme(s) required
27
+ */
28
+ security?: false | string[];
29
+ /**
30
+ * Override or extend the auto-generated OpenAPI operation object.
31
+ * - Object: merged over the generated operation
32
+ * - Function: receives the generated operation, returns the final one
33
+ *
34
+ * Use this for any OpenAPI metadata not covered by other Route fields
35
+ * (e.g. `externalDocs`, `x-` extensions, custom `parameters`).
36
+ */
37
+ spec?: Record<string, unknown> | ((operation: Record<string, unknown>) => Record<string, unknown>);
38
+ /**
39
+ * Cache-Control header for query responses.
40
+ *
41
+ * - `number` — shorthand for `max-age=N` (seconds)
42
+ * - `string` — full Cache-Control value (e.g. `'public, max-age=60, stale-while-revalidate=30'`)
43
+ * - Only applies to query procedures (mutations and subscriptions are never cached)
44
+ */
45
+ cache?: number | string;
46
+ /** Enable WebSocket RPC for this procedure */
47
+ ws?: boolean;
48
+ }
49
+ /** Procedure metadata */
50
+ type Meta = Record<string, unknown>;
51
+ type ProcedureType = 'query' | 'mutation' | 'subscription';
52
+ /** Internal procedure representation — fixed shape for V8 optimization */
53
+ interface ProcedureDef<TType extends ProcedureType = ProcedureType, _TInput = unknown, _TOutput = unknown, TErrors extends ErrorDef = ErrorDef> {
54
+ readonly type: TType;
55
+ readonly input: AnySchema | null;
56
+ readonly output: AnySchema | null;
57
+ readonly errors: TErrors | null;
58
+ readonly use: readonly MiddlewareDef[] | null;
59
+ readonly resolve: Function;
60
+ readonly route: Route | null;
61
+ readonly meta: Meta | null;
62
+ }
63
+ /** Error definition: number shorthand or full config */
64
+ type ErrorDefItem = number | {
65
+ status: number;
66
+ message?: string;
67
+ data?: AnySchema;
68
+ };
69
+ type ErrorDef = Record<string, ErrorDefItem>;
70
+ /** Extract data schema from error def item */
71
+ type ErrorData<T extends ErrorDefItem> = T extends {
72
+ data: infer S extends AnySchema;
73
+ } ? InferSchemaInput<S> : undefined;
74
+ /** Typed fail() function — inferred from errors definition */
75
+ type FailFn<TErrors extends ErrorDef> = <K extends keyof TErrors & string>(code: K, ...args: ErrorData<TErrors[K]> extends undefined ? [data?: unknown] : [data: ErrorData<TErrors[K]>]) => never;
76
+ type GuardFn<TCtxIn, TReturn> = (ctx: TCtxIn) => TReturn | Promise<TReturn> | void | Promise<void>;
77
+ type WrapFn<TCtx> = (ctx: TCtx, next: () => Promise<unknown>) => Promise<unknown>;
78
+ interface GuardDef<TCtxIn = unknown, TReturn = unknown, TErrors extends ErrorDef = {}> {
79
+ readonly kind: 'guard';
80
+ readonly fn: GuardFn<TCtxIn, TReturn>;
81
+ readonly errors?: TErrors;
82
+ }
83
+ interface WrapDef<TCtx = unknown> {
84
+ readonly kind: 'wrap';
85
+ readonly fn: WrapFn<TCtx>;
86
+ }
87
+ type MiddlewareDef = GuardDef<any, any> | WrapDef<any>;
88
+ /** Extract the context additions from a single guard */
89
+ type InferGuardOutput<T> = T extends GuardDef<any, infer O> ? (O extends void | undefined ? {} : O extends Record<string, unknown> ? O : {}) : {};
90
+ /** Walk a middleware tuple, accumulate guard outputs into context */
91
+ type InferContextFromUse<T extends readonly MiddlewareDef[], TBase> = T extends readonly [infer Head, ...infer Tail extends readonly MiddlewareDef[]] ? InferContextFromUse<Tail, TBase & InferGuardOutput<Head>> : TBase;
92
+ interface ResolveContext<TCtx, TInput, TErrors extends ErrorDef> {
93
+ ctx: TCtx;
94
+ input: TInput;
95
+ fail: FailFn<TErrors>;
96
+ signal: AbortSignal;
97
+ /** URL params extracted from the route pattern (e.g. `/users/:id` → `{ id: '123' }`) */
98
+ params: Record<string, string>;
99
+ }
100
+ type RouterDef = {
101
+ [key: string]: ProcedureDef<any, any, any, any> | TaskDef<any, any> | RouterDef;
102
+ };
103
+ /** Return type wrapper — subscription yields, query/mutation returns Promise */
104
+ type ProcedureResult<TType extends ProcedureType, TOutput> = TType extends 'subscription' ? AsyncIterableIterator<TOutput> : Promise<TOutput>;
105
+ /** Infer client type from router */
106
+ type InferClient<T> = T extends ProcedureDef<infer TType, infer TInput, infer TOutput> ? undefined extends TInput ? () => ProcedureResult<TType, TOutput> : (input: TInput) => ProcedureResult<TType, TOutput> : T extends Record<string, unknown> ? { [K in keyof T]: InferClient<T[K]> } : never;
107
+ //#endregion
108
+ export { ErrorDef, ErrorDefItem, FailFn, GuardDef, GuardFn, InferClient, InferContextFromUse, InferGuardOutput, Meta, MiddlewareDef, ProcedureDef, ProcedureType, ResolveContext, Route, RouterDef, WrapDef, WrapFn };
package/dist/ws.d.mts ADDED
@@ -0,0 +1,88 @@
1
+ import { RouterDef } from "./types.mjs";
2
+ import { Hooks, Peer } from "crossws";
3
+ import { Server } from "node:http";
4
+
5
+ //#region src/ws.d.ts
6
+ interface WSAdapterOptions<TCtx extends Record<string, unknown> = Record<string, unknown>> {
7
+ /**
8
+ * Wire protocol for WebSocket message encoding.
9
+ *
10
+ * - `'json'` — default, text frames with JSON
11
+ * - `'messagepack'` — binary frames with MessagePack
12
+ *
13
+ * @default 'json'
14
+ */
15
+ protocol?: 'json' | 'messagepack';
16
+ /**
17
+ * @deprecated Use `protocol: 'messagepack'` instead.
18
+ */
19
+ binary?: boolean;
20
+ /** Context factory — receives the peer on each message */
21
+ context?: (peer: Peer) => TCtx | Promise<TCtx>;
22
+ /**
23
+ * Enable per-message-deflate compression.
24
+ *
25
+ * - `true`: enable with defaults
26
+ * - `object`: fine-tune zlib options (passed to ws `perMessageDeflate`)
27
+ *
28
+ * @default false
29
+ */
30
+ compress?: boolean | {
31
+ threshold?: number;
32
+ serverNoContextTakeover?: boolean;
33
+ clientNoContextTakeover?: boolean;
34
+ serverMaxWindowBits?: number;
35
+ clientMaxWindowBits?: number;
36
+ };
37
+ /**
38
+ * Maximum allowed message size in bytes.
39
+ * Messages exceeding this limit will cause the connection to be closed.
40
+ *
41
+ * @default 1_048_576 (1 MB)
42
+ */
43
+ maxPayload?: number;
44
+ /**
45
+ * Keepalive ping interval in milliseconds.
46
+ * Server sends a ping frame at this interval; if the client
47
+ * does not respond with a pong before the next ping, the connection is terminated.
48
+ *
49
+ * Set to `0` or `false` to disable.
50
+ *
51
+ * @default 30_000 (30 seconds)
52
+ */
53
+ keepalive?: number | false;
54
+ }
55
+ /**
56
+ * Create crossws-compatible hooks for Silgi RPC over WebSocket.
57
+ *
58
+ * Works with any crossws integration — Nitro, Deno, Bun, Cloudflare, etc.
59
+ *
60
+ * @example
61
+ * ```ts
62
+ * // Nitro / Nuxt
63
+ * import { createWSHooks } from "silgi/ws";
64
+ * export default defineWebSocketHandler(createWSHooks(appRouter));
65
+ *
66
+ * // With context
67
+ * export default defineWebSocketHandler(createWSHooks(appRouter, {
68
+ * context: (peer) => ({ userId: peer.request?.headers.get('x-user-id') }),
69
+ * }));
70
+ * ```
71
+ */
72
+ declare function createWSHooks<TCtx extends Record<string, unknown>>(routerDef: RouterDef, options?: WSAdapterOptions<TCtx>): Partial<Hooks>;
73
+ /**
74
+ * Attach WebSocket RPC handler to an existing Node.js HTTP server.
75
+ *
76
+ * @example
77
+ * ```ts
78
+ * import { createServer } from "node:http";
79
+ * import { attachWebSocket } from "silgi/ws";
80
+ *
81
+ * const server = createServer(httpHandler);
82
+ * attachWebSocket(server, appRouter);
83
+ * server.listen(3000);
84
+ * ```
85
+ */
86
+ declare function attachWebSocket<TCtx extends Record<string, unknown>>(server: Server, routerDef: RouterDef, options?: WSAdapterOptions<TCtx>): Promise<void>;
87
+ //#endregion
88
+ export { WSAdapterOptions, attachWebSocket, createWSHooks };
package/dist/ws.mjs ADDED
@@ -0,0 +1,205 @@
1
+ import { SilgiError, toSilgiError } from "./core/error.mjs";
2
+ import { compileRouter, createContext, releaseContext } from "./compile.mjs";
3
+ import { stringifyJSON } from "./core/utils.mjs";
4
+ import { decode, encode } from "./codec/msgpack.mjs";
5
+ //#region src/ws.ts
6
+ /**
7
+ * WebSocket RPC adapter — powered by crossws.
8
+ *
9
+ * Bidirectional type-safe RPC over WebSocket.
10
+ * Supports subscriptions (server → client streaming) natively.
11
+ *
12
+ * Protocol:
13
+ * Client → Server: { id: string, path: string, input?: unknown }
14
+ * Server → Client: { id: string, result?: unknown, error?: unknown }
15
+ * Server → Client (stream): { id: string, data: unknown, done?: boolean }
16
+ */
17
+ const peerAbortControllers = /* @__PURE__ */ new WeakMap();
18
+ const peerKeepaliveTimers = /* @__PURE__ */ new WeakMap();
19
+ /**
20
+ * Create crossws-compatible hooks for Silgi RPC over WebSocket.
21
+ *
22
+ * Works with any crossws integration — Nitro, Deno, Bun, Cloudflare, etc.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * // Nitro / Nuxt
27
+ * import { createWSHooks } from "silgi/ws";
28
+ * export default defineWebSocketHandler(createWSHooks(appRouter));
29
+ *
30
+ * // With context
31
+ * export default defineWebSocketHandler(createWSHooks(appRouter, {
32
+ * context: (peer) => ({ userId: peer.request?.headers.get('x-user-id') }),
33
+ * }));
34
+ * ```
35
+ */
36
+ function createWSHooks(routerDef, options = {}) {
37
+ const flat = compileRouter(routerDef);
38
+ const useMsgpack = options.protocol === "messagepack" || options.protocol == null && (options.binary ?? false);
39
+ const contextFactory = options.context;
40
+ const keepaliveMs = options.keepalive === false ? 0 : options.keepalive ?? 3e4;
41
+ function send(peer, data) {
42
+ const compress = !!options.compress;
43
+ if (useMsgpack) peer.send(encode(data), { compress });
44
+ else peer.send(stringifyJSON(data), { compress });
45
+ }
46
+ function parseMessage(message) {
47
+ if (useMsgpack) return decode(message.uint8Array());
48
+ return message.json();
49
+ }
50
+ return {
51
+ open(peer) {
52
+ peerAbortControllers.set(peer, /* @__PURE__ */ new Set());
53
+ if (keepaliveMs > 0) {
54
+ const ws = peer._internal?.ws;
55
+ if (ws && typeof ws.ping === "function") {
56
+ let alive = true;
57
+ ws.on("pong", () => {
58
+ alive = true;
59
+ });
60
+ const timer = setInterval(() => {
61
+ if (!alive) {
62
+ clearInterval(timer);
63
+ ws.terminate();
64
+ return;
65
+ }
66
+ alive = false;
67
+ ws.ping();
68
+ }, keepaliveMs);
69
+ peerKeepaliveTimers.set(peer, timer);
70
+ }
71
+ }
72
+ },
73
+ async message(peer, message) {
74
+ let req;
75
+ try {
76
+ req = parseMessage(message);
77
+ } catch {
78
+ send(peer, {
79
+ id: "0",
80
+ error: {
81
+ code: "BAD_REQUEST",
82
+ status: 400,
83
+ message: "Invalid message format"
84
+ }
85
+ });
86
+ return;
87
+ }
88
+ const { id, path, input } = req;
89
+ const route = flat("POST", "/" + path)?.data;
90
+ if (!route || !route.ws) {
91
+ send(peer, {
92
+ id,
93
+ error: {
94
+ code: "NOT_FOUND",
95
+ status: 404,
96
+ message: `Procedure "${path}" not found`
97
+ }
98
+ });
99
+ return;
100
+ }
101
+ const ctx = createContext();
102
+ if (contextFactory) try {
103
+ const baseResult = contextFactory(peer);
104
+ const base = baseResult instanceof Promise ? await baseResult : baseResult;
105
+ const keys = Object.keys(base);
106
+ for (let i = 0; i < keys.length; i++) ctx[keys[i]] = base[keys[i]];
107
+ } catch (err) {
108
+ releaseContext(ctx);
109
+ send(peer, {
110
+ id,
111
+ error: (err instanceof SilgiError ? err : toSilgiError(err)).toJSON()
112
+ });
113
+ return;
114
+ }
115
+ const ac = new AbortController();
116
+ const controllers = peerAbortControllers.get(peer);
117
+ controllers?.add(ac);
118
+ try {
119
+ const result = route.handler(ctx, input ?? {}, ac.signal);
120
+ const output = result instanceof Promise ? await result : result;
121
+ if (output && typeof output === "object" && Symbol.asyncIterator in output) {
122
+ const iter = output;
123
+ try {
124
+ for await (const data of iter) {
125
+ if (ac.signal.aborted) break;
126
+ send(peer, {
127
+ id,
128
+ data
129
+ });
130
+ }
131
+ if (!ac.signal.aborted) send(peer, {
132
+ id,
133
+ data: null,
134
+ done: true
135
+ });
136
+ } catch (err) {
137
+ if (!ac.signal.aborted) send(peer, {
138
+ id,
139
+ error: (err instanceof SilgiError ? err : toSilgiError(err)).toJSON()
140
+ });
141
+ } finally {
142
+ await iter.return?.();
143
+ }
144
+ return;
145
+ }
146
+ send(peer, {
147
+ id,
148
+ result: output
149
+ });
150
+ } catch (err) {
151
+ send(peer, {
152
+ id,
153
+ error: (err instanceof SilgiError ? err : toSilgiError(err)).toJSON()
154
+ });
155
+ } finally {
156
+ controllers?.delete(ac);
157
+ releaseContext(ctx);
158
+ }
159
+ },
160
+ close(peer, _details) {
161
+ const timer = peerKeepaliveTimers.get(peer);
162
+ if (timer) {
163
+ clearInterval(timer);
164
+ peerKeepaliveTimers.delete(peer);
165
+ }
166
+ const controllers = peerAbortControllers.get(peer);
167
+ if (controllers) {
168
+ for (const ac of controllers) ac.abort();
169
+ controllers.clear();
170
+ peerAbortControllers.delete(peer);
171
+ }
172
+ },
173
+ error(_peer, error) {
174
+ console.error("[silgi:ws] error:", error);
175
+ }
176
+ };
177
+ }
178
+ /**
179
+ * Attach WebSocket RPC handler to an existing Node.js HTTP server.
180
+ *
181
+ * @example
182
+ * ```ts
183
+ * import { createServer } from "node:http";
184
+ * import { attachWebSocket } from "silgi/ws";
185
+ *
186
+ * const server = createServer(httpHandler);
187
+ * attachWebSocket(server, appRouter);
188
+ * server.listen(3000);
189
+ * ```
190
+ */
191
+ async function attachWebSocket(server, routerDef, options = {}) {
192
+ const nodeAdapter = (await import("crossws/adapters/node")).default;
193
+ const serverOptions = {};
194
+ if (options.compress) serverOptions.perMessageDeflate = typeof options.compress === "object" ? options.compress : true;
195
+ if (options.maxPayload !== void 0) serverOptions.maxPayload = options.maxPayload;
196
+ const ws = nodeAdapter({
197
+ hooks: createWSHooks(routerDef, options),
198
+ ...Object.keys(serverOptions).length > 0 && { serverOptions }
199
+ });
200
+ server.on("upgrade", (req, socket, head) => {
201
+ ws.handleUpgrade(req, socket, head);
202
+ });
203
+ }
204
+ //#endregion
205
+ export { attachWebSocket, createWSHooks };