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,505 @@
1
+ import * as Context from "effect/Context"
2
+ import * as Effect from "effect/Effect"
3
+ import * as GlobalValue from "effect/GlobalValue"
4
+ import * as Layer from "effect/Layer"
5
+ import * as MutableRef from "effect/MutableRef"
6
+ import * as PubSub from "effect/PubSub"
7
+ import * as Schema from "effect/Schema"
8
+ import * as Unique from "../Unique.ts"
9
+ import * as SqlClient from "../sql/SqlClient.ts"
10
+
11
+ export let store: TowerStoreShape = GlobalValue.globalValue(
12
+ Symbol.for("effect-start/TowerStore"),
13
+ () => ({
14
+ prefix: "/tower",
15
+ sql: undefined as unknown as SqlClient.SqlClient,
16
+ events: Effect.runSync(PubSub.unbounded<TowerEvent>()),
17
+ spanCapacity: 1000,
18
+ logCapacity: 5000,
19
+ errorCapacity: 1000,
20
+ metrics: [] as Array<TowerMetricSnapshot>,
21
+ process: undefined as ProcessStats | undefined,
22
+ }),
23
+ )
24
+
25
+ const nextPackedId = (): bigint => Unique.snowflake()
26
+
27
+ export const nextLogId = () => nextPackedId()
28
+
29
+ export const nextErrorId = () => nextPackedId()
30
+
31
+ export const nextSpanId = () => nextPackedId()
32
+
33
+ export const nextTraceId = () => nextPackedId()
34
+
35
+ export interface TowerSpan {
36
+ readonly spanId: bigint
37
+ readonly traceId: bigint
38
+ readonly fiberId: string | undefined
39
+ readonly name: string
40
+ readonly kind: string
41
+ readonly parentSpanId: bigint | undefined
42
+ startTime: bigint
43
+ endTime: bigint | undefined
44
+ durationMs: number | undefined
45
+ status: "started" | "ok" | "error"
46
+ readonly attributes: Record<string, unknown>
47
+ readonly events: Array<{ name: string; startTime: bigint; attributes?: Record<string, unknown> }>
48
+ }
49
+
50
+ export interface TowerLog {
51
+ readonly id: bigint
52
+ readonly level: "DEBUG" | "INFO" | "WARNING" | "ERROR" | "FATAL"
53
+ readonly message: string
54
+ readonly fiberId: string
55
+ readonly cause: string | undefined
56
+ readonly spans: Array<string>
57
+ readonly annotations: Record<string, unknown>
58
+ }
59
+
60
+ export interface ProcessStats {
61
+ readonly pid: number
62
+ readonly uptime: number
63
+ readonly memory: {
64
+ readonly rss: number
65
+ readonly heapUsed: number
66
+ readonly heapTotal: number
67
+ readonly external: number
68
+ readonly arrayBuffers: number
69
+ }
70
+ readonly cpu: { readonly user: number; readonly system: number }
71
+ readonly resourceUsage: {
72
+ readonly maxRSS: number
73
+ readonly minorPageFault: number
74
+ readonly majorPageFault: number
75
+ readonly fsRead: number
76
+ readonly fsWrite: number
77
+ readonly voluntaryContextSwitches: number
78
+ readonly involuntaryContextSwitches: number
79
+ }
80
+ readonly system: {
81
+ readonly loadavg: readonly [number, number, number]
82
+ readonly freemem: number
83
+ readonly totalmem: number
84
+ readonly cpuCount: number
85
+ readonly platform: string
86
+ readonly arch: string
87
+ }
88
+ }
89
+
90
+ export interface TowerErrorDetail {
91
+ readonly kind: "fail" | "die"
92
+ readonly tag: string | undefined
93
+ readonly message: string
94
+ readonly properties: Record<string, unknown>
95
+ readonly span: string | undefined
96
+ }
97
+
98
+ export interface TowerError {
99
+ readonly id: bigint
100
+ readonly fiberId: string
101
+ readonly interrupted: boolean
102
+ readonly prettyPrint: string
103
+ readonly details: Array<TowerErrorDetail>
104
+ }
105
+
106
+ export interface TowerMetricSnapshot {
107
+ readonly name: string
108
+ readonly type: "counter" | "gauge" | "histogram" | "summary" | "frequency"
109
+ readonly value: unknown
110
+ readonly tags: ReadonlyArray<{ key: string; value: string }>
111
+ readonly timestamp: number
112
+ }
113
+
114
+ export type TowerEvent =
115
+ | { readonly _tag: "SpanStart"; readonly span: TowerSpan }
116
+ | { readonly _tag: "SpanEnd"; readonly span: TowerSpan }
117
+ | { readonly _tag: "Log"; readonly log: TowerLog }
118
+ | { readonly _tag: "Error"; readonly error: TowerError }
119
+ | { readonly _tag: "MetricsSnapshot"; readonly metrics: Array<TowerMetricSnapshot> }
120
+ | { readonly _tag: "ProcessSnapshot"; readonly stats: ProcessStats }
121
+
122
+ export interface FiberContext {
123
+ readonly spanName: string | undefined
124
+ readonly traceId: bigint | undefined
125
+ readonly annotations: Record<string, unknown>
126
+ }
127
+
128
+ export interface TowerStoreShape {
129
+ prefix: string
130
+ readonly sql: SqlClient.SqlClient
131
+ readonly events: PubSub.PubSub<TowerEvent>
132
+ readonly spanCapacity: number
133
+ readonly logCapacity: number
134
+ readonly errorCapacity: number
135
+ metrics: Array<TowerMetricSnapshot>
136
+ process: ProcessStats | undefined
137
+ }
138
+
139
+ export function fiberIdCounter(): number {
140
+ const counter = GlobalValue.globalValue(Symbol.for("effect/Fiber/Id/_fiberCounter"), () =>
141
+ MutableRef.make(0),
142
+ )
143
+ return MutableRef.get(counter)
144
+ }
145
+
146
+ export class TowerStore extends Context.Tag("effect-start/TowerStore")<
147
+ TowerStore,
148
+ TowerStoreShape
149
+ >() {}
150
+
151
+ export interface TowerStoreOptions {
152
+ readonly spanCapacity?: number
153
+ readonly logCapacity?: number
154
+ readonly errorCapacity?: number
155
+ }
156
+
157
+ const DDL = [
158
+ `CREATE TABLE IF NOT EXISTS Span (
159
+ spanId INTEGER PRIMARY KEY,
160
+ traceId INTEGER NOT NULL,
161
+ fiberId TEXT,
162
+ name TEXT NOT NULL,
163
+ kind TEXT NOT NULL,
164
+ parentSpanId INTEGER,
165
+ startTime TEXT NOT NULL,
166
+ endTime TEXT,
167
+ durationMs REAL,
168
+ status TEXT NOT NULL,
169
+ attributes TEXT NOT NULL,
170
+ events TEXT NOT NULL
171
+ )`,
172
+ `CREATE TABLE IF NOT EXISTS Log (
173
+ id INTEGER PRIMARY KEY,
174
+ level TEXT NOT NULL,
175
+ message TEXT NOT NULL,
176
+ fiberId TEXT NOT NULL,
177
+ cause TEXT,
178
+ spans TEXT NOT NULL,
179
+ annotations TEXT NOT NULL
180
+ )`,
181
+ `CREATE TABLE IF NOT EXISTS Error (
182
+ id INTEGER PRIMARY KEY,
183
+ fiberId TEXT NOT NULL,
184
+ interrupted INTEGER NOT NULL,
185
+ prettyPrint TEXT NOT NULL,
186
+ details TEXT NOT NULL
187
+ )`,
188
+ `CREATE TABLE IF NOT EXISTS Fiber (
189
+ id TEXT PRIMARY KEY,
190
+ parentId TEXT,
191
+ spanName TEXT,
192
+ traceId INTEGER,
193
+ annotations TEXT NOT NULL
194
+ )`,
195
+ ]
196
+
197
+ export function layer(
198
+ options?: TowerStoreOptions,
199
+ ): Layer.Layer<TowerStore, SqlClient.SqlError, SqlClient.SqlClient> {
200
+ return Layer.effect(
201
+ TowerStore,
202
+ Effect.gen(function* () {
203
+ const sql = yield* SqlClient.SqlClient
204
+ for (const ddl of DDL) {
205
+ yield* sql.unsafe(ddl)
206
+ }
207
+ store = {
208
+ ...store,
209
+ sql,
210
+ spanCapacity: options?.spanCapacity ?? 1000,
211
+ logCapacity: options?.logCapacity ?? 5000,
212
+ errorCapacity: options?.errorCapacity ?? 1000,
213
+ }
214
+ return store
215
+ }),
216
+ )
217
+ }
218
+
219
+ function serializeBigint(value: unknown): unknown {
220
+ if (typeof value === "bigint") return `__bigint__${value}`
221
+ if (Array.isArray(value)) return value.map(serializeBigint)
222
+ if (value !== null && typeof value === "object") {
223
+ const out: Record<string, unknown> = {}
224
+ for (const [k, v] of Object.entries(value)) {
225
+ out[k] = serializeBigint(v)
226
+ }
227
+ return out
228
+ }
229
+ return value
230
+ }
231
+
232
+ function reviveBigint(value: unknown): unknown {
233
+ if (typeof value === "string" && value.startsWith("__bigint__")) return BigInt(value.slice(10))
234
+ if (Array.isArray(value)) return value.map(reviveBigint)
235
+ if (value !== null && typeof value === "object") {
236
+ const out: Record<string, unknown> = {}
237
+ for (const [k, v] of Object.entries(value)) {
238
+ out[k] = reviveBigint(v)
239
+ }
240
+ return out
241
+ }
242
+ return value
243
+ }
244
+
245
+ export const SpanRow = Schema.Struct({
246
+ spanId: Schema.Number,
247
+ traceId: Schema.Number,
248
+ fiberId: Schema.NullOr(Schema.String),
249
+ name: Schema.String,
250
+ kind: Schema.String,
251
+ parentSpanId: Schema.NullOr(Schema.Number),
252
+ startTime: Schema.String,
253
+ endTime: Schema.NullOr(Schema.String),
254
+ durationMs: Schema.NullOr(Schema.Number),
255
+ status: Schema.String,
256
+ attributes: Schema.String,
257
+ events: Schema.String,
258
+ })
259
+ type SpanRow = typeof SpanRow.Type
260
+
261
+ export const LogRow = Schema.Struct({
262
+ id: Schema.Number,
263
+ level: Schema.String,
264
+ message: Schema.String,
265
+ fiberId: Schema.String,
266
+ cause: Schema.NullOr(Schema.String),
267
+ spans: Schema.String,
268
+ annotations: Schema.String,
269
+ })
270
+ type LogRow = typeof LogRow.Type
271
+
272
+ export const ErrorRow = Schema.Struct({
273
+ id: Schema.Number,
274
+ fiberId: Schema.String,
275
+ interrupted: Schema.Number,
276
+ prettyPrint: Schema.String,
277
+ details: Schema.String,
278
+ })
279
+ type ErrorRow = typeof ErrorRow.Type
280
+
281
+ export const FiberRow = Schema.Struct({
282
+ id: Schema.String,
283
+ parentId: Schema.NullOr(Schema.String),
284
+ spanName: Schema.NullOr(Schema.String),
285
+ traceId: Schema.NullOr(Schema.Number),
286
+ annotations: Schema.String,
287
+ })
288
+ type FiberRow = typeof FiberRow.Type
289
+
290
+ function deserializeSpan(row: SpanRow): TowerSpan {
291
+ const events = reviveBigint(JSON.parse(row.events)) as TowerSpan["events"]
292
+ return {
293
+ spanId: BigInt(row.spanId),
294
+ traceId: BigInt(row.traceId),
295
+ fiberId: row.fiberId ?? undefined,
296
+ name: row.name,
297
+ kind: row.kind,
298
+ parentSpanId: row.parentSpanId != null ? BigInt(row.parentSpanId) : undefined,
299
+ startTime: BigInt(row.startTime),
300
+ endTime: row.endTime ? BigInt(row.endTime) : undefined,
301
+ durationMs: row.durationMs ?? undefined,
302
+ status: row.status as TowerSpan["status"],
303
+ attributes: JSON.parse(row.attributes),
304
+ events,
305
+ }
306
+ }
307
+
308
+ function deserializeLog(row: LogRow): TowerLog {
309
+ return {
310
+ id: BigInt(row.id),
311
+ level: row.level as TowerLog["level"],
312
+ message: row.message,
313
+ fiberId: row.fiberId,
314
+ cause: row.cause ?? undefined,
315
+ spans: JSON.parse(row.spans),
316
+ annotations: JSON.parse(row.annotations),
317
+ }
318
+ }
319
+
320
+ function deserializeError(row: ErrorRow): TowerError {
321
+ return {
322
+ id: BigInt(row.id),
323
+ fiberId: row.fiberId,
324
+ interrupted: row.interrupted === 1,
325
+ prettyPrint: row.prettyPrint,
326
+ details: JSON.parse(row.details),
327
+ }
328
+ }
329
+
330
+ export function insertSpan(sql: SqlClient.SqlClient, span: TowerSpan) {
331
+ return sql`INSERT INTO Span ${sql({
332
+ spanId: span.spanId,
333
+ traceId: span.traceId,
334
+ fiberId: span.fiberId ?? null,
335
+ name: span.name,
336
+ kind: span.kind,
337
+ parentSpanId: span.parentSpanId ?? null,
338
+ startTime: span.startTime.toString(),
339
+ endTime: span.endTime?.toString() ?? null,
340
+ durationMs: span.durationMs ?? null,
341
+ status: span.status,
342
+ attributes: JSON.stringify(span.attributes),
343
+ events: JSON.stringify(serializeBigint(span.events)),
344
+ })}`
345
+ }
346
+
347
+ export function updateSpan(sql: SqlClient.SqlClient, span: TowerSpan) {
348
+ return sql`UPDATE Span SET
349
+ endTime = ${span.endTime?.toString() ?? null},
350
+ durationMs = ${span.durationMs ?? null},
351
+ status = ${span.status},
352
+ attributes = ${JSON.stringify(span.attributes)},
353
+ events = ${JSON.stringify(serializeBigint(span.events))}
354
+ WHERE spanId = ${span.spanId}`
355
+ }
356
+
357
+ export function insertLog(sql: SqlClient.SqlClient, log: TowerLog) {
358
+ return sql`INSERT INTO Log ${sql({
359
+ id: log.id,
360
+ level: log.level,
361
+ message: log.message,
362
+ fiberId: log.fiberId,
363
+ cause: log.cause ?? null,
364
+ spans: JSON.stringify(log.spans),
365
+ annotations: JSON.stringify(log.annotations),
366
+ })}`
367
+ }
368
+
369
+ export function insertError(sql: SqlClient.SqlClient, error: TowerError) {
370
+ return sql`INSERT INTO Error ${sql({
371
+ id: error.id,
372
+ fiberId: error.fiberId,
373
+ interrupted: error.interrupted ? 1 : 0,
374
+ prettyPrint: error.prettyPrint,
375
+ details: JSON.stringify(error.details),
376
+ })}`
377
+ }
378
+
379
+ export function upsertFiber(
380
+ sql: SqlClient.SqlClient,
381
+ id: string,
382
+ parentId: string | undefined,
383
+ spanName: string | undefined,
384
+ traceId: bigint | undefined,
385
+ annotations: Record<string, unknown>,
386
+ ) {
387
+ return sql`INSERT OR REPLACE INTO Fiber ${sql({
388
+ id,
389
+ parentId: parentId ?? null,
390
+ spanName: spanName ?? null,
391
+ traceId: traceId ?? null,
392
+ annotations: JSON.stringify(annotations),
393
+ })}`
394
+ }
395
+
396
+ export function evict(sql: SqlClient.SqlClient, table: string, capacity: number) {
397
+ return Effect.gen(function* () {
398
+ const [{ cnt }] = yield* sql<{ cnt: number }>`SELECT count(*) as cnt FROM ${sql(table)}`
399
+ if (cnt > capacity) {
400
+ const excess = cnt - capacity
401
+ yield* sql`DELETE FROM ${sql(table)} WHERE rowid IN (SELECT rowid FROM ${sql(table)} ORDER BY rowid LIMIT ${excess})`
402
+ }
403
+ })
404
+ }
405
+
406
+ export function runWrite(effect: Effect.Effect<unknown, SqlClient.SqlError>) {
407
+ writeQueue = writeQueue
408
+ .then(() => Effect.runPromise(Effect.withTracerEnabled(effect, false)).then(() => undefined))
409
+ .catch(() => undefined)
410
+ }
411
+
412
+ let writeQueue = Promise.resolve<void>(undefined)
413
+
414
+ const noTrace = <A, E>(effect: Effect.Effect<A, E>): Effect.Effect<A, E> =>
415
+ Effect.withTracerEnabled(effect, false)
416
+
417
+ export function allSpans(sql: SqlClient.SqlClient) {
418
+ return noTrace(
419
+ Effect.map(sql<SpanRow>`SELECT * FROM Span ORDER BY rowid`, (rows) =>
420
+ rows.map(deserializeSpan),
421
+ ),
422
+ )
423
+ }
424
+
425
+ export function allLogs(sql: SqlClient.SqlClient) {
426
+ return noTrace(
427
+ Effect.map(sql<LogRow>`SELECT * FROM Log ORDER BY rowid`, (rows) => rows.map(deserializeLog)),
428
+ )
429
+ }
430
+
431
+ export function allErrors(sql: SqlClient.SqlClient) {
432
+ return noTrace(
433
+ Effect.map(sql<ErrorRow>`SELECT * FROM Error ORDER BY rowid`, (rows) =>
434
+ rows.map(deserializeError),
435
+ ),
436
+ )
437
+ }
438
+
439
+ export function spansByTraceId(sql: SqlClient.SqlClient, traceId: bigint) {
440
+ return noTrace(
441
+ Effect.map(sql<SpanRow>`SELECT * FROM Span WHERE traceId = ${traceId} ORDER BY rowid`, (rows) =>
442
+ rows.map(deserializeSpan),
443
+ ),
444
+ )
445
+ }
446
+
447
+ export function spansByFiberId(sql: SqlClient.SqlClient, fiberId: string) {
448
+ return noTrace(
449
+ Effect.map(sql<SpanRow>`SELECT * FROM Span WHERE fiberId = ${fiberId} ORDER BY rowid`, (rows) =>
450
+ rows.map(deserializeSpan),
451
+ ),
452
+ )
453
+ }
454
+
455
+ export function logsByFiberId(sql: SqlClient.SqlClient, fiberId: string) {
456
+ return noTrace(
457
+ Effect.map(sql<LogRow>`SELECT * FROM Log WHERE fiberId = ${fiberId} ORDER BY rowid`, (rows) =>
458
+ rows.map(deserializeLog),
459
+ ),
460
+ )
461
+ }
462
+
463
+ export function getFiber(sql: SqlClient.SqlClient, fiberId: string) {
464
+ return noTrace(
465
+ Effect.map(sql<FiberRow>`SELECT * FROM Fiber WHERE id = ${fiberId}`, (rows) =>
466
+ rows.length > 0 ? rows[0] : undefined,
467
+ ),
468
+ )
469
+ }
470
+
471
+ export function getParentChain(sql: SqlClient.SqlClient, fiberId: string) {
472
+ return noTrace(
473
+ Effect.gen(function* () {
474
+ const chain: Array<string> = []
475
+ const visited = new Set<string>()
476
+ let current = fiberId
477
+ while (true) {
478
+ const rows = yield* sql<FiberRow>`SELECT * FROM Fiber WHERE id = ${current}`
479
+ if (rows.length === 0 || !rows[0].parentId) break
480
+ const parentId = rows[0].parentId
481
+ if (visited.has(parentId)) break
482
+ chain.push(parentId)
483
+ visited.add(parentId)
484
+ current = parentId
485
+ }
486
+ return chain.reverse()
487
+ }),
488
+ )
489
+ }
490
+
491
+ export function getFiberContext(sql: SqlClient.SqlClient, fiberId: string) {
492
+ return noTrace(
493
+ Effect.map(
494
+ sql<FiberRow>`SELECT * FROM Fiber WHERE id = ${fiberId}`,
495
+ (rows): FiberContext | undefined =>
496
+ rows.length > 0
497
+ ? {
498
+ spanName: rows[0].spanName ?? undefined,
499
+ traceId: rows[0].traceId != null ? BigInt(rows[0].traceId) : undefined,
500
+ annotations: JSON.parse(rows[0].annotations),
501
+ }
502
+ : undefined,
503
+ ),
504
+ )
505
+ }
@@ -0,0 +1,128 @@
1
+ import * as Effect from "effect/Effect"
2
+ import * as Exit from "effect/Exit"
3
+ import * as Fiber from "effect/Fiber"
4
+ import * as FiberId from "effect/FiberId"
5
+ import * as Layer from "effect/Layer"
6
+ import * as Option from "effect/Option"
7
+ import * as PubSub from "effect/PubSub"
8
+ import * as Tracer from "effect/Tracer"
9
+ import * as TowerStore from "./TowerStore.ts"
10
+
11
+ const publish = (store: TowerStore.TowerStoreShape, event: TowerStore.TowerEvent) =>
12
+ Effect.runSync(PubSub.publish(store.events, event))
13
+
14
+ const fromTracerId = (id: string): bigint | undefined => {
15
+ try {
16
+ return BigInt(id)
17
+ } catch {
18
+ return undefined
19
+ }
20
+ }
21
+
22
+ const make = (store: TowerStore.TowerStoreShape): Tracer.Tracer =>
23
+ Tracer.make({
24
+ span(name, parent, context, links, startTime, kind, options) {
25
+ const parentSpanId =
26
+ Option.isSome(parent) && parent.value._tag === "Span"
27
+ ? fromTracerId(parent.value.spanId)
28
+ : undefined
29
+ const parentTraceId = Option.isSome(parent) ? fromTracerId(parent.value.traceId) : undefined
30
+ const traceId = parentTraceId ?? TowerStore.nextTraceId()
31
+ const spanId = TowerStore.nextSpanId()
32
+
33
+ const attributes: Record<string, unknown> = {}
34
+ const currentFiber = Fiber.getCurrentFiber()
35
+ const fiberId = Option.isSome(currentFiber)
36
+ ? FiberId.threadName(currentFiber.value.id())
37
+ : undefined
38
+ if (fiberId) {
39
+ attributes["fiber.id"] = fiberId
40
+ }
41
+ if (typeof options?.captureStackTrace === "function") {
42
+ const stacktrace = options.captureStackTrace()
43
+ if (stacktrace) {
44
+ attributes["code.stacktrace"] = stacktrace
45
+ }
46
+ }
47
+
48
+ const towerSpan: TowerStore.TowerSpan = {
49
+ spanId,
50
+ traceId,
51
+ fiberId,
52
+ name,
53
+ kind,
54
+ parentSpanId,
55
+ startTime,
56
+ endTime: undefined,
57
+ durationMs: undefined,
58
+ status: "started",
59
+ attributes,
60
+ events: [],
61
+ }
62
+
63
+ TowerStore.runWrite(
64
+ Effect.zipRight(
65
+ TowerStore.insertSpan(store.sql, towerSpan),
66
+ TowerStore.evict(store.sql, "Span", store.spanCapacity),
67
+ ),
68
+ )
69
+ publish(store, { _tag: "SpanStart", span: towerSpan })
70
+
71
+ const attrs = new Map<string, unknown>(Object.entries(attributes))
72
+ const spanLinks = [...links]
73
+
74
+ const span: Tracer.Span = {
75
+ _tag: "Span",
76
+ name,
77
+ spanId: String(spanId),
78
+ traceId: String(traceId),
79
+ parent,
80
+ context,
81
+ get status(): Tracer.SpanStatus {
82
+ if (towerSpan.endTime != null) {
83
+ return {
84
+ _tag: "Ended",
85
+ startTime: towerSpan.startTime,
86
+ endTime: towerSpan.endTime,
87
+ exit: Exit.void,
88
+ }
89
+ }
90
+ return { _tag: "Started", startTime: towerSpan.startTime }
91
+ },
92
+ attributes: attrs,
93
+ links: spanLinks,
94
+ sampled: true,
95
+ kind,
96
+ end(endTime, exit) {
97
+ towerSpan.endTime = endTime
98
+ towerSpan.durationMs = Number(endTime - towerSpan.startTime) / 1_000_000
99
+ towerSpan.status = Exit.isSuccess(exit) ? "ok" : "error"
100
+ TowerStore.runWrite(TowerStore.updateSpan(store.sql, towerSpan))
101
+ publish(store, { _tag: "SpanEnd", span: towerSpan })
102
+ },
103
+ attribute(key, value) {
104
+ attrs.set(key, value)
105
+ ;(towerSpan.attributes as Record<string, unknown>)[key] = value
106
+ TowerStore.runWrite(TowerStore.updateSpan(store.sql, towerSpan))
107
+ },
108
+ event(name, startTime, attributes) {
109
+ towerSpan.events.push({ name, startTime, attributes })
110
+ TowerStore.runWrite(TowerStore.updateSpan(store.sql, towerSpan))
111
+ },
112
+ addLinks(newLinks) {
113
+ spanLinks.push(...newLinks)
114
+ },
115
+ }
116
+ return span
117
+ },
118
+ context(f) {
119
+ return f()
120
+ },
121
+ })
122
+
123
+ export const layer: Layer.Layer<never, never, TowerStore.TowerStore> = Layer.unwrapEffect(
124
+ Effect.gen(function* () {
125
+ const store = yield* TowerStore.TowerStore
126
+ return Layer.setTracer(make(store))
127
+ }),
128
+ )
@@ -0,0 +1,3 @@
1
+ export * as Tower from "./Tower.ts"
2
+ export * as TowerStore from "./TowerStore.ts"
3
+ export * as Simulation from "./Simulation.ts"