const SafeURL = Schema.transform(
Schema.NullOr(Schema.encodedSchema(Schema.URL)),
Schema.NullOr(Schema.typeSchema(Schema.URL)),
{
strict: true,
decode: (input, options) => {
if (!input) return null
try {
return new URL(input)
} catch (e) {
return null
}
},
encode: (value) => {
if (value === null) {
return null
}
return value.toString()
}
}
).pipe(Schema.asSchema)
const SafeURL = Schema.transform(
Schema.NullOr(Schema.encodedSchema(Schema.URL)),
Schema.NullOr(Schema.typeSchema(Schema.URL)),
{
strict: true,
decode: (input, options) => {
if (!input) return null
try {
return new URL(input)
} catch (e) {
return null
}
},
encode: (value) => {
if (value === null) {
return null
}
return value.toString()
}
}
).pipe(Schema.asSchema)