diff --git a/.changeset/silly-glasses-deliver.md b/.changeset/silly-glasses-deliver.md new file mode 100644 index 0000000000..a27d0df79f --- /dev/null +++ b/.changeset/silly-glasses-deliver.md @@ -0,0 +1,5 @@ +--- +"effect": patch +--- + +move ManagedRuntime.TypeId to fix circular imports diff --git a/packages/effect/src/ManagedRuntime.ts b/packages/effect/src/ManagedRuntime.ts index 968fb4a393..0ab054c5db 100644 --- a/packages/effect/src/ManagedRuntime.ts +++ b/packages/effect/src/ManagedRuntime.ts @@ -5,6 +5,7 @@ import type * as Effect from "./Effect.js" import type * as Exit from "./Exit.js" import type * as Fiber from "./Fiber.js" import * as internal from "./internal/managedRuntime.js" +import * as circular from "./internal/managedRuntime/circular.js" import type * as Layer from "./Layer.js" import type * as Runtime from "./Runtime.js" import type * as Unify from "./Unify.js" @@ -13,7 +14,7 @@ import type * as Unify from "./Unify.js" * @since 3.9.0 * @category symbol */ -export const TypeId: unique symbol = internal.TypeId as TypeId +export const TypeId: unique symbol = circular.TypeId as TypeId /** * @since 3.9.0 diff --git a/packages/effect/src/internal/layer.ts b/packages/effect/src/internal/layer.ts index 985e10a149..7cf47e70a6 100644 --- a/packages/effect/src/internal/layer.ts +++ b/packages/effect/src/internal/layer.ts @@ -24,6 +24,7 @@ import * as effect from "./core-effect.js" import * as core from "./core.js" import * as circular from "./effect/circular.js" import * as fiberRuntime from "./fiberRuntime.js" +import * as circularManagedRuntime from "./managedRuntime/circular.js" import * as EffectOpCodes from "./opCodes/effect.js" import * as OpCodes from "./opCodes/layer.js" import * as ref from "./ref.js" @@ -1289,8 +1290,6 @@ const provideSomeRuntime = dual< ) }) -const ManagedRuntimeTypeId: ManagedRuntime.TypeId = Symbol.for("effect/ManagedRuntime") as ManagedRuntime.TypeId - /** @internal */ export const effect_provide = dual< { @@ -1339,7 +1338,7 @@ export const effect_provide = dual< return provideSomeLayer(self, source as Layer.Layer) } else if (Context.isContext(source)) { return core.provideSomeContext(self, source) - } else if (ManagedRuntimeTypeId in source) { + } else if (circularManagedRuntime.TypeId in source) { return core.flatMap( (source as ManagedRuntime.ManagedRuntime).runtimeEffect, (rt) => provideSomeRuntime(self, rt) diff --git a/packages/effect/src/internal/managedRuntime.ts b/packages/effect/src/internal/managedRuntime.ts index c9a38711d5..4a27cf77f9 100644 --- a/packages/effect/src/internal/managedRuntime.ts +++ b/packages/effect/src/internal/managedRuntime.ts @@ -12,6 +12,7 @@ import * as effect from "./core-effect.js" import * as core from "./core.js" import * as fiberRuntime from "./fiberRuntime.js" import * as internalLayer from "./layer.js" +import * as circular from "./managedRuntime/circular.js" import * as internalRuntime from "./runtime.js" interface ManagedRuntimeImpl extends M.ManagedRuntime { @@ -20,10 +21,7 @@ interface ManagedRuntimeImpl extends M.ManagedRuntime { } /** @internal */ -export const TypeId: M.TypeId = Symbol.for("effect/ManagedRuntime") as M.TypeId - -/** @internal */ -export const isManagedRuntime = (u: unknown): u is M.ManagedRuntime => hasProperty(u, TypeId) +export const isManagedRuntime = (u: unknown): u is M.ManagedRuntime => hasProperty(u, circular.TypeId) function provide( managed: ManagedRuntimeImpl, @@ -42,7 +40,7 @@ function provide( const ManagedRuntimeProto = { ...Effectable.CommitPrototype, - [TypeId]: TypeId, + [circular.TypeId]: circular.TypeId, pipe() { return pipeArguments(this, arguments) }, diff --git a/packages/effect/src/internal/managedRuntime/circular.ts b/packages/effect/src/internal/managedRuntime/circular.ts new file mode 100644 index 0000000000..9abefc95c1 --- /dev/null +++ b/packages/effect/src/internal/managedRuntime/circular.ts @@ -0,0 +1,6 @@ +import type * as M from "../../ManagedRuntime.js" + +// circular with Layer + +/** @internal */ +export const TypeId: M.TypeId = Symbol.for("effect/ManagedRuntime") as M.TypeId