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
package/dist/Start.js CHANGED
@@ -1,15 +1,20 @@
1
- import * as Context from "effect/Context";
2
- import * as Effect from "effect/Effect";
3
- import * as Function from "effect/Function";
4
- import * as Layer from "effect/Layer";
5
- import * as Option from "effect/Option";
6
- import * as BunRuntime from "./bun/BunRuntime.js";
7
- import * as BunServer from "./bun/BunServer.js";
8
- import * as NodeFileSystem from "./node/NodeFileSystem.js";
9
- import * as BunChildProcessSpawner from "./bun/BunChildProcessSpawner.js";
10
- export function layer(...layers) {
11
- return Layer.mergeAll(...layers);
1
+ import * as Context from "effect/Context"
2
+ import * as Deferred from "effect/Deferred"
3
+ import * as Effect from "effect/Effect"
4
+ import * as Function from "effect/Function"
5
+ import * as Layer from "effect/Layer"
6
+ import * as BunRuntime from "./bun/BunRuntime.js"
7
+ import * as BunServer from "./bun/BunServer.js"
8
+ import * as NodeFileSystem from "./node/NodeFileSystem.js"
9
+ import * as BunChildProcessSpawner from "./bun/BunChildProcessSpawner.js"
10
+ import * as StartApp from "./StartApp.js"
11
+
12
+ export function layer(
13
+ ...layers
14
+ ) {
15
+ return Layer.mergeAll(...layers)
12
16
  }
17
+
13
18
  /**
14
19
  * Bundles layers together, wiring their dependencies automatically.
15
20
  *
@@ -31,19 +36,44 @@ export function layer(...layers) {
31
36
  * @since 1.0.0
32
37
  * @category constructors
33
38
  */
34
- export function pack(...layers) {
35
- const layerArray = layers;
36
- const result = layerArray.reduce((acc, layer) => Layer.provideMerge(acc, layer), Layer.succeedContext(Context.empty()));
37
- return result;
39
+ export function pack(
40
+ ...layers
41
+ ) {
42
+ const layerArray = layers
43
+ const result = layerArray.reduce(
44
+ (acc, layer) => Layer.provideMerge(acc, layer),
45
+ Layer.succeedContext(Context.empty()),
46
+ )
47
+
48
+ return result
38
49
  }
39
- export function serve(load) {
40
- const appLayer = Function.pipe(Effect.tryPromise(load), Effect.map((v) => v.default), Effect.orDie, Layer.unwrapEffect);
41
- const serverLayer = Layer.scoped(BunServer.BunServer, Effect.gen(function* () {
42
- const existing = yield* Effect.serviceOption(BunServer.BunServer);
43
- if (Option.isSome(existing))
44
- return existing.value;
45
- return yield* BunServer.make({});
46
- }));
47
- const composed = Function.pipe(serverLayer, BunServer.withLogAddress, Layer.provide(appLayer), Layer.provide(NodeFileSystem.layer), Layer.provide(BunChildProcessSpawner.layer));
48
- return Function.pipe(composed, Layer.launch, BunRuntime.runMain);
50
+
51
+ export const Live = Layer.mergeAll(
52
+ NodeFileSystem.layer,
53
+ BunChildProcessSpawner.layer,
54
+ Layer.effect(
55
+ StartApp.StartApp,
56
+ Deferred.make().pipe(Effect.map((server) => ({ server }))),
57
+ ),
58
+ )
59
+
60
+ export function serve(
61
+ load,
62
+ ) {
63
+ const appLayer = Function.pipe(
64
+ Effect.tryPromise(load),
65
+ Effect.map((v) => v.default),
66
+ Effect.orDie,
67
+ Layer.unwrapEffect,
68
+ )
69
+
70
+ const appLayerResolved = Function.pipe(appLayer, Layer.provideMerge(Live))
71
+
72
+ const composed = Function.pipe(
73
+ BunServer.layerStart(),
74
+ BunServer.withLogAddress,
75
+ Layer.provide(appLayerResolved),
76
+ )
77
+
78
+ return Function.pipe(composed, Layer.launch, BunRuntime.runMain)
49
79
  }
package/dist/StartApp.js CHANGED
@@ -1,21 +1,3 @@
1
- import * as Context from "effect/Context";
2
- import * as Effect from "effect/Effect";
3
- import * as Function from "effect/Function";
4
- import * as Layer from "effect/Layer";
5
- import * as PubSub from "effect/PubSub";
6
- import * as Ref from "effect/Ref";
7
- export class StartApp extends Context.Tag("effect-start/StartApp")() {
8
- }
9
- export function layer(options) {
10
- return Layer.effect(StartApp, Effect.gen(function* () {
11
- const env = options?.env ?? process.env.NODE_ENV ?? "development";
12
- const middleware = yield* Ref.make(Function.identity);
13
- const events = yield* PubSub.unbounded();
14
- return StartApp.of({
15
- env,
16
- middleware,
17
- addMiddleware: (f) => Ref.update(middleware, (prev) => (app) => f(prev(app))),
18
- events,
19
- });
20
- }));
21
- }
1
+ import * as Context from "effect/Context"
2
+
3
+ export class StartApp extends Context.Tag("effect-start/StartApp")() {}
@@ -1,11 +1,14 @@
1
- import * as Cause from "effect/Cause";
2
- import * as Effect from "effect/Effect";
3
- import * as Fiber from "effect/Fiber";
4
- import * as Function from "effect/Function";
5
- import * as Predicate from "effect/Predicate";
6
- import * as Runtime from "effect/Runtime";
7
- import * as Stream from "effect/Stream";
8
- export const isStream = (u) => Predicate.hasProperty(u, Stream.StreamTypeId);
1
+ import * as Cause from "effect/Cause"
2
+ import * as Effect from "effect/Effect"
3
+ import * as Fiber from "effect/Fiber"
4
+ import * as Function from "effect/Function"
5
+ import * as Predicate from "effect/Predicate"
6
+ import * as Runtime from "effect/Runtime"
7
+ import * as Stream from "effect/Stream"
8
+
9
+ export const isStream = (u) =>
10
+ Predicate.hasProperty(u, Stream.StreamTypeId)
11
+
9
12
  /**
10
13
  * Patched version of original Stream.toReadableStreamRuntime (v3.14.4) to
11
14
  * fix an issue in Bun when native stream controller stops working when request
@@ -17,84 +20,116 @@ export const isStream = (u) => Predicate.hasProperty(u, Stream.StreamTypeId);
17
20
  * https://github.com/Effect-TS/effect/issues/4538
18
21
  * https://github.com/oven-sh/bun/issues/17837
19
22
  */
20
- export const toReadableStreamRuntimePatched = Function.dual((args) => Predicate.hasProperty(args[0], Stream.StreamTypeId) || Effect.isEffect(args[0]), (self, runtime, options) => {
21
- const runFork = Runtime.runFork(runtime);
22
- let currentResolve = undefined;
23
- let fiber = undefined;
24
- const latch = Effect.unsafeMakeLatch(false);
25
- return new ReadableStream({
23
+ export const toReadableStreamRuntimePatched = Function.dual(
24
+ (args) => Predicate.hasProperty(args[0], Stream.StreamTypeId) || Effect.isEffect(args[0]),
25
+ (
26
+ self,
27
+ runtime,
28
+ options,
29
+ ) => {
30
+ const runFork = Runtime.runFork(runtime)
31
+ let currentResolve = undefined
32
+ let fiber = undefined
33
+ const latch = Effect.unsafeMakeLatch(false)
34
+
35
+ return new ReadableStream(
36
+ {
26
37
  start(controller) {
27
- fiber = runFork(Stream.runForEachChunk(self, (chunk) => latch.whenOpen(Effect.sync(() => {
28
- latch.unsafeClose();
29
- try {
38
+ fiber = runFork(
39
+ Stream.runForEachChunk(self, (chunk) =>
40
+ latch.whenOpen(
41
+ Effect.sync(() => {
42
+ latch.unsafeClose()
43
+ try {
30
44
  for (const item of chunk) {
31
- controller.enqueue(item);
45
+ controller.enqueue(item)
32
46
  }
33
- }
34
- catch (e) {
35
- if (e.message ===
36
- `Value of "this" must be of type ReadableStreamDefaultController`) {
37
- // Do nothing when this happens in Bun.
47
+ } catch (e) {
48
+ if (
49
+ (e).message ===
50
+ `Value of "this" must be of type ReadableStreamDefaultController`
51
+ ) {
52
+ // Do nothing when this happens in Bun.
53
+ } else {
54
+ throw e
38
55
  }
39
- else {
40
- throw e;
41
- }
42
- }
43
- currentResolve();
44
- currentResolve = undefined;
45
- }))));
46
- // --- CHANGES HERE ---
47
- // In original code, we had fiber.addObserver here that called
48
- // error() or close() on controller. This patched version removes it.
56
+ }
57
+ currentResolve()
58
+ currentResolve = undefined
59
+ }),
60
+ ),
61
+ ),
62
+ )
63
+ // --- CHANGES HERE ---
64
+ // In original code, we had fiber.addObserver here that called
65
+ // error() or close() on controller. This patched version removes it.
49
66
  },
50
67
  pull() {
51
- return new Promise((resolve) => {
52
- currentResolve = resolve;
53
- Effect.runSync(latch.open);
54
- });
68
+ return new Promise((resolve) => {
69
+ currentResolve = resolve
70
+ Effect.runSync(latch.open)
71
+ })
55
72
  },
56
73
  cancel() {
57
- if (!fiber)
58
- return;
59
- return Effect.runPromise(Effect.asVoid(Fiber.interrupt(fiber)));
74
+ if (!fiber) return
75
+ return Effect.runPromise(Effect.asVoid(Fiber.interrupt(fiber)))
60
76
  },
61
- }, options?.strategy);
62
- });
63
- export const toReadableStreamRuntimePatched2 = Function.dual((args) => Predicate.hasProperty(args[0], Stream.StreamTypeId) || Effect.isEffect(args[0]), (self, runtime, options) => {
64
- const runSync = Runtime.runSync(runtime);
65
- const runFork = Runtime.runFork(runtime);
66
- let currentResolve = undefined;
67
- let fiber = undefined;
68
- const latch = Effect.unsafeMakeLatch(false);
69
- return new ReadableStream({
77
+ },
78
+ options?.strategy,
79
+ )
80
+ },
81
+ )
82
+
83
+ export const toReadableStreamRuntimePatched2 = Function.dual(
84
+ (args) => Predicate.hasProperty(args[0], Stream.StreamTypeId) || Effect.isEffect(args[0]),
85
+ (
86
+ self,
87
+ runtime,
88
+ options,
89
+ ) => {
90
+ const runSync = Runtime.runSync(runtime)
91
+ const runFork = Runtime.runFork(runtime)
92
+ let currentResolve = undefined
93
+ let fiber = undefined
94
+ const latch = Effect.unsafeMakeLatch(false)
95
+
96
+ return new ReadableStream(
97
+ {
70
98
  start(controller) {
71
- fiber = runFork(Stream.runForEachChunk(self, (chunk) => latch.whenOpen(Effect.sync(() => {
72
- latch.unsafeClose();
73
- for (const item of chunk) {
74
- controller.enqueue(item);
75
- }
76
- currentResolve();
77
- currentResolve = undefined;
78
- }))));
79
- fiber.addObserver((exit) => {
80
- if (exit._tag === "Failure") {
81
- controller.error(Cause.squash(exit.cause));
82
- }
83
- else {
84
- controller.close();
85
- }
86
- });
99
+ fiber = runFork(
100
+ Stream.runForEachChunk(self, (chunk) =>
101
+ latch.whenOpen(
102
+ Effect.sync(() => {
103
+ latch.unsafeClose()
104
+ for (const item of chunk) {
105
+ controller.enqueue(item)
106
+ }
107
+ currentResolve()
108
+ currentResolve = undefined
109
+ }),
110
+ ),
111
+ ),
112
+ )
113
+ fiber.addObserver((exit) => {
114
+ if (exit._tag === "Failure") {
115
+ controller.error(Cause.squash(exit.cause))
116
+ } else {
117
+ controller.close()
118
+ }
119
+ })
87
120
  },
88
121
  pull() {
89
- return new Promise((resolve) => {
90
- currentResolve = resolve;
91
- Effect.runSync(latch.open);
92
- });
122
+ return new Promise((resolve) => {
123
+ currentResolve = resolve
124
+ Effect.runSync(latch.open)
125
+ })
93
126
  },
94
127
  cancel() {
95
- if (!fiber)
96
- return;
97
- return Effect.runPromise(Effect.asVoid(Fiber.interrupt(fiber)));
128
+ if (!fiber) return
129
+ return Effect.runPromise(Effect.asVoid(Fiber.interrupt(fiber)))
98
130
  },
99
- }, options?.strategy);
100
- });
131
+ },
132
+ options?.strategy,
133
+ )
134
+ },
135
+ )
package/dist/System.js CHANGED
@@ -1,22 +1,38 @@
1
- import * as Effect from "effect/Effect";
2
- import * as ChildProcess from "./ChildProcess.js";
3
- import * as PlatformError from "./PlatformError.js";
4
- export const cwd = Effect.sync(() => process.cwd());
5
- export const which = (name) => Effect.flatMap(Effect.try({
6
- try: () => Bun.which(name),
7
- catch: (err) => new PlatformError.SystemError({
8
- reason: "Unknown",
9
- module: "System",
10
- method: "which",
11
- description: err instanceof Error ? err.message : `Failed to look up "${name}"`,
12
- cause: err,
1
+ import * as Effect from "effect/Effect"
2
+
3
+ import * as ChildProcess from "./ChildProcess.js"
4
+ import * as PlatformError from "./PlatformError.js"
5
+
6
+ export const cwd = Effect.sync(() => process.cwd())
7
+
8
+ export const which = (name) =>
9
+ Effect.flatMap(
10
+ Effect.try({
11
+ try: () => Bun.which(name),
12
+ catch: (err) =>
13
+ new PlatformError.SystemError({
14
+ reason: "Unknown",
15
+ module: "System",
16
+ method: "which",
17
+ description: err instanceof Error ? err.message : `Failed to look up "${name}"`,
18
+ cause: err,
19
+ }),
13
20
  }),
14
- }), (path) => path === null
15
- ? Effect.fail(new PlatformError.SystemError({
16
- reason: "NotFound",
17
- module: "System",
18
- method: "which",
19
- description: `Executable not found: "${name}"`,
20
- }))
21
- : Effect.succeed(path));
22
- export const spawn = (command, args, options) => ChildProcess.spawn(ChildProcess.make(command, args, options));
21
+ (path) =>
22
+ path === null
23
+ ? Effect.fail(
24
+ new PlatformError.SystemError({
25
+ reason: "NotFound",
26
+ module: "System",
27
+ method: "which",
28
+ description: `Executable not found: "${name}"`,
29
+ }),
30
+ )
31
+ : Effect.succeed(path),
32
+ )
33
+
34
+ export const spawn = (
35
+ command,
36
+ args,
37
+ options,
38
+ ) => ChildProcess.spawn(ChildProcess.make(command, args, options))
@@ -1,68 +1,74 @@
1
+
1
2
  export function format(tuple) {
2
- return ("/" +
3
- tuple
4
- .map((el) => {
5
- if (typeof el === "string")
6
- return el;
7
- if (Array.isArray(el[0]))
8
- return "[[" + el[0][0] + "]]";
9
- const [name, suffix, prefix] = el;
10
- return (prefix ?? "") + "[" + name + "]" + (suffix ?? "");
11
- })
12
- .join("/"));
3
+ return ("/" +
4
+ tuple
5
+ .map((el) => {
6
+ if (typeof el === "string") return el
7
+ if (Array.isArray(el[0])) return "[[" + el[0][0] + "]]"
8
+ const [name, suffix, prefix] = el
9
+ return (prefix ?? "") + "[" + name + "]" + (suffix ?? "")
10
+ })
11
+ .join("/"))
13
12
  }
13
+
14
14
  export function toColon(tuple) {
15
- return ("/" +
16
- tuple
17
- .map((el) => {
18
- if (typeof el === "string")
19
- return el;
20
- if (Array.isArray(el[0]))
21
- return "*";
22
- const [name, suffix, prefix] = el;
23
- return (prefix ?? "") + ":" + name + (suffix ?? "");
24
- })
25
- .join("/"));
15
+ return (
16
+ "/" +
17
+ tuple
18
+ .map((el) => {
19
+ if (typeof el === "string") return el
20
+ if (Array.isArray(el[0])) return "*"
21
+ const [name, suffix, prefix] = el
22
+ return (prefix ?? "") + ":" + name + (suffix ?? "")
23
+ })
24
+ .join("/")
25
+ )
26
26
  }
27
- export const toHono = toColon;
27
+
28
+ export const toHono = toColon
29
+
28
30
  export function toExpress(tuple) {
29
- return ("/" +
30
- tuple
31
- .map((el) => {
32
- if (typeof el === "string")
33
- return el;
34
- if (Array.isArray(el[0]))
35
- return "*" + el[0][0];
36
- const [name, suffix, prefix] = el;
37
- return (prefix ?? "") + ":" + name + (suffix ?? "");
38
- })
39
- .join("/"));
31
+ return (
32
+ "/" +
33
+ tuple
34
+ .map((el) => {
35
+ if (typeof el === "string") return el
36
+ if (Array.isArray(el[0])) return "*" + el[0][0]
37
+ const [name, suffix, prefix] = el
38
+ return (prefix ?? "") + ":" + name + (suffix ?? "")
39
+ })
40
+ .join("/")
41
+ )
40
42
  }
41
- export const toEffect = toColon;
43
+
44
+ export const toEffect = toColon
45
+
42
46
  export function toURLPattern(tuple) {
43
- return ("/" +
44
- tuple
45
- .map((el) => {
46
- if (typeof el === "string")
47
- return el;
48
- if (Array.isArray(el[0]))
49
- return ":" + el[0][0] + "+";
50
- const [name, suffix, prefix] = el;
51
- return (prefix ?? "") + ":" + name + (suffix ?? "");
52
- })
53
- .join("/"));
47
+ return (
48
+ "/" +
49
+ tuple
50
+ .map((el) => {
51
+ if (typeof el === "string") return el
52
+ if (Array.isArray(el[0])) return ":" + el[0][0] + "+"
53
+ const [name, suffix, prefix] = el
54
+ return (prefix ?? "") + ":" + name + (suffix ?? "")
55
+ })
56
+ .join("/")
57
+ )
54
58
  }
59
+
55
60
  export function toRemix(tuple) {
56
- return ("/" +
57
- tuple
58
- .map((el) => {
59
- if (typeof el === "string")
60
- return el;
61
- if (Array.isArray(el[0]))
62
- return "$";
63
- const [name, suffix, prefix] = el;
64
- return (prefix ?? "") + "$" + name + (suffix ?? "");
65
- })
66
- .join("/"));
61
+ return (
62
+ "/" +
63
+ tuple
64
+ .map((el) => {
65
+ if (typeof el === "string") return el
66
+ if (Array.isArray(el[0])) return "$"
67
+ const [name, suffix, prefix] = el
68
+ return (prefix ?? "") + "$" + name + (suffix ?? "")
69
+ })
70
+ .join("/")
71
+ )
67
72
  }
68
- export const toBun = toColon;
73
+
74
+ export const toBun = toColon