effect-start 0.27.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 (633) 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 -23
  574. package/src/ChildProcess.ts +3 -6
  575. package/src/Docker.ts +190 -0
  576. package/src/Effectify.ts +7 -10
  577. package/src/FileSystem.ts +1 -4
  578. package/src/GlobalLayer.ts +85 -0
  579. package/src/PlatformRuntime.ts +8 -1
  580. package/src/RouteHook.ts +1 -1
  581. package/src/SqlIntrospect.ts +13 -11
  582. package/src/Start.ts +40 -29
  583. package/src/System.ts +60 -3
  584. package/src/Unique.ts +59 -0
  585. package/src/bun/BunChildProcessSpawner.ts +1 -8
  586. package/src/bun/BunRoute.ts +1 -0
  587. package/src/bun/BunRuntime.ts +2 -8
  588. package/src/bun/BunServer.ts +54 -2
  589. package/src/datastar/watchers/patchElements.ts +0 -1
  590. package/src/lint/plugin.js +146 -81
  591. package/src/sql/SqlCache.ts +50 -0
  592. package/src/sql/SqlClient.ts +59 -14
  593. package/src/sql/bun/index.ts +28 -26
  594. package/src/sql/index.ts +1 -0
  595. package/src/sql/libsql/index.ts +62 -28
  596. package/src/sql/mssql/index.ts +53 -57
  597. package/src/sql/postgres/index.ts +254 -0
  598. package/src/tower/Simulation.ts +776 -0
  599. package/src/tower/Tower.ts +47 -0
  600. package/src/tower/TowerErrors.ts +224 -0
  601. package/src/tower/TowerLogger.ts +52 -0
  602. package/src/tower/TowerMetrics.ts +72 -0
  603. package/src/tower/TowerProcess.ts +59 -0
  604. package/src/tower/TowerStore.ts +505 -0
  605. package/src/tower/TowerTracer.ts +128 -0
  606. package/src/tower/index.ts +3 -0
  607. package/src/tower/routes/errors/route.tsx +90 -0
  608. package/src/tower/routes/fiberDetail.tsx +51 -0
  609. package/src/tower/routes/fibers/route.tsx +46 -0
  610. package/src/tower/routes/layout.html +340 -0
  611. package/src/tower/routes/layout.tsx +4 -0
  612. package/src/tower/routes/logs/route.tsx +73 -0
  613. package/src/tower/routes/metrics/route.tsx +36 -0
  614. package/src/tower/routes/route.tsx +8 -0
  615. package/src/tower/routes/routes/route.tsx +30 -0
  616. package/src/tower/routes/services/route.tsx +21 -0
  617. package/src/tower/routes/system/route.tsx +43 -0
  618. package/src/tower/routes/traceDetail.tsx +30 -0
  619. package/src/tower/routes/traces/route.tsx +72 -0
  620. package/src/tower/routes/tree.ts +28 -0
  621. package/src/tower/ui/Errors.tsx +80 -0
  622. package/src/tower/ui/Fibers.tsx +336 -0
  623. package/src/tower/ui/Logs.tsx +50 -0
  624. package/src/tower/ui/Metrics.tsx +78 -0
  625. package/src/tower/ui/Routes.tsx +125 -0
  626. package/src/tower/ui/Services.tsx +273 -0
  627. package/src/tower/ui/Shell.tsx +74 -0
  628. package/src/tower/ui/System.tsx +141 -0
  629. package/src/tower/ui/Traces.tsx +419 -0
  630. package/src/x/cloudflare/CloudflareTunnel.ts +1 -1
  631. package/src/x/tailscale/TailscaleTunnel.ts +3 -3
  632. package/src/x/tailwind/compile.ts +6 -1
  633. 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/FileSystem.ts CHANGED
@@ -342,10 +342,7 @@ export const make = (
342
342
  })
343
343
  }
344
344
 
345
- const fileStream = (
346
- file: File,
347
- options: StreamOptions = {},
348
- ) => {
345
+ const fileStream = (file: File, options: StreamOptions = {}) => {
349
346
  const bytesToRead = options.bytesToRead !== undefined ? Size(options.bytesToRead) : undefined
350
347
  const chunkSize = Size(options.chunkSize ?? 64 * 1024)
351
348
 
@@ -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>
@@ -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/SqlClient.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.Connection,
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,6 +2,7 @@ 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"
5
6
  import * as ExecutionStrategy from "effect/ExecutionStrategy"
6
7
  import * as Exit from "effect/Exit"
7
8
  import * as Function from "effect/Function"
@@ -9,10 +10,12 @@ import * as Layer from "effect/Layer"
9
10
  import * as Scope from "effect/Scope"
10
11
  import * as SynchronizedRef from "effect/SynchronizedRef"
11
12
  import type * as ChildProcess from "./ChildProcess.ts"
13
+ import * as MutableRef from "effect/MutableRef"
12
14
  import * as BunRuntime from "./bun/BunRuntime.ts"
13
15
  import * as BunServer from "./bun/BunServer.ts"
14
16
  import * as NodeFileSystem from "./node/NodeFileSystem.ts"
15
17
  import * as BunChildProcessSpawner from "./bun/BunChildProcessSpawner.ts"
18
+ import * as PlatformRuntime from "./PlatformRuntime.ts"
16
19
  import * as StartApp from "./StartApp.ts"
17
20
 
18
21
  export function layer<
@@ -48,9 +51,7 @@ export function layer<
48
51
  * @since 1.0.0
49
52
  * @category constructors
50
53
  */
51
- export function pack<
52
- const Layers extends readonly [Layer.Layer.Any, ...Array<Layer.Layer.Any>],
53
- >(
54
+ export function pack<const Layers extends readonly [Layer.Layer.Any, ...Array<Layer.Layer.Any>]>(
54
55
  ...layers: Layers & OrderedPack<NoInfer<Layers>, NoInfer<Layers>>
55
56
  ): Layer.Layer<
56
57
  { [K in keyof Layers]: Layer.Layer.Success<Layers[K]> }[number],
@@ -70,8 +71,7 @@ export function pack<
70
71
  return result as AnyLayer
71
72
  }
72
73
 
73
- type Unsatisfied<Unmet, Success> =
74
- Unmet extends Success ? Unmet : never
74
+ type Unsatisfied<Unmet, Success> = Unmet extends Success ? Unmet : never
75
75
 
76
76
  type OrderedPack<
77
77
  Layers extends readonly Layer.Layer.Any[],
@@ -81,16 +81,19 @@ type OrderedPack<
81
81
  ...infer Tail extends Layer.Layer.Any[],
82
82
  ]
83
83
  ? [
84
- [
85
- Unsatisfied<
86
- Exclude<Layer.Layer.Context<Head>, { [K in keyof Tail]: Layer.Layer.Success<Tail[K]> }[number]>,
87
- { [K in keyof All]: Layer.Layer.Success<All[K]> }[number]
88
- >,
89
- ] extends [never]
90
- ? Head
91
- : never,
92
- ...OrderedPack<Tail, All>,
93
- ]
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
+ ]
94
97
  : []
95
98
 
96
99
  /**
@@ -105,18 +108,22 @@ type OrderedPack<
105
108
  * @since 1.0.0
106
109
  * @category constructors
107
110
  */
108
- export function build<
109
- const Layers extends readonly [Layer.Layer.Any, ...Array<Layer.Layer.Any>],
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>]>(
111
125
  ...layers: Layers
112
- ): Layer.Layer<
113
- { [K in keyof Layers]: Layer.Layer.Success<Layers[K]> }[number],
114
- { [K in keyof Layers]: Layer.Layer.Error<Layers[K]> }[number],
115
- Exclude<
116
- { [K in keyof Layers]: Layer.Layer.Context<Layers[K]> }[number],
117
- { [K in keyof Layers]: Layer.Layer.Success<Layers[K]> }[number]
118
- >
119
- > {
126
+ ): Layer.Layer<BuildSuccess<Layers>, BuildError<Layers>, BuildContext<Layers>> {
120
127
  type AnyLayer = Layer.Layer<any, any, any>
121
128
  const layerArray = layers as unknown as ReadonlyArray<AnyLayer>
122
129
 
@@ -129,7 +136,7 @@ export function build<
129
136
  const pending = new Set<AnyLayer>(layerArray)
130
137
 
131
138
  for (let pass = 0; pass < layerArray.length && pending.size > 0; pass++) {
132
- for (const layer of [...pending]) {
139
+ for (const layer of pending) {
133
140
  const childScope = yield* Scope.fork(scope, ExecutionStrategy.sequential)
134
141
  const exit = yield* layer.pipe(
135
142
  Layer.buildWithMemoMap(memoMap, childScope),
@@ -160,8 +167,7 @@ export function build<
160
167
 
161
168
  return ctx
162
169
  }),
163
- // TODO: not sure how to properly type it yet
164
- ) as any
170
+ )
165
171
  }
166
172
 
167
173
  export type PlatformServices =
@@ -205,3 +211,8 @@ export function serve<ROut, E, RIn extends PlatformServices>(
205
211
 
206
212
  return Function.pipe(composed, Layer.launch, BunRuntime.runMain)
207
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
+ })
package/src/System.ts CHANGED
@@ -1,11 +1,69 @@
1
1
  import * as Effect from "effect/Effect"
2
2
  import type * as Scope from "effect/Scope"
3
+ import * as NNet from "node:net"
3
4
 
4
5
  import * as ChildProcess from "./ChildProcess.ts"
5
6
  import * as PlatformError from "./PlatformError.ts"
6
7
 
7
8
  export const cwd: Effect.Effect<string> = Effect.sync(() => process.cwd())
8
9
 
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
+ })
66
+
9
67
  export const which = (name: string): Effect.Effect<string, PlatformError.SystemError> =>
10
68
  Effect.flatMap(
11
69
  Effect.try({
@@ -33,11 +91,10 @@ export const which = (name: string): Effect.Effect<string, PlatformError.SystemE
33
91
  )
34
92
 
35
93
  export const spawn = (
36
- command: string,
37
- args?: ReadonlyArray<string>,
94
+ cmd: readonly [string, ...Array<string>],
38
95
  options?: ChildProcess.Command.Options,
39
96
  ): Effect.Effect<
40
97
  ChildProcess.ChildProcessHandle,
41
98
  PlatformError.PlatformError,
42
99
  ChildProcess.ChildProcessSpawner | Scope.Scope
43
- > => ChildProcess.spawn(ChildProcess.make(command, args, options))
100
+ > => ChildProcess.spawn(ChildProcess.make(cmd, options))