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
@@ -0,0 +1,254 @@
1
+ import postgres from "postgres"
2
+ import type * as Postgres from "postgres"
3
+ import * as Effect from "effect/Effect"
4
+ import * as Exit from "effect/Exit"
5
+ import * as FiberRef from "effect/FiberRef"
6
+ import * as GlobalValue from "effect/GlobalValue"
7
+ import * as Layer from "effect/Layer"
8
+ import * as Option from "effect/Option"
9
+ import * as SqlClient from "../SqlClient.ts"
10
+
11
+ type PgConfig = string | Postgres.Options<Record<string, Postgres.PostgresType>>
12
+
13
+ const toPgTemplateValues = (values: Array<unknown>): Array<Postgres.ParameterOrFragment<never>> =>
14
+ values as unknown as Array<Postgres.ParameterOrFragment<never>>
15
+
16
+ const toPgUnsafeValues = (
17
+ values?: Array<unknown>,
18
+ ): Array<Postgres.ParameterOrJSON<never>> | undefined =>
19
+ values === undefined ? undefined : (values as unknown as Array<Postgres.ParameterOrJSON<never>>)
20
+
21
+ const getErrorCode = (error: unknown): string => {
22
+ if (error !== null && typeof error === "object" && "code" in error) {
23
+ const code = (error as { readonly code: unknown }).code
24
+ if (typeof code === "string") {
25
+ return code
26
+ }
27
+ }
28
+ return "UNKNOWN"
29
+ }
30
+
31
+ const wrapError = (error: unknown): SqlClient.SqlError =>
32
+ new SqlClient.SqlError({
33
+ code: getErrorCode(error),
34
+ message: error instanceof Error ? error.message : String(error),
35
+ cause: error,
36
+ })
37
+
38
+ interface TxState {
39
+ readonly conn: Postgres.ReservedSql
40
+ readonly depth: number
41
+ }
42
+
43
+ const currentTransaction = GlobalValue.globalValue(
44
+ Symbol.for("effect-start/sql/postgres/currentTransaction"),
45
+ () => FiberRef.unsafeMake<Option.Option<TxState>>(Option.none()),
46
+ )
47
+
48
+ const runTemplate = <T extends object = SqlClient.SqlRow>(
49
+ pg: Postgres.Sql,
50
+ strings: TemplateStringsArray,
51
+ values: Array<unknown>,
52
+ ): Effect.Effect<ReadonlyArray<T>, SqlClient.SqlError> =>
53
+ Effect.flatMap(FiberRef.get(currentTransaction), (txOpt) =>
54
+ Effect.tryPromise({
55
+ try: () => {
56
+ const args = toPgTemplateValues(values)
57
+ if (Option.isSome(txOpt)) {
58
+ return Promise.resolve(
59
+ txOpt.value.conn<ReadonlyArray<T>>(strings, ...args) as unknown as ReadonlyArray<T>,
60
+ )
61
+ }
62
+ return Promise.resolve(
63
+ pg<ReadonlyArray<T>>(strings, ...args) as unknown as ReadonlyArray<T>,
64
+ )
65
+ },
66
+ catch: wrapError,
67
+ }),
68
+ )
69
+
70
+ const runUnsafe = <T extends object = SqlClient.SqlRow>(
71
+ pg: Postgres.Sql,
72
+ query: string,
73
+ values?: Array<unknown>,
74
+ ): Effect.Effect<ReadonlyArray<T>, SqlClient.SqlError> =>
75
+ Effect.flatMap(FiberRef.get(currentTransaction), (txOpt) =>
76
+ Effect.tryPromise({
77
+ try: () => {
78
+ const args = toPgUnsafeValues(values)
79
+ if (Option.isSome(txOpt)) {
80
+ return Promise.resolve(
81
+ txOpt.value.conn.unsafe<Array<T>>(query, args) as unknown as ReadonlyArray<T>,
82
+ )
83
+ }
84
+ return Promise.resolve(pg.unsafe<Array<T>>(query, args) as unknown as ReadonlyArray<T>)
85
+ },
86
+ catch: wrapError,
87
+ }),
88
+ )
89
+
90
+ const makeWithTransaction =
91
+ (pg: Postgres.Sql) =>
92
+ <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, SqlClient.SqlError | E, R> =>
93
+ Effect.uninterruptibleMask((restore) =>
94
+ Effect.flatMap(FiberRef.get(currentTransaction), (txOpt) => {
95
+ if (Option.isSome(txOpt)) {
96
+ const { conn, depth } = txOpt.value
97
+ const name = `sp_${depth}`
98
+ return Effect.gen(function* () {
99
+ yield* Effect.tryPromise({
100
+ try: () => Promise.resolve(conn.unsafe(`SAVEPOINT ${name}`)),
101
+ catch: wrapError,
102
+ })
103
+ const exit = yield* Effect.exit(
104
+ restore(
105
+ Effect.locally(self, currentTransaction, Option.some({ conn, depth: depth + 1 })),
106
+ ),
107
+ )
108
+ if (Exit.isSuccess(exit)) {
109
+ yield* Effect.tryPromise({
110
+ try: () => Promise.resolve(conn.unsafe(`RELEASE SAVEPOINT ${name}`)),
111
+ catch: wrapError,
112
+ })
113
+ return exit.value
114
+ }
115
+ yield* Effect.tryPromise({
116
+ try: () => Promise.resolve(conn.unsafe(`ROLLBACK TO SAVEPOINT ${name}`)),
117
+ catch: wrapError,
118
+ }).pipe(Effect.orDie)
119
+ return yield* exit
120
+ })
121
+ }
122
+
123
+ return Effect.acquireUseRelease(
124
+ Effect.tryPromise({ try: () => pg.reserve(), catch: wrapError }),
125
+ (reserved) =>
126
+ Effect.gen(function* () {
127
+ yield* Effect.tryPromise({
128
+ try: () => Promise.resolve(reserved.unsafe("BEGIN")),
129
+ catch: wrapError,
130
+ })
131
+ const exit = yield* Effect.exit(
132
+ restore(
133
+ Effect.locally(
134
+ self,
135
+ currentTransaction,
136
+ Option.some({ conn: reserved, depth: 1 }),
137
+ ),
138
+ ),
139
+ )
140
+ if (Exit.isSuccess(exit)) {
141
+ yield* Effect.tryPromise({
142
+ try: () => Promise.resolve(reserved.unsafe("COMMIT")),
143
+ catch: wrapError,
144
+ })
145
+ return exit.value
146
+ }
147
+ yield* Effect.tryPromise({
148
+ try: () => Promise.resolve(reserved.unsafe("ROLLBACK")),
149
+ catch: wrapError,
150
+ }).pipe(Effect.orDie)
151
+ return yield* exit
152
+ }),
153
+ (reserved) => Effect.sync(() => reserved.release()),
154
+ )
155
+ }),
156
+ )
157
+
158
+ const dialect = SqlClient.postgresDialect
159
+ const spanAttributes: ReadonlyArray<readonly [string, unknown]> = [["db.system.name", "postgresql"]]
160
+
161
+ const makeTaggedTemplate = (pg: Postgres.Sql) => {
162
+ const unsafeFn: SqlClient.UnsafeQuery = <T extends object = SqlClient.SqlRow>(
163
+ query: string,
164
+ values?: Array<unknown>,
165
+ ) => runUnsafe<T>(pg, query, values)
166
+
167
+ const query = <T extends object = SqlClient.SqlRow>(
168
+ strings: TemplateStringsArray,
169
+ ...values: Array<unknown>
170
+ ): Effect.Effect<ReadonlyArray<T>, SqlClient.SqlError> => {
171
+ if (SqlClient.hasFragments(values)) {
172
+ const compiled = SqlClient.interpolate(dialect, strings, values)
173
+ return unsafeFn<T>(compiled.sql, compiled.parameters)
174
+ }
175
+ return runTemplate<T>(pg, strings, values)
176
+ }
177
+
178
+ return { query, unsafeFn }
179
+ }
180
+
181
+ const makeReservedConnection = (reserved: Postgres.ReservedSql): SqlClient.Connection => {
182
+ const query = <T extends object = SqlClient.SqlRow>(
183
+ strings: TemplateStringsArray,
184
+ ...values: Array<unknown>
185
+ ): Effect.Effect<ReadonlyArray<T>, SqlClient.SqlError> =>
186
+ Effect.tryPromise({
187
+ try: () =>
188
+ Promise.resolve(
189
+ reserved<ReadonlyArray<T>>(
190
+ strings,
191
+ ...toPgTemplateValues(values),
192
+ ) as unknown as ReadonlyArray<T>,
193
+ ),
194
+ catch: wrapError,
195
+ })
196
+
197
+ const unsafe: SqlClient.UnsafeQuery = <T extends object = SqlClient.SqlRow>(
198
+ queryText: string,
199
+ values?: Array<unknown>,
200
+ ): Effect.Effect<ReadonlyArray<T>, SqlClient.SqlError> =>
201
+ Effect.tryPromise({
202
+ try: () =>
203
+ Promise.resolve(
204
+ reserved.unsafe<Array<T>>(
205
+ queryText,
206
+ toPgUnsafeValues(values),
207
+ ) as unknown as ReadonlyArray<T>,
208
+ ),
209
+ catch: wrapError,
210
+ })
211
+
212
+ return SqlClient.connection(query, unsafe, { spanAttributes, dialect })
213
+ }
214
+
215
+ export const layer = (config: PgConfig): Layer.Layer<SqlClient.SqlClient, SqlClient.SqlError> =>
216
+ Layer.scoped(
217
+ SqlClient.SqlClient,
218
+ Effect.map(
219
+ Effect.acquireRelease(
220
+ Effect.try({
221
+ try: () => {
222
+ const pg =
223
+ typeof config === "string"
224
+ ? postgres(config)
225
+ : postgres(config as Postgres.Options<Record<string, Postgres.PostgresType>>)
226
+ const tagged = makeTaggedTemplate(pg)
227
+ const use: SqlClient.SqlClient["use"] = (fn) =>
228
+ Effect.tryPromise({ try: () => Promise.resolve(fn(pg)), catch: wrapError })
229
+
230
+ return {
231
+ client: SqlClient.make({
232
+ query: tagged.query,
233
+ unsafe: tagged.unsafeFn,
234
+ withTransaction: makeWithTransaction(pg),
235
+ spanAttributes,
236
+ dialect,
237
+ reserve: Effect.acquireRelease(
238
+ Effect.tryPromise({ try: () => pg.reserve(), catch: wrapError }),
239
+ (reserved: Postgres.ReservedSql) => Effect.sync(() => reserved.release()),
240
+ ).pipe(
241
+ Effect.map((reserved): SqlClient.Connection => makeReservedConnection(reserved)),
242
+ ),
243
+ use,
244
+ }),
245
+ close: use((driver) => (driver as Postgres.Sql).end({ timeout: 0 })),
246
+ }
247
+ },
248
+ catch: wrapError,
249
+ }),
250
+ (handle) => handle.close.pipe(Effect.orDie),
251
+ ),
252
+ (handle) => handle.client,
253
+ ),
254
+ )
@@ -24,13 +24,13 @@ export function layer(): Layer.Layer<TestLogger> {
24
24
  const messages = yield* Ref.make<Array<string>>([])
25
25
  const mutableRef = (messages as any).ref as MutableRef.MutableRef<Array<string>>
26
26
 
27
- const customLogger = Logger.make(({ message, logLevel, cause }) => {
28
- const causeStr = !Cause.isEmpty(cause)
29
- ? ` ${Cause.pretty(cause, { renderErrorCause: true })}`
27
+ const customLogger = Logger.make((options) => {
28
+ const causeStr = !Cause.isEmpty(options.cause)
29
+ ? ` ${Cause.pretty(options.cause, { renderErrorCause: true })}`
30
30
  : ""
31
31
  MutableRef.update(mutableRef, (msgs) => [
32
32
  ...msgs,
33
- `[${logLevel._tag}] ${String(message)}${causeStr}`,
33
+ `[${options.logLevel._tag}] ${String(options.message)}${causeStr}`,
34
34
  ])
35
35
  })
36
36
 
@@ -7,10 +7,6 @@ import * as MetricBoundaries from "effect/MetricBoundaries"
7
7
  import * as Random from "effect/Random"
8
8
  import * as Schedule from "effect/Schedule"
9
9
 
10
- // ---------------------------------------------------------------------------
11
- // Helpers
12
- // ---------------------------------------------------------------------------
13
-
14
10
  const pick = <T>(arr: ReadonlyArray<T>): Effect.Effect<T> =>
15
11
  Random.nextIntBetween(0, arr.length).pipe(Effect.map((i) => arr[i]))
16
12
 
@@ -22,10 +18,6 @@ const maybe = (pct: number, op: Effect.Effect<void, any>) =>
22
18
  if ((yield* Random.nextIntBetween(0, 100)) < pct) yield* op
23
19
  })
24
20
 
25
- // ---------------------------------------------------------------------------
26
- // Metrics
27
- // ---------------------------------------------------------------------------
28
-
29
21
  const httpRequestsTotal = Metric.counter("http.requests.total")
30
22
  const httpRequestDuration = Metric.histogram(
31
23
  "http.request.duration_ms",
@@ -49,10 +41,6 @@ const serializationDuration = Metric.histogram(
49
41
  MetricBoundaries.linear({ start: 0, width: 5, count: 15 }),
50
42
  )
51
43
 
52
- // ---------------------------------------------------------------------------
53
- // Simulated operations
54
- // ---------------------------------------------------------------------------
55
-
56
44
  const routes = [
57
45
  { method: "GET", path: "/api/users", handler: "UserController.list" },
58
46
  { method: "GET", path: "/api/users/:id", handler: "UserController.get" },
@@ -119,10 +107,6 @@ const errorMessages = [
119
107
  "DNS resolution failed for analytics.internal.svc",
120
108
  ]
121
109
 
122
- // ---------------------------------------------------------------------------
123
- // Errors
124
- // ---------------------------------------------------------------------------
125
-
126
110
  class DatabaseError extends Data.TaggedError("DatabaseError")<{
127
111
  readonly query: string
128
112
  readonly reason: string
@@ -171,10 +155,6 @@ class CircuitBreakerError extends Data.TaggedError("CircuitBreakerError")<{
171
155
  readonly failureCount: number
172
156
  }> {}
173
157
 
174
- // ---------------------------------------------------------------------------
175
- // Leaf-level spans
176
- // ---------------------------------------------------------------------------
177
-
178
158
  const simulateDnsResolve = Effect.gen(function* () {
179
159
  const hosts = [
180
160
  "db-primary.internal",
@@ -415,10 +395,6 @@ const simulateAccessLog = Effect.gen(function* () {
415
395
  yield* Effect.sleep(yield* randomMs(0, 1))
416
396
  }).pipe(Effect.withSpan("middleware.access_log"))
417
397
 
418
- // ---------------------------------------------------------------------------
419
- // Composite sub-operations with deep nesting
420
- // ---------------------------------------------------------------------------
421
-
422
398
  const simulateCircuitBreaker = (inner: Effect.Effect<void, any>, service: string) =>
423
399
  Effect.gen(function* () {
424
400
  const failures = yield* Random.nextIntBetween(0, 10)
@@ -619,10 +595,6 @@ const simulateAnalyticsPipeline = Effect.gen(function* () {
619
595
  }).pipe(Effect.withSpan("analytics.transform"))
620
596
  }).pipe(Effect.withSpan("analytics.pipeline"))
621
597
 
622
- // ---------------------------------------------------------------------------
623
- // Background tasks (also deeper now)
624
- // ---------------------------------------------------------------------------
625
-
626
598
  const simulateBackgroundTask = Effect.gen(function* () {
627
599
  const tasks = [
628
600
  "process-webhook",
@@ -685,10 +657,6 @@ const simulateBackgroundTask = Effect.gen(function* () {
685
657
  yield* Effect.logInfo(`completed background task: ${task}`)
686
658
  }).pipe(Effect.withSpan("task.background"))
687
659
 
688
- // ---------------------------------------------------------------------------
689
- // Simulate a single HTTP request (deep middleware + handler pipeline)
690
- // ---------------------------------------------------------------------------
691
-
692
660
  const simulateRequest = Effect.gen(function* () {
693
661
  const route = yield* pick(routes)
694
662
  const statusCodes = [200, 200, 200, 200, 200, 201, 204, 301, 400, 401, 404, 500]
@@ -769,10 +737,6 @@ const simulateRequest = Effect.gen(function* () {
769
737
  return result
770
738
  })
771
739
 
772
- // ---------------------------------------------------------------------------
773
- // Simulation loops
774
- // ---------------------------------------------------------------------------
775
-
776
740
  const requestLoop = Effect.gen(function* () {
777
741
  yield* Effect.logInfo("simulation: request loop started")
778
742
  yield* Effect.schedule(
@@ -800,15 +764,13 @@ const backgroundLoop = Effect.gen(function* () {
800
764
  )
801
765
  })
802
766
 
803
- // ---------------------------------------------------------------------------
804
- // Public API
805
- // ---------------------------------------------------------------------------
806
-
807
- export const layer = Layer.scopedDiscard(
808
- Effect.gen(function* () {
809
- yield* Effect.logInfo("simulation layer starting")
810
- yield* Effect.forkScoped(requestLoop)
811
- yield* Effect.forkScoped(backgroundLoop)
812
- yield* Effect.logInfo("simulation layer ready")
813
- }),
814
- )
767
+ export function layer() {
768
+ return Layer.scopedDiscard(
769
+ Effect.gen(function* () {
770
+ yield* Effect.logInfo("simulation layer starting")
771
+ yield* Effect.forkScoped(requestLoop)
772
+ yield* Effect.forkScoped(backgroundLoop)
773
+ yield* Effect.logInfo("simulation layer ready")
774
+ }),
775
+ )
776
+ }
@@ -0,0 +1,47 @@
1
+ import * as Effect from "effect/Effect"
2
+ import * as Layer from "effect/Layer"
3
+ import * as Route from "../Route.ts"
4
+ import * as RouteTree from "../RouteTree.ts"
5
+ import * as sqlBun from "effect-start/sql/bun"
6
+ import type * as SqlClient from "../sql/SqlClient.ts"
7
+ import * as TowerErrors from "./TowerErrors.ts"
8
+ import * as TowerLogger from "./TowerLogger.ts"
9
+ import * as TowerMetrics from "./TowerMetrics.ts"
10
+ import * as TowerProcess from "./TowerProcess.ts"
11
+ import * as TowerStore from "./TowerStore.ts"
12
+ import * as TowerTracer from "./TowerTracer.ts"
13
+ import consoleRoutes from "./routes/tree.ts"
14
+
15
+ export function layer(
16
+ options?: TowerStore.TowerStoreOptions & {
17
+ readonly sqlLayer?: Layer.Layer<SqlClient.SqlClient, SqlClient.SqlError>
18
+ },
19
+ ): Layer.Layer<TowerStore.TowerStore> {
20
+ const sqlLayer =
21
+ options?.sqlLayer ?? sqlBun.layer({ adapter: "sqlite", filename: ":memory:" } as any)
22
+ const store = TowerStore.layer(options).pipe(Layer.provide(sqlLayer), Layer.orDie)
23
+ const features = Layer.mergeAll(
24
+ TowerTracer.layer,
25
+ TowerLogger.layer,
26
+ TowerMetrics.layer,
27
+ TowerErrors.layer,
28
+ TowerProcess.layer,
29
+ ).pipe(Layer.provide(store))
30
+ return Layer.merge(store, features)
31
+ }
32
+
33
+ export function layerRoutes(options?: { prefix?: string }) {
34
+ const prefix = options?.prefix ?? "/tower"
35
+
36
+ return Layer.effect(
37
+ Route.Routes,
38
+ Effect.gen(function* () {
39
+ const existing = yield* Route.Routes
40
+ TowerStore.store.prefix = prefix
41
+ const tree = Route.tree({
42
+ [prefix as "/"]: consoleRoutes,
43
+ })
44
+ return RouteTree.merge(existing, tree)
45
+ }),
46
+ )
47
+ }
@@ -11,9 +11,7 @@ import * as PubSub from "effect/PubSub"
11
11
  import type * as Context from "effect/Context"
12
12
  import type * as Fiber from "effect/Fiber"
13
13
  import * as Supervisor from "effect/Supervisor"
14
- import * as ConsoleStore from "./ConsoleStore.ts"
15
-
16
- let errorId = 0
14
+ import * as TowerStore from "./TowerStore.ts"
17
15
 
18
16
  function safeSerialize(value: unknown, depth = 0): unknown {
19
17
  if (depth > 4) return "<deep>"
@@ -124,8 +122,8 @@ function extractSpanName(error: unknown): string | undefined {
124
122
  return undefined
125
123
  }
126
124
 
127
- function extractDetails(cause: Cause.Cause<unknown>): Array<ConsoleStore.ConsoleErrorDetail> {
128
- const details: Array<ConsoleStore.ConsoleErrorDetail> = []
125
+ function extractDetails(cause: Cause.Cause<unknown>): Array<TowerStore.TowerErrorDetail> {
126
+ const details: Array<TowerStore.TowerErrorDetail> = []
129
127
 
130
128
  const failures = Chunk.toArray(Cause.failures(cause))
131
129
  for (const error of failures) {
@@ -152,7 +150,7 @@ function extractDetails(cause: Cause.Cause<unknown>): Array<ConsoleStore.Console
152
150
  return details
153
151
  }
154
152
 
155
- function make(store: ConsoleStore.ConsoleStoreShape): Supervisor.Supervisor<void> {
153
+ function make(store: TowerStore.TowerStoreShape): Supervisor.Supervisor<void> {
156
154
  return new (class extends Supervisor.AbstractSupervisor<void> {
157
155
  value = Effect.void
158
156
 
@@ -163,14 +161,18 @@ function make(store: ConsoleStore.ConsoleStoreShape): Supervisor.Supervisor<void
163
161
  fiber: Fiber.RuntimeFiber<A, E>,
164
162
  ) {
165
163
  const childId = FiberId.threadName(fiber.id())
166
- if (Option.isSome(parent)) {
167
- const parentId = FiberId.threadName(parent.value.id())
168
- if (childId !== parentId) {
169
- store.fiberParents.set(childId, parentId)
170
- }
171
- }
164
+ const parentId = Option.isSome(parent) ? FiberId.threadName(parent.value.id()) : undefined
172
165
 
173
166
  const span = fiber.currentSpan
167
+ const traceId = span
168
+ ? (() => {
169
+ try {
170
+ return BigInt(span.traceId)
171
+ } catch {
172
+ return undefined
173
+ }
174
+ })()
175
+ : undefined
174
176
  const annotations: Record<string, unknown> = {}
175
177
  const spanAnnotations = fiber.getFiberRef(FiberRef.currentTracerSpanAnnotations)
176
178
  HashMap.forEach(spanAnnotations, (value, key) => {
@@ -181,33 +183,42 @@ function make(store: ConsoleStore.ConsoleStoreShape): Supervisor.Supervisor<void
181
183
  annotations[key] = value
182
184
  })
183
185
 
184
- store.fiberContexts.set(childId, {
185
- spanName: span?._tag === "Span" ? span.name : undefined,
186
- traceId: span ? span.traceId : undefined,
187
- annotations,
188
- })
186
+ TowerStore.runWrite(
187
+ TowerStore.upsertFiber(
188
+ store.sql,
189
+ childId,
190
+ parentId !== childId ? parentId : undefined,
191
+ span?._tag === "Span" ? span.name : undefined,
192
+ traceId,
193
+ annotations,
194
+ ),
195
+ )
189
196
  }
190
197
 
191
198
  onEnd<A, E>(exit: Exit.Exit<A, E>, fiber: Fiber.RuntimeFiber<A, E>) {
192
199
  if (Exit.isFailure(exit) && !Cause.isInterruptedOnly(exit.cause)) {
193
- const error: ConsoleStore.ConsoleError = {
194
- id: String(++errorId),
195
- date: new Date(),
200
+ const error: TowerStore.TowerError = {
201
+ id: TowerStore.nextErrorId(),
196
202
  fiberId: FiberId.threadName(fiber.id()),
197
203
  interrupted: Cause.isInterrupted(exit.cause),
198
204
  prettyPrint: Cause.pretty(exit.cause, { renderErrorCause: true }),
199
205
  details: extractDetails(exit.cause),
200
206
  }
201
- store.errors.push(error)
207
+ TowerStore.runWrite(
208
+ Effect.zipRight(
209
+ TowerStore.insertError(store.sql, error),
210
+ TowerStore.evict(store.sql, "Error", store.errorCapacity),
211
+ ),
212
+ )
202
213
  Effect.runSync(PubSub.publish(store.events, { _tag: "Error", error }))
203
214
  }
204
215
  }
205
216
  })()
206
217
  }
207
218
 
208
- export const layer: Layer.Layer<never, never, ConsoleStore.ConsoleStore> = Layer.unwrapEffect(
219
+ export const layer: Layer.Layer<never, never, TowerStore.TowerStore> = Layer.unwrapEffect(
209
220
  Effect.gen(function* () {
210
- const store = yield* ConsoleStore.ConsoleStore
221
+ const store = yield* TowerStore.TowerStore
211
222
  return Supervisor.addSupervisor(make(store))
212
223
  }),
213
224
  )
@@ -0,0 +1,52 @@
1
+ import * as Cause from "effect/Cause"
2
+ import * as Effect from "effect/Effect"
3
+ import * as FiberId from "effect/FiberId"
4
+ import * as HashMap from "effect/HashMap"
5
+ import * as List from "effect/List"
6
+ import * as Logger from "effect/Logger"
7
+ import * as PubSub from "effect/PubSub"
8
+ import * as TowerStore from "./TowerStore.ts"
9
+
10
+ const towerLogger = Logger.make((options) => {
11
+ const store = TowerStore.store
12
+ if (!store.sql) return
13
+
14
+ try {
15
+ const levelMap: Record<string, TowerStore.TowerLog["level"]> = {
16
+ Debug: "DEBUG",
17
+ Info: "INFO",
18
+ Warning: "WARNING",
19
+ Error: "ERROR",
20
+ Fatal: "FATAL",
21
+ }
22
+ const level = levelMap[options.logLevel._tag] ?? "INFO"
23
+ const causeStr = !Cause.isEmpty(options.cause)
24
+ ? Cause.pretty(options.cause, { renderErrorCause: true })
25
+ : undefined
26
+ const spanNames: Array<string> = []
27
+ List.forEach(options.spans, (s) => spanNames.push(s.label))
28
+ const ann: Record<string, unknown> = {}
29
+ HashMap.forEach(options.annotations, (v, k) => {
30
+ ann[k] = v
31
+ })
32
+
33
+ const log: TowerStore.TowerLog = {
34
+ id: TowerStore.nextLogId(),
35
+ level,
36
+ message: String(options.message),
37
+ fiberId: FiberId.threadName(options.fiberId),
38
+ cause: causeStr,
39
+ spans: spanNames,
40
+ annotations: ann,
41
+ }
42
+ TowerStore.runWrite(
43
+ Effect.zipRight(
44
+ TowerStore.insertLog(store.sql, log),
45
+ TowerStore.evict(store.sql, "Log", store.logCapacity),
46
+ ),
47
+ )
48
+ Effect.runSync(PubSub.publish(store.events, { _tag: "Log", log }))
49
+ } catch (_) {}
50
+ })
51
+
52
+ export const layer = Logger.add(towerLogger)
@@ -4,22 +4,22 @@ import * as Metric from "effect/Metric"
4
4
  import * as MetricKeyType from "effect/MetricKeyType"
5
5
  import * as PubSub from "effect/PubSub"
6
6
  import * as Schedule from "effect/Schedule"
7
- import * as ConsoleStore from "./ConsoleStore.ts"
7
+ import * as TowerStore from "./TowerStore.ts"
8
8
 
9
- export const layer: Layer.Layer<never, never, ConsoleStore.ConsoleStore> = Layer.scopedDiscard(
9
+ export const layer: Layer.Layer<never, never, TowerStore.TowerStore> = Layer.scopedDiscard(
10
10
  Effect.gen(function* () {
11
- const store = yield* ConsoleStore.ConsoleStore
11
+ const store = yield* TowerStore.TowerStore
12
12
 
13
13
  yield* Effect.forkScoped(
14
14
  Effect.schedule(
15
15
  Effect.sync(() => {
16
16
  const pairs = Metric.unsafeSnapshot()
17
- const snapshots: Array<ConsoleStore.ConsoleMetricSnapshot> = []
17
+ const snapshots: Array<TowerStore.TowerMetricSnapshot> = []
18
18
 
19
19
  for (const pair of pairs) {
20
20
  const key = pair.metricKey
21
21
  const state = pair.metricState as any
22
- let type: ConsoleStore.ConsoleMetricSnapshot["type"] = "counter"
22
+ let type: TowerStore.TowerMetricSnapshot["type"] = "counter"
23
23
  let value: unknown = 0
24
24
 
25
25
  if (MetricKeyType.CounterKeyTypeTypeId in key.keyType) {
@@ -3,9 +3,9 @@ import * as Effect from "effect/Effect"
3
3
  import * as Layer from "effect/Layer"
4
4
  import * as PubSub from "effect/PubSub"
5
5
  import * as Schedule from "effect/Schedule"
6
- import * as ConsoleStore from "./ConsoleStore.ts"
6
+ import * as TowerStore from "./TowerStore.ts"
7
7
 
8
- function snapshot(): ConsoleStore.ProcessStats {
8
+ function snapshot(): TowerStore.ProcessStats {
9
9
  const mem = process.memoryUsage()
10
10
  const cpu = process.cpuUsage()
11
11
  const res = process.resourceUsage()
@@ -41,9 +41,9 @@ function snapshot(): ConsoleStore.ProcessStats {
41
41
  }
42
42
  }
43
43
 
44
- export const layer: Layer.Layer<never, never, ConsoleStore.ConsoleStore> = Layer.scopedDiscard(
44
+ export const layer: Layer.Layer<never, never, TowerStore.TowerStore> = Layer.scopedDiscard(
45
45
  Effect.gen(function* () {
46
- const store = yield* ConsoleStore.ConsoleStore
46
+ const store = yield* TowerStore.TowerStore
47
47
 
48
48
  yield* Effect.forkScoped(
49
49
  Effect.schedule(