MCPcopy Create free account
hub / github.com/Effect-TS/effect / applyTransformation

Function applyTransformation

packages/effect/src/SchemaParser.ts:1037–1069  ·  view source on GitHub ↗
(
  result: Effect.Effect<unknown, SchemaIssue.Issue, unknown>,
  current: unknown,
  transformation: SchemaAST.Link["transformation"],
  options: SchemaAST.ParseOptions
)

Source from the content-addressed store, hash-verified

1035}
1036
1037function applyTransformation(
1038 result: Effect.Effect<unknown, SchemaIssue.Issue, unknown>,
1039 current: unknown,
1040 transformation: SchemaAST.Link["transformation"],
1041 options: SchemaAST.ParseOptions
1042): Effect.Effect<unknown, SchemaIssue.Issue, unknown> {
1043 let transformed: Effect.Effect<Option.Option<unknown>, SchemaIssue.Issue, unknown>
1044 if (effectIsExit(result) && result._tag === "Success") {
1045 const optional = InternalParser.toOption(
1046 result === InternalParser.sameExit
1047 ? current
1048 : (result as InternalParser.Success<unknown, SchemaIssue.Issue>)[InternalParser.args]
1049 )
1050 transformed = transformation._tag === "Transformation"
1051 ? transformation.decode.run(optional, options)
1052 : transformation.decode(InternalParser.succeed(optional), options)
1053 } else if (transformation._tag === "Transformation") {
1054 transformed = Effect.flatMapEager(
1055 result,
1056 (value) => transformation.decode.run(InternalParser.toOption(value), options)
1057 )
1058 } else {
1059 transformed = transformation.decode(
1060 Effect.mapEager(result, InternalParser.toOption),
1061 options
1062 )
1063 }
1064 return effectIsExit(transformed) && transformed._tag === "Success"
1065 ? InternalParser.fromOptionExit(
1066 (transformed as InternalParser.Success<Option.Option<unknown>, SchemaIssue.Issue>)[InternalParser.args]
1067 )
1068 : Effect.flatMapEager(transformed, InternalParser.fromOptionExit)
1069}
1070
1071function makeConstructorParser(descriptor: SchemaAST.ConstructorDescriptor, compile: Compiler): Parser {
1072 let sourceParser: Parser

Callers 2

makeConstructorParserFunction · 0.85
makeParserFunction · 0.85

Calls 3

effectIsExitFunction · 0.90
runMethod · 0.45
succeedMethod · 0.45

Tested by

no test coverage detected