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
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/Entity.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import * as Effectable from "effect/Effectable"
|
|
1
2
|
import * as Effect from "effect/Effect"
|
|
2
3
|
import * as ParseResult from "effect/ParseResult"
|
|
3
|
-
import * as Pipeable from "effect/Pipeable"
|
|
4
4
|
import * as Predicate from "effect/Predicate"
|
|
5
5
|
import * as Schema from "effect/Schema"
|
|
6
6
|
import * as Stream from "effect/Stream"
|
|
@@ -24,7 +24,7 @@ export type Headers = {
|
|
|
24
24
|
[header: string]: string | null | undefined
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
export interface Entity<T = unknown, E = never> extends
|
|
27
|
+
export interface Entity<T = unknown, E = never> extends Effect.Effect<Entity<T, E>, E> {
|
|
28
28
|
readonly [TypeId]: TypeId
|
|
29
29
|
readonly body: T
|
|
30
30
|
readonly headers: Headers
|
|
@@ -57,7 +57,7 @@ export interface Entity<T = unknown, E = never> extends Pipeable.Pipeable {
|
|
|
57
57
|
: Stream.Stream<Uint8Array, ParseResult.ParseError | E>
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
export interface Proto extends
|
|
60
|
+
export interface Proto extends Effect.Effect<Entity, never> {
|
|
61
61
|
readonly [TypeId]: TypeId
|
|
62
62
|
}
|
|
63
63
|
|
|
@@ -218,11 +218,11 @@ function getStream(self: Entity<unknown, unknown>): Stream.Stream<unknown, unkno
|
|
|
218
218
|
return Stream.fromEffect(getBytes(self))
|
|
219
219
|
}
|
|
220
220
|
|
|
221
|
-
const Proto: Proto = Object.defineProperties(Object.create(
|
|
221
|
+
const Proto: Proto = Object.defineProperties(Object.create(Effectable.CommitPrototype), {
|
|
222
222
|
[TypeId]: { value: TypeId },
|
|
223
|
-
|
|
223
|
+
commit: {
|
|
224
224
|
value: function (this: Entity) {
|
|
225
|
-
return
|
|
225
|
+
return resolve(this)
|
|
226
226
|
},
|
|
227
227
|
},
|
|
228
228
|
text: {
|
package/src/FileRouterCodegen.ts
CHANGED
|
@@ -166,14 +166,14 @@ export function generateCode(fileRoutes: FileRouter.OrderedFileRoutes): string |
|
|
|
166
166
|
}
|
|
167
167
|
|
|
168
168
|
const routeEntries = entries
|
|
169
|
-
.map((
|
|
170
|
-
const loadersCode = loaders.join(",\n ")
|
|
171
|
-
return ` "${path}": [\n ${loadersCode},\n ]`
|
|
169
|
+
.map((v) => {
|
|
170
|
+
const loadersCode = v.loaders.join(",\n ")
|
|
171
|
+
return ` "${v.path}": [\n ${loadersCode},\n ]`
|
|
172
172
|
})
|
|
173
173
|
.join(",\n")
|
|
174
174
|
|
|
175
175
|
return `/**
|
|
176
|
-
* Auto-generated by effect-start.
|
|
176
|
+
* Auto-generated by effect-start on startup and changes. Do not edit manually.
|
|
177
177
|
*/
|
|
178
178
|
|
|
179
179
|
export default {
|
package/src/FileSystem.ts
CHANGED
|
@@ -342,16 +342,9 @@ export const make = (
|
|
|
342
342
|
})
|
|
343
343
|
}
|
|
344
344
|
|
|
345
|
-
const fileStream = (
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
bufferSize = 16,
|
|
349
|
-
bytesToRead: bytesToRead_,
|
|
350
|
-
chunkSize: chunkSize_ = Size(64 * 1024),
|
|
351
|
-
}: StreamOptions = {},
|
|
352
|
-
) => {
|
|
353
|
-
const bytesToRead = bytesToRead_ !== undefined ? Size(bytesToRead_) : undefined
|
|
354
|
-
const chunkSize = Size(chunkSize_)
|
|
345
|
+
const fileStream = (file: File, options: StreamOptions = {}) => {
|
|
346
|
+
const bytesToRead = options.bytesToRead !== undefined ? Size(options.bytesToRead) : undefined
|
|
347
|
+
const chunkSize = Size(options.chunkSize ?? 64 * 1024)
|
|
355
348
|
|
|
356
349
|
function loop(
|
|
357
350
|
totalBytesRead: bigint,
|
|
@@ -385,6 +378,6 @@ const fileStream = (
|
|
|
385
378
|
}
|
|
386
379
|
|
|
387
380
|
return Stream.bufferChunks(Stream.fromChannel(loop(BigInt(0))), {
|
|
388
|
-
capacity: bufferSize,
|
|
381
|
+
capacity: options.bufferSize ?? 16,
|
|
389
382
|
})
|
|
390
383
|
}
|
|
@@ -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>
|
|
@@ -34,7 +34,7 @@ export function filter<
|
|
|
34
34
|
|
|
35
35
|
const mergedContext = filterResult ? { ...context, ...filterResult.context } : context
|
|
36
36
|
|
|
37
|
-
return yield*
|
|
37
|
+
return yield* next(mergedContext as Partial<BOut>)
|
|
38
38
|
}),
|
|
39
39
|
)
|
|
40
40
|
|
package/src/RouteSse.ts
CHANGED
|
@@ -13,7 +13,7 @@ const HEARTBEAT = ": <3\n\n"
|
|
|
13
13
|
|
|
14
14
|
export interface SseEvent {
|
|
15
15
|
data?: string | undefined
|
|
16
|
-
|
|
16
|
+
type?: string
|
|
17
17
|
retry?: number
|
|
18
18
|
}
|
|
19
19
|
|
|
@@ -35,8 +35,8 @@ function formatSseEvent(event: SseEventInput): string {
|
|
|
35
35
|
|
|
36
36
|
const e = event as SseEvent
|
|
37
37
|
let result = ""
|
|
38
|
-
if (e.
|
|
39
|
-
result += `event: ${e.
|
|
38
|
+
if (e.type) {
|
|
39
|
+
result += `event: ${e.type}\n`
|
|
40
40
|
}
|
|
41
41
|
if (typeof e.data === "string") {
|
|
42
42
|
for (const line of e.data.split("\n")) {
|
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,13 +2,20 @@ 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"
|
|
6
|
+
import * as ExecutionStrategy from "effect/ExecutionStrategy"
|
|
7
|
+
import * as Exit from "effect/Exit"
|
|
5
8
|
import * as Function from "effect/Function"
|
|
6
9
|
import * as Layer from "effect/Layer"
|
|
10
|
+
import * as Scope from "effect/Scope"
|
|
11
|
+
import * as SynchronizedRef from "effect/SynchronizedRef"
|
|
7
12
|
import type * as ChildProcess from "./ChildProcess.ts"
|
|
13
|
+
import * as MutableRef from "effect/MutableRef"
|
|
8
14
|
import * as BunRuntime from "./bun/BunRuntime.ts"
|
|
9
15
|
import * as BunServer from "./bun/BunServer.ts"
|
|
10
16
|
import * as NodeFileSystem from "./node/NodeFileSystem.ts"
|
|
11
17
|
import * as BunChildProcessSpawner from "./bun/BunChildProcessSpawner.ts"
|
|
18
|
+
import * as PlatformRuntime from "./PlatformRuntime.ts"
|
|
12
19
|
import * as StartApp from "./StartApp.ts"
|
|
13
20
|
|
|
14
21
|
export function layer<
|
|
@@ -45,7 +52,7 @@ export function layer<
|
|
|
45
52
|
* @category constructors
|
|
46
53
|
*/
|
|
47
54
|
export function pack<const Layers extends readonly [Layer.Layer.Any, ...Array<Layer.Layer.Any>]>(
|
|
48
|
-
...layers: Layers
|
|
55
|
+
...layers: Layers & OrderedPack<NoInfer<Layers>, NoInfer<Layers>>
|
|
49
56
|
): Layer.Layer<
|
|
50
57
|
{ [K in keyof Layers]: Layer.Layer.Success<Layers[K]> }[number],
|
|
51
58
|
{ [K in keyof Layers]: Layer.Layer.Error<Layers[K]> }[number],
|
|
@@ -64,6 +71,105 @@ export function pack<const Layers extends readonly [Layer.Layer.Any, ...Array<La
|
|
|
64
71
|
return result as AnyLayer
|
|
65
72
|
}
|
|
66
73
|
|
|
74
|
+
type Unsatisfied<Unmet, Success> = Unmet extends Success ? Unmet : never
|
|
75
|
+
|
|
76
|
+
type OrderedPack<
|
|
77
|
+
Layers extends readonly Layer.Layer.Any[],
|
|
78
|
+
All extends readonly Layer.Layer.Any[],
|
|
79
|
+
> = Layers extends readonly [
|
|
80
|
+
infer Head extends Layer.Layer.Any,
|
|
81
|
+
...infer Tail extends Layer.Layer.Any[],
|
|
82
|
+
]
|
|
83
|
+
? [
|
|
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
|
+
]
|
|
97
|
+
: []
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Like `pack`, but accepts layers in any order.
|
|
101
|
+
*
|
|
102
|
+
* ```ts
|
|
103
|
+
* // These all produce the same result:
|
|
104
|
+
* Start.build(LoggerLive, DatabaseLive, UserRepoLive)
|
|
105
|
+
* Start.build(UserRepoLive, DatabaseLive, LoggerLive)
|
|
106
|
+
* ```
|
|
107
|
+
*
|
|
108
|
+
* @since 1.0.0
|
|
109
|
+
* @category constructors
|
|
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>]>(
|
|
125
|
+
...layers: Layers
|
|
126
|
+
): Layer.Layer<BuildSuccess<Layers>, BuildError<Layers>, BuildContext<Layers>> {
|
|
127
|
+
type AnyLayer = Layer.Layer<any, any, any>
|
|
128
|
+
const layerArray = layers as unknown as ReadonlyArray<AnyLayer>
|
|
129
|
+
|
|
130
|
+
return Layer.scopedContext(
|
|
131
|
+
Effect.gen(function* () {
|
|
132
|
+
const scope = yield* Effect.scope
|
|
133
|
+
const memoMap = yield* Layer.makeMemoMap
|
|
134
|
+
const memoMapRef = (memoMap as any).ref as SynchronizedRef.SynchronizedRef<Map<AnyLayer, any>>
|
|
135
|
+
let ctx = yield* Effect.context<any>()
|
|
136
|
+
const pending = new Set<AnyLayer>(layerArray)
|
|
137
|
+
|
|
138
|
+
for (let pass = 0; pass < layerArray.length && pending.size > 0; pass++) {
|
|
139
|
+
for (const layer of pending) {
|
|
140
|
+
const childScope = yield* Scope.fork(scope, ExecutionStrategy.sequential)
|
|
141
|
+
const exit = yield* layer.pipe(
|
|
142
|
+
Layer.buildWithMemoMap(memoMap, childScope),
|
|
143
|
+
Effect.provide(ctx),
|
|
144
|
+
Effect.exit,
|
|
145
|
+
)
|
|
146
|
+
if (Exit.isSuccess(exit)) {
|
|
147
|
+
ctx = Context.merge(ctx, exit.value)
|
|
148
|
+
pending.delete(layer)
|
|
149
|
+
} else {
|
|
150
|
+
yield* Scope.close(childScope, exit)
|
|
151
|
+
yield* SynchronizedRef.update(memoMapRef, (map) => {
|
|
152
|
+
map.delete(layer)
|
|
153
|
+
return map
|
|
154
|
+
})
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
for (const layer of pending) {
|
|
160
|
+
const childScope = yield* Scope.fork(scope, ExecutionStrategy.sequential)
|
|
161
|
+
const built = yield* layer.pipe(
|
|
162
|
+
Layer.buildWithMemoMap(memoMap, childScope),
|
|
163
|
+
Effect.provide(ctx),
|
|
164
|
+
)
|
|
165
|
+
ctx = Context.merge(ctx, built)
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
return ctx
|
|
169
|
+
}),
|
|
170
|
+
)
|
|
171
|
+
}
|
|
172
|
+
|
|
67
173
|
export type PlatformServices =
|
|
68
174
|
| BunServer.BunServer
|
|
69
175
|
| FileSystem.FileSystem
|
|
@@ -105,3 +211,8 @@ export function serve<ROut, E, RIn extends PlatformServices>(
|
|
|
105
211
|
|
|
106
212
|
return Function.pipe(composed, Layer.launch, BunRuntime.runMain)
|
|
107
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
|
+
})
|