effect-start 0.26.0 → 0.28.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 (654) hide show
  1. package/dist/ChildProcess.d.ts +60 -0
  2. package/dist/ChildProcess.d.ts.map +1 -0
  3. package/dist/ChildProcess.js +30 -0
  4. package/dist/ChildProcess.js.map +1 -0
  5. package/dist/Commander.d.ts +101 -0
  6. package/dist/Commander.d.ts.map +1 -0
  7. package/dist/Commander.js +327 -0
  8. package/dist/Commander.js.map +1 -0
  9. package/dist/ContentNegotiation.d.ts +13 -0
  10. package/dist/ContentNegotiation.d.ts.map +1 -0
  11. package/dist/ContentNegotiation.js +360 -0
  12. package/dist/ContentNegotiation.js.map +1 -0
  13. package/dist/Cookies.d.ts +78 -0
  14. package/dist/Cookies.d.ts.map +1 -0
  15. package/dist/Cookies.js +303 -0
  16. package/dist/Cookies.js.map +1 -0
  17. package/dist/Development.d.ts +42 -0
  18. package/dist/Development.d.ts.map +1 -0
  19. package/dist/Development.js +60 -0
  20. package/dist/Development.js.map +1 -0
  21. package/dist/Docker.d.ts +51 -0
  22. package/dist/Docker.d.ts.map +1 -0
  23. package/dist/Docker.js +88 -0
  24. package/dist/Docker.js.map +1 -0
  25. package/dist/Effectify.d.ts +210 -0
  26. package/dist/Effectify.d.ts.map +1 -0
  27. package/dist/Effectify.js +20 -0
  28. package/dist/Effectify.js.map +1 -0
  29. package/dist/Entity.d.ts +48 -0
  30. package/dist/Entity.d.ts.map +1 -0
  31. package/dist/Entity.js +235 -0
  32. package/dist/Entity.js.map +1 -0
  33. package/dist/Fetch.d.ts +50 -0
  34. package/dist/Fetch.d.ts.map +1 -0
  35. package/dist/Fetch.js +136 -0
  36. package/dist/Fetch.js.map +1 -0
  37. package/dist/FilePathPattern.d.ts +30 -0
  38. package/dist/FilePathPattern.d.ts.map +1 -0
  39. package/dist/FilePathPattern.js +87 -0
  40. package/dist/FilePathPattern.js.map +1 -0
  41. package/dist/FileRouter.d.ts +57 -0
  42. package/dist/FileRouter.d.ts.map +1 -0
  43. package/dist/FileRouter.js +149 -0
  44. package/dist/FileRouter.js.map +1 -0
  45. package/dist/FileRouterCodegen.d.ts +19 -0
  46. package/dist/FileRouterCodegen.d.ts.map +1 -0
  47. package/dist/FileRouterCodegen.js +228 -0
  48. package/dist/FileRouterCodegen.js.map +1 -0
  49. package/dist/FileSystem.d.ts +159 -0
  50. package/dist/FileSystem.d.ts.map +1 -0
  51. package/dist/FileSystem.js +71 -0
  52. package/dist/FileSystem.js.map +1 -0
  53. package/dist/GlobalLayer.d.ts +4 -0
  54. package/dist/GlobalLayer.d.ts.map +1 -0
  55. package/dist/GlobalLayer.js +51 -0
  56. package/dist/GlobalLayer.js.map +1 -0
  57. package/dist/Http.d.ts +38 -0
  58. package/dist/Http.d.ts.map +1 -0
  59. package/dist/Http.js +89 -0
  60. package/dist/Http.js.map +1 -0
  61. package/dist/PathPattern.d.ts +135 -0
  62. package/dist/PathPattern.d.ts.map +1 -0
  63. package/dist/PathPattern.js +414 -0
  64. package/dist/PathPattern.js.map +1 -0
  65. package/dist/PlatformError.d.ts +39 -0
  66. package/dist/PlatformError.d.ts.map +1 -0
  67. package/dist/PlatformError.js +26 -0
  68. package/dist/PlatformError.js.map +1 -0
  69. package/dist/PlatformRuntime.d.ts +30 -0
  70. package/dist/PlatformRuntime.d.ts.map +1 -0
  71. package/dist/PlatformRuntime.js +50 -0
  72. package/dist/PlatformRuntime.js.map +1 -0
  73. package/dist/Route.d.ts +98 -0
  74. package/dist/Route.d.ts.map +1 -0
  75. package/dist/Route.js +101 -0
  76. package/dist/Route.js.map +1 -0
  77. package/dist/RouteBody.d.ts +48 -0
  78. package/dist/RouteBody.d.ts.map +1 -0
  79. package/dist/RouteBody.js +68 -0
  80. package/dist/RouteBody.js.map +1 -0
  81. package/dist/RouteError.d.ts +99 -0
  82. package/dist/RouteError.d.ts.map +1 -0
  83. package/dist/RouteError.js +56 -0
  84. package/dist/RouteError.js.map +1 -0
  85. package/dist/RouteHook.d.ts +13 -0
  86. package/dist/RouteHook.d.ts.map +1 -0
  87. package/dist/RouteHook.js +40 -0
  88. package/dist/RouteHook.js.map +1 -0
  89. package/dist/RouteHttp.d.ts +22 -0
  90. package/dist/RouteHttp.d.ts.map +1 -0
  91. package/dist/RouteHttp.js +259 -0
  92. package/dist/RouteHttp.js.map +1 -0
  93. package/dist/RouteHttpTracer.d.ts +11 -0
  94. package/dist/RouteHttpTracer.d.ts.map +1 -0
  95. package/dist/RouteHttpTracer.js +63 -0
  96. package/dist/RouteHttpTracer.js.map +1 -0
  97. package/dist/RouteMount.d.ts +87 -0
  98. package/dist/RouteMount.d.ts.map +1 -0
  99. package/dist/RouteMount.js +64 -0
  100. package/dist/RouteMount.js.map +1 -0
  101. package/dist/RouteSchema.d.ts +87 -0
  102. package/dist/RouteSchema.d.ts.map +1 -0
  103. package/dist/RouteSchema.js +189 -0
  104. package/dist/RouteSchema.js.map +1 -0
  105. package/dist/RouteSse.d.ts +22 -0
  106. package/dist/RouteSse.d.ts.map +1 -0
  107. package/dist/RouteSse.js +80 -0
  108. package/dist/RouteSse.js.map +1 -0
  109. package/dist/RouteTree.d.ts +58 -0
  110. package/dist/RouteTree.d.ts.map +1 -0
  111. package/dist/RouteTree.js +94 -0
  112. package/dist/RouteTree.js.map +1 -0
  113. package/dist/RouteTrie.d.ts +21 -0
  114. package/dist/RouteTrie.d.ts.map +1 -0
  115. package/dist/RouteTrie.js +153 -0
  116. package/dist/RouteTrie.js.map +1 -0
  117. package/dist/SchemaExtra.d.ts +8 -0
  118. package/dist/SchemaExtra.d.ts.map +1 -0
  119. package/dist/SchemaExtra.js +75 -0
  120. package/dist/SchemaExtra.js.map +1 -0
  121. package/dist/Socket.d.ts +28 -0
  122. package/dist/Socket.d.ts.map +1 -0
  123. package/dist/Socket.js +30 -0
  124. package/dist/Socket.js.map +1 -0
  125. package/dist/SqlIntrospect.d.ts +92 -0
  126. package/dist/SqlIntrospect.d.ts.map +1 -0
  127. package/dist/SqlIntrospect.js +478 -0
  128. package/dist/SqlIntrospect.js.map +1 -0
  129. package/dist/Start.d.ts +90 -0
  130. package/dist/Start.d.ts.map +1 -0
  131. package/dist/Start.js +91 -0
  132. package/dist/Start.js.map +1 -0
  133. package/dist/StartApp.d.ts +13 -0
  134. package/dist/StartApp.d.ts.map +1 -0
  135. package/dist/StartApp.js +4 -0
  136. package/dist/StartApp.js.map +1 -0
  137. package/dist/StreamExtra.d.ts +29 -0
  138. package/dist/StreamExtra.d.ts.map +1 -0
  139. package/dist/StreamExtra.js +101 -0
  140. package/dist/StreamExtra.js.map +1 -0
  141. package/dist/System.d.ts +9 -0
  142. package/dist/System.d.ts.map +1 -0
  143. package/dist/System.js +61 -0
  144. package/dist/System.js.map +1 -0
  145. package/dist/TuplePathPattern.d.ts +10 -0
  146. package/dist/TuplePathPattern.d.ts.map +1 -0
  147. package/dist/TuplePathPattern.js +69 -0
  148. package/dist/TuplePathPattern.js.map +1 -0
  149. package/dist/Unique.d.ts +68 -0
  150. package/dist/Unique.d.ts.map +1 -0
  151. package/dist/Unique.js +225 -0
  152. package/dist/Unique.js.map +1 -0
  153. package/dist/Values.d.ts +30 -0
  154. package/dist/Values.d.ts.map +1 -0
  155. package/dist/Values.js +46 -0
  156. package/dist/Values.js.map +1 -0
  157. package/dist/bun/BunBundle.d.ts +12 -0
  158. package/dist/bun/BunBundle.d.ts.map +1 -0
  159. package/dist/bun/BunBundle.js +138 -0
  160. package/dist/bun/BunBundle.js.map +1 -0
  161. package/dist/bun/BunChildProcessSpawner.d.ts +4 -0
  162. package/dist/bun/BunChildProcessSpawner.d.ts.map +1 -0
  163. package/dist/bun/BunChildProcessSpawner.js +99 -0
  164. package/dist/bun/BunChildProcessSpawner.js.map +1 -0
  165. package/dist/bun/BunImportTrackerPlugin.d.ts +14 -0
  166. package/dist/bun/BunImportTrackerPlugin.d.ts.map +1 -0
  167. package/dist/bun/BunImportTrackerPlugin.js +70 -0
  168. package/dist/bun/BunImportTrackerPlugin.js.map +1 -0
  169. package/dist/bun/BunRoute.d.ts +49 -0
  170. package/dist/bun/BunRoute.d.ts.map +1 -0
  171. package/dist/bun/BunRoute.js +122 -0
  172. package/dist/bun/BunRoute.js.map +1 -0
  173. package/dist/bun/BunRuntime.d.ts +3 -0
  174. package/dist/bun/BunRuntime.d.ts.map +1 -0
  175. package/dist/bun/BunRuntime.js +30 -0
  176. package/dist/bun/BunRuntime.js.map +1 -0
  177. package/dist/bun/BunServer.d.ts +52 -0
  178. package/dist/bun/BunServer.d.ts.map +1 -0
  179. package/dist/bun/BunServer.js +262 -0
  180. package/dist/bun/BunServer.js.map +1 -0
  181. package/dist/bun/BunVirtualFilesPlugin.d.ts +5 -0
  182. package/dist/bun/BunVirtualFilesPlugin.d.ts.map +1 -0
  183. package/dist/bun/BunVirtualFilesPlugin.js +41 -0
  184. package/dist/bun/BunVirtualFilesPlugin.js.map +1 -0
  185. package/dist/bun/_BunEnhancedResolve.d.ts +46 -0
  186. package/dist/bun/_BunEnhancedResolve.d.ts.map +1 -0
  187. package/dist/bun/_BunEnhancedResolve.js +103 -0
  188. package/dist/bun/_BunEnhancedResolve.js.map +1 -0
  189. package/dist/bun/index.d.ts +6 -0
  190. package/dist/bun/index.d.ts.map +1 -0
  191. package/dist/bun/index.js +6 -0
  192. package/dist/bun/index.js.map +1 -0
  193. package/dist/bundler/Bundle.d.ts +62 -0
  194. package/dist/bundler/Bundle.d.ts.map +1 -0
  195. package/dist/bundler/Bundle.js +49 -0
  196. package/dist/bundler/Bundle.js.map +1 -0
  197. package/dist/bundler/BundleFiles.d.ts +14 -0
  198. package/dist/bundler/BundleFiles.d.ts.map +1 -0
  199. package/dist/bundler/BundleFiles.js +97 -0
  200. package/dist/bundler/BundleFiles.js.map +1 -0
  201. package/dist/bundler/BundleRoute.d.ts +27 -0
  202. package/dist/bundler/BundleRoute.d.ts.map +1 -0
  203. package/dist/bundler/BundleRoute.js +52 -0
  204. package/dist/bundler/BundleRoute.js.map +1 -0
  205. package/dist/client/Overlay.d.ts +3 -0
  206. package/dist/client/Overlay.d.ts.map +1 -0
  207. package/dist/client/Overlay.js +33 -0
  208. package/dist/client/Overlay.js.map +1 -0
  209. package/dist/client/ScrollState.d.ts +7 -0
  210. package/dist/client/ScrollState.d.ts.map +1 -0
  211. package/dist/client/ScrollState.js +95 -0
  212. package/dist/client/ScrollState.js.map +1 -0
  213. package/dist/client/index.d.ts +7 -0
  214. package/dist/client/index.d.ts.map +1 -0
  215. package/dist/client/index.js +80 -0
  216. package/dist/client/index.js.map +1 -0
  217. package/dist/datastar/actions/fetch.d.ts +31 -0
  218. package/dist/datastar/actions/fetch.d.ts.map +1 -0
  219. package/dist/datastar/actions/fetch.js +404 -0
  220. package/dist/datastar/actions/fetch.js.map +1 -0
  221. package/dist/datastar/actions/peek.d.ts +2 -0
  222. package/dist/datastar/actions/peek.d.ts.map +1 -0
  223. package/dist/datastar/actions/peek.js +14 -0
  224. package/dist/datastar/actions/peek.js.map +1 -0
  225. package/dist/datastar/actions/setAll.d.ts +2 -0
  226. package/dist/datastar/actions/setAll.d.ts.map +1 -0
  227. package/dist/datastar/actions/setAll.js +13 -0
  228. package/dist/datastar/actions/setAll.js.map +1 -0
  229. package/dist/datastar/actions/toggleAll.d.ts +2 -0
  230. package/dist/datastar/actions/toggleAll.d.ts.map +1 -0
  231. package/dist/datastar/actions/toggleAll.js +13 -0
  232. package/dist/datastar/actions/toggleAll.js.map +1 -0
  233. package/dist/datastar/attributes/attr.d.ts +2 -0
  234. package/dist/datastar/attributes/attr.d.ts.map +1 -0
  235. package/dist/datastar/attributes/attr.js +49 -0
  236. package/dist/datastar/attributes/attr.js.map +1 -0
  237. package/dist/datastar/attributes/bind.d.ts +2 -0
  238. package/dist/datastar/attributes/bind.d.ts.map +1 -0
  239. package/dist/datastar/attributes/bind.js +176 -0
  240. package/dist/datastar/attributes/bind.js.map +1 -0
  241. package/dist/datastar/attributes/class.d.ts +2 -0
  242. package/dist/datastar/attributes/class.d.ts.map +1 -0
  243. package/dist/datastar/attributes/class.js +48 -0
  244. package/dist/datastar/attributes/class.js.map +1 -0
  245. package/dist/datastar/attributes/computed.d.ts +2 -0
  246. package/dist/datastar/attributes/computed.d.ts.map +1 -0
  247. package/dist/datastar/attributes/computed.js +27 -0
  248. package/dist/datastar/attributes/computed.js.map +1 -0
  249. package/dist/datastar/attributes/effect.d.ts +2 -0
  250. package/dist/datastar/attributes/effect.d.ts.map +1 -0
  251. package/dist/datastar/attributes/effect.js +10 -0
  252. package/dist/datastar/attributes/effect.js.map +1 -0
  253. package/dist/datastar/attributes/indicator.d.ts +2 -0
  254. package/dist/datastar/attributes/indicator.d.ts.map +1 -0
  255. package/dist/datastar/attributes/indicator.js +31 -0
  256. package/dist/datastar/attributes/indicator.js.map +1 -0
  257. package/dist/datastar/attributes/init.d.ts +2 -0
  258. package/dist/datastar/attributes/init.d.ts.map +1 -0
  259. package/dist/datastar/attributes/init.js +27 -0
  260. package/dist/datastar/attributes/init.js.map +1 -0
  261. package/dist/datastar/attributes/jsonSignals.d.ts +2 -0
  262. package/dist/datastar/attributes/jsonSignals.d.ts.map +1 -0
  263. package/dist/datastar/attributes/jsonSignals.js +31 -0
  264. package/dist/datastar/attributes/jsonSignals.js.map +1 -0
  265. package/dist/datastar/attributes/on.d.ts +2 -0
  266. package/dist/datastar/attributes/on.d.ts.map +1 -0
  267. package/dist/datastar/attributes/on.js +79 -0
  268. package/dist/datastar/attributes/on.js.map +1 -0
  269. package/dist/datastar/attributes/onIntersect.d.ts +2 -0
  270. package/dist/datastar/attributes/onIntersect.d.ts.map +1 -0
  271. package/dist/datastar/attributes/onIntersect.js +54 -0
  272. package/dist/datastar/attributes/onIntersect.js.map +1 -0
  273. package/dist/datastar/attributes/onInterval.d.ts +2 -0
  274. package/dist/datastar/attributes/onInterval.d.ts.map +1 -0
  275. package/dist/datastar/attributes/onInterval.js +31 -0
  276. package/dist/datastar/attributes/onInterval.js.map +1 -0
  277. package/dist/datastar/attributes/onSignalPatch.d.ts +2 -0
  278. package/dist/datastar/attributes/onSignalPatch.d.ts.map +1 -0
  279. package/dist/datastar/attributes/onSignalPatch.js +43 -0
  280. package/dist/datastar/attributes/onSignalPatch.js.map +1 -0
  281. package/dist/datastar/attributes/ref.d.ts +2 -0
  282. package/dist/datastar/attributes/ref.d.ts.map +1 -0
  283. package/dist/datastar/attributes/ref.js +11 -0
  284. package/dist/datastar/attributes/ref.js.map +1 -0
  285. package/dist/datastar/attributes/show.d.ts +2 -0
  286. package/dist/datastar/attributes/show.d.ts.map +1 -0
  287. package/dist/datastar/attributes/show.js +32 -0
  288. package/dist/datastar/attributes/show.js.map +1 -0
  289. package/dist/datastar/attributes/signals.d.ts +2 -0
  290. package/dist/datastar/attributes/signals.d.ts.map +1 -0
  291. package/dist/datastar/attributes/signals.js +18 -0
  292. package/dist/datastar/attributes/signals.js.map +1 -0
  293. package/dist/datastar/attributes/style.d.ts +2 -0
  294. package/dist/datastar/attributes/style.d.ts.map +1 -0
  295. package/dist/datastar/attributes/style.js +51 -0
  296. package/dist/datastar/attributes/style.js.map +1 -0
  297. package/dist/datastar/attributes/text.d.ts +2 -0
  298. package/dist/datastar/attributes/text.d.ts.map +1 -0
  299. package/dist/datastar/attributes/text.js +27 -0
  300. package/dist/datastar/attributes/text.js.map +1 -0
  301. package/dist/datastar/engine.d.ts +163 -0
  302. package/dist/datastar/engine.d.ts.map +1 -0
  303. package/dist/datastar/engine.js +1000 -0
  304. package/dist/datastar/engine.js.map +1 -0
  305. package/dist/datastar/index.d.ts +25 -0
  306. package/dist/datastar/index.d.ts.map +1 -0
  307. package/dist/datastar/index.js +25 -0
  308. package/dist/datastar/index.js.map +1 -0
  309. package/dist/datastar/utils.d.ts +52 -0
  310. package/dist/datastar/utils.d.ts.map +1 -0
  311. package/dist/datastar/utils.js +203 -0
  312. package/dist/datastar/utils.js.map +1 -0
  313. package/dist/datastar/watchers/patchElements.d.ts +2 -0
  314. package/dist/datastar/watchers/patchElements.d.ts.map +1 -0
  315. package/dist/datastar/watchers/patchElements.js +398 -0
  316. package/dist/datastar/watchers/patchElements.js.map +1 -0
  317. package/dist/datastar/watchers/patchSignals.d.ts +2 -0
  318. package/dist/datastar/watchers/patchSignals.d.ts.map +1 -0
  319. package/dist/datastar/watchers/patchSignals.js +15 -0
  320. package/dist/datastar/watchers/patchSignals.js.map +1 -0
  321. package/dist/experimental/EncryptedCookies.d.ts +49 -0
  322. package/dist/experimental/EncryptedCookies.d.ts.map +1 -0
  323. package/dist/experimental/EncryptedCookies.js +213 -0
  324. package/dist/experimental/EncryptedCookies.js.map +1 -0
  325. package/dist/experimental/index.d.ts +2 -0
  326. package/dist/experimental/index.d.ts.map +1 -0
  327. package/dist/experimental/index.js +2 -0
  328. package/dist/experimental/index.js.map +1 -0
  329. package/dist/hyper/Hyper.d.ts +26 -0
  330. package/dist/hyper/Hyper.d.ts.map +1 -0
  331. package/dist/hyper/Hyper.js +24 -0
  332. package/dist/hyper/Hyper.js.map +1 -0
  333. package/dist/hyper/HyperHtml.d.ts +24 -0
  334. package/dist/hyper/HyperHtml.d.ts.map +1 -0
  335. package/dist/hyper/HyperHtml.js +153 -0
  336. package/dist/hyper/HyperHtml.js.map +1 -0
  337. package/dist/hyper/HyperHtml.test.d.ts +2 -0
  338. package/dist/hyper/HyperHtml.test.d.ts.map +1 -0
  339. package/dist/hyper/HyperHtml.test.js +283 -0
  340. package/dist/hyper/HyperHtml.test.js.map +1 -0
  341. package/dist/hyper/HyperNode.d.ts +15 -0
  342. package/dist/hyper/HyperNode.d.ts.map +1 -0
  343. package/dist/hyper/HyperNode.js +12 -0
  344. package/dist/hyper/HyperNode.js.map +1 -0
  345. package/dist/hyper/HyperRoute.d.ts +9 -0
  346. package/dist/hyper/HyperRoute.d.ts.map +1 -0
  347. package/dist/hyper/HyperRoute.js +33 -0
  348. package/dist/hyper/HyperRoute.js.map +1 -0
  349. package/dist/hyper/HyperRoute.test.d.ts +2 -0
  350. package/dist/hyper/HyperRoute.test.d.ts.map +1 -0
  351. package/dist/hyper/HyperRoute.test.js +86 -0
  352. package/dist/hyper/HyperRoute.test.js.map +1 -0
  353. package/dist/hyper/html.d.ts +11 -0
  354. package/dist/hyper/html.d.ts.map +1 -0
  355. package/dist/hyper/html.js +31 -0
  356. package/dist/hyper/html.js.map +1 -0
  357. package/dist/hyper/index.d.ts +7 -0
  358. package/dist/hyper/index.d.ts.map +1 -0
  359. package/dist/hyper/index.js +6 -0
  360. package/dist/hyper/index.js.map +1 -0
  361. package/dist/hyper/jsx-runtime.d.ts +8 -0
  362. package/dist/hyper/jsx-runtime.d.ts.map +1 -0
  363. package/dist/hyper/jsx-runtime.js +9 -0
  364. package/dist/hyper/jsx-runtime.js.map +1 -0
  365. package/dist/index.d.ts +9 -0
  366. package/dist/index.d.ts.map +1 -0
  367. package/dist/index.js +9 -0
  368. package/dist/index.js.map +1 -0
  369. package/dist/lint/plugin.d.ts +121 -0
  370. package/dist/lint/plugin.d.ts.map +1 -0
  371. package/dist/lint/plugin.js +537 -0
  372. package/dist/lint/plugin.js.map +1 -0
  373. package/dist/node/NodeFileSystem.d.ts +8 -0
  374. package/dist/node/NodeFileSystem.d.ts.map +1 -0
  375. package/dist/node/NodeFileSystem.js +411 -0
  376. package/dist/node/NodeFileSystem.js.map +1 -0
  377. package/dist/node/NodeUtils.d.ts +3 -0
  378. package/dist/node/NodeUtils.d.ts.map +1 -0
  379. package/dist/node/NodeUtils.js +21 -0
  380. package/dist/node/NodeUtils.js.map +1 -0
  381. package/dist/sql/SqlCache.d.ts +18 -0
  382. package/dist/sql/SqlCache.d.ts.map +1 -0
  383. package/dist/sql/SqlCache.js +31 -0
  384. package/dist/sql/SqlCache.js.map +1 -0
  385. package/dist/sql/SqlClient.d.ts +88 -0
  386. package/dist/sql/SqlClient.d.ts.map +1 -0
  387. package/dist/sql/SqlClient.js +171 -0
  388. package/dist/sql/SqlClient.js.map +1 -0
  389. package/dist/sql/bun/index.d.ts +6 -0
  390. package/dist/sql/bun/index.d.ts.map +1 -0
  391. package/dist/sql/bun/index.js +132 -0
  392. package/dist/sql/bun/index.js.map +1 -0
  393. package/dist/sql/index.d.ts +3 -0
  394. package/dist/sql/index.d.ts.map +1 -0
  395. package/dist/sql/index.js +3 -0
  396. package/dist/sql/index.js.map +1 -0
  397. package/dist/sql/libsql/index.d.ts +15 -0
  398. package/dist/sql/libsql/index.d.ts.map +1 -0
  399. package/dist/sql/libsql/index.js +132 -0
  400. package/dist/sql/libsql/index.js.map +1 -0
  401. package/dist/sql/mssql/index.d.ts +8 -0
  402. package/dist/sql/mssql/index.d.ts.map +1 -0
  403. package/dist/sql/mssql/index.js +145 -0
  404. package/dist/sql/mssql/index.js.map +1 -0
  405. package/dist/sql/postgres/index.d.ts +7 -0
  406. package/dist/sql/postgres/index.d.ts.map +1 -0
  407. package/dist/sql/postgres/index.js +136 -0
  408. package/dist/sql/postgres/index.js.map +1 -0
  409. package/dist/testing/TestLogger.d.ts +14 -0
  410. package/dist/testing/TestLogger.d.ts.map +1 -0
  411. package/dist/testing/TestLogger.js +33 -0
  412. package/dist/testing/TestLogger.js.map +1 -0
  413. package/dist/testing/index.d.ts +3 -0
  414. package/dist/testing/index.d.ts.map +1 -0
  415. package/dist/testing/index.js +3 -0
  416. package/dist/testing/index.js.map +1 -0
  417. package/dist/testing/utils.d.ts +10 -0
  418. package/dist/testing/utils.d.ts.map +1 -0
  419. package/dist/testing/utils.js +40 -0
  420. package/dist/testing/utils.js.map +1 -0
  421. package/dist/tower/Simulation.d.ts +3 -0
  422. package/dist/tower/Simulation.d.ts.map +1 -0
  423. package/dist/tower/Simulation.js +606 -0
  424. package/dist/tower/Simulation.js.map +1 -0
  425. package/dist/tower/Tower.d.ts +11 -0
  426. package/dist/tower/Tower.d.ts.map +1 -0
  427. package/dist/tower/Tower.js +30 -0
  428. package/dist/tower/Tower.js.map +1 -0
  429. package/dist/tower/TowerErrors.d.ts +4 -0
  430. package/dist/tower/TowerErrors.d.ts.map +1 -0
  431. package/dist/tower/TowerErrors.js +200 -0
  432. package/dist/tower/TowerErrors.js.map +1 -0
  433. package/dist/tower/TowerLogger.d.ts +2 -0
  434. package/dist/tower/TowerLogger.d.ts.map +1 -0
  435. package/dist/tower/TowerLogger.js +46 -0
  436. package/dist/tower/TowerLogger.js.map +1 -0
  437. package/dist/tower/TowerMetrics.d.ts +4 -0
  438. package/dist/tower/TowerMetrics.d.ts.map +1 -0
  439. package/dist/tower/TowerMetrics.js +62 -0
  440. package/dist/tower/TowerMetrics.js.map +1 -0
  441. package/dist/tower/TowerProcess.d.ts +4 -0
  442. package/dist/tower/TowerProcess.d.ts.map +1 -0
  443. package/dist/tower/TowerProcess.js +50 -0
  444. package/dist/tower/TowerProcess.js.map +1 -0
  445. package/dist/tower/TowerStore.d.ts +199 -0
  446. package/dist/tower/TowerStore.d.ts.map +1 -0
  447. package/dist/tower/TowerStore.js +307 -0
  448. package/dist/tower/TowerStore.js.map +1 -0
  449. package/dist/tower/TowerTracer.d.ts +4 -0
  450. package/dist/tower/TowerTracer.d.ts.map +1 -0
  451. package/dist/tower/TowerTracer.js +111 -0
  452. package/dist/tower/TowerTracer.js.map +1 -0
  453. package/dist/tower/index.d.ts +4 -0
  454. package/dist/tower/index.d.ts.map +1 -0
  455. package/dist/tower/index.js +4 -0
  456. package/dist/tower/index.js.map +1 -0
  457. package/dist/tower/routes/errors/route.d.ts +11 -0
  458. package/dist/tower/routes/errors/route.d.ts.map +1 -0
  459. package/dist/tower/routes/errors/route.js +47 -0
  460. package/dist/tower/routes/errors/route.js.map +1 -0
  461. package/dist/tower/routes/fiberDetail.d.ts +17 -0
  462. package/dist/tower/routes/fiberDetail.d.ts.map +1 -0
  463. package/dist/tower/routes/fiberDetail.js +35 -0
  464. package/dist/tower/routes/fiberDetail.js.map +1 -0
  465. package/dist/tower/routes/fibers/route.d.ts +11 -0
  466. package/dist/tower/routes/fibers/route.d.ts.map +1 -0
  467. package/dist/tower/routes/fibers/route.js +27 -0
  468. package/dist/tower/routes/fibers/route.js.map +1 -0
  469. package/dist/tower/routes/layout.d.ts +10 -0
  470. package/dist/tower/routes/layout.d.ts.map +1 -0
  471. package/dist/tower/routes/layout.js +4 -0
  472. package/dist/tower/routes/layout.js.map +1 -0
  473. package/dist/tower/routes/logs/route.d.ts +11 -0
  474. package/dist/tower/routes/logs/route.d.ts.map +1 -0
  475. package/dist/tower/routes/logs/route.js +36 -0
  476. package/dist/tower/routes/logs/route.js.map +1 -0
  477. package/dist/tower/routes/metrics/route.d.ts +11 -0
  478. package/dist/tower/routes/metrics/route.d.ts.map +1 -0
  479. package/dist/tower/routes/metrics/route.js +20 -0
  480. package/dist/tower/routes/metrics/route.js.map +1 -0
  481. package/dist/tower/routes/route.d.ts +7 -0
  482. package/dist/tower/routes/route.d.ts.map +1 -0
  483. package/dist/tower/routes/route.js +6 -0
  484. package/dist/tower/routes/route.js.map +1 -0
  485. package/dist/tower/routes/routes/route.d.ts +7 -0
  486. package/dist/tower/routes/routes/route.d.ts.map +1 -0
  487. package/dist/tower/routes/routes/route.js +23 -0
  488. package/dist/tower/routes/routes/route.js.map +1 -0
  489. package/dist/tower/routes/services/route.d.ts +7 -0
  490. package/dist/tower/routes/services/route.d.ts.map +1 -0
  491. package/dist/tower/routes/services/route.js +15 -0
  492. package/dist/tower/routes/services/route.js.map +1 -0
  493. package/dist/tower/routes/system/route.d.ts +11 -0
  494. package/dist/tower/routes/system/route.d.ts.map +1 -0
  495. package/dist/tower/routes/system/route.js +21 -0
  496. package/dist/tower/routes/system/route.js.map +1 -0
  497. package/dist/tower/routes/traceDetail.d.ts +17 -0
  498. package/dist/tower/routes/traceDetail.d.ts.map +1 -0
  499. package/dist/tower/routes/traceDetail.js +20 -0
  500. package/dist/tower/routes/traceDetail.js.map +1 -0
  501. package/dist/tower/routes/traces/route.d.ts +11 -0
  502. package/dist/tower/routes/traces/route.d.ts.map +1 -0
  503. package/dist/tower/routes/traces/route.js +36 -0
  504. package/dist/tower/routes/traces/route.js.map +1 -0
  505. package/dist/tower/routes/tree.d.ts +142 -0
  506. package/dist/tower/routes/tree.d.ts.map +1 -0
  507. package/dist/tower/routes/tree.js +28 -0
  508. package/dist/tower/routes/tree.js.map +1 -0
  509. package/dist/tower/ui/Errors.d.ts +5 -0
  510. package/dist/tower/ui/Errors.d.ts.map +1 -0
  511. package/dist/tower/ui/Errors.js +30 -0
  512. package/dist/tower/ui/Errors.js.map +1 -0
  513. package/dist/tower/ui/Fibers.d.ts +25 -0
  514. package/dist/tower/ui/Fibers.d.ts.map +1 -0
  515. package/dist/tower/ui/Fibers.js +157 -0
  516. package/dist/tower/ui/Fibers.js.map +1 -0
  517. package/dist/tower/ui/Logs.d.ts +5 -0
  518. package/dist/tower/ui/Logs.d.ts.map +1 -0
  519. package/dist/tower/ui/Logs.js +28 -0
  520. package/dist/tower/ui/Logs.js.map +1 -0
  521. package/dist/tower/ui/Metrics.d.ts +5 -0
  522. package/dist/tower/ui/Metrics.d.ts.map +1 -0
  523. package/dist/tower/ui/Metrics.js +34 -0
  524. package/dist/tower/ui/Metrics.js.map +1 -0
  525. package/dist/tower/ui/Routes.d.ts +9 -0
  526. package/dist/tower/ui/Routes.d.ts.map +1 -0
  527. package/dist/tower/ui/Routes.js +79 -0
  528. package/dist/tower/ui/Routes.js.map +1 -0
  529. package/dist/tower/ui/Services.d.ts +11 -0
  530. package/dist/tower/ui/Services.d.ts.map +1 -0
  531. package/dist/tower/ui/Services.js +254 -0
  532. package/dist/tower/ui/Services.js.map +1 -0
  533. package/dist/tower/ui/Shell.d.ts +11 -0
  534. package/dist/tower/ui/Shell.d.ts.map +1 -0
  535. package/dist/tower/ui/Shell.js +12 -0
  536. package/dist/tower/ui/Shell.js.map +1 -0
  537. package/dist/tower/ui/System.d.ts +5 -0
  538. package/dist/tower/ui/System.d.ts.map +1 -0
  539. package/dist/tower/ui/System.js +65 -0
  540. package/dist/tower/ui/System.js.map +1 -0
  541. package/dist/tower/ui/Traces.d.ts +13 -0
  542. package/dist/tower/ui/Traces.d.ts.map +1 -0
  543. package/dist/tower/ui/Traces.js +219 -0
  544. package/dist/tower/ui/Traces.js.map +1 -0
  545. package/dist/x/cloudflare/CloudflareTunnel.d.ts +11 -0
  546. package/dist/x/cloudflare/CloudflareTunnel.d.ts.map +1 -0
  547. package/dist/x/cloudflare/CloudflareTunnel.js +31 -0
  548. package/dist/x/cloudflare/CloudflareTunnel.js.map +1 -0
  549. package/dist/x/cloudflare/index.d.ts +2 -0
  550. package/dist/x/cloudflare/index.d.ts.map +1 -0
  551. package/dist/x/cloudflare/index.js +2 -0
  552. package/dist/x/cloudflare/index.js.map +1 -0
  553. package/dist/x/tailscale/TailscaleTunnel.d.ts +16 -0
  554. package/dist/x/tailscale/TailscaleTunnel.d.ts.map +1 -0
  555. package/dist/x/tailscale/TailscaleTunnel.js +66 -0
  556. package/dist/x/tailscale/TailscaleTunnel.js.map +1 -0
  557. package/dist/x/tailscale/index.d.ts +2 -0
  558. package/dist/x/tailscale/index.d.ts.map +1 -0
  559. package/dist/x/tailscale/index.js +2 -0
  560. package/dist/x/tailscale/index.js.map +1 -0
  561. package/dist/x/tailwind/TailwindPlugin.d.ts +24 -0
  562. package/dist/x/tailwind/TailwindPlugin.d.ts.map +1 -0
  563. package/dist/x/tailwind/TailwindPlugin.js +220 -0
  564. package/dist/x/tailwind/TailwindPlugin.js.map +1 -0
  565. package/dist/x/tailwind/compile.d.ts +20 -0
  566. package/dist/x/tailwind/compile.d.ts.map +1 -0
  567. package/dist/x/tailwind/compile.js +155 -0
  568. package/dist/x/tailwind/compile.js.map +1 -0
  569. package/dist/x/tailwind/plugin.d.ts +3 -0
  570. package/dist/x/tailwind/plugin.d.ts.map +1 -0
  571. package/dist/x/tailwind/plugin.js +16 -0
  572. package/dist/x/tailwind/plugin.js.map +1 -0
  573. package/package.json +104 -21
  574. package/src/ChildProcess.ts +3 -6
  575. package/src/Docker.ts +190 -0
  576. package/src/Effectify.ts +7 -10
  577. package/src/Entity.ts +6 -6
  578. package/src/FileRouterCodegen.ts +4 -4
  579. package/src/FileSystem.ts +4 -11
  580. package/src/GlobalLayer.ts +85 -0
  581. package/src/PlatformRuntime.ts +8 -1
  582. package/src/RouteHook.ts +2 -2
  583. package/src/RouteSse.ts +3 -3
  584. package/src/SqlIntrospect.ts +13 -11
  585. package/src/Start.ts +112 -1
  586. package/src/System.ts +60 -3
  587. package/src/Unique.ts +59 -0
  588. package/src/Values.ts +11 -0
  589. package/src/bun/BunChildProcessSpawner.ts +1 -8
  590. package/src/bun/BunRoute.ts +2 -1
  591. package/src/bun/BunRuntime.ts +6 -12
  592. package/src/bun/BunServer.ts +54 -2
  593. package/src/datastar/watchers/patchElements.ts +0 -1
  594. package/src/hyper/HyperHtml.ts +11 -7
  595. package/src/hyper/jsx.d.ts +1 -1
  596. package/src/lint/plugin.js +239 -4
  597. package/src/sql/SqlCache.ts +50 -0
  598. package/src/sql/SqlClient.ts +400 -0
  599. package/src/sql/bun/index.ts +126 -57
  600. package/src/sql/index.ts +2 -1
  601. package/src/sql/libsql/index.ts +133 -85
  602. package/src/sql/libsql/libsql.d.ts +4 -1
  603. package/src/sql/mssql/index.ts +149 -120
  604. package/src/sql/mssql/mssql.d.ts +1 -0
  605. package/src/sql/postgres/index.ts +254 -0
  606. package/src/testing/TestLogger.ts +4 -4
  607. package/src/{console → tower}/Simulation.ts +10 -48
  608. package/src/tower/Tower.ts +47 -0
  609. package/src/{console/ConsoleErrors.ts → tower/TowerErrors.ts} +34 -23
  610. package/src/tower/TowerLogger.ts +52 -0
  611. package/src/{console/ConsoleMetrics.ts → tower/TowerMetrics.ts} +5 -5
  612. package/src/{console/ConsoleProcess.ts → tower/TowerProcess.ts} +4 -4
  613. package/src/tower/TowerStore.ts +505 -0
  614. package/src/tower/TowerTracer.ts +128 -0
  615. package/src/tower/index.ts +3 -0
  616. package/src/{console → tower}/routes/errors/route.tsx +26 -33
  617. package/src/{console → tower}/routes/fiberDetail.tsx +12 -15
  618. package/src/tower/routes/fibers/route.tsx +46 -0
  619. package/src/{console/console.html → tower/routes/layout.html} +1 -1
  620. package/src/{console → tower}/routes/layout.tsx +1 -1
  621. package/src/{console → tower}/routes/logs/route.tsx +12 -16
  622. package/src/{console → tower}/routes/metrics/route.tsx +5 -5
  623. package/src/tower/routes/route.tsx +8 -0
  624. package/src/{console → tower}/routes/routes/route.tsx +2 -2
  625. package/src/{console → tower}/routes/services/route.tsx +2 -2
  626. package/src/{console → tower}/routes/system/route.tsx +5 -5
  627. package/src/tower/routes/traceDetail.tsx +30 -0
  628. package/src/{console → tower}/routes/traces/route.tsx +25 -34
  629. package/src/{console → tower}/routes/tree.ts +0 -2
  630. package/src/{console → tower}/ui/Errors.tsx +19 -15
  631. package/src/{console → tower}/ui/Fibers.tsx +83 -68
  632. package/src/{console → tower}/ui/Logs.tsx +20 -16
  633. package/src/{console → tower}/ui/Metrics.tsx +18 -18
  634. package/src/{console → tower}/ui/Routes.tsx +14 -14
  635. package/src/{console → tower}/ui/Services.tsx +9 -9
  636. package/src/tower/ui/Shell.tsx +74 -0
  637. package/src/{console → tower}/ui/System.tsx +40 -30
  638. package/src/{console → tower}/ui/Traces.tsx +73 -80
  639. package/src/x/cloudflare/CloudflareTunnel.ts +1 -1
  640. package/src/x/tailscale/TailscaleTunnel.ts +3 -3
  641. package/src/x/tailwind/compile.ts +11 -14
  642. package/src/console/Console.ts +0 -42
  643. package/src/console/ConsoleLogger.ts +0 -56
  644. package/src/console/ConsoleStore.ts +0 -187
  645. package/src/console/ConsoleTracer.ts +0 -107
  646. package/src/console/index.ts +0 -3
  647. package/src/console/routes/fibers/route.tsx +0 -45
  648. package/src/console/routes/git/route.tsx +0 -64
  649. package/src/console/routes/route.tsx +0 -8
  650. package/src/console/routes/traceDetail.tsx +0 -22
  651. package/src/console/ui/Git.tsx +0 -182
  652. package/src/console/ui/Shell.tsx +0 -62
  653. package/src/sql/Sql.ts +0 -51
  654. package/src/sql/mssql/docker.ts +0 -117
package/src/Docker.ts ADDED
@@ -0,0 +1,190 @@
1
+ import * as Context from "effect/Context"
2
+ import * as Data from "effect/Data"
3
+ import * as Effect from "effect/Effect"
4
+ import * as Layer from "effect/Layer"
5
+ import * as Ref from "effect/Ref"
6
+ import * as Stream from "effect/Stream"
7
+
8
+ import type * as ChildProcess from "./ChildProcess.ts"
9
+ import * as System from "./System.ts"
10
+
11
+ export class DockerError extends Data.TaggedError("DockerError")<{
12
+ message: string
13
+ cause?: unknown
14
+ }> {}
15
+
16
+ export interface ExecResult {
17
+ readonly exitCode: number
18
+ readonly stdout: string
19
+ }
20
+
21
+ export interface Container {
22
+ readonly id: string
23
+ readonly name?: string
24
+ readonly ports?: ReadonlyArray<readonly [host: number, container: number]>
25
+ readonly exec: (
26
+ command: ReadonlyArray<string>,
27
+ options?: { readonly detach?: boolean },
28
+ ) => Effect.Effect<ExecResult, DockerError, ChildProcess.ChildProcessSpawner>
29
+ }
30
+
31
+ export interface ContainerOptions {
32
+ readonly image: string
33
+ readonly name?: string
34
+ readonly detach?: boolean
35
+ readonly rm?: boolean
36
+ readonly env?: Record<string, string>
37
+ readonly ports?: ReadonlyArray<readonly [host: number, container: number]>
38
+ readonly args?: ReadonlyArray<string>
39
+ }
40
+
41
+ export interface DockerService {
42
+ readonly exec: (
43
+ container: string,
44
+ command: ReadonlyArray<string>,
45
+ options?: { readonly detach?: boolean },
46
+ ) => Effect.Effect<ExecResult, DockerError, ChildProcess.ChildProcessSpawner>
47
+ readonly run: (
48
+ options: ContainerOptions,
49
+ ) => Effect.Effect<Container, DockerError, ChildProcess.ChildProcessSpawner>
50
+ readonly start: (
51
+ container: string,
52
+ ) => Effect.Effect<void, DockerError, ChildProcess.ChildProcessSpawner>
53
+ readonly containers: Effect.Effect<ReadonlyArray<Container>>
54
+ }
55
+
56
+ export class Docker extends Context.Tag("effect-start/Docker")<Docker, DockerService>() {}
57
+
58
+ export class DockerContainer extends Context.Tag("effect-start/DockerContainer")<
59
+ DockerContainer,
60
+ Container
61
+ >() {}
62
+
63
+ const dockerExec = (...args: ReadonlyArray<string>) =>
64
+ Effect.scoped(
65
+ Effect.gen(function* () {
66
+ const handle = yield* System.spawn(["docker", ...args], {
67
+ stdout: "ignore",
68
+ stderr: "inherit",
69
+ })
70
+ return yield* handle.exitCode
71
+ }),
72
+ )
73
+
74
+ const dockerExecStdout = (...args: ReadonlyArray<string>) =>
75
+ Effect.scoped(
76
+ Effect.gen(function* () {
77
+ const handle = yield* System.spawn(["docker", ...args], {
78
+ stdout: "pipe",
79
+ stderr: "inherit",
80
+ })
81
+ const [stdout, exitCode] = yield* Effect.all(
82
+ [handle.stdout.pipe(Stream.decodeText("utf-8"), Stream.mkString), handle.exitCode],
83
+ { concurrency: 2 },
84
+ )
85
+ return { stdout, exitCode }
86
+ }),
87
+ )
88
+
89
+ const removeContainer = (container: string) => dockerExec("rm", "-f", container).pipe(Effect.ignore)
90
+
91
+ export const layer = Layer.scoped(
92
+ Docker,
93
+ Effect.gen(function* () {
94
+ const tracked = yield* Ref.make<ReadonlyArray<Container>>([])
95
+
96
+ yield* Effect.addFinalizer(() =>
97
+ Ref.get(tracked).pipe(
98
+ Effect.flatMap((containers) =>
99
+ Effect.forEach(containers, (c) => removeContainer(c.id), { discard: true }),
100
+ ),
101
+ ),
102
+ )
103
+
104
+ const track = (container: Container) => Ref.update(tracked, (cs) => [container, ...cs])
105
+
106
+ const execFn = (
107
+ container: string,
108
+ command: ReadonlyArray<string>,
109
+ options?: { readonly detach?: boolean },
110
+ ) =>
111
+ Effect.gen(function* () {
112
+ const args: Array<string> = ["exec"]
113
+ if (options?.detach) args.push("-d")
114
+ args.push(container, ...command)
115
+
116
+ const result = yield* dockerExecStdout(...args).pipe(
117
+ Effect.mapError((cause) => new DockerError({ message: `docker exec failed`, cause })),
118
+ )
119
+
120
+ return { exitCode: result.exitCode, stdout: result.stdout.trim() } satisfies ExecResult
121
+ })
122
+
123
+ return {
124
+ exec: execFn,
125
+
126
+ run: (options) =>
127
+ Effect.gen(function* () {
128
+ const args: Array<string> = ["run"]
129
+
130
+ if (options.detach) args.push("-d")
131
+ if (options.rm) args.push("--rm")
132
+ if (options.name) args.push("--name", options.name)
133
+
134
+ if (options.env) {
135
+ for (const [k, v] of Object.entries(options.env)) {
136
+ args.push("-e", `${k}=${v}`)
137
+ }
138
+ }
139
+
140
+ if (options.ports) {
141
+ for (const [host, container] of options.ports) {
142
+ args.push("-p", `${host}:${container}`)
143
+ }
144
+ }
145
+
146
+ args.push(options.image)
147
+
148
+ if (options.args) args.push(...options.args)
149
+
150
+ const result = yield* dockerExecStdout(...args).pipe(
151
+ Effect.mapError((cause) => new DockerError({ message: `docker run failed`, cause })),
152
+ )
153
+
154
+ const id = result.stdout.trim()
155
+ const container: Container = {
156
+ id,
157
+ name: options.name,
158
+ ports: options.ports,
159
+ exec: (command, execOptions) => execFn(id, command, execOptions),
160
+ }
161
+
162
+ if (!options.rm) {
163
+ yield* track(container)
164
+ }
165
+
166
+ return container
167
+ }),
168
+
169
+ start: (container) =>
170
+ Effect.gen(function* () {
171
+ const code = yield* dockerExec("start", container).pipe(
172
+ Effect.mapError((cause) => new DockerError({ message: `docker start failed`, cause })),
173
+ )
174
+ if (code !== 0) {
175
+ yield* Effect.fail(
176
+ new DockerError({ message: `docker start exited with code ${code}` }),
177
+ )
178
+ }
179
+ }),
180
+
181
+ containers: Ref.get(tracked),
182
+ } satisfies DockerService
183
+ }),
184
+ )
185
+
186
+ export const layerContainer = (options: ContainerOptions) =>
187
+ Layer.effect(
188
+ DockerContainer,
189
+ Effect.flatMap(Docker, (docker) => docker.run(options)),
190
+ )
package/src/Effectify.ts CHANGED
@@ -269,16 +269,13 @@ export const effectify: {
269
269
  (...args: Array<any>) =>
270
270
  Effect.async<any, any>((resume) => {
271
271
  try {
272
- fn(
273
- ...args,
274
- (err: any, result: any) => {
275
- if (err) {
276
- resume(Effect.fail(onError ? onError(err, args) : err))
277
- } else {
278
- resume(Effect.succeed(result))
279
- }
280
- },
281
- )
272
+ fn(...args, (err: any, result: any) => {
273
+ if (err) {
274
+ resume(Effect.fail(onError ? onError(err, args) : err))
275
+ } else {
276
+ resume(Effect.succeed(result))
277
+ }
278
+ })
282
279
  } catch (err) {
283
280
  resume(onSyncError ? Effect.fail(onSyncError(err, args)) : Effect.die(err))
284
281
  }
package/src/Entity.ts CHANGED
@@ -1,6 +1,6 @@
1
+ import * as Effectable from "effect/Effectable"
1
2
  import * as Effect from "effect/Effect"
2
3
  import * as ParseResult from "effect/ParseResult"
3
- import * as Pipeable from "effect/Pipeable"
4
4
  import * as Predicate from "effect/Predicate"
5
5
  import * as Schema from "effect/Schema"
6
6
  import * as Stream from "effect/Stream"
@@ -24,7 +24,7 @@ export type Headers = {
24
24
  [header: string]: string | null | undefined
25
25
  }
26
26
 
27
- export interface Entity<T = unknown, E = never> extends Pipeable.Pipeable {
27
+ export interface Entity<T = unknown, E = never> extends Effect.Effect<Entity<T, E>, E> {
28
28
  readonly [TypeId]: TypeId
29
29
  readonly body: T
30
30
  readonly headers: Headers
@@ -57,7 +57,7 @@ export interface Entity<T = unknown, E = never> extends Pipeable.Pipeable {
57
57
  : Stream.Stream<Uint8Array, ParseResult.ParseError | E>
58
58
  }
59
59
 
60
- export interface Proto extends Pipeable.Pipeable {
60
+ export interface Proto extends Effect.Effect<Entity, never> {
61
61
  readonly [TypeId]: TypeId
62
62
  }
63
63
 
@@ -218,11 +218,11 @@ function getStream(self: Entity<unknown, unknown>): Stream.Stream<unknown, unkno
218
218
  return Stream.fromEffect(getBytes(self))
219
219
  }
220
220
 
221
- const Proto: Proto = Object.defineProperties(Object.create(null), {
221
+ const Proto: Proto = Object.defineProperties(Object.create(Effectable.CommitPrototype), {
222
222
  [TypeId]: { value: TypeId },
223
- pipe: {
223
+ commit: {
224
224
  value: function (this: Entity) {
225
- return Pipeable.pipeArguments(this, arguments)
225
+ return resolve(this)
226
226
  },
227
227
  },
228
228
  text: {
@@ -166,14 +166,14 @@ export function generateCode(fileRoutes: FileRouter.OrderedFileRoutes): string |
166
166
  }
167
167
 
168
168
  const routeEntries = entries
169
- .map(({ path, loaders }) => {
170
- const loadersCode = loaders.join(",\n ")
171
- return ` "${path}": [\n ${loadersCode},\n ]`
169
+ .map((v) => {
170
+ const loadersCode = v.loaders.join(",\n ")
171
+ return ` "${v.path}": [\n ${loadersCode},\n ]`
172
172
  })
173
173
  .join(",\n")
174
174
 
175
175
  return `/**
176
- * Auto-generated by effect-start.
176
+ * Auto-generated by effect-start on startup and changes. Do not edit manually.
177
177
  */
178
178
 
179
179
  export default {
package/src/FileSystem.ts CHANGED
@@ -342,16 +342,9 @@ export const make = (
342
342
  })
343
343
  }
344
344
 
345
- const fileStream = (
346
- file: File,
347
- {
348
- bufferSize = 16,
349
- bytesToRead: bytesToRead_,
350
- chunkSize: chunkSize_ = Size(64 * 1024),
351
- }: StreamOptions = {},
352
- ) => {
353
- const bytesToRead = bytesToRead_ !== undefined ? Size(bytesToRead_) : undefined
354
- const chunkSize = Size(chunkSize_)
345
+ const fileStream = (file: File, options: StreamOptions = {}) => {
346
+ const bytesToRead = options.bytesToRead !== undefined ? Size(options.bytesToRead) : undefined
347
+ const chunkSize = Size(options.chunkSize ?? 64 * 1024)
355
348
 
356
349
  function loop(
357
350
  totalBytesRead: bigint,
@@ -385,6 +378,6 @@ const fileStream = (
385
378
  }
386
379
 
387
380
  return Stream.bufferChunks(Stream.fromChannel(loop(BigInt(0))), {
388
- capacity: bufferSize,
381
+ capacity: options.bufferSize ?? 16,
389
382
  })
390
383
  }
@@ -0,0 +1,85 @@
1
+ import * as Context from "effect/Context"
2
+ import * as Deferred from "effect/Deferred"
3
+ import * as Effect from "effect/Effect"
4
+ import type * as Fiber from "effect/Fiber"
5
+ import * as GlobalValue from "effect/GlobalValue"
6
+ import * as HashMap from "effect/HashMap"
7
+ import * as Layer from "effect/Layer"
8
+ import * as MutableRef from "effect/MutableRef"
9
+ import * as Option from "effect/Option"
10
+ import * as Runtime from "effect/Runtime"
11
+
12
+ import * as ChildProcess from "./ChildProcess.ts"
13
+
14
+ interface CacheEntry {
15
+ readonly context: Context.Context<any>
16
+ readonly fiber: Fiber.RuntimeFiber<void>
17
+ }
18
+
19
+ const cache = GlobalValue.globalValue(Symbol.for("effect-start/GlobalLayer/cache"), () =>
20
+ MutableRef.make(HashMap.empty<string, CacheEntry>()),
21
+ )
22
+
23
+ export const globalLayer =
24
+ (key: string) =>
25
+ <A, E>(
26
+ layer: Layer.Layer<A, E> | Layer.Layer<A, E, ChildProcess.ChildProcessSpawner>,
27
+ ): Layer.Layer<A, E> => {
28
+ const existing = HashMap.get(MutableRef.get(cache), key)
29
+ if (existing._tag === "Some") {
30
+ return Layer.succeedContext(existing.value.context) as Layer.Layer<A, E>
31
+ }
32
+
33
+ return Layer.scopedContext(
34
+ Effect.gen(function* () {
35
+ const cached = HashMap.get(MutableRef.get(cache), key)
36
+ if (cached._tag === "Some") {
37
+ return cached.value.context as Context.Context<A>
38
+ }
39
+
40
+ const spawner = yield* Effect.serviceOption(ChildProcess.ChildProcessSpawner)
41
+ const deferred = yield* Deferred.make<Context.Context<A>, E>()
42
+
43
+ const parentRuntime = yield* Effect.runtime<never>()
44
+
45
+ const defaultRuntime = Runtime.make({
46
+ // Empty service context — no custom services leak into the forked fiber
47
+ context: Context.empty(),
48
+
49
+ // Bit flags for runtime behavior (interruption, cooperative yielding, etc.)
50
+ runtimeFlags: parentRuntime.runtimeFlags,
51
+
52
+ // Per-fiber state like logger config, tracer settings, span annotations.
53
+ // Default services are wired through FiberRefs, not the service context.
54
+ fiberRefs: parentRuntime.fiberRefs,
55
+ })
56
+
57
+ const fiber = Runtime.runFork(defaultRuntime)(
58
+ Effect.scoped(
59
+ Effect.gen(function* () {
60
+ const scope = yield* Effect.scope
61
+ const memoMap = yield* Layer.makeMemoMap
62
+ const ctx = yield* (layer as Layer.Layer<A, E>).pipe(
63
+ Layer.buildWithMemoMap(memoMap, scope),
64
+ Option.isSome(spawner)
65
+ ? Effect.provideService(ChildProcess.ChildProcessSpawner, spawner.value)
66
+ : (a) => a,
67
+ )
68
+ yield* Deferred.succeed(deferred, ctx)
69
+ yield* Effect.never
70
+ }),
71
+ ),
72
+ ) as Fiber.RuntimeFiber<void>
73
+
74
+ const ctx = yield* Deferred.await(deferred)
75
+
76
+ MutableRef.update(cache, HashMap.set(key, { context: ctx, fiber } as CacheEntry))
77
+
78
+ fiber.addObserver(() => {
79
+ MutableRef.update(cache, HashMap.remove(key))
80
+ })
81
+
82
+ return ctx
83
+ }),
84
+ )
85
+ }
@@ -6,8 +6,15 @@ import type * as FiberId from "effect/FiberId"
6
6
  import * as FiberRef from "effect/FiberRef"
7
7
  import * as FiberRefs from "effect/FiberRefs"
8
8
  import * as Function from "effect/Function"
9
+ import * as GlobalValue from "effect/GlobalValue"
9
10
  import * as HashSet from "effect/HashSet"
10
11
  import * as Logger from "effect/Logger"
12
+ import * as MutableRef from "effect/MutableRef"
13
+
14
+ export const mainFiber = GlobalValue.globalValue(
15
+ Symbol.for("effect-start/PlatformRuntime/mainFiber"),
16
+ () => MutableRef.make<Fiber.RuntimeFiber<unknown, unknown> | undefined>(undefined),
17
+ )
11
18
 
12
19
  export interface Teardown {
13
20
  <E, A>(exit: Exit.Exit<E, A>, onExit: (code: number) => void): void
@@ -95,6 +102,6 @@ export function isAgentHarness() {
95
102
  return (
96
103
  typeof process !== "undefined" &&
97
104
  !process.stdout.isTTY &&
98
- (process.env.CLAUDECODE || process.env.CURSOR_AGENT)
105
+ (process.env.CLAUDECODE || process.env.CURSOR_AGENT || process.env.CODEX_THREAD_ID)
99
106
  )
100
107
  }
package/src/RouteHook.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as Effect from "effect/Effect"
2
2
  import type * as Utils from "effect/Utils"
3
- import * as Entity from "./Entity.ts"
3
+ import type * as Entity from "./Entity.ts"
4
4
  import * as Route from "./Route.ts"
5
5
 
6
6
  export type FilterResult<BOut, E, R> = { context: BOut } | Effect.Effect<{ context: BOut }, E, R>
@@ -34,7 +34,7 @@ export function filter<
34
34
 
35
35
  const mergedContext = filterResult ? { ...context, ...filterResult.context } : context
36
36
 
37
- return yield* Entity.resolve(next(mergedContext as Partial<BOut>))
37
+ return yield* next(mergedContext as Partial<BOut>)
38
38
  }),
39
39
  )
40
40
 
package/src/RouteSse.ts CHANGED
@@ -13,7 +13,7 @@ const HEARTBEAT = ": <3\n\n"
13
13
 
14
14
  export interface SseEvent {
15
15
  data?: string | undefined
16
- event?: string
16
+ type?: string
17
17
  retry?: number
18
18
  }
19
19
 
@@ -35,8 +35,8 @@ function formatSseEvent(event: SseEventInput): string {
35
35
 
36
36
  const e = event as SseEvent
37
37
  let result = ""
38
- if (e.event) {
39
- result += `event: ${e.event}\n`
38
+ if (e.type) {
39
+ result += `event: ${e.type}\n`
40
40
  }
41
41
  if (typeof e.data === "string") {
42
42
  for (const line of e.data.split("\n")) {
@@ -1,6 +1,6 @@
1
1
  import * as Effect from "effect/Effect"
2
2
  import * as Schema from "effect/Schema"
3
- import * as Sql from "./sql/Sql.ts"
3
+ import * as SqlClient from "./sql/SqlClient.ts"
4
4
 
5
5
  export interface Column {
6
6
  readonly tableSchema: string
@@ -336,9 +336,9 @@ const normalizeBooleans = (columns: ReadonlyArray<Column>): ReadonlyArray<Column
336
336
  export const introspect = (
337
337
  dialect: Dialect,
338
338
  options?: IntrospectOptions,
339
- ): Effect.Effect<DatabaseSchema, Sql.SqlError, Sql.SqlClient> =>
339
+ ): Effect.Effect<DatabaseSchema, SqlClient.SqlError, SqlClient.SqlClient> =>
340
340
  Effect.gen(function* () {
341
- const sql = yield* Sql.SqlClient
341
+ const sql = yield* SqlClient.SqlClient
342
342
  const q = dialectQueries[dialect]
343
343
  const columns = normalizeBooleans(yield* sql.unsafe<Column>(q.columns))
344
344
  const foreignKeys =
@@ -481,11 +481,13 @@ export interface TableReader {
481
481
  readonly sortableColumns: ReadonlyArray<string>
482
482
  readonly findAll: (
483
483
  options?: FindAllOptions,
484
- ) => Effect.Effect<ReadonlyArray<unknown>, Sql.SqlError, Sql.SqlClient>
485
- readonly findById: (id: unknown) => Effect.Effect<unknown | null, Sql.SqlError, Sql.SqlClient>
484
+ ) => Effect.Effect<ReadonlyArray<unknown>, SqlClient.SqlError, SqlClient.SqlClient>
485
+ readonly findById: (
486
+ id: unknown,
487
+ ) => Effect.Effect<unknown | null, SqlClient.SqlError, SqlClient.SqlClient>
486
488
  readonly count: (options?: {
487
489
  readonly filters?: ReadonlyArray<Filter>
488
- }) => Effect.Effect<number, Sql.SqlError, Sql.SqlClient>
490
+ }) => Effect.Effect<number, SqlClient.SqlError, SqlClient.SqlClient>
489
491
  }
490
492
 
491
493
  export interface DatabaseReader {
@@ -496,9 +498,9 @@ export interface DatabaseReader {
496
498
  const escapeIdentifier = (id: string): string => `"${id.replace(/"/g, '""')}"`
497
499
 
498
500
  const concatSql = (
499
- sql: Sql.SqlQuery,
501
+ sql: SqlClient.Connection,
500
502
  fragments: Array<{ strings: ReadonlyArray<string>; values: Array<unknown> }>,
501
- ): Effect.Effect<ReadonlyArray<unknown>, Sql.SqlError> => {
503
+ ): Effect.Effect<ReadonlyArray<unknown>, SqlClient.SqlError> => {
502
504
  const strings: Array<string> = []
503
505
  const values: Array<unknown> = []
504
506
  for (let i = 0; i < fragments.length; i++) {
@@ -559,7 +561,7 @@ const makeTableReader = (ts: TableSchema): TableReader => {
559
561
  sortableColumns: Array.from(sortableSet),
560
562
  findAll: (options) =>
561
563
  Effect.gen(function* () {
562
- const sql = yield* Sql.SqlClient
564
+ const sql = yield* SqlClient.SqlClient
563
565
  const fragments: Array<{ strings: ReadonlyArray<string>; values: Array<unknown> }> = [
564
566
  literal(`SELECT ${selectCols} FROM ${qualifiedName}`),
565
567
  ]
@@ -581,7 +583,7 @@ const makeTableReader = (ts: TableSchema): TableReader => {
581
583
  findById: (id) =>
582
584
  Effect.gen(function* () {
583
585
  if (!primaryKey) return null
584
- const sql = yield* Sql.SqlClient
586
+ const sql = yield* SqlClient.SqlClient
585
587
  const pkCol = escapeIdentifier(primaryKey.columnName)
586
588
  const rows = yield* concatSql(sql, [
587
589
  literal(`SELECT ${selectCols} FROM ${qualifiedName} WHERE ${pkCol} = `),
@@ -591,7 +593,7 @@ const makeTableReader = (ts: TableSchema): TableReader => {
591
593
  }),
592
594
  count: (options) =>
593
595
  Effect.gen(function* () {
594
- const sql = yield* Sql.SqlClient
596
+ const sql = yield* SqlClient.SqlClient
595
597
  const fragments: Array<{ strings: ReadonlyArray<string>; values: Array<unknown> }> = [
596
598
  literal(`SELECT COUNT(*) as count FROM ${qualifiedName}`),
597
599
  ]
package/src/Start.ts CHANGED
@@ -2,13 +2,20 @@ import type * as FileSystem from "./FileSystem.ts"
2
2
  import * as Context from "effect/Context"
3
3
  import * as Deferred from "effect/Deferred"
4
4
  import * as Effect from "effect/Effect"
5
+ import * as FiberId from "effect/FiberId"
6
+ import * as ExecutionStrategy from "effect/ExecutionStrategy"
7
+ import * as Exit from "effect/Exit"
5
8
  import * as Function from "effect/Function"
6
9
  import * as Layer from "effect/Layer"
10
+ import * as Scope from "effect/Scope"
11
+ import * as SynchronizedRef from "effect/SynchronizedRef"
7
12
  import type * as ChildProcess from "./ChildProcess.ts"
13
+ import * as MutableRef from "effect/MutableRef"
8
14
  import * as BunRuntime from "./bun/BunRuntime.ts"
9
15
  import * as BunServer from "./bun/BunServer.ts"
10
16
  import * as NodeFileSystem from "./node/NodeFileSystem.ts"
11
17
  import * as BunChildProcessSpawner from "./bun/BunChildProcessSpawner.ts"
18
+ import * as PlatformRuntime from "./PlatformRuntime.ts"
12
19
  import * as StartApp from "./StartApp.ts"
13
20
 
14
21
  export function layer<
@@ -45,7 +52,7 @@ export function layer<
45
52
  * @category constructors
46
53
  */
47
54
  export function pack<const Layers extends readonly [Layer.Layer.Any, ...Array<Layer.Layer.Any>]>(
48
- ...layers: Layers
55
+ ...layers: Layers & OrderedPack<NoInfer<Layers>, NoInfer<Layers>>
49
56
  ): Layer.Layer<
50
57
  { [K in keyof Layers]: Layer.Layer.Success<Layers[K]> }[number],
51
58
  { [K in keyof Layers]: Layer.Layer.Error<Layers[K]> }[number],
@@ -64,6 +71,105 @@ export function pack<const Layers extends readonly [Layer.Layer.Any, ...Array<La
64
71
  return result as AnyLayer
65
72
  }
66
73
 
74
+ type Unsatisfied<Unmet, Success> = Unmet extends Success ? Unmet : never
75
+
76
+ type OrderedPack<
77
+ Layers extends readonly Layer.Layer.Any[],
78
+ All extends readonly Layer.Layer.Any[],
79
+ > = Layers extends readonly [
80
+ infer Head extends Layer.Layer.Any,
81
+ ...infer Tail extends Layer.Layer.Any[],
82
+ ]
83
+ ? [
84
+ [
85
+ Unsatisfied<
86
+ Exclude<
87
+ Layer.Layer.Context<Head>,
88
+ { [K in keyof Tail]: Layer.Layer.Success<Tail[K]> }[number]
89
+ >,
90
+ { [K in keyof All]: Layer.Layer.Success<All[K]> }[number]
91
+ >,
92
+ ] extends [never]
93
+ ? Head
94
+ : never,
95
+ ...OrderedPack<Tail, All>,
96
+ ]
97
+ : []
98
+
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
+ type BuildSuccess<Layers extends readonly Layer.Layer.Any[]> = {
112
+ [K in keyof Layers]: Layer.Layer.Success<Layers[K]>
113
+ }[number]
114
+
115
+ type BuildError<Layers extends readonly Layer.Layer.Any[]> = {
116
+ [K in keyof Layers]: Layer.Layer.Error<Layers[K]>
117
+ }[number]
118
+
119
+ type BuildContext<Layers extends readonly Layer.Layer.Any[]> = Exclude<
120
+ { [K in keyof Layers]: Layer.Layer.Context<Layers[K]> }[number],
121
+ { [K in keyof Layers]: Layer.Layer.Success<Layers[K]> }[number]
122
+ >
123
+
124
+ export function build<const Layers extends readonly [Layer.Layer.Any, ...Array<Layer.Layer.Any>]>(
125
+ ...layers: Layers
126
+ ): Layer.Layer<BuildSuccess<Layers>, BuildError<Layers>, BuildContext<Layers>> {
127
+ type AnyLayer = Layer.Layer<any, any, any>
128
+ const layerArray = layers as unknown as ReadonlyArray<AnyLayer>
129
+
130
+ return Layer.scopedContext(
131
+ Effect.gen(function* () {
132
+ const scope = yield* Effect.scope
133
+ const memoMap = yield* Layer.makeMemoMap
134
+ const memoMapRef = (memoMap as any).ref as SynchronizedRef.SynchronizedRef<Map<AnyLayer, any>>
135
+ let ctx = yield* Effect.context<any>()
136
+ const pending = new Set<AnyLayer>(layerArray)
137
+
138
+ for (let pass = 0; pass < layerArray.length && pending.size > 0; pass++) {
139
+ for (const layer of pending) {
140
+ const childScope = yield* Scope.fork(scope, ExecutionStrategy.sequential)
141
+ const exit = yield* layer.pipe(
142
+ Layer.buildWithMemoMap(memoMap, childScope),
143
+ Effect.provide(ctx),
144
+ Effect.exit,
145
+ )
146
+ if (Exit.isSuccess(exit)) {
147
+ ctx = Context.merge(ctx, exit.value)
148
+ pending.delete(layer)
149
+ } else {
150
+ yield* Scope.close(childScope, exit)
151
+ yield* SynchronizedRef.update(memoMapRef, (map) => {
152
+ map.delete(layer)
153
+ return map
154
+ })
155
+ }
156
+ }
157
+ }
158
+
159
+ for (const layer of pending) {
160
+ const childScope = yield* Scope.fork(scope, ExecutionStrategy.sequential)
161
+ const built = yield* layer.pipe(
162
+ Layer.buildWithMemoMap(memoMap, childScope),
163
+ Effect.provide(ctx),
164
+ )
165
+ ctx = Context.merge(ctx, built)
166
+ }
167
+
168
+ return ctx
169
+ }),
170
+ )
171
+ }
172
+
67
173
  export type PlatformServices =
68
174
  | BunServer.BunServer
69
175
  | FileSystem.FileSystem
@@ -105,3 +211,8 @@ export function serve<ROut, E, RIn extends PlatformServices>(
105
211
 
106
212
  return Function.pipe(composed, Layer.launch, BunRuntime.runMain)
107
213
  }
214
+
215
+ export const mainFiberId: Effect.Effect<FiberId.FiberId> = Effect.sync(() => {
216
+ const fiber = MutableRef.get(PlatformRuntime.mainFiber)
217
+ return fiber ? fiber.id() : FiberId.none
218
+ })