effect-start 0.23.0 → 0.25.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.js +32 -20
- package/dist/Commander.js +377 -293
- package/dist/ContentNegotiation.js +424 -318
- package/dist/Cookies.js +340 -271
- package/dist/Development.js +85 -49
- package/dist/Effectify.js +22 -14
- package/dist/Entity.js +260 -195
- package/dist/Fetch.js +192 -0
- package/dist/FilePathPattern.js +88 -77
- package/dist/FileRouter.js +192 -136
- package/dist/FileRouterCodegen.js +262 -191
- package/dist/FileSystem.js +126 -64
- package/dist/Http.js +96 -77
- package/dist/PathPattern.js +311 -273
- package/dist/PlatformError.js +36 -21
- package/dist/PlatformRuntime.js +65 -40
- package/dist/Route.js +122 -79
- package/dist/RouteBody.js +83 -58
- package/dist/RouteError.js +46 -25
- package/dist/RouteHook.js +58 -34
- package/dist/RouteHttp.js +346 -237
- package/dist/RouteHttpTracer.js +86 -58
- package/dist/RouteMount.js +81 -58
- package/dist/RouteSchema.js +253 -170
- package/dist/RouteSse.js +87 -72
- package/dist/RouteTree.js +99 -73
- package/dist/RouteTrie.js +160 -133
- package/dist/SchemaExtra.js +87 -62
- package/dist/Socket.js +32 -21
- package/dist/SqlIntrospect.js +317 -268
- package/dist/Start.js +55 -25
- package/dist/StartApp.js +3 -21
- package/dist/StreamExtra.js +109 -74
- package/dist/System.js +37 -21
- package/dist/TuplePathPattern.js +64 -58
- package/dist/Unique.js +159 -120
- package/dist/Values.js +48 -32
- package/dist/bun/BunBundle.js +158 -109
- package/dist/bun/BunChildProcessSpawner.js +121 -82
- package/dist/bun/BunImportTrackerPlugin.js +85 -63
- package/dist/bun/BunRoute.js +135 -99
- package/dist/bun/BunRuntime.js +39 -29
- package/dist/bun/BunServer.js +268 -140
- package/dist/bun/BunVirtualFilesPlugin.js +47 -33
- package/dist/bun/_BunEnhancedResolve.js +107 -82
- package/dist/bun/index.js +5 -5
- package/dist/bundler/Bundle.js +82 -38
- package/dist/bundler/BundleFiles.js +140 -82
- package/dist/bundler/BundleRoute.js +49 -38
- package/dist/client/Overlay.js +29 -28
- package/dist/client/ScrollState.js +94 -82
- package/dist/client/index.js +79 -61
- package/dist/console/Console.js +40 -24
- package/dist/console/ConsoleErrors.js +189 -178
- package/dist/console/ConsoleLogger.js +52 -43
- package/dist/console/ConsoleMetrics.js +69 -58
- package/dist/console/ConsoleProcess.js +57 -47
- package/dist/console/ConsoleStore.js +56 -45
- package/dist/console/ConsoleTracer.js +101 -88
- package/dist/console/Simulation.js +714 -563
- package/dist/console/index.js +3 -3
- package/dist/console/routes/tree.js +29 -28
- package/dist/datastar/actions/fetch.js +514 -381
- package/dist/datastar/actions/peek.js +12 -12
- package/dist/datastar/actions/setAll.js +18 -11
- package/dist/datastar/actions/toggleAll.js +18 -11
- package/dist/datastar/attributes/attr.js +48 -47
- package/dist/datastar/attributes/bind.js +186 -167
- package/dist/datastar/attributes/class.js +51 -44
- package/dist/datastar/attributes/computed.js +23 -24
- package/dist/datastar/attributes/effect.js +9 -8
- package/dist/datastar/attributes/indicator.js +32 -29
- package/dist/datastar/attributes/init.js +26 -25
- package/dist/datastar/attributes/jsonSignals.js +32 -29
- package/dist/datastar/attributes/on.js +76 -73
- package/dist/datastar/attributes/onIntersect.js +51 -51
- package/dist/datastar/attributes/onInterval.js +30 -29
- package/dist/datastar/attributes/onSignalPatch.js +49 -40
- package/dist/datastar/attributes/ref.js +10 -9
- package/dist/datastar/attributes/show.js +31 -30
- package/dist/datastar/attributes/signals.js +17 -16
- package/dist/datastar/attributes/style.js +56 -49
- package/dist/datastar/attributes/text.js +28 -25
- package/dist/datastar/engine.js +1079 -933
- package/dist/datastar/index.js +25 -24
- package/dist/datastar/utils.js +203 -155
- package/dist/datastar/watchers/patchElements.js +459 -372
- package/dist/datastar/watchers/patchSignals.js +13 -13
- package/dist/experimental/EncryptedCookies.js +305 -189
- package/dist/experimental/index.js +1 -1
- package/dist/hyper/Hyper.js +22 -17
- package/dist/hyper/HyperHtml.js +138 -123
- package/dist/hyper/HyperNode.js +11 -9
- package/dist/hyper/HyperRoute.js +41 -28
- package/dist/hyper/html.js +27 -27
- package/dist/hyper/index.js +5 -5
- package/dist/hyper/jsx-runtime.js +11 -5
- package/dist/index.js +8 -8
- package/dist/node/NodeFileSystem.js +606 -341
- package/dist/node/NodeUtils.js +21 -18
- package/dist/sql/Sql.js +8 -0
- package/dist/sql/bun/index.js +134 -67
- package/dist/sql/index.js +1 -0
- package/dist/sql/libsql/index.js +156 -0
- package/dist/sql/mssql/docker.js +103 -60
- package/dist/sql/mssql/index.js +182 -101
- package/dist/testing/TestLogger.js +39 -29
- package/dist/testing/index.js +2 -2
- package/dist/testing/utils.js +45 -23
- package/dist/x/cloudflare/CloudflareTunnel.js +61 -28
- package/dist/x/cloudflare/index.js +1 -1
- package/dist/x/tailscale/TailscaleTunnel.js +86 -60
- package/dist/x/tailscale/index.js +1 -1
- package/dist/x/tailwind/TailwindPlugin.js +280 -205
- package/dist/x/tailwind/compile.js +185 -129
- package/dist/x/tailwind/plugin.js +13 -11
- package/package.json +1 -1
- package/src/Development.ts +3 -1
- package/src/Entity.ts +17 -0
- package/src/Fetch.ts +271 -0
- package/src/SqlIntrospect.ts +64 -70
- package/src/Start.ts +24 -22
- package/src/StartApp.ts +11 -0
- package/src/bun/BunServer.ts +89 -16
- package/src/hyper/HyperHtml.ts +0 -1
- package/src/sql/bun/index.ts +1 -1
- package/src/sql/index.ts +1 -0
- package/src/sql/libsql/index.ts +173 -0
- package/src/sql/libsql/libsql.d.ts +39 -0
- package/src/sql/mssql/index.ts +1 -1
- package/src/x/tailscale/TailscaleTunnel.ts +7 -5
- package/dist/BlobStore.d.ts +0 -80
- package/dist/BlobStore.js +0 -19
- package/dist/ChildProcess.d.ts +0 -60
- package/dist/Commander.d.ts +0 -100
- package/dist/ContentNegotiation.d.ts +0 -12
- package/dist/Cookies.d.ts +0 -47
- package/dist/Development.d.ts +0 -39
- package/dist/Effectify.d.ts +0 -209
- package/dist/Entity.d.ts +0 -47
- package/dist/FilePathPattern.d.ts +0 -29
- package/dist/FileRouter.d.ts +0 -56
- package/dist/FileRouterCodegen.d.ts +0 -18
- package/dist/FileRouterPattern.d.ts +0 -9
- package/dist/FileRouterPattern.js +0 -35
- package/dist/FileSystem.d.ts +0 -158
- package/dist/Http.d.ts +0 -37
- package/dist/HttpAppExtra.d.ts +0 -7
- package/dist/HttpAppExtra.js +0 -320
- package/dist/HttpUtils.d.ts +0 -3
- package/dist/HttpUtils.js +0 -11
- package/dist/PathPattern.d.ts +0 -134
- package/dist/PlatformError.d.ts +0 -38
- package/dist/PlatformRuntime.d.ts +0 -27
- package/dist/Route.d.ts +0 -97
- package/dist/RouteBody.d.ts +0 -47
- package/dist/RouteError.d.ts +0 -98
- package/dist/RouteHook.d.ts +0 -12
- package/dist/RouteHttp.d.ts +0 -21
- package/dist/RouteHttpTracer.d.ts +0 -10
- package/dist/RouteMount.d.ts +0 -86
- package/dist/RouteSchema.d.ts +0 -86
- package/dist/RouteSse.d.ts +0 -21
- package/dist/RouteTree.d.ts +0 -57
- package/dist/RouteTrie.d.ts +0 -20
- package/dist/RouterPattern.d.ts +0 -118
- package/dist/RouterPattern.js +0 -269
- package/dist/SchemaExtra.d.ts +0 -7
- package/dist/Socket.d.ts +0 -27
- package/dist/Sql.d.ts +0 -34
- package/dist/Sql.js +0 -5
- package/dist/SqlIntrospect.d.ts +0 -91
- package/dist/Start.d.ts +0 -44
- package/dist/StartApp.d.ts +0 -19
- package/dist/StreamExtra.d.ts +0 -28
- package/dist/System.d.ts +0 -7
- package/dist/TuplePathPattern.d.ts +0 -9
- package/dist/Unique.d.ts +0 -50
- package/dist/Values.d.ts +0 -27
- package/dist/bun/BunBlobStoreDisk.d.ts +0 -6
- package/dist/bun/BunBlobStoreDisk.js +0 -116
- package/dist/bun/BunBlobStoreS3.d.ts +0 -11
- package/dist/bun/BunBlobStoreS3.js +0 -89
- package/dist/bun/BunBlobWatcherDisk.d.ts +0 -6
- package/dist/bun/BunBlobWatcherDisk.js +0 -60
- package/dist/bun/BunBlobWatcherQueue.d.ts +0 -6
- package/dist/bun/BunBlobWatcherQueue.js +0 -17
- package/dist/bun/BunBundle.d.ts +0 -11
- package/dist/bun/BunChildProcessSpawner.d.ts +0 -3
- package/dist/bun/BunHttpServer.d.ts +0 -44
- package/dist/bun/BunHttpServer.js +0 -186
- package/dist/bun/BunHttpServer_web.d.ts +0 -60
- package/dist/bun/BunHttpServer_web.js +0 -252
- package/dist/bun/BunImportTrackerPlugin.d.ts +0 -13
- package/dist/bun/BunPlatformHttpServer.d.ts +0 -10
- package/dist/bun/BunPlatformHttpServer.js +0 -53
- package/dist/bun/BunRoute.d.ts +0 -48
- package/dist/bun/BunRuntime.d.ts +0 -2
- package/dist/bun/BunServer.d.ts +0 -40
- package/dist/bun/BunServerRequest.d.ts +0 -60
- package/dist/bun/BunServerRequest.js +0 -252
- package/dist/bun/BunSql.d.ts +0 -4
- package/dist/bun/BunSql.js +0 -81
- package/dist/bun/BunVirtualFilesPlugin.d.ts +0 -4
- package/dist/bun/_BunEnhancedResolve.d.ts +0 -45
- package/dist/bun/index.d.ts +0 -5
- package/dist/bundler/Bundle.d.ts +0 -61
- package/dist/bundler/BundleFiles.d.ts +0 -13
- package/dist/bundler/BundleHttp.d.ts +0 -45
- package/dist/bundler/BundleHttp.js +0 -176
- package/dist/bundler/BundleRoute.d.ts +0 -27
- package/dist/client/Overlay.d.ts +0 -2
- package/dist/client/ScrollState.d.ts +0 -6
- package/dist/client/index.d.ts +0 -6
- package/dist/console/Console.d.ts +0 -6
- package/dist/console/ConsoleErrors.d.ts +0 -3
- package/dist/console/ConsoleLogger.d.ts +0 -3
- package/dist/console/ConsoleMetrics.d.ts +0 -3
- package/dist/console/ConsoleProcess.d.ts +0 -3
- package/dist/console/ConsoleStore.d.ts +0 -144
- package/dist/console/ConsoleTracer.d.ts +0 -3
- package/dist/console/Simulation.d.ts +0 -2
- package/dist/console/index.d.ts +0 -3
- package/dist/console/routes/errors/route.d.ts +0 -10
- package/dist/console/routes/errors/route.js +0 -47
- package/dist/console/routes/fiberDetail.d.ts +0 -16
- package/dist/console/routes/fiberDetail.js +0 -38
- package/dist/console/routes/fibers/route.d.ts +0 -10
- package/dist/console/routes/fibers/route.js +0 -19
- package/dist/console/routes/git/route.d.ts +0 -11
- package/dist/console/routes/git/route.js +0 -33
- package/dist/console/routes/layout.d.ts +0 -9
- package/dist/console/routes/layout.js +0 -3
- package/dist/console/routes/logs/route.d.ts +0 -10
- package/dist/console/routes/logs/route.js +0 -32
- package/dist/console/routes/metrics/route.d.ts +0 -10
- package/dist/console/routes/metrics/route.js +0 -17
- package/dist/console/routes/route.d.ts +0 -6
- package/dist/console/routes/route.js +0 -5
- package/dist/console/routes/routes/route.d.ts +0 -6
- package/dist/console/routes/routes/route.js +0 -20
- package/dist/console/routes/services/route.d.ts +0 -6
- package/dist/console/routes/services/route.js +0 -12
- package/dist/console/routes/system/route.d.ts +0 -10
- package/dist/console/routes/system/route.js +0 -18
- package/dist/console/routes/traceDetail.d.ts +0 -16
- package/dist/console/routes/traceDetail.js +0 -14
- package/dist/console/routes/traces/route.d.ts +0 -10
- package/dist/console/routes/traces/route.js +0 -39
- package/dist/console/routes/tree.d.ts +0 -153
- package/dist/console/ui/Errors.d.ts +0 -4
- package/dist/console/ui/Errors.js +0 -15
- package/dist/console/ui/Fibers.d.ts +0 -24
- package/dist/console/ui/Fibers.js +0 -121
- package/dist/console/ui/Git.d.ts +0 -20
- package/dist/console/ui/Git.js +0 -95
- package/dist/console/ui/Logs.d.ts +0 -4
- package/dist/console/ui/Logs.js +0 -25
- package/dist/console/ui/Metrics.d.ts +0 -4
- package/dist/console/ui/Metrics.js +0 -26
- package/dist/console/ui/Routes.d.ts +0 -8
- package/dist/console/ui/Routes.js +0 -70
- package/dist/console/ui/Services.d.ts +0 -10
- package/dist/console/ui/Services.js +0 -246
- package/dist/console/ui/Shell.d.ts +0 -10
- package/dist/console/ui/Shell.js +0 -7
- package/dist/console/ui/System.d.ts +0 -4
- package/dist/console/ui/System.js +0 -35
- package/dist/console/ui/Traces.d.ts +0 -12
- package/dist/console/ui/Traces.js +0 -179
- package/dist/datastar/actions/fetch.d.ts +0 -30
- package/dist/datastar/actions/peek.d.ts +0 -1
- package/dist/datastar/actions/setAll.d.ts +0 -1
- package/dist/datastar/actions/toggleAll.d.ts +0 -1
- package/dist/datastar/attributes/attr.d.ts +0 -1
- package/dist/datastar/attributes/bind.d.ts +0 -1
- package/dist/datastar/attributes/class.d.ts +0 -1
- package/dist/datastar/attributes/computed.d.ts +0 -1
- package/dist/datastar/attributes/effect.d.ts +0 -1
- package/dist/datastar/attributes/indicator.d.ts +0 -1
- package/dist/datastar/attributes/init.d.ts +0 -1
- package/dist/datastar/attributes/jsonSignals.d.ts +0 -1
- package/dist/datastar/attributes/on.d.ts +0 -1
- package/dist/datastar/attributes/onIntersect.d.ts +0 -1
- package/dist/datastar/attributes/onInterval.d.ts +0 -1
- package/dist/datastar/attributes/onSignalPatch.d.ts +0 -1
- package/dist/datastar/attributes/ref.d.ts +0 -1
- package/dist/datastar/attributes/show.d.ts +0 -1
- package/dist/datastar/attributes/signals.d.ts +0 -1
- package/dist/datastar/attributes/style.d.ts +0 -1
- package/dist/datastar/attributes/text.d.ts +0 -1
- package/dist/datastar/engine.d.ts +0 -162
- package/dist/datastar/happydom.d.ts +0 -1
- package/dist/datastar/happydom.js +0 -8
- package/dist/datastar/index.d.ts +0 -24
- package/dist/datastar/load.d.ts +0 -24
- package/dist/datastar/load.js +0 -24
- package/dist/datastar/utils.d.ts +0 -51
- package/dist/datastar/watchers/patchElements.d.ts +0 -1
- package/dist/datastar/watchers/patchSignals.d.ts +0 -1
- package/dist/experimental/EncryptedCookies.d.ts +0 -48
- package/dist/experimental/SseHttpResponse.d.ts +0 -7
- package/dist/experimental/SseHttpResponse.js +0 -28
- package/dist/experimental/index.d.ts +0 -1
- package/dist/hyper/Hyper.d.ts +0 -25
- package/dist/hyper/HyperHtml.d.ts +0 -23
- package/dist/hyper/HyperHtml.test.d.ts +0 -1
- package/dist/hyper/HyperHtml.test.js +0 -197
- package/dist/hyper/HyperNode.d.ts +0 -14
- package/dist/hyper/HyperRoute.d.ts +0 -8
- package/dist/hyper/HyperRoute.test.d.ts +0 -1
- package/dist/hyper/HyperRoute.test.js +0 -83
- package/dist/hyper/html.d.ts +0 -11
- package/dist/hyper/index.d.ts +0 -6
- package/dist/hyper/jsx-runtime.d.ts +0 -7
- package/dist/index.d.ts +0 -8
- package/dist/inference_check.d.ts +0 -1
- package/dist/inference_check.js +0 -15
- package/dist/lint/plugin.d.ts +0 -86
- package/dist/lint/plugin.js +0 -341
- package/dist/middlewares/BasicAuthMiddleware.d.ts +0 -8
- package/dist/middlewares/BasicAuthMiddleware.js +0 -22
- package/dist/middlewares/index.d.ts +0 -1
- package/dist/middlewares/index.js +0 -1
- package/dist/node/Effectify.d.ts +0 -209
- package/dist/node/Effectify.js +0 -19
- package/dist/node/FileSystem.d.ts +0 -7
- package/dist/node/FileSystem.js +0 -420
- package/dist/node/NodeFileSystem.d.ts +0 -7
- package/dist/node/NodeUtils.d.ts +0 -2
- package/dist/node/PlatformError.d.ts +0 -46
- package/dist/node/PlatformError.js +0 -43
- package/dist/node/Utils.d.ts +0 -1
- package/dist/node/Utils.js +0 -19
- package/dist/repro_fail.d.ts +0 -1
- package/dist/repro_fail.js +0 -14
- package/dist/sql/bun/index.d.ts +0 -3
- package/dist/sql/mssql/docker.d.ts +0 -2
- package/dist/sql/mssql/index.d.ts +0 -21
- package/dist/testing/TestHttpClient.d.ts +0 -13
- package/dist/testing/TestHttpClient.js +0 -68
- package/dist/testing/TestLogger.d.ts +0 -13
- package/dist/testing/index.d.ts +0 -2
- package/dist/testing/utils.d.ts +0 -9
- package/dist/x/cloudflare/CloudflareTunnel.d.ts +0 -10
- package/dist/x/cloudflare/index.d.ts +0 -1
- package/dist/x/datastar/Datastar.d.ts +0 -6
- package/dist/x/datastar/Datastar.js +0 -47
- package/dist/x/datastar/index.d.ts +0 -1
- package/dist/x/datastar/index.js +0 -1
- package/dist/x/tailscale/TailscaleTunnel.d.ts +0 -15
- package/dist/x/tailscale/index.d.ts +0 -1
- package/dist/x/tailwind/TailwindPlugin.d.ts +0 -23
- package/dist/x/tailwind/compile.d.ts +0 -19
- package/dist/x/tailwind/plugin.d.ts +0 -2
- /package/src/{Sql.ts → sql/Sql.ts} +0 -0
package/src/bun/BunServer.ts
CHANGED
|
@@ -15,6 +15,7 @@ import * as PathPattern from "../PathPattern.ts"
|
|
|
15
15
|
import * as PlataformRuntime from "../PlatformRuntime.ts"
|
|
16
16
|
import * as Route from "../Route.ts"
|
|
17
17
|
import * as RouteHttp from "../RouteHttp.ts"
|
|
18
|
+
import * as StartApp from "../StartApp.ts"
|
|
18
19
|
import type * as RouteMount from "../RouteMount.ts"
|
|
19
20
|
import * as RouteTree from "../RouteTree.ts"
|
|
20
21
|
import * as BunRoute from "./BunRoute.ts"
|
|
@@ -52,12 +53,11 @@ export type BunServer = {
|
|
|
52
53
|
|
|
53
54
|
export const BunServer = Context.GenericTag<BunServer>("effect-start/BunServer")
|
|
54
55
|
|
|
55
|
-
export const make = (
|
|
56
|
+
export const make = (
|
|
57
|
+
options: BunServeOptions,
|
|
58
|
+
tree?: RouteTree.RouteTree,
|
|
59
|
+
): Effect.Effect<BunServer, never, Scope.Scope> =>
|
|
56
60
|
Effect.gen(function* () {
|
|
57
|
-
const routes = yield* Effect.serviceOption(Route.Routes).pipe(
|
|
58
|
-
Effect.andThen(Option.getOrUndefined),
|
|
59
|
-
)
|
|
60
|
-
|
|
61
61
|
const port = yield* Config.number("PORT").pipe(
|
|
62
62
|
Effect.catchTag("ConfigError", () => {
|
|
63
63
|
return PlataformRuntime.isAgentHarness()
|
|
@@ -66,7 +66,7 @@ export const make = (options: BunServeOptions): Effect.Effect<BunServer, never,
|
|
|
66
66
|
}),
|
|
67
67
|
)
|
|
68
68
|
const hostFlag = process.argv.includes("--host")
|
|
69
|
-
const hostname = yield* Config.string("
|
|
69
|
+
const hostname = yield* Config.string("HOST").pipe(
|
|
70
70
|
Effect.catchTag("ConfigError", () => Effect.succeed(hostFlag ? "0.0.0.0" : undefined)),
|
|
71
71
|
)
|
|
72
72
|
|
|
@@ -98,7 +98,7 @@ export const make = (options: BunServeOptions): Effect.Effect<BunServer, never,
|
|
|
98
98
|
Effect.andThen(Runtime.provideService(BunServer, service)),
|
|
99
99
|
)
|
|
100
100
|
|
|
101
|
-
let currentRoutes: BunRoute.BunRoutes =
|
|
101
|
+
let currentRoutes: BunRoute.BunRoutes = tree ? yield* walkBunRoutes(runtime, tree) : {}
|
|
102
102
|
|
|
103
103
|
const websocket: Bun.WebSocketHandler<WebSocketContext> = {
|
|
104
104
|
open(ws) {
|
|
@@ -170,16 +170,56 @@ export const make = (options: BunServeOptions): Effect.Effect<BunServer, never,
|
|
|
170
170
|
export const layer = (options?: BunServeOptions): Layer.Layer<BunServer> =>
|
|
171
171
|
Layer.scoped(BunServer, make(options ?? {}))
|
|
172
172
|
|
|
173
|
+
export const layerRoutes = (
|
|
174
|
+
options?: BunServeOptions,
|
|
175
|
+
): Layer.Layer<BunServer, never, Route.Routes> =>
|
|
176
|
+
Layer.scoped(
|
|
177
|
+
BunServer,
|
|
178
|
+
Effect.gen(function* () {
|
|
179
|
+
const routes = yield* Route.Routes
|
|
180
|
+
return yield* make(options ?? {}, routes)
|
|
181
|
+
}),
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Resolves the Bun server in one place for Start.serve so routes are available:
|
|
186
|
+
* 1) Reuse a user-provided BunServer when one already exists in context.
|
|
187
|
+
* 2) Otherwise create the server from Route.Routes when routes are available.
|
|
188
|
+
* 3) Otherwise create a fallback server with the default 404 handler.
|
|
189
|
+
*/
|
|
190
|
+
export const layerStart = (
|
|
191
|
+
options?: BunServeOptions,
|
|
192
|
+
): Layer.Layer<BunServer, never, StartApp.StartApp> =>
|
|
193
|
+
Layer.scoped(
|
|
194
|
+
BunServer,
|
|
195
|
+
Effect.gen(function* () {
|
|
196
|
+
const app = yield* StartApp.StartApp
|
|
197
|
+
const existing = yield* Effect.serviceOption(BunServer)
|
|
198
|
+
if (Option.isSome(existing)) {
|
|
199
|
+
yield* Deferred.succeed(app.server, existing.value)
|
|
200
|
+
return existing.value
|
|
201
|
+
}
|
|
202
|
+
const routes = yield* Effect.serviceOption(Route.Routes)
|
|
203
|
+
if (Option.isSome(routes)) {
|
|
204
|
+
const server = yield* make(options ?? {}, routes.value)
|
|
205
|
+
yield* Deferred.succeed(app.server, server)
|
|
206
|
+
return server
|
|
207
|
+
}
|
|
208
|
+
const server = yield* make(options ?? {})
|
|
209
|
+
yield* Deferred.succeed(app.server, server)
|
|
210
|
+
return server
|
|
211
|
+
}),
|
|
212
|
+
)
|
|
213
|
+
|
|
173
214
|
export const withLogAddress = <A, E, R>(layer: Layer.Layer<A, E, R>) =>
|
|
174
215
|
Layer.effectDiscard(
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
216
|
+
Effect.gen(function* () {
|
|
217
|
+
const { server } = yield* BunServer
|
|
218
|
+
const { hostname, port } = server
|
|
219
|
+
const addr = hostname === "0.0.0.0" ? getLocalIp() : "localhost"
|
|
179
220
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
),
|
|
221
|
+
yield* Effect.log(`Listening on http://${addr}:${port}`)
|
|
222
|
+
}),
|
|
183
223
|
).pipe(Layer.provideMerge(layer))
|
|
184
224
|
|
|
185
225
|
function walkBunRoutes(runtime: Runtime.Runtime<BunServer>, tree: RouteTree.RouteTree) {
|
|
@@ -220,8 +260,10 @@ function registerPrebuiltBundle(prefix: string, bundle: any, bunRoutes: BunRoute
|
|
|
220
260
|
const mainDir = NPath.dirname(Bun.main)
|
|
221
261
|
const indexPath = NPath.resolve(mainDir, bundle.index)
|
|
222
262
|
|
|
223
|
-
|
|
224
|
-
|
|
263
|
+
const htmlPromise = rewriteRelativeAssetPaths(Bun.file(indexPath).text())
|
|
264
|
+
|
|
265
|
+
bunRoutes[`${prefix}/*`] = async () =>
|
|
266
|
+
new Response(await htmlPromise, { headers: { "content-type": "text/html;charset=utf-8" } })
|
|
225
267
|
|
|
226
268
|
for (const file of bundle.files ?? []) {
|
|
227
269
|
if (file.loader === "html") continue
|
|
@@ -232,6 +274,37 @@ function registerPrebuiltBundle(prefix: string, bundle: any, bunRoutes: BunRoute
|
|
|
232
274
|
}
|
|
233
275
|
}
|
|
234
276
|
|
|
277
|
+
function rewriteRelativeAssetPaths(html: string | Promise<string>): Promise<string> {
|
|
278
|
+
const rewriter = new HTMLRewriter()
|
|
279
|
+
.on("link[href]", {
|
|
280
|
+
element(el) {
|
|
281
|
+
const href = el.getAttribute("href")
|
|
282
|
+
if (href && isRelativePath(href)) {
|
|
283
|
+
el.setAttribute("href", "/" + assetBasename(href))
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
})
|
|
287
|
+
.on("script[src]", {
|
|
288
|
+
element(el) {
|
|
289
|
+
const src = el.getAttribute("src")
|
|
290
|
+
if (src && isRelativePath(src)) {
|
|
291
|
+
el.setAttribute("src", "/" + assetBasename(src))
|
|
292
|
+
}
|
|
293
|
+
},
|
|
294
|
+
})
|
|
295
|
+
|
|
296
|
+
return Promise.resolve(html).then((h) => rewriter.transform(new Response(h)).text())
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
function isRelativePath(path: string): boolean {
|
|
300
|
+
return path.startsWith("./") || path.startsWith("../")
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
function assetBasename(path: string): string {
|
|
304
|
+
const i = path.lastIndexOf("/")
|
|
305
|
+
return i === -1 ? path : path.slice(i + 1)
|
|
306
|
+
}
|
|
307
|
+
|
|
235
308
|
function getLocalIp(): string | undefined {
|
|
236
309
|
return Object.values(NOs.networkInterfaces())
|
|
237
310
|
.flatMap((addresses) => addresses ?? [])
|
package/src/hyper/HyperHtml.ts
CHANGED
package/src/sql/bun/index.ts
CHANGED
|
@@ -4,7 +4,7 @@ import * as FiberRef from "effect/FiberRef"
|
|
|
4
4
|
import * as GlobalValue from "effect/GlobalValue"
|
|
5
5
|
import * as Layer from "effect/Layer"
|
|
6
6
|
import * as Option from "effect/Option"
|
|
7
|
-
import * as Sql from "
|
|
7
|
+
import * as Sql from "../Sql.ts"
|
|
8
8
|
|
|
9
9
|
const errorCode = (error: unknown): string => {
|
|
10
10
|
const e = error as any
|
package/src/sql/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * as Sql from "./Sql.ts"
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect"
|
|
2
|
+
import * as Exit from "effect/Exit"
|
|
3
|
+
import * as FiberRef from "effect/FiberRef"
|
|
4
|
+
import * as GlobalValue from "effect/GlobalValue"
|
|
5
|
+
import * as Layer from "effect/Layer"
|
|
6
|
+
import * as Option from "effect/Option"
|
|
7
|
+
import type * as Libsql from "@libsql/client"
|
|
8
|
+
import * as Sql from "../Sql.ts"
|
|
9
|
+
|
|
10
|
+
export interface LibsqlConfig {
|
|
11
|
+
readonly url: string
|
|
12
|
+
readonly authToken?: string
|
|
13
|
+
readonly syncUrl?: string
|
|
14
|
+
readonly syncInterval?: number
|
|
15
|
+
readonly encryptionKey?: string
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const wrapError = (error: unknown): Sql.SqlError =>
|
|
19
|
+
new Sql.SqlError({
|
|
20
|
+
code: (error as any)?.code ?? "UNKNOWN",
|
|
21
|
+
message: error instanceof Error ? error.message : String(error),
|
|
22
|
+
cause: error,
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
const wrap = <T>(fn: () => PromiseLike<T>): Effect.Effect<T, Sql.SqlError> =>
|
|
26
|
+
Effect.tryPromise({ try: () => Promise.resolve(fn()), catch: wrapError })
|
|
27
|
+
|
|
28
|
+
const makeValues: Sql.SqlQuery["values"] = (obj: any, ...columns: Array<string>) => {
|
|
29
|
+
const items = Array.isArray(obj) ? obj : [obj]
|
|
30
|
+
const cols = columns.length > 0 ? columns : Object.keys(items[0])
|
|
31
|
+
return { value: items, columns: cols }
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const resultSetToRows = <T>(result: Libsql.ResultSet): ReadonlyArray<T> => {
|
|
35
|
+
const { columns, rows } = result
|
|
36
|
+
return rows.map((row) => {
|
|
37
|
+
const obj: any = {}
|
|
38
|
+
for (let i = 0; i < columns.length; i++) obj[columns[i]] = row[i]
|
|
39
|
+
return obj
|
|
40
|
+
})
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const buildQuery = (strings: TemplateStringsArray, values: Array<unknown>) => {
|
|
44
|
+
let sql = strings[0]
|
|
45
|
+
for (let i = 0; i < values.length; i++) sql += "?" + strings[i + 1]
|
|
46
|
+
return { sql, args: values }
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
interface TxState {
|
|
50
|
+
readonly depth: number
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
type LibsqlModule = {
|
|
54
|
+
createClient: (config: Libsql.Config) => Libsql.Client
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const loadLibsql = () => import("@libsql/client") as Promise<LibsqlModule>
|
|
58
|
+
|
|
59
|
+
const currentTransaction = GlobalValue.globalValue(
|
|
60
|
+
Symbol.for("effect-start/sql/libsql/currentTransaction"),
|
|
61
|
+
() => FiberRef.unsafeMake<Option.Option<TxState>>(Option.none()),
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
const executeQuery = <T>(
|
|
65
|
+
client: Libsql.Client,
|
|
66
|
+
sql: string,
|
|
67
|
+
args: Array<unknown>,
|
|
68
|
+
): Effect.Effect<ReadonlyArray<T>, Sql.SqlError> =>
|
|
69
|
+
wrap(() => client.execute({ sql, args })).pipe(Effect.map(resultSetToRows<T>))
|
|
70
|
+
|
|
71
|
+
const runQuery = <T>(
|
|
72
|
+
client: Libsql.Client,
|
|
73
|
+
strings: TemplateStringsArray,
|
|
74
|
+
values: Array<unknown>,
|
|
75
|
+
): Effect.Effect<ReadonlyArray<T>, Sql.SqlError> => {
|
|
76
|
+
const { sql, args } = buildQuery(strings, values)
|
|
77
|
+
return executeQuery(client, sql, args)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const runUnsafe = <T>(
|
|
81
|
+
client: Libsql.Client,
|
|
82
|
+
query: string,
|
|
83
|
+
values?: Array<unknown>,
|
|
84
|
+
): Effect.Effect<ReadonlyArray<T>, Sql.SqlError> =>
|
|
85
|
+
executeQuery(client, query, values ?? [])
|
|
86
|
+
|
|
87
|
+
const exec = (client: Libsql.Client, sql: string) =>
|
|
88
|
+
wrap(() => client.execute(sql))
|
|
89
|
+
|
|
90
|
+
const makeWithTransaction =
|
|
91
|
+
(client: Libsql.Client) =>
|
|
92
|
+
<A, E, R>(self: Effect.Effect<A, E, R>): Effect.Effect<A, Sql.SqlError | E, R> =>
|
|
93
|
+
Effect.uninterruptibleMask((restore) =>
|
|
94
|
+
Effect.flatMap(FiberRef.get(currentTransaction), (txOpt) => {
|
|
95
|
+
if (Option.isSome(txOpt)) {
|
|
96
|
+
const { depth } = txOpt.value
|
|
97
|
+
const name = `sp_${depth}`
|
|
98
|
+
return Effect.gen(function* () {
|
|
99
|
+
yield* exec(client, `SAVEPOINT ${name}`)
|
|
100
|
+
const exit = yield* Effect.exit(
|
|
101
|
+
restore(
|
|
102
|
+
Effect.locally(self, currentTransaction, Option.some({ depth: depth + 1 })),
|
|
103
|
+
),
|
|
104
|
+
)
|
|
105
|
+
if (Exit.isSuccess(exit)) {
|
|
106
|
+
yield* exec(client, `RELEASE SAVEPOINT ${name}`)
|
|
107
|
+
return exit.value
|
|
108
|
+
}
|
|
109
|
+
yield* exec(client, `ROLLBACK TO SAVEPOINT ${name}`).pipe(Effect.orDie)
|
|
110
|
+
return yield* exit
|
|
111
|
+
})
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
return Effect.gen(function* () {
|
|
115
|
+
yield* exec(client, "BEGIN")
|
|
116
|
+
const exit = yield* Effect.exit(
|
|
117
|
+
restore(Effect.locally(self, currentTransaction, Option.some({ depth: 1 }))),
|
|
118
|
+
)
|
|
119
|
+
if (Exit.isSuccess(exit)) {
|
|
120
|
+
yield* exec(client, "COMMIT")
|
|
121
|
+
return exit.value
|
|
122
|
+
}
|
|
123
|
+
yield* exec(client, "ROLLBACK").pipe(Effect.orDie)
|
|
124
|
+
return yield* exit
|
|
125
|
+
})
|
|
126
|
+
}),
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
export const layer = (config: LibsqlConfig): Layer.Layer<Sql.SqlClient, Sql.SqlError> =>
|
|
130
|
+
Layer.scoped(
|
|
131
|
+
Sql.SqlClient,
|
|
132
|
+
Effect.acquireRelease(
|
|
133
|
+
wrap(() => loadLibsql()).pipe(
|
|
134
|
+
Effect.map((libsql) => {
|
|
135
|
+
const client = libsql.createClient(config)
|
|
136
|
+
const use: Sql.SqlClient["use"] = (fn) =>
|
|
137
|
+
Effect.tryPromise({ try: () => Promise.resolve(fn(client)), catch: wrapError })
|
|
138
|
+
return Object.assign(
|
|
139
|
+
<T = any>(strings: TemplateStringsArray, ...values: Array<unknown>) =>
|
|
140
|
+
runQuery<T>(client, strings, values),
|
|
141
|
+
{
|
|
142
|
+
unsafe: <T = any>(query: string, values?: Array<unknown>) =>
|
|
143
|
+
runUnsafe<T>(client, query, values),
|
|
144
|
+
values: makeValues,
|
|
145
|
+
withTransaction: makeWithTransaction(client),
|
|
146
|
+
reserve: Effect.acquireRelease(
|
|
147
|
+
wrap(() => loadLibsql()).pipe(
|
|
148
|
+
Effect.map((m) => m.createClient(config)),
|
|
149
|
+
),
|
|
150
|
+
(reserved: Libsql.Client) => Effect.sync(() => reserved.close()),
|
|
151
|
+
).pipe(
|
|
152
|
+
Effect.map(
|
|
153
|
+
(reserved): Sql.SqlQuery =>
|
|
154
|
+
Object.assign(
|
|
155
|
+
<T = any>(strings: TemplateStringsArray, ...values: Array<unknown>) =>
|
|
156
|
+
runQuery<T>(reserved, strings, values),
|
|
157
|
+
{
|
|
158
|
+
unsafe: <T = any>(query: string, values?: Array<unknown>) =>
|
|
159
|
+
runUnsafe<T>(reserved, query, values),
|
|
160
|
+
values: makeValues,
|
|
161
|
+
},
|
|
162
|
+
),
|
|
163
|
+
),
|
|
164
|
+
),
|
|
165
|
+
close: () => Effect.sync(() => client.close()),
|
|
166
|
+
use,
|
|
167
|
+
},
|
|
168
|
+
) satisfies Sql.SqlClient
|
|
169
|
+
}),
|
|
170
|
+
),
|
|
171
|
+
(client) => client.close().pipe(Effect.orDie),
|
|
172
|
+
),
|
|
173
|
+
)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
declare module "@libsql/client" {
|
|
2
|
+
export interface Config {
|
|
3
|
+
readonly url: string
|
|
4
|
+
readonly authToken?: string
|
|
5
|
+
readonly syncUrl?: string
|
|
6
|
+
readonly syncInterval?: number
|
|
7
|
+
readonly encryptionKey?: string
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface ResultSet {
|
|
11
|
+
readonly columns: ReadonlyArray<string>
|
|
12
|
+
readonly rows: ReadonlyArray<ReadonlyArray<unknown>>
|
|
13
|
+
readonly rowsAffected: number
|
|
14
|
+
readonly lastInsertRowid?: bigint
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface InStatement {
|
|
18
|
+
readonly sql: string
|
|
19
|
+
readonly args?: ReadonlyArray<unknown> | Record<string, unknown>
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface Client {
|
|
23
|
+
execute(stmt: InStatement | string): Promise<ResultSet>
|
|
24
|
+
batch(stmts: ReadonlyArray<InStatement | string>, mode?: TransactionMode): Promise<ReadonlyArray<ResultSet>>
|
|
25
|
+
transaction(mode?: TransactionMode): Promise<Transaction>
|
|
26
|
+
close(): void
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface Transaction {
|
|
30
|
+
execute(stmt: InStatement | string): Promise<ResultSet>
|
|
31
|
+
commit(): Promise<void>
|
|
32
|
+
rollback(): Promise<void>
|
|
33
|
+
close(): void
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export type TransactionMode = "write" | "read" | "deferred"
|
|
37
|
+
|
|
38
|
+
export function createClient(config: Config): Client
|
|
39
|
+
}
|
package/src/sql/mssql/index.ts
CHANGED
|
@@ -5,7 +5,7 @@ import * as GlobalValue from "effect/GlobalValue"
|
|
|
5
5
|
import * as Layer from "effect/Layer"
|
|
6
6
|
import * as Option from "effect/Option"
|
|
7
7
|
import type * as Mssql from "mssql"
|
|
8
|
-
import * as Sql from "
|
|
8
|
+
import * as Sql from "../Sql.ts"
|
|
9
9
|
|
|
10
10
|
export interface MssqlConfig {
|
|
11
11
|
readonly server: string
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import * as BunServer from "../../bun/BunServer.ts"
|
|
2
1
|
import * as PlatformError from "../../PlatformError.ts"
|
|
2
|
+
import * as StartApp from "../../StartApp.ts"
|
|
3
3
|
import * as System from "../../System.ts"
|
|
4
|
+
import * as Deferred from "effect/Deferred"
|
|
4
5
|
import * as Effect from "effect/Effect"
|
|
5
6
|
import * as Layer from "effect/Layer"
|
|
6
7
|
import * as LogLevel from "effect/LogLevel"
|
|
@@ -86,12 +87,13 @@ export const start = (opts: {
|
|
|
86
87
|
export const layer = (opts?: { public?: boolean }) =>
|
|
87
88
|
Layer.scopedDiscard(
|
|
88
89
|
Effect.gen(function* () {
|
|
89
|
-
const { server } = yield* BunServer.BunServer
|
|
90
|
-
const port = server.port!
|
|
91
|
-
const command = "tailscale"
|
|
92
|
-
|
|
93
90
|
yield* Effect.forkScoped(
|
|
94
91
|
Effect.gen(function* () {
|
|
92
|
+
const app = yield* StartApp.StartApp
|
|
93
|
+
const { server } = yield* Deferred.await(app.server)
|
|
94
|
+
const port = server.port!
|
|
95
|
+
const command = "tailscale"
|
|
96
|
+
|
|
95
97
|
yield* System.which(command)
|
|
96
98
|
const status = yield* getStatus(command)
|
|
97
99
|
const dnsName = status.Self?.DNSName?.replace(/\.$/, "")
|
package/dist/BlobStore.d.ts
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import * as Context from "effect/Context";
|
|
2
|
-
import * as Effect from "effect/Effect";
|
|
3
|
-
import type * as Option from "effect/Option";
|
|
4
|
-
import * as Stream from "effect/Stream";
|
|
5
|
-
import type * as PlatformError from "./PlatformError.ts";
|
|
6
|
-
export interface BlobInfo {
|
|
7
|
-
readonly size: number;
|
|
8
|
-
readonly lastModified: Option.Option<Date>;
|
|
9
|
-
readonly etag: Option.Option<string>;
|
|
10
|
-
readonly type: Option.Option<string>;
|
|
11
|
-
}
|
|
12
|
-
export interface BlobRef {
|
|
13
|
-
readonly key: string;
|
|
14
|
-
readonly bytes: Effect.Effect<Uint8Array, PlatformError.PlatformError>;
|
|
15
|
-
readonly text: Effect.Effect<string, PlatformError.PlatformError>;
|
|
16
|
-
readonly json: Effect.Effect<unknown, PlatformError.PlatformError>;
|
|
17
|
-
readonly stat: Effect.Effect<BlobInfo, PlatformError.PlatformError>;
|
|
18
|
-
readonly exists: Effect.Effect<boolean, PlatformError.PlatformError>;
|
|
19
|
-
readonly delete: Effect.Effect<void, PlatformError.PlatformError>;
|
|
20
|
-
readonly stream: Stream.Stream<Uint8Array, PlatformError.PlatformError>;
|
|
21
|
-
readonly write: (data: string | Uint8Array | ArrayBuffer) => Effect.Effect<void, PlatformError.PlatformError>;
|
|
22
|
-
readonly slice: (begin?: number, end?: number) => BlobRef;
|
|
23
|
-
}
|
|
24
|
-
export interface ListEntry {
|
|
25
|
-
readonly key: string;
|
|
26
|
-
readonly size: Option.Option<number>;
|
|
27
|
-
readonly lastModified: Option.Option<Date>;
|
|
28
|
-
readonly etag: Option.Option<string>;
|
|
29
|
-
}
|
|
30
|
-
export interface ListOptions {
|
|
31
|
-
readonly prefix?: string;
|
|
32
|
-
}
|
|
33
|
-
export interface PresignOptions {
|
|
34
|
-
readonly expiresIn?: number;
|
|
35
|
-
readonly method?: "GET" | "PUT" | "DELETE" | "HEAD";
|
|
36
|
-
}
|
|
37
|
-
declare const BlobStore_base: Context.TagClass<BlobStore, "effect-start/BlobStore", {
|
|
38
|
-
readonly ref: (key: string) => Effect.Effect<BlobRef, PlatformError.PlatformError>;
|
|
39
|
-
readonly list: (options?: ListOptions) => Stream.Stream<ListEntry, PlatformError.PlatformError>;
|
|
40
|
-
readonly presign: (key: string, options?: PresignOptions) => Effect.Effect<string, PlatformError.PlatformError>;
|
|
41
|
-
}>;
|
|
42
|
-
export declare class BlobStore extends BlobStore_base {
|
|
43
|
-
}
|
|
44
|
-
declare const WatchEventCreated_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
|
|
45
|
-
readonly _tag: "Created";
|
|
46
|
-
};
|
|
47
|
-
export declare class WatchEventCreated extends WatchEventCreated_base<{
|
|
48
|
-
readonly key: string;
|
|
49
|
-
}> {
|
|
50
|
-
}
|
|
51
|
-
declare const WatchEventUpdated_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
|
|
52
|
-
readonly _tag: "Updated";
|
|
53
|
-
};
|
|
54
|
-
export declare class WatchEventUpdated extends WatchEventUpdated_base<{
|
|
55
|
-
readonly key: string;
|
|
56
|
-
}> {
|
|
57
|
-
}
|
|
58
|
-
declare const WatchEventDeleted_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
|
|
59
|
-
readonly _tag: "Deleted";
|
|
60
|
-
};
|
|
61
|
-
export declare class WatchEventDeleted extends WatchEventDeleted_base<{
|
|
62
|
-
readonly key: string;
|
|
63
|
-
}> {
|
|
64
|
-
}
|
|
65
|
-
export type WatchEvent = WatchEventCreated | WatchEventUpdated | WatchEventDeleted;
|
|
66
|
-
export interface WatchOptions {
|
|
67
|
-
readonly prefix?: string;
|
|
68
|
-
}
|
|
69
|
-
declare const BlobWatcher_base: Context.TagClass<BlobWatcher, "effect-start/BlobWatcher", {
|
|
70
|
-
readonly watch: (options?: WatchOptions) => Stream.Stream<WatchEvent, PlatformError.PlatformError>;
|
|
71
|
-
readonly notify: (event: WatchEvent) => Effect.Effect<boolean, PlatformError.PlatformError>;
|
|
72
|
-
}>;
|
|
73
|
-
export declare class BlobWatcher extends BlobWatcher_base {
|
|
74
|
-
}
|
|
75
|
-
export declare const watch: (options?: WatchOptions) => Stream.Stream<WatchEvent, PlatformError.PlatformError, BlobWatcher>;
|
|
76
|
-
export declare const notify: (event: WatchEvent) => Effect.Effect<boolean, PlatformError.PlatformError, BlobWatcher>;
|
|
77
|
-
export declare const ref: (key: string) => Effect.Effect<BlobRef, PlatformError.PlatformError, BlobStore>;
|
|
78
|
-
export declare const list: (options?: ListOptions) => Stream.Stream<ListEntry, PlatformError.PlatformError, BlobStore>;
|
|
79
|
-
export declare const presign: (key: string, options?: PresignOptions) => Effect.Effect<string, PlatformError.PlatformError, BlobStore>;
|
|
80
|
-
export {};
|
package/dist/BlobStore.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import * as Context from "effect/Context";
|
|
2
|
-
import * as Data from "effect/Data";
|
|
3
|
-
import * as Effect from "effect/Effect";
|
|
4
|
-
import * as Stream from "effect/Stream";
|
|
5
|
-
export class BlobStore extends Context.Tag("effect-start/BlobStore")() {
|
|
6
|
-
}
|
|
7
|
-
export class WatchEventCreated extends Data.TaggedClass("Created") {
|
|
8
|
-
}
|
|
9
|
-
export class WatchEventUpdated extends Data.TaggedClass("Updated") {
|
|
10
|
-
}
|
|
11
|
-
export class WatchEventDeleted extends Data.TaggedClass("Deleted") {
|
|
12
|
-
}
|
|
13
|
-
export class BlobWatcher extends Context.Tag("effect-start/BlobWatcher")() {
|
|
14
|
-
}
|
|
15
|
-
export const watch = (options) => Stream.unwrap(Effect.map(BlobWatcher, (watcher) => watcher.watch(options)));
|
|
16
|
-
export const notify = (event) => Effect.flatMap(BlobWatcher, (watcher) => watcher.notify(event));
|
|
17
|
-
export const ref = (key) => Effect.flatMap(BlobStore, (store) => store.ref(key));
|
|
18
|
-
export const list = (options) => Stream.unwrap(Effect.map(BlobStore, (store) => store.list(options)));
|
|
19
|
-
export const presign = (key, options) => Effect.flatMap(BlobStore, (store) => store.presign(key, options));
|
package/dist/ChildProcess.d.ts
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Adapted from upcomnig Effect 4 aka effect-smol.
|
|
3
|
-
*
|
|
4
|
-
* Kept a minimal interface without tempaltes and file descirptor
|
|
5
|
-
* to keep it compatible if it lands in the core (ie. not in seperate platform package.)
|
|
6
|
-
*/
|
|
7
|
-
import * as Context from "effect/Context";
|
|
8
|
-
import * as Effect from "effect/Effect";
|
|
9
|
-
import * as Pipeable from "effect/Pipeable";
|
|
10
|
-
import type * as Scope from "effect/Scope";
|
|
11
|
-
import type * as Sink from "effect/Sink";
|
|
12
|
-
import type * as Stream from "effect/Stream";
|
|
13
|
-
import type * as PlatformError from "./PlatformError.ts";
|
|
14
|
-
declare const TypeId: unique symbol;
|
|
15
|
-
type TypeId = typeof TypeId;
|
|
16
|
-
type Stdio = "pipe" | "inherit" | "ignore";
|
|
17
|
-
export interface Command extends Pipeable.Pipeable {
|
|
18
|
-
readonly [TypeId]: TypeId;
|
|
19
|
-
readonly command: string;
|
|
20
|
-
readonly args: ReadonlyArray<string>;
|
|
21
|
-
readonly cwd?: string;
|
|
22
|
-
readonly env?: Record<string, string>;
|
|
23
|
-
readonly stdin?: Stdio;
|
|
24
|
-
readonly stdout?: Stdio;
|
|
25
|
-
readonly stderr?: Stdio;
|
|
26
|
-
readonly detached?: boolean;
|
|
27
|
-
[Symbol.iterator](): Effect.EffectGenerator<Effect.Effect<ChildProcessHandle, PlatformError.PlatformError, ChildProcessSpawner | Scope.Scope>>;
|
|
28
|
-
}
|
|
29
|
-
export declare namespace Command {
|
|
30
|
-
interface Options {
|
|
31
|
-
readonly cwd?: string;
|
|
32
|
-
readonly env?: Record<string, string>;
|
|
33
|
-
readonly stdin?: Stdio;
|
|
34
|
-
readonly stdout?: Stdio;
|
|
35
|
-
readonly stderr?: Stdio;
|
|
36
|
-
readonly detached?: boolean;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
export declare const isCommand: (u: unknown) => u is Command;
|
|
40
|
-
export declare const make: (command: string, args?: ReadonlyArray<string>, options?: Command.Options) => Command;
|
|
41
|
-
export type Signal = "SIGABRT" | "SIGALRM" | "SIGBUS" | "SIGCHLD" | "SIGCONT" | "SIGFPE" | "SIGHUP" | "SIGILL" | "SIGINT" | "SIGIO" | "SIGIOT" | "SIGKILL" | "SIGPIPE" | "SIGPOLL" | "SIGPROF" | "SIGPWR" | "SIGQUIT" | "SIGSEGV" | "SIGSTKFLT" | "SIGSTOP" | "SIGSYS" | "SIGTERM" | "SIGTRAP" | "SIGTSTP" | "SIGTTIN" | "SIGTTOU" | "SIGUNUSED" | "SIGURG" | "SIGUSR1" | "SIGUSR2" | "SIGVTALRM" | "SIGWINCH" | "SIGXCPU" | "SIGXFSZ" | "SIGBREAK" | "SIGLOST" | "SIGINFO";
|
|
42
|
-
export interface KillOptions {
|
|
43
|
-
readonly killSignal?: Signal | undefined;
|
|
44
|
-
}
|
|
45
|
-
export interface ChildProcessHandle {
|
|
46
|
-
readonly pid: number;
|
|
47
|
-
readonly exitCode: Effect.Effect<number, PlatformError.PlatformError>;
|
|
48
|
-
readonly isRunning: Effect.Effect<boolean, PlatformError.PlatformError>;
|
|
49
|
-
readonly kill: (options?: KillOptions) => Effect.Effect<void, PlatformError.PlatformError>;
|
|
50
|
-
readonly stdin: Sink.Sink<void, Uint8Array, never, PlatformError.PlatformError>;
|
|
51
|
-
readonly stdout: Stream.Stream<Uint8Array, PlatformError.PlatformError>;
|
|
52
|
-
readonly stderr: Stream.Stream<Uint8Array, PlatformError.PlatformError>;
|
|
53
|
-
}
|
|
54
|
-
declare const ChildProcessSpawner_base: Context.TagClass<ChildProcessSpawner, "effect-start/ChildProcessSpawner", {
|
|
55
|
-
readonly spawn: (command: Command) => Effect.Effect<ChildProcessHandle, PlatformError.PlatformError, Scope.Scope>;
|
|
56
|
-
}>;
|
|
57
|
-
export declare class ChildProcessSpawner extends ChildProcessSpawner_base {
|
|
58
|
-
}
|
|
59
|
-
export declare const spawn: (command: Command) => Effect.Effect<ChildProcessHandle, PlatformError.PlatformError, ChildProcessSpawner | Scope.Scope>;
|
|
60
|
-
export {};
|