@@ -31,7 +31,7 @@ import type * as Context from "effect/Context"
3131import type * as DateTime from "effect/DateTime"
3232import * as Effect from "effect/Effect"
3333import { constFalse , dual } from "effect/Function"
34- import type * as Option from "effect/Option"
34+ import * as Option from "effect/Option"
3535import * as Predicate from "effect/Predicate"
3636import * as Schema from "effect/Schema"
3737import type * as Tool from "./Tool.js"
@@ -1958,10 +1958,11 @@ export const ErrorPart: Schema.Schema<ErrorPart, ErrorPartEncoded> = Schema.Stru
19581958 * @since 1.0.0
19591959 * @category Provider Metadata
19601960 */
1961- export type ExtractProviderMetadata < Part extends AnyPart , ProviderMetadata > = ProviderMetadata extends
1962- Record < string , any > ? Part [ "type" ] extends keyof ProviderMetadata ? ProviderMetadata [ Part [ "type" ] ]
1963- : never
1964- : never
1961+ export type ExtractProviderMetadata < Part extends AnyPart , ProviderMetadata , Type extends Part [ "type" ] = Part [ "type" ] > =
1962+ ProviderMetadata extends Record < string , any > ?
1963+ Type extends keyof ProviderMetadata ? Option . Option < ProviderMetadata [ Type ] >
1964+ : never
1965+ : never
19651966
19661967/**
19671968 * Extracts provider-specific metadata from a response part.
@@ -2000,40 +2001,29 @@ export type ExtractProviderMetadata<Part extends AnyPart, ProviderMetadata> = Pr
20002001 */
20012002export const getProviderMetadata : {
20022003 < Identifier , ProviderMetadata > (
2003- /**
2004- * Context tag identifying the provider metadata.
2005- */
20062004 tag : Context . Tag < Identifier , ProviderMetadata >
20072005 ) : < Part extends AnyPart > (
2008- /**
2009- * Response part to extract metadata from.
2010- */
20112006 part : Part
2012- ) => ExtractProviderMetadata < Part , ProviderMetadata > | undefined
2007+ ) => ExtractProviderMetadata < Part , ProviderMetadata >
20132008 < Part extends AnyPart , Identifier , ProviderMetadata > (
2014- /**
2015- * Response part to extract metadata from.
2016- */
20172009 part : Part ,
2018- /**
2019- * Context tag identifying the provider metadata.
2020- */
20212010 tag : Context . Tag < Identifier , ProviderMetadata >
2022- ) : ExtractProviderMetadata < Part , ProviderMetadata > | undefined
2011+ ) : ExtractProviderMetadata < Part , ProviderMetadata >
20232012} = dual <
20242013 < Identifier , ProviderMetadata > (
20252014 tag : Context . Tag < Identifier , ProviderMetadata >
20262015 ) => < Part extends AnyPart > (
20272016 part : Part
2028- ) => ExtractProviderMetadata < Part , ProviderMetadata > | undefined ,
2017+ ) => ExtractProviderMetadata < Part , ProviderMetadata > ,
20292018 < Part extends AnyPart , Identifier , ProviderMetadata > (
20302019 part : Part ,
20312020 tag : Context . Tag < Identifier , ProviderMetadata >
2032- ) => ExtractProviderMetadata < Part , ProviderMetadata > | undefined
2033- > ( 2 , ( part , tag ) => {
2034- const metadata = part . metadata ?. [ tag . key ]
2035- return metadata ?. [ part . type ] as any
2036- } )
2021+ ) => ExtractProviderMetadata < Part , ProviderMetadata >
2022+ > ( 2 , ( part , tag ) =>
2023+ Option . fromNullable ( part . metadata ) . pipe (
2024+ Option . flatMapNullable ( ( metadata ) => metadata [ tag . key ] ) ,
2025+ Option . flatMapNullable ( ( metadata ) => metadata [ part . type ] )
2026+ ) as any )
20372027
20382028/**
20392029 * Sets provider-specific metadata on a response part (mutating operation).
@@ -2071,32 +2061,14 @@ export const getProviderMetadata: {
20712061 */
20722062export const unsafeSetProviderMetadata : {
20732063 < Part extends AnyPart , Identifier , ProviderMetadata > (
2074- /**
2075- * Context tag identifying the provider metadata.
2076- */
20772064 tag : Context . Tag < Identifier , ProviderMetadata > ,
2078- /**
2079- * Provider-specific metadata to set.
2080- */
20812065 metadata : ExtractProviderMetadata < Part , ProviderMetadata >
20822066 ) : (
2083- /**
2084- * Response part to set metadata on.
2085- */
20862067 part : Part
20872068 ) => void
20882069 < Part extends AnyPart , Identifier , ProviderMetadata > (
2089- /**
2090- * Response part to set metadata on.
2091- */
20922070 part : Part ,
2093- /**
2094- * Context tag identifying the provider metadata.
2095- */
20962071 tag : Context . Tag < Identifier , ProviderMetadata > ,
2097- /**
2098- * Provider-specific metadata to set.
2099- */
21002072 metadata : ExtractProviderMetadata < Part , ProviderMetadata >
21012073 ) : void
21022074} = dual <
0 commit comments