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
@@ -21,6 +21,11 @@ export interface DialectConfig {
21
21
 
22
22
  export type SqlRow = Record<string, unknown>
23
23
 
24
+ export type SqlEffect<A extends object = SqlRow> = Effect.Effect<ReadonlyArray<A>, SqlError> & {
25
+ readonly sql: string
26
+ readonly parameters: ReadonlyArray<unknown>
27
+ }
28
+
24
29
  export interface Connection {
25
30
  /**
26
31
  * Execute a parameterized query via tagged template literal
@@ -28,7 +33,7 @@ export interface Connection {
28
33
  <A extends object = SqlRow>(
29
34
  strings: TemplateStringsArray,
30
35
  ...values: Array<unknown>
31
- ): Effect.Effect<ReadonlyArray<A>, SqlError>
36
+ ): SqlEffect<A>
32
37
  /**
33
38
  * Create a safely-escaped SQL identifier from a string
34
39
  */
@@ -52,9 +57,14 @@ export interface Connection {
52
57
  readonly unsafe: <A extends object = SqlRow>(
53
58
  query: string,
54
59
  values?: Array<unknown>,
55
- ) => Effect.Effect<ReadonlyArray<A>, SqlError>
60
+ ) => SqlEffect<A>
56
61
  }
57
62
 
63
+ export type UnsafeQuery = <A extends object = SqlRow>(
64
+ query: string,
65
+ values?: Array<unknown>,
66
+ ) => Effect.Effect<ReadonlyArray<A>, SqlError>
67
+
58
68
  export interface SqlClient extends Connection {
59
69
  /**
60
70
  * Run an effect inside a transaction
@@ -87,7 +97,7 @@ export interface MakeOptions {
87
97
  readonly withTransaction: SqlClient["withTransaction"]
88
98
  readonly reserve: SqlClient["reserve"]
89
99
  readonly use: SqlClient["use"]
90
- readonly unsafe: Connection["unsafe"]
100
+ readonly unsafe: UnsafeQuery
91
101
  readonly query: TaggedQuery
92
102
  readonly spanAttributes: ReadonlyArray<readonly [string, unknown]>
93
103
  readonly dialect: DialectConfig
@@ -95,10 +105,28 @@ export interface MakeOptions {
95
105
 
96
106
  export function make(options: MakeOptions): SqlClient {
97
107
  const trace = makeTraceOptions(options.spanAttributes, options.dialect)
98
- const query = withExecuteSpan(options.query, trace)
99
- const unsafe = withUnsafeExecuteSpan(options.unsafe, trace)
108
+ const baseQuery = withExecuteSpan(options.query, trace)
109
+ const baseUnsafe = withUnsafeExecuteSpan(options.unsafe, trace)
100
110
  const withTransaction = withTransactionSpan(options.withTransaction, trace.spanAttributes)
101
111
 
112
+ const query: TaggedQuery = <A extends object = SqlRow>(
113
+ strings: TemplateStringsArray,
114
+ ...values: Array<unknown>
115
+ ): SqlEffect<A> =>
116
+ Object.assign(baseQuery<A>(strings, ...values), {
117
+ sql: renderTemplateSql(trace.dialect, strings, values),
118
+ parameters: values,
119
+ }) as SqlEffect<A>
120
+
121
+ const unsafe: Connection["unsafe"] = <A extends object = SqlRow>(
122
+ queryStr: string,
123
+ values?: Array<unknown>,
124
+ ): SqlEffect<A> =>
125
+ Object.assign(baseUnsafe<A>(queryStr, values), {
126
+ sql: queryStr,
127
+ parameters: values ?? [],
128
+ }) as SqlEffect<A>
129
+
102
130
  return Object.assign(dispatchCallable(query), {
103
131
  ...options,
104
132
  query,
@@ -109,7 +137,7 @@ export function make(options: MakeOptions): SqlClient {
109
137
 
110
138
  export function connection(
111
139
  query: TaggedQuery,
112
- unsafe: Connection["unsafe"],
140
+ unsafe: UnsafeQuery,
113
141
  options?: {
114
142
  readonly spanAttributes?: ReadonlyArray<readonly [string, unknown]>
115
143
  readonly dialect?: DialectConfig
@@ -118,7 +146,28 @@ export function connection(
118
146
  const trace = makeTraceOptions(options?.spanAttributes, options?.dialect)
119
147
  const tracedQuery = withExecuteSpan(query, trace)
120
148
  const tracedUnsafe = withUnsafeExecuteSpan(unsafe, trace)
121
- return Object.assign(dispatchCallable(tracedQuery), { unsafe: tracedUnsafe }) as unknown as Connection
149
+
150
+ const wrappedQuery: TaggedQuery = <A extends object = SqlRow>(
151
+ strings: TemplateStringsArray,
152
+ ...values: Array<unknown>
153
+ ): SqlEffect<A> =>
154
+ Object.assign(tracedQuery<A>(strings, ...values), {
155
+ sql: renderTemplateSql(trace.dialect, strings, values),
156
+ parameters: values,
157
+ }) as SqlEffect<A>
158
+
159
+ const wrappedUnsafe: Connection["unsafe"] = <A extends object = SqlRow>(
160
+ query: string,
161
+ values?: Array<unknown>,
162
+ ): SqlEffect<A> =>
163
+ Object.assign(tracedUnsafe<A>(query, values), {
164
+ sql: query,
165
+ parameters: values ?? [],
166
+ }) as SqlEffect<A>
167
+
168
+ return Object.assign(dispatchCallable(wrappedQuery), {
169
+ unsafe: wrappedUnsafe,
170
+ }) as unknown as Connection
122
171
  }
123
172
 
124
173
  function dispatchCallable(query: TaggedQuery) {
@@ -260,11 +309,11 @@ const withExecuteSpan =
260
309
 
261
310
  const withUnsafeExecuteSpan =
262
311
  (
263
- unsafe: Connection["unsafe"],
312
+ unsafe: UnsafeQuery,
264
313
  options: {
265
314
  readonly spanAttributes: Record<string, unknown>
266
315
  },
267
- ): Connection["unsafe"] =>
316
+ ): UnsafeQuery =>
268
317
  <A extends object = SqlRow>(
269
318
  query: string,
270
319
  values?: Array<unknown>,
@@ -299,11 +348,7 @@ const withTransactionSpan =
299
348
  Effect.flatMap(
300
349
  Effect.exit(
301
350
  Effect.withParentSpan(
302
- Effect.locally(
303
- withTransaction(self),
304
- currentTransactionDepth,
305
- depth + 1,
306
- ),
351
+ Effect.locally(withTransaction(self), currentTransactionDepth, depth + 1),
307
352
  span,
308
353
  ),
309
354
  ),
@@ -4,7 +4,7 @@ import * as FiberRef from "effect/FiberRef"
4
4
  import * as GlobalValue from "effect/GlobalValue"
5
5
  import * as Layer from "effect/Layer"
6
6
  import * as Option from "effect/Option"
7
- import * as Sql from "../SqlClient.ts"
7
+ import * as SqlClient from "../SqlClient.ts"
8
8
  import * as Values from "../../Values.ts"
9
9
 
10
10
  const errorCode = (error: unknown): string => {
@@ -13,14 +13,14 @@ const errorCode = (error: unknown): string => {
13
13
  return e?.code ?? "UNKNOWN"
14
14
  }
15
15
 
16
- const wrapError = (error: unknown): Sql.SqlError =>
17
- new Sql.SqlError({
16
+ const wrapError = (error: unknown): SqlClient.SqlError =>
17
+ new SqlClient.SqlError({
18
18
  code: errorCode(error),
19
19
  message: error instanceof Error ? error.message : String(error),
20
20
  cause: error,
21
21
  })
22
22
 
23
- const wrap = <T>(fn: () => PromiseLike<T>): Effect.Effect<T, Sql.SqlError> =>
23
+ const wrap = <T>(fn: () => PromiseLike<T>): Effect.Effect<T, SqlClient.SqlError> =>
24
24
  Effect.tryPromise({ try: () => Promise.resolve(fn()), catch: wrapError })
25
25
 
26
26
  interface TransactionConnection {
@@ -35,18 +35,20 @@ const currentTransaction = GlobalValue.globalValue(
35
35
 
36
36
  const makeRun =
37
37
  (bunSql: any) =>
38
- <T>(fn: (conn: any) => PromiseLike<T>): Effect.Effect<T, Sql.SqlError> =>
38
+ <T>(fn: (conn: any) => PromiseLike<T>): Effect.Effect<T, SqlClient.SqlError> =>
39
39
  Effect.flatMap(FiberRef.get(currentTransaction), (txOpt) =>
40
40
  wrap(() => fn(Option.isSome(txOpt) ? txOpt.value.conn : bunSql)),
41
41
  )
42
42
 
43
- const detectDialect = (bunSql: any): Sql.DialectConfig => {
43
+ const detectDialect = (bunSql: any): SqlClient.DialectConfig => {
44
44
  const adapter = bunSql?.options?.adapter ?? bunSql?.adapter
45
- if (adapter === "sqlite") return Sql.sqliteDialect
46
- return Sql.postgresDialect
45
+ if (adapter === "sqlite") return SqlClient.sqliteDialect
46
+ return SqlClient.postgresDialect
47
47
  }
48
48
 
49
- const makeSpanAttributes = (config: ConstructorParameters<typeof Bun.SQL>[0]): Record<string, unknown> => {
49
+ const makeSpanAttributes = (
50
+ config: ConstructorParameters<typeof Bun.SQL>[0],
51
+ ): Record<string, unknown> => {
50
52
  const c = config as Record<string, unknown>
51
53
  const adapter = c.adapter
52
54
  if (adapter === "sqlite") {
@@ -77,8 +79,8 @@ const makeSpanAttributes = (config: ConstructorParameters<typeof Bun.SQL>[0]): R
77
79
  }
78
80
 
79
81
  const makeTaggedTemplate = (
80
- run: <T>(fn: (conn: any) => PromiseLike<T>) => Effect.Effect<T, Sql.SqlError>,
81
- dialect: Sql.DialectConfig,
82
+ run: <T>(fn: (conn: any) => PromiseLike<T>) => Effect.Effect<T, SqlClient.SqlError>,
83
+ dialect: SqlClient.DialectConfig,
82
84
  ) => {
83
85
  const unsafeFn = <T = any>(query: string, values?: Array<unknown>) =>
84
86
  run<ReadonlyArray<T>>((conn) => conn.unsafe(query, values))
@@ -86,9 +88,9 @@ const makeTaggedTemplate = (
86
88
  return <T = any>(
87
89
  strings: TemplateStringsArray,
88
90
  ...values: Array<unknown>
89
- ): Effect.Effect<ReadonlyArray<T>, Sql.SqlError> => {
90
- if (Sql.hasFragments(values)) {
91
- const compiled = Sql.interpolate(dialect, strings, values)
91
+ ): Effect.Effect<ReadonlyArray<T>, SqlClient.SqlError> => {
92
+ if (SqlClient.hasFragments(values)) {
93
+ const compiled = SqlClient.interpolate(dialect, strings, values)
92
94
  return unsafeFn<T>(compiled.sql, compiled.parameters)
93
95
  }
94
96
  return run<ReadonlyArray<T>>((conn) => conn(strings, ...values))
@@ -96,19 +98,19 @@ const makeTaggedTemplate = (
96
98
  }
97
99
 
98
100
  const makeQuery = (
99
- run: <T>(fn: (conn: any) => PromiseLike<T>) => Effect.Effect<T, Sql.SqlError>,
100
- dialect: Sql.DialectConfig,
101
+ run: <T>(fn: (conn: any) => PromiseLike<T>) => Effect.Effect<T, SqlClient.SqlError>,
102
+ dialect: SqlClient.DialectConfig,
101
103
  spanAttributes: ReadonlyArray<readonly [string, unknown]>,
102
- ): Sql.Connection => {
104
+ ): SqlClient.Connection => {
103
105
  const query = makeTaggedTemplate(run, dialect)
104
- const unsafe: Sql.Connection["unsafe"] = <T = any>(query: string, values?: Array<unknown>) =>
106
+ const unsafe: SqlClient.UnsafeQuery = <T = any>(query: string, values?: Array<unknown>) =>
105
107
  run<ReadonlyArray<T>>((conn) => conn.unsafe(query, values))
106
- return Sql.connection(query, unsafe, { spanAttributes, dialect })
108
+ return SqlClient.connection(query, unsafe, { spanAttributes, dialect })
107
109
  }
108
110
 
109
111
  const makeWithTransaction =
110
112
  (bunSql: any) =>
111
- <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, Sql.SqlError | E, R> =>
113
+ <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, SqlClient.SqlError | E, R> =>
112
114
  Effect.uninterruptibleMask((restore) =>
113
115
  Effect.flatMap(FiberRef.get(currentTransaction), (txOpt) => {
114
116
  if (Option.isSome(txOpt)) {
@@ -162,9 +164,9 @@ export const layer = (
162
164
  config: ConstructorParameters<typeof Bun.SQL>[0] & {
163
165
  readonly spanAttributes?: Record<string, unknown>
164
166
  },
165
- ): Layer.Layer<Sql.SqlClient, Sql.SqlError> =>
167
+ ): Layer.Layer<SqlClient.SqlClient, SqlClient.SqlError> =>
166
168
  Layer.scoped(
167
- Sql.SqlClient,
169
+ SqlClient.SqlClient,
168
170
  Effect.map(
169
171
  Effect.acquireRelease(
170
172
  Effect.try({
@@ -175,16 +177,16 @@ export const layer = (
175
177
  const run = makeRun(bunSql)
176
178
  const dialect = detectDialect(bunSql)
177
179
  const spanAttributes = Object.entries(makeSpanAttributes(config))
178
- const unsafeFn: Sql.Connection["unsafe"] = <T = any>(
180
+ const unsafeFn: SqlClient.UnsafeQuery = <T = any>(
179
181
  query: string,
180
182
  values?: Array<unknown>,
181
183
  ) => run<ReadonlyArray<T>>((conn) => conn.unsafe(query, values))
182
184
  const query = makeTaggedTemplate(run, dialect)
183
- const use: Sql.SqlClient["use"] = (fn) =>
185
+ const use: SqlClient.SqlClient["use"] = (fn) =>
184
186
  Effect.tryPromise({ try: () => Promise.resolve(fn(bunSql)), catch: wrapError })
185
187
 
186
188
  return {
187
- client: Sql.make({
189
+ client: SqlClient.make({
188
190
  query,
189
191
  unsafe: unsafeFn,
190
192
  withTransaction: makeWithTransaction(bunSql),
@@ -194,7 +196,7 @@ export const layer = (
194
196
  wrap(() => bunSql.reserve()),
195
197
  (reserved: any) => Effect.sync(() => reserved.release()),
196
198
  ).pipe(
197
- Effect.map((reserved: any): Sql.Connection => {
199
+ Effect.map((reserved: any): SqlClient.Connection => {
198
200
  const reservedRun = <T>(fn: (conn: any) => PromiseLike<T>) =>
199
201
  wrap<T>(() => fn(reserved))
200
202
  return makeQuery(reservedRun, dialect, spanAttributes)
package/src/sql/index.ts CHANGED
@@ -1 +1,2 @@
1
+ export * as SqlCache from "./SqlCache.ts"
1
2
  export * as SqlClient from "./SqlClient.ts"
@@ -1,3 +1,4 @@
1
+ import * as Config from "effect/Config"
1
2
  import * as Effect from "effect/Effect"
2
3
  import * as Exit from "effect/Exit"
3
4
  import * as FiberRef from "effect/FiberRef"
@@ -5,10 +6,21 @@ import * as GlobalValue from "effect/GlobalValue"
5
6
  import * as Layer from "effect/Layer"
6
7
  import * as Option from "effect/Option"
7
8
  import type * as Libsql from "@libsql/client"
8
- import * as Sql from "../SqlClient.ts"
9
+ import * as SqlClient from "../SqlClient.ts"
9
10
  import * as Values from "../../Values.ts"
10
11
 
12
+ type ConfigOrValue<T> = T | Config.Config<T>
13
+
11
14
  export interface LibsqlConfig {
15
+ readonly url?: ConfigOrValue<string>
16
+ readonly authToken?: ConfigOrValue<string>
17
+ readonly syncUrl?: ConfigOrValue<string>
18
+ readonly syncInterval?: ConfigOrValue<number>
19
+ readonly encryptionKey?: ConfigOrValue<string>
20
+ readonly spanAttributes?: Record<string, unknown>
21
+ }
22
+
23
+ interface ResolvedConfig {
12
24
  readonly url: string
13
25
  readonly authToken?: string
14
26
  readonly syncUrl?: string
@@ -17,18 +29,25 @@ export interface LibsqlConfig {
17
29
  readonly spanAttributes?: Record<string, unknown>
18
30
  }
19
31
 
20
- const wrapError = (error: unknown): Sql.SqlError =>
21
- new Sql.SqlError({
32
+ const resolveField = <T>(value: ConfigOrValue<T> | undefined) =>
33
+ value === undefined
34
+ ? Effect.succeed(undefined as T | undefined)
35
+ : Config.isConfig(value)
36
+ ? Effect.map(value, (v): T | undefined => v)
37
+ : Effect.succeed(value as T | undefined)
38
+
39
+ const wrapError = (error: unknown): SqlClient.SqlError =>
40
+ new SqlClient.SqlError({
22
41
  code: (error as any)?.code ?? "UNKNOWN",
23
42
  message: error instanceof Error ? error.message : String(error),
24
43
  cause: error,
25
44
  })
26
45
 
27
- const wrap = <T>(fn: () => PromiseLike<T>): Effect.Effect<T, Sql.SqlError> =>
46
+ const wrap = <T>(fn: () => PromiseLike<T>): Effect.Effect<T, SqlClient.SqlError> =>
28
47
  Effect.tryPromise({ try: () => Promise.resolve(fn()), catch: wrapError })
29
48
 
30
- const dialect = Sql.sqliteDialect
31
- const makeSpanAttributes = (config: LibsqlConfig): ReadonlyArray<readonly [string, unknown]> => {
49
+ const dialect = SqlClient.sqliteDialect
50
+ const makeSpanAttributes = (config: ResolvedConfig): ReadonlyArray<readonly [string, unknown]> => {
32
51
  const parsed = (() => {
33
52
  try {
34
53
  return new URL(config.url)
@@ -41,7 +60,7 @@ const makeSpanAttributes = (config: LibsqlConfig): ReadonlyArray<readonly [strin
41
60
 
42
61
  return Object.entries(
43
62
  Values.compact({
44
- ...(config.spanAttributes ?? {}),
63
+ ...config.spanAttributes,
45
64
  "db.system.name": "sqlite",
46
65
  "db.namespace": dbFromPath,
47
66
  "server.address": parsed?.hostname,
@@ -62,7 +81,7 @@ const executeQuery = <T>(
62
81
  client: Libsql.Client,
63
82
  sql: string,
64
83
  args: Array<unknown>,
65
- ): Effect.Effect<ReadonlyArray<T>, Sql.SqlError> =>
84
+ ): Effect.Effect<ReadonlyArray<T>, SqlClient.SqlError> =>
66
85
  wrap(() => client.execute({ sql, args })).pipe(Effect.map(resultSetToRows<T>))
67
86
 
68
87
  interface TransactionConnection {
@@ -89,9 +108,9 @@ const makeTaggedTemplate = (client: Libsql.Client) => {
89
108
  return <T = any>(
90
109
  strings: TemplateStringsArray,
91
110
  ...values: Array<unknown>
92
- ): Effect.Effect<ReadonlyArray<T>, Sql.SqlError> => {
93
- if (Sql.hasFragments(values)) {
94
- const compiled = Sql.interpolate(dialect, strings, values)
111
+ ): Effect.Effect<ReadonlyArray<T>, SqlClient.SqlError> => {
112
+ if (SqlClient.hasFragments(values)) {
113
+ const compiled = SqlClient.interpolate(dialect, strings, values)
95
114
  return unsafeFn<T>(compiled.sql, compiled.parameters)
96
115
  }
97
116
 
@@ -104,16 +123,16 @@ const makeTaggedTemplate = (client: Libsql.Client) => {
104
123
  const makeQuery = (
105
124
  client: Libsql.Client,
106
125
  spanAttributes: ReadonlyArray<readonly [string, unknown]>,
107
- ): Sql.Connection => {
126
+ ): SqlClient.Connection => {
108
127
  const query = makeTaggedTemplate(client)
109
- const unsafe: Sql.Connection["unsafe"] = <T = any>(query: string, values?: Array<unknown>) =>
128
+ const unsafe: SqlClient.UnsafeQuery = <T = any>(query: string, values?: Array<unknown>) =>
110
129
  executeQuery<T>(client, query, values ?? [])
111
- return Sql.connection(query, unsafe, { spanAttributes, dialect })
130
+ return SqlClient.connection(query, unsafe, { spanAttributes, dialect })
112
131
  }
113
132
 
114
133
  const makeWithTransaction =
115
134
  (client: Libsql.Client) =>
116
- <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, Sql.SqlError | E, R> =>
135
+ <A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, SqlClient.SqlError | E, R> =>
117
136
  Effect.uninterruptibleMask((restore) =>
118
137
  Effect.flatMap(FiberRef.get(currentTransaction), (txOpt) => {
119
138
  if (Option.isSome(txOpt)) {
@@ -148,31 +167,46 @@ const makeWithTransaction =
148
167
  }),
149
168
  )
150
169
 
151
- export const layer = (config: LibsqlConfig): Layer.Layer<Sql.SqlClient, Sql.SqlError> =>
170
+ export const layer = (config?: LibsqlConfig) =>
152
171
  Layer.scoped(
153
- Sql.SqlClient,
154
- Effect.map(
155
- Effect.acquireRelease(
172
+ SqlClient.SqlClient,
173
+ Effect.gen(function* () {
174
+ const envUrl = Option.getOrUndefined(
175
+ yield* Config.option(Config.string("TURSO_DATABASE_URL")),
176
+ )
177
+ const envAuthToken = Option.getOrUndefined(
178
+ yield* Config.option(Config.string("TURSO_AUTH_TOKEN")),
179
+ )
180
+ const configUrl = yield* resolveField(config?.url)
181
+ const configAuthToken = yield* resolveField(config?.authToken)
182
+ const resolved: ResolvedConfig = {
183
+ url: configUrl ?? envUrl ?? ":memory:",
184
+ authToken: configAuthToken ?? envAuthToken,
185
+ syncUrl: yield* resolveField(config?.syncUrl),
186
+ syncInterval: yield* resolveField(config?.syncInterval),
187
+ encryptionKey: yield* resolveField(config?.encryptionKey),
188
+ spanAttributes: config?.spanAttributes,
189
+ }
190
+ const handle = yield* Effect.acquireRelease(
156
191
  wrap(() => loadLibsql()).pipe(
157
192
  Effect.map((libsql) => {
158
- const client = libsql.createClient(config)
159
- const spanAttributes = makeSpanAttributes(config)
193
+ const client = libsql.createClient(resolved)
194
+ const spanAttributes = makeSpanAttributes(resolved)
160
195
  const query = makeTaggedTemplate(client)
161
- const unsafeFn: Sql.Connection["unsafe"] = <T = any>(
196
+ const unsafeFn: SqlClient.UnsafeQuery = <T = any>(
162
197
  query: string,
163
198
  values?: Array<unknown>,
164
199
  ) => executeQuery<T>(client, query, values ?? [])
165
- const use: Sql.SqlClient["use"] = (fn) =>
200
+ const use: SqlClient.SqlClient["use"] = (fn) =>
166
201
  Effect.tryPromise({ try: () => Promise.resolve(fn(client)), catch: wrapError })
167
202
 
168
203
  return {
169
- client: Sql.make({
204
+ client: SqlClient.make({
170
205
  query,
171
206
  unsafe: unsafeFn,
172
207
  withTransaction: makeWithTransaction(client),
173
208
  spanAttributes,
174
209
  dialect,
175
- // libsql has no connection pool — reuse the existing client
176
210
  reserve: Effect.succeed(makeQuery(client, spanAttributes)),
177
211
  use,
178
212
  }),
@@ -181,7 +215,7 @@ export const layer = (config: LibsqlConfig): Layer.Layer<Sql.SqlClient, Sql.SqlE
181
215
  }),
182
216
  ),
183
217
  (handle) => handle.close.pipe(Effect.orDie),
184
- ),
185
- (handle) => handle.client,
186
- ),
218
+ )
219
+ return handle.client
220
+ }),
187
221
  )