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.
- package/dist/ChildProcess.d.ts +60 -0
- package/dist/ChildProcess.d.ts.map +1 -0
- package/dist/ChildProcess.js +30 -0
- package/dist/ChildProcess.js.map +1 -0
- package/dist/Commander.d.ts +101 -0
- package/dist/Commander.d.ts.map +1 -0
- package/dist/Commander.js +327 -0
- package/dist/Commander.js.map +1 -0
- package/dist/ContentNegotiation.d.ts +13 -0
- package/dist/ContentNegotiation.d.ts.map +1 -0
- package/dist/ContentNegotiation.js +360 -0
- package/dist/ContentNegotiation.js.map +1 -0
- package/dist/Cookies.d.ts +78 -0
- package/dist/Cookies.d.ts.map +1 -0
- package/dist/Cookies.js +303 -0
- package/dist/Cookies.js.map +1 -0
- package/dist/Development.d.ts +42 -0
- package/dist/Development.d.ts.map +1 -0
- package/dist/Development.js +60 -0
- package/dist/Development.js.map +1 -0
- package/dist/Docker.d.ts +51 -0
- package/dist/Docker.d.ts.map +1 -0
- package/dist/Docker.js +88 -0
- package/dist/Docker.js.map +1 -0
- package/dist/Effectify.d.ts +210 -0
- package/dist/Effectify.d.ts.map +1 -0
- package/dist/Effectify.js +20 -0
- package/dist/Effectify.js.map +1 -0
- package/dist/Entity.d.ts +48 -0
- package/dist/Entity.d.ts.map +1 -0
- package/dist/Entity.js +235 -0
- package/dist/Entity.js.map +1 -0
- package/dist/Fetch.d.ts +50 -0
- package/dist/Fetch.d.ts.map +1 -0
- package/dist/Fetch.js +136 -0
- package/dist/Fetch.js.map +1 -0
- package/dist/FilePathPattern.d.ts +30 -0
- package/dist/FilePathPattern.d.ts.map +1 -0
- package/dist/FilePathPattern.js +87 -0
- package/dist/FilePathPattern.js.map +1 -0
- package/dist/FileRouter.d.ts +57 -0
- package/dist/FileRouter.d.ts.map +1 -0
- package/dist/FileRouter.js +149 -0
- package/dist/FileRouter.js.map +1 -0
- package/dist/FileRouterCodegen.d.ts +19 -0
- package/dist/FileRouterCodegen.d.ts.map +1 -0
- package/dist/FileRouterCodegen.js +228 -0
- package/dist/FileRouterCodegen.js.map +1 -0
- package/dist/FileSystem.d.ts +159 -0
- package/dist/FileSystem.d.ts.map +1 -0
- package/dist/FileSystem.js +71 -0
- package/dist/FileSystem.js.map +1 -0
- package/dist/GlobalLayer.d.ts +4 -0
- package/dist/GlobalLayer.d.ts.map +1 -0
- package/dist/GlobalLayer.js +51 -0
- package/dist/GlobalLayer.js.map +1 -0
- package/dist/Http.d.ts +38 -0
- package/dist/Http.d.ts.map +1 -0
- package/dist/Http.js +89 -0
- package/dist/Http.js.map +1 -0
- package/dist/PathPattern.d.ts +135 -0
- package/dist/PathPattern.d.ts.map +1 -0
- package/dist/PathPattern.js +414 -0
- package/dist/PathPattern.js.map +1 -0
- package/dist/PlatformError.d.ts +39 -0
- package/dist/PlatformError.d.ts.map +1 -0
- package/dist/PlatformError.js +26 -0
- package/dist/PlatformError.js.map +1 -0
- package/dist/PlatformRuntime.d.ts +30 -0
- package/dist/PlatformRuntime.d.ts.map +1 -0
- package/dist/PlatformRuntime.js +50 -0
- package/dist/PlatformRuntime.js.map +1 -0
- package/dist/Route.d.ts +98 -0
- package/dist/Route.d.ts.map +1 -0
- package/dist/Route.js +101 -0
- package/dist/Route.js.map +1 -0
- package/dist/RouteBody.d.ts +48 -0
- package/dist/RouteBody.d.ts.map +1 -0
- package/dist/RouteBody.js +68 -0
- package/dist/RouteBody.js.map +1 -0
- package/dist/RouteError.d.ts +99 -0
- package/dist/RouteError.d.ts.map +1 -0
- package/dist/RouteError.js +56 -0
- package/dist/RouteError.js.map +1 -0
- package/dist/RouteHook.d.ts +13 -0
- package/dist/RouteHook.d.ts.map +1 -0
- package/dist/RouteHook.js +40 -0
- package/dist/RouteHook.js.map +1 -0
- package/dist/RouteHttp.d.ts +22 -0
- package/dist/RouteHttp.d.ts.map +1 -0
- package/dist/RouteHttp.js +259 -0
- package/dist/RouteHttp.js.map +1 -0
- package/dist/RouteHttpTracer.d.ts +11 -0
- package/dist/RouteHttpTracer.d.ts.map +1 -0
- package/dist/RouteHttpTracer.js +63 -0
- package/dist/RouteHttpTracer.js.map +1 -0
- package/dist/RouteMount.d.ts +87 -0
- package/dist/RouteMount.d.ts.map +1 -0
- package/dist/RouteMount.js +64 -0
- package/dist/RouteMount.js.map +1 -0
- package/dist/RouteSchema.d.ts +87 -0
- package/dist/RouteSchema.d.ts.map +1 -0
- package/dist/RouteSchema.js +189 -0
- package/dist/RouteSchema.js.map +1 -0
- package/dist/RouteSse.d.ts +22 -0
- package/dist/RouteSse.d.ts.map +1 -0
- package/dist/RouteSse.js +80 -0
- package/dist/RouteSse.js.map +1 -0
- package/dist/RouteTree.d.ts +58 -0
- package/dist/RouteTree.d.ts.map +1 -0
- package/dist/RouteTree.js +94 -0
- package/dist/RouteTree.js.map +1 -0
- package/dist/RouteTrie.d.ts +21 -0
- package/dist/RouteTrie.d.ts.map +1 -0
- package/dist/RouteTrie.js +153 -0
- package/dist/RouteTrie.js.map +1 -0
- package/dist/SchemaExtra.d.ts +8 -0
- package/dist/SchemaExtra.d.ts.map +1 -0
- package/dist/SchemaExtra.js +75 -0
- package/dist/SchemaExtra.js.map +1 -0
- package/dist/Socket.d.ts +28 -0
- package/dist/Socket.d.ts.map +1 -0
- package/dist/Socket.js +30 -0
- package/dist/Socket.js.map +1 -0
- package/dist/SqlIntrospect.d.ts +92 -0
- package/dist/SqlIntrospect.d.ts.map +1 -0
- package/dist/SqlIntrospect.js +478 -0
- package/dist/SqlIntrospect.js.map +1 -0
- package/dist/Start.d.ts +90 -0
- package/dist/Start.d.ts.map +1 -0
- package/dist/Start.js +91 -0
- package/dist/Start.js.map +1 -0
- package/dist/StartApp.d.ts +13 -0
- package/dist/StartApp.d.ts.map +1 -0
- package/dist/StartApp.js +4 -0
- package/dist/StartApp.js.map +1 -0
- package/dist/StreamExtra.d.ts +29 -0
- package/dist/StreamExtra.d.ts.map +1 -0
- package/dist/StreamExtra.js +101 -0
- package/dist/StreamExtra.js.map +1 -0
- package/dist/System.d.ts +9 -0
- package/dist/System.d.ts.map +1 -0
- package/dist/System.js +61 -0
- package/dist/System.js.map +1 -0
- package/dist/TuplePathPattern.d.ts +10 -0
- package/dist/TuplePathPattern.d.ts.map +1 -0
- package/dist/TuplePathPattern.js +69 -0
- package/dist/TuplePathPattern.js.map +1 -0
- package/dist/Unique.d.ts +68 -0
- package/dist/Unique.d.ts.map +1 -0
- package/dist/Unique.js +225 -0
- package/dist/Unique.js.map +1 -0
- package/dist/Values.d.ts +30 -0
- package/dist/Values.d.ts.map +1 -0
- package/dist/Values.js +46 -0
- package/dist/Values.js.map +1 -0
- package/dist/bun/BunBundle.d.ts +12 -0
- package/dist/bun/BunBundle.d.ts.map +1 -0
- package/dist/bun/BunBundle.js +138 -0
- package/dist/bun/BunBundle.js.map +1 -0
- package/dist/bun/BunChildProcessSpawner.d.ts +4 -0
- package/dist/bun/BunChildProcessSpawner.d.ts.map +1 -0
- package/dist/bun/BunChildProcessSpawner.js +99 -0
- package/dist/bun/BunChildProcessSpawner.js.map +1 -0
- package/dist/bun/BunImportTrackerPlugin.d.ts +14 -0
- package/dist/bun/BunImportTrackerPlugin.d.ts.map +1 -0
- package/dist/bun/BunImportTrackerPlugin.js +70 -0
- package/dist/bun/BunImportTrackerPlugin.js.map +1 -0
- package/dist/bun/BunRoute.d.ts +49 -0
- package/dist/bun/BunRoute.d.ts.map +1 -0
- package/dist/bun/BunRoute.js +122 -0
- package/dist/bun/BunRoute.js.map +1 -0
- package/dist/bun/BunRuntime.d.ts +3 -0
- package/dist/bun/BunRuntime.d.ts.map +1 -0
- package/dist/bun/BunRuntime.js +30 -0
- package/dist/bun/BunRuntime.js.map +1 -0
- package/dist/bun/BunServer.d.ts +52 -0
- package/dist/bun/BunServer.d.ts.map +1 -0
- package/dist/bun/BunServer.js +262 -0
- package/dist/bun/BunServer.js.map +1 -0
- package/dist/bun/BunVirtualFilesPlugin.d.ts +5 -0
- package/dist/bun/BunVirtualFilesPlugin.d.ts.map +1 -0
- package/dist/bun/BunVirtualFilesPlugin.js +41 -0
- package/dist/bun/BunVirtualFilesPlugin.js.map +1 -0
- package/dist/bun/_BunEnhancedResolve.d.ts +46 -0
- package/dist/bun/_BunEnhancedResolve.d.ts.map +1 -0
- package/dist/bun/_BunEnhancedResolve.js +103 -0
- package/dist/bun/_BunEnhancedResolve.js.map +1 -0
- package/dist/bun/index.d.ts +6 -0
- package/dist/bun/index.d.ts.map +1 -0
- package/dist/bun/index.js +6 -0
- package/dist/bun/index.js.map +1 -0
- package/dist/bundler/Bundle.d.ts +62 -0
- package/dist/bundler/Bundle.d.ts.map +1 -0
- package/dist/bundler/Bundle.js +49 -0
- package/dist/bundler/Bundle.js.map +1 -0
- package/dist/bundler/BundleFiles.d.ts +14 -0
- package/dist/bundler/BundleFiles.d.ts.map +1 -0
- package/dist/bundler/BundleFiles.js +97 -0
- package/dist/bundler/BundleFiles.js.map +1 -0
- package/dist/bundler/BundleRoute.d.ts +27 -0
- package/dist/bundler/BundleRoute.d.ts.map +1 -0
- package/dist/bundler/BundleRoute.js +52 -0
- package/dist/bundler/BundleRoute.js.map +1 -0
- package/dist/client/Overlay.d.ts +3 -0
- package/dist/client/Overlay.d.ts.map +1 -0
- package/dist/client/Overlay.js +33 -0
- package/dist/client/Overlay.js.map +1 -0
- package/dist/client/ScrollState.d.ts +7 -0
- package/dist/client/ScrollState.d.ts.map +1 -0
- package/dist/client/ScrollState.js +95 -0
- package/dist/client/ScrollState.js.map +1 -0
- package/dist/client/index.d.ts +7 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +80 -0
- package/dist/client/index.js.map +1 -0
- package/dist/datastar/actions/fetch.d.ts +31 -0
- package/dist/datastar/actions/fetch.d.ts.map +1 -0
- package/dist/datastar/actions/fetch.js +404 -0
- package/dist/datastar/actions/fetch.js.map +1 -0
- package/dist/datastar/actions/peek.d.ts +2 -0
- package/dist/datastar/actions/peek.d.ts.map +1 -0
- package/dist/datastar/actions/peek.js +14 -0
- package/dist/datastar/actions/peek.js.map +1 -0
- package/dist/datastar/actions/setAll.d.ts +2 -0
- package/dist/datastar/actions/setAll.d.ts.map +1 -0
- package/dist/datastar/actions/setAll.js +13 -0
- package/dist/datastar/actions/setAll.js.map +1 -0
- package/dist/datastar/actions/toggleAll.d.ts +2 -0
- package/dist/datastar/actions/toggleAll.d.ts.map +1 -0
- package/dist/datastar/actions/toggleAll.js +13 -0
- package/dist/datastar/actions/toggleAll.js.map +1 -0
- package/dist/datastar/attributes/attr.d.ts +2 -0
- package/dist/datastar/attributes/attr.d.ts.map +1 -0
- package/dist/datastar/attributes/attr.js +49 -0
- package/dist/datastar/attributes/attr.js.map +1 -0
- package/dist/datastar/attributes/bind.d.ts +2 -0
- package/dist/datastar/attributes/bind.d.ts.map +1 -0
- package/dist/datastar/attributes/bind.js +176 -0
- package/dist/datastar/attributes/bind.js.map +1 -0
- package/dist/datastar/attributes/class.d.ts +2 -0
- package/dist/datastar/attributes/class.d.ts.map +1 -0
- package/dist/datastar/attributes/class.js +48 -0
- package/dist/datastar/attributes/class.js.map +1 -0
- package/dist/datastar/attributes/computed.d.ts +2 -0
- package/dist/datastar/attributes/computed.d.ts.map +1 -0
- package/dist/datastar/attributes/computed.js +27 -0
- package/dist/datastar/attributes/computed.js.map +1 -0
- package/dist/datastar/attributes/effect.d.ts +2 -0
- package/dist/datastar/attributes/effect.d.ts.map +1 -0
- package/dist/datastar/attributes/effect.js +10 -0
- package/dist/datastar/attributes/effect.js.map +1 -0
- package/dist/datastar/attributes/indicator.d.ts +2 -0
- package/dist/datastar/attributes/indicator.d.ts.map +1 -0
- package/dist/datastar/attributes/indicator.js +31 -0
- package/dist/datastar/attributes/indicator.js.map +1 -0
- package/dist/datastar/attributes/init.d.ts +2 -0
- package/dist/datastar/attributes/init.d.ts.map +1 -0
- package/dist/datastar/attributes/init.js +27 -0
- package/dist/datastar/attributes/init.js.map +1 -0
- package/dist/datastar/attributes/jsonSignals.d.ts +2 -0
- package/dist/datastar/attributes/jsonSignals.d.ts.map +1 -0
- package/dist/datastar/attributes/jsonSignals.js +31 -0
- package/dist/datastar/attributes/jsonSignals.js.map +1 -0
- package/dist/datastar/attributes/on.d.ts +2 -0
- package/dist/datastar/attributes/on.d.ts.map +1 -0
- package/dist/datastar/attributes/on.js +79 -0
- package/dist/datastar/attributes/on.js.map +1 -0
- package/dist/datastar/attributes/onIntersect.d.ts +2 -0
- package/dist/datastar/attributes/onIntersect.d.ts.map +1 -0
- package/dist/datastar/attributes/onIntersect.js +54 -0
- package/dist/datastar/attributes/onIntersect.js.map +1 -0
- package/dist/datastar/attributes/onInterval.d.ts +2 -0
- package/dist/datastar/attributes/onInterval.d.ts.map +1 -0
- package/dist/datastar/attributes/onInterval.js +31 -0
- package/dist/datastar/attributes/onInterval.js.map +1 -0
- package/dist/datastar/attributes/onSignalPatch.d.ts +2 -0
- package/dist/datastar/attributes/onSignalPatch.d.ts.map +1 -0
- package/dist/datastar/attributes/onSignalPatch.js +43 -0
- package/dist/datastar/attributes/onSignalPatch.js.map +1 -0
- package/dist/datastar/attributes/ref.d.ts +2 -0
- package/dist/datastar/attributes/ref.d.ts.map +1 -0
- package/dist/datastar/attributes/ref.js +11 -0
- package/dist/datastar/attributes/ref.js.map +1 -0
- package/dist/datastar/attributes/show.d.ts +2 -0
- package/dist/datastar/attributes/show.d.ts.map +1 -0
- package/dist/datastar/attributes/show.js +32 -0
- package/dist/datastar/attributes/show.js.map +1 -0
- package/dist/datastar/attributes/signals.d.ts +2 -0
- package/dist/datastar/attributes/signals.d.ts.map +1 -0
- package/dist/datastar/attributes/signals.js +18 -0
- package/dist/datastar/attributes/signals.js.map +1 -0
- package/dist/datastar/attributes/style.d.ts +2 -0
- package/dist/datastar/attributes/style.d.ts.map +1 -0
- package/dist/datastar/attributes/style.js +51 -0
- package/dist/datastar/attributes/style.js.map +1 -0
- package/dist/datastar/attributes/text.d.ts +2 -0
- package/dist/datastar/attributes/text.d.ts.map +1 -0
- package/dist/datastar/attributes/text.js +27 -0
- package/dist/datastar/attributes/text.js.map +1 -0
- package/dist/datastar/engine.d.ts +163 -0
- package/dist/datastar/engine.d.ts.map +1 -0
- package/dist/datastar/engine.js +1000 -0
- package/dist/datastar/engine.js.map +1 -0
- package/dist/datastar/index.d.ts +25 -0
- package/dist/datastar/index.d.ts.map +1 -0
- package/dist/datastar/index.js +25 -0
- package/dist/datastar/index.js.map +1 -0
- package/dist/datastar/utils.d.ts +52 -0
- package/dist/datastar/utils.d.ts.map +1 -0
- package/dist/datastar/utils.js +203 -0
- package/dist/datastar/utils.js.map +1 -0
- package/dist/datastar/watchers/patchElements.d.ts +2 -0
- package/dist/datastar/watchers/patchElements.d.ts.map +1 -0
- package/dist/datastar/watchers/patchElements.js +398 -0
- package/dist/datastar/watchers/patchElements.js.map +1 -0
- package/dist/datastar/watchers/patchSignals.d.ts +2 -0
- package/dist/datastar/watchers/patchSignals.d.ts.map +1 -0
- package/dist/datastar/watchers/patchSignals.js +15 -0
- package/dist/datastar/watchers/patchSignals.js.map +1 -0
- package/dist/experimental/EncryptedCookies.d.ts +49 -0
- package/dist/experimental/EncryptedCookies.d.ts.map +1 -0
- package/dist/experimental/EncryptedCookies.js +213 -0
- package/dist/experimental/EncryptedCookies.js.map +1 -0
- package/dist/experimental/index.d.ts +2 -0
- package/dist/experimental/index.d.ts.map +1 -0
- package/dist/experimental/index.js +2 -0
- package/dist/experimental/index.js.map +1 -0
- package/dist/hyper/Hyper.d.ts +26 -0
- package/dist/hyper/Hyper.d.ts.map +1 -0
- package/dist/hyper/Hyper.js +24 -0
- package/dist/hyper/Hyper.js.map +1 -0
- package/dist/hyper/HyperHtml.d.ts +24 -0
- package/dist/hyper/HyperHtml.d.ts.map +1 -0
- package/dist/hyper/HyperHtml.js +153 -0
- package/dist/hyper/HyperHtml.js.map +1 -0
- package/dist/hyper/HyperHtml.test.d.ts +2 -0
- package/dist/hyper/HyperHtml.test.d.ts.map +1 -0
- package/dist/hyper/HyperHtml.test.js +283 -0
- package/dist/hyper/HyperHtml.test.js.map +1 -0
- package/dist/hyper/HyperNode.d.ts +15 -0
- package/dist/hyper/HyperNode.d.ts.map +1 -0
- package/dist/hyper/HyperNode.js +12 -0
- package/dist/hyper/HyperNode.js.map +1 -0
- package/dist/hyper/HyperRoute.d.ts +9 -0
- package/dist/hyper/HyperRoute.d.ts.map +1 -0
- package/dist/hyper/HyperRoute.js +33 -0
- package/dist/hyper/HyperRoute.js.map +1 -0
- package/dist/hyper/HyperRoute.test.d.ts +2 -0
- package/dist/hyper/HyperRoute.test.d.ts.map +1 -0
- package/dist/hyper/HyperRoute.test.js +86 -0
- package/dist/hyper/HyperRoute.test.js.map +1 -0
- package/dist/hyper/html.d.ts +11 -0
- package/dist/hyper/html.d.ts.map +1 -0
- package/dist/hyper/html.js +31 -0
- package/dist/hyper/html.js.map +1 -0
- package/dist/hyper/index.d.ts +7 -0
- package/dist/hyper/index.d.ts.map +1 -0
- package/dist/hyper/index.js +6 -0
- package/dist/hyper/index.js.map +1 -0
- package/dist/hyper/jsx-runtime.d.ts +8 -0
- package/dist/hyper/jsx-runtime.d.ts.map +1 -0
- package/dist/hyper/jsx-runtime.js +9 -0
- package/dist/hyper/jsx-runtime.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/lint/plugin.d.ts +121 -0
- package/dist/lint/plugin.d.ts.map +1 -0
- package/dist/lint/plugin.js +537 -0
- package/dist/lint/plugin.js.map +1 -0
- package/dist/node/NodeFileSystem.d.ts +8 -0
- package/dist/node/NodeFileSystem.d.ts.map +1 -0
- package/dist/node/NodeFileSystem.js +411 -0
- package/dist/node/NodeFileSystem.js.map +1 -0
- package/dist/node/NodeUtils.d.ts +3 -0
- package/dist/node/NodeUtils.d.ts.map +1 -0
- package/dist/node/NodeUtils.js +21 -0
- package/dist/node/NodeUtils.js.map +1 -0
- package/dist/sql/SqlCache.d.ts +18 -0
- package/dist/sql/SqlCache.d.ts.map +1 -0
- package/dist/sql/SqlCache.js +31 -0
- package/dist/sql/SqlCache.js.map +1 -0
- package/dist/sql/SqlClient.d.ts +88 -0
- package/dist/sql/SqlClient.d.ts.map +1 -0
- package/dist/sql/SqlClient.js +171 -0
- package/dist/sql/SqlClient.js.map +1 -0
- package/dist/sql/bun/index.d.ts +6 -0
- package/dist/sql/bun/index.d.ts.map +1 -0
- package/dist/sql/bun/index.js +132 -0
- package/dist/sql/bun/index.js.map +1 -0
- package/dist/sql/index.d.ts +3 -0
- package/dist/sql/index.d.ts.map +1 -0
- package/dist/sql/index.js +3 -0
- package/dist/sql/index.js.map +1 -0
- package/dist/sql/libsql/index.d.ts +15 -0
- package/dist/sql/libsql/index.d.ts.map +1 -0
- package/dist/sql/libsql/index.js +132 -0
- package/dist/sql/libsql/index.js.map +1 -0
- package/dist/sql/mssql/index.d.ts +8 -0
- package/dist/sql/mssql/index.d.ts.map +1 -0
- package/dist/sql/mssql/index.js +145 -0
- package/dist/sql/mssql/index.js.map +1 -0
- package/dist/sql/postgres/index.d.ts +7 -0
- package/dist/sql/postgres/index.d.ts.map +1 -0
- package/dist/sql/postgres/index.js +136 -0
- package/dist/sql/postgres/index.js.map +1 -0
- package/dist/testing/TestLogger.d.ts +14 -0
- package/dist/testing/TestLogger.d.ts.map +1 -0
- package/dist/testing/TestLogger.js +33 -0
- package/dist/testing/TestLogger.js.map +1 -0
- package/dist/testing/index.d.ts +3 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +3 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/utils.d.ts +10 -0
- package/dist/testing/utils.d.ts.map +1 -0
- package/dist/testing/utils.js +40 -0
- package/dist/testing/utils.js.map +1 -0
- package/dist/tower/Simulation.d.ts +3 -0
- package/dist/tower/Simulation.d.ts.map +1 -0
- package/dist/tower/Simulation.js +606 -0
- package/dist/tower/Simulation.js.map +1 -0
- package/dist/tower/Tower.d.ts +11 -0
- package/dist/tower/Tower.d.ts.map +1 -0
- package/dist/tower/Tower.js +30 -0
- package/dist/tower/Tower.js.map +1 -0
- package/dist/tower/TowerErrors.d.ts +4 -0
- package/dist/tower/TowerErrors.d.ts.map +1 -0
- package/dist/tower/TowerErrors.js +200 -0
- package/dist/tower/TowerErrors.js.map +1 -0
- package/dist/tower/TowerLogger.d.ts +2 -0
- package/dist/tower/TowerLogger.d.ts.map +1 -0
- package/dist/tower/TowerLogger.js +46 -0
- package/dist/tower/TowerLogger.js.map +1 -0
- package/dist/tower/TowerMetrics.d.ts +4 -0
- package/dist/tower/TowerMetrics.d.ts.map +1 -0
- package/dist/tower/TowerMetrics.js +62 -0
- package/dist/tower/TowerMetrics.js.map +1 -0
- package/dist/tower/TowerProcess.d.ts +4 -0
- package/dist/tower/TowerProcess.d.ts.map +1 -0
- package/dist/tower/TowerProcess.js +50 -0
- package/dist/tower/TowerProcess.js.map +1 -0
- package/dist/tower/TowerStore.d.ts +199 -0
- package/dist/tower/TowerStore.d.ts.map +1 -0
- package/dist/tower/TowerStore.js +307 -0
- package/dist/tower/TowerStore.js.map +1 -0
- package/dist/tower/TowerTracer.d.ts +4 -0
- package/dist/tower/TowerTracer.d.ts.map +1 -0
- package/dist/tower/TowerTracer.js +111 -0
- package/dist/tower/TowerTracer.js.map +1 -0
- package/dist/tower/index.d.ts +4 -0
- package/dist/tower/index.d.ts.map +1 -0
- package/dist/tower/index.js +4 -0
- package/dist/tower/index.js.map +1 -0
- package/dist/tower/routes/errors/route.d.ts +11 -0
- package/dist/tower/routes/errors/route.d.ts.map +1 -0
- package/dist/tower/routes/errors/route.js +47 -0
- package/dist/tower/routes/errors/route.js.map +1 -0
- package/dist/tower/routes/fiberDetail.d.ts +17 -0
- package/dist/tower/routes/fiberDetail.d.ts.map +1 -0
- package/dist/tower/routes/fiberDetail.js +35 -0
- package/dist/tower/routes/fiberDetail.js.map +1 -0
- package/dist/tower/routes/fibers/route.d.ts +11 -0
- package/dist/tower/routes/fibers/route.d.ts.map +1 -0
- package/dist/tower/routes/fibers/route.js +27 -0
- package/dist/tower/routes/fibers/route.js.map +1 -0
- package/dist/tower/routes/layout.d.ts +10 -0
- package/dist/tower/routes/layout.d.ts.map +1 -0
- package/dist/tower/routes/layout.js +4 -0
- package/dist/tower/routes/layout.js.map +1 -0
- package/dist/tower/routes/logs/route.d.ts +11 -0
- package/dist/tower/routes/logs/route.d.ts.map +1 -0
- package/dist/tower/routes/logs/route.js +36 -0
- package/dist/tower/routes/logs/route.js.map +1 -0
- package/dist/tower/routes/metrics/route.d.ts +11 -0
- package/dist/tower/routes/metrics/route.d.ts.map +1 -0
- package/dist/tower/routes/metrics/route.js +20 -0
- package/dist/tower/routes/metrics/route.js.map +1 -0
- package/dist/tower/routes/route.d.ts +7 -0
- package/dist/tower/routes/route.d.ts.map +1 -0
- package/dist/tower/routes/route.js +6 -0
- package/dist/tower/routes/route.js.map +1 -0
- package/dist/tower/routes/routes/route.d.ts +7 -0
- package/dist/tower/routes/routes/route.d.ts.map +1 -0
- package/dist/tower/routes/routes/route.js +23 -0
- package/dist/tower/routes/routes/route.js.map +1 -0
- package/dist/tower/routes/services/route.d.ts +7 -0
- package/dist/tower/routes/services/route.d.ts.map +1 -0
- package/dist/tower/routes/services/route.js +15 -0
- package/dist/tower/routes/services/route.js.map +1 -0
- package/dist/tower/routes/system/route.d.ts +11 -0
- package/dist/tower/routes/system/route.d.ts.map +1 -0
- package/dist/tower/routes/system/route.js +21 -0
- package/dist/tower/routes/system/route.js.map +1 -0
- package/dist/tower/routes/traceDetail.d.ts +17 -0
- package/dist/tower/routes/traceDetail.d.ts.map +1 -0
- package/dist/tower/routes/traceDetail.js +20 -0
- package/dist/tower/routes/traceDetail.js.map +1 -0
- package/dist/tower/routes/traces/route.d.ts +11 -0
- package/dist/tower/routes/traces/route.d.ts.map +1 -0
- package/dist/tower/routes/traces/route.js +36 -0
- package/dist/tower/routes/traces/route.js.map +1 -0
- package/dist/tower/routes/tree.d.ts +142 -0
- package/dist/tower/routes/tree.d.ts.map +1 -0
- package/dist/tower/routes/tree.js +28 -0
- package/dist/tower/routes/tree.js.map +1 -0
- package/dist/tower/ui/Errors.d.ts +5 -0
- package/dist/tower/ui/Errors.d.ts.map +1 -0
- package/dist/tower/ui/Errors.js +30 -0
- package/dist/tower/ui/Errors.js.map +1 -0
- package/dist/tower/ui/Fibers.d.ts +25 -0
- package/dist/tower/ui/Fibers.d.ts.map +1 -0
- package/dist/tower/ui/Fibers.js +157 -0
- package/dist/tower/ui/Fibers.js.map +1 -0
- package/dist/tower/ui/Logs.d.ts +5 -0
- package/dist/tower/ui/Logs.d.ts.map +1 -0
- package/dist/tower/ui/Logs.js +28 -0
- package/dist/tower/ui/Logs.js.map +1 -0
- package/dist/tower/ui/Metrics.d.ts +5 -0
- package/dist/tower/ui/Metrics.d.ts.map +1 -0
- package/dist/tower/ui/Metrics.js +34 -0
- package/dist/tower/ui/Metrics.js.map +1 -0
- package/dist/tower/ui/Routes.d.ts +9 -0
- package/dist/tower/ui/Routes.d.ts.map +1 -0
- package/dist/tower/ui/Routes.js +79 -0
- package/dist/tower/ui/Routes.js.map +1 -0
- package/dist/tower/ui/Services.d.ts +11 -0
- package/dist/tower/ui/Services.d.ts.map +1 -0
- package/dist/tower/ui/Services.js +254 -0
- package/dist/tower/ui/Services.js.map +1 -0
- package/dist/tower/ui/Shell.d.ts +11 -0
- package/dist/tower/ui/Shell.d.ts.map +1 -0
- package/dist/tower/ui/Shell.js +12 -0
- package/dist/tower/ui/Shell.js.map +1 -0
- package/dist/tower/ui/System.d.ts +5 -0
- package/dist/tower/ui/System.d.ts.map +1 -0
- package/dist/tower/ui/System.js +65 -0
- package/dist/tower/ui/System.js.map +1 -0
- package/dist/tower/ui/Traces.d.ts +13 -0
- package/dist/tower/ui/Traces.d.ts.map +1 -0
- package/dist/tower/ui/Traces.js +219 -0
- package/dist/tower/ui/Traces.js.map +1 -0
- package/dist/x/cloudflare/CloudflareTunnel.d.ts +11 -0
- package/dist/x/cloudflare/CloudflareTunnel.d.ts.map +1 -0
- package/dist/x/cloudflare/CloudflareTunnel.js +31 -0
- package/dist/x/cloudflare/CloudflareTunnel.js.map +1 -0
- package/dist/x/cloudflare/index.d.ts +2 -0
- package/dist/x/cloudflare/index.d.ts.map +1 -0
- package/dist/x/cloudflare/index.js +2 -0
- package/dist/x/cloudflare/index.js.map +1 -0
- package/dist/x/tailscale/TailscaleTunnel.d.ts +16 -0
- package/dist/x/tailscale/TailscaleTunnel.d.ts.map +1 -0
- package/dist/x/tailscale/TailscaleTunnel.js +66 -0
- package/dist/x/tailscale/TailscaleTunnel.js.map +1 -0
- package/dist/x/tailscale/index.d.ts +2 -0
- package/dist/x/tailscale/index.d.ts.map +1 -0
- package/dist/x/tailscale/index.js +2 -0
- package/dist/x/tailscale/index.js.map +1 -0
- package/dist/x/tailwind/TailwindPlugin.d.ts +24 -0
- package/dist/x/tailwind/TailwindPlugin.d.ts.map +1 -0
- package/dist/x/tailwind/TailwindPlugin.js +220 -0
- package/dist/x/tailwind/TailwindPlugin.js.map +1 -0
- package/dist/x/tailwind/compile.d.ts +20 -0
- package/dist/x/tailwind/compile.d.ts.map +1 -0
- package/dist/x/tailwind/compile.js +155 -0
- package/dist/x/tailwind/compile.js.map +1 -0
- package/dist/x/tailwind/plugin.d.ts +3 -0
- package/dist/x/tailwind/plugin.d.ts.map +1 -0
- package/dist/x/tailwind/plugin.js +16 -0
- package/dist/x/tailwind/plugin.js.map +1 -0
- package/package.json +104 -21
- package/src/ChildProcess.ts +3 -6
- package/src/Docker.ts +190 -0
- package/src/Effectify.ts +7 -10
- package/src/Entity.ts +6 -6
- package/src/FileRouterCodegen.ts +4 -4
- package/src/FileSystem.ts +4 -11
- package/src/GlobalLayer.ts +85 -0
- package/src/PlatformRuntime.ts +8 -1
- package/src/RouteHook.ts +2 -2
- package/src/RouteSse.ts +3 -3
- package/src/SqlIntrospect.ts +13 -11
- package/src/Start.ts +112 -1
- package/src/System.ts +60 -3
- package/src/Unique.ts +59 -0
- package/src/Values.ts +11 -0
- package/src/bun/BunChildProcessSpawner.ts +1 -8
- package/src/bun/BunRoute.ts +2 -1
- package/src/bun/BunRuntime.ts +6 -12
- package/src/bun/BunServer.ts +54 -2
- package/src/datastar/watchers/patchElements.ts +0 -1
- package/src/hyper/HyperHtml.ts +11 -7
- package/src/hyper/jsx.d.ts +1 -1
- package/src/lint/plugin.js +239 -4
- package/src/sql/SqlCache.ts +50 -0
- package/src/sql/SqlClient.ts +400 -0
- package/src/sql/bun/index.ts +126 -57
- package/src/sql/index.ts +2 -1
- package/src/sql/libsql/index.ts +133 -85
- package/src/sql/libsql/libsql.d.ts +4 -1
- package/src/sql/mssql/index.ts +149 -120
- package/src/sql/mssql/mssql.d.ts +1 -0
- package/src/sql/postgres/index.ts +254 -0
- package/src/testing/TestLogger.ts +4 -4
- package/src/{console → tower}/Simulation.ts +10 -48
- package/src/tower/Tower.ts +47 -0
- package/src/{console/ConsoleErrors.ts → tower/TowerErrors.ts} +34 -23
- package/src/tower/TowerLogger.ts +52 -0
- package/src/{console/ConsoleMetrics.ts → tower/TowerMetrics.ts} +5 -5
- package/src/{console/ConsoleProcess.ts → tower/TowerProcess.ts} +4 -4
- package/src/tower/TowerStore.ts +505 -0
- package/src/tower/TowerTracer.ts +128 -0
- package/src/tower/index.ts +3 -0
- package/src/{console → tower}/routes/errors/route.tsx +26 -33
- package/src/{console → tower}/routes/fiberDetail.tsx +12 -15
- package/src/tower/routes/fibers/route.tsx +46 -0
- package/src/{console/console.html → tower/routes/layout.html} +1 -1
- package/src/{console → tower}/routes/layout.tsx +1 -1
- package/src/{console → tower}/routes/logs/route.tsx +12 -16
- package/src/{console → tower}/routes/metrics/route.tsx +5 -5
- package/src/tower/routes/route.tsx +8 -0
- package/src/{console → tower}/routes/routes/route.tsx +2 -2
- package/src/{console → tower}/routes/services/route.tsx +2 -2
- package/src/{console → tower}/routes/system/route.tsx +5 -5
- package/src/tower/routes/traceDetail.tsx +30 -0
- package/src/{console → tower}/routes/traces/route.tsx +25 -34
- package/src/{console → tower}/routes/tree.ts +0 -2
- package/src/{console → tower}/ui/Errors.tsx +19 -15
- package/src/{console → tower}/ui/Fibers.tsx +83 -68
- package/src/{console → tower}/ui/Logs.tsx +20 -16
- package/src/{console → tower}/ui/Metrics.tsx +18 -18
- package/src/{console → tower}/ui/Routes.tsx +14 -14
- package/src/{console → tower}/ui/Services.tsx +9 -9
- package/src/tower/ui/Shell.tsx +74 -0
- package/src/{console → tower}/ui/System.tsx +40 -30
- package/src/{console → tower}/ui/Traces.tsx +73 -80
- package/src/x/cloudflare/CloudflareTunnel.ts +1 -1
- package/src/x/tailscale/TailscaleTunnel.ts +3 -3
- package/src/x/tailwind/compile.ts +11 -14
- package/src/console/Console.ts +0 -42
- package/src/console/ConsoleLogger.ts +0 -56
- package/src/console/ConsoleStore.ts +0 -187
- package/src/console/ConsoleTracer.ts +0 -107
- package/src/console/index.ts +0 -3
- package/src/console/routes/fibers/route.tsx +0 -45
- package/src/console/routes/git/route.tsx +0 -64
- package/src/console/routes/route.tsx +0 -8
- package/src/console/routes/traceDetail.tsx +0 -22
- package/src/console/ui/Git.tsx +0 -182
- package/src/console/ui/Shell.tsx +0 -62
- package/src/sql/Sql.ts +0 -51
- 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
|
+
)
|