justus 0.0.1 → 0.0.5
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/README.md +153 -34
- package/dist/dts-generator.js +166 -0
- package/dist/dts-generator.js.map +6 -0
- package/dist/dts-generator.mjs +158 -0
- package/dist/dts-generator.mjs.map +6 -0
- package/dist/{index.cjs → index.js} +246 -124
- package/dist/index.js.map +6 -0
- package/dist/index.mjs +218 -121
- package/dist/index.mjs.map +2 -2
- package/dts-generator.d.ts +13 -0
- package/{dist/index.d.ts → index.d.ts} +171 -40
- package/package.json +27 -16
- package/src/dts-generator.ts +276 -0
- package/src/errors.ts +3 -3
- package/src/index.ts +32 -8
- package/src/schema.ts +6 -6
- package/src/types.ts +15 -6
- package/src/validators/array.ts +14 -12
- package/src/validators/date.ts +3 -3
- package/src/validators/number.ts +54 -22
- package/src/validators/object.ts +67 -48
- package/src/validators/string.ts +25 -11
- package/src/validators/tuple.ts +17 -13
- package/src/validators/union.ts +3 -3
- package/src/validators/url.ts +140 -0
- package/dist/index.cjs.map +0 -6
package/src/validators/object.ts
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
InferSchema,
|
|
3
|
+
Schema,
|
|
4
|
+
TupleRestParameter,
|
|
5
|
+
ValidationOptions,
|
|
6
|
+
Validator,
|
|
7
|
+
additionalValidator,
|
|
8
|
+
modifierValidator,
|
|
9
|
+
never,
|
|
10
|
+
restValidator,
|
|
11
|
+
schemaValidator,
|
|
12
|
+
} from '../types'
|
|
2
13
|
import { assertValidation, ValidationErrorBuilder } from '../errors'
|
|
3
14
|
import { getValidator } from '../utilities'
|
|
4
15
|
import { isModifier } from '../schema'
|
|
@@ -8,30 +19,47 @@ import { makeTupleRestIterable } from './tuple'
|
|
|
8
19
|
* OBJECT VALIDATOR *
|
|
9
20
|
* ========================================================================== */
|
|
10
21
|
|
|
11
|
-
|
|
22
|
+
export type ObjectProperty = {
|
|
23
|
+
validator: Validator,
|
|
24
|
+
readonly?: true,
|
|
25
|
+
optional?: true,
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** A `Validator` validating any `object`. */
|
|
29
|
+
export class AnyObjectValidator extends Validator<Record<string, any>> {
|
|
30
|
+
validate(value: unknown): Record<string, any> {
|
|
31
|
+
assertValidation(typeof value == 'object', 'Value is not an "object"')
|
|
32
|
+
assertValidation(value !== null, 'Value is "null"')
|
|
33
|
+
return value
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/** A `Validator` validating `object`s according to a `Schema`. */
|
|
12
38
|
export class ObjectValidator<S extends Schema> extends Validator<InferSchema<S>> {
|
|
13
39
|
readonly schema: Readonly<S>
|
|
14
40
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
#optionalProperties: Record<string, Validator<any>> = {}
|
|
18
|
-
#neverProperties: Set<string> = new Set<string>()
|
|
41
|
+
properties = new Map<string, ObjectProperty | undefined>()
|
|
42
|
+
additionalProperties?: Validator
|
|
19
43
|
|
|
20
44
|
constructor(schema: S) {
|
|
21
45
|
super()
|
|
22
46
|
const { [additionalValidator]: additional, ...properties } = schema
|
|
23
47
|
|
|
24
|
-
if (additional) this
|
|
48
|
+
if (additional) this.additionalProperties = getValidator(additional)
|
|
25
49
|
|
|
26
50
|
for (const key of Object.keys(properties)) {
|
|
27
51
|
const definition = properties[key]
|
|
28
52
|
|
|
29
53
|
if (definition === never) {
|
|
30
|
-
this
|
|
54
|
+
this.properties.set(key, undefined)
|
|
31
55
|
} else if (isModifier(definition)) {
|
|
32
|
-
(
|
|
56
|
+
this.properties.set(key, {
|
|
57
|
+
validator: definition[modifierValidator],
|
|
58
|
+
readonly: definition.readonly,
|
|
59
|
+
optional: definition.optional,
|
|
60
|
+
})
|
|
33
61
|
} else {
|
|
34
|
-
this
|
|
62
|
+
this.properties.set(key, { validator: getValidator(definition) })
|
|
35
63
|
}
|
|
36
64
|
}
|
|
37
65
|
|
|
@@ -46,22 +74,24 @@ export class ObjectValidator<S extends Schema> extends Validator<InferSchema<S>>
|
|
|
46
74
|
const builder = new ValidationErrorBuilder()
|
|
47
75
|
const clone: Record<string, any> = {}
|
|
48
76
|
|
|
49
|
-
for (const [ key,
|
|
50
|
-
|
|
51
|
-
|
|
77
|
+
for (const [ key, property ] of this.properties.entries()) {
|
|
78
|
+
const { validator, optional } = property || {}
|
|
79
|
+
|
|
80
|
+
// no validator? this is "never" (forbidden)
|
|
81
|
+
if (! validator) {
|
|
82
|
+
if (record[key] === undefined) continue
|
|
83
|
+
if (options.stripForbiddenProperties) continue
|
|
84
|
+
builder.record('Forbidden property', key)
|
|
52
85
|
continue
|
|
53
86
|
}
|
|
54
87
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
88
|
+
// no value? might be optional, but definitely not validated
|
|
89
|
+
if (record[key] === undefined) {
|
|
90
|
+
if (! optional) builder.record('Required property missing', key)
|
|
91
|
+
continue
|
|
59
92
|
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
for (const [ key, validator ] of Object.entries(this.#optionalProperties)) {
|
|
63
|
-
if (record[key] === undefined) continue
|
|
64
93
|
|
|
94
|
+
// all the rest gets validated normally
|
|
65
95
|
try {
|
|
66
96
|
clone[key] = validator.validate(record[key], options)
|
|
67
97
|
} catch (error) {
|
|
@@ -69,19 +99,8 @@ export class ObjectValidator<S extends Schema> extends Validator<InferSchema<S>>
|
|
|
69
99
|
}
|
|
70
100
|
}
|
|
71
101
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
if (options.stripForbiddenProperties) continue
|
|
75
|
-
builder.record('Forbidden property', key)
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
const additional = this.#additionalProperties
|
|
79
|
-
const additionalKeys = Object.keys(record).filter((k) => {
|
|
80
|
-
if (k in this.#requiredProperties) return false
|
|
81
|
-
if (k in this.#optionalProperties) return false
|
|
82
|
-
if (this.#neverProperties.has(k)) return false
|
|
83
|
-
return true
|
|
84
|
-
})
|
|
102
|
+
const additionalKeys = Object.keys(record).filter((k) => !this.properties.has(k))
|
|
103
|
+
const additional = this.additionalProperties
|
|
85
104
|
|
|
86
105
|
if (additional) {
|
|
87
106
|
additionalKeys.forEach((key) => {
|
|
@@ -102,23 +121,23 @@ export class ObjectValidator<S extends Schema> extends Validator<InferSchema<S>>
|
|
|
102
121
|
}
|
|
103
122
|
}
|
|
104
123
|
|
|
105
|
-
|
|
106
|
-
const anyObjectValidator = new class extends Validator<Record<string, any>> {
|
|
107
|
-
validate(value: unknown): Record<string, any> {
|
|
108
|
-
assertValidation(typeof value == 'object', 'Value is not an "object"')
|
|
109
|
-
assertValidation(value !== null, 'Value is "null"')
|
|
110
|
-
return value
|
|
111
|
-
}
|
|
112
|
-
}
|
|
124
|
+
const anyObjectValidator = new AnyObjectValidator()
|
|
113
125
|
|
|
114
|
-
function _object(): Validator<Record<string, any>>
|
|
115
|
-
function _object<S extends Schema>(schema: S): S
|
|
116
|
-
|
|
126
|
+
export function _object(): Validator<Record<string, any>>
|
|
127
|
+
export function _object<S extends Schema>(schema: S): S & {
|
|
128
|
+
[Symbol.iterator](): Generator<TupleRestParameter<InferSchema<S>>>
|
|
129
|
+
}
|
|
130
|
+
export function _object(schema?: Schema): Validator<Record<string, any>> | Schema {
|
|
117
131
|
if (! schema) return anyObjectValidator
|
|
118
132
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
133
|
+
const validator = new ObjectValidator(schema)
|
|
134
|
+
function* iterator(): Generator<TupleRestParameter> {
|
|
135
|
+
yield { [restValidator]: validator }
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return Object.defineProperties(schema, {
|
|
139
|
+
[schemaValidator]: { value: validator, enumerable: false },
|
|
140
|
+
[Symbol.iterator]: { value: iterator, enumerable: false },
|
|
122
141
|
})
|
|
123
142
|
}
|
|
124
143
|
|
package/src/validators/string.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Validator } from '../types'
|
|
1
|
+
import { Branding, Validator } from '../types'
|
|
2
2
|
import { assertValidation, assertSchema } from '../errors'
|
|
3
3
|
import { makeTupleRestIterable } from './tuple'
|
|
4
4
|
|
|
@@ -12,11 +12,26 @@ export interface StringConstraints {
|
|
|
12
12
|
pattern?: RegExp,
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
/**
|
|
15
|
+
/** Constraints to validate a `string` with extra branding information. */
|
|
16
|
+
export interface BrandedStringConstraints<B extends string> extends StringConstraints {
|
|
17
|
+
/** The _brand_ of the string (will generate a `__brand_${B}` type property */
|
|
18
|
+
brand: B
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** A `Validator` validating any `string`. */
|
|
22
|
+
export class AnyStringValidator extends Validator<string> {
|
|
23
|
+
validate(value: unknown): string {
|
|
24
|
+
assertValidation(typeof value == 'string', 'Value is not a "string"')
|
|
25
|
+
return value
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/** A `Validator` validating `string`s with constraints. */
|
|
16
30
|
export class StringValidator<S extends string = string> extends Validator<S> {
|
|
17
31
|
readonly maxLength: number
|
|
18
32
|
readonly minLength: number
|
|
19
33
|
readonly pattern?: RegExp
|
|
34
|
+
readonly brand?: string
|
|
20
35
|
|
|
21
36
|
constructor(constraints: StringConstraints = {}) {
|
|
22
37
|
super()
|
|
@@ -27,6 +42,8 @@ export class StringValidator<S extends string = string> extends Validator<S> {
|
|
|
27
42
|
pattern,
|
|
28
43
|
} = constraints
|
|
29
44
|
|
|
45
|
+
if ('brand' in constraints) this.brand = (<any> constraints).brand
|
|
46
|
+
|
|
30
47
|
assertSchema(minLength >= 0, `Constraint "minLength" (${minLength}) must be non-negative`)
|
|
31
48
|
assertSchema(maxLength >= 0, `Constraint "maxLength" (${maxLength}) must be non-negative`)
|
|
32
49
|
assertSchema(minLength <= maxLength, `Constraint "minLength" (${minLength}) is greater than "maxLength" (${maxLength})`)
|
|
@@ -52,17 +69,14 @@ export class StringValidator<S extends string = string> extends Validator<S> {
|
|
|
52
69
|
}
|
|
53
70
|
}
|
|
54
71
|
|
|
55
|
-
const anyStringValidator = new
|
|
56
|
-
validate(value: unknown): string {
|
|
57
|
-
assertValidation(typeof value == 'string', 'Value is not a "string"')
|
|
58
|
-
return value
|
|
59
|
-
}
|
|
60
|
-
}
|
|
72
|
+
const anyStringValidator = new AnyStringValidator()
|
|
61
73
|
|
|
62
|
-
function _string(): Validator<string>
|
|
63
|
-
function _string
|
|
74
|
+
export function _string(): Validator<string>
|
|
75
|
+
export function _string(constraints?: StringConstraints): StringValidator<string>
|
|
76
|
+
export function _string<S extends string>(constraints?: StringConstraints): StringValidator<S>
|
|
77
|
+
export function _string<B extends string>(constraints: BrandedStringConstraints<B>): StringValidator<string & Branding<B>>
|
|
64
78
|
|
|
65
|
-
function _string(constraints?: StringConstraints): Validator<string> {
|
|
79
|
+
export function _string(constraints?: StringConstraints): Validator<string> {
|
|
66
80
|
return constraints ? new StringValidator(constraints) : anyStringValidator
|
|
67
81
|
}
|
|
68
82
|
|
package/src/validators/tuple.ts
CHANGED
|
@@ -4,32 +4,36 @@ import { assertValidation, ValidationError } from '../errors'
|
|
|
4
4
|
import { getValidator } from '../utilities'
|
|
5
5
|
import { nullValidator } from './constant'
|
|
6
6
|
|
|
7
|
+
export interface TupleMember { single: boolean, validator: Validator }
|
|
8
|
+
|
|
7
9
|
/** A `Validator` for _tuples_. */
|
|
8
10
|
export class TupleValidator<T extends Tuple> extends Validator<InferTuple<T>> {
|
|
11
|
+
readonly members: readonly TupleMember[]
|
|
9
12
|
readonly tuple: T
|
|
10
13
|
|
|
11
|
-
#validators: ({ single: boolean, validator: Validator })[] = []
|
|
12
|
-
|
|
13
14
|
constructor(tuple: T) {
|
|
14
15
|
super()
|
|
15
16
|
|
|
16
|
-
|
|
17
|
+
const members: TupleMember[] = []
|
|
17
18
|
for (const item of tuple) {
|
|
18
19
|
if (item === null) { // god knows why typeof null === "object"
|
|
19
|
-
|
|
20
|
+
members.push({ single: true, validator: nullValidator })
|
|
20
21
|
} else if ((typeof item === 'object') && (restValidator in item)) {
|
|
21
|
-
|
|
22
|
+
members.push({ single: false, validator: (<any>item)[restValidator] })
|
|
22
23
|
} else {
|
|
23
|
-
|
|
24
|
+
members.push({ single: true, validator: getValidator(item) })
|
|
24
25
|
}
|
|
25
26
|
}
|
|
27
|
+
|
|
28
|
+
this.members = members
|
|
29
|
+
this.tuple = tuple
|
|
26
30
|
}
|
|
27
31
|
|
|
28
32
|
validate(value: unknown, options: ValidationOptions): InferTuple<T> {
|
|
29
33
|
assertValidation(Array.isArray(value), 'Value is not an "array"')
|
|
30
34
|
|
|
31
35
|
// Empty tuples
|
|
32
|
-
if (this
|
|
36
|
+
if (this.members.length === 0) {
|
|
33
37
|
const size = value.length
|
|
34
38
|
assertValidation(size === 0, `Found ${size} element${size === 1 ? '' : 's'} validating empty tuple`)
|
|
35
39
|
return value as InferTuple<T>
|
|
@@ -39,24 +43,24 @@ export class TupleValidator<T extends Tuple> extends Validator<InferTuple<T>> {
|
|
|
39
43
|
const clone = new Array(value.length)
|
|
40
44
|
let needle = 0
|
|
41
45
|
let haystack = 0
|
|
42
|
-
let { single, validator } = this
|
|
46
|
+
let { single, validator } = this.members[needle]
|
|
43
47
|
|
|
44
|
-
while ((needle < this
|
|
48
|
+
while ((needle < this.members.length) && (haystack < value.length)) {
|
|
45
49
|
try {
|
|
46
50
|
clone[haystack] = validator.validate(value[haystack], options)
|
|
47
|
-
if (single) ({ single, validator } = this
|
|
51
|
+
if (single) ({ single, validator } = this.members[++ needle] || {})
|
|
48
52
|
haystack ++
|
|
49
53
|
} catch (error) {
|
|
50
54
|
if (single) throw new ValidationError(error, [ haystack ])
|
|
51
|
-
else ({ single, validator } = this
|
|
55
|
+
else ({ single, validator } = this.members[++ needle] || {})
|
|
52
56
|
}
|
|
53
57
|
}
|
|
54
58
|
|
|
55
|
-
while ((needle < this
|
|
59
|
+
while ((needle < this.members.length) && (this.members[needle].single === false)) {
|
|
56
60
|
needle ++
|
|
57
61
|
}
|
|
58
62
|
|
|
59
|
-
const missing = this
|
|
63
|
+
const missing = this.members.length - needle
|
|
60
64
|
if ((missing === 1) && single) {
|
|
61
65
|
throw new ValidationError('Tuple defines 1 missing validation')
|
|
62
66
|
} else if (missing > 1) {
|
package/src/validators/union.ts
CHANGED
|
@@ -7,11 +7,11 @@ import {
|
|
|
7
7
|
Validator,
|
|
8
8
|
} from '../types'
|
|
9
9
|
|
|
10
|
-
type UnionArguments = readonly [ Validation, ...Validation[] ]
|
|
10
|
+
export type UnionArguments = readonly [ Validation, ...Validation[] ]
|
|
11
11
|
|
|
12
12
|
/* -------------------------------------------------------------------------- */
|
|
13
13
|
|
|
14
|
-
type InferOneOfValidationType<A extends UnionArguments> =
|
|
14
|
+
export type InferOneOfValidationType<A extends UnionArguments> =
|
|
15
15
|
A extends readonly [ infer First, ...infer Rest ] ?
|
|
16
16
|
First extends Validation ?
|
|
17
17
|
Rest extends UnionArguments ?
|
|
@@ -49,7 +49,7 @@ export function oneOf<A extends UnionArguments>(...args: A): OneOfValidator<A> {
|
|
|
49
49
|
|
|
50
50
|
/* -------------------------------------------------------------------------- */
|
|
51
51
|
|
|
52
|
-
type InferAllOfValidationType<A extends UnionArguments> =
|
|
52
|
+
export type InferAllOfValidationType<A extends UnionArguments> =
|
|
53
53
|
A extends readonly [ infer First, ...infer Rest ] ?
|
|
54
54
|
First extends Validation ?
|
|
55
55
|
Rest extends UnionArguments ?
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { ConstantValidator } from './constant'
|
|
2
|
+
import { ValidationError, ValidationErrorBuilder } from '../errors'
|
|
3
|
+
import { Schema, Validator } from '../types'
|
|
4
|
+
import { makeTupleRestIterable } from './tuple'
|
|
5
|
+
import { ObjectValidator, ValidationOptions } from '..'
|
|
6
|
+
|
|
7
|
+
const KEYS: Exclude<keyof URLConstraints, 'searchParams'>[] = [
|
|
8
|
+
'href',
|
|
9
|
+
'origin',
|
|
10
|
+
'protocol',
|
|
11
|
+
'username',
|
|
12
|
+
'password',
|
|
13
|
+
'host',
|
|
14
|
+
'hostname',
|
|
15
|
+
'port',
|
|
16
|
+
'pathname',
|
|
17
|
+
'search',
|
|
18
|
+
'hash',
|
|
19
|
+
]
|
|
20
|
+
|
|
21
|
+
const OPTIONS: ValidationOptions = {
|
|
22
|
+
stripAdditionalProperties: false,
|
|
23
|
+
stripForbiddenProperties: false,
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** Constraints to validate a `URL` with. */
|
|
27
|
+
export interface URLConstraints {
|
|
28
|
+
/** Constraint to validate the `href` component of the `URL`. */
|
|
29
|
+
href?: string | Validator<string>,
|
|
30
|
+
/** Constraint to validate the `origin` component of the `URL`. */
|
|
31
|
+
origin?: string | Validator<string>,
|
|
32
|
+
/** Constraint to validate the `protocol` component of the `URL`. */
|
|
33
|
+
protocol?: string | Validator<string>,
|
|
34
|
+
/** Constraint to validate the `username` component of the `URL`. */
|
|
35
|
+
username?: string | Validator<string>,
|
|
36
|
+
/** Constraint to validate the `password` component of the `URL`. */
|
|
37
|
+
password?: string | Validator<string>,
|
|
38
|
+
/** Constraint to validate the `host` (`hostname:port`) component of the `URL`. */
|
|
39
|
+
host?: string | Validator<string>,
|
|
40
|
+
/** Constraint to validate the `hostname` component of the `URL`. */
|
|
41
|
+
hostname?: string | Validator<string>,
|
|
42
|
+
/** Constraint to validate the `port` component of the `URL`. */
|
|
43
|
+
port?: string | Validator<string>,
|
|
44
|
+
/** Constraint to validate the `pathname` component of the `URL`. */
|
|
45
|
+
pathname?: string | Validator<string>,
|
|
46
|
+
/** Constraint to validate the `search` component of the `URL` as a string. */
|
|
47
|
+
search?: string | Validator<string>,
|
|
48
|
+
/** Constraint to validate the `hash` component of the `URL`. */
|
|
49
|
+
hash?: string | Validator<string>,
|
|
50
|
+
/**
|
|
51
|
+
* Schema used to validate the `searchParams` component of the `URL`.
|
|
52
|
+
*
|
|
53
|
+
* The `searchParams` will be normalized in a `Record<string, string>`, where
|
|
54
|
+
* only the _first_ value associated with a search parameter will be checked.
|
|
55
|
+
*/
|
|
56
|
+
searchParams?: Schema,
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** A `Validator` validating URLs and converting them to `URL` instances. */
|
|
60
|
+
export class URLValidator extends Validator<URL> {
|
|
61
|
+
readonly href?: Validator<string>
|
|
62
|
+
readonly origin?: Validator<string>
|
|
63
|
+
readonly protocol?: Validator<string>
|
|
64
|
+
readonly username?: Validator<string>
|
|
65
|
+
readonly password?: Validator<string>
|
|
66
|
+
readonly host?: Validator<string>
|
|
67
|
+
readonly hostname?: Validator<string>
|
|
68
|
+
readonly port?: Validator<string>
|
|
69
|
+
readonly pathname?: Validator<string>
|
|
70
|
+
readonly search?: Validator<string>
|
|
71
|
+
readonly hash?: Validator<string>
|
|
72
|
+
|
|
73
|
+
readonly searchParams?: ObjectValidator<Schema>
|
|
74
|
+
|
|
75
|
+
constructor(constraints: URLConstraints = {}) {
|
|
76
|
+
super()
|
|
77
|
+
|
|
78
|
+
for (const key of KEYS) {
|
|
79
|
+
const constraint = constraints[key]
|
|
80
|
+
if (typeof constraint === 'string') {
|
|
81
|
+
this[key] = new ConstantValidator(constraint)
|
|
82
|
+
} else if (constraint) {
|
|
83
|
+
this[key] = constraint
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (constraints.searchParams) {
|
|
88
|
+
this.searchParams = new ObjectValidator(constraints.searchParams)
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
validate(value: unknown): URL {
|
|
93
|
+
let url: URL
|
|
94
|
+
try {
|
|
95
|
+
url = value instanceof URL ? value : new URL(value as any)
|
|
96
|
+
} catch (error) {
|
|
97
|
+
throw new ValidationError('Value could not be converted to a "URL"')
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const builder = new ValidationErrorBuilder()
|
|
101
|
+
|
|
102
|
+
for (const key of KEYS) {
|
|
103
|
+
const validator = this[key]
|
|
104
|
+
if (validator) {
|
|
105
|
+
try {
|
|
106
|
+
validator.validate(url[key], OPTIONS)
|
|
107
|
+
} catch (error) {
|
|
108
|
+
builder.record(error, key)
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (this.searchParams) {
|
|
114
|
+
const parameters: Record<string, string> = {}
|
|
115
|
+
for (const param of url.searchParams.keys()) {
|
|
116
|
+
parameters[param] = url.searchParams.get(param) as string
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
try {
|
|
120
|
+
this.searchParams.validate(parameters, OPTIONS)
|
|
121
|
+
} catch (error) {
|
|
122
|
+
builder.record(error, 'searchParams')
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return builder.assert(url)
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const anyURLValidator = new URLValidator()
|
|
131
|
+
|
|
132
|
+
export function _url(): URLValidator
|
|
133
|
+
export function _url(constraints: URLConstraints): URLValidator
|
|
134
|
+
|
|
135
|
+
export function _url(constraints?: URLConstraints): URLValidator {
|
|
136
|
+
return constraints ? new URLValidator(constraints) : anyURLValidator
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/** Validate URLs and convert them to `URL` instances. */
|
|
140
|
+
export const url = makeTupleRestIterable(_url)
|
package/dist/index.cjs.map
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts", "../src/errors.ts", "../src/types.ts", "../src/validators/any.ts", "../src/validators/constant.ts", "../src/validators/tuple.ts", "../src/validators/object.ts", "../src/utilities.ts", "../src/schema.ts", "../src/validators/union.ts", "../src/validators/array.ts", "../src/validators/boolean.ts", "../src/validators/date.ts", "../src/validators/number.ts", "../src/validators/string.ts"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|