diff --git a/bun.lock b/bun.lock index 2ee3f61ad..0e5e9d84b 100644 --- a/bun.lock +++ b/bun.lock @@ -776,7 +776,7 @@ "vitest": "catalog:", }, "peerDependencies": { - "effect": ">=4.0.0-rc.113", + "effect": ">=4.0.0-rc.118", }, }, "packages/email": { diff --git a/packages/effect-sdk/README.md b/packages/effect-sdk/README.md index 9b03e401c..43b2115e7 100644 --- a/packages/effect-sdk/README.md +++ b/packages/effect-sdk/README.md @@ -51,7 +51,7 @@ The Workers preset uses a custom flushable tracer + Effect logger — Workers do ```typescript import * as MapleCloudflareSDK from "@maple-dev/effect-sdk/cloudflare" import { Layer } from "effect" -import { HttpRouter } from "effect/unstable/http" +import { HttpRouter } from "effect/http" const telemetry = MapleCloudflareSDK.make({ serviceName: "my-worker", diff --git a/packages/effect-sdk/package.json b/packages/effect-sdk/package.json index a09cab66f..77cde7b7c 100644 --- a/packages/effect-sdk/package.json +++ b/packages/effect-sdk/package.json @@ -55,6 +55,8 @@ }, "scripts": { "build": "tsdown", + "prepack": "MAPLE_EFFECT_STABLE_PATHS=1 bun run build", + "postpack": "bun run build", "typecheck": "tsc --noEmit", "test": "vitest run" }, @@ -72,6 +74,6 @@ "vitest": "catalog:" }, "peerDependencies": { - "effect": ">=4.0.0-rc.113" + "effect": ">=4.0.0-rc.118" } } diff --git a/packages/effect-sdk/tsdown.config.ts b/packages/effect-sdk/tsdown.config.ts index cb9ff0a72..3c4380dc3 100644 --- a/packages/effect-sdk/tsdown.config.ts +++ b/packages/effect-sdk/tsdown.config.ts @@ -1,5 +1,11 @@ import { defineConfig } from "tsdown" +// Effect rc.118 promoted `effect/unstable/{http,observability}` to +// `effect/{http,observability}` and dropped the old paths. The monorepo still +// builds against an earlier rc, so the source keeps the unstable paths and the +// published tarball (`prepack`) is built with them rewritten. +const stableEffectPaths = process.env.MAPLE_EFFECT_STABLE_PATHS === "1" + export default defineConfig({ entry: { "index.server": "./src/index.server.ts", @@ -18,4 +24,14 @@ export default defineConfig({ deps: { neverBundle: ["effect"], }, + plugins: stableEffectPaths + ? [ + { + name: "maple:effect-stable-paths", + renderChunk(code) { + return code.replaceAll(/(["'])effect\/unstable\//g, "$1effect/") + }, + }, + ] + : [], })