effect-start 0.28.0 → 0.30.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 (722) hide show
  1. package/README.md +1 -1
  2. package/dist/Cookies.d.ts +9 -41
  3. package/dist/Cookies.d.ts.map +1 -1
  4. package/dist/Cookies.js +2 -2
  5. package/dist/Cookies.js.map +1 -1
  6. package/dist/Development.d.ts +7 -21
  7. package/dist/Development.d.ts.map +1 -1
  8. package/dist/Development.js +6 -8
  9. package/dist/Development.js.map +1 -1
  10. package/dist/Entity.d.ts +5 -6
  11. package/dist/Entity.d.ts.map +1 -1
  12. package/dist/Entity.js +10 -7
  13. package/dist/Entity.js.map +1 -1
  14. package/dist/Fetch.d.ts +15 -4
  15. package/dist/Fetch.d.ts.map +1 -1
  16. package/dist/Fetch.js +74 -1
  17. package/dist/Fetch.js.map +1 -1
  18. package/dist/FileRouter.d.ts +4 -7
  19. package/dist/FileRouter.d.ts.map +1 -1
  20. package/dist/FileRouter.js +38 -29
  21. package/dist/FileRouter.js.map +1 -1
  22. package/dist/FileRouterCodegen.d.ts +2 -2
  23. package/dist/FileRouterCodegen.d.ts.map +1 -1
  24. package/dist/FileRouterCodegen.js +9 -21
  25. package/dist/FileRouterCodegen.js.map +1 -1
  26. package/dist/FileSystem.d.ts +39 -39
  27. package/dist/FileSystem.d.ts.map +1 -1
  28. package/dist/FileSystem.js +5 -3
  29. package/dist/FileSystem.js.map +1 -1
  30. package/dist/GlobalLayer.d.ts +2 -2
  31. package/dist/GlobalLayer.d.ts.map +1 -1
  32. package/dist/GlobalLayer.js +2 -2
  33. package/dist/GlobalLayer.js.map +1 -1
  34. package/dist/Html.d.ts +32 -0
  35. package/dist/Html.d.ts.map +1 -0
  36. package/dist/{hyper/HyperHtml.js → Html.js} +45 -26
  37. package/dist/Html.js.map +1 -0
  38. package/dist/PlatformRuntime.d.ts.map +1 -1
  39. package/dist/PlatformRuntime.js.map +1 -1
  40. package/dist/Route.d.ts +22 -9
  41. package/dist/Route.d.ts.map +1 -1
  42. package/dist/Route.js +25 -4
  43. package/dist/Route.js.map +1 -1
  44. package/dist/RouteBody.d.ts +14 -7
  45. package/dist/RouteBody.d.ts.map +1 -1
  46. package/dist/RouteBody.js +38 -27
  47. package/dist/RouteBody.js.map +1 -1
  48. package/dist/RouteError.js.map +1 -1
  49. package/dist/RouteHook.d.ts.map +1 -1
  50. package/dist/RouteHook.js.map +1 -1
  51. package/dist/RouteHttp.d.ts +1 -1
  52. package/dist/RouteHttp.d.ts.map +1 -1
  53. package/dist/RouteHttp.js +56 -32
  54. package/dist/RouteHttp.js.map +1 -1
  55. package/dist/RouteHttpTracer.d.ts.map +1 -1
  56. package/dist/RouteHttpTracer.js.map +1 -1
  57. package/dist/RouteMount.d.ts +2 -2
  58. package/dist/RouteMount.d.ts.map +1 -1
  59. package/dist/RouteMount.js +2 -2
  60. package/dist/RouteMount.js.map +1 -1
  61. package/dist/RouteSchema.d.ts +2 -2
  62. package/dist/RouteSchema.d.ts.map +1 -1
  63. package/dist/RouteSchema.js +2 -2
  64. package/dist/RouteSchema.js.map +1 -1
  65. package/dist/RouteSse.d.ts +9 -10
  66. package/dist/RouteSse.d.ts.map +1 -1
  67. package/dist/RouteSse.js +8 -12
  68. package/dist/RouteSse.js.map +1 -1
  69. package/dist/RouteTree.d.ts +2 -2
  70. package/dist/RouteTree.d.ts.map +1 -1
  71. package/dist/RouteTree.js +2 -2
  72. package/dist/RouteTree.js.map +1 -1
  73. package/dist/RouteTrie.js +1 -1
  74. package/dist/RouteTrie.js.map +1 -1
  75. package/dist/Socket.d.ts +13 -18
  76. package/dist/Socket.d.ts.map +1 -1
  77. package/dist/Socket.js +12 -13
  78. package/dist/Socket.js.map +1 -1
  79. package/dist/Start.d.ts +15 -23
  80. package/dist/Start.d.ts.map +1 -1
  81. package/dist/Start.js +17 -6
  82. package/dist/Start.js.map +1 -1
  83. package/dist/System.d.ts +20 -5
  84. package/dist/System.d.ts.map +1 -1
  85. package/dist/System.js +12 -42
  86. package/dist/System.js.map +1 -1
  87. package/dist/Unique.d.ts.map +1 -1
  88. package/dist/Unique.js.map +1 -1
  89. package/dist/{ChildProcess.d.ts → _ChildProcess.d.ts} +14 -15
  90. package/dist/_ChildProcess.d.ts.map +1 -0
  91. package/dist/{ChildProcess.js → _ChildProcess.js} +2 -2
  92. package/dist/_ChildProcess.js.map +1 -0
  93. package/dist/{ContentNegotiation.d.ts → _ContentNegotiation.d.ts} +1 -1
  94. package/dist/_ContentNegotiation.d.ts.map +1 -0
  95. package/dist/{ContentNegotiation.js → _ContentNegotiation.js} +1 -1
  96. package/dist/_ContentNegotiation.js.map +1 -0
  97. package/dist/{Docker.d.ts → _Docker.d.ts} +2 -2
  98. package/dist/_Docker.d.ts.map +1 -0
  99. package/dist/{Docker.js → _Docker.js} +1 -1
  100. package/dist/_Docker.js.map +1 -0
  101. package/dist/{Effectify.d.ts → _Effectify.d.ts} +1 -1
  102. package/dist/_Effectify.d.ts.map +1 -0
  103. package/dist/{Effectify.js → _Effectify.js} +1 -1
  104. package/dist/_Effectify.js.map +1 -0
  105. package/dist/{Http.d.ts → _Http.d.ts} +1 -8
  106. package/dist/_Http.d.ts.map +1 -0
  107. package/dist/{Http.js → _Http.js} +1 -17
  108. package/dist/_Http.js.map +1 -0
  109. package/dist/{PathPattern.d.ts → _PathPattern.d.ts} +12 -1
  110. package/dist/_PathPattern.d.ts.map +1 -0
  111. package/dist/{PathPattern.js → _PathPattern.js} +86 -1
  112. package/dist/_PathPattern.js.map +1 -0
  113. package/dist/_SchemaExtra.d.ts +4 -0
  114. package/dist/_SchemaExtra.d.ts.map +1 -0
  115. package/dist/{SchemaExtra.js → _SchemaExtra.js} +4 -4
  116. package/dist/_SchemaExtra.js.map +1 -0
  117. package/dist/{StartApp.d.ts → _StartApp.d.ts} +1 -1
  118. package/dist/_StartApp.d.ts.map +1 -0
  119. package/dist/{StartApp.js → _StartApp.js} +1 -1
  120. package/dist/_StartApp.js.map +1 -0
  121. package/dist/{StreamExtra.d.ts → _StreamExtra.d.ts} +5 -5
  122. package/dist/_StreamExtra.d.ts.map +1 -0
  123. package/dist/{StreamExtra.js → _StreamExtra.js} +1 -1
  124. package/dist/_StreamExtra.js.map +1 -0
  125. package/dist/{Values.d.ts → _Values.d.ts} +3 -3
  126. package/dist/_Values.d.ts.map +1 -0
  127. package/dist/{Values.js → _Values.js} +1 -1
  128. package/dist/_Values.js.map +1 -0
  129. package/dist/bun/BunBundle.d.ts +2 -2
  130. package/dist/bun/BunBundle.d.ts.map +1 -1
  131. package/dist/bun/BunBundle.js.map +1 -1
  132. package/dist/bun/BunChildProcessSpawner.d.ts +1 -1
  133. package/dist/bun/BunChildProcessSpawner.d.ts.map +1 -1
  134. package/dist/bun/BunChildProcessSpawner.js +9 -9
  135. package/dist/bun/BunChildProcessSpawner.js.map +1 -1
  136. package/dist/bun/BunImportTrackerPlugin.d.ts +2 -2
  137. package/dist/bun/BunImportTrackerPlugin.d.ts.map +1 -1
  138. package/dist/bun/BunImportTrackerPlugin.js.map +1 -1
  139. package/dist/bun/BunRoute.d.ts +2 -2
  140. package/dist/bun/BunRoute.d.ts.map +1 -1
  141. package/dist/bun/BunRoute.js +108 -40
  142. package/dist/bun/BunRoute.js.map +1 -1
  143. package/dist/bun/BunRuntime.js.map +1 -1
  144. package/dist/bun/BunServer.d.ts +5 -5
  145. package/dist/bun/BunServer.d.ts.map +1 -1
  146. package/dist/bun/BunServer.js +3 -3
  147. package/dist/bun/BunServer.js.map +1 -1
  148. package/dist/bun/BunVirtualFilesPlugin.js.map +1 -1
  149. package/dist/bun/_BunEnhancedResolve.d.ts.map +1 -1
  150. package/dist/bun/_BunEnhancedResolve.js.map +1 -1
  151. package/dist/bun/_empty.html +0 -0
  152. package/dist/bundler/Bundle.d.ts +2 -2
  153. package/dist/bundler/Bundle.d.ts.map +1 -1
  154. package/dist/bundler/Bundle.js.map +1 -1
  155. package/dist/bundler/BundleFiles.d.ts +1 -1
  156. package/dist/bundler/BundleFiles.d.ts.map +1 -1
  157. package/dist/bundler/BundleFiles.js.map +1 -1
  158. package/dist/bundler/BundleRoute.d.ts +6 -5
  159. package/dist/bundler/BundleRoute.d.ts.map +1 -1
  160. package/dist/bundler/BundleRoute.js +2 -2
  161. package/dist/bundler/BundleRoute.js.map +1 -1
  162. package/dist/cli/Argument.d.ts +26 -0
  163. package/dist/cli/Argument.d.ts.map +1 -0
  164. package/dist/cli/Argument.js +31 -0
  165. package/dist/cli/Argument.js.map +1 -0
  166. package/dist/cli/CliError.d.ts +15 -0
  167. package/dist/cli/CliError.d.ts.map +1 -0
  168. package/dist/cli/CliError.js +54 -0
  169. package/dist/cli/CliError.js.map +1 -0
  170. package/dist/cli/Command.d.ts +61 -0
  171. package/dist/cli/Command.d.ts.map +1 -0
  172. package/dist/cli/Command.js +453 -0
  173. package/dist/cli/Command.js.map +1 -0
  174. package/dist/cli/Flag.d.ts +32 -0
  175. package/dist/cli/Flag.d.ts.map +1 -0
  176. package/dist/cli/Flag.js +35 -0
  177. package/dist/cli/Flag.js.map +1 -0
  178. package/dist/cli/HelpDoc.d.ts +28 -0
  179. package/dist/cli/HelpDoc.d.ts.map +1 -0
  180. package/dist/cli/HelpDoc.js +40 -0
  181. package/dist/cli/HelpDoc.js.map +1 -0
  182. package/dist/cli/Param.d.ts +71 -0
  183. package/dist/cli/Param.d.ts.map +1 -0
  184. package/dist/cli/Param.js +236 -0
  185. package/dist/cli/Param.js.map +1 -0
  186. package/dist/cli/Primitive.d.ts +22 -0
  187. package/dist/cli/Primitive.d.ts.map +1 -0
  188. package/dist/cli/Primitive.js +73 -0
  189. package/dist/cli/Primitive.js.map +1 -0
  190. package/dist/cli/index.d.ts +8 -0
  191. package/dist/cli/index.d.ts.map +1 -0
  192. package/dist/cli/index.js +8 -0
  193. package/dist/cli/index.js.map +1 -0
  194. package/dist/client/Overlay.js.map +1 -1
  195. package/dist/client/ScrollState.js.map +1 -1
  196. package/dist/client/index.js.map +1 -1
  197. package/dist/cloudflare/CloudflareTunnel.d.ts +12 -0
  198. package/dist/cloudflare/CloudflareTunnel.d.ts.map +1 -0
  199. package/dist/{x/cloudflare → cloudflare}/CloudflareTunnel.js +1 -1
  200. package/dist/cloudflare/CloudflareTunnel.js.map +1 -0
  201. package/dist/cloudflare/index.d.ts.map +1 -0
  202. package/dist/cloudflare/index.js.map +1 -0
  203. package/dist/datastar/actions/fetch.js.map +1 -1
  204. package/dist/datastar/actions/peek.js.map +1 -1
  205. package/dist/datastar/actions/setAll.js.map +1 -1
  206. package/dist/datastar/actions/toggleAll.js.map +1 -1
  207. package/dist/datastar/attributes/attr.js.map +1 -1
  208. package/dist/datastar/attributes/bind.js.map +1 -1
  209. package/dist/datastar/attributes/class.js.map +1 -1
  210. package/dist/datastar/attributes/computed.js.map +1 -1
  211. package/dist/datastar/attributes/indicator.js.map +1 -1
  212. package/dist/datastar/attributes/init.js.map +1 -1
  213. package/dist/datastar/attributes/jsonSignals.js.map +1 -1
  214. package/dist/datastar/attributes/on.js.map +1 -1
  215. package/dist/datastar/attributes/onIntersect.js.map +1 -1
  216. package/dist/datastar/attributes/onInterval.js.map +1 -1
  217. package/dist/datastar/attributes/onSignalPatch.js.map +1 -1
  218. package/dist/datastar/attributes/ref.js.map +1 -1
  219. package/dist/datastar/attributes/show.js.map +1 -1
  220. package/dist/datastar/attributes/signals.js.map +1 -1
  221. package/dist/datastar/attributes/style.js.map +1 -1
  222. package/dist/datastar/attributes/text.js.map +1 -1
  223. package/dist/datastar/engine.d.ts +5 -5
  224. package/dist/datastar/engine.d.ts.map +1 -1
  225. package/dist/datastar/engine.js.map +1 -1
  226. package/dist/datastar/utils.d.ts +1 -1
  227. package/dist/datastar/utils.d.ts.map +1 -1
  228. package/dist/datastar/utils.js.map +1 -1
  229. package/dist/datastar/watchers/patchElements.js +3 -1
  230. package/dist/datastar/watchers/patchElements.js.map +1 -1
  231. package/dist/datastar/watchers/patchSignals.js.map +1 -1
  232. package/dist/experimental/EncryptedCookies.d.ts +4 -4
  233. package/dist/experimental/EncryptedCookies.d.ts.map +1 -1
  234. package/dist/experimental/EncryptedCookies.js.map +1 -1
  235. package/dist/index.d.ts +2 -0
  236. package/dist/index.d.ts.map +1 -1
  237. package/dist/index.js +2 -0
  238. package/dist/index.js.map +1 -1
  239. package/dist/jsx-runtime.d.ts +8 -0
  240. package/dist/jsx-runtime.d.ts.map +1 -0
  241. package/dist/{hyper/jsx-runtime.js → jsx-runtime.js} +2 -2
  242. package/dist/jsx-runtime.js.map +1 -0
  243. package/dist/lint/plugin.d.ts +18 -15
  244. package/dist/lint/plugin.d.ts.map +1 -1
  245. package/dist/lint/plugin.js +76 -80
  246. package/dist/lint/plugin.js.map +1 -1
  247. package/dist/node/NodeFileSystem.d.ts +3 -3
  248. package/dist/node/NodeFileSystem.d.ts.map +1 -1
  249. package/dist/node/NodeFileSystem.js +8 -7
  250. package/dist/node/NodeFileSystem.js.map +1 -1
  251. package/dist/node/NodeUtils.d.ts.map +1 -1
  252. package/dist/node/NodeUtils.js.map +1 -1
  253. package/dist/sql/SqlCache.d.ts +1 -0
  254. package/dist/sql/SqlCache.d.ts.map +1 -1
  255. package/dist/sql/SqlCache.js +5 -1
  256. package/dist/sql/SqlCache.js.map +1 -1
  257. package/dist/sql/SqlClient.js +1 -1
  258. package/dist/sql/SqlClient.js.map +1 -1
  259. package/dist/{SqlIntrospect.d.ts → sql/SqlIntrospect.d.ts} +3 -3
  260. package/dist/sql/SqlIntrospect.d.ts.map +1 -0
  261. package/dist/{SqlIntrospect.js → sql/SqlIntrospect.js} +1 -1
  262. package/dist/sql/SqlIntrospect.js.map +1 -0
  263. package/dist/sql/bun/index.d.ts +3 -3
  264. package/dist/sql/bun/index.d.ts.map +1 -1
  265. package/dist/sql/bun/index.js +1 -1
  266. package/dist/sql/bun/index.js.map +1 -1
  267. package/dist/sql/index.d.ts +1 -0
  268. package/dist/sql/index.d.ts.map +1 -1
  269. package/dist/sql/index.js +1 -0
  270. package/dist/sql/index.js.map +1 -1
  271. package/dist/sql/libsql/index.d.ts +1 -1
  272. package/dist/sql/libsql/index.d.ts.map +1 -1
  273. package/dist/sql/libsql/index.js +2 -2
  274. package/dist/sql/libsql/index.js.map +1 -1
  275. package/dist/sql/mssql/index.d.ts +3 -3
  276. package/dist/sql/mssql/index.d.ts.map +1 -1
  277. package/dist/sql/mssql/index.js +1 -1
  278. package/dist/sql/mssql/index.js.map +1 -1
  279. package/dist/sql/postgres/index.d.ts +1 -1
  280. package/dist/sql/postgres/index.d.ts.map +1 -1
  281. package/dist/sql/postgres/index.js.map +1 -1
  282. package/dist/studio/Simulation.d.ts.map +1 -0
  283. package/dist/studio/Simulation.js.map +1 -0
  284. package/dist/{tower/Tower.d.ts → studio/Studio.d.ts} +4 -4
  285. package/dist/studio/Studio.d.ts.map +1 -0
  286. package/dist/studio/Studio.js +30 -0
  287. package/dist/studio/Studio.js.map +1 -0
  288. package/dist/studio/StudioErrors.d.ts +4 -0
  289. package/dist/studio/StudioErrors.d.ts.map +1 -0
  290. package/dist/{tower/TowerErrors.js → studio/StudioErrors.js} +6 -6
  291. package/dist/studio/StudioErrors.js.map +1 -0
  292. package/dist/{tower/TowerLogger.d.ts → studio/StudioLogger.d.ts} +1 -1
  293. package/dist/studio/StudioLogger.d.ts.map +1 -0
  294. package/dist/{tower/TowerLogger.js → studio/StudioLogger.js} +7 -7
  295. package/dist/studio/StudioLogger.js.map +1 -0
  296. package/dist/studio/StudioMetrics.d.ts +4 -0
  297. package/dist/studio/StudioMetrics.d.ts.map +1 -0
  298. package/dist/{tower/TowerMetrics.js → studio/StudioMetrics.js} +3 -3
  299. package/dist/studio/StudioMetrics.js.map +1 -0
  300. package/dist/studio/StudioProcess.d.ts +4 -0
  301. package/dist/studio/StudioProcess.d.ts.map +1 -0
  302. package/dist/{tower/TowerProcess.js → studio/StudioProcess.js} +3 -3
  303. package/dist/studio/StudioProcess.js.map +1 -0
  304. package/dist/{tower/TowerStore.d.ts → studio/StudioStore.d.ts} +33 -33
  305. package/dist/studio/StudioStore.d.ts.map +1 -0
  306. package/dist/{tower/TowerStore.js → studio/StudioStore.js} +5 -5
  307. package/dist/studio/StudioStore.js.map +1 -0
  308. package/dist/studio/StudioTracer.d.ts +4 -0
  309. package/dist/studio/StudioTracer.d.ts.map +1 -0
  310. package/dist/{tower/TowerTracer.js → studio/StudioTracer.js} +21 -21
  311. package/dist/studio/StudioTracer.js.map +1 -0
  312. package/dist/studio/index.d.ts +4 -0
  313. package/dist/studio/index.d.ts.map +1 -0
  314. package/dist/studio/index.js +4 -0
  315. package/dist/studio/index.js.map +1 -0
  316. package/dist/{tower/routes/logs → studio/routes/errors}/route.d.ts +1 -1
  317. package/dist/{tower/routes/metrics → studio/routes/errors}/route.d.ts.map +1 -1
  318. package/dist/studio/routes/errors/route.js +42 -0
  319. package/dist/studio/routes/errors/route.js.map +1 -0
  320. package/dist/{tower → studio}/routes/fiberDetail.d.ts +1 -1
  321. package/dist/studio/routes/fiberDetail.d.ts.map +1 -0
  322. package/dist/{tower → studio}/routes/fiberDetail.js +8 -9
  323. package/dist/studio/routes/fiberDetail.js.map +1 -0
  324. package/dist/{tower/routes/traces → studio/routes/fibers}/route.d.ts +1 -1
  325. package/dist/studio/routes/fibers/route.d.ts.map +1 -0
  326. package/dist/studio/routes/fibers/route.js +24 -0
  327. package/dist/studio/routes/fibers/route.js.map +1 -0
  328. package/dist/studio/routes/layout.d.ts.map +1 -0
  329. package/{src/tower → dist/studio}/routes/layout.html +1 -1
  330. package/dist/studio/routes/layout.js.map +1 -0
  331. package/dist/{tower/routes/errors → studio/routes/logs}/route.d.ts +1 -1
  332. package/dist/studio/routes/logs/route.d.ts.map +1 -0
  333. package/dist/studio/routes/logs/route.js +29 -0
  334. package/dist/studio/routes/logs/route.js.map +1 -0
  335. package/dist/{tower → studio}/routes/metrics/route.d.ts +1 -1
  336. package/dist/studio/routes/metrics/route.d.ts.map +1 -0
  337. package/dist/studio/routes/metrics/route.js +17 -0
  338. package/dist/studio/routes/metrics/route.js.map +1 -0
  339. package/dist/{tower → studio}/routes/route.d.ts +2 -2
  340. package/dist/studio/routes/route.d.ts.map +1 -0
  341. package/dist/studio/routes/route.js +6 -0
  342. package/dist/studio/routes/route.js.map +1 -0
  343. package/dist/{tower → studio}/routes/routes/route.d.ts +1 -1
  344. package/dist/studio/routes/routes/route.d.ts.map +1 -0
  345. package/dist/{tower → studio}/routes/routes/route.js +3 -6
  346. package/dist/studio/routes/routes/route.js.map +1 -0
  347. package/dist/{tower → studio}/routes/services/route.d.ts +1 -1
  348. package/dist/studio/routes/services/route.d.ts.map +1 -0
  349. package/dist/studio/routes/services/route.js +12 -0
  350. package/dist/studio/routes/services/route.js.map +1 -0
  351. package/dist/{tower → studio}/routes/system/route.d.ts +1 -1
  352. package/dist/studio/routes/system/route.d.ts.map +1 -0
  353. package/dist/studio/routes/system/route.js +18 -0
  354. package/dist/studio/routes/system/route.js.map +1 -0
  355. package/dist/{tower → studio}/routes/traceDetail.d.ts +1 -1
  356. package/dist/studio/routes/traceDetail.d.ts.map +1 -0
  357. package/dist/studio/routes/traceDetail.js +19 -0
  358. package/dist/studio/routes/traceDetail.js.map +1 -0
  359. package/dist/{tower/routes/fibers → studio/routes/traces}/route.d.ts +1 -1
  360. package/dist/studio/routes/traces/route.d.ts.map +1 -0
  361. package/dist/studio/routes/traces/route.js +29 -0
  362. package/dist/studio/routes/traces/route.js.map +1 -0
  363. package/dist/{tower → studio}/routes/tree.d.ts +47 -47
  364. package/dist/studio/routes/tree.d.ts.map +1 -0
  365. package/dist/studio/routes/tree.js.map +1 -0
  366. package/dist/studio/ui/Errors.d.ts +5 -0
  367. package/dist/studio/ui/Errors.d.ts.map +1 -0
  368. package/dist/studio/ui/Errors.js +17 -0
  369. package/dist/studio/ui/Errors.js.map +1 -0
  370. package/dist/{tower → studio}/ui/Fibers.d.ts +7 -7
  371. package/dist/studio/ui/Fibers.d.ts.map +1 -0
  372. package/dist/studio/ui/Fibers.js +134 -0
  373. package/dist/studio/ui/Fibers.js.map +1 -0
  374. package/dist/studio/ui/Logs.d.ts +5 -0
  375. package/dist/studio/ui/Logs.d.ts.map +1 -0
  376. package/dist/{tower → studio}/ui/Logs.js +2 -3
  377. package/dist/studio/ui/Logs.js.map +1 -0
  378. package/dist/studio/ui/Metrics.d.ts +5 -0
  379. package/dist/studio/ui/Metrics.d.ts.map +1 -0
  380. package/dist/{tower → studio}/ui/Metrics.js +4 -11
  381. package/dist/studio/ui/Metrics.js.map +1 -0
  382. package/dist/{tower → studio}/ui/Routes.d.ts +1 -1
  383. package/dist/studio/ui/Routes.d.ts.map +1 -0
  384. package/dist/{tower → studio}/ui/Routes.js +4 -12
  385. package/dist/studio/ui/Routes.js.map +1 -0
  386. package/dist/{tower → studio}/ui/Services.d.ts +1 -1
  387. package/dist/studio/ui/Services.d.ts.map +1 -0
  388. package/dist/{tower → studio}/ui/Services.js +2 -9
  389. package/dist/studio/ui/Services.js.map +1 -0
  390. package/dist/{tower → studio}/ui/Shell.d.ts +2 -2
  391. package/dist/studio/ui/Shell.d.ts.map +1 -0
  392. package/dist/studio/ui/Shell.js +8 -0
  393. package/dist/studio/ui/Shell.js.map +1 -0
  394. package/dist/studio/ui/System.d.ts +5 -0
  395. package/dist/studio/ui/System.d.ts.map +1 -0
  396. package/dist/studio/ui/System.js +36 -0
  397. package/dist/studio/ui/System.js.map +1 -0
  398. package/dist/studio/ui/Traces.d.ts +13 -0
  399. package/dist/studio/ui/Traces.d.ts.map +1 -0
  400. package/dist/studio/ui/Traces.js +182 -0
  401. package/dist/studio/ui/Traces.js.map +1 -0
  402. package/dist/tailscale/TailscaleTunnel.d.ts +16 -0
  403. package/dist/tailscale/TailscaleTunnel.d.ts.map +1 -0
  404. package/dist/{x/tailscale → tailscale}/TailscaleTunnel.js +4 -5
  405. package/dist/tailscale/TailscaleTunnel.js.map +1 -0
  406. package/dist/tailscale/index.d.ts.map +1 -0
  407. package/dist/tailscale/index.js.map +1 -0
  408. package/dist/{x/tailwind → tailwind}/TailwindPlugin.d.ts +5 -5
  409. package/dist/tailwind/TailwindPlugin.d.ts.map +1 -0
  410. package/dist/tailwind/TailwindPlugin.js.map +1 -0
  411. package/dist/tailwind/compile.d.ts.map +1 -0
  412. package/dist/{x/tailwind → tailwind}/compile.js +1 -1
  413. package/dist/tailwind/compile.js.map +1 -0
  414. package/dist/tailwind/index.d.ts +3 -0
  415. package/dist/tailwind/index.d.ts.map +1 -0
  416. package/dist/tailwind/index.js +3 -0
  417. package/dist/tailwind/index.js.map +1 -0
  418. package/dist/tailwind/plugin.d.ts.map +1 -0
  419. package/dist/{x/tailwind → tailwind}/plugin.js +1 -1
  420. package/dist/{x/tailwind → tailwind}/plugin.js.map +1 -1
  421. package/dist/testing/TestLogger.js.map +1 -1
  422. package/dist/testing/utils.d.ts +3 -1
  423. package/dist/testing/utils.d.ts.map +1 -1
  424. package/dist/testing/utils.js +39 -0
  425. package/dist/testing/utils.js.map +1 -1
  426. package/package.json +53 -71
  427. package/src/Cookies.ts +4 -8
  428. package/src/Development.ts +21 -21
  429. package/src/Entity.ts +24 -19
  430. package/src/Fetch.ts +101 -5
  431. package/src/FileRouter.ts +45 -48
  432. package/src/FileRouterCodegen.ts +9 -23
  433. package/src/FileSystem.ts +43 -63
  434. package/src/GlobalLayer.ts +4 -2
  435. package/src/{hyper/HyperHtml.ts → Html.ts} +90 -30
  436. package/src/Route.ts +69 -13
  437. package/src/RouteBody.ts +88 -63
  438. package/src/RouteHttp.ts +152 -114
  439. package/src/RouteMount.ts +4 -4
  440. package/src/RouteSchema.ts +2 -2
  441. package/src/RouteSse.ts +28 -37
  442. package/src/RouteTree.ts +2 -2
  443. package/src/RouteTrie.ts +1 -1
  444. package/src/Socket.ts +17 -27
  445. package/src/Start.ts +39 -47
  446. package/src/System.ts +41 -65
  447. package/src/{ChildProcess.ts → _ChildProcess.ts} +14 -23
  448. package/src/{Docker.ts → _Docker.ts} +1 -1
  449. package/src/{Http.ts → _Http.ts} +0 -28
  450. package/src/{PathPattern.ts → _PathPattern.ts} +105 -0
  451. package/src/{SchemaExtra.ts → _SchemaExtra.ts} +3 -4
  452. package/src/bun/BunChildProcessSpawner.ts +9 -9
  453. package/src/bun/BunRoute.ts +130 -45
  454. package/src/bun/BunServer.ts +4 -3
  455. package/src/bundler/BundleRoute.ts +2 -2
  456. package/src/cli/Argument.ts +45 -0
  457. package/src/cli/CliError.ts +68 -0
  458. package/src/cli/Command.ts +685 -0
  459. package/src/cli/Flag.ts +63 -0
  460. package/src/cli/HelpDoc.ts +67 -0
  461. package/src/cli/Param.ts +418 -0
  462. package/src/cli/Primitive.ts +94 -0
  463. package/src/cli/index.ts +7 -0
  464. package/src/{x/cloudflare → cloudflare}/CloudflareTunnel.ts +1 -1
  465. package/src/datastar/watchers/patchElements.ts +4 -2
  466. package/src/index.ts +2 -0
  467. package/src/jsx-runtime.ts +15 -0
  468. package/src/{hyper/jsx.d.ts → jsx.d.ts} +3 -3
  469. package/src/lint/plugin.js +86 -97
  470. package/src/node/NodeFileSystem.ts +15 -14
  471. package/src/sql/SqlCache.ts +14 -1
  472. package/src/sql/SqlClient.ts +1 -1
  473. package/src/{SqlIntrospect.ts → sql/SqlIntrospect.ts} +1 -1
  474. package/src/sql/bun/index.ts +1 -1
  475. package/src/sql/index.ts +1 -0
  476. package/src/sql/libsql/index.ts +1 -1
  477. package/src/sql/mssql/index.ts +1 -1
  478. package/src/studio/Studio.ts +47 -0
  479. package/src/{tower/TowerErrors.ts → studio/StudioErrors.ts} +13 -13
  480. package/src/{tower/TowerLogger.ts → studio/StudioLogger.ts} +10 -10
  481. package/src/{tower/TowerMetrics.ts → studio/StudioMetrics.ts} +5 -5
  482. package/src/{tower/TowerProcess.ts → studio/StudioProcess.ts} +4 -4
  483. package/src/{tower/TowerStore.ts → studio/StudioStore.ts} +37 -37
  484. package/src/{tower/TowerTracer.ts → studio/StudioTracer.ts} +25 -25
  485. package/src/studio/index.ts +3 -0
  486. package/src/{tower → studio}/routes/errors/route.tsx +7 -8
  487. package/src/{tower → studio}/routes/fiberDetail.tsx +9 -10
  488. package/src/{tower → studio}/routes/fibers/route.tsx +13 -14
  489. package/src/studio/routes/layout.html +340 -0
  490. package/src/{tower → studio}/routes/logs/route.tsx +7 -8
  491. package/src/{tower → studio}/routes/metrics/route.tsx +8 -9
  492. package/src/studio/routes/route.tsx +8 -0
  493. package/src/{tower → studio}/routes/routes/route.tsx +3 -4
  494. package/src/{tower → studio}/routes/services/route.tsx +3 -4
  495. package/src/{tower → studio}/routes/system/route.tsx +8 -9
  496. package/src/{tower → studio}/routes/traceDetail.tsx +6 -7
  497. package/src/{tower → studio}/routes/traces/route.tsx +8 -9
  498. package/src/{tower → studio}/ui/Errors.tsx +3 -3
  499. package/src/{tower → studio}/ui/Fibers.tsx +7 -7
  500. package/src/{tower → studio}/ui/Logs.tsx +3 -3
  501. package/src/{tower → studio}/ui/Metrics.tsx +4 -4
  502. package/src/{tower → studio}/ui/Shell.tsx +1 -1
  503. package/src/{tower → studio}/ui/System.tsx +2 -2
  504. package/src/{tower → studio}/ui/Traces.tsx +16 -16
  505. package/src/{x/tailscale → tailscale}/TailscaleTunnel.ts +4 -5
  506. package/src/{x/tailwind → tailwind}/compile.ts +1 -1
  507. package/src/tailwind/index.ts +2 -0
  508. package/src/{x/tailwind → tailwind}/plugin.ts +1 -1
  509. package/src/testing/utils.ts +59 -0
  510. package/dist/ChildProcess.d.ts.map +0 -1
  511. package/dist/ChildProcess.js.map +0 -1
  512. package/dist/Commander.d.ts +0 -101
  513. package/dist/Commander.d.ts.map +0 -1
  514. package/dist/Commander.js +0 -327
  515. package/dist/Commander.js.map +0 -1
  516. package/dist/ContentNegotiation.d.ts.map +0 -1
  517. package/dist/ContentNegotiation.js.map +0 -1
  518. package/dist/Docker.d.ts.map +0 -1
  519. package/dist/Docker.js.map +0 -1
  520. package/dist/Effectify.d.ts.map +0 -1
  521. package/dist/Effectify.js.map +0 -1
  522. package/dist/FilePathPattern.d.ts +0 -30
  523. package/dist/FilePathPattern.d.ts.map +0 -1
  524. package/dist/FilePathPattern.js +0 -87
  525. package/dist/FilePathPattern.js.map +0 -1
  526. package/dist/Http.d.ts.map +0 -1
  527. package/dist/Http.js.map +0 -1
  528. package/dist/PathPattern.d.ts.map +0 -1
  529. package/dist/PathPattern.js.map +0 -1
  530. package/dist/PlatformError.d.ts +0 -39
  531. package/dist/PlatformError.d.ts.map +0 -1
  532. package/dist/PlatformError.js +0 -26
  533. package/dist/PlatformError.js.map +0 -1
  534. package/dist/SchemaExtra.d.ts +0 -8
  535. package/dist/SchemaExtra.d.ts.map +0 -1
  536. package/dist/SchemaExtra.js.map +0 -1
  537. package/dist/SqlIntrospect.d.ts.map +0 -1
  538. package/dist/SqlIntrospect.js.map +0 -1
  539. package/dist/StartApp.d.ts.map +0 -1
  540. package/dist/StartApp.js.map +0 -1
  541. package/dist/StreamExtra.d.ts.map +0 -1
  542. package/dist/StreamExtra.js.map +0 -1
  543. package/dist/TuplePathPattern.d.ts +0 -10
  544. package/dist/TuplePathPattern.d.ts.map +0 -1
  545. package/dist/TuplePathPattern.js +0 -69
  546. package/dist/TuplePathPattern.js.map +0 -1
  547. package/dist/Values.d.ts.map +0 -1
  548. package/dist/Values.js.map +0 -1
  549. package/dist/hyper/Hyper.d.ts +0 -26
  550. package/dist/hyper/Hyper.d.ts.map +0 -1
  551. package/dist/hyper/Hyper.js +0 -24
  552. package/dist/hyper/Hyper.js.map +0 -1
  553. package/dist/hyper/HyperHtml.d.ts +0 -24
  554. package/dist/hyper/HyperHtml.d.ts.map +0 -1
  555. package/dist/hyper/HyperHtml.js.map +0 -1
  556. package/dist/hyper/HyperHtml.test.d.ts +0 -2
  557. package/dist/hyper/HyperHtml.test.d.ts.map +0 -1
  558. package/dist/hyper/HyperHtml.test.js +0 -283
  559. package/dist/hyper/HyperHtml.test.js.map +0 -1
  560. package/dist/hyper/HyperNode.d.ts +0 -15
  561. package/dist/hyper/HyperNode.d.ts.map +0 -1
  562. package/dist/hyper/HyperNode.js +0 -12
  563. package/dist/hyper/HyperNode.js.map +0 -1
  564. package/dist/hyper/HyperRoute.d.ts +0 -9
  565. package/dist/hyper/HyperRoute.d.ts.map +0 -1
  566. package/dist/hyper/HyperRoute.js +0 -33
  567. package/dist/hyper/HyperRoute.js.map +0 -1
  568. package/dist/hyper/HyperRoute.test.d.ts +0 -2
  569. package/dist/hyper/HyperRoute.test.d.ts.map +0 -1
  570. package/dist/hyper/HyperRoute.test.js +0 -86
  571. package/dist/hyper/HyperRoute.test.js.map +0 -1
  572. package/dist/hyper/html.d.ts +0 -11
  573. package/dist/hyper/html.d.ts.map +0 -1
  574. package/dist/hyper/html.js +0 -31
  575. package/dist/hyper/html.js.map +0 -1
  576. package/dist/hyper/index.d.ts +0 -7
  577. package/dist/hyper/index.d.ts.map +0 -1
  578. package/dist/hyper/index.js +0 -6
  579. package/dist/hyper/index.js.map +0 -1
  580. package/dist/hyper/jsx-runtime.d.ts +0 -8
  581. package/dist/hyper/jsx-runtime.d.ts.map +0 -1
  582. package/dist/hyper/jsx-runtime.js.map +0 -1
  583. package/dist/tower/Simulation.d.ts.map +0 -1
  584. package/dist/tower/Simulation.js.map +0 -1
  585. package/dist/tower/Tower.d.ts.map +0 -1
  586. package/dist/tower/Tower.js +0 -30
  587. package/dist/tower/Tower.js.map +0 -1
  588. package/dist/tower/TowerErrors.d.ts +0 -4
  589. package/dist/tower/TowerErrors.d.ts.map +0 -1
  590. package/dist/tower/TowerErrors.js.map +0 -1
  591. package/dist/tower/TowerLogger.d.ts.map +0 -1
  592. package/dist/tower/TowerLogger.js.map +0 -1
  593. package/dist/tower/TowerMetrics.d.ts +0 -4
  594. package/dist/tower/TowerMetrics.d.ts.map +0 -1
  595. package/dist/tower/TowerMetrics.js.map +0 -1
  596. package/dist/tower/TowerProcess.d.ts +0 -4
  597. package/dist/tower/TowerProcess.d.ts.map +0 -1
  598. package/dist/tower/TowerProcess.js.map +0 -1
  599. package/dist/tower/TowerStore.d.ts.map +0 -1
  600. package/dist/tower/TowerStore.js.map +0 -1
  601. package/dist/tower/TowerTracer.d.ts +0 -4
  602. package/dist/tower/TowerTracer.d.ts.map +0 -1
  603. package/dist/tower/TowerTracer.js.map +0 -1
  604. package/dist/tower/index.d.ts +0 -4
  605. package/dist/tower/index.d.ts.map +0 -1
  606. package/dist/tower/index.js +0 -4
  607. package/dist/tower/index.js.map +0 -1
  608. package/dist/tower/routes/errors/route.d.ts.map +0 -1
  609. package/dist/tower/routes/errors/route.js +0 -47
  610. package/dist/tower/routes/errors/route.js.map +0 -1
  611. package/dist/tower/routes/fiberDetail.d.ts.map +0 -1
  612. package/dist/tower/routes/fiberDetail.js.map +0 -1
  613. package/dist/tower/routes/fibers/route.d.ts.map +0 -1
  614. package/dist/tower/routes/fibers/route.js +0 -27
  615. package/dist/tower/routes/fibers/route.js.map +0 -1
  616. package/dist/tower/routes/layout.d.ts.map +0 -1
  617. package/dist/tower/routes/layout.js.map +0 -1
  618. package/dist/tower/routes/logs/route.d.ts.map +0 -1
  619. package/dist/tower/routes/logs/route.js +0 -36
  620. package/dist/tower/routes/logs/route.js.map +0 -1
  621. package/dist/tower/routes/metrics/route.js +0 -20
  622. package/dist/tower/routes/metrics/route.js.map +0 -1
  623. package/dist/tower/routes/route.d.ts.map +0 -1
  624. package/dist/tower/routes/route.js +0 -6
  625. package/dist/tower/routes/route.js.map +0 -1
  626. package/dist/tower/routes/routes/route.d.ts.map +0 -1
  627. package/dist/tower/routes/routes/route.js.map +0 -1
  628. package/dist/tower/routes/services/route.d.ts.map +0 -1
  629. package/dist/tower/routes/services/route.js +0 -15
  630. package/dist/tower/routes/services/route.js.map +0 -1
  631. package/dist/tower/routes/system/route.d.ts.map +0 -1
  632. package/dist/tower/routes/system/route.js +0 -21
  633. package/dist/tower/routes/system/route.js.map +0 -1
  634. package/dist/tower/routes/traceDetail.d.ts.map +0 -1
  635. package/dist/tower/routes/traceDetail.js +0 -20
  636. package/dist/tower/routes/traceDetail.js.map +0 -1
  637. package/dist/tower/routes/traces/route.d.ts.map +0 -1
  638. package/dist/tower/routes/traces/route.js +0 -36
  639. package/dist/tower/routes/traces/route.js.map +0 -1
  640. package/dist/tower/routes/tree.d.ts.map +0 -1
  641. package/dist/tower/routes/tree.js.map +0 -1
  642. package/dist/tower/ui/Errors.d.ts +0 -5
  643. package/dist/tower/ui/Errors.d.ts.map +0 -1
  644. package/dist/tower/ui/Errors.js +0 -30
  645. package/dist/tower/ui/Errors.js.map +0 -1
  646. package/dist/tower/ui/Fibers.d.ts.map +0 -1
  647. package/dist/tower/ui/Fibers.js +0 -157
  648. package/dist/tower/ui/Fibers.js.map +0 -1
  649. package/dist/tower/ui/Logs.d.ts +0 -5
  650. package/dist/tower/ui/Logs.d.ts.map +0 -1
  651. package/dist/tower/ui/Logs.js.map +0 -1
  652. package/dist/tower/ui/Metrics.d.ts +0 -5
  653. package/dist/tower/ui/Metrics.d.ts.map +0 -1
  654. package/dist/tower/ui/Metrics.js.map +0 -1
  655. package/dist/tower/ui/Routes.d.ts.map +0 -1
  656. package/dist/tower/ui/Routes.js.map +0 -1
  657. package/dist/tower/ui/Services.d.ts.map +0 -1
  658. package/dist/tower/ui/Services.js.map +0 -1
  659. package/dist/tower/ui/Shell.d.ts.map +0 -1
  660. package/dist/tower/ui/Shell.js +0 -12
  661. package/dist/tower/ui/Shell.js.map +0 -1
  662. package/dist/tower/ui/System.d.ts +0 -5
  663. package/dist/tower/ui/System.d.ts.map +0 -1
  664. package/dist/tower/ui/System.js +0 -65
  665. package/dist/tower/ui/System.js.map +0 -1
  666. package/dist/tower/ui/Traces.d.ts +0 -13
  667. package/dist/tower/ui/Traces.d.ts.map +0 -1
  668. package/dist/tower/ui/Traces.js +0 -219
  669. package/dist/tower/ui/Traces.js.map +0 -1
  670. package/dist/x/cloudflare/CloudflareTunnel.d.ts +0 -11
  671. package/dist/x/cloudflare/CloudflareTunnel.d.ts.map +0 -1
  672. package/dist/x/cloudflare/CloudflareTunnel.js.map +0 -1
  673. package/dist/x/cloudflare/index.d.ts.map +0 -1
  674. package/dist/x/cloudflare/index.js.map +0 -1
  675. package/dist/x/tailscale/TailscaleTunnel.d.ts +0 -16
  676. package/dist/x/tailscale/TailscaleTunnel.d.ts.map +0 -1
  677. package/dist/x/tailscale/TailscaleTunnel.js.map +0 -1
  678. package/dist/x/tailscale/index.d.ts.map +0 -1
  679. package/dist/x/tailscale/index.js.map +0 -1
  680. package/dist/x/tailwind/TailwindPlugin.d.ts.map +0 -1
  681. package/dist/x/tailwind/TailwindPlugin.js.map +0 -1
  682. package/dist/x/tailwind/compile.d.ts.map +0 -1
  683. package/dist/x/tailwind/compile.js.map +0 -1
  684. package/dist/x/tailwind/plugin.d.ts.map +0 -1
  685. package/src/Commander.ts +0 -585
  686. package/src/FilePathPattern.ts +0 -115
  687. package/src/PlatformError.ts +0 -73
  688. package/src/TuplePathPattern.ts +0 -75
  689. package/src/hyper/Hyper.ts +0 -55
  690. package/src/hyper/HyperNode.ts +0 -34
  691. package/src/hyper/HyperRoute.ts +0 -59
  692. package/src/hyper/html.ts +0 -47
  693. package/src/hyper/index.ts +0 -6
  694. package/src/hyper/jsx-runtime.ts +0 -15
  695. package/src/tower/Tower.ts +0 -47
  696. package/src/tower/index.ts +0 -3
  697. package/src/tower/routes/route.tsx +0 -8
  698. /package/dist/{x/cloudflare → cloudflare}/index.d.ts +0 -0
  699. /package/dist/{x/cloudflare → cloudflare}/index.js +0 -0
  700. /package/dist/{tower → studio}/Simulation.d.ts +0 -0
  701. /package/dist/{tower → studio}/Simulation.js +0 -0
  702. /package/dist/{tower → studio}/routes/layout.d.ts +0 -0
  703. /package/dist/{tower → studio}/routes/layout.js +0 -0
  704. /package/dist/{tower → studio}/routes/tree.js +0 -0
  705. /package/dist/{x/tailscale → tailscale}/index.d.ts +0 -0
  706. /package/dist/{x/tailscale → tailscale}/index.js +0 -0
  707. /package/dist/{x/tailwind → tailwind}/TailwindPlugin.js +0 -0
  708. /package/dist/{x/tailwind → tailwind}/compile.d.ts +0 -0
  709. /package/dist/{x/tailwind → tailwind}/plugin.d.ts +0 -0
  710. /package/src/{ContentNegotiation.ts → _ContentNegotiation.ts} +0 -0
  711. /package/src/{Effectify.ts → _Effectify.ts} +0 -0
  712. /package/src/{StartApp.ts → _StartApp.ts} +0 -0
  713. /package/src/{StreamExtra.ts → _StreamExtra.ts} +0 -0
  714. /package/src/{Values.ts → _Values.ts} +0 -0
  715. /package/src/{x/cloudflare → cloudflare}/index.ts +0 -0
  716. /package/src/{tower → studio}/Simulation.ts +0 -0
  717. /package/src/{tower → studio}/routes/layout.tsx +0 -0
  718. /package/src/{tower → studio}/routes/tree.ts +0 -0
  719. /package/src/{tower → studio}/ui/Routes.tsx +0 -0
  720. /package/src/{tower → studio}/ui/Services.tsx +0 -0
  721. /package/src/{x/tailscale → tailscale}/index.ts +0 -0
  722. /package/src/{x/tailwind → tailwind}/TailwindPlugin.ts +0 -0
package/src/Fetch.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  import * as Data from "effect/Data"
2
2
  import * as Effect from "effect/Effect"
3
3
  import * as Schedule from "effect/Schedule"
4
+ import * as Stream from "effect/Stream"
4
5
  import * as Entity from "./Entity.ts"
5
6
 
6
- const TypeId: unique symbol = Symbol.for("effect-start/FetchClient")
7
- type TypeId = typeof TypeId
7
+ const TypeId = "~effect-start/FetchClient" as const
8
8
 
9
- export type FetchEntity = Entity.Entity<Effect.Effect<Uint8Array, FetchError, never>, FetchError>
9
+ export type FetchEntity = Entity.Entity<Stream.Stream<Uint8Array, FetchError, never>, FetchError>
10
10
 
11
11
  export class FetchError extends Data.TaggedError("FetchError")<{
12
12
  readonly reason: "Network" | "Status"
@@ -28,7 +28,7 @@ const tryFetch: Middleware = (request) =>
28
28
  try: () => globalThis.fetch(request),
29
29
  catch: (e) => new FetchError({ reason: "Network", cause: e, request }),
30
30
  }),
31
- (response) => Entity.fromResponse(response, request) as FetchEntity,
31
+ (response) => Entity.fromResponse<FetchError>(response, request),
32
32
  )
33
33
 
34
34
  const defaultMiddleware: ReadonlyArray<Middleware> = [tryFetch]
@@ -64,7 +64,7 @@ function withTrace<E, R>(
64
64
  }
65
65
 
66
66
  export interface FetchClient<E = never, R = never> {
67
- readonly [TypeId]: TypeId
67
+ readonly [TypeId]: typeof TypeId
68
68
  readonly middleware: ReadonlyArray<Middleware<any, any>>
69
69
  readonly fetch: (
70
70
  input: string | URL | Request,
@@ -172,6 +172,20 @@ const ClientProto: any = {
172
172
  use,
173
173
  }
174
174
 
175
+ type WebHandler = (request: Request) => Response | Promise<Response>
176
+
177
+ export function fromHandler(handler: WebHandler): FetchClient {
178
+ const transport: Middleware = (request) =>
179
+ Effect.map(
180
+ Effect.tryPromise({
181
+ try: () => Promise.resolve(handler(request)),
182
+ catch: (e) => new FetchError({ reason: "Network", cause: e, request }),
183
+ }),
184
+ (response) => Entity.fromResponse<FetchError>(response, request),
185
+ )
186
+ return use(transport)
187
+ }
188
+
175
189
  export function filterStatus(
176
190
  predicate: (status: number) => boolean,
177
191
  options?: {
@@ -269,3 +283,85 @@ export function retry(options: {
269
283
  )
270
284
  }) as Middleware
271
285
  }
286
+
287
+ interface SseEvent {
288
+ data?: string | undefined
289
+ type?: string
290
+ retry?: number
291
+ id?: string
292
+ }
293
+
294
+ export function sse(_options?: {
295
+ readonly retry?: Schedule.Schedule<any, any, any>
296
+ }): (entity: FetchEntity) => Stream.Stream<SseEvent, FetchError> {
297
+ return (entity) => {
298
+ const contentType = entity.headers["content-type"] ?? ""
299
+ if (!contentType.includes("text/event-stream")) {
300
+ return Stream.fail(
301
+ new FetchError({
302
+ reason: "Status",
303
+ cause: new Error(`Expected content-type text/event-stream, got: ${contentType}`),
304
+ response: entity,
305
+ }),
306
+ )
307
+ }
308
+
309
+ const byteStream = entity.body as Stream.Stream<Uint8Array, FetchError, never>
310
+ const decoder = new TextDecoder()
311
+ const empty = {
312
+ partial: "",
313
+ eventType: undefined as string | undefined,
314
+ dataLines: [] as Array<string>,
315
+ retryMs: undefined as number | undefined,
316
+ lastEventId: undefined as string | undefined,
317
+ }
318
+ type Acc = typeof empty
319
+
320
+ return byteStream.pipe(
321
+ Stream.mapAccum(empty, (acc, chunk: Uint8Array): [Acc, Array<string>] => {
322
+ const text = acc.partial + decoder.decode(chunk, { stream: true })
323
+ const parts = text.split("\n")
324
+ const partial = parts.pop()!
325
+ const lines = parts.map((l) => (l.endsWith("\r") ? l.slice(0, -1) : l))
326
+ return [{ ...acc, partial }, lines]
327
+ }),
328
+ Stream.flatMap(Stream.fromIterable),
329
+ Stream.mapAccum(empty, (acc, line: string): [Acc, SseEvent | undefined] => {
330
+ if (line === "") {
331
+ if (acc.dataLines.length > 0) {
332
+ const event: SseEvent = { data: acc.dataLines.join("\n") }
333
+ if (acc.eventType !== undefined) event.type = acc.eventType
334
+ if (acc.retryMs !== undefined) event.retry = acc.retryMs
335
+ if (acc.lastEventId !== undefined) event.id = acc.lastEventId
336
+ return [{ ...empty, lastEventId: acc.lastEventId }, event]
337
+ }
338
+ return [{ ...empty, lastEventId: acc.lastEventId }, undefined]
339
+ }
340
+
341
+ if (line.startsWith(":")) return [acc, undefined]
342
+
343
+ const colonIdx = line.indexOf(":")
344
+ const field = colonIdx === -1 ? line : line.slice(0, colonIdx)
345
+ let value = colonIdx === -1 ? "" : line.slice(colonIdx + 1)
346
+ if (value.startsWith(" ")) value = value.slice(1)
347
+
348
+ switch (field) {
349
+ case "event":
350
+ return [{ ...acc, eventType: value }, undefined]
351
+ case "data":
352
+ return [{ ...acc, dataLines: [...acc.dataLines, value] }, undefined]
353
+ case "retry": {
354
+ const n = parseInt(value, 10)
355
+ if (!isNaN(n)) return [{ ...acc, retryMs: n }, undefined]
356
+ return [acc, undefined]
357
+ }
358
+ case "id":
359
+ return [{ ...acc, lastEventId: value }, undefined]
360
+ default:
361
+ return [acc, undefined]
362
+ }
363
+ }),
364
+ Stream.filter((event): event is SseEvent => event !== undefined),
365
+ )
366
+ }
367
+ }
package/src/FileRouter.ts CHANGED
@@ -8,11 +8,10 @@ import * as Stream from "effect/Stream"
8
8
  import * as NPath from "node:path"
9
9
  import * as NUrl from "node:url"
10
10
  import * as Development from "./Development.ts"
11
- import * as FilePathPattern from "./FilePathPattern.ts"
12
11
  import * as FileRouterCodegen from "./FileRouterCodegen.ts"
13
12
  import * as NodeUtils from "./node/NodeUtils.ts"
14
- import type * as PathPattern from "./PathPattern.ts"
15
- import type * as PlatformError from "./PlatformError.ts"
13
+ import * as PathPattern from "./_PathPattern.ts"
14
+ import type * as System from "./System.ts"
16
15
  import * as Route from "./Route.ts"
17
16
  import * as RouteTree from "./RouteTree.ts"
18
17
 
@@ -32,15 +31,12 @@ export type FileRoutes = {
32
31
  [path: PathPattern.PathPattern]: [LazyRouteModule, ...LazyRouteModule[]]
33
32
  }
34
33
 
35
- export type Segment = FilePathPattern.Segment
36
-
37
34
  export type FileRoute = {
38
35
  handle: "route" | "layer"
39
36
  // eg. `/about/route.tsx`, `/users/[userId]/route.tsx`, `/(admin)/users/route.tsx`
40
37
  modulePath: `/${string}`
41
- // eg. `/about`, `/users/[userId]`, `/users` (groups stripped)
42
- routePath: `/${string}`
43
- segments: Array<Segment>
38
+ // eg. `/about`, `/users/:userId`, `/users` (groups stripped)
39
+ routePath: PathPattern.PathPattern
44
40
  }
45
41
 
46
42
  /**
@@ -52,40 +48,26 @@ export type FileRoute = {
52
48
  */
53
49
  export type OrderedFileRoutes = Array<FileRoute>
54
50
 
55
- const ROUTE_PATH_REGEX = /^\/?(.*\/?)(?:route|layer)\.(jsx?|tsx?)$/
51
+ const ROUTE_PATH_REGEX = /^(.*\/)?(route|layer)\.(jsx?|tsx?)$/
56
52
 
57
53
  export function parseRoute(path: string): FileRoute | null {
58
- const segs = FilePathPattern.segments(path)
59
-
60
- const lastSeg = segs.at(-1)
61
- const handleMatch =
62
- lastSeg?._tag === "LiteralSegment" && lastSeg.value.match(/^(route|layer)\.(tsx?|jsx?)$/)
63
- const handle = handleMatch ? (handleMatch[1] as "route" | "layer") : null
64
-
65
- if (!handle) {
66
- return null
67
- }
68
-
69
- const pathSegments = segs.slice(0, -1)
70
-
71
- const validated = FilePathPattern.validate(FilePathPattern.format(pathSegments))
72
- if (Either.isLeft(validated)) {
54
+ const normalizedPath = path.replace(/^\/+/, "")
55
+ const matched = normalizedPath.match(ROUTE_PATH_REGEX)
56
+ if (!matched) {
73
57
  return null
74
58
  }
75
59
 
76
- const restIndex = pathSegments.findIndex((seg) => seg._tag === "RestSegment")
77
- if (restIndex !== -1 && restIndex !== pathSegments.length - 1) {
60
+ const routeDir = matched[1]?.replace(/\/$/, "") ?? ""
61
+ const handle = matched[2] as "route" | "layer"
62
+ const routePathResult = PathPattern.fromFilePath(routeDir)
63
+ if (Either.isLeft(routePathResult)) {
78
64
  return null
79
65
  }
80
66
 
81
- const routePathSegments = pathSegments.filter((seg) => seg._tag !== "GroupSegment")
82
- const routePath = FilePathPattern.format(routePathSegments)
83
-
84
67
  return {
85
68
  handle,
86
- modulePath: `/${path}`,
87
- routePath,
88
- segments: pathSegments,
69
+ modulePath: `/${normalizedPath}`,
70
+ routePath: routePathResult.right,
89
71
  }
90
72
  }
91
73
 
@@ -123,7 +105,7 @@ export function layer(
123
105
  treePath = NUrl.fileURLToPath(treePath)
124
106
  }
125
107
  if (NPath.extname(treePath) === "") {
126
- treePath = NPath.join(treePath, "server.gen.ts")
108
+ treePath = NPath.join(treePath, ".server.ts")
127
109
  }
128
110
 
129
111
  const routesPath = NPath.dirname(treePath)
@@ -142,7 +124,7 @@ export function layer(
142
124
 
143
125
  // Watch for changes (only when Development service is available)
144
126
  yield* Function.pipe(
145
- Development.stream(),
127
+ Development.events,
146
128
  Stream.filter((e) => e._tag !== "Reload" && e.path.startsWith(relativeRoutesPath)),
147
129
  Stream.runForEach(() => FileRouterCodegen.update(routesPath, treeFilename)),
148
130
  Effect.fork,
@@ -158,15 +140,30 @@ export function fromFileRoutes(fileRoutes: FileRoutes): Effect.Effect<RouteTree.
158
140
  const mounts: RouteTree.InputRouteMap = {}
159
141
 
160
142
  for (const [path, loaders] of Object.entries(fileRoutes)) {
161
- const modules = yield* Effect.forEach(loaders, (loader) => Effect.promise(() => loader()))
162
-
163
143
  const allRoutes: RouteTree.RouteTuple = [] as unknown as RouteTree.RouteTuple
164
144
 
165
- for (const m of modules) {
166
- if (Route.isRouteSet(m.default)) {
167
- for (const route of m.default) {
145
+ for (const loader of loaders) {
146
+ const result = yield* Effect.either(
147
+ Effect.tryPromise({
148
+ try: () => loader(),
149
+ catch: (cause) => new FileRouterError({ reason: "Import", cause, path }),
150
+ }),
151
+ )
152
+
153
+ if (Either.isLeft(result)) {
154
+ const error = result.left
155
+ for (const route of Route.use(
156
+ Route.render((): Effect.Effect<string, FileRouterError> => Effect.fail(error)),
157
+ )) {
168
158
  ;(allRoutes as Array<any>).push(route)
169
159
  }
160
+ } else {
161
+ const m = result.right
162
+ if (Route.isRouteSet(m.default)) {
163
+ for (const route of m.default) {
164
+ ;(allRoutes as Array<any>).push(route)
165
+ }
166
+ }
170
167
  }
171
168
  }
172
169
 
@@ -179,11 +176,7 @@ export function fromFileRoutes(fileRoutes: FileRoutes): Effect.Effect<RouteTree.
179
176
 
180
177
  export function walkRoutesDirectory(
181
178
  dir: string,
182
- ): Effect.Effect<
183
- OrderedFileRoutes,
184
- PlatformError.PlatformError | FileRouterError,
185
- FileSystem.FileSystem
186
- > {
179
+ ): Effect.Effect<OrderedFileRoutes, System.SystemError | FileRouterError, FileSystem.FileSystem> {
187
180
  return Effect.gen(function* () {
188
181
  const fs = yield* FileSystem.FileSystem
189
182
  const files = yield* fs.readDirectory(dir, { recursive: true })
@@ -209,10 +202,14 @@ export function getFileRoutes(
209
202
  })
210
203
  .filter((route): route is FileRoute => route !== null)
211
204
  .toSorted((a, b) => {
212
- const aDepth = a.segments.length
213
- const bDepth = b.segments.length
214
- const aHasRest = a.segments.some((seg) => seg._tag === "RestSegment")
215
- const bHasRest = b.segments.some((seg) => seg._tag === "RestSegment")
205
+ const aDepth = a.modulePath.split("/").filter(Boolean).length - 1
206
+ const bDepth = b.modulePath.split("/").filter(Boolean).length - 1
207
+ const aHasRest = a.routePath
208
+ .split("/")
209
+ .some((seg) => seg.startsWith(":") && seg.endsWith("*"))
210
+ const bHasRest = b.routePath
211
+ .split("/")
212
+ .some((seg) => seg.startsWith(":") && seg.endsWith("*"))
216
213
 
217
214
  return (
218
215
  // rest is a dominant factor (routes with rest come last)
@@ -1,11 +1,10 @@
1
1
  import * as FileSystem from "./FileSystem.ts"
2
2
  import * as Effect from "effect/Effect"
3
- import * as Either from "effect/Either"
4
3
  import * as Schema from "effect/Schema"
5
4
  import * as NPath from "node:path"
6
- import * as FilePathPattern from "./FilePathPattern.ts"
7
5
  import * as FileRouter from "./FileRouter.ts"
8
- import * as SchemaExtra from "./SchemaExtra.ts"
6
+ import * as PathPattern from "./_PathPattern.ts"
7
+ import * as SchemaExtra from "./_SchemaExtra.ts"
9
8
 
10
9
  export function validateRouteModule(module: unknown): module is FileRouter.RouteModule {
11
10
  if (typeof module !== "object" || module === null) {
@@ -20,17 +19,11 @@ export function validateRouteModule(module: unknown): module is FileRouter.Route
20
19
  return true
21
20
  }
22
21
 
23
- export function generatePathParamsSchema(
24
- segments: ReadonlyArray<FilePathPattern.Segment>,
25
- ): Schema.Struct<any> | null {
22
+ export function generatePathParamsSchema(path: PathPattern.PathPattern): Schema.Struct<any> | null {
26
23
  const fields: Record<PropertyKey, Schema.Schema.Any | Schema.PropertySignature.All> = {}
27
24
 
28
- for (const segment of segments) {
29
- if (segment._tag === "ParamSegment") {
30
- fields[segment.name] = Schema.String
31
- } else if (segment._tag === "RestSegment") {
32
- fields[segment.name] = Schema.optional(Schema.String)
33
- }
25
+ for (const param of PathPattern.params(path)) {
26
+ fields[param.name] = param.optional ? Schema.optional(Schema.String) : Schema.String
34
27
  }
35
28
 
36
29
  if (Object.keys(fields).length === 0) {
@@ -54,7 +47,7 @@ export function validateRouteModules(
54
47
 
55
48
  for (const handle of routeHandles) {
56
49
  const routeModulePath = NPath.resolve(path, handle.modulePath)
57
- const expectedSchema = generatePathParamsSchema(handle.segments)
50
+ const expectedSchema = generatePathParamsSchema(handle.routePath)
58
51
 
59
52
  const fileExists = yield* fs
60
53
  .exists(routeModulePath)
@@ -144,20 +137,13 @@ export function generateCode(fileRoutes: FileRouter.OrderedFileRoutes): string |
144
137
  currentPath = parentPath || "/"
145
138
  }
146
139
 
147
- // Convert file-style path to colon-style PathPattern
148
- const pathPatternResult = FilePathPattern.toPathPattern(path)
149
- if (Either.isLeft(pathPatternResult)) {
150
- continue
151
- }
152
- const pathPattern = pathPatternResult.right
153
-
154
140
  // Order: route first, then layers from innermost to outermost
155
141
  const loaders: Array<string> = [
156
142
  `() => import(".${route.modulePath}")`,
157
143
  ...allLayers.reverse().map((layer) => `() => import(".${layer.modulePath}")`),
158
144
  ]
159
145
 
160
- entries.push({ path: pathPattern, loaders })
146
+ entries.push({ path, loaders })
161
147
  }
162
148
 
163
149
  // No routes found - don't create file
@@ -188,7 +174,7 @@ ${routeEntries},
188
174
  */
189
175
  export function update(
190
176
  routesPath: string,
191
- treePath = "server.gen.ts",
177
+ treePath = ".server.ts",
192
178
  ): Effect.Effect<void, FileRouter.FileRouterError, FileSystem.FileSystem> {
193
179
  return Effect.gen(function* () {
194
180
  treePath = NPath.resolve(routesPath, treePath)
@@ -259,7 +245,7 @@ export function update(
259
245
 
260
246
  export function dump(
261
247
  routesPath: string,
262
- treePath = "server.gen.ts",
248
+ treePath = ".server.ts",
263
249
  ): Effect.Effect<void, FileRouter.FileRouterError, FileSystem.FileSystem> {
264
250
  return Effect.gen(function* () {
265
251
  treePath = NPath.resolve(routesPath, treePath)
package/src/FileSystem.ts CHANGED
@@ -12,108 +12,93 @@ import * as Option from "effect/Option"
12
12
  import * as Sink from "effect/Sink"
13
13
  import type * as Scope from "effect/Scope"
14
14
  import * as Stream from "effect/Stream"
15
- import * as PlatformError from "./PlatformError.ts"
15
+ import * as System from "./System.ts"
16
16
 
17
17
  export interface FileSystem {
18
18
  readonly access: (
19
19
  path: string,
20
20
  options?: AccessFileOptions,
21
- ) => Effect.Effect<void, PlatformError.PlatformError>
21
+ ) => Effect.Effect<void, System.SystemError>
22
22
  readonly copy: (
23
23
  fromPath: string,
24
24
  toPath: string,
25
25
  options?: CopyOptions,
26
- ) => Effect.Effect<void, PlatformError.PlatformError>
27
- readonly copyFile: (
28
- fromPath: string,
29
- toPath: string,
30
- ) => Effect.Effect<void, PlatformError.PlatformError>
31
- readonly chmod: (path: string, mode: number) => Effect.Effect<void, PlatformError.PlatformError>
26
+ ) => Effect.Effect<void, System.SystemError>
27
+ readonly copyFile: (fromPath: string, toPath: string) => Effect.Effect<void, System.SystemError>
28
+ readonly chmod: (path: string, mode: number) => Effect.Effect<void, System.SystemError>
32
29
  readonly chown: (
33
30
  path: string,
34
31
  uid: number,
35
32
  gid: number,
36
- ) => Effect.Effect<void, PlatformError.PlatformError>
37
- readonly exists: (path: string) => Effect.Effect<boolean, PlatformError.PlatformError>
38
- readonly link: (
39
- fromPath: string,
40
- toPath: string,
41
- ) => Effect.Effect<void, PlatformError.PlatformError>
33
+ ) => Effect.Effect<void, System.SystemError>
34
+ readonly exists: (path: string) => Effect.Effect<boolean, System.SystemError>
35
+ readonly link: (fromPath: string, toPath: string) => Effect.Effect<void, System.SystemError>
42
36
  readonly makeDirectory: (
43
37
  path: string,
44
38
  options?: MakeDirectoryOptions,
45
- ) => Effect.Effect<void, PlatformError.PlatformError>
39
+ ) => Effect.Effect<void, System.SystemError>
46
40
  readonly makeTempDirectory: (
47
41
  options?: MakeTempDirectoryOptions,
48
- ) => Effect.Effect<string, PlatformError.PlatformError>
42
+ ) => Effect.Effect<string, System.SystemError>
49
43
  readonly makeTempDirectoryScoped: (
50
44
  options?: MakeTempDirectoryOptions,
51
- ) => Effect.Effect<string, PlatformError.PlatformError, Scope.Scope>
45
+ ) => Effect.Effect<string, System.SystemError, Scope.Scope>
52
46
  readonly makeTempFile: (
53
47
  options?: MakeTempFileOptions,
54
- ) => Effect.Effect<string, PlatformError.PlatformError>
48
+ ) => Effect.Effect<string, System.SystemError>
55
49
  readonly makeTempFileScoped: (
56
50
  options?: MakeTempFileOptions,
57
- ) => Effect.Effect<string, PlatformError.PlatformError, Scope.Scope>
51
+ ) => Effect.Effect<string, System.SystemError, Scope.Scope>
58
52
  readonly open: (
59
53
  path: string,
60
54
  options?: OpenFileOptions,
61
- ) => Effect.Effect<File, PlatformError.PlatformError, Scope.Scope>
55
+ ) => Effect.Effect<File, System.SystemError, Scope.Scope>
62
56
  readonly readDirectory: (
63
57
  path: string,
64
58
  options?: ReadDirectoryOptions,
65
- ) => Effect.Effect<Array<string>, PlatformError.PlatformError>
66
- readonly readFile: (path: string) => Effect.Effect<Uint8Array, PlatformError.PlatformError>
59
+ ) => Effect.Effect<Array<string>, System.SystemError>
60
+ readonly readFile: (path: string) => Effect.Effect<Uint8Array, System.SystemError>
67
61
  readonly readFileString: (
68
62
  path: string,
69
63
  encoding?: string,
70
- ) => Effect.Effect<string, PlatformError.PlatformError>
71
- readonly readLink: (path: string) => Effect.Effect<string, PlatformError.PlatformError>
72
- readonly realPath: (path: string) => Effect.Effect<string, PlatformError.PlatformError>
64
+ ) => Effect.Effect<string, System.SystemError>
65
+ readonly readLink: (path: string) => Effect.Effect<string, System.SystemError>
66
+ readonly realPath: (path: string) => Effect.Effect<string, System.SystemError>
73
67
  readonly remove: (
74
68
  path: string,
75
69
  options?: RemoveOptions,
76
- ) => Effect.Effect<void, PlatformError.PlatformError>
77
- readonly rename: (
78
- oldPath: string,
79
- newPath: string,
80
- ) => Effect.Effect<void, PlatformError.PlatformError>
70
+ ) => Effect.Effect<void, System.SystemError>
71
+ readonly rename: (oldPath: string, newPath: string) => Effect.Effect<void, System.SystemError>
81
72
  readonly sink: (
82
73
  path: string,
83
74
  options?: SinkOptions,
84
- ) => Sink.Sink<void, Uint8Array, never, PlatformError.PlatformError>
85
- readonly stat: (path: string) => Effect.Effect<File.Info, PlatformError.PlatformError>
75
+ ) => Sink.Sink<void, Uint8Array, never, System.SystemError>
76
+ readonly stat: (path: string) => Effect.Effect<File.Info, System.SystemError>
86
77
  readonly stream: (
87
78
  path: string,
88
79
  options?: StreamOptions,
89
- ) => Stream.Stream<Uint8Array, PlatformError.PlatformError>
90
- readonly symlink: (
91
- fromPath: string,
92
- toPath: string,
93
- ) => Effect.Effect<void, PlatformError.PlatformError>
94
- readonly truncate: (
95
- path: string,
96
- length?: SizeInput,
97
- ) => Effect.Effect<void, PlatformError.PlatformError>
80
+ ) => Stream.Stream<Uint8Array, System.SystemError>
81
+ readonly symlink: (fromPath: string, toPath: string) => Effect.Effect<void, System.SystemError>
82
+ readonly truncate: (path: string, length?: SizeInput) => Effect.Effect<void, System.SystemError>
98
83
  readonly utimes: (
99
84
  path: string,
100
85
  atime: Date | number,
101
86
  mtime: Date | number,
102
- ) => Effect.Effect<void, PlatformError.PlatformError>
87
+ ) => Effect.Effect<void, System.SystemError>
103
88
  readonly watch: (
104
89
  path: string,
105
90
  options?: WatchOptions,
106
- ) => Stream.Stream<WatchEvent, PlatformError.PlatformError>
91
+ ) => Stream.Stream<WatchEvent, System.SystemError>
107
92
  readonly writeFile: (
108
93
  path: string,
109
94
  data: Uint8Array,
110
95
  options?: WriteFileOptions,
111
- ) => Effect.Effect<void, PlatformError.PlatformError>
96
+ ) => Effect.Effect<void, System.SystemError>
112
97
  readonly writeFileString: (
113
98
  path: string,
114
99
  data: string,
115
100
  options?: WriteFileStringOptions,
116
- ) => Effect.Effect<void, PlatformError.PlatformError>
101
+ ) => Effect.Effect<void, System.SystemError>
117
102
  }
118
103
 
119
104
  export const FileSystem: Context.Tag<FileSystem, FileSystem> = Context.GenericTag<FileSystem>(
@@ -202,16 +187,16 @@ export type FileTypeId = typeof FileTypeId
202
187
  export interface File {
203
188
  readonly [FileTypeId]: FileTypeId
204
189
  readonly fd: File.Descriptor
205
- readonly stat: Effect.Effect<File.Info, PlatformError.PlatformError>
190
+ readonly stat: Effect.Effect<File.Info, System.SystemError>
206
191
  readonly seek: (offset: SizeInput, from: SeekMode) => Effect.Effect<void>
207
- readonly sync: Effect.Effect<void, PlatformError.PlatformError>
208
- readonly read: (buffer: Uint8Array) => Effect.Effect<Size, PlatformError.PlatformError>
192
+ readonly sync: Effect.Effect<void, System.SystemError>
193
+ readonly read: (buffer: Uint8Array) => Effect.Effect<Size, System.SystemError>
209
194
  readonly readAlloc: (
210
195
  size: SizeInput,
211
- ) => Effect.Effect<Option.Option<Uint8Array>, PlatformError.PlatformError>
212
- readonly truncate: (length?: SizeInput) => Effect.Effect<void, PlatformError.PlatformError>
213
- readonly write: (buffer: Uint8Array) => Effect.Effect<Size, PlatformError.PlatformError>
214
- readonly writeAll: (buffer: Uint8Array) => Effect.Effect<void, PlatformError.PlatformError>
196
+ ) => Effect.Effect<Option.Option<Uint8Array>, System.SystemError>
197
+ readonly truncate: (length?: SizeInput) => Effect.Effect<void, System.SystemError>
198
+ readonly write: (buffer: Uint8Array) => Effect.Effect<Size, System.SystemError>
199
+ readonly writeAll: (buffer: Uint8Array) => Effect.Effect<void, System.SystemError>
215
200
  }
216
201
 
217
202
  export declare namespace File {
@@ -282,7 +267,7 @@ export class WatchBackend extends Context.Tag("@effect/platform/FileSystem/Watch
282
267
  path: string,
283
268
  stat: File.Info,
284
269
  options?: WatchOptions,
285
- ) => Option.Option<Stream.Stream<WatchEvent, PlatformError.PlatformError>>
270
+ ) => Option.Option<Stream.Stream<WatchEvent, System.SystemError>>
286
271
  }
287
272
  >() {}
288
273
 
@@ -303,7 +288,8 @@ export const make = (
303
288
  Effect.tryMap(impl.readFile(path), {
304
289
  try: (_) => new TextDecoder(encoding).decode(_),
305
290
  catch: (cause) =>
306
- new PlatformError.BadArgument({
291
+ new System.SystemError({
292
+ reason: "BadArgument",
307
293
  module: "FileSystem",
308
294
  method: "readFileString",
309
295
  description: "invalid encoding",
@@ -330,7 +316,8 @@ export const make = (
330
316
  Effect.try({
331
317
  try: () => new TextEncoder().encode(data),
332
318
  catch: (cause) =>
333
- new PlatformError.BadArgument({
319
+ new System.SystemError({
320
+ reason: "BadArgument",
334
321
  module: "FileSystem",
335
322
  method: "writeFileString",
336
323
  description: "could not encode string",
@@ -348,14 +335,7 @@ const fileStream = (file: File, options: StreamOptions = {}) => {
348
335
 
349
336
  function loop(
350
337
  totalBytesRead: bigint,
351
- ): Channel.Channel<
352
- Chunk.Chunk<Uint8Array>,
353
- unknown,
354
- PlatformError.PlatformError,
355
- unknown,
356
- void,
357
- unknown
358
- > {
338
+ ): Channel.Channel<Chunk.Chunk<Uint8Array>, unknown, System.SystemError, unknown, void, unknown> {
359
339
  if (bytesToRead !== undefined && bytesToRead <= totalBytesRead) {
360
340
  return Channel.void
361
341
  }
@@ -9,7 +9,7 @@ import * as MutableRef from "effect/MutableRef"
9
9
  import * as Option from "effect/Option"
10
10
  import * as Runtime from "effect/Runtime"
11
11
 
12
- import * as ChildProcess from "./ChildProcess.ts"
12
+ import * as ChildProcess from "./_ChildProcess.ts"
13
13
 
14
14
  interface CacheEntry {
15
15
  readonly context: Context.Context<any>
@@ -67,7 +67,9 @@ export const globalLayer =
67
67
  )
68
68
  yield* Deferred.succeed(deferred, ctx)
69
69
  yield* Effect.never
70
- }),
70
+ }).pipe(
71
+ Effect.catchAllCause((cause) => Deferred.failCause(deferred, cause)),
72
+ ),
71
73
  ),
72
74
  ) as Fiber.RuntimeFiber<void>
73
75