effect-start 0.23.0 → 0.25.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 (356) hide show
  1. package/dist/ChildProcess.js +32 -20
  2. package/dist/Commander.js +377 -293
  3. package/dist/ContentNegotiation.js +424 -318
  4. package/dist/Cookies.js +340 -271
  5. package/dist/Development.js +85 -49
  6. package/dist/Effectify.js +22 -14
  7. package/dist/Entity.js +260 -195
  8. package/dist/Fetch.js +192 -0
  9. package/dist/FilePathPattern.js +88 -77
  10. package/dist/FileRouter.js +192 -136
  11. package/dist/FileRouterCodegen.js +262 -191
  12. package/dist/FileSystem.js +126 -64
  13. package/dist/Http.js +96 -77
  14. package/dist/PathPattern.js +311 -273
  15. package/dist/PlatformError.js +36 -21
  16. package/dist/PlatformRuntime.js +65 -40
  17. package/dist/Route.js +122 -79
  18. package/dist/RouteBody.js +83 -58
  19. package/dist/RouteError.js +46 -25
  20. package/dist/RouteHook.js +58 -34
  21. package/dist/RouteHttp.js +346 -237
  22. package/dist/RouteHttpTracer.js +86 -58
  23. package/dist/RouteMount.js +81 -58
  24. package/dist/RouteSchema.js +253 -170
  25. package/dist/RouteSse.js +87 -72
  26. package/dist/RouteTree.js +99 -73
  27. package/dist/RouteTrie.js +160 -133
  28. package/dist/SchemaExtra.js +87 -62
  29. package/dist/Socket.js +32 -21
  30. package/dist/SqlIntrospect.js +317 -268
  31. package/dist/Start.js +55 -25
  32. package/dist/StartApp.js +3 -21
  33. package/dist/StreamExtra.js +109 -74
  34. package/dist/System.js +37 -21
  35. package/dist/TuplePathPattern.js +64 -58
  36. package/dist/Unique.js +159 -120
  37. package/dist/Values.js +48 -32
  38. package/dist/bun/BunBundle.js +158 -109
  39. package/dist/bun/BunChildProcessSpawner.js +121 -82
  40. package/dist/bun/BunImportTrackerPlugin.js +85 -63
  41. package/dist/bun/BunRoute.js +135 -99
  42. package/dist/bun/BunRuntime.js +39 -29
  43. package/dist/bun/BunServer.js +268 -140
  44. package/dist/bun/BunVirtualFilesPlugin.js +47 -33
  45. package/dist/bun/_BunEnhancedResolve.js +107 -82
  46. package/dist/bun/index.js +5 -5
  47. package/dist/bundler/Bundle.js +82 -38
  48. package/dist/bundler/BundleFiles.js +140 -82
  49. package/dist/bundler/BundleRoute.js +49 -38
  50. package/dist/client/Overlay.js +29 -28
  51. package/dist/client/ScrollState.js +94 -82
  52. package/dist/client/index.js +79 -61
  53. package/dist/console/Console.js +40 -24
  54. package/dist/console/ConsoleErrors.js +189 -178
  55. package/dist/console/ConsoleLogger.js +52 -43
  56. package/dist/console/ConsoleMetrics.js +69 -58
  57. package/dist/console/ConsoleProcess.js +57 -47
  58. package/dist/console/ConsoleStore.js +56 -45
  59. package/dist/console/ConsoleTracer.js +101 -88
  60. package/dist/console/Simulation.js +714 -563
  61. package/dist/console/index.js +3 -3
  62. package/dist/console/routes/tree.js +29 -28
  63. package/dist/datastar/actions/fetch.js +514 -381
  64. package/dist/datastar/actions/peek.js +12 -12
  65. package/dist/datastar/actions/setAll.js +18 -11
  66. package/dist/datastar/actions/toggleAll.js +18 -11
  67. package/dist/datastar/attributes/attr.js +48 -47
  68. package/dist/datastar/attributes/bind.js +186 -167
  69. package/dist/datastar/attributes/class.js +51 -44
  70. package/dist/datastar/attributes/computed.js +23 -24
  71. package/dist/datastar/attributes/effect.js +9 -8
  72. package/dist/datastar/attributes/indicator.js +32 -29
  73. package/dist/datastar/attributes/init.js +26 -25
  74. package/dist/datastar/attributes/jsonSignals.js +32 -29
  75. package/dist/datastar/attributes/on.js +76 -73
  76. package/dist/datastar/attributes/onIntersect.js +51 -51
  77. package/dist/datastar/attributes/onInterval.js +30 -29
  78. package/dist/datastar/attributes/onSignalPatch.js +49 -40
  79. package/dist/datastar/attributes/ref.js +10 -9
  80. package/dist/datastar/attributes/show.js +31 -30
  81. package/dist/datastar/attributes/signals.js +17 -16
  82. package/dist/datastar/attributes/style.js +56 -49
  83. package/dist/datastar/attributes/text.js +28 -25
  84. package/dist/datastar/engine.js +1079 -933
  85. package/dist/datastar/index.js +25 -24
  86. package/dist/datastar/utils.js +203 -155
  87. package/dist/datastar/watchers/patchElements.js +459 -372
  88. package/dist/datastar/watchers/patchSignals.js +13 -13
  89. package/dist/experimental/EncryptedCookies.js +305 -189
  90. package/dist/experimental/index.js +1 -1
  91. package/dist/hyper/Hyper.js +22 -17
  92. package/dist/hyper/HyperHtml.js +138 -123
  93. package/dist/hyper/HyperNode.js +11 -9
  94. package/dist/hyper/HyperRoute.js +41 -28
  95. package/dist/hyper/html.js +27 -27
  96. package/dist/hyper/index.js +5 -5
  97. package/dist/hyper/jsx-runtime.js +11 -5
  98. package/dist/index.js +8 -8
  99. package/dist/node/NodeFileSystem.js +606 -341
  100. package/dist/node/NodeUtils.js +21 -18
  101. package/dist/sql/Sql.js +8 -0
  102. package/dist/sql/bun/index.js +134 -67
  103. package/dist/sql/index.js +1 -0
  104. package/dist/sql/libsql/index.js +156 -0
  105. package/dist/sql/mssql/docker.js +103 -60
  106. package/dist/sql/mssql/index.js +182 -101
  107. package/dist/testing/TestLogger.js +39 -29
  108. package/dist/testing/index.js +2 -2
  109. package/dist/testing/utils.js +45 -23
  110. package/dist/x/cloudflare/CloudflareTunnel.js +61 -28
  111. package/dist/x/cloudflare/index.js +1 -1
  112. package/dist/x/tailscale/TailscaleTunnel.js +86 -60
  113. package/dist/x/tailscale/index.js +1 -1
  114. package/dist/x/tailwind/TailwindPlugin.js +280 -205
  115. package/dist/x/tailwind/compile.js +185 -129
  116. package/dist/x/tailwind/plugin.js +13 -11
  117. package/package.json +1 -1
  118. package/src/Development.ts +3 -1
  119. package/src/Entity.ts +17 -0
  120. package/src/Fetch.ts +271 -0
  121. package/src/SqlIntrospect.ts +64 -70
  122. package/src/Start.ts +24 -22
  123. package/src/StartApp.ts +11 -0
  124. package/src/bun/BunServer.ts +89 -16
  125. package/src/hyper/HyperHtml.ts +0 -1
  126. package/src/sql/bun/index.ts +1 -1
  127. package/src/sql/index.ts +1 -0
  128. package/src/sql/libsql/index.ts +173 -0
  129. package/src/sql/libsql/libsql.d.ts +39 -0
  130. package/src/sql/mssql/index.ts +1 -1
  131. package/src/x/tailscale/TailscaleTunnel.ts +7 -5
  132. package/dist/BlobStore.d.ts +0 -80
  133. package/dist/BlobStore.js +0 -19
  134. package/dist/ChildProcess.d.ts +0 -60
  135. package/dist/Commander.d.ts +0 -100
  136. package/dist/ContentNegotiation.d.ts +0 -12
  137. package/dist/Cookies.d.ts +0 -47
  138. package/dist/Development.d.ts +0 -39
  139. package/dist/Effectify.d.ts +0 -209
  140. package/dist/Entity.d.ts +0 -47
  141. package/dist/FilePathPattern.d.ts +0 -29
  142. package/dist/FileRouter.d.ts +0 -56
  143. package/dist/FileRouterCodegen.d.ts +0 -18
  144. package/dist/FileRouterPattern.d.ts +0 -9
  145. package/dist/FileRouterPattern.js +0 -35
  146. package/dist/FileSystem.d.ts +0 -158
  147. package/dist/Http.d.ts +0 -37
  148. package/dist/HttpAppExtra.d.ts +0 -7
  149. package/dist/HttpAppExtra.js +0 -320
  150. package/dist/HttpUtils.d.ts +0 -3
  151. package/dist/HttpUtils.js +0 -11
  152. package/dist/PathPattern.d.ts +0 -134
  153. package/dist/PlatformError.d.ts +0 -38
  154. package/dist/PlatformRuntime.d.ts +0 -27
  155. package/dist/Route.d.ts +0 -97
  156. package/dist/RouteBody.d.ts +0 -47
  157. package/dist/RouteError.d.ts +0 -98
  158. package/dist/RouteHook.d.ts +0 -12
  159. package/dist/RouteHttp.d.ts +0 -21
  160. package/dist/RouteHttpTracer.d.ts +0 -10
  161. package/dist/RouteMount.d.ts +0 -86
  162. package/dist/RouteSchema.d.ts +0 -86
  163. package/dist/RouteSse.d.ts +0 -21
  164. package/dist/RouteTree.d.ts +0 -57
  165. package/dist/RouteTrie.d.ts +0 -20
  166. package/dist/RouterPattern.d.ts +0 -118
  167. package/dist/RouterPattern.js +0 -269
  168. package/dist/SchemaExtra.d.ts +0 -7
  169. package/dist/Socket.d.ts +0 -27
  170. package/dist/Sql.d.ts +0 -34
  171. package/dist/Sql.js +0 -5
  172. package/dist/SqlIntrospect.d.ts +0 -91
  173. package/dist/Start.d.ts +0 -44
  174. package/dist/StartApp.d.ts +0 -19
  175. package/dist/StreamExtra.d.ts +0 -28
  176. package/dist/System.d.ts +0 -7
  177. package/dist/TuplePathPattern.d.ts +0 -9
  178. package/dist/Unique.d.ts +0 -50
  179. package/dist/Values.d.ts +0 -27
  180. package/dist/bun/BunBlobStoreDisk.d.ts +0 -6
  181. package/dist/bun/BunBlobStoreDisk.js +0 -116
  182. package/dist/bun/BunBlobStoreS3.d.ts +0 -11
  183. package/dist/bun/BunBlobStoreS3.js +0 -89
  184. package/dist/bun/BunBlobWatcherDisk.d.ts +0 -6
  185. package/dist/bun/BunBlobWatcherDisk.js +0 -60
  186. package/dist/bun/BunBlobWatcherQueue.d.ts +0 -6
  187. package/dist/bun/BunBlobWatcherQueue.js +0 -17
  188. package/dist/bun/BunBundle.d.ts +0 -11
  189. package/dist/bun/BunChildProcessSpawner.d.ts +0 -3
  190. package/dist/bun/BunHttpServer.d.ts +0 -44
  191. package/dist/bun/BunHttpServer.js +0 -186
  192. package/dist/bun/BunHttpServer_web.d.ts +0 -60
  193. package/dist/bun/BunHttpServer_web.js +0 -252
  194. package/dist/bun/BunImportTrackerPlugin.d.ts +0 -13
  195. package/dist/bun/BunPlatformHttpServer.d.ts +0 -10
  196. package/dist/bun/BunPlatformHttpServer.js +0 -53
  197. package/dist/bun/BunRoute.d.ts +0 -48
  198. package/dist/bun/BunRuntime.d.ts +0 -2
  199. package/dist/bun/BunServer.d.ts +0 -40
  200. package/dist/bun/BunServerRequest.d.ts +0 -60
  201. package/dist/bun/BunServerRequest.js +0 -252
  202. package/dist/bun/BunSql.d.ts +0 -4
  203. package/dist/bun/BunSql.js +0 -81
  204. package/dist/bun/BunVirtualFilesPlugin.d.ts +0 -4
  205. package/dist/bun/_BunEnhancedResolve.d.ts +0 -45
  206. package/dist/bun/index.d.ts +0 -5
  207. package/dist/bundler/Bundle.d.ts +0 -61
  208. package/dist/bundler/BundleFiles.d.ts +0 -13
  209. package/dist/bundler/BundleHttp.d.ts +0 -45
  210. package/dist/bundler/BundleHttp.js +0 -176
  211. package/dist/bundler/BundleRoute.d.ts +0 -27
  212. package/dist/client/Overlay.d.ts +0 -2
  213. package/dist/client/ScrollState.d.ts +0 -6
  214. package/dist/client/index.d.ts +0 -6
  215. package/dist/console/Console.d.ts +0 -6
  216. package/dist/console/ConsoleErrors.d.ts +0 -3
  217. package/dist/console/ConsoleLogger.d.ts +0 -3
  218. package/dist/console/ConsoleMetrics.d.ts +0 -3
  219. package/dist/console/ConsoleProcess.d.ts +0 -3
  220. package/dist/console/ConsoleStore.d.ts +0 -144
  221. package/dist/console/ConsoleTracer.d.ts +0 -3
  222. package/dist/console/Simulation.d.ts +0 -2
  223. package/dist/console/index.d.ts +0 -3
  224. package/dist/console/routes/errors/route.d.ts +0 -10
  225. package/dist/console/routes/errors/route.js +0 -47
  226. package/dist/console/routes/fiberDetail.d.ts +0 -16
  227. package/dist/console/routes/fiberDetail.js +0 -38
  228. package/dist/console/routes/fibers/route.d.ts +0 -10
  229. package/dist/console/routes/fibers/route.js +0 -19
  230. package/dist/console/routes/git/route.d.ts +0 -11
  231. package/dist/console/routes/git/route.js +0 -33
  232. package/dist/console/routes/layout.d.ts +0 -9
  233. package/dist/console/routes/layout.js +0 -3
  234. package/dist/console/routes/logs/route.d.ts +0 -10
  235. package/dist/console/routes/logs/route.js +0 -32
  236. package/dist/console/routes/metrics/route.d.ts +0 -10
  237. package/dist/console/routes/metrics/route.js +0 -17
  238. package/dist/console/routes/route.d.ts +0 -6
  239. package/dist/console/routes/route.js +0 -5
  240. package/dist/console/routes/routes/route.d.ts +0 -6
  241. package/dist/console/routes/routes/route.js +0 -20
  242. package/dist/console/routes/services/route.d.ts +0 -6
  243. package/dist/console/routes/services/route.js +0 -12
  244. package/dist/console/routes/system/route.d.ts +0 -10
  245. package/dist/console/routes/system/route.js +0 -18
  246. package/dist/console/routes/traceDetail.d.ts +0 -16
  247. package/dist/console/routes/traceDetail.js +0 -14
  248. package/dist/console/routes/traces/route.d.ts +0 -10
  249. package/dist/console/routes/traces/route.js +0 -39
  250. package/dist/console/routes/tree.d.ts +0 -153
  251. package/dist/console/ui/Errors.d.ts +0 -4
  252. package/dist/console/ui/Errors.js +0 -15
  253. package/dist/console/ui/Fibers.d.ts +0 -24
  254. package/dist/console/ui/Fibers.js +0 -121
  255. package/dist/console/ui/Git.d.ts +0 -20
  256. package/dist/console/ui/Git.js +0 -95
  257. package/dist/console/ui/Logs.d.ts +0 -4
  258. package/dist/console/ui/Logs.js +0 -25
  259. package/dist/console/ui/Metrics.d.ts +0 -4
  260. package/dist/console/ui/Metrics.js +0 -26
  261. package/dist/console/ui/Routes.d.ts +0 -8
  262. package/dist/console/ui/Routes.js +0 -70
  263. package/dist/console/ui/Services.d.ts +0 -10
  264. package/dist/console/ui/Services.js +0 -246
  265. package/dist/console/ui/Shell.d.ts +0 -10
  266. package/dist/console/ui/Shell.js +0 -7
  267. package/dist/console/ui/System.d.ts +0 -4
  268. package/dist/console/ui/System.js +0 -35
  269. package/dist/console/ui/Traces.d.ts +0 -12
  270. package/dist/console/ui/Traces.js +0 -179
  271. package/dist/datastar/actions/fetch.d.ts +0 -30
  272. package/dist/datastar/actions/peek.d.ts +0 -1
  273. package/dist/datastar/actions/setAll.d.ts +0 -1
  274. package/dist/datastar/actions/toggleAll.d.ts +0 -1
  275. package/dist/datastar/attributes/attr.d.ts +0 -1
  276. package/dist/datastar/attributes/bind.d.ts +0 -1
  277. package/dist/datastar/attributes/class.d.ts +0 -1
  278. package/dist/datastar/attributes/computed.d.ts +0 -1
  279. package/dist/datastar/attributes/effect.d.ts +0 -1
  280. package/dist/datastar/attributes/indicator.d.ts +0 -1
  281. package/dist/datastar/attributes/init.d.ts +0 -1
  282. package/dist/datastar/attributes/jsonSignals.d.ts +0 -1
  283. package/dist/datastar/attributes/on.d.ts +0 -1
  284. package/dist/datastar/attributes/onIntersect.d.ts +0 -1
  285. package/dist/datastar/attributes/onInterval.d.ts +0 -1
  286. package/dist/datastar/attributes/onSignalPatch.d.ts +0 -1
  287. package/dist/datastar/attributes/ref.d.ts +0 -1
  288. package/dist/datastar/attributes/show.d.ts +0 -1
  289. package/dist/datastar/attributes/signals.d.ts +0 -1
  290. package/dist/datastar/attributes/style.d.ts +0 -1
  291. package/dist/datastar/attributes/text.d.ts +0 -1
  292. package/dist/datastar/engine.d.ts +0 -162
  293. package/dist/datastar/happydom.d.ts +0 -1
  294. package/dist/datastar/happydom.js +0 -8
  295. package/dist/datastar/index.d.ts +0 -24
  296. package/dist/datastar/load.d.ts +0 -24
  297. package/dist/datastar/load.js +0 -24
  298. package/dist/datastar/utils.d.ts +0 -51
  299. package/dist/datastar/watchers/patchElements.d.ts +0 -1
  300. package/dist/datastar/watchers/patchSignals.d.ts +0 -1
  301. package/dist/experimental/EncryptedCookies.d.ts +0 -48
  302. package/dist/experimental/SseHttpResponse.d.ts +0 -7
  303. package/dist/experimental/SseHttpResponse.js +0 -28
  304. package/dist/experimental/index.d.ts +0 -1
  305. package/dist/hyper/Hyper.d.ts +0 -25
  306. package/dist/hyper/HyperHtml.d.ts +0 -23
  307. package/dist/hyper/HyperHtml.test.d.ts +0 -1
  308. package/dist/hyper/HyperHtml.test.js +0 -197
  309. package/dist/hyper/HyperNode.d.ts +0 -14
  310. package/dist/hyper/HyperRoute.d.ts +0 -8
  311. package/dist/hyper/HyperRoute.test.d.ts +0 -1
  312. package/dist/hyper/HyperRoute.test.js +0 -83
  313. package/dist/hyper/html.d.ts +0 -11
  314. package/dist/hyper/index.d.ts +0 -6
  315. package/dist/hyper/jsx-runtime.d.ts +0 -7
  316. package/dist/index.d.ts +0 -8
  317. package/dist/inference_check.d.ts +0 -1
  318. package/dist/inference_check.js +0 -15
  319. package/dist/lint/plugin.d.ts +0 -86
  320. package/dist/lint/plugin.js +0 -341
  321. package/dist/middlewares/BasicAuthMiddleware.d.ts +0 -8
  322. package/dist/middlewares/BasicAuthMiddleware.js +0 -22
  323. package/dist/middlewares/index.d.ts +0 -1
  324. package/dist/middlewares/index.js +0 -1
  325. package/dist/node/Effectify.d.ts +0 -209
  326. package/dist/node/Effectify.js +0 -19
  327. package/dist/node/FileSystem.d.ts +0 -7
  328. package/dist/node/FileSystem.js +0 -420
  329. package/dist/node/NodeFileSystem.d.ts +0 -7
  330. package/dist/node/NodeUtils.d.ts +0 -2
  331. package/dist/node/PlatformError.d.ts +0 -46
  332. package/dist/node/PlatformError.js +0 -43
  333. package/dist/node/Utils.d.ts +0 -1
  334. package/dist/node/Utils.js +0 -19
  335. package/dist/repro_fail.d.ts +0 -1
  336. package/dist/repro_fail.js +0 -14
  337. package/dist/sql/bun/index.d.ts +0 -3
  338. package/dist/sql/mssql/docker.d.ts +0 -2
  339. package/dist/sql/mssql/index.d.ts +0 -21
  340. package/dist/testing/TestHttpClient.d.ts +0 -13
  341. package/dist/testing/TestHttpClient.js +0 -68
  342. package/dist/testing/TestLogger.d.ts +0 -13
  343. package/dist/testing/index.d.ts +0 -2
  344. package/dist/testing/utils.d.ts +0 -9
  345. package/dist/x/cloudflare/CloudflareTunnel.d.ts +0 -10
  346. package/dist/x/cloudflare/index.d.ts +0 -1
  347. package/dist/x/datastar/Datastar.d.ts +0 -6
  348. package/dist/x/datastar/Datastar.js +0 -47
  349. package/dist/x/datastar/index.d.ts +0 -1
  350. package/dist/x/datastar/index.js +0 -1
  351. package/dist/x/tailscale/TailscaleTunnel.d.ts +0 -15
  352. package/dist/x/tailscale/index.d.ts +0 -1
  353. package/dist/x/tailwind/TailwindPlugin.d.ts +0 -23
  354. package/dist/x/tailwind/compile.d.ts +0 -19
  355. package/dist/x/tailwind/plugin.d.ts +0 -2
  356. /package/src/{Sql.ts → sql/Sql.ts} +0 -0
@@ -1,60 +0,0 @@
1
- import type * as FileSystem from "@effect/platform/FileSystem";
2
- import * as Headers from "@effect/platform/Headers";
3
- import * as HttpIncomingMessage from "@effect/platform/HttpIncomingMessage";
4
- import type { HttpMethod } from "@effect/platform/HttpMethod";
5
- import * as HttpServerError from "@effect/platform/HttpServerError";
6
- import * as HttpServerRequest from "@effect/platform/HttpServerRequest";
7
- import * as HttpServerResponse from "@effect/platform/HttpServerResponse";
8
- import type * as Multipart from "@effect/platform/Multipart";
9
- import type * as Path from "@effect/platform/Path";
10
- import * as Socket from "@effect/platform/Socket";
11
- import * as UrlParams from "@effect/platform/UrlParams";
12
- import type { Server as BunServerInstance, ServerWebSocket } from "bun";
13
- import * as Deferred from "effect/Deferred";
14
- import * as Effect from "effect/Effect";
15
- import * as Inspectable from "effect/Inspectable";
16
- import * as Option from "effect/Option";
17
- import * as Runtime from "effect/Runtime";
18
- import type * as Scope from "effect/Scope";
19
- import * as Stream from "effect/Stream";
20
- export interface WebSocketContext {
21
- readonly deferred: Deferred.Deferred<ServerWebSocket<WebSocketContext>>;
22
- readonly closeDeferred: Deferred.Deferred<void, Socket.SocketError>;
23
- readonly buffer: Array<Uint8Array | string>;
24
- run: (_: Uint8Array | string) => void;
25
- }
26
- export declare class ServerRequestImpl extends Inspectable.Class implements HttpServerRequest.HttpServerRequest {
27
- readonly [HttpServerRequest.TypeId]: HttpServerRequest.TypeId;
28
- readonly [HttpIncomingMessage.TypeId]: HttpIncomingMessage.TypeId;
29
- readonly source: Request;
30
- resolve: (response: Response) => void;
31
- readonly url: string;
32
- private bunServer;
33
- headersOverride?: Headers.Headers;
34
- private remoteAddressOverride?;
35
- constructor(source: Request, resolve: (response: Response) => void, url: string, bunServer: BunServerInstance<WebSocketContext>, headersOverride?: Headers.Headers, remoteAddressOverride?: string);
36
- toJSON(): unknown;
37
- modify(options: {
38
- readonly url?: string | undefined;
39
- readonly headers?: Headers.Headers | undefined;
40
- readonly remoteAddress?: string | undefined;
41
- }): ServerRequestImpl;
42
- get method(): HttpMethod;
43
- get originalUrl(): string;
44
- get remoteAddress(): Option.Option<string>;
45
- get headers(): Headers.Headers;
46
- private cachedCookies;
47
- get cookies(): Record<string, string>;
48
- get stream(): Stream.Stream<Uint8Array, HttpServerError.RequestError>;
49
- private textEffect;
50
- get text(): Effect.Effect<string, HttpServerError.RequestError>;
51
- get json(): Effect.Effect<unknown, HttpServerError.RequestError>;
52
- get urlParamsBody(): Effect.Effect<UrlParams.UrlParams, HttpServerError.RequestError>;
53
- private multipartEffect;
54
- get multipart(): Effect.Effect<Multipart.Persisted, Multipart.MultipartError, Scope.Scope | FileSystem.FileSystem | Path.Path>;
55
- get multipartStream(): Stream.Stream<Multipart.Part, Multipart.MultipartError>;
56
- private arrayBufferEffect;
57
- get arrayBuffer(): Effect.Effect<ArrayBuffer, HttpServerError.RequestError>;
58
- get upgrade(): Effect.Effect<Socket.Socket, HttpServerError.RequestError>;
59
- }
60
- export declare function makeResponse(request: HttpServerRequest.HttpServerRequest, response: HttpServerResponse.HttpServerResponse, runtime: Runtime.Runtime<never>): Response;
@@ -1,252 +0,0 @@
1
- import * as Cookies from "@effect/platform/Cookies";
2
- import * as Headers from "@effect/platform/Headers";
3
- import * as HttpApp from "@effect/platform/HttpApp";
4
- import * as HttpIncomingMessage from "@effect/platform/HttpIncomingMessage";
5
- import * as HttpServerError from "@effect/platform/HttpServerError";
6
- import * as HttpServerRequest from "@effect/platform/HttpServerRequest";
7
- import * as Socket from "@effect/platform/Socket";
8
- import * as UrlParams from "@effect/platform/UrlParams";
9
- import * as Deferred from "effect/Deferred";
10
- import * as Effect from "effect/Effect";
11
- import * as FiberSet from "effect/FiberSet";
12
- import * as Inspectable from "effect/Inspectable";
13
- import * as Option from "effect/Option";
14
- import * as Stream from "effect/Stream";
15
- export class ServerRequestImpl extends Inspectable.Class {
16
- [HttpServerRequest.TypeId];
17
- [HttpIncomingMessage.TypeId];
18
- source;
19
- resolve;
20
- url;
21
- bunServer;
22
- headersOverride;
23
- remoteAddressOverride;
24
- constructor(source, resolve, url, bunServer, headersOverride, remoteAddressOverride) {
25
- super();
26
- this[HttpServerRequest.TypeId] = HttpServerRequest.TypeId;
27
- this[HttpIncomingMessage.TypeId] = HttpIncomingMessage.TypeId;
28
- this.source = source;
29
- this.resolve = resolve;
30
- this.url = url;
31
- this.bunServer = bunServer;
32
- this.headersOverride = headersOverride;
33
- this.remoteAddressOverride = remoteAddressOverride;
34
- }
35
- toJSON() {
36
- return HttpIncomingMessage.inspect(this, {
37
- _id: "@effect/platform/HttpServerRequest",
38
- method: this.method,
39
- url: this.originalUrl,
40
- });
41
- }
42
- modify(options) {
43
- return new ServerRequestImpl(this.source, this.resolve, options.url ?? this.url, this.bunServer, options.headers ?? this.headersOverride, options.remoteAddress ?? this.remoteAddressOverride);
44
- }
45
- get method() {
46
- return this.source.method.toUpperCase();
47
- }
48
- get originalUrl() {
49
- return this.source.url;
50
- }
51
- get remoteAddress() {
52
- return this.remoteAddressOverride
53
- ? Option.some(this.remoteAddressOverride)
54
- : Option.fromNullable(this.bunServer.requestIP(this.source)?.address);
55
- }
56
- get headers() {
57
- this.headersOverride ??= Headers.fromInput(this.source.headers);
58
- return this.headersOverride;
59
- }
60
- cachedCookies;
61
- get cookies() {
62
- if (this.cachedCookies) {
63
- return this.cachedCookies;
64
- }
65
- return this.cachedCookies = Cookies.parseHeader(this.headers.cookie ?? "");
66
- }
67
- get stream() {
68
- return this.source.body
69
- ? Stream.fromReadableStream(() => this.source.body, (cause) => new HttpServerError.RequestError({
70
- request: this,
71
- reason: "Decode",
72
- cause,
73
- }))
74
- : Stream.fail(new HttpServerError.RequestError({
75
- request: this,
76
- reason: "Decode",
77
- description: "can not create stream from empty body",
78
- }));
79
- }
80
- textEffect;
81
- get text() {
82
- if (this.textEffect) {
83
- return this.textEffect;
84
- }
85
- this.textEffect = Effect.runSync(Effect.cached(Effect.tryPromise({
86
- try: () => this.source.text(),
87
- catch: (cause) => new HttpServerError.RequestError({
88
- request: this,
89
- reason: "Decode",
90
- cause,
91
- }),
92
- })));
93
- return this.textEffect;
94
- }
95
- get json() {
96
- return Effect.tryMap(this.text, {
97
- try: (_) => JSON.parse(_),
98
- catch: (cause) => new HttpServerError.RequestError({
99
- request: this,
100
- reason: "Decode",
101
- cause,
102
- }),
103
- });
104
- }
105
- get urlParamsBody() {
106
- return Effect.flatMap(this.text, (_) => Effect.try({
107
- try: () => UrlParams.fromInput(new URLSearchParams(_)),
108
- catch: (cause) => new HttpServerError.RequestError({
109
- request: this,
110
- reason: "Decode",
111
- cause,
112
- }),
113
- }));
114
- }
115
- multipartEffect;
116
- get multipart() {
117
- if (this.multipartEffect) {
118
- return this.multipartEffect;
119
- }
120
- this.multipartEffect = Effect.runSync(Effect.cached(Effect.die("Multipart not implemented")));
121
- return this.multipartEffect;
122
- }
123
- get multipartStream() {
124
- return Stream.die("Multipart stream not implemented");
125
- }
126
- arrayBufferEffect;
127
- get arrayBuffer() {
128
- if (this.arrayBufferEffect) {
129
- return this.arrayBufferEffect;
130
- }
131
- this.arrayBufferEffect = Effect.runSync(Effect.cached(Effect.tryPromise({
132
- try: () => this.source.arrayBuffer(),
133
- catch: (cause) => new HttpServerError.RequestError({
134
- request: this,
135
- reason: "Decode",
136
- cause,
137
- }),
138
- })));
139
- return this.arrayBufferEffect;
140
- }
141
- get upgrade() {
142
- return Effect.flatMap(Effect.all([
143
- Deferred.make(),
144
- Deferred.make(),
145
- Effect.makeSemaphore(1),
146
- ]), ([deferred, closeDeferred, semaphore]) => Effect.async((resume) => {
147
- const success = this.bunServer.upgrade(this.source, {
148
- data: {
149
- deferred,
150
- closeDeferred,
151
- buffer: [],
152
- run: wsDefaultRun,
153
- },
154
- });
155
- if (!success) {
156
- resume(Effect.fail(new HttpServerError.RequestError({
157
- request: this,
158
- reason: "Decode",
159
- description: "Not an upgradeable ServerRequest",
160
- })));
161
- return;
162
- }
163
- resume(Effect.map(Deferred.await(deferred), (ws) => {
164
- const write = (chunk) => Effect.sync(() => {
165
- if (typeof chunk === "string") {
166
- ws.sendText(chunk);
167
- }
168
- else if (Socket.isCloseEvent(chunk)) {
169
- ws.close(chunk.code, chunk.reason);
170
- }
171
- else {
172
- ws.sendBinary(chunk);
173
- }
174
- return true;
175
- });
176
- const writer = Effect.succeed(write);
177
- const runRaw = Effect.fnUntraced(function* (handler, opts) {
178
- const set = yield* FiberSet.make();
179
- const run = yield* FiberSet.runtime(set)();
180
- function runRawInner(data) {
181
- const result = handler(data);
182
- if (Effect.isEffect(result)) {
183
- run(result);
184
- }
185
- }
186
- ws.data.run = runRawInner;
187
- ws.data.buffer.forEach(runRawInner);
188
- ws.data.buffer.length = 0;
189
- if (opts?.onOpen)
190
- yield* opts.onOpen;
191
- return yield* FiberSet.join(set);
192
- }, Effect.scoped, Effect.onExit((exit) => {
193
- ws.close(exit._tag === "Success" ? 1000 : 1011);
194
- return Effect.void;
195
- }), Effect.raceFirst(Deferred.await(closeDeferred)), semaphore.withPermits(1));
196
- const encoder = new TextEncoder();
197
- const run = (handler, opts) => runRaw((data) => typeof data === "string"
198
- ? handler(encoder.encode(data))
199
- : handler(data), opts);
200
- return Socket.Socket.of({
201
- [Socket.TypeId]: Socket.TypeId,
202
- run,
203
- runRaw,
204
- writer,
205
- });
206
- }));
207
- }));
208
- }
209
- }
210
- function wsDefaultRun(_) {
211
- this.buffer.push(_);
212
- }
213
- export function makeResponse(request, response, runtime) {
214
- const fields = {
215
- headers: new globalThis.Headers(response.headers),
216
- status: response.status,
217
- };
218
- if (!Cookies.isEmpty(response.cookies)) {
219
- for (const header of Cookies.toSetCookieHeaders(response.cookies)) {
220
- fields.headers.append("set-cookie", header);
221
- }
222
- }
223
- if (response.statusText !== undefined) {
224
- fields.statusText = response.statusText;
225
- }
226
- if (request.method === "HEAD") {
227
- return new Response(undefined, fields);
228
- }
229
- const ejectedResponse = HttpApp.unsafeEjectStreamScope(response);
230
- const body = ejectedResponse.body;
231
- switch (body._tag) {
232
- case "Empty": {
233
- return new Response(undefined, fields);
234
- }
235
- case "Uint8Array":
236
- case "Raw": {
237
- if (body.body instanceof Response) {
238
- for (const [key, value] of fields.headers.entries()) {
239
- body.body.headers.set(key, value);
240
- }
241
- return body.body;
242
- }
243
- return new Response(body.body, fields);
244
- }
245
- case "FormData": {
246
- return new Response(body.formData, fields);
247
- }
248
- case "Stream": {
249
- return new Response(Stream.toReadableStreamRuntime(body.stream, runtime), fields);
250
- }
251
- }
252
- }
@@ -1,13 +0,0 @@
1
- import { type BunPlugin, type Import } from "bun";
2
- export type ImportMap = ReadonlyMap<string, Array<Import>>;
3
- /**
4
- * Tracks all imported modules.
5
- * State can be accessed via 'virtual:import-tracker' module within a bundle
6
- * or through `state` property returned by this function.
7
- */
8
- export declare const make: (opts?: {
9
- includeNodeModules?: false;
10
- baseDir?: string;
11
- }) => BunPlugin & {
12
- state: ImportMap;
13
- };
@@ -1,10 +0,0 @@
1
- import * as HttpServer from "@effect/platform/HttpServer";
2
- import * as Effect from "effect/Effect";
3
- import type * as Scope from "effect/Scope";
4
- import * as BunServer from "./BunServer.ts";
5
- /**
6
- * From times when we used @effect/platform
7
- * Not used any more internally. Kept for the future,
8
- * in case someone will need it for whatever reason. [2026]
9
- */
10
- export declare const make: Effect.Effect<HttpServer.HttpServer, never, Scope.Scope | BunServer.BunServer>;
@@ -1,53 +0,0 @@
1
- import * as HttpApp from "@effect/platform/HttpApp";
2
- import * as HttpServer from "@effect/platform/HttpServer";
3
- import * as HttpServerError from "@effect/platform/HttpServerError";
4
- import * as HttpServerRequest from "@effect/platform/HttpServerRequest";
5
- import * as Effect from "effect/Effect";
6
- import * as FiberSet from "effect/FiberSet";
7
- import * as BunServer from "./BunServer.js";
8
- import * as BunServerRequest from "./BunServerRequest.js";
9
- /**
10
- * From times when we used @effect/platform
11
- * Not used any more internally. Kept for the future,
12
- * in case someone will need it for whatever reason. [2026]
13
- */
14
- export const make = Effect.gen(function* () {
15
- const bunServer = yield* BunServer.BunServer;
16
- return HttpServer.make({
17
- address: {
18
- _tag: "TcpAddress",
19
- port: bunServer.server.port,
20
- hostname: bunServer.server.hostname,
21
- },
22
- serve(httpApp, middleware) {
23
- return Effect.gen(function* () {
24
- const runFork = yield* FiberSet.makeRuntime();
25
- const runtime = yield* Effect.runtime();
26
- const app = HttpApp.toHandled(httpApp, (request, response) => Effect.sync(() => {
27
- ;
28
- request.resolve(BunServerRequest.makeResponse(request, response, runtime));
29
- }), middleware);
30
- function handler(request, server) {
31
- return new Promise((resolve, _reject) => {
32
- const fiber = runFork(Effect.provideService(app, HttpServerRequest.HttpServerRequest, new BunServerRequest.ServerRequestImpl(request, resolve, removeHost(request.url), server)));
33
- request.signal.addEventListener("abort", () => {
34
- runFork(fiber.interruptAsFork(HttpServerError.clientAbortFiberId));
35
- }, { once: true });
36
- });
37
- }
38
- yield* Effect.acquireRelease(Effect.sync(() => {
39
- bunServer.pushHandler(handler);
40
- }), () => Effect.sync(() => {
41
- bunServer.popHandler();
42
- }));
43
- });
44
- },
45
- });
46
- });
47
- const removeHost = (url) => {
48
- if (url[0] === "/") {
49
- return url;
50
- }
51
- const index = url.indexOf("/", url.indexOf("//") + 2);
52
- return index === -1 ? "/" : url.slice(index);
53
- };
@@ -1,48 +0,0 @@
1
- import type * as Bun from "bun";
2
- import * as Option from "effect/Option";
3
- import * as Route from "../Route.ts";
4
- import * as BunServer from "./BunServer.ts";
5
- declare const BunRouteError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
6
- readonly _tag: "BunRouteError";
7
- } & Readonly<A>;
8
- export declare class BunRouteError extends BunRouteError_base<{
9
- reason: "ProxyError" | "UnsupportedPattern";
10
- pattern: string;
11
- message: string;
12
- }> {
13
- }
14
- export type BunDescriptors = {
15
- bunPrefix: string;
16
- bunLoad: () => Promise<Bun.HTMLBundle>;
17
- };
18
- export declare function descriptors(route: Route.Route.Route<any, any, any, any, any>): BunDescriptors | undefined;
19
- type HTMLBundleModule = Bun.HTMLBundle | {
20
- default: Bun.HTMLBundle;
21
- };
22
- export declare function htmlBundle(load: () => HTMLBundleModule | Promise<HTMLBundleModule>): <D extends Route.RouteDescriptor.Any, B extends {}, I extends Route.Route.Tuple>(self: Route.RouteSet.RouteSet<D, B, I>) => Route.RouteSet.RouteSet<D, B, [...I, Route.Route.Route<BunDescriptors & {
23
- format: "html";
24
- }, {
25
- request: Request;
26
- }, string, BunRouteError, BunServer.BunServer>]>;
27
- type BunServerFetchHandler = (request: Request, server: Bun.Server<unknown>) => Response | Promise<Response>;
28
- type BunServerRouteHandler = Bun.HTMLBundle | BunServerFetchHandler | Partial<Record<Bun.Serve.HTTPMethod, BunServerFetchHandler>>;
29
- export type BunRoutes = Record<string, BunServerRouteHandler>;
30
- /**
31
- * Validates that a route pattern can be implemented with Bun.serve routes.
32
- *
33
- * Supported patterns (native or via multiple routes):
34
- * - /exact - Exact match
35
- * - /users/:id - Full-segment named param
36
- * - /path/* - Directory wildcard
37
- * - /[[404]] - Catch-all / Rest
38
- *
39
- * Unsupported patterns (cannot be implemented in Bun):
40
- * - /pk_[id] - Prefix before param
41
- * - /[id]_sfx - Suffix after param
42
- * - /[id].json - Suffix with dot
43
- * - /[id]~test - Suffix with tilde
44
- * - /hello-* - Inline prefix wildcard
45
- */
46
- export declare function validateBunPattern(pattern: string): Option.Option<BunRouteError>;
47
- export declare const isHtmlBundle: (handle: any) => boolean;
48
- export {};
@@ -1,2 +0,0 @@
1
- import * as PlatformRuntime from "../PlatformRuntime.ts";
2
- export declare const runMain: PlatformRuntime.RunMain;
@@ -1,40 +0,0 @@
1
- import * as Socket from "../Socket.ts";
2
- import type * as Bun from "bun";
3
- import * as Context from "effect/Context";
4
- import * as Deferred from "effect/Deferred";
5
- import * as Effect from "effect/Effect";
6
- import * as Layer from "effect/Layer";
7
- import type * as Scope from "effect/Scope";
8
- export interface WebSocketContext {
9
- readonly deferred: Deferred.Deferred<Bun.ServerWebSocket<WebSocketContext>>;
10
- readonly closeDeferred: Deferred.Deferred<void, Socket.SocketError>;
11
- readonly buffer: Array<Uint8Array | string>;
12
- run: (_: Uint8Array | string) => void;
13
- }
14
- type FetchHandler = (request: Request, server: Bun.Server<WebSocketContext>) => Response | Promise<Response>;
15
- /**
16
- * Basically `Omit<Bun.Serve.Options, "fetch" | "error" | "websocket">`
17
- * TypeScript 5.9 cannot verify discriminated union types used in
18
- * {@link Bun.serve} so we need to define them explicitly.
19
- */
20
- interface BunServeOptions {
21
- readonly port?: number;
22
- readonly hostname?: string;
23
- readonly reusePort?: boolean;
24
- readonly ipv6Only?: boolean;
25
- readonly idleTimeout?: number;
26
- readonly development?: boolean;
27
- }
28
- export type BunServer = {
29
- readonly server: Bun.Server<WebSocketContext>;
30
- readonly pushHandler: (fetch: FetchHandler) => void;
31
- readonly popHandler: () => void;
32
- };
33
- export declare const BunServer: Context.Tag<BunServer, BunServer>;
34
- export declare const make: (options: BunServeOptions) => Effect.Effect<BunServer, never, Scope.Scope>;
35
- /**
36
- * Provides HttpServer using BunServer under the hood.
37
- */
38
- export declare const layer: (options?: BunServeOptions) => Layer.Layer<BunServer>;
39
- export declare const withLogAddress: <A, E, R>(layer: Layer.Layer<A, E, R>) => Layer.Layer<A, E, R | Exclude<BunServer, A>>;
40
- export {};
@@ -1,60 +0,0 @@
1
- import type * as FileSystem from "@effect/platform/FileSystem";
2
- import * as Headers from "@effect/platform/Headers";
3
- import * as HttpIncomingMessage from "@effect/platform/HttpIncomingMessage";
4
- import type { HttpMethod } from "@effect/platform/HttpMethod";
5
- import * as HttpServerError from "@effect/platform/HttpServerError";
6
- import * as HttpServerRequest from "@effect/platform/HttpServerRequest";
7
- import * as HttpServerResponse from "@effect/platform/HttpServerResponse";
8
- import type * as Multipart from "@effect/platform/Multipart";
9
- import type * as Path from "@effect/platform/Path";
10
- import * as Socket from "@effect/platform/Socket";
11
- import * as UrlParams from "@effect/platform/UrlParams";
12
- import type { Server as BunServerInstance, ServerWebSocket } from "bun";
13
- import * as Deferred from "effect/Deferred";
14
- import * as Effect from "effect/Effect";
15
- import * as Inspectable from "effect/Inspectable";
16
- import * as Option from "effect/Option";
17
- import * as Runtime from "effect/Runtime";
18
- import type * as Scope from "effect/Scope";
19
- import * as Stream from "effect/Stream";
20
- export interface WebSocketContext {
21
- readonly deferred: Deferred.Deferred<ServerWebSocket<WebSocketContext>>;
22
- readonly closeDeferred: Deferred.Deferred<void, Socket.SocketError>;
23
- readonly buffer: Array<Uint8Array | string>;
24
- run: (_: Uint8Array | string) => void;
25
- }
26
- export declare class ServerRequestImpl extends Inspectable.Class implements HttpServerRequest.HttpServerRequest {
27
- readonly [HttpServerRequest.TypeId]: HttpServerRequest.TypeId;
28
- readonly [HttpIncomingMessage.TypeId]: HttpIncomingMessage.TypeId;
29
- readonly source: Request;
30
- resolve: (response: Response) => void;
31
- readonly url: string;
32
- private bunServer;
33
- headersOverride?: Headers.Headers;
34
- private remoteAddressOverride?;
35
- constructor(source: Request, resolve: (response: Response) => void, url: string, bunServer: BunServerInstance<WebSocketContext>, headersOverride?: Headers.Headers, remoteAddressOverride?: string);
36
- toJSON(): unknown;
37
- modify(options: {
38
- readonly url?: string | undefined;
39
- readonly headers?: Headers.Headers | undefined;
40
- readonly remoteAddress?: string | undefined;
41
- }): ServerRequestImpl;
42
- get method(): HttpMethod;
43
- get originalUrl(): string;
44
- get remoteAddress(): Option.Option<string>;
45
- get headers(): Headers.Headers;
46
- private cachedCookies;
47
- get cookies(): Record<string, string>;
48
- get stream(): Stream.Stream<Uint8Array, HttpServerError.RequestError>;
49
- private textEffect;
50
- get text(): Effect.Effect<string, HttpServerError.RequestError>;
51
- get json(): Effect.Effect<unknown, HttpServerError.RequestError>;
52
- get urlParamsBody(): Effect.Effect<UrlParams.UrlParams, HttpServerError.RequestError>;
53
- private multipartEffect;
54
- get multipart(): Effect.Effect<Multipart.Persisted, Multipart.MultipartError, Scope.Scope | FileSystem.FileSystem | Path.Path>;
55
- get multipartStream(): Stream.Stream<Multipart.Part, Multipart.MultipartError>;
56
- private arrayBufferEffect;
57
- get arrayBuffer(): Effect.Effect<ArrayBuffer, HttpServerError.RequestError>;
58
- get upgrade(): Effect.Effect<Socket.Socket, HttpServerError.RequestError>;
59
- }
60
- export declare function makeResponse(request: HttpServerRequest.HttpServerRequest, response: HttpServerResponse.HttpServerResponse, runtime: Runtime.Runtime<never>): Response;