(u: unknown)
| 3857 | return ast |
| 3858 | case "Number": |
| 3859 | case "Literal": |
| 3860 | case "BigInt": |
| 3861 | return ast.toCodecStringTree() |
| 3862 | case "Union": |
| 3863 | return ast.recur(partFromString) |
| 3864 | } |
| 3865 | }) |
| 3866 | |
| 3867 | /** |
| 3868 | * any string, including newlines |
| 3869 | * @internal |
| 3870 | */ |
| 3871 | export const STRING_PATTERN = "[\\s\\S]*?" |
| 3872 | |
| 3873 | const isStringFiniteRegExp = new globalThis.RegExp(`^${FINITE_PATTERN}$`) |
| 3874 | |
| 3875 | const isStringNumberRegExp = new globalThis.RegExp(`^(?:${FINITE_PATTERN}|Infinity|-Infinity|NaN)$`) |
| 3876 | |
| 3877 | /** @internal */ |
| 3878 | export function isStringFinite(annotations?: Schema.Annotations.Filter) { |
| 3879 | return isPattern( |
| 3880 | isStringFiniteRegExp, |
| 3881 | { |
| 3882 | expected: "a string representing a finite number", |
| 3883 | representation: { |
| 3884 | id: "effect/schema/isStringFinite", |
| 3885 | payload: null |
| 3886 | }, |
| 3887 | toJsonSchema: () => ({ pattern: isStringFiniteRegExp.source }), |
| 3888 | ...annotations |
| 3889 | } |
| 3890 | ) |
| 3891 | } |
| 3892 | |
| 3893 | const finiteString = appendChecks(string, [isStringFinite()]) |
| 3894 | |
| 3895 | const finiteToString = new Link( |
| 3896 | finiteString, |
| 3897 | SchemaTransformation.numberFromString |
| 3898 | ) |
| 3899 | |
| 3900 | const numberToString = new Link( |
| 3901 | new Union([finiteString, nonFiniteLiterals], "anyOf"), |
no test coverage detected
searching dependent graphs…