(schema: Schema.Top)
| 643 | it("nullable to optional — from NullOr", () => { |
| 644 | const nullableDecodedUndefinedEncoded = (schema: S.Top) => { |
| 645 | const isNullableSchema = "members" in schema |
| 646 | && globalThis.Array.isArray((schema as any).members) |
| 647 | && (schema as any).members.length === 2 |
| 648 | && (schema as any).members.some((member: any) => member.ast._tag === "Null") |
| 649 | |
| 650 | const nullableMembers = isNullableSchema ? (schema as any).members as ReadonlyArray<S.Top> : undefined |
| 651 | const innerSchema = nullableMembers |
| 652 | ? nullableMembers.find((member: any) => member.ast._tag !== "Null")! |
| 653 | : schema |
| 654 | |
| 655 | const nullableSchema = isNullableSchema ? schema : S.NullOr(schema) |
| 656 | |
| 657 | return nullableSchema.pipe( |
| 658 | S.encodeTo(S.optionalKey(innerSchema), { |
| 659 | decode: SchemaGetter.transformOptional(Option.orElseSome(() => null)), |
| 660 | encode: SchemaGetter.transformOptional(Option.filter(Predicate.isNotNull)) |
| 661 | }) |
| 662 | ) |
| 663 | } |
| 664 | |
| 665 | const fromNullOr = nullableDecodedUndefinedEncoded(S.NullOr(S.String)) |
| 666 | const structFromNullOr = S.Struct({ status: fromNullOr }) |
| 667 |
no test coverage detected
searching dependent graphs…