effect-start 0.28.0 → 0.29.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 (645) hide show
  1. package/dist/Cookies.d.ts +9 -41
  2. package/dist/Cookies.d.ts.map +1 -1
  3. package/dist/Cookies.js +2 -2
  4. package/dist/Cookies.js.map +1 -1
  5. package/dist/Entity.d.ts +5 -6
  6. package/dist/Entity.d.ts.map +1 -1
  7. package/dist/Entity.js +10 -7
  8. package/dist/Entity.js.map +1 -1
  9. package/dist/Fetch.d.ts +23 -4
  10. package/dist/Fetch.d.ts.map +1 -1
  11. package/dist/Fetch.js +90 -1
  12. package/dist/Fetch.js.map +1 -1
  13. package/dist/FileRouter.d.ts +4 -7
  14. package/dist/FileRouter.d.ts.map +1 -1
  15. package/dist/FileRouter.js +39 -30
  16. package/dist/FileRouter.js.map +1 -1
  17. package/dist/FileRouterCodegen.d.ts +2 -2
  18. package/dist/FileRouterCodegen.d.ts.map +1 -1
  19. package/dist/FileRouterCodegen.js +9 -21
  20. package/dist/FileRouterCodegen.js.map +1 -1
  21. package/dist/FileSystem.d.ts +39 -39
  22. package/dist/FileSystem.d.ts.map +1 -1
  23. package/dist/FileSystem.js +5 -3
  24. package/dist/FileSystem.js.map +1 -1
  25. package/dist/GlobalLayer.d.ts +2 -2
  26. package/dist/GlobalLayer.d.ts.map +1 -1
  27. package/dist/GlobalLayer.js +1 -1
  28. package/dist/GlobalLayer.js.map +1 -1
  29. package/dist/PlatformRuntime.d.ts.map +1 -1
  30. package/dist/PlatformRuntime.js.map +1 -1
  31. package/dist/Route.d.ts +2 -2
  32. package/dist/Route.d.ts.map +1 -1
  33. package/dist/Route.js +1 -1
  34. package/dist/Route.js.map +1 -1
  35. package/dist/RouteBody.d.ts +1 -1
  36. package/dist/RouteBody.d.ts.map +1 -1
  37. package/dist/RouteBody.js.map +1 -1
  38. package/dist/RouteError.js.map +1 -1
  39. package/dist/RouteHook.d.ts.map +1 -1
  40. package/dist/RouteHook.js.map +1 -1
  41. package/dist/RouteHttp.d.ts +1 -1
  42. package/dist/RouteHttp.d.ts.map +1 -1
  43. package/dist/RouteHttp.js +38 -31
  44. package/dist/RouteHttp.js.map +1 -1
  45. package/dist/RouteHttpTracer.d.ts.map +1 -1
  46. package/dist/RouteHttpTracer.js.map +1 -1
  47. package/dist/RouteMount.d.ts +2 -2
  48. package/dist/RouteMount.d.ts.map +1 -1
  49. package/dist/RouteMount.js +1 -1
  50. package/dist/RouteMount.js.map +1 -1
  51. package/dist/RouteSchema.d.ts +2 -2
  52. package/dist/RouteSchema.d.ts.map +1 -1
  53. package/dist/RouteSchema.js +2 -2
  54. package/dist/RouteSchema.js.map +1 -1
  55. package/dist/RouteSse.d.ts +9 -10
  56. package/dist/RouteSse.d.ts.map +1 -1
  57. package/dist/RouteSse.js +8 -12
  58. package/dist/RouteSse.js.map +1 -1
  59. package/dist/RouteTree.d.ts +2 -2
  60. package/dist/RouteTree.d.ts.map +1 -1
  61. package/dist/RouteTree.js +2 -2
  62. package/dist/RouteTree.js.map +1 -1
  63. package/dist/RouteTrie.js +1 -1
  64. package/dist/RouteTrie.js.map +1 -1
  65. package/dist/Socket.d.ts +13 -18
  66. package/dist/Socket.d.ts.map +1 -1
  67. package/dist/Socket.js +12 -13
  68. package/dist/Socket.js.map +1 -1
  69. package/dist/Start.d.ts +15 -23
  70. package/dist/Start.d.ts.map +1 -1
  71. package/dist/Start.js +17 -6
  72. package/dist/Start.js.map +1 -1
  73. package/dist/System.d.ts +20 -5
  74. package/dist/System.d.ts.map +1 -1
  75. package/dist/System.js +12 -42
  76. package/dist/System.js.map +1 -1
  77. package/dist/Unique.d.ts.map +1 -1
  78. package/dist/Unique.js.map +1 -1
  79. package/dist/{ChildProcess.d.ts → _ChildProcess.d.ts} +14 -15
  80. package/dist/_ChildProcess.d.ts.map +1 -0
  81. package/dist/{ChildProcess.js → _ChildProcess.js} +2 -2
  82. package/dist/_ChildProcess.js.map +1 -0
  83. package/dist/{ContentNegotiation.d.ts → _ContentNegotiation.d.ts} +1 -1
  84. package/dist/_ContentNegotiation.d.ts.map +1 -0
  85. package/dist/{ContentNegotiation.js → _ContentNegotiation.js} +1 -1
  86. package/dist/_ContentNegotiation.js.map +1 -0
  87. package/dist/_Development.d.ts +27 -0
  88. package/dist/_Development.d.ts.map +1 -0
  89. package/dist/{Development.js → _Development.js} +6 -9
  90. package/dist/_Development.js.map +1 -0
  91. package/dist/{Docker.d.ts → _Docker.d.ts} +2 -2
  92. package/dist/_Docker.d.ts.map +1 -0
  93. package/dist/{Docker.js → _Docker.js} +1 -1
  94. package/dist/_Docker.js.map +1 -0
  95. package/dist/{Effectify.d.ts → _Effectify.d.ts} +1 -1
  96. package/dist/_Effectify.d.ts.map +1 -0
  97. package/dist/{Effectify.js → _Effectify.js} +1 -1
  98. package/dist/_Effectify.js.map +1 -0
  99. package/dist/{Http.d.ts → _Http.d.ts} +1 -8
  100. package/dist/_Http.d.ts.map +1 -0
  101. package/dist/{Http.js → _Http.js} +1 -17
  102. package/dist/_Http.js.map +1 -0
  103. package/dist/{PathPattern.d.ts → _PathPattern.d.ts} +12 -1
  104. package/dist/_PathPattern.d.ts.map +1 -0
  105. package/dist/{PathPattern.js → _PathPattern.js} +86 -1
  106. package/dist/_PathPattern.js.map +1 -0
  107. package/dist/_SchemaExtra.d.ts +4 -0
  108. package/dist/_SchemaExtra.d.ts.map +1 -0
  109. package/dist/{SchemaExtra.js → _SchemaExtra.js} +4 -4
  110. package/dist/_SchemaExtra.js.map +1 -0
  111. package/dist/{StartApp.d.ts → _StartApp.d.ts} +1 -1
  112. package/dist/_StartApp.d.ts.map +1 -0
  113. package/dist/{StartApp.js → _StartApp.js} +1 -1
  114. package/dist/_StartApp.js.map +1 -0
  115. package/dist/{StreamExtra.d.ts → _StreamExtra.d.ts} +5 -5
  116. package/dist/_StreamExtra.d.ts.map +1 -0
  117. package/dist/{StreamExtra.js → _StreamExtra.js} +1 -1
  118. package/dist/_StreamExtra.js.map +1 -0
  119. package/dist/{Values.d.ts → _Values.d.ts} +3 -3
  120. package/dist/_Values.d.ts.map +1 -0
  121. package/dist/{Values.js → _Values.js} +1 -1
  122. package/dist/_Values.js.map +1 -0
  123. package/dist/bun/BunBundle.d.ts +2 -2
  124. package/dist/bun/BunBundle.d.ts.map +1 -1
  125. package/dist/bun/BunBundle.js.map +1 -1
  126. package/dist/bun/BunChildProcessSpawner.d.ts +1 -1
  127. package/dist/bun/BunChildProcessSpawner.d.ts.map +1 -1
  128. package/dist/bun/BunChildProcessSpawner.js +9 -9
  129. package/dist/bun/BunChildProcessSpawner.js.map +1 -1
  130. package/dist/bun/BunImportTrackerPlugin.d.ts +2 -2
  131. package/dist/bun/BunImportTrackerPlugin.d.ts.map +1 -1
  132. package/dist/bun/BunImportTrackerPlugin.js.map +1 -1
  133. package/dist/bun/BunRoute.d.ts +1 -1
  134. package/dist/bun/BunRoute.d.ts.map +1 -1
  135. package/dist/bun/BunRoute.js +6 -7
  136. package/dist/bun/BunRoute.js.map +1 -1
  137. package/dist/bun/BunRuntime.js.map +1 -1
  138. package/dist/bun/BunServer.d.ts +5 -5
  139. package/dist/bun/BunServer.d.ts.map +1 -1
  140. package/dist/bun/BunServer.js +3 -3
  141. package/dist/bun/BunServer.js.map +1 -1
  142. package/dist/bun/BunVirtualFilesPlugin.js.map +1 -1
  143. package/dist/bun/_BunEnhancedResolve.d.ts.map +1 -1
  144. package/dist/bun/_BunEnhancedResolve.js.map +1 -1
  145. package/dist/bun/_empty.html +0 -0
  146. package/dist/bundler/Bundle.d.ts +2 -2
  147. package/dist/bundler/Bundle.d.ts.map +1 -1
  148. package/dist/bundler/Bundle.js.map +1 -1
  149. package/dist/bundler/BundleFiles.d.ts +1 -1
  150. package/dist/bundler/BundleFiles.d.ts.map +1 -1
  151. package/dist/bundler/BundleFiles.js.map +1 -1
  152. package/dist/bundler/BundleRoute.d.ts +6 -5
  153. package/dist/bundler/BundleRoute.d.ts.map +1 -1
  154. package/dist/bundler/BundleRoute.js +2 -2
  155. package/dist/bundler/BundleRoute.js.map +1 -1
  156. package/dist/cli/Argument.d.ts +26 -0
  157. package/dist/cli/Argument.d.ts.map +1 -0
  158. package/dist/cli/Argument.js +31 -0
  159. package/dist/cli/Argument.js.map +1 -0
  160. package/dist/cli/CliError.d.ts +15 -0
  161. package/dist/cli/CliError.d.ts.map +1 -0
  162. package/dist/cli/CliError.js +54 -0
  163. package/dist/cli/CliError.js.map +1 -0
  164. package/dist/cli/Command.d.ts +61 -0
  165. package/dist/cli/Command.d.ts.map +1 -0
  166. package/dist/cli/Command.js +453 -0
  167. package/dist/cli/Command.js.map +1 -0
  168. package/dist/cli/Flag.d.ts +32 -0
  169. package/dist/cli/Flag.d.ts.map +1 -0
  170. package/dist/cli/Flag.js +35 -0
  171. package/dist/cli/Flag.js.map +1 -0
  172. package/dist/cli/HelpDoc.d.ts +28 -0
  173. package/dist/cli/HelpDoc.d.ts.map +1 -0
  174. package/dist/cli/HelpDoc.js +40 -0
  175. package/dist/cli/HelpDoc.js.map +1 -0
  176. package/dist/cli/Param.d.ts +71 -0
  177. package/dist/cli/Param.d.ts.map +1 -0
  178. package/dist/cli/Param.js +236 -0
  179. package/dist/cli/Param.js.map +1 -0
  180. package/dist/cli/Primitive.d.ts +22 -0
  181. package/dist/cli/Primitive.d.ts.map +1 -0
  182. package/dist/cli/Primitive.js +73 -0
  183. package/dist/cli/Primitive.js.map +1 -0
  184. package/dist/cli/index.d.ts +8 -0
  185. package/dist/cli/index.d.ts.map +1 -0
  186. package/dist/cli/index.js +8 -0
  187. package/dist/cli/index.js.map +1 -0
  188. package/dist/client/Overlay.js.map +1 -1
  189. package/dist/client/ScrollState.js.map +1 -1
  190. package/dist/client/index.js.map +1 -1
  191. package/dist/datastar/actions/fetch.js.map +1 -1
  192. package/dist/datastar/actions/peek.js.map +1 -1
  193. package/dist/datastar/actions/setAll.js.map +1 -1
  194. package/dist/datastar/actions/toggleAll.js.map +1 -1
  195. package/dist/datastar/attributes/attr.js.map +1 -1
  196. package/dist/datastar/attributes/bind.js.map +1 -1
  197. package/dist/datastar/attributes/class.js.map +1 -1
  198. package/dist/datastar/attributes/computed.js.map +1 -1
  199. package/dist/datastar/attributes/indicator.js.map +1 -1
  200. package/dist/datastar/attributes/init.js.map +1 -1
  201. package/dist/datastar/attributes/jsonSignals.js.map +1 -1
  202. package/dist/datastar/attributes/on.js.map +1 -1
  203. package/dist/datastar/attributes/onIntersect.js.map +1 -1
  204. package/dist/datastar/attributes/onInterval.js.map +1 -1
  205. package/dist/datastar/attributes/onSignalPatch.js.map +1 -1
  206. package/dist/datastar/attributes/ref.js.map +1 -1
  207. package/dist/datastar/attributes/show.js.map +1 -1
  208. package/dist/datastar/attributes/signals.js.map +1 -1
  209. package/dist/datastar/attributes/style.js.map +1 -1
  210. package/dist/datastar/attributes/text.js.map +1 -1
  211. package/dist/datastar/engine.d.ts +5 -5
  212. package/dist/datastar/engine.d.ts.map +1 -1
  213. package/dist/datastar/engine.js.map +1 -1
  214. package/dist/datastar/utils.d.ts +1 -1
  215. package/dist/datastar/utils.d.ts.map +1 -1
  216. package/dist/datastar/utils.js.map +1 -1
  217. package/dist/datastar/watchers/patchElements.js +3 -1
  218. package/dist/datastar/watchers/patchElements.js.map +1 -1
  219. package/dist/datastar/watchers/patchSignals.js.map +1 -1
  220. package/dist/experimental/EncryptedCookies.d.ts +4 -4
  221. package/dist/experimental/EncryptedCookies.d.ts.map +1 -1
  222. package/dist/experimental/EncryptedCookies.js.map +1 -1
  223. package/dist/hyper/Hyper.js.map +1 -1
  224. package/dist/hyper/HyperHtml.js.map +1 -1
  225. package/dist/hyper/HyperHtml.test.js.map +1 -1
  226. package/dist/hyper/HyperNode.d.ts +1 -2
  227. package/dist/hyper/HyperNode.d.ts.map +1 -1
  228. package/dist/hyper/HyperNode.js +1 -1
  229. package/dist/hyper/HyperNode.js.map +1 -1
  230. package/dist/hyper/HyperRoute.js.map +1 -1
  231. package/dist/hyper/HyperRoute.test.js +11 -13
  232. package/dist/hyper/HyperRoute.test.js.map +1 -1
  233. package/dist/hyper/html.d.ts +5 -4
  234. package/dist/hyper/html.d.ts.map +1 -1
  235. package/dist/hyper/html.js.map +1 -1
  236. package/dist/hyper/jsx-runtime.js.map +1 -1
  237. package/dist/index.d.ts +1 -1
  238. package/dist/index.d.ts.map +1 -1
  239. package/dist/index.js +1 -1
  240. package/dist/index.js.map +1 -1
  241. package/dist/lint/plugin.d.ts +18 -15
  242. package/dist/lint/plugin.d.ts.map +1 -1
  243. package/dist/lint/plugin.js +76 -80
  244. package/dist/lint/plugin.js.map +1 -1
  245. package/dist/node/NodeFileSystem.d.ts +3 -3
  246. package/dist/node/NodeFileSystem.d.ts.map +1 -1
  247. package/dist/node/NodeFileSystem.js +8 -7
  248. package/dist/node/NodeFileSystem.js.map +1 -1
  249. package/dist/node/NodeUtils.d.ts.map +1 -1
  250. package/dist/node/NodeUtils.js.map +1 -1
  251. package/dist/sql/SqlCache.d.ts +1 -0
  252. package/dist/sql/SqlCache.d.ts.map +1 -1
  253. package/dist/sql/SqlCache.js +5 -1
  254. package/dist/sql/SqlCache.js.map +1 -1
  255. package/dist/sql/SqlClient.js +1 -1
  256. package/dist/sql/SqlClient.js.map +1 -1
  257. package/dist/{SqlIntrospect.d.ts → sql/SqlIntrospect.d.ts} +3 -3
  258. package/dist/sql/SqlIntrospect.d.ts.map +1 -0
  259. package/dist/{SqlIntrospect.js → sql/SqlIntrospect.js} +1 -1
  260. package/dist/sql/SqlIntrospect.js.map +1 -0
  261. package/dist/sql/bun/index.d.ts +3 -3
  262. package/dist/sql/bun/index.d.ts.map +1 -1
  263. package/dist/sql/bun/index.js +1 -1
  264. package/dist/sql/bun/index.js.map +1 -1
  265. package/dist/sql/index.d.ts +1 -0
  266. package/dist/sql/index.d.ts.map +1 -1
  267. package/dist/sql/index.js +1 -0
  268. package/dist/sql/index.js.map +1 -1
  269. package/dist/sql/libsql/index.d.ts +1 -1
  270. package/dist/sql/libsql/index.d.ts.map +1 -1
  271. package/dist/sql/libsql/index.js +2 -2
  272. package/dist/sql/libsql/index.js.map +1 -1
  273. package/dist/sql/mssql/index.d.ts +3 -3
  274. package/dist/sql/mssql/index.d.ts.map +1 -1
  275. package/dist/sql/mssql/index.js +1 -1
  276. package/dist/sql/mssql/index.js.map +1 -1
  277. package/dist/sql/postgres/index.d.ts +1 -1
  278. package/dist/sql/postgres/index.d.ts.map +1 -1
  279. package/dist/sql/postgres/index.js.map +1 -1
  280. package/dist/studio/Simulation.d.ts.map +1 -0
  281. package/dist/studio/Simulation.js.map +1 -0
  282. package/dist/{tower/Tower.d.ts → studio/Studio.d.ts} +4 -4
  283. package/dist/studio/Studio.d.ts.map +1 -0
  284. package/dist/studio/Studio.js +30 -0
  285. package/dist/studio/Studio.js.map +1 -0
  286. package/dist/studio/StudioErrors.d.ts +4 -0
  287. package/dist/studio/StudioErrors.d.ts.map +1 -0
  288. package/dist/{tower/TowerErrors.js → studio/StudioErrors.js} +6 -6
  289. package/dist/studio/StudioErrors.js.map +1 -0
  290. package/dist/{tower/TowerLogger.d.ts → studio/StudioLogger.d.ts} +1 -1
  291. package/dist/studio/StudioLogger.d.ts.map +1 -0
  292. package/dist/{tower/TowerLogger.js → studio/StudioLogger.js} +7 -7
  293. package/dist/studio/StudioLogger.js.map +1 -0
  294. package/dist/studio/StudioMetrics.d.ts +4 -0
  295. package/dist/studio/StudioMetrics.d.ts.map +1 -0
  296. package/dist/{tower/TowerMetrics.js → studio/StudioMetrics.js} +3 -3
  297. package/dist/studio/StudioMetrics.js.map +1 -0
  298. package/dist/studio/StudioProcess.d.ts +4 -0
  299. package/dist/studio/StudioProcess.d.ts.map +1 -0
  300. package/dist/{tower/TowerProcess.js → studio/StudioProcess.js} +3 -3
  301. package/dist/studio/StudioProcess.js.map +1 -0
  302. package/dist/{tower/TowerStore.d.ts → studio/StudioStore.d.ts} +33 -33
  303. package/dist/studio/StudioStore.d.ts.map +1 -0
  304. package/dist/{tower/TowerStore.js → studio/StudioStore.js} +5 -5
  305. package/dist/studio/StudioStore.js.map +1 -0
  306. package/dist/studio/StudioTracer.d.ts +4 -0
  307. package/dist/studio/StudioTracer.d.ts.map +1 -0
  308. package/dist/{tower/TowerTracer.js → studio/StudioTracer.js} +21 -21
  309. package/dist/studio/StudioTracer.js.map +1 -0
  310. package/dist/studio/index.d.ts +4 -0
  311. package/dist/studio/index.d.ts.map +1 -0
  312. package/dist/studio/index.js +4 -0
  313. package/dist/studio/index.js.map +1 -0
  314. package/dist/{tower → studio}/routes/errors/route.d.ts +1 -1
  315. package/dist/{tower/routes/metrics → studio/routes/errors}/route.d.ts.map +1 -1
  316. package/dist/{tower → studio}/routes/errors/route.js +5 -9
  317. package/dist/studio/routes/errors/route.js.map +1 -0
  318. package/dist/{tower → studio}/routes/fiberDetail.d.ts +1 -1
  319. package/dist/studio/routes/fiberDetail.d.ts.map +1 -0
  320. package/dist/{tower → studio}/routes/fiberDetail.js +7 -7
  321. package/dist/studio/routes/fiberDetail.js.map +1 -0
  322. package/dist/{tower/routes/traces → studio/routes/fibers}/route.d.ts +1 -1
  323. package/dist/studio/routes/fibers/route.d.ts.map +1 -0
  324. package/dist/studio/routes/fibers/route.js +25 -0
  325. package/dist/studio/routes/fibers/route.js.map +1 -0
  326. package/dist/studio/routes/layout.d.ts.map +1 -0
  327. package/{src/tower → dist/studio}/routes/layout.html +1 -1
  328. package/dist/studio/routes/layout.js.map +1 -0
  329. package/dist/{tower → studio}/routes/logs/route.d.ts +1 -1
  330. package/dist/studio/routes/logs/route.d.ts.map +1 -0
  331. package/dist/studio/routes/logs/route.js +30 -0
  332. package/dist/studio/routes/logs/route.js.map +1 -0
  333. package/dist/{tower → studio}/routes/metrics/route.d.ts +1 -1
  334. package/dist/studio/routes/metrics/route.d.ts.map +1 -0
  335. package/dist/{tower → studio}/routes/metrics/route.js +3 -5
  336. package/dist/studio/routes/metrics/route.js.map +1 -0
  337. package/dist/{tower → studio}/routes/route.d.ts +1 -1
  338. package/dist/studio/routes/route.d.ts.map +1 -0
  339. package/dist/studio/routes/route.js +6 -0
  340. package/dist/studio/routes/route.js.map +1 -0
  341. package/dist/{tower → studio}/routes/routes/route.d.ts +1 -1
  342. package/dist/studio/routes/routes/route.d.ts.map +1 -0
  343. package/dist/{tower → studio}/routes/routes/route.js +2 -4
  344. package/dist/studio/routes/routes/route.js.map +1 -0
  345. package/dist/{tower → studio}/routes/services/route.d.ts +1 -1
  346. package/dist/studio/routes/services/route.d.ts.map +1 -0
  347. package/dist/studio/routes/services/route.js +13 -0
  348. package/dist/studio/routes/services/route.js.map +1 -0
  349. package/dist/{tower → studio}/routes/system/route.d.ts +1 -1
  350. package/dist/studio/routes/system/route.d.ts.map +1 -0
  351. package/dist/studio/routes/system/route.js +19 -0
  352. package/dist/studio/routes/system/route.js.map +1 -0
  353. package/dist/{tower → studio}/routes/traceDetail.d.ts +1 -1
  354. package/dist/studio/routes/traceDetail.d.ts.map +1 -0
  355. package/dist/{tower → studio}/routes/traceDetail.js +4 -4
  356. package/dist/studio/routes/traceDetail.js.map +1 -0
  357. package/dist/{tower/routes/fibers → studio/routes/traces}/route.d.ts +1 -1
  358. package/dist/studio/routes/traces/route.d.ts.map +1 -0
  359. package/dist/studio/routes/traces/route.js +30 -0
  360. package/dist/studio/routes/traces/route.js.map +1 -0
  361. package/dist/{tower → studio}/routes/tree.d.ts +46 -46
  362. package/dist/studio/routes/tree.d.ts.map +1 -0
  363. package/dist/studio/routes/tree.js.map +1 -0
  364. package/dist/studio/ui/Errors.d.ts +5 -0
  365. package/dist/studio/ui/Errors.d.ts.map +1 -0
  366. package/dist/studio/ui/Errors.js +17 -0
  367. package/dist/studio/ui/Errors.js.map +1 -0
  368. package/dist/{tower → studio}/ui/Fibers.d.ts +5 -5
  369. package/dist/studio/ui/Fibers.d.ts.map +1 -0
  370. package/dist/studio/ui/Fibers.js +134 -0
  371. package/dist/studio/ui/Fibers.js.map +1 -0
  372. package/dist/studio/ui/Logs.d.ts +5 -0
  373. package/dist/studio/ui/Logs.d.ts.map +1 -0
  374. package/dist/{tower → studio}/ui/Logs.js +2 -3
  375. package/dist/studio/ui/Logs.js.map +1 -0
  376. package/dist/studio/ui/Metrics.d.ts +5 -0
  377. package/dist/studio/ui/Metrics.d.ts.map +1 -0
  378. package/dist/{tower → studio}/ui/Metrics.js +4 -11
  379. package/dist/studio/ui/Metrics.js.map +1 -0
  380. package/dist/studio/ui/Routes.d.ts.map +1 -0
  381. package/dist/{tower → studio}/ui/Routes.js +4 -12
  382. package/dist/studio/ui/Routes.js.map +1 -0
  383. package/dist/studio/ui/Services.d.ts.map +1 -0
  384. package/dist/{tower → studio}/ui/Services.js +2 -9
  385. package/dist/studio/ui/Services.js.map +1 -0
  386. package/dist/studio/ui/Shell.d.ts.map +1 -0
  387. package/dist/studio/ui/Shell.js +8 -0
  388. package/dist/studio/ui/Shell.js.map +1 -0
  389. package/dist/studio/ui/System.d.ts +5 -0
  390. package/dist/studio/ui/System.d.ts.map +1 -0
  391. package/dist/studio/ui/System.js +36 -0
  392. package/dist/studio/ui/System.js.map +1 -0
  393. package/dist/studio/ui/Traces.d.ts +13 -0
  394. package/dist/studio/ui/Traces.d.ts.map +1 -0
  395. package/dist/studio/ui/Traces.js +182 -0
  396. package/dist/studio/ui/Traces.js.map +1 -0
  397. package/dist/testing/TestLogger.js.map +1 -1
  398. package/dist/testing/utils.d.ts +3 -1
  399. package/dist/testing/utils.d.ts.map +1 -1
  400. package/dist/testing/utils.js +39 -0
  401. package/dist/testing/utils.js.map +1 -1
  402. package/dist/x/cloudflare/CloudflareTunnel.d.ts +8 -7
  403. package/dist/x/cloudflare/CloudflareTunnel.d.ts.map +1 -1
  404. package/dist/x/cloudflare/CloudflareTunnel.js.map +1 -1
  405. package/dist/x/tailscale/TailscaleTunnel.d.ts +9 -9
  406. package/dist/x/tailscale/TailscaleTunnel.d.ts.map +1 -1
  407. package/dist/x/tailscale/TailscaleTunnel.js +3 -4
  408. package/dist/x/tailscale/TailscaleTunnel.js.map +1 -1
  409. package/dist/x/tailwind/TailwindPlugin.d.ts +5 -5
  410. package/dist/x/tailwind/TailwindPlugin.d.ts.map +1 -1
  411. package/dist/x/tailwind/TailwindPlugin.js.map +1 -1
  412. package/dist/x/tailwind/compile.js.map +1 -1
  413. package/dist/x/tailwind/plugin.js.map +1 -1
  414. package/package.json +42 -60
  415. package/src/Cookies.ts +4 -8
  416. package/src/Entity.ts +24 -19
  417. package/src/Fetch.ts +128 -5
  418. package/src/FileRouter.ts +46 -49
  419. package/src/FileRouterCodegen.ts +9 -23
  420. package/src/FileSystem.ts +43 -63
  421. package/src/GlobalLayer.ts +1 -1
  422. package/src/Route.ts +2 -2
  423. package/src/RouteBody.ts +1 -1
  424. package/src/RouteHttp.ts +133 -113
  425. package/src/RouteMount.ts +3 -3
  426. package/src/RouteSchema.ts +2 -2
  427. package/src/RouteSse.ts +28 -37
  428. package/src/RouteTree.ts +2 -2
  429. package/src/RouteTrie.ts +1 -1
  430. package/src/Socket.ts +17 -27
  431. package/src/Start.ts +39 -47
  432. package/src/System.ts +40 -64
  433. package/src/{ChildProcess.ts → _ChildProcess.ts} +13 -22
  434. package/src/{Development.ts → _Development.ts} +16 -21
  435. package/src/{Docker.ts → _Docker.ts} +1 -1
  436. package/src/{Http.ts → _Http.ts} +0 -28
  437. package/src/{PathPattern.ts → _PathPattern.ts} +105 -0
  438. package/src/{SchemaExtra.ts → _SchemaExtra.ts} +3 -4
  439. package/src/bun/BunChildProcessSpawner.ts +9 -9
  440. package/src/bun/BunRoute.ts +5 -8
  441. package/src/bun/BunServer.ts +3 -3
  442. package/src/bundler/BundleRoute.ts +2 -2
  443. package/src/cli/Argument.ts +45 -0
  444. package/src/cli/CliError.ts +68 -0
  445. package/src/cli/Command.ts +685 -0
  446. package/src/cli/Flag.ts +63 -0
  447. package/src/cli/HelpDoc.ts +67 -0
  448. package/src/cli/Param.ts +418 -0
  449. package/src/cli/Primitive.ts +94 -0
  450. package/src/cli/index.ts +7 -0
  451. package/src/datastar/watchers/patchElements.ts +4 -2
  452. package/src/hyper/HyperHtml.test.tsx +395 -0
  453. package/src/hyper/HyperNode.ts +1 -2
  454. package/src/hyper/HyperRoute.test.tsx +166 -0
  455. package/src/hyper/HyperRoute.ts +1 -1
  456. package/src/index.ts +1 -1
  457. package/src/lint/plugin.js +86 -97
  458. package/src/node/NodeFileSystem.ts +15 -14
  459. package/src/sql/SqlCache.ts +14 -1
  460. package/src/sql/SqlClient.ts +1 -1
  461. package/src/{SqlIntrospect.ts → sql/SqlIntrospect.ts} +1 -1
  462. package/src/sql/bun/index.ts +1 -1
  463. package/src/sql/index.ts +1 -0
  464. package/src/sql/libsql/index.ts +1 -1
  465. package/src/sql/mssql/index.ts +1 -1
  466. package/src/studio/Studio.ts +47 -0
  467. package/src/{tower/TowerErrors.ts → studio/StudioErrors.ts} +13 -13
  468. package/src/{tower/TowerLogger.ts → studio/StudioLogger.ts} +10 -10
  469. package/src/{tower/TowerMetrics.ts → studio/StudioMetrics.ts} +5 -5
  470. package/src/{tower/TowerProcess.ts → studio/StudioProcess.ts} +4 -4
  471. package/src/{tower/TowerStore.ts → studio/StudioStore.ts} +37 -37
  472. package/src/{tower/TowerTracer.ts → studio/StudioTracer.ts} +25 -25
  473. package/src/studio/index.ts +3 -0
  474. package/src/{tower → studio}/routes/errors/route.tsx +4 -4
  475. package/src/{tower → studio}/routes/fiberDetail.tsx +8 -8
  476. package/src/{tower → studio}/routes/fibers/route.tsx +10 -10
  477. package/src/studio/routes/layout.html +340 -0
  478. package/src/{tower → studio}/routes/logs/route.tsx +4 -4
  479. package/src/{tower → studio}/routes/metrics/route.tsx +5 -5
  480. package/src/studio/routes/route.tsx +8 -0
  481. package/src/{tower → studio}/routes/routes/route.tsx +2 -2
  482. package/src/{tower → studio}/routes/services/route.tsx +2 -2
  483. package/src/{tower → studio}/routes/system/route.tsx +5 -5
  484. package/src/{tower → studio}/routes/traceDetail.tsx +5 -5
  485. package/src/{tower → studio}/routes/traces/route.tsx +5 -5
  486. package/src/{tower → studio}/ui/Errors.tsx +3 -3
  487. package/src/{tower → studio}/ui/Fibers.tsx +7 -7
  488. package/src/{tower → studio}/ui/Logs.tsx +3 -3
  489. package/src/{tower → studio}/ui/Metrics.tsx +4 -4
  490. package/src/{tower → studio}/ui/Shell.tsx +1 -1
  491. package/src/{tower → studio}/ui/System.tsx +2 -2
  492. package/src/{tower → studio}/ui/Traces.tsx +16 -16
  493. package/src/testing/utils.ts +59 -0
  494. package/src/x/tailscale/TailscaleTunnel.ts +3 -4
  495. package/dist/ChildProcess.d.ts.map +0 -1
  496. package/dist/ChildProcess.js.map +0 -1
  497. package/dist/Commander.d.ts +0 -101
  498. package/dist/Commander.d.ts.map +0 -1
  499. package/dist/Commander.js +0 -327
  500. package/dist/Commander.js.map +0 -1
  501. package/dist/ContentNegotiation.d.ts.map +0 -1
  502. package/dist/ContentNegotiation.js.map +0 -1
  503. package/dist/Development.d.ts +0 -42
  504. package/dist/Development.d.ts.map +0 -1
  505. package/dist/Development.js.map +0 -1
  506. package/dist/Docker.d.ts.map +0 -1
  507. package/dist/Docker.js.map +0 -1
  508. package/dist/Effectify.d.ts.map +0 -1
  509. package/dist/Effectify.js.map +0 -1
  510. package/dist/FilePathPattern.d.ts +0 -30
  511. package/dist/FilePathPattern.d.ts.map +0 -1
  512. package/dist/FilePathPattern.js +0 -87
  513. package/dist/FilePathPattern.js.map +0 -1
  514. package/dist/Http.d.ts.map +0 -1
  515. package/dist/Http.js.map +0 -1
  516. package/dist/PathPattern.d.ts.map +0 -1
  517. package/dist/PathPattern.js.map +0 -1
  518. package/dist/PlatformError.d.ts +0 -39
  519. package/dist/PlatformError.d.ts.map +0 -1
  520. package/dist/PlatformError.js +0 -26
  521. package/dist/PlatformError.js.map +0 -1
  522. package/dist/SchemaExtra.d.ts +0 -8
  523. package/dist/SchemaExtra.d.ts.map +0 -1
  524. package/dist/SchemaExtra.js.map +0 -1
  525. package/dist/SqlIntrospect.d.ts.map +0 -1
  526. package/dist/SqlIntrospect.js.map +0 -1
  527. package/dist/StartApp.d.ts.map +0 -1
  528. package/dist/StartApp.js.map +0 -1
  529. package/dist/StreamExtra.d.ts.map +0 -1
  530. package/dist/StreamExtra.js.map +0 -1
  531. package/dist/TuplePathPattern.d.ts +0 -10
  532. package/dist/TuplePathPattern.d.ts.map +0 -1
  533. package/dist/TuplePathPattern.js +0 -69
  534. package/dist/TuplePathPattern.js.map +0 -1
  535. package/dist/Values.d.ts.map +0 -1
  536. package/dist/Values.js.map +0 -1
  537. package/dist/tower/Simulation.d.ts.map +0 -1
  538. package/dist/tower/Simulation.js.map +0 -1
  539. package/dist/tower/Tower.d.ts.map +0 -1
  540. package/dist/tower/Tower.js +0 -30
  541. package/dist/tower/Tower.js.map +0 -1
  542. package/dist/tower/TowerErrors.d.ts +0 -4
  543. package/dist/tower/TowerErrors.d.ts.map +0 -1
  544. package/dist/tower/TowerErrors.js.map +0 -1
  545. package/dist/tower/TowerLogger.d.ts.map +0 -1
  546. package/dist/tower/TowerLogger.js.map +0 -1
  547. package/dist/tower/TowerMetrics.d.ts +0 -4
  548. package/dist/tower/TowerMetrics.d.ts.map +0 -1
  549. package/dist/tower/TowerMetrics.js.map +0 -1
  550. package/dist/tower/TowerProcess.d.ts +0 -4
  551. package/dist/tower/TowerProcess.d.ts.map +0 -1
  552. package/dist/tower/TowerProcess.js.map +0 -1
  553. package/dist/tower/TowerStore.d.ts.map +0 -1
  554. package/dist/tower/TowerStore.js.map +0 -1
  555. package/dist/tower/TowerTracer.d.ts +0 -4
  556. package/dist/tower/TowerTracer.d.ts.map +0 -1
  557. package/dist/tower/TowerTracer.js.map +0 -1
  558. package/dist/tower/index.d.ts +0 -4
  559. package/dist/tower/index.d.ts.map +0 -1
  560. package/dist/tower/index.js +0 -4
  561. package/dist/tower/index.js.map +0 -1
  562. package/dist/tower/routes/errors/route.d.ts.map +0 -1
  563. package/dist/tower/routes/errors/route.js.map +0 -1
  564. package/dist/tower/routes/fiberDetail.d.ts.map +0 -1
  565. package/dist/tower/routes/fiberDetail.js.map +0 -1
  566. package/dist/tower/routes/fibers/route.d.ts.map +0 -1
  567. package/dist/tower/routes/fibers/route.js +0 -27
  568. package/dist/tower/routes/fibers/route.js.map +0 -1
  569. package/dist/tower/routes/layout.d.ts.map +0 -1
  570. package/dist/tower/routes/layout.js.map +0 -1
  571. package/dist/tower/routes/logs/route.d.ts.map +0 -1
  572. package/dist/tower/routes/logs/route.js +0 -36
  573. package/dist/tower/routes/logs/route.js.map +0 -1
  574. package/dist/tower/routes/metrics/route.js.map +0 -1
  575. package/dist/tower/routes/route.d.ts.map +0 -1
  576. package/dist/tower/routes/route.js +0 -6
  577. package/dist/tower/routes/route.js.map +0 -1
  578. package/dist/tower/routes/routes/route.d.ts.map +0 -1
  579. package/dist/tower/routes/routes/route.js.map +0 -1
  580. package/dist/tower/routes/services/route.d.ts.map +0 -1
  581. package/dist/tower/routes/services/route.js +0 -15
  582. package/dist/tower/routes/services/route.js.map +0 -1
  583. package/dist/tower/routes/system/route.d.ts.map +0 -1
  584. package/dist/tower/routes/system/route.js +0 -21
  585. package/dist/tower/routes/system/route.js.map +0 -1
  586. package/dist/tower/routes/traceDetail.d.ts.map +0 -1
  587. package/dist/tower/routes/traceDetail.js.map +0 -1
  588. package/dist/tower/routes/traces/route.d.ts.map +0 -1
  589. package/dist/tower/routes/traces/route.js +0 -36
  590. package/dist/tower/routes/traces/route.js.map +0 -1
  591. package/dist/tower/routes/tree.d.ts.map +0 -1
  592. package/dist/tower/routes/tree.js.map +0 -1
  593. package/dist/tower/ui/Errors.d.ts +0 -5
  594. package/dist/tower/ui/Errors.d.ts.map +0 -1
  595. package/dist/tower/ui/Errors.js +0 -30
  596. package/dist/tower/ui/Errors.js.map +0 -1
  597. package/dist/tower/ui/Fibers.d.ts.map +0 -1
  598. package/dist/tower/ui/Fibers.js +0 -157
  599. package/dist/tower/ui/Fibers.js.map +0 -1
  600. package/dist/tower/ui/Logs.d.ts +0 -5
  601. package/dist/tower/ui/Logs.d.ts.map +0 -1
  602. package/dist/tower/ui/Logs.js.map +0 -1
  603. package/dist/tower/ui/Metrics.d.ts +0 -5
  604. package/dist/tower/ui/Metrics.d.ts.map +0 -1
  605. package/dist/tower/ui/Metrics.js.map +0 -1
  606. package/dist/tower/ui/Routes.d.ts.map +0 -1
  607. package/dist/tower/ui/Routes.js.map +0 -1
  608. package/dist/tower/ui/Services.d.ts.map +0 -1
  609. package/dist/tower/ui/Services.js.map +0 -1
  610. package/dist/tower/ui/Shell.d.ts.map +0 -1
  611. package/dist/tower/ui/Shell.js +0 -12
  612. package/dist/tower/ui/Shell.js.map +0 -1
  613. package/dist/tower/ui/System.d.ts +0 -5
  614. package/dist/tower/ui/System.d.ts.map +0 -1
  615. package/dist/tower/ui/System.js +0 -65
  616. package/dist/tower/ui/System.js.map +0 -1
  617. package/dist/tower/ui/Traces.d.ts +0 -13
  618. package/dist/tower/ui/Traces.d.ts.map +0 -1
  619. package/dist/tower/ui/Traces.js +0 -219
  620. package/dist/tower/ui/Traces.js.map +0 -1
  621. package/src/Commander.ts +0 -585
  622. package/src/FilePathPattern.ts +0 -115
  623. package/src/PlatformError.ts +0 -73
  624. package/src/TuplePathPattern.ts +0 -75
  625. package/src/tower/Tower.ts +0 -47
  626. package/src/tower/index.ts +0 -3
  627. package/src/tower/routes/route.tsx +0 -8
  628. /package/dist/{tower → studio}/Simulation.d.ts +0 -0
  629. /package/dist/{tower → studio}/Simulation.js +0 -0
  630. /package/dist/{tower → studio}/routes/layout.d.ts +0 -0
  631. /package/dist/{tower → studio}/routes/layout.js +0 -0
  632. /package/dist/{tower → studio}/routes/tree.js +0 -0
  633. /package/dist/{tower → studio}/ui/Routes.d.ts +0 -0
  634. /package/dist/{tower → studio}/ui/Services.d.ts +0 -0
  635. /package/dist/{tower → studio}/ui/Shell.d.ts +0 -0
  636. /package/src/{ContentNegotiation.ts → _ContentNegotiation.ts} +0 -0
  637. /package/src/{Effectify.ts → _Effectify.ts} +0 -0
  638. /package/src/{StartApp.ts → _StartApp.ts} +0 -0
  639. /package/src/{StreamExtra.ts → _StreamExtra.ts} +0 -0
  640. /package/src/{Values.ts → _Values.ts} +0 -0
  641. /package/src/{tower → studio}/Simulation.ts +0 -0
  642. /package/src/{tower → studio}/routes/layout.tsx +0 -0
  643. /package/src/{tower → studio}/routes/tree.ts +0 -0
  644. /package/src/{tower → studio}/ui/Routes.tsx +0 -0
  645. /package/src/{tower → studio}/ui/Services.tsx +0 -0
package/src/RouteSse.ts CHANGED
@@ -5,46 +5,37 @@ import * as Stream from "effect/Stream"
5
5
  import type * as Utils from "effect/Utils"
6
6
  import * as Entity from "./Entity.ts"
7
7
  import * as Route from "./Route.ts"
8
- import * as StreamExtra from "./StreamExtra.ts"
9
- import type * as Values from "./Values.ts"
8
+ import * as StreamExtra from "./_StreamExtra.ts"
9
+ import type * as Values from "./_Values.ts"
10
10
 
11
11
  const HEARTBEAT_INTERVAL = Duration.seconds(5)
12
12
  const HEARTBEAT = ": <3\n\n"
13
13
 
14
- export interface SseEvent {
15
- data?: string | undefined
16
- type?: string
17
- retry?: number
14
+ interface SseEvent {
15
+ readonly [key: string]: unknown
16
+ readonly _tag?: string
17
+ readonly data?: string | undefined
18
+ readonly type?: string
19
+ readonly retry?: number
18
20
  }
19
21
 
20
- export type SseTaggedEvent = {
21
- readonly _tag: string
22
- }
23
-
24
- export type SseEventInput = SseEvent | SseTaggedEvent
25
-
26
- function isTaggedEvent(event: SseEventInput): event is SseTaggedEvent {
27
- return Object.hasOwn(event, "_tag") && typeof event["_tag"] === "string"
28
- }
29
-
30
- function formatSseEvent(event: SseEventInput): string {
31
- if (isTaggedEvent(event)) {
22
+ function formatSseEvent(event: SseEvent): string {
23
+ if (event._tag) {
32
24
  const json = JSON.stringify(event)
33
25
  return `event: ${event._tag}\ndata: ${json}\n\n`
34
26
  }
35
27
 
36
- const e = event as SseEvent
37
28
  let result = ""
38
- if (e.type) {
39
- result += `event: ${e.type}\n`
29
+ if (event.type) {
30
+ result += `event: ${event.type}\n`
40
31
  }
41
- if (typeof e.data === "string") {
42
- for (const line of e.data.split("\n")) {
32
+ if (typeof event.data === "string") {
33
+ for (const line of event.data.split("\n")) {
43
34
  result += `data: ${line}\n`
44
35
  }
45
36
  }
46
- if (e.retry !== undefined) {
47
- result += `retry: ${e.retry}\n`
37
+ if (event.retry !== undefined) {
38
+ result += `retry: ${event.retry}\n`
48
39
  }
49
40
  if (result === "") {
50
41
  return ""
@@ -52,18 +43,18 @@ function formatSseEvent(event: SseEventInput): string {
52
43
  return result + "\n"
53
44
  }
54
45
 
55
- export type SseHandlerInput<B, E, R> =
56
- | Stream.Stream<SseEventInput, E, R>
57
- | Effect.Effect<Stream.Stream<SseEventInput, E, R>, E, R>
46
+ type SseHandlerInput<B, E, R> =
47
+ | Stream.Stream<SseEvent, E, R>
48
+ | Effect.Effect<Stream.Stream<SseEvent, E, R>, E, R>
58
49
  | ((
59
50
  context: Values.Simplify<B>,
60
51
  next: (context?: Partial<B> & Record<string, unknown>) => Entity.Entity<string>,
61
52
  ) =>
62
- | Stream.Stream<SseEventInput, E, R>
63
- | Effect.Effect<Stream.Stream<SseEventInput, E, R>, E, R>
53
+ | Stream.Stream<SseEvent, E, R>
54
+ | Effect.Effect<Stream.Stream<SseEvent, E, R>, E, R>
64
55
  | Generator<
65
56
  Utils.YieldWrap<Effect.Effect<unknown, E, R>>,
66
- Stream.Stream<SseEventInput, E, R>,
57
+ Stream.Stream<SseEvent, E, R>,
67
58
  unknown
68
59
  >)
69
60
 
@@ -81,24 +72,24 @@ export function sse<
81
72
  E,
82
73
  R
83
74
  > = (ctx, _next) => {
84
- const getStream = (): Effect.Effect<Stream.Stream<SseEventInput, E, R>, E, R> => {
75
+ const getStream = (): Effect.Effect<Stream.Stream<SseEvent, E, R>, E, R> => {
85
76
  if (typeof handler === "function") {
86
77
  const result = (handler as Function)(ctx, _next)
87
78
  if (StreamExtra.isStream(result)) {
88
- return Effect.succeed(result as Stream.Stream<SseEventInput, E, R>)
79
+ return Effect.succeed(result as Stream.Stream<SseEvent, E, R>)
89
80
  }
90
81
  if (Effect.isEffect(result)) {
91
- return result as Effect.Effect<Stream.Stream<SseEventInput, E, R>, E, R>
82
+ return result as Effect.Effect<Stream.Stream<SseEvent, E, R>, E, R>
92
83
  }
93
84
  return Effect.gen(function* () {
94
85
  return yield* result
95
- }) as Effect.Effect<Stream.Stream<SseEventInput, E, R>, E, R>
86
+ }) as Effect.Effect<Stream.Stream<SseEvent, E, R>, E, R>
96
87
  }
97
88
  if (StreamExtra.isStream(handler)) {
98
- return Effect.succeed(handler as Stream.Stream<SseEventInput, E, R>)
89
+ return Effect.succeed(handler as Stream.Stream<SseEvent, E, R>)
99
90
  }
100
91
  if (Effect.isEffect(handler)) {
101
- return handler as Effect.Effect<Stream.Stream<SseEventInput, E, R>, E, R>
92
+ return handler as Effect.Effect<Stream.Stream<SseEvent, E, R>, E, R>
102
93
  }
103
94
  return Effect.succeed(Stream.empty)
104
95
  }
package/src/RouteTree.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import * as Predicate from "effect/Predicate"
2
- import * as PathPattern from "./PathPattern.ts"
2
+ import * as PathPattern from "./_PathPattern.ts"
3
3
  import * as Route from "./Route.ts"
4
4
  import type * as RouteMount from "./RouteMount.ts"
5
5
 
6
- const TypeId: unique symbol = Symbol.for("effect-start/RouteTree")
6
+ const TypeId = "~effect-start/RouteTree" as const
7
7
  const RouteTreeRoutes: unique symbol = Symbol()
8
8
 
9
9
  type MethodRoute = Route.Route.With<{ method: string }>
package/src/RouteTrie.ts CHANGED
@@ -1,4 +1,4 @@
1
- import * as PathPattern from "./PathPattern.ts"
1
+ import * as PathPattern from "./_PathPattern.ts"
2
2
  import * as Route from "./Route.ts"
3
3
 
4
4
  export interface Node {
package/src/Socket.ts CHANGED
@@ -1,50 +1,40 @@
1
1
  /*
2
2
  * Adapted from @effect/platform
3
3
  */
4
+ import * as Data from "effect/Data"
4
5
  import * as Predicate from "effect/Predicate"
5
- import * as PlatformError from "./PlatformError.ts"
6
6
 
7
- export const SocketErrorTypeId: unique symbol = Symbol.for("@effect/platform/Socket/SocketError")
8
-
9
- export type SocketErrorTypeId = typeof SocketErrorTypeId
7
+ const SocketErrorTypeId: unique symbol = Symbol.for("@effect/platform/Socket/SocketError")
10
8
 
11
9
  export const isSocketError = (u: unknown): u is SocketError =>
12
10
  Predicate.hasProperty(u, SocketErrorTypeId)
13
11
 
14
- export type SocketError = SocketGenericError | SocketCloseError
15
-
16
- export class SocketGenericError extends PlatformError.TypeIdError(
17
- SocketErrorTypeId,
18
- "SocketError",
19
- )<{
20
- readonly reason: "Write" | "Read" | "Open" | "OpenTimeout"
21
- readonly cause: unknown
22
- }> {
23
- get message() {
24
- return `An error occurred during ${this.reason}`
25
- }
26
- }
27
-
28
- export class SocketCloseError extends PlatformError.TypeIdError(SocketErrorTypeId, "SocketError")<{
29
- readonly reason: "Close"
30
- readonly code: number
12
+ export class SocketError extends Data.TaggedError("SocketError")<{
13
+ readonly reason: "Write" | "Read" | "Open" | "OpenTimeout" | "Close"
14
+ readonly cause?: unknown
15
+ readonly code?: number | undefined
31
16
  readonly closeReason?: string | undefined
32
17
  }> {
33
- static is(u: unknown): u is SocketCloseError {
18
+ readonly [SocketErrorTypeId]: typeof SocketErrorTypeId = SocketErrorTypeId
19
+
20
+ static isClose(u: unknown): u is SocketError & { reason: "Close" } {
34
21
  return isSocketError(u) && u.reason === "Close"
35
22
  }
36
23
 
37
24
  static isClean(isClean: (code: number) => boolean) {
38
- return function (u: unknown): u is SocketCloseError {
39
- return SocketCloseError.is(u) && isClean(u.code)
25
+ return function (u: unknown): u is SocketError & { reason: "Close" } {
26
+ return SocketError.isClose(u) && u.code !== undefined && isClean(u.code)
40
27
  }
41
28
  }
42
29
 
43
30
  get message() {
44
- if (this.closeReason) {
45
- return `${this.reason}: ${this.code}: ${this.closeReason}`
31
+ if (this.reason === "Close") {
32
+ if (this.closeReason) {
33
+ return `${this.reason}: ${this.code}: ${this.closeReason}`
34
+ }
35
+ return `${this.reason}: ${this.code}`
46
36
  }
47
- return `${this.reason}: ${this.code}`
37
+ return `An error occurred during ${this.reason}`
48
38
  }
49
39
  }
50
40
 
package/src/Start.ts CHANGED
@@ -9,26 +9,14 @@ import * as Function from "effect/Function"
9
9
  import * as Layer from "effect/Layer"
10
10
  import * as Scope from "effect/Scope"
11
11
  import * as SynchronizedRef from "effect/SynchronizedRef"
12
- import type * as ChildProcess from "./ChildProcess.ts"
12
+ import type * as ChildProcess from "./_ChildProcess.ts"
13
13
  import * as MutableRef from "effect/MutableRef"
14
14
  import * as BunRuntime from "./bun/BunRuntime.ts"
15
15
  import * as BunServer from "./bun/BunServer.ts"
16
16
  import * as NodeFileSystem from "./node/NodeFileSystem.ts"
17
17
  import * as BunChildProcessSpawner from "./bun/BunChildProcessSpawner.ts"
18
18
  import * as PlatformRuntime from "./PlatformRuntime.ts"
19
- import * as StartApp from "./StartApp.ts"
20
-
21
- export function layer<
22
- Layers extends [Layer.Layer<never, any, any>, ...Array<Layer.Layer<never, any, any>>],
23
- >(
24
- ...layers: Layers
25
- ): Layer.Layer<
26
- { [k in keyof Layers]: Layer.Layer.Success<Layers[k]> }[number],
27
- { [k in keyof Layers]: Layer.Layer.Error<Layers[k]> }[number],
28
- { [k in keyof Layers]: Layer.Layer.Context<Layers[k]> }[number]
29
- > {
30
- return Layer.mergeAll(...layers)
31
- }
19
+ import * as StartApp from "./_StartApp.ts"
32
20
 
33
21
  /**
34
22
  * Bundles layers together, wiring their dependencies automatically.
@@ -96,18 +84,6 @@ type OrderedPack<
96
84
  ]
97
85
  : []
98
86
 
99
- /**
100
- * Like `pack`, but accepts layers in any order.
101
- *
102
- * ```ts
103
- * // These all produce the same result:
104
- * Start.build(LoggerLive, DatabaseLive, UserRepoLive)
105
- * Start.build(UserRepoLive, DatabaseLive, LoggerLive)
106
- * ```
107
- *
108
- * @since 1.0.0
109
- * @category constructors
110
- */
111
87
  type BuildSuccess<Layers extends readonly Layer.Layer.Any[]> = {
112
88
  [K in keyof Layers]: Layer.Layer.Success<Layers[K]>
113
89
  }[number]
@@ -121,6 +97,18 @@ type BuildContext<Layers extends readonly Layer.Layer.Any[]> = Exclude<
121
97
  { [K in keyof Layers]: Layer.Layer.Success<Layers[K]> }[number]
122
98
  >
123
99
 
100
+ /**
101
+ * Like `pack`, but accepts layers in any order.
102
+ *
103
+ * ```ts
104
+ * // These all produce the same result:
105
+ * Start.build(LoggerLive, DatabaseLive, UserRepoLive)
106
+ * Start.build(UserRepoLive, DatabaseLive, LoggerLive)
107
+ * ```
108
+ *
109
+ * @since 1.0.0
110
+ * @category constructors
111
+ */
124
112
  export function build<const Layers extends readonly [Layer.Layer.Any, ...Array<Layer.Layer.Any>]>(
125
113
  ...layers: Layers
126
114
  ): Layer.Layer<BuildSuccess<Layers>, BuildError<Layers>, BuildContext<Layers>> {
@@ -170,26 +158,19 @@ export function build<const Layers extends readonly [Layer.Layer.Any, ...Array<L
170
158
  )
171
159
  }
172
160
 
173
- export type PlatformServices =
174
- | BunServer.BunServer
175
- | FileSystem.FileSystem
176
- | ChildProcess.ChildProcessSpawner
177
- | StartApp.StartApp
178
-
179
- export const Live: Layer.Layer<
180
- Exclude<PlatformServices, BunServer.BunServer>,
181
- never,
182
- never
183
- > = Layer.mergeAll(
184
- NodeFileSystem.layer,
185
- BunChildProcessSpawner.layer,
186
- Layer.effect(
187
- StartApp.StartApp,
188
- Deferred.make<BunServer.BunServer>().pipe(Effect.map((server) => ({ server }))),
189
- ),
190
- )
191
-
192
- export function serve<ROut, E, RIn extends PlatformServices>(
161
+ export function layerDev() {
162
+ return Layer.mergeAll(NodeFileSystem.layer, BunChildProcessSpawner.layer)
163
+ }
164
+
165
+ export function serve<
166
+ ROut,
167
+ E,
168
+ RIn extends
169
+ | BunServer.BunServer
170
+ | FileSystem.FileSystem
171
+ | ChildProcess.ChildProcessSpawner
172
+ | StartApp.StartApp,
173
+ >(
193
174
  load: () => Promise<{
194
175
  default: Layer.Layer<ROut, E, RIn>
195
176
  }>,
@@ -201,7 +182,18 @@ export function serve<ROut, E, RIn extends PlatformServices>(
201
182
  Layer.unwrapEffect,
202
183
  )
203
184
 
204
- const appLayerResolved = Function.pipe(appLayer, Layer.provideMerge(Live))
185
+ const appLayerResolved = Function.pipe(
186
+ appLayer,
187
+ Layer.provideMerge(
188
+ Layer.mergeAll(
189
+ layerDev(),
190
+ Layer.effect(
191
+ StartApp.StartApp,
192
+ Deferred.make<BunServer.BunServer>().pipe(Effect.map((server) => ({ server }))),
193
+ ),
194
+ ),
195
+ ),
196
+ )
205
197
 
206
198
  const composed = Function.pipe(
207
199
  BunServer.layerStart(),
package/src/System.ts CHANGED
@@ -1,75 +1,51 @@
1
+ /*
2
+ * Adapted from @effect/platform
3
+ */
4
+ import * as Data from "effect/Data"
1
5
  import * as Effect from "effect/Effect"
2
6
  import type * as Scope from "effect/Scope"
3
- import * as NNet from "node:net"
7
+ import * as ChildProcess from "./_ChildProcess.ts"
4
8
 
5
- import * as ChildProcess from "./ChildProcess.ts"
6
- import * as PlatformError from "./PlatformError.ts"
9
+ export type Spawner = ChildProcess.ChildProcessSpawner
7
10
 
8
- export const cwd: Effect.Effect<string> = Effect.sync(() => process.cwd())
11
+ export type SystemErrorReason =
12
+ | "AlreadyExists"
13
+ | "BadArgument"
14
+ | "BadResource"
15
+ | "Busy"
16
+ | "InvalidData"
17
+ | "NotFound"
18
+ | "PermissionDenied"
19
+ | "TimedOut"
20
+ | "UnexpectedEof"
21
+ | "Unknown"
22
+ | "WouldBlock"
23
+ | "WriteZero"
9
24
 
10
- export const randomFreePort: Effect.Effect<number, PlatformError.SystemError> = Effect.async<
11
- number,
12
- PlatformError.SystemError
13
- >((resume) => {
14
- const server = NNet.createServer()
15
- server.unref()
16
- server.on("error", (err) =>
17
- resume(
18
- Effect.fail(
19
- new PlatformError.SystemError({
20
- reason: "Unknown",
21
- module: "System",
22
- method: "randomFreePort",
23
- description: err.message,
24
- cause: err,
25
- }),
26
- ),
27
- ),
28
- )
29
- server.listen(0, "127.0.0.1", () => {
30
- const address = server.address()
31
- if (!address || typeof address === "string") {
32
- server.close(() =>
33
- resume(
34
- Effect.fail(
35
- new PlatformError.SystemError({
36
- reason: "Unknown",
37
- module: "System",
38
- method: "randomFreePort",
39
- description: "Failed to allocate a free port",
40
- }),
41
- ),
42
- ),
43
- )
44
- return
45
- }
46
- const port = address.port
47
- server.close((err) => {
48
- if (err) {
49
- resume(
50
- Effect.fail(
51
- new PlatformError.SystemError({
52
- reason: "Unknown",
53
- module: "System",
54
- method: "randomFreePort",
55
- description: err.message,
56
- cause: err,
57
- }),
58
- ),
59
- )
60
- return
61
- }
62
- resume(Effect.succeed(port))
63
- })
64
- })
65
- })
25
+ export class SystemError extends Data.TaggedError("SystemError")<{
26
+ reason: SystemErrorReason
27
+ module: string
28
+ method: string
29
+ description?: string | undefined
30
+ syscall?: string | undefined
31
+ pathOrDescriptor?: string | number | undefined
32
+ cause?: unknown
33
+ }> {
34
+ get message(): string {
35
+ return `${this.reason}: ${this.module}.${this.method}${
36
+ this.pathOrDescriptor !== undefined ? ` (${this.pathOrDescriptor})` : ""
37
+ }${this.description ? `: ${this.description}` : ""}`
38
+ }
39
+ }
40
+
41
+ export const cwd: Effect.Effect<string> = Effect.sync(() => process.cwd())
66
42
 
67
- export const which = (name: string): Effect.Effect<string, PlatformError.SystemError> =>
43
+ export const which = (name: string): Effect.Effect<string, SystemError> =>
68
44
  Effect.flatMap(
69
45
  Effect.try({
70
46
  try: () => Bun.which(name),
71
47
  catch: (err) =>
72
- new PlatformError.SystemError({
48
+ new SystemError({
73
49
  reason: "Unknown",
74
50
  module: "System",
75
51
  method: "which",
@@ -80,7 +56,7 @@ export const which = (name: string): Effect.Effect<string, PlatformError.SystemE
80
56
  (path) =>
81
57
  path === null
82
58
  ? Effect.fail(
83
- new PlatformError.SystemError({
59
+ new SystemError({
84
60
  reason: "NotFound",
85
61
  module: "System",
86
62
  method: "which",
@@ -95,6 +71,6 @@ export const spawn = (
95
71
  options?: ChildProcess.Command.Options,
96
72
  ): Effect.Effect<
97
73
  ChildProcess.ChildProcessHandle,
98
- PlatformError.PlatformError,
74
+ SystemError,
99
75
  ChildProcess.ChildProcessSpawner | Scope.Scope
100
76
  > => ChildProcess.spawn(ChildProcess.make(cmd, options))
@@ -13,16 +13,14 @@ import type * as Sink from "effect/Sink"
13
13
  import type * as Stream from "effect/Stream"
14
14
  import * as Utils from "effect/Utils"
15
15
 
16
- import type * as PlatformError from "./PlatformError.ts"
16
+ import type * as System from "./System.ts"
17
17
 
18
- const TypeId: unique symbol = Symbol.for("effect-start/ChildProcess/Command")
19
-
20
- type TypeId = typeof TypeId
18
+ const TypeId = "~effect-start/ChildProcess/Command" as const
21
19
 
22
20
  type Stdio = "pipe" | "inherit" | "ignore"
23
21
 
24
22
  export interface Command extends Pipeable.Pipeable {
25
- readonly [TypeId]: TypeId
23
+ readonly [TypeId]: typeof TypeId
26
24
  readonly cmd: readonly [string, ...Array<string>]
27
25
  readonly cwd?: string
28
26
  readonly env?: Record<string, string>
@@ -31,11 +29,7 @@ export interface Command extends Pipeable.Pipeable {
31
29
  readonly stderr?: Stdio
32
30
  readonly detached?: boolean
33
31
  [Symbol.iterator](): Effect.EffectGenerator<
34
- Effect.Effect<
35
- ChildProcessHandle,
36
- PlatformError.PlatformError,
37
- ChildProcessSpawner | Scope.Scope
38
- >
32
+ Effect.Effect<ChildProcessHandle, System.SystemError, ChildProcessSpawner | Scope.Scope>
39
33
  >
40
34
  }
41
35
 
@@ -116,12 +110,12 @@ export interface KillOptions {
116
110
 
117
111
  export interface ChildProcessHandle {
118
112
  readonly pid: number
119
- readonly exitCode: Effect.Effect<number, PlatformError.PlatformError>
120
- readonly isRunning: Effect.Effect<boolean, PlatformError.PlatformError>
121
- readonly kill: (options?: KillOptions) => Effect.Effect<void, PlatformError.PlatformError>
122
- readonly stdin: Sink.Sink<void, Uint8Array, never, PlatformError.PlatformError>
123
- readonly stdout: Stream.Stream<Uint8Array, PlatformError.PlatformError>
124
- readonly stderr: Stream.Stream<Uint8Array, PlatformError.PlatformError>
113
+ readonly exitCode: Effect.Effect<number, System.SystemError>
114
+ readonly isRunning: Effect.Effect<boolean, System.SystemError>
115
+ readonly kill: (options?: KillOptions) => Effect.Effect<void, System.SystemError>
116
+ readonly stdin: Sink.Sink<void, Uint8Array, never, System.SystemError>
117
+ readonly stdout: Stream.Stream<Uint8Array, System.SystemError>
118
+ readonly stderr: Stream.Stream<Uint8Array, System.SystemError>
125
119
  }
126
120
 
127
121
  export class ChildProcessSpawner extends Context.Tag("effect-start/ChildProcessSpawner")<
@@ -129,14 +123,11 @@ export class ChildProcessSpawner extends Context.Tag("effect-start/ChildProcessS
129
123
  {
130
124
  readonly spawn: (
131
125
  command: Command,
132
- ) => Effect.Effect<ChildProcessHandle, PlatformError.PlatformError, Scope.Scope>
126
+ ) => Effect.Effect<ChildProcessHandle, System.SystemError, Scope.Scope>
133
127
  }
134
128
  >() {}
135
129
 
136
130
  export const spawn = (
137
131
  command: Command,
138
- ): Effect.Effect<
139
- ChildProcessHandle,
140
- PlatformError.PlatformError,
141
- ChildProcessSpawner | Scope.Scope
142
- > => Effect.flatMap(ChildProcessSpawner, (spawner) => spawner.spawn(command))
132
+ ): Effect.Effect<ChildProcessHandle, System.SystemError, ChildProcessSpawner | Scope.Scope> =>
133
+ Effect.flatMap(ChildProcessSpawner, (spawner) => spawner.spawn(command))
@@ -7,7 +7,7 @@ import * as Layer from "effect/Layer"
7
7
  import * as Option from "effect/Option"
8
8
  import * as PubSub from "effect/PubSub"
9
9
  import * as Stream from "effect/Stream"
10
- import type * as PlatformError from "./PlatformError.ts"
10
+ import type * as System from "./System.ts"
11
11
 
12
12
  export type DevelopmentEvent =
13
13
  | FileSystem.WatchEvent
@@ -37,19 +37,15 @@ export class Development extends Context.Tag("effect-start/Development")<
37
37
 
38
38
  const SOURCE_FILENAME = /\.(tsx?|jsx?|html?|css|json)$/
39
39
 
40
- export const filterSourceFiles = (event: FileSystem.WatchEvent): boolean => {
40
+ const filterSourceFiles = (event: FileSystem.WatchEvent): boolean => {
41
41
  return SOURCE_FILENAME.test(event.path)
42
42
  }
43
43
 
44
- export const filterDirectory = (event: FileSystem.WatchEvent): boolean => {
45
- return event.path.endsWith("/")
46
- }
47
-
48
- export const watchSource = (opts?: {
44
+ const watchSource = (opts?: {
49
45
  path?: string
50
46
  recursive?: boolean
51
47
  filter?: (event: FileSystem.WatchEvent) => boolean
52
- }): Stream.Stream<FileSystem.WatchEvent, PlatformError.PlatformError, FileSystem.FileSystem> => {
48
+ }): Stream.Stream<FileSystem.WatchEvent, System.SystemError, FileSystem.FileSystem> => {
53
49
  const baseDir = opts?.path ?? process.cwd()
54
50
  const customFilter = opts?.filter
55
51
 
@@ -70,7 +66,7 @@ export const watchSource = (opts?: {
70
66
  )
71
67
  }
72
68
 
73
- export const watch = (opts?: {
69
+ const watch = (opts?: {
74
70
  path?: string
75
71
  recursive?: boolean
76
72
  filter?: (event: FileSystem.WatchEvent) => boolean
@@ -98,7 +94,7 @@ export const watch = (opts?: {
98
94
  return { events: devState.pubsub! } satisfies DevelopmentService
99
95
  })
100
96
 
101
- export const layerWatch = (opts?: {
97
+ export const layer = (opts?: {
102
98
  path?: string
103
99
  recursive?: boolean
104
100
  filter?: (event: FileSystem.WatchEvent) => boolean
@@ -106,15 +102,14 @@ export const layerWatch = (opts?: {
106
102
 
107
103
  export const option = Effect.serviceOption(Development)
108
104
 
109
- export const stream = (): Stream.Stream<DevelopmentEvent> =>
110
- Stream.unwrap(
111
- Function.pipe(
112
- option,
113
- Effect.map(
114
- Option.match({
115
- onNone: () => Stream.empty,
116
- onSome: (dev) => Stream.fromPubSub(dev.events),
117
- }),
118
- ),
105
+ export const events: Stream.Stream<DevelopmentEvent> = Stream.unwrap(
106
+ Function.pipe(
107
+ option,
108
+ Effect.map(
109
+ Option.match({
110
+ onNone: () => Stream.empty,
111
+ onSome: (dev) => Stream.fromPubSub(dev.events),
112
+ }),
119
113
  ),
120
- )
114
+ ),
115
+ )
@@ -5,7 +5,7 @@ import * as Layer from "effect/Layer"
5
5
  import * as Ref from "effect/Ref"
6
6
  import * as Stream from "effect/Stream"
7
7
 
8
- import type * as ChildProcess from "./ChildProcess.ts"
8
+ import type * as ChildProcess from "./_ChildProcess.ts"
9
9
  import * as System from "./System.ts"
10
10
 
11
11
  export class DockerError extends Data.TaggedError("DockerError")<{
@@ -1,5 +1,3 @@
1
- import * as Values from "./Values.ts"
2
-
3
1
  export type Method = "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD" | "OPTIONS"
4
2
 
5
3
  type Respondable = Response | Promise<Response>
@@ -8,32 +6,6 @@ export type WebHandler = (request: Request) => Respondable
8
6
 
9
7
  export type WebMiddleware = (request: Request, next: WebHandler) => Respondable
10
8
 
11
- export function fetch(
12
- handler: WebHandler,
13
- init: Omit<RequestInit, "body"> &
14
- ({ url: string } | { path: `/${string}` }) & {
15
- body?: RequestInit["body"] | Record<string, unknown>
16
- },
17
- ): Promise<Response> {
18
- const url = "path" in init ? `http://localhost${init.path}` : init.url
19
-
20
- const isPlain = Values.isPlainObject(init.body)
21
-
22
- const headers = new Headers(init.headers)
23
- if (isPlain && !headers.has("Content-Type")) {
24
- headers.set("Content-Type", "application/json")
25
- }
26
-
27
- const body = isPlain ? JSON.stringify(init.body) : init.body
28
-
29
- const request = new Request(url, {
30
- ...init,
31
- headers,
32
- body: body as BodyInit,
33
- })
34
- return Promise.resolve(handler(request))
35
- }
36
-
37
9
  export function createAbortableRequest(
38
10
  init: Omit<RequestInit, "signal"> & ({ url: string } | { path: `/${string}` }),
39
11
  ): { request: Request; abort: () => void } {