effect-start 0.27.0 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 -23
- package/src/ChildProcess.ts +3 -6
- package/src/Docker.ts +190 -0
- package/src/Effectify.ts +7 -10
- package/src/FileSystem.ts +1 -4
- package/src/GlobalLayer.ts +85 -0
- package/src/PlatformRuntime.ts +8 -1
- package/src/RouteHook.ts +1 -1
- package/src/SqlIntrospect.ts +13 -11
- package/src/Start.ts +40 -29
- package/src/System.ts +60 -3
- package/src/Unique.ts +59 -0
- package/src/bun/BunChildProcessSpawner.ts +1 -8
- package/src/bun/BunRoute.ts +1 -0
- package/src/bun/BunRuntime.ts +2 -8
- package/src/bun/BunServer.ts +54 -2
- package/src/datastar/watchers/patchElements.ts +0 -1
- package/src/lint/plugin.js +146 -81
- package/src/sql/SqlCache.ts +50 -0
- package/src/sql/SqlClient.ts +59 -14
- package/src/sql/bun/index.ts +28 -26
- package/src/sql/index.ts +1 -0
- package/src/sql/libsql/index.ts +62 -28
- package/src/sql/mssql/index.ts +53 -57
- package/src/sql/postgres/index.ts +254 -0
- package/src/tower/Simulation.ts +776 -0
- package/src/tower/Tower.ts +47 -0
- package/src/tower/TowerErrors.ts +224 -0
- package/src/tower/TowerLogger.ts +52 -0
- package/src/tower/TowerMetrics.ts +72 -0
- package/src/tower/TowerProcess.ts +59 -0
- package/src/tower/TowerStore.ts +505 -0
- package/src/tower/TowerTracer.ts +128 -0
- package/src/tower/index.ts +3 -0
- package/src/tower/routes/errors/route.tsx +90 -0
- package/src/tower/routes/fiberDetail.tsx +51 -0
- package/src/tower/routes/fibers/route.tsx +46 -0
- package/src/tower/routes/layout.html +340 -0
- package/src/tower/routes/layout.tsx +4 -0
- package/src/tower/routes/logs/route.tsx +73 -0
- package/src/tower/routes/metrics/route.tsx +36 -0
- package/src/tower/routes/route.tsx +8 -0
- package/src/tower/routes/routes/route.tsx +30 -0
- package/src/tower/routes/services/route.tsx +21 -0
- package/src/tower/routes/system/route.tsx +43 -0
- package/src/tower/routes/traceDetail.tsx +30 -0
- package/src/tower/routes/traces/route.tsx +72 -0
- package/src/tower/routes/tree.ts +28 -0
- package/src/tower/ui/Errors.tsx +80 -0
- package/src/tower/ui/Fibers.tsx +336 -0
- package/src/tower/ui/Logs.tsx +50 -0
- package/src/tower/ui/Metrics.tsx +78 -0
- package/src/tower/ui/Routes.tsx +125 -0
- package/src/tower/ui/Services.tsx +273 -0
- package/src/tower/ui/Shell.tsx +74 -0
- package/src/tower/ui/System.tsx +141 -0
- package/src/tower/ui/Traces.tsx +419 -0
- package/src/x/cloudflare/CloudflareTunnel.ts +1 -1
- package/src/x/tailscale/TailscaleTunnel.ts +3 -3
- package/src/x/tailwind/compile.ts +6 -1
- package/src/sql/mssql/docker.ts +0 -117
package/src/Docker.ts
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import * as Context from "effect/Context"
|
|
2
|
+
import * as Data from "effect/Data"
|
|
3
|
+
import * as Effect from "effect/Effect"
|
|
4
|
+
import * as Layer from "effect/Layer"
|
|
5
|
+
import * as Ref from "effect/Ref"
|
|
6
|
+
import * as Stream from "effect/Stream"
|
|
7
|
+
|
|
8
|
+
import type * as ChildProcess from "./ChildProcess.ts"
|
|
9
|
+
import * as System from "./System.ts"
|
|
10
|
+
|
|
11
|
+
export class DockerError extends Data.TaggedError("DockerError")<{
|
|
12
|
+
message: string
|
|
13
|
+
cause?: unknown
|
|
14
|
+
}> {}
|
|
15
|
+
|
|
16
|
+
export interface ExecResult {
|
|
17
|
+
readonly exitCode: number
|
|
18
|
+
readonly stdout: string
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface Container {
|
|
22
|
+
readonly id: string
|
|
23
|
+
readonly name?: string
|
|
24
|
+
readonly ports?: ReadonlyArray<readonly [host: number, container: number]>
|
|
25
|
+
readonly exec: (
|
|
26
|
+
command: ReadonlyArray<string>,
|
|
27
|
+
options?: { readonly detach?: boolean },
|
|
28
|
+
) => Effect.Effect<ExecResult, DockerError, ChildProcess.ChildProcessSpawner>
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface ContainerOptions {
|
|
32
|
+
readonly image: string
|
|
33
|
+
readonly name?: string
|
|
34
|
+
readonly detach?: boolean
|
|
35
|
+
readonly rm?: boolean
|
|
36
|
+
readonly env?: Record<string, string>
|
|
37
|
+
readonly ports?: ReadonlyArray<readonly [host: number, container: number]>
|
|
38
|
+
readonly args?: ReadonlyArray<string>
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export interface DockerService {
|
|
42
|
+
readonly exec: (
|
|
43
|
+
container: string,
|
|
44
|
+
command: ReadonlyArray<string>,
|
|
45
|
+
options?: { readonly detach?: boolean },
|
|
46
|
+
) => Effect.Effect<ExecResult, DockerError, ChildProcess.ChildProcessSpawner>
|
|
47
|
+
readonly run: (
|
|
48
|
+
options: ContainerOptions,
|
|
49
|
+
) => Effect.Effect<Container, DockerError, ChildProcess.ChildProcessSpawner>
|
|
50
|
+
readonly start: (
|
|
51
|
+
container: string,
|
|
52
|
+
) => Effect.Effect<void, DockerError, ChildProcess.ChildProcessSpawner>
|
|
53
|
+
readonly containers: Effect.Effect<ReadonlyArray<Container>>
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export class Docker extends Context.Tag("effect-start/Docker")<Docker, DockerService>() {}
|
|
57
|
+
|
|
58
|
+
export class DockerContainer extends Context.Tag("effect-start/DockerContainer")<
|
|
59
|
+
DockerContainer,
|
|
60
|
+
Container
|
|
61
|
+
>() {}
|
|
62
|
+
|
|
63
|
+
const dockerExec = (...args: ReadonlyArray<string>) =>
|
|
64
|
+
Effect.scoped(
|
|
65
|
+
Effect.gen(function* () {
|
|
66
|
+
const handle = yield* System.spawn(["docker", ...args], {
|
|
67
|
+
stdout: "ignore",
|
|
68
|
+
stderr: "inherit",
|
|
69
|
+
})
|
|
70
|
+
return yield* handle.exitCode
|
|
71
|
+
}),
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
const dockerExecStdout = (...args: ReadonlyArray<string>) =>
|
|
75
|
+
Effect.scoped(
|
|
76
|
+
Effect.gen(function* () {
|
|
77
|
+
const handle = yield* System.spawn(["docker", ...args], {
|
|
78
|
+
stdout: "pipe",
|
|
79
|
+
stderr: "inherit",
|
|
80
|
+
})
|
|
81
|
+
const [stdout, exitCode] = yield* Effect.all(
|
|
82
|
+
[handle.stdout.pipe(Stream.decodeText("utf-8"), Stream.mkString), handle.exitCode],
|
|
83
|
+
{ concurrency: 2 },
|
|
84
|
+
)
|
|
85
|
+
return { stdout, exitCode }
|
|
86
|
+
}),
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
const removeContainer = (container: string) => dockerExec("rm", "-f", container).pipe(Effect.ignore)
|
|
90
|
+
|
|
91
|
+
export const layer = Layer.scoped(
|
|
92
|
+
Docker,
|
|
93
|
+
Effect.gen(function* () {
|
|
94
|
+
const tracked = yield* Ref.make<ReadonlyArray<Container>>([])
|
|
95
|
+
|
|
96
|
+
yield* Effect.addFinalizer(() =>
|
|
97
|
+
Ref.get(tracked).pipe(
|
|
98
|
+
Effect.flatMap((containers) =>
|
|
99
|
+
Effect.forEach(containers, (c) => removeContainer(c.id), { discard: true }),
|
|
100
|
+
),
|
|
101
|
+
),
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
const track = (container: Container) => Ref.update(tracked, (cs) => [container, ...cs])
|
|
105
|
+
|
|
106
|
+
const execFn = (
|
|
107
|
+
container: string,
|
|
108
|
+
command: ReadonlyArray<string>,
|
|
109
|
+
options?: { readonly detach?: boolean },
|
|
110
|
+
) =>
|
|
111
|
+
Effect.gen(function* () {
|
|
112
|
+
const args: Array<string> = ["exec"]
|
|
113
|
+
if (options?.detach) args.push("-d")
|
|
114
|
+
args.push(container, ...command)
|
|
115
|
+
|
|
116
|
+
const result = yield* dockerExecStdout(...args).pipe(
|
|
117
|
+
Effect.mapError((cause) => new DockerError({ message: `docker exec failed`, cause })),
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
return { exitCode: result.exitCode, stdout: result.stdout.trim() } satisfies ExecResult
|
|
121
|
+
})
|
|
122
|
+
|
|
123
|
+
return {
|
|
124
|
+
exec: execFn,
|
|
125
|
+
|
|
126
|
+
run: (options) =>
|
|
127
|
+
Effect.gen(function* () {
|
|
128
|
+
const args: Array<string> = ["run"]
|
|
129
|
+
|
|
130
|
+
if (options.detach) args.push("-d")
|
|
131
|
+
if (options.rm) args.push("--rm")
|
|
132
|
+
if (options.name) args.push("--name", options.name)
|
|
133
|
+
|
|
134
|
+
if (options.env) {
|
|
135
|
+
for (const [k, v] of Object.entries(options.env)) {
|
|
136
|
+
args.push("-e", `${k}=${v}`)
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (options.ports) {
|
|
141
|
+
for (const [host, container] of options.ports) {
|
|
142
|
+
args.push("-p", `${host}:${container}`)
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
args.push(options.image)
|
|
147
|
+
|
|
148
|
+
if (options.args) args.push(...options.args)
|
|
149
|
+
|
|
150
|
+
const result = yield* dockerExecStdout(...args).pipe(
|
|
151
|
+
Effect.mapError((cause) => new DockerError({ message: `docker run failed`, cause })),
|
|
152
|
+
)
|
|
153
|
+
|
|
154
|
+
const id = result.stdout.trim()
|
|
155
|
+
const container: Container = {
|
|
156
|
+
id,
|
|
157
|
+
name: options.name,
|
|
158
|
+
ports: options.ports,
|
|
159
|
+
exec: (command, execOptions) => execFn(id, command, execOptions),
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
if (!options.rm) {
|
|
163
|
+
yield* track(container)
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
return container
|
|
167
|
+
}),
|
|
168
|
+
|
|
169
|
+
start: (container) =>
|
|
170
|
+
Effect.gen(function* () {
|
|
171
|
+
const code = yield* dockerExec("start", container).pipe(
|
|
172
|
+
Effect.mapError((cause) => new DockerError({ message: `docker start failed`, cause })),
|
|
173
|
+
)
|
|
174
|
+
if (code !== 0) {
|
|
175
|
+
yield* Effect.fail(
|
|
176
|
+
new DockerError({ message: `docker start exited with code ${code}` }),
|
|
177
|
+
)
|
|
178
|
+
}
|
|
179
|
+
}),
|
|
180
|
+
|
|
181
|
+
containers: Ref.get(tracked),
|
|
182
|
+
} satisfies DockerService
|
|
183
|
+
}),
|
|
184
|
+
)
|
|
185
|
+
|
|
186
|
+
export const layerContainer = (options: ContainerOptions) =>
|
|
187
|
+
Layer.effect(
|
|
188
|
+
DockerContainer,
|
|
189
|
+
Effect.flatMap(Docker, (docker) => docker.run(options)),
|
|
190
|
+
)
|
package/src/Effectify.ts
CHANGED
|
@@ -269,16 +269,13 @@ export const effectify: {
|
|
|
269
269
|
(...args: Array<any>) =>
|
|
270
270
|
Effect.async<any, any>((resume) => {
|
|
271
271
|
try {
|
|
272
|
-
fn(
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
}
|
|
280
|
-
},
|
|
281
|
-
)
|
|
272
|
+
fn(...args, (err: any, result: any) => {
|
|
273
|
+
if (err) {
|
|
274
|
+
resume(Effect.fail(onError ? onError(err, args) : err))
|
|
275
|
+
} else {
|
|
276
|
+
resume(Effect.succeed(result))
|
|
277
|
+
}
|
|
278
|
+
})
|
|
282
279
|
} catch (err) {
|
|
283
280
|
resume(onSyncError ? Effect.fail(onSyncError(err, args)) : Effect.die(err))
|
|
284
281
|
}
|
package/src/FileSystem.ts
CHANGED
|
@@ -342,10 +342,7 @@ export const make = (
|
|
|
342
342
|
})
|
|
343
343
|
}
|
|
344
344
|
|
|
345
|
-
const fileStream = (
|
|
346
|
-
file: File,
|
|
347
|
-
options: StreamOptions = {},
|
|
348
|
-
) => {
|
|
345
|
+
const fileStream = (file: File, options: StreamOptions = {}) => {
|
|
349
346
|
const bytesToRead = options.bytesToRead !== undefined ? Size(options.bytesToRead) : undefined
|
|
350
347
|
const chunkSize = Size(options.chunkSize ?? 64 * 1024)
|
|
351
348
|
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import * as Context from "effect/Context"
|
|
2
|
+
import * as Deferred from "effect/Deferred"
|
|
3
|
+
import * as Effect from "effect/Effect"
|
|
4
|
+
import type * as Fiber from "effect/Fiber"
|
|
5
|
+
import * as GlobalValue from "effect/GlobalValue"
|
|
6
|
+
import * as HashMap from "effect/HashMap"
|
|
7
|
+
import * as Layer from "effect/Layer"
|
|
8
|
+
import * as MutableRef from "effect/MutableRef"
|
|
9
|
+
import * as Option from "effect/Option"
|
|
10
|
+
import * as Runtime from "effect/Runtime"
|
|
11
|
+
|
|
12
|
+
import * as ChildProcess from "./ChildProcess.ts"
|
|
13
|
+
|
|
14
|
+
interface CacheEntry {
|
|
15
|
+
readonly context: Context.Context<any>
|
|
16
|
+
readonly fiber: Fiber.RuntimeFiber<void>
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const cache = GlobalValue.globalValue(Symbol.for("effect-start/GlobalLayer/cache"), () =>
|
|
20
|
+
MutableRef.make(HashMap.empty<string, CacheEntry>()),
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
export const globalLayer =
|
|
24
|
+
(key: string) =>
|
|
25
|
+
<A, E>(
|
|
26
|
+
layer: Layer.Layer<A, E> | Layer.Layer<A, E, ChildProcess.ChildProcessSpawner>,
|
|
27
|
+
): Layer.Layer<A, E> => {
|
|
28
|
+
const existing = HashMap.get(MutableRef.get(cache), key)
|
|
29
|
+
if (existing._tag === "Some") {
|
|
30
|
+
return Layer.succeedContext(existing.value.context) as Layer.Layer<A, E>
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return Layer.scopedContext(
|
|
34
|
+
Effect.gen(function* () {
|
|
35
|
+
const cached = HashMap.get(MutableRef.get(cache), key)
|
|
36
|
+
if (cached._tag === "Some") {
|
|
37
|
+
return cached.value.context as Context.Context<A>
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const spawner = yield* Effect.serviceOption(ChildProcess.ChildProcessSpawner)
|
|
41
|
+
const deferred = yield* Deferred.make<Context.Context<A>, E>()
|
|
42
|
+
|
|
43
|
+
const parentRuntime = yield* Effect.runtime<never>()
|
|
44
|
+
|
|
45
|
+
const defaultRuntime = Runtime.make({
|
|
46
|
+
// Empty service context — no custom services leak into the forked fiber
|
|
47
|
+
context: Context.empty(),
|
|
48
|
+
|
|
49
|
+
// Bit flags for runtime behavior (interruption, cooperative yielding, etc.)
|
|
50
|
+
runtimeFlags: parentRuntime.runtimeFlags,
|
|
51
|
+
|
|
52
|
+
// Per-fiber state like logger config, tracer settings, span annotations.
|
|
53
|
+
// Default services are wired through FiberRefs, not the service context.
|
|
54
|
+
fiberRefs: parentRuntime.fiberRefs,
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
const fiber = Runtime.runFork(defaultRuntime)(
|
|
58
|
+
Effect.scoped(
|
|
59
|
+
Effect.gen(function* () {
|
|
60
|
+
const scope = yield* Effect.scope
|
|
61
|
+
const memoMap = yield* Layer.makeMemoMap
|
|
62
|
+
const ctx = yield* (layer as Layer.Layer<A, E>).pipe(
|
|
63
|
+
Layer.buildWithMemoMap(memoMap, scope),
|
|
64
|
+
Option.isSome(spawner)
|
|
65
|
+
? Effect.provideService(ChildProcess.ChildProcessSpawner, spawner.value)
|
|
66
|
+
: (a) => a,
|
|
67
|
+
)
|
|
68
|
+
yield* Deferred.succeed(deferred, ctx)
|
|
69
|
+
yield* Effect.never
|
|
70
|
+
}),
|
|
71
|
+
),
|
|
72
|
+
) as Fiber.RuntimeFiber<void>
|
|
73
|
+
|
|
74
|
+
const ctx = yield* Deferred.await(deferred)
|
|
75
|
+
|
|
76
|
+
MutableRef.update(cache, HashMap.set(key, { context: ctx, fiber } as CacheEntry))
|
|
77
|
+
|
|
78
|
+
fiber.addObserver(() => {
|
|
79
|
+
MutableRef.update(cache, HashMap.remove(key))
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
return ctx
|
|
83
|
+
}),
|
|
84
|
+
)
|
|
85
|
+
}
|
package/src/PlatformRuntime.ts
CHANGED
|
@@ -6,8 +6,15 @@ import type * as FiberId from "effect/FiberId"
|
|
|
6
6
|
import * as FiberRef from "effect/FiberRef"
|
|
7
7
|
import * as FiberRefs from "effect/FiberRefs"
|
|
8
8
|
import * as Function from "effect/Function"
|
|
9
|
+
import * as GlobalValue from "effect/GlobalValue"
|
|
9
10
|
import * as HashSet from "effect/HashSet"
|
|
10
11
|
import * as Logger from "effect/Logger"
|
|
12
|
+
import * as MutableRef from "effect/MutableRef"
|
|
13
|
+
|
|
14
|
+
export const mainFiber = GlobalValue.globalValue(
|
|
15
|
+
Symbol.for("effect-start/PlatformRuntime/mainFiber"),
|
|
16
|
+
() => MutableRef.make<Fiber.RuntimeFiber<unknown, unknown> | undefined>(undefined),
|
|
17
|
+
)
|
|
11
18
|
|
|
12
19
|
export interface Teardown {
|
|
13
20
|
<E, A>(exit: Exit.Exit<E, A>, onExit: (code: number) => void): void
|
|
@@ -95,6 +102,6 @@ export function isAgentHarness() {
|
|
|
95
102
|
return (
|
|
96
103
|
typeof process !== "undefined" &&
|
|
97
104
|
!process.stdout.isTTY &&
|
|
98
|
-
(process.env.CLAUDECODE || process.env.CURSOR_AGENT)
|
|
105
|
+
(process.env.CLAUDECODE || process.env.CURSOR_AGENT || process.env.CODEX_THREAD_ID)
|
|
99
106
|
)
|
|
100
107
|
}
|
package/src/RouteHook.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect"
|
|
2
2
|
import type * as Utils from "effect/Utils"
|
|
3
|
-
import * as Entity from "./Entity.ts"
|
|
3
|
+
import type * as Entity from "./Entity.ts"
|
|
4
4
|
import * as Route from "./Route.ts"
|
|
5
5
|
|
|
6
6
|
export type FilterResult<BOut, E, R> = { context: BOut } | Effect.Effect<{ context: BOut }, E, R>
|
package/src/SqlIntrospect.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect"
|
|
2
2
|
import * as Schema from "effect/Schema"
|
|
3
|
-
import * as
|
|
3
|
+
import * as SqlClient from "./sql/SqlClient.ts"
|
|
4
4
|
|
|
5
5
|
export interface Column {
|
|
6
6
|
readonly tableSchema: string
|
|
@@ -336,9 +336,9 @@ const normalizeBooleans = (columns: ReadonlyArray<Column>): ReadonlyArray<Column
|
|
|
336
336
|
export const introspect = (
|
|
337
337
|
dialect: Dialect,
|
|
338
338
|
options?: IntrospectOptions,
|
|
339
|
-
): Effect.Effect<DatabaseSchema,
|
|
339
|
+
): Effect.Effect<DatabaseSchema, SqlClient.SqlError, SqlClient.SqlClient> =>
|
|
340
340
|
Effect.gen(function* () {
|
|
341
|
-
const sql = yield*
|
|
341
|
+
const sql = yield* SqlClient.SqlClient
|
|
342
342
|
const q = dialectQueries[dialect]
|
|
343
343
|
const columns = normalizeBooleans(yield* sql.unsafe<Column>(q.columns))
|
|
344
344
|
const foreignKeys =
|
|
@@ -481,11 +481,13 @@ export interface TableReader {
|
|
|
481
481
|
readonly sortableColumns: ReadonlyArray<string>
|
|
482
482
|
readonly findAll: (
|
|
483
483
|
options?: FindAllOptions,
|
|
484
|
-
) => Effect.Effect<ReadonlyArray<unknown>,
|
|
485
|
-
readonly findById: (
|
|
484
|
+
) => Effect.Effect<ReadonlyArray<unknown>, SqlClient.SqlError, SqlClient.SqlClient>
|
|
485
|
+
readonly findById: (
|
|
486
|
+
id: unknown,
|
|
487
|
+
) => Effect.Effect<unknown | null, SqlClient.SqlError, SqlClient.SqlClient>
|
|
486
488
|
readonly count: (options?: {
|
|
487
489
|
readonly filters?: ReadonlyArray<Filter>
|
|
488
|
-
}) => Effect.Effect<number,
|
|
490
|
+
}) => Effect.Effect<number, SqlClient.SqlError, SqlClient.SqlClient>
|
|
489
491
|
}
|
|
490
492
|
|
|
491
493
|
export interface DatabaseReader {
|
|
@@ -496,9 +498,9 @@ export interface DatabaseReader {
|
|
|
496
498
|
const escapeIdentifier = (id: string): string => `"${id.replace(/"/g, '""')}"`
|
|
497
499
|
|
|
498
500
|
const concatSql = (
|
|
499
|
-
sql:
|
|
501
|
+
sql: SqlClient.Connection,
|
|
500
502
|
fragments: Array<{ strings: ReadonlyArray<string>; values: Array<unknown> }>,
|
|
501
|
-
): Effect.Effect<ReadonlyArray<unknown>,
|
|
503
|
+
): Effect.Effect<ReadonlyArray<unknown>, SqlClient.SqlError> => {
|
|
502
504
|
const strings: Array<string> = []
|
|
503
505
|
const values: Array<unknown> = []
|
|
504
506
|
for (let i = 0; i < fragments.length; i++) {
|
|
@@ -559,7 +561,7 @@ const makeTableReader = (ts: TableSchema): TableReader => {
|
|
|
559
561
|
sortableColumns: Array.from(sortableSet),
|
|
560
562
|
findAll: (options) =>
|
|
561
563
|
Effect.gen(function* () {
|
|
562
|
-
const sql = yield*
|
|
564
|
+
const sql = yield* SqlClient.SqlClient
|
|
563
565
|
const fragments: Array<{ strings: ReadonlyArray<string>; values: Array<unknown> }> = [
|
|
564
566
|
literal(`SELECT ${selectCols} FROM ${qualifiedName}`),
|
|
565
567
|
]
|
|
@@ -581,7 +583,7 @@ const makeTableReader = (ts: TableSchema): TableReader => {
|
|
|
581
583
|
findById: (id) =>
|
|
582
584
|
Effect.gen(function* () {
|
|
583
585
|
if (!primaryKey) return null
|
|
584
|
-
const sql = yield*
|
|
586
|
+
const sql = yield* SqlClient.SqlClient
|
|
585
587
|
const pkCol = escapeIdentifier(primaryKey.columnName)
|
|
586
588
|
const rows = yield* concatSql(sql, [
|
|
587
589
|
literal(`SELECT ${selectCols} FROM ${qualifiedName} WHERE ${pkCol} = `),
|
|
@@ -591,7 +593,7 @@ const makeTableReader = (ts: TableSchema): TableReader => {
|
|
|
591
593
|
}),
|
|
592
594
|
count: (options) =>
|
|
593
595
|
Effect.gen(function* () {
|
|
594
|
-
const sql = yield*
|
|
596
|
+
const sql = yield* SqlClient.SqlClient
|
|
595
597
|
const fragments: Array<{ strings: ReadonlyArray<string>; values: Array<unknown> }> = [
|
|
596
598
|
literal(`SELECT COUNT(*) as count FROM ${qualifiedName}`),
|
|
597
599
|
]
|
package/src/Start.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type * as FileSystem from "./FileSystem.ts"
|
|
|
2
2
|
import * as Context from "effect/Context"
|
|
3
3
|
import * as Deferred from "effect/Deferred"
|
|
4
4
|
import * as Effect from "effect/Effect"
|
|
5
|
+
import * as FiberId from "effect/FiberId"
|
|
5
6
|
import * as ExecutionStrategy from "effect/ExecutionStrategy"
|
|
6
7
|
import * as Exit from "effect/Exit"
|
|
7
8
|
import * as Function from "effect/Function"
|
|
@@ -9,10 +10,12 @@ import * as Layer from "effect/Layer"
|
|
|
9
10
|
import * as Scope from "effect/Scope"
|
|
10
11
|
import * as SynchronizedRef from "effect/SynchronizedRef"
|
|
11
12
|
import type * as ChildProcess from "./ChildProcess.ts"
|
|
13
|
+
import * as MutableRef from "effect/MutableRef"
|
|
12
14
|
import * as BunRuntime from "./bun/BunRuntime.ts"
|
|
13
15
|
import * as BunServer from "./bun/BunServer.ts"
|
|
14
16
|
import * as NodeFileSystem from "./node/NodeFileSystem.ts"
|
|
15
17
|
import * as BunChildProcessSpawner from "./bun/BunChildProcessSpawner.ts"
|
|
18
|
+
import * as PlatformRuntime from "./PlatformRuntime.ts"
|
|
16
19
|
import * as StartApp from "./StartApp.ts"
|
|
17
20
|
|
|
18
21
|
export function layer<
|
|
@@ -48,9 +51,7 @@ export function layer<
|
|
|
48
51
|
* @since 1.0.0
|
|
49
52
|
* @category constructors
|
|
50
53
|
*/
|
|
51
|
-
export function pack<
|
|
52
|
-
const Layers extends readonly [Layer.Layer.Any, ...Array<Layer.Layer.Any>],
|
|
53
|
-
>(
|
|
54
|
+
export function pack<const Layers extends readonly [Layer.Layer.Any, ...Array<Layer.Layer.Any>]>(
|
|
54
55
|
...layers: Layers & OrderedPack<NoInfer<Layers>, NoInfer<Layers>>
|
|
55
56
|
): Layer.Layer<
|
|
56
57
|
{ [K in keyof Layers]: Layer.Layer.Success<Layers[K]> }[number],
|
|
@@ -70,8 +71,7 @@ export function pack<
|
|
|
70
71
|
return result as AnyLayer
|
|
71
72
|
}
|
|
72
73
|
|
|
73
|
-
type Unsatisfied<Unmet, Success> =
|
|
74
|
-
Unmet extends Success ? Unmet : never
|
|
74
|
+
type Unsatisfied<Unmet, Success> = Unmet extends Success ? Unmet : never
|
|
75
75
|
|
|
76
76
|
type OrderedPack<
|
|
77
77
|
Layers extends readonly Layer.Layer.Any[],
|
|
@@ -81,16 +81,19 @@ type OrderedPack<
|
|
|
81
81
|
...infer Tail extends Layer.Layer.Any[],
|
|
82
82
|
]
|
|
83
83
|
? [
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
84
|
+
[
|
|
85
|
+
Unsatisfied<
|
|
86
|
+
Exclude<
|
|
87
|
+
Layer.Layer.Context<Head>,
|
|
88
|
+
{ [K in keyof Tail]: Layer.Layer.Success<Tail[K]> }[number]
|
|
89
|
+
>,
|
|
90
|
+
{ [K in keyof All]: Layer.Layer.Success<All[K]> }[number]
|
|
91
|
+
>,
|
|
92
|
+
] extends [never]
|
|
93
|
+
? Head
|
|
94
|
+
: never,
|
|
95
|
+
...OrderedPack<Tail, All>,
|
|
96
|
+
]
|
|
94
97
|
: []
|
|
95
98
|
|
|
96
99
|
/**
|
|
@@ -105,18 +108,22 @@ type OrderedPack<
|
|
|
105
108
|
* @since 1.0.0
|
|
106
109
|
* @category constructors
|
|
107
110
|
*/
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
+
type BuildSuccess<Layers extends readonly Layer.Layer.Any[]> = {
|
|
112
|
+
[K in keyof Layers]: Layer.Layer.Success<Layers[K]>
|
|
113
|
+
}[number]
|
|
114
|
+
|
|
115
|
+
type BuildError<Layers extends readonly Layer.Layer.Any[]> = {
|
|
116
|
+
[K in keyof Layers]: Layer.Layer.Error<Layers[K]>
|
|
117
|
+
}[number]
|
|
118
|
+
|
|
119
|
+
type BuildContext<Layers extends readonly Layer.Layer.Any[]> = Exclude<
|
|
120
|
+
{ [K in keyof Layers]: Layer.Layer.Context<Layers[K]> }[number],
|
|
121
|
+
{ [K in keyof Layers]: Layer.Layer.Success<Layers[K]> }[number]
|
|
122
|
+
>
|
|
123
|
+
|
|
124
|
+
export function build<const Layers extends readonly [Layer.Layer.Any, ...Array<Layer.Layer.Any>]>(
|
|
111
125
|
...layers: Layers
|
|
112
|
-
): Layer.Layer<
|
|
113
|
-
{ [K in keyof Layers]: Layer.Layer.Success<Layers[K]> }[number],
|
|
114
|
-
{ [K in keyof Layers]: Layer.Layer.Error<Layers[K]> }[number],
|
|
115
|
-
Exclude<
|
|
116
|
-
{ [K in keyof Layers]: Layer.Layer.Context<Layers[K]> }[number],
|
|
117
|
-
{ [K in keyof Layers]: Layer.Layer.Success<Layers[K]> }[number]
|
|
118
|
-
>
|
|
119
|
-
> {
|
|
126
|
+
): Layer.Layer<BuildSuccess<Layers>, BuildError<Layers>, BuildContext<Layers>> {
|
|
120
127
|
type AnyLayer = Layer.Layer<any, any, any>
|
|
121
128
|
const layerArray = layers as unknown as ReadonlyArray<AnyLayer>
|
|
122
129
|
|
|
@@ -129,7 +136,7 @@ export function build<
|
|
|
129
136
|
const pending = new Set<AnyLayer>(layerArray)
|
|
130
137
|
|
|
131
138
|
for (let pass = 0; pass < layerArray.length && pending.size > 0; pass++) {
|
|
132
|
-
for (const layer of
|
|
139
|
+
for (const layer of pending) {
|
|
133
140
|
const childScope = yield* Scope.fork(scope, ExecutionStrategy.sequential)
|
|
134
141
|
const exit = yield* layer.pipe(
|
|
135
142
|
Layer.buildWithMemoMap(memoMap, childScope),
|
|
@@ -160,8 +167,7 @@ export function build<
|
|
|
160
167
|
|
|
161
168
|
return ctx
|
|
162
169
|
}),
|
|
163
|
-
|
|
164
|
-
) as any
|
|
170
|
+
)
|
|
165
171
|
}
|
|
166
172
|
|
|
167
173
|
export type PlatformServices =
|
|
@@ -205,3 +211,8 @@ export function serve<ROut, E, RIn extends PlatformServices>(
|
|
|
205
211
|
|
|
206
212
|
return Function.pipe(composed, Layer.launch, BunRuntime.runMain)
|
|
207
213
|
}
|
|
214
|
+
|
|
215
|
+
export const mainFiberId: Effect.Effect<FiberId.FiberId> = Effect.sync(() => {
|
|
216
|
+
const fiber = MutableRef.get(PlatformRuntime.mainFiber)
|
|
217
|
+
return fiber ? fiber.id() : FiberId.none
|
|
218
|
+
})
|
package/src/System.ts
CHANGED
|
@@ -1,11 +1,69 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect"
|
|
2
2
|
import type * as Scope from "effect/Scope"
|
|
3
|
+
import * as NNet from "node:net"
|
|
3
4
|
|
|
4
5
|
import * as ChildProcess from "./ChildProcess.ts"
|
|
5
6
|
import * as PlatformError from "./PlatformError.ts"
|
|
6
7
|
|
|
7
8
|
export const cwd: Effect.Effect<string> = Effect.sync(() => process.cwd())
|
|
8
9
|
|
|
10
|
+
export const randomFreePort: Effect.Effect<number, PlatformError.SystemError> = Effect.async<
|
|
11
|
+
number,
|
|
12
|
+
PlatformError.SystemError
|
|
13
|
+
>((resume) => {
|
|
14
|
+
const server = NNet.createServer()
|
|
15
|
+
server.unref()
|
|
16
|
+
server.on("error", (err) =>
|
|
17
|
+
resume(
|
|
18
|
+
Effect.fail(
|
|
19
|
+
new PlatformError.SystemError({
|
|
20
|
+
reason: "Unknown",
|
|
21
|
+
module: "System",
|
|
22
|
+
method: "randomFreePort",
|
|
23
|
+
description: err.message,
|
|
24
|
+
cause: err,
|
|
25
|
+
}),
|
|
26
|
+
),
|
|
27
|
+
),
|
|
28
|
+
)
|
|
29
|
+
server.listen(0, "127.0.0.1", () => {
|
|
30
|
+
const address = server.address()
|
|
31
|
+
if (!address || typeof address === "string") {
|
|
32
|
+
server.close(() =>
|
|
33
|
+
resume(
|
|
34
|
+
Effect.fail(
|
|
35
|
+
new PlatformError.SystemError({
|
|
36
|
+
reason: "Unknown",
|
|
37
|
+
module: "System",
|
|
38
|
+
method: "randomFreePort",
|
|
39
|
+
description: "Failed to allocate a free port",
|
|
40
|
+
}),
|
|
41
|
+
),
|
|
42
|
+
),
|
|
43
|
+
)
|
|
44
|
+
return
|
|
45
|
+
}
|
|
46
|
+
const port = address.port
|
|
47
|
+
server.close((err) => {
|
|
48
|
+
if (err) {
|
|
49
|
+
resume(
|
|
50
|
+
Effect.fail(
|
|
51
|
+
new PlatformError.SystemError({
|
|
52
|
+
reason: "Unknown",
|
|
53
|
+
module: "System",
|
|
54
|
+
method: "randomFreePort",
|
|
55
|
+
description: err.message,
|
|
56
|
+
cause: err,
|
|
57
|
+
}),
|
|
58
|
+
),
|
|
59
|
+
)
|
|
60
|
+
return
|
|
61
|
+
}
|
|
62
|
+
resume(Effect.succeed(port))
|
|
63
|
+
})
|
|
64
|
+
})
|
|
65
|
+
})
|
|
66
|
+
|
|
9
67
|
export const which = (name: string): Effect.Effect<string, PlatformError.SystemError> =>
|
|
10
68
|
Effect.flatMap(
|
|
11
69
|
Effect.try({
|
|
@@ -33,11 +91,10 @@ export const which = (name: string): Effect.Effect<string, PlatformError.SystemE
|
|
|
33
91
|
)
|
|
34
92
|
|
|
35
93
|
export const spawn = (
|
|
36
|
-
|
|
37
|
-
args?: ReadonlyArray<string>,
|
|
94
|
+
cmd: readonly [string, ...Array<string>],
|
|
38
95
|
options?: ChildProcess.Command.Options,
|
|
39
96
|
): Effect.Effect<
|
|
40
97
|
ChildProcess.ChildProcessHandle,
|
|
41
98
|
PlatformError.PlatformError,
|
|
42
99
|
ChildProcess.ChildProcessSpawner | Scope.Scope
|
|
43
|
-
> => ChildProcess.spawn(ChildProcess.make(
|
|
100
|
+
> => ChildProcess.spawn(ChildProcess.make(cmd, options))
|