@modulify/validator 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -1
- package/README.md +12 -2
- package/dist/assert-BDOtHdLx.cjs +289 -0
- package/dist/assert-CzMg5aO7.mjs +206 -0
- package/dist/assert.cjs +7 -65
- package/dist/assert.d.cts +37 -0
- package/dist/assert.d.mts +37 -0
- package/dist/assert.d.ts +24 -3
- package/dist/assert.mjs +2 -66
- package/dist/assertions-DPYCHREw.mjs +297 -0
- package/dist/assertions-nfOKqcjs.cjs +476 -0
- package/dist/assertions.cjs +34 -206
- package/dist/assertions.d.cts +56 -0
- package/dist/assertions.d.mts +56 -0
- package/dist/assertions.d.ts +43 -45
- package/dist/assertions.mjs +3 -207
- package/dist/checkers.d.cts +8 -0
- package/dist/checkers.d.mts +8 -0
- package/dist/checkers.d.ts +1 -1
- package/dist/combinators.cjs +303 -304
- package/dist/combinators.d.cts +16 -0
- package/dist/combinators.d.mts +16 -0
- package/dist/combinators.d.ts +15 -16
- package/dist/combinators.mjs +304 -315
- package/dist/constraints.d.cts +4 -0
- package/dist/constraints.d.mts +4 -0
- package/dist/constraints.d.ts +2 -2
- package/dist/extractors.d.cts +2 -0
- package/dist/extractors.d.mts +2 -0
- package/dist/index.cjs +210 -213
- package/dist/index.d.cts +12 -0
- package/dist/index.d.mts +12 -0
- package/dist/index.d.ts +9 -9
- package/dist/index.mjs +165 -218
- package/dist/json-schema.cjs +364 -489
- package/dist/json-schema.d.cts +14 -0
- package/dist/json-schema.d.mts +14 -0
- package/dist/json-schema.d.ts +3 -3
- package/dist/json-schema.mjs +365 -492
- package/dist/metadata.cjs +6 -7
- package/dist/metadata.d.cts +8 -0
- package/dist/metadata.d.mts +8 -0
- package/dist/metadata.d.ts +2 -2
- package/dist/metadata.mjs +2 -8
- package/dist/predicates.cjs +98 -41
- package/dist/predicates.d.cts +77 -0
- package/dist/predicates.d.mts +77 -0
- package/dist/predicates.d.ts +25 -4
- package/dist/predicates.mjs +92 -66
- package/dist/types/index.d.cts +984 -0
- package/dist/types/index.d.mts +984 -0
- package/dist/types/index.d.ts +984 -0
- package/dist/types/json-schema.d.cts +75 -0
- package/dist/types/json-schema.d.mts +75 -0
- package/dist/types/json-schema.d.ts +75 -0
- package/dist/violations.d.cts +29 -0
- package/dist/violations.d.mts +29 -0
- package/dist/violations.d.ts +1 -1
- package/docs/RELEASING.md +66 -0
- package/docs/en/00-index.md +2 -0
- package/docs/en/01-shape-api.md +35 -10
- package/docs/en/02-metadata-and-introspection.md +2 -1
- package/docs/en/03-violations.md +1 -1
- package/docs/en/04-json-schema-export.md +5 -0
- package/docs/en/05-public-api.md +35 -3
- package/docs/en/06-common-recipes.md +2 -1
- package/docs/en/07-ai-reference.md +5 -2
- package/docs/en/08-violation-code-types.md +28 -2
- package/docs/en/09-migration.md +75 -0
- package/docs/ru/00-index.md +2 -0
- package/docs/ru/01-shape-api.md +35 -10
- package/docs/ru/02-metadata-and-introspection.md +2 -1
- package/docs/ru/03-violations.md +1 -1
- package/docs/ru/04-json-schema-export.md +5 -0
- package/docs/ru/05-public-api.md +35 -3
- package/docs/ru/06-common-recipes.md +2 -1
- package/docs/ru/07-ai-reference.md +5 -2
- package/docs/ru/08-violation-code-types.md +28 -2
- package/docs/ru/09-migration.md +76 -0
- package/docs/ru/README.md +10 -2
- package/package.json +63 -37
- package/types/index.d.ts +275 -115
- package/dist/metadata.cjs.js +0 -130
- package/dist/metadata.es.js +0 -131
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { AssertionConstraint, Guard, Refinement, Extractor, Checker } from './types/index.cjs';
|
|
2
|
+
import { assert, refine } from './assert.cjs';
|
|
3
|
+
export { assert, refine, };
|
|
4
|
+
type Defined = {} | null;
|
|
5
|
+
type EmptyOptions = Record<never, never>;
|
|
6
|
+
type BoundedAssertionOptions = {
|
|
7
|
+
exact?: number | null;
|
|
8
|
+
max?: number | null;
|
|
9
|
+
min?: number | null;
|
|
10
|
+
range?: readonly [number, number] | null;
|
|
11
|
+
bail?: boolean;
|
|
12
|
+
};
|
|
13
|
+
type OptionNumber<O, K extends PropertyKey> = K extends keyof O ? Extract<O[K], number> : never;
|
|
14
|
+
type OptionRange<O, K extends PropertyKey> = K extends keyof O ? Extract<O[K], readonly [number, number] | [number, number]> extends infer R ? R extends readonly [infer Min extends number, infer Max extends number] ? readonly [Min, Max] : never : never : never;
|
|
15
|
+
type IncludeConstraint<Value, C extends AssertionConstraint> = [Value] extends [never] ? [] : [C];
|
|
16
|
+
export declare const isBoolean: Guard<boolean, [], "type.boolean", [], "isBoolean">;
|
|
17
|
+
export declare const isBigInt: Guard<bigint, [], "type.bigint", [], "isBigInt">;
|
|
18
|
+
export declare const isBlob: Guard<Blob, [], "type.blob", [], "isBlob">;
|
|
19
|
+
export declare const isDate: Guard<Date, [], "type.date", [], "isDate">;
|
|
20
|
+
export declare const isDefined: Guard<Defined, [], "value.defined", [], "isDefined">;
|
|
21
|
+
export declare const isEmail: Guard<string, [], "string.email", [], "isEmail">;
|
|
22
|
+
export declare const isError: Guard<Error, [], "type.error", [], "isError">;
|
|
23
|
+
export declare const isFiniteNumber: Guard<number, [], "number.finite", [], "isFiniteNumber">;
|
|
24
|
+
export declare const isFile: Guard<File, [], "type.file", [], "isFile">;
|
|
25
|
+
export declare const isFunction: Guard<(...args: never[]) => unknown, [], "type.function", [], "isFunction">;
|
|
26
|
+
export declare const isInteger: Guard<number, [], "number.integer", [], "isInteger">;
|
|
27
|
+
export declare const isMap: Guard<Map<unknown, unknown>, [], "type.map", [], "isMap">;
|
|
28
|
+
export declare const isNaN: Guard<number, [], "number.nan", [], "isNaN">;
|
|
29
|
+
export declare const isNull: Guard<null, [], "type.null", [], "isNull">;
|
|
30
|
+
export declare const isNumber: Guard<number, [], "type.number", [], "isNumber">;
|
|
31
|
+
export declare const isPromiseLike: Guard<PromiseLike<unknown>, [], "type.promise-like", [], "isPromiseLike">;
|
|
32
|
+
export declare const isRegExp: Guard<RegExp, [], "type.regexp", [], "isRegExp">;
|
|
33
|
+
export declare const isSafeInteger: Guard<number, [], "number.safe-integer", [], "isSafeInteger">;
|
|
34
|
+
export declare const isSet: Guard<Set<unknown>, [], "type.set", [], "isSet">;
|
|
35
|
+
export declare const isString: Guard<string, [], "type.string", [], "isString">;
|
|
36
|
+
export declare const isSymbol: Guard<symbol, [], "type.symbol", [], "isSymbol">;
|
|
37
|
+
export declare const isValidDate: Guard<Date, [], "date.valid", [], "isValidDate">;
|
|
38
|
+
export declare const hasLength: <const O extends BoundedAssertionOptions = EmptyOptions>(options?: O) => Refinement<[...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<string | unknown[], number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "length.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<string | unknown[], number>, Checker<number, [max: OptionNumber<O, "max">]>, "length.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<string | unknown[], number>, Checker<number, [min: OptionNumber<O, "min">]>, "length.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<string | unknown[], number>, Checker<number, [range: OptionRange<O, "range">]>, "length.range", range: OptionRange<O, "range">]>] extends infer T ? T extends [...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<string | unknown[], number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "length.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<string | unknown[], number>, Checker<number, [max: OptionNumber<O, "max">]>, "length.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<string | unknown[], number>, Checker<number, [min: OptionNumber<O, "min">]>, "length.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<string | unknown[], number>, Checker<number, [range: OptionRange<O, "range">]>, "length.range", range: OptionRange<O, "range">]>] ? T extends readonly [] ? unknown : (T[number] extends infer T_1 ? T_1 extends T[number] ? T_1 extends unknown ? (value: Parameters<T_1[0]>[0]) => void : never : never : never) extends (value: infer Input) => void ? Input : never : never : never, [...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<string | unknown[], number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "length.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<string | unknown[], number>, Checker<number, [max: OptionNumber<O, "max">]>, "length.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<string | unknown[], number>, Checker<number, [min: OptionNumber<O, "min">]>, "length.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<string | unknown[], number>, Checker<number, [range: OptionRange<O, "range">]>, "length.range", range: OptionRange<O, "range">]>], "length.unsupported-type", [], "hasLength">;
|
|
39
|
+
export declare const hasSize: <const O extends BoundedAssertionOptions = EmptyOptions>(options?: O) => Refinement<[...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "size.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [max: OptionNumber<O, "max">]>, "size.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [min: OptionNumber<O, "min">]>, "size.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [range: OptionRange<O, "range">]>, "size.range", range: OptionRange<O, "range">]>] extends infer T ? T extends [...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "size.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [max: OptionNumber<O, "max">]>, "size.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [min: OptionNumber<O, "min">]>, "size.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [range: OptionRange<O, "range">]>, "size.range", range: OptionRange<O, "range">]>] ? T extends readonly [] ? unknown : (T[number] extends infer T_1 ? T_1 extends T[number] ? T_1 extends unknown ? (value: Parameters<T_1[0]>[0]) => void : never : never : never) extends (value: infer Input) => void ? Input : never : never : never, [...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "size.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [max: OptionNumber<O, "max">]>, "size.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [min: OptionNumber<O, "min">]>, "size.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [range: OptionRange<O, "range">]>, "size.range", range: OptionRange<O, "range">]>], "size.unsupported-type", [], "hasSize">;
|
|
40
|
+
export declare const hasPattern: (pattern: RegExp, { bail, }?: {
|
|
41
|
+
bail?: boolean;
|
|
42
|
+
}) => Refinement<string, readonly [readonly [(value: string) => string, (value: string, pattern: RegExp) => boolean, "string.pattern", RegExp]], "string.unsupported-type", [], "hasPattern">;
|
|
43
|
+
export declare const startsWith: (prefix: string, { bail, }?: {
|
|
44
|
+
bail?: boolean;
|
|
45
|
+
}) => Refinement<string, readonly [readonly [(value: string) => string, (value: string, prefix: string) => boolean, "string.starts-with", string]], "string.unsupported-type", [], "startsWith">;
|
|
46
|
+
export declare const endsWith: (suffix: string, { bail, }?: {
|
|
47
|
+
bail?: boolean;
|
|
48
|
+
}) => Refinement<string, readonly [readonly [(value: string) => string, (value: string, suffix: string) => boolean, "string.ends-with", string]], "string.unsupported-type", [], "endsWith">;
|
|
49
|
+
export declare const hasValue: <const O extends BoundedAssertionOptions = EmptyOptions>(options?: O) => Refinement<[...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<number, number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "number.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<number, number>, Checker<number, [max: OptionNumber<O, "max">]>, "number.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<number, number>, Checker<number, [min: OptionNumber<O, "min">]>, "number.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<number, number>, Checker<number, [range: OptionRange<O, "range">]>, "number.range", range: OptionRange<O, "range">]>] extends infer T ? T extends [...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<number, number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "number.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<number, number>, Checker<number, [max: OptionNumber<O, "max">]>, "number.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<number, number>, Checker<number, [min: OptionNumber<O, "min">]>, "number.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<number, number>, Checker<number, [range: OptionRange<O, "range">]>, "number.range", range: OptionRange<O, "range">]>] ? T extends readonly [] ? unknown : (T[number] extends infer T_1 ? T_1 extends T[number] ? T_1 extends unknown ? (value: Parameters<T_1[0]>[0]) => void : never : never : never) extends (value: infer Input) => void ? Input : never : never : never, [...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<number, number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "number.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<number, number>, Checker<number, [max: OptionNumber<O, "max">]>, "number.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<number, number>, Checker<number, [min: OptionNumber<O, "min">]>, "number.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<number, number>, Checker<number, [range: OptionRange<O, "range">]>, "number.range", range: OptionRange<O, "range">]>], "number.unsupported-type", [], "hasValue">;
|
|
50
|
+
export declare const multipleOf: <const Step extends number>(step: Step, { bail, }?: {
|
|
51
|
+
bail?: boolean;
|
|
52
|
+
}) => Refinement<number, readonly [readonly [(value: number) => number, (value: number, step: number) => boolean, "number.multiple-of", Step]], "number.unsupported-type", [], "multipleOf">;
|
|
53
|
+
export declare const oneOf: <Actual = unknown>(values: Actual[] | Record<string, Actual>, { equalTo, bail, }?: {
|
|
54
|
+
equalTo?: (a: Actual, b: unknown) => boolean;
|
|
55
|
+
bail?: boolean;
|
|
56
|
+
}) => Guard<Actual, [], "value.one-of", readonly [Actual[]], "oneOf">;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { AssertionConstraint, Guard, Refinement, Extractor, Checker } from './types/index.mjs';
|
|
2
|
+
import { assert, refine } from './assert.mjs';
|
|
3
|
+
export { assert, refine, };
|
|
4
|
+
type Defined = {} | null;
|
|
5
|
+
type EmptyOptions = Record<never, never>;
|
|
6
|
+
type BoundedAssertionOptions = {
|
|
7
|
+
exact?: number | null;
|
|
8
|
+
max?: number | null;
|
|
9
|
+
min?: number | null;
|
|
10
|
+
range?: readonly [number, number] | null;
|
|
11
|
+
bail?: boolean;
|
|
12
|
+
};
|
|
13
|
+
type OptionNumber<O, K extends PropertyKey> = K extends keyof O ? Extract<O[K], number> : never;
|
|
14
|
+
type OptionRange<O, K extends PropertyKey> = K extends keyof O ? Extract<O[K], readonly [number, number] | [number, number]> extends infer R ? R extends readonly [infer Min extends number, infer Max extends number] ? readonly [Min, Max] : never : never : never;
|
|
15
|
+
type IncludeConstraint<Value, C extends AssertionConstraint> = [Value] extends [never] ? [] : [C];
|
|
16
|
+
export declare const isBoolean: Guard<boolean, [], "type.boolean", [], "isBoolean">;
|
|
17
|
+
export declare const isBigInt: Guard<bigint, [], "type.bigint", [], "isBigInt">;
|
|
18
|
+
export declare const isBlob: Guard<Blob, [], "type.blob", [], "isBlob">;
|
|
19
|
+
export declare const isDate: Guard<Date, [], "type.date", [], "isDate">;
|
|
20
|
+
export declare const isDefined: Guard<Defined, [], "value.defined", [], "isDefined">;
|
|
21
|
+
export declare const isEmail: Guard<string, [], "string.email", [], "isEmail">;
|
|
22
|
+
export declare const isError: Guard<Error, [], "type.error", [], "isError">;
|
|
23
|
+
export declare const isFiniteNumber: Guard<number, [], "number.finite", [], "isFiniteNumber">;
|
|
24
|
+
export declare const isFile: Guard<File, [], "type.file", [], "isFile">;
|
|
25
|
+
export declare const isFunction: Guard<(...args: never[]) => unknown, [], "type.function", [], "isFunction">;
|
|
26
|
+
export declare const isInteger: Guard<number, [], "number.integer", [], "isInteger">;
|
|
27
|
+
export declare const isMap: Guard<Map<unknown, unknown>, [], "type.map", [], "isMap">;
|
|
28
|
+
export declare const isNaN: Guard<number, [], "number.nan", [], "isNaN">;
|
|
29
|
+
export declare const isNull: Guard<null, [], "type.null", [], "isNull">;
|
|
30
|
+
export declare const isNumber: Guard<number, [], "type.number", [], "isNumber">;
|
|
31
|
+
export declare const isPromiseLike: Guard<PromiseLike<unknown>, [], "type.promise-like", [], "isPromiseLike">;
|
|
32
|
+
export declare const isRegExp: Guard<RegExp, [], "type.regexp", [], "isRegExp">;
|
|
33
|
+
export declare const isSafeInteger: Guard<number, [], "number.safe-integer", [], "isSafeInteger">;
|
|
34
|
+
export declare const isSet: Guard<Set<unknown>, [], "type.set", [], "isSet">;
|
|
35
|
+
export declare const isString: Guard<string, [], "type.string", [], "isString">;
|
|
36
|
+
export declare const isSymbol: Guard<symbol, [], "type.symbol", [], "isSymbol">;
|
|
37
|
+
export declare const isValidDate: Guard<Date, [], "date.valid", [], "isValidDate">;
|
|
38
|
+
export declare const hasLength: <const O extends BoundedAssertionOptions = EmptyOptions>(options?: O) => Refinement<[...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<string | unknown[], number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "length.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<string | unknown[], number>, Checker<number, [max: OptionNumber<O, "max">]>, "length.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<string | unknown[], number>, Checker<number, [min: OptionNumber<O, "min">]>, "length.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<string | unknown[], number>, Checker<number, [range: OptionRange<O, "range">]>, "length.range", range: OptionRange<O, "range">]>] extends infer T ? T extends [...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<string | unknown[], number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "length.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<string | unknown[], number>, Checker<number, [max: OptionNumber<O, "max">]>, "length.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<string | unknown[], number>, Checker<number, [min: OptionNumber<O, "min">]>, "length.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<string | unknown[], number>, Checker<number, [range: OptionRange<O, "range">]>, "length.range", range: OptionRange<O, "range">]>] ? T extends readonly [] ? unknown : (T[number] extends infer T_1 ? T_1 extends T[number] ? T_1 extends unknown ? (value: Parameters<T_1[0]>[0]) => void : never : never : never) extends (value: infer Input) => void ? Input : never : never : never, [...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<string | unknown[], number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "length.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<string | unknown[], number>, Checker<number, [max: OptionNumber<O, "max">]>, "length.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<string | unknown[], number>, Checker<number, [min: OptionNumber<O, "min">]>, "length.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<string | unknown[], number>, Checker<number, [range: OptionRange<O, "range">]>, "length.range", range: OptionRange<O, "range">]>], "length.unsupported-type", [], "hasLength">;
|
|
39
|
+
export declare const hasSize: <const O extends BoundedAssertionOptions = EmptyOptions>(options?: O) => Refinement<[...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "size.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [max: OptionNumber<O, "max">]>, "size.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [min: OptionNumber<O, "min">]>, "size.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [range: OptionRange<O, "range">]>, "size.range", range: OptionRange<O, "range">]>] extends infer T ? T extends [...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "size.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [max: OptionNumber<O, "max">]>, "size.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [min: OptionNumber<O, "min">]>, "size.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [range: OptionRange<O, "range">]>, "size.range", range: OptionRange<O, "range">]>] ? T extends readonly [] ? unknown : (T[number] extends infer T_1 ? T_1 extends T[number] ? T_1 extends unknown ? (value: Parameters<T_1[0]>[0]) => void : never : never : never) extends (value: infer Input) => void ? Input : never : never : never, [...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "size.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [max: OptionNumber<O, "max">]>, "size.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [min: OptionNumber<O, "min">]>, "size.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [range: OptionRange<O, "range">]>, "size.range", range: OptionRange<O, "range">]>], "size.unsupported-type", [], "hasSize">;
|
|
40
|
+
export declare const hasPattern: (pattern: RegExp, { bail, }?: {
|
|
41
|
+
bail?: boolean;
|
|
42
|
+
}) => Refinement<string, readonly [readonly [(value: string) => string, (value: string, pattern: RegExp) => boolean, "string.pattern", RegExp]], "string.unsupported-type", [], "hasPattern">;
|
|
43
|
+
export declare const startsWith: (prefix: string, { bail, }?: {
|
|
44
|
+
bail?: boolean;
|
|
45
|
+
}) => Refinement<string, readonly [readonly [(value: string) => string, (value: string, prefix: string) => boolean, "string.starts-with", string]], "string.unsupported-type", [], "startsWith">;
|
|
46
|
+
export declare const endsWith: (suffix: string, { bail, }?: {
|
|
47
|
+
bail?: boolean;
|
|
48
|
+
}) => Refinement<string, readonly [readonly [(value: string) => string, (value: string, suffix: string) => boolean, "string.ends-with", string]], "string.unsupported-type", [], "endsWith">;
|
|
49
|
+
export declare const hasValue: <const O extends BoundedAssertionOptions = EmptyOptions>(options?: O) => Refinement<[...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<number, number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "number.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<number, number>, Checker<number, [max: OptionNumber<O, "max">]>, "number.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<number, number>, Checker<number, [min: OptionNumber<O, "min">]>, "number.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<number, number>, Checker<number, [range: OptionRange<O, "range">]>, "number.range", range: OptionRange<O, "range">]>] extends infer T ? T extends [...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<number, number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "number.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<number, number>, Checker<number, [max: OptionNumber<O, "max">]>, "number.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<number, number>, Checker<number, [min: OptionNumber<O, "min">]>, "number.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<number, number>, Checker<number, [range: OptionRange<O, "range">]>, "number.range", range: OptionRange<O, "range">]>] ? T extends readonly [] ? unknown : (T[number] extends infer T_1 ? T_1 extends T[number] ? T_1 extends unknown ? (value: Parameters<T_1[0]>[0]) => void : never : never : never) extends (value: infer Input) => void ? Input : never : never : never, [...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<number, number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "number.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<number, number>, Checker<number, [max: OptionNumber<O, "max">]>, "number.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<number, number>, Checker<number, [min: OptionNumber<O, "min">]>, "number.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<number, number>, Checker<number, [range: OptionRange<O, "range">]>, "number.range", range: OptionRange<O, "range">]>], "number.unsupported-type", [], "hasValue">;
|
|
50
|
+
export declare const multipleOf: <const Step extends number>(step: Step, { bail, }?: {
|
|
51
|
+
bail?: boolean;
|
|
52
|
+
}) => Refinement<number, readonly [readonly [(value: number) => number, (value: number, step: number) => boolean, "number.multiple-of", Step]], "number.unsupported-type", [], "multipleOf">;
|
|
53
|
+
export declare const oneOf: <Actual = unknown>(values: Actual[] | Record<string, Actual>, { equalTo, bail, }?: {
|
|
54
|
+
equalTo?: (a: Actual, b: unknown) => boolean;
|
|
55
|
+
bail?: boolean;
|
|
56
|
+
}) => Guard<Actual, [], "value.one-of", readonly [Actual[]], "oneOf">;
|
package/dist/assertions.d.ts
CHANGED
|
@@ -1,58 +1,56 @@
|
|
|
1
|
-
import { AssertionConstraint,
|
|
2
|
-
import { assert } from './assert';
|
|
3
|
-
export { assert };
|
|
4
|
-
type
|
|
5
|
-
type
|
|
6
|
-
type
|
|
7
|
-
export declare const isBoolean: Assertion<boolean, [], "type.boolean", undefined, "isBoolean">;
|
|
8
|
-
export declare const isBigInt: Assertion<bigint, [], "type.bigint", undefined, "isBigInt">;
|
|
9
|
-
export declare const isBlob: Assertion<Blob, [], "type.blob", undefined, "isBlob">;
|
|
10
|
-
export declare const isDate: Assertion<Date, [], "type.date", undefined, "isDate">;
|
|
11
|
-
export declare const isDefined: Assertion<{}, [], "value.defined", undefined, "isDefined">;
|
|
12
|
-
export declare const isEmail: Assertion<string, [], "string.email", undefined, "isEmail">;
|
|
13
|
-
export declare const isFile: Assertion<File, [], "type.file", undefined, "isFile">;
|
|
14
|
-
export declare const isFunction: Assertion<(...args: never[]) => unknown, [], "type.function", undefined, "isFunction">;
|
|
15
|
-
export declare const isMap: Assertion<Map<unknown, unknown>, [], "type.map", undefined, "isMap">;
|
|
16
|
-
export declare const isNaN: Assertion<number, [], "number.nan", undefined, "isNaN">;
|
|
17
|
-
export declare const isNull: Assertion<null, [], "type.null", undefined, "isNull">;
|
|
18
|
-
export declare const isNumber: Assertion<number, [], "type.number", undefined, "isNumber">;
|
|
19
|
-
export declare const isSet: Assertion<Set<unknown>, [], "type.set", undefined, "isSet">;
|
|
20
|
-
export declare const isString: Assertion<string, [], "type.string", undefined, "isString">;
|
|
21
|
-
export declare const isSymbol: Assertion<symbol, [], "type.symbol", undefined, "isSymbol">;
|
|
22
|
-
export declare const hasLength: ({ exact, max, min, range, bail, }?: {
|
|
1
|
+
import { AssertionConstraint, Guard, Refinement, Extractor, Checker } from './types/index.js';
|
|
2
|
+
import { assert, refine } from './assert.js';
|
|
3
|
+
export { assert, refine, };
|
|
4
|
+
type Defined = {} | null;
|
|
5
|
+
type EmptyOptions = Record<never, never>;
|
|
6
|
+
type BoundedAssertionOptions = {
|
|
23
7
|
exact?: number | null;
|
|
24
8
|
max?: number | null;
|
|
25
9
|
min?: number | null;
|
|
26
|
-
range?: [number, number] | null;
|
|
27
|
-
bail?: boolean;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
10
|
+
range?: readonly [number, number] | null;
|
|
11
|
+
bail?: boolean;
|
|
12
|
+
};
|
|
13
|
+
type OptionNumber<O, K extends PropertyKey> = K extends keyof O ? Extract<O[K], number> : never;
|
|
14
|
+
type OptionRange<O, K extends PropertyKey> = K extends keyof O ? Extract<O[K], readonly [number, number] | [number, number]> extends infer R ? R extends readonly [infer Min extends number, infer Max extends number] ? readonly [Min, Max] : never : never : never;
|
|
15
|
+
type IncludeConstraint<Value, C extends AssertionConstraint> = [Value] extends [never] ? [] : [C];
|
|
16
|
+
export declare const isBoolean: Guard<boolean, [], "type.boolean", [], "isBoolean">;
|
|
17
|
+
export declare const isBigInt: Guard<bigint, [], "type.bigint", [], "isBigInt">;
|
|
18
|
+
export declare const isBlob: Guard<Blob, [], "type.blob", [], "isBlob">;
|
|
19
|
+
export declare const isDate: Guard<Date, [], "type.date", [], "isDate">;
|
|
20
|
+
export declare const isDefined: Guard<Defined, [], "value.defined", [], "isDefined">;
|
|
21
|
+
export declare const isEmail: Guard<string, [], "string.email", [], "isEmail">;
|
|
22
|
+
export declare const isError: Guard<Error, [], "type.error", [], "isError">;
|
|
23
|
+
export declare const isFiniteNumber: Guard<number, [], "number.finite", [], "isFiniteNumber">;
|
|
24
|
+
export declare const isFile: Guard<File, [], "type.file", [], "isFile">;
|
|
25
|
+
export declare const isFunction: Guard<(...args: never[]) => unknown, [], "type.function", [], "isFunction">;
|
|
26
|
+
export declare const isInteger: Guard<number, [], "number.integer", [], "isInteger">;
|
|
27
|
+
export declare const isMap: Guard<Map<unknown, unknown>, [], "type.map", [], "isMap">;
|
|
28
|
+
export declare const isNaN: Guard<number, [], "number.nan", [], "isNaN">;
|
|
29
|
+
export declare const isNull: Guard<null, [], "type.null", [], "isNull">;
|
|
30
|
+
export declare const isNumber: Guard<number, [], "type.number", [], "isNumber">;
|
|
31
|
+
export declare const isPromiseLike: Guard<PromiseLike<unknown>, [], "type.promise-like", [], "isPromiseLike">;
|
|
32
|
+
export declare const isRegExp: Guard<RegExp, [], "type.regexp", [], "isRegExp">;
|
|
33
|
+
export declare const isSafeInteger: Guard<number, [], "number.safe-integer", [], "isSafeInteger">;
|
|
34
|
+
export declare const isSet: Guard<Set<unknown>, [], "type.set", [], "isSet">;
|
|
35
|
+
export declare const isString: Guard<string, [], "type.string", [], "isString">;
|
|
36
|
+
export declare const isSymbol: Guard<symbol, [], "type.symbol", [], "isSymbol">;
|
|
37
|
+
export declare const isValidDate: Guard<Date, [], "date.valid", [], "isValidDate">;
|
|
38
|
+
export declare const hasLength: <const O extends BoundedAssertionOptions = EmptyOptions>(options?: O) => Refinement<[...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<string | unknown[], number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "length.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<string | unknown[], number>, Checker<number, [max: OptionNumber<O, "max">]>, "length.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<string | unknown[], number>, Checker<number, [min: OptionNumber<O, "min">]>, "length.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<string | unknown[], number>, Checker<number, [range: OptionRange<O, "range">]>, "length.range", range: OptionRange<O, "range">]>] extends infer T ? T extends [...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<string | unknown[], number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "length.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<string | unknown[], number>, Checker<number, [max: OptionNumber<O, "max">]>, "length.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<string | unknown[], number>, Checker<number, [min: OptionNumber<O, "min">]>, "length.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<string | unknown[], number>, Checker<number, [range: OptionRange<O, "range">]>, "length.range", range: OptionRange<O, "range">]>] ? T extends readonly [] ? unknown : (T[number] extends infer T_1 ? T_1 extends T[number] ? T_1 extends unknown ? (value: Parameters<T_1[0]>[0]) => void : never : never : never) extends (value: infer Input) => void ? Input : never : never : never, [...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<string | unknown[], number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "length.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<string | unknown[], number>, Checker<number, [max: OptionNumber<O, "max">]>, "length.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<string | unknown[], number>, Checker<number, [min: OptionNumber<O, "min">]>, "length.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<string | unknown[], number>, Checker<number, [range: OptionRange<O, "range">]>, "length.range", range: OptionRange<O, "range">]>], "length.unsupported-type", [], "hasLength">;
|
|
39
|
+
export declare const hasSize: <const O extends BoundedAssertionOptions = EmptyOptions>(options?: O) => Refinement<[...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "size.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [max: OptionNumber<O, "max">]>, "size.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [min: OptionNumber<O, "min">]>, "size.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [range: OptionRange<O, "range">]>, "size.range", range: OptionRange<O, "range">]>] extends infer T ? T extends [...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "size.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [max: OptionNumber<O, "max">]>, "size.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [min: OptionNumber<O, "min">]>, "size.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [range: OptionRange<O, "range">]>, "size.range", range: OptionRange<O, "range">]>] ? T extends readonly [] ? unknown : (T[number] extends infer T_1 ? T_1 extends T[number] ? T_1 extends unknown ? (value: Parameters<T_1[0]>[0]) => void : never : never : never) extends (value: infer Input) => void ? Input : never : never : never, [...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "size.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [max: OptionNumber<O, "max">]>, "size.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [min: OptionNumber<O, "min">]>, "size.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<Map<unknown, unknown> | Set<unknown>, number>, Checker<number, [range: OptionRange<O, "range">]>, "size.range", range: OptionRange<O, "range">]>], "size.unsupported-type", [], "hasSize">;
|
|
36
40
|
export declare const hasPattern: (pattern: RegExp, { bail, }?: {
|
|
37
41
|
bail?: boolean;
|
|
38
|
-
}) =>
|
|
42
|
+
}) => Refinement<string, readonly [readonly [(value: string) => string, (value: string, pattern: RegExp) => boolean, "string.pattern", RegExp]], "string.unsupported-type", [], "hasPattern">;
|
|
39
43
|
export declare const startsWith: (prefix: string, { bail, }?: {
|
|
40
44
|
bail?: boolean;
|
|
41
|
-
}) =>
|
|
45
|
+
}) => Refinement<string, readonly [readonly [(value: string) => string, (value: string, prefix: string) => boolean, "string.starts-with", string]], "string.unsupported-type", [], "startsWith">;
|
|
42
46
|
export declare const endsWith: (suffix: string, { bail, }?: {
|
|
43
47
|
bail?: boolean;
|
|
44
|
-
}) =>
|
|
45
|
-
export declare const hasValue: (
|
|
46
|
-
|
|
47
|
-
max?: number | null;
|
|
48
|
-
min?: number | null;
|
|
49
|
-
range?: [number, number] | null;
|
|
50
|
-
bail?: boolean;
|
|
51
|
-
}) => Assertion<number, ValueAssertionConstraint[], "number.unsupported-type", undefined, "hasValue">;
|
|
52
|
-
export declare const multipleOf: (step: number, { bail, }?: {
|
|
48
|
+
}) => Refinement<string, readonly [readonly [(value: string) => string, (value: string, suffix: string) => boolean, "string.ends-with", string]], "string.unsupported-type", [], "endsWith">;
|
|
49
|
+
export declare const hasValue: <const O extends BoundedAssertionOptions = EmptyOptions>(options?: O) => Refinement<[...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<number, number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "number.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<number, number>, Checker<number, [max: OptionNumber<O, "max">]>, "number.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<number, number>, Checker<number, [min: OptionNumber<O, "min">]>, "number.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<number, number>, Checker<number, [range: OptionRange<O, "range">]>, "number.range", range: OptionRange<O, "range">]>] extends infer T ? T extends [...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<number, number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "number.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<number, number>, Checker<number, [max: OptionNumber<O, "max">]>, "number.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<number, number>, Checker<number, [min: OptionNumber<O, "min">]>, "number.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<number, number>, Checker<number, [range: OptionRange<O, "range">]>, "number.range", range: OptionRange<O, "range">]>] ? T extends readonly [] ? unknown : (T[number] extends infer T_1 ? T_1 extends T[number] ? T_1 extends unknown ? (value: Parameters<T_1[0]>[0]) => void : never : never : never) extends (value: infer Input) => void ? Input : never : never : never, [...IncludeConstraint<OptionNumber<O, "exact">, readonly [ Extractor<number, number>, Checker<number, [exact: OptionNumber<O, "exact">]>, "number.exact", exact: OptionNumber<O, "exact">]>, ...IncludeConstraint<OptionNumber<O, "max">, readonly [ Extractor<number, number>, Checker<number, [max: OptionNumber<O, "max">]>, "number.max", max: OptionNumber<O, "max">]>, ...IncludeConstraint<OptionNumber<O, "min">, readonly [ Extractor<number, number>, Checker<number, [min: OptionNumber<O, "min">]>, "number.min", min: OptionNumber<O, "min">]>, ...IncludeConstraint<OptionRange<O, "range">, readonly [ Extractor<number, number>, Checker<number, [range: OptionRange<O, "range">]>, "number.range", range: OptionRange<O, "range">]>], "number.unsupported-type", [], "hasValue">;
|
|
50
|
+
export declare const multipleOf: <const Step extends number>(step: Step, { bail, }?: {
|
|
53
51
|
bail?: boolean;
|
|
54
|
-
}) =>
|
|
52
|
+
}) => Refinement<number, readonly [readonly [(value: number) => number, (value: number, step: number) => boolean, "number.multiple-of", Step]], "number.unsupported-type", [], "multipleOf">;
|
|
55
53
|
export declare const oneOf: <Actual = unknown>(values: Actual[] | Record<string, Actual>, { equalTo, bail, }?: {
|
|
56
54
|
equalTo?: (a: Actual, b: unknown) => boolean;
|
|
57
55
|
bail?: boolean;
|
|
58
|
-
}) =>
|
|
56
|
+
}) => Guard<Actual, [], "value.one-of", readonly [Actual[]], "oneOf">;
|
package/dist/assertions.mjs
CHANGED
|
@@ -1,207 +1,3 @@
|
|
|
1
|
-
import { assert } from "./assert.mjs";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
const isGte = (value, min) => value >= min;
|
|
5
|
-
const isLte = (value, max) => value <= max;
|
|
6
|
-
const inRange = (value, [min, max]) => value >= min && value <= max;
|
|
7
|
-
const startsWith$1 = (value, prefix) => value.startsWith(prefix);
|
|
8
|
-
const endsWith$1 = (value, suffix) => value.endsWith(suffix);
|
|
9
|
-
const matchesPattern = (value, pattern) => new RegExp(pattern.source, pattern.flags).test(value);
|
|
10
|
-
const isMultipleOf = (value, step) => {
|
|
11
|
-
if (step === 0) {
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
const quotient = value / step;
|
|
15
|
-
const nearestInteger = Math.round(quotient);
|
|
16
|
-
const delta = Math.abs(quotient - nearestInteger);
|
|
17
|
-
return Number.isFinite(quotient) && delta <= Number.EPSILON * Math.max(1, Math.abs(quotient)) * 16;
|
|
18
|
-
};
|
|
19
|
-
const length = (value) => value.length;
|
|
20
|
-
const size = (value) => value.size;
|
|
21
|
-
const isBoolean = assert(isBoolean$1, { name: "isBoolean", bail: true, code: "type.boolean" });
|
|
22
|
-
const isBigInt = assert(isBigInt$1, { name: "isBigInt", bail: true, code: "type.bigint" });
|
|
23
|
-
const isBlob = assert(isBlob$1, { name: "isBlob", bail: true, code: "type.blob" });
|
|
24
|
-
const isDate = assert(isDate$1, { name: "isDate", bail: true, code: "type.date" });
|
|
25
|
-
const isDefined = assert((value) => value !== void 0, {
|
|
26
|
-
name: "isDefined",
|
|
27
|
-
bail: true,
|
|
28
|
-
code: "value.defined"
|
|
29
|
-
});
|
|
30
|
-
const isEmail = assert(isEmail$1, { name: "isEmail", bail: true, code: "string.email" });
|
|
31
|
-
const isFile = assert(isFile$1, { name: "isFile", bail: true, code: "type.file" });
|
|
32
|
-
const isFunction = assert(isFunction$1, { name: "isFunction", bail: true, code: "type.function" });
|
|
33
|
-
const isMap = assert(isMap$1, { name: "isMap", bail: true, code: "type.map" });
|
|
34
|
-
const isNaN = assert(isNaN$1, { name: "isNaN", bail: true, code: "number.nan" });
|
|
35
|
-
const isNull = assert(isNull$1, { name: "isNull", bail: true, code: "type.null" });
|
|
36
|
-
const isNumber = assert(isNumber$1, { name: "isNumber", bail: true, code: "type.number" });
|
|
37
|
-
const isSet = assert(isSet$1, { name: "isSet", bail: true, code: "type.set" });
|
|
38
|
-
const isString = assert(isString$1, { name: "isString", bail: true, code: "type.string" });
|
|
39
|
-
const isSymbol = assert(isSymbol$1, { name: "isSymbol", bail: true, code: "type.symbol" });
|
|
40
|
-
const hasLength = ({
|
|
41
|
-
exact = null,
|
|
42
|
-
max = null,
|
|
43
|
-
min = null,
|
|
44
|
-
range = null,
|
|
45
|
-
bail = false
|
|
46
|
-
} = {}) => {
|
|
47
|
-
const constraints = [];
|
|
48
|
-
if (exact !== null) constraints.push([length, isEqual, "length.exact", exact]);
|
|
49
|
-
if (max !== null) constraints.push([length, isLte, "length.max", max]);
|
|
50
|
-
if (min !== null) constraints.push([length, isGte, "length.min", min]);
|
|
51
|
-
if (range !== null) constraints.push([length, inRange, "length.range", range]);
|
|
52
|
-
return assert(
|
|
53
|
-
(value) => isArray(value) || isString$1(value),
|
|
54
|
-
{
|
|
55
|
-
name: "hasLength",
|
|
56
|
-
bail,
|
|
57
|
-
code: "length.unsupported-type"
|
|
58
|
-
},
|
|
59
|
-
constraints
|
|
60
|
-
);
|
|
61
|
-
};
|
|
62
|
-
const hasSize = ({
|
|
63
|
-
exact = null,
|
|
64
|
-
max = null,
|
|
65
|
-
min = null,
|
|
66
|
-
range = null,
|
|
67
|
-
bail = false
|
|
68
|
-
} = {}) => {
|
|
69
|
-
const constraints = [];
|
|
70
|
-
if (exact !== null) constraints.push([size, isEqual, "size.exact", exact]);
|
|
71
|
-
if (max !== null) constraints.push([size, isLte, "size.max", max]);
|
|
72
|
-
if (min !== null) constraints.push([size, isGte, "size.min", min]);
|
|
73
|
-
if (range !== null) constraints.push([size, inRange, "size.range", range]);
|
|
74
|
-
return assert(
|
|
75
|
-
(value) => isMap$1(value) || isSet$1(value),
|
|
76
|
-
{
|
|
77
|
-
name: "hasSize",
|
|
78
|
-
bail,
|
|
79
|
-
code: "size.unsupported-type"
|
|
80
|
-
},
|
|
81
|
-
constraints
|
|
82
|
-
);
|
|
83
|
-
};
|
|
84
|
-
const hasPattern = (pattern, {
|
|
85
|
-
bail = false
|
|
86
|
-
} = {}) => assert(
|
|
87
|
-
isString$1,
|
|
88
|
-
{
|
|
89
|
-
name: "hasPattern",
|
|
90
|
-
bail,
|
|
91
|
-
code: "string.unsupported-type"
|
|
92
|
-
},
|
|
93
|
-
[[
|
|
94
|
-
(value) => value,
|
|
95
|
-
matchesPattern,
|
|
96
|
-
"string.pattern",
|
|
97
|
-
pattern
|
|
98
|
-
]]
|
|
99
|
-
);
|
|
100
|
-
const startsWith = (prefix, {
|
|
101
|
-
bail = false
|
|
102
|
-
} = {}) => assert(
|
|
103
|
-
isString$1,
|
|
104
|
-
{
|
|
105
|
-
name: "startsWith",
|
|
106
|
-
bail,
|
|
107
|
-
code: "string.unsupported-type"
|
|
108
|
-
},
|
|
109
|
-
[[
|
|
110
|
-
(value) => value,
|
|
111
|
-
startsWith$1,
|
|
112
|
-
"string.starts-with",
|
|
113
|
-
prefix
|
|
114
|
-
]]
|
|
115
|
-
);
|
|
116
|
-
const endsWith = (suffix, {
|
|
117
|
-
bail = false
|
|
118
|
-
} = {}) => assert(
|
|
119
|
-
isString$1,
|
|
120
|
-
{
|
|
121
|
-
name: "endsWith",
|
|
122
|
-
bail,
|
|
123
|
-
code: "string.unsupported-type"
|
|
124
|
-
},
|
|
125
|
-
[[
|
|
126
|
-
(value) => value,
|
|
127
|
-
endsWith$1,
|
|
128
|
-
"string.ends-with",
|
|
129
|
-
suffix
|
|
130
|
-
]]
|
|
131
|
-
);
|
|
132
|
-
const hasValue = ({
|
|
133
|
-
exact = null,
|
|
134
|
-
max = null,
|
|
135
|
-
min = null,
|
|
136
|
-
range = null,
|
|
137
|
-
bail = false
|
|
138
|
-
} = {}) => {
|
|
139
|
-
const constraints = [];
|
|
140
|
-
if (exact !== null) constraints.push([(value) => value, isEqual, "number.exact", exact]);
|
|
141
|
-
if (max !== null) constraints.push([(value) => value, isLte, "number.max", max]);
|
|
142
|
-
if (min !== null) constraints.push([(value) => value, isGte, "number.min", min]);
|
|
143
|
-
if (range !== null) constraints.push([(value) => value, inRange, "number.range", range]);
|
|
144
|
-
return assert(
|
|
145
|
-
isNumber$1,
|
|
146
|
-
{
|
|
147
|
-
name: "hasValue",
|
|
148
|
-
bail,
|
|
149
|
-
code: "number.unsupported-type"
|
|
150
|
-
},
|
|
151
|
-
constraints
|
|
152
|
-
);
|
|
153
|
-
};
|
|
154
|
-
const multipleOf = (step, {
|
|
155
|
-
bail = false
|
|
156
|
-
} = {}) => assert(
|
|
157
|
-
isNumber$1,
|
|
158
|
-
{
|
|
159
|
-
name: "multipleOf",
|
|
160
|
-
bail,
|
|
161
|
-
code: "number.unsupported-type"
|
|
162
|
-
},
|
|
163
|
-
[[
|
|
164
|
-
(value) => value,
|
|
165
|
-
isMultipleOf,
|
|
166
|
-
"number.multiple-of",
|
|
167
|
-
step
|
|
168
|
-
]]
|
|
169
|
-
);
|
|
170
|
-
const oneOf = (values, {
|
|
171
|
-
equalTo = (a, b) => a === b,
|
|
172
|
-
bail = false
|
|
173
|
-
} = {}) => {
|
|
174
|
-
const haystack = isArray(values) ? values : Object.values(values);
|
|
175
|
-
return assert((value) => haystack.some((item) => equalTo(item, value)), {
|
|
176
|
-
name: "oneOf",
|
|
177
|
-
bail,
|
|
178
|
-
code: "value.one-of",
|
|
179
|
-
args: [haystack]
|
|
180
|
-
});
|
|
181
|
-
};
|
|
182
|
-
export {
|
|
183
|
-
assert,
|
|
184
|
-
endsWith,
|
|
185
|
-
hasLength,
|
|
186
|
-
hasPattern,
|
|
187
|
-
hasSize,
|
|
188
|
-
hasValue,
|
|
189
|
-
isBigInt,
|
|
190
|
-
isBlob,
|
|
191
|
-
isBoolean,
|
|
192
|
-
isDate,
|
|
193
|
-
isDefined,
|
|
194
|
-
isEmail,
|
|
195
|
-
isFile,
|
|
196
|
-
isFunction,
|
|
197
|
-
isMap,
|
|
198
|
-
isNaN,
|
|
199
|
-
isNull,
|
|
200
|
-
isNumber,
|
|
201
|
-
isSet,
|
|
202
|
-
isString,
|
|
203
|
-
isSymbol,
|
|
204
|
-
multipleOf,
|
|
205
|
-
oneOf,
|
|
206
|
-
startsWith
|
|
207
|
-
};
|
|
1
|
+
import { a as refine, t as assert } from "./assert-CzMg5aO7.mjs";
|
|
2
|
+
import { A as startsWith, C as isSafeInteger, D as isValidDate, E as isSymbol, O as multipleOf, S as isRegExp, T as isString, _ as isMap, a as hasValue, b as isNumber, c as isBoolean, d as isEmail, f as isError, g as isInteger, h as isFunction, i as hasSize, k as oneOf, l as isDate, m as isFiniteNumber, n as hasLength, o as isBigInt, p as isFile, r as hasPattern, s as isBlob, t as endsWith, u as isDefined, v as isNaN, w as isSet, x as isPromiseLike, y as isNull } from "./assertions-DPYCHREw.mjs";
|
|
3
|
+
export { assert, endsWith, hasLength, hasPattern, hasSize, hasValue, isBigInt, isBlob, isBoolean, isDate, isDefined, isEmail, isError, isFile, isFiniteNumber, isFunction, isInteger, isMap, isNaN, isNull, isNumber, isPromiseLike, isRegExp, isSafeInteger, isSet, isString, isSymbol, isValidDate, multipleOf, oneOf, refine, startsWith };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const isEqual: (value: number, exact: number) => boolean;
|
|
2
|
+
export declare const isGte: (value: number, min: number) => boolean;
|
|
3
|
+
export declare const isLte: (value: number, max: number) => boolean;
|
|
4
|
+
export declare const inRange: (value: number, [min, max]: readonly [number, number]) => boolean;
|
|
5
|
+
export declare const startsWith: (value: string, prefix: string) => boolean;
|
|
6
|
+
export declare const endsWith: (value: string, suffix: string) => boolean;
|
|
7
|
+
export declare const matchesPattern: (value: string, pattern: RegExp) => boolean;
|
|
8
|
+
export declare const isMultipleOf: (value: number, step: number) => boolean;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const isEqual: (value: number, exact: number) => boolean;
|
|
2
|
+
export declare const isGte: (value: number, min: number) => boolean;
|
|
3
|
+
export declare const isLte: (value: number, max: number) => boolean;
|
|
4
|
+
export declare const inRange: (value: number, [min, max]: readonly [number, number]) => boolean;
|
|
5
|
+
export declare const startsWith: (value: string, prefix: string) => boolean;
|
|
6
|
+
export declare const endsWith: (value: string, suffix: string) => boolean;
|
|
7
|
+
export declare const matchesPattern: (value: string, pattern: RegExp) => boolean;
|
|
8
|
+
export declare const isMultipleOf: (value: number, step: number) => boolean;
|
package/dist/checkers.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export declare const isEqual: (value: number, exact: number) => boolean;
|
|
2
2
|
export declare const isGte: (value: number, min: number) => boolean;
|
|
3
3
|
export declare const isLte: (value: number, max: number) => boolean;
|
|
4
|
-
export declare const inRange: (value: number, [min, max]: [number, number]) => boolean;
|
|
4
|
+
export declare const inRange: (value: number, [min, max]: readonly [number, number]) => boolean;
|
|
5
5
|
export declare const startsWith: (value: string, prefix: string) => boolean;
|
|
6
6
|
export declare const endsWith: (value: string, suffix: string) => boolean;
|
|
7
7
|
export declare const matchesPattern: (value: string, pattern: RegExp) => boolean;
|