diff --git a/.changeset/eight-rocks-hide.md b/.changeset/eight-rocks-hide.md new file mode 100644 index 00000000000..b01ba51ee40 --- /dev/null +++ b/.changeset/eight-rocks-hide.md @@ -0,0 +1,5 @@ +--- +"effect": minor +--- + +Add Runtime.Runtime.Context type extractor diff --git a/packages/effect/dtslint/Runtime.ts b/packages/effect/dtslint/Runtime.ts new file mode 100644 index 00000000000..72f052fbf7f --- /dev/null +++ b/packages/effect/dtslint/Runtime.ts @@ -0,0 +1,4 @@ +import type * as Runtime from "effect/Runtime" + +// $ExpectType { foo: string; } +export type ContextOfRuntime = Runtime.Runtime.Context> diff --git a/packages/effect/src/Runtime.ts b/packages/effect/src/Runtime.ts index f1db056bb3d..6c3ae01fc2f 100644 --- a/packages/effect/src/Runtime.ts +++ b/packages/effect/src/Runtime.ts @@ -52,6 +52,17 @@ export interface Runtime extends Pipeable { readonly fiberRefs: FiberRefs.FiberRefs } +/** + * @since 3.12.0 + */ +export declare namespace Runtime { + /** + * @since 3.12.0 + * @category Type Extractors + */ + export type Context> = [T] extends [Runtime] ? R : never +} + /** * @since 2.0.0 * @category models