typeshi 1.7.9 → 1.7.11
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/dist/utils/typeValidation.d.ts +41 -28
- package/dist/utils/typeValidation.js +35 -21
- package/package.json +1 -1
|
@@ -47,21 +47,24 @@ export declare function isEmptyArray(value: any): value is Array<any> & {
|
|
|
47
47
|
};
|
|
48
48
|
/**
|
|
49
49
|
* @param value `any`
|
|
50
|
+
* @param requireNonNegative `boolean` `default = false`
|
|
51
|
+
* @param requireNonEmpty `boolean` `default = true`
|
|
52
|
+
* - `if` `true` then `value` must be array with at least 1 element
|
|
53
|
+
* - `if` `false` then `value` can be empty array
|
|
50
54
|
* @returns **`isIntegerArray`** `boolean` = `value is Array<number> & { length: number }`
|
|
51
|
-
* - **`true`** if `value` is an array with `length > 0` and each of its elements is an `integer`
|
|
52
|
-
* - **`false`** `otherwise`
|
|
53
55
|
*/
|
|
54
|
-
export declare function isIntegerArray(value: any, requireNonNegative?: boolean): value is Array<number> & {
|
|
56
|
+
export declare function isIntegerArray(value: any, requireNonNegative?: boolean, requireNonEmpty?: boolean): value is Array<number> & {
|
|
55
57
|
length: number;
|
|
56
58
|
};
|
|
57
59
|
/**
|
|
58
60
|
* @consideration add param to allow for empty strings?
|
|
59
61
|
* @param value `any`
|
|
62
|
+
* @param requireNonEmpty `boolean` `default = true`
|
|
63
|
+
* - `if` `true` then `value` must be array with at least 1 element
|
|
64
|
+
* - `if` `false` then `value` can be empty array
|
|
60
65
|
* @returns **`isStringArray`** `boolean` = `value is Array<string> & { length: number }`
|
|
61
|
-
* - **`true`** if `value` is an array with `length > 0` and each of its elements is a **non-empty** `string`
|
|
62
|
-
* - **`false`** `otherwise`
|
|
63
66
|
*/
|
|
64
|
-
export declare function isStringArray(value: any): value is Array<string> & {
|
|
67
|
+
export declare function isStringArray(value: any, requireNonEmpty?: boolean): value is Array<string> & {
|
|
65
68
|
length: number;
|
|
66
69
|
};
|
|
67
70
|
/**
|
|
@@ -147,15 +150,20 @@ export declare class isOptional {
|
|
|
147
150
|
static type: <T>(value: any, guard: (v: any, ...args: any[]) => v is T, ...args: any[]) => value is T | undefined | null;
|
|
148
151
|
/**
|
|
149
152
|
* @param value
|
|
150
|
-
* @param requireNonEmpty `
|
|
153
|
+
* @param requireNonEmpty `boolean` `default` = `true` (if `true`, require that string have at least 1 non-whitespace character)
|
|
151
154
|
* @returns
|
|
152
155
|
*/
|
|
153
156
|
static string: (value: any, requireNonEmpty?: boolean) => value is string | undefined | null;
|
|
154
|
-
|
|
157
|
+
/**
|
|
158
|
+
* @param value
|
|
159
|
+
* @param requireNonEmpty `boolean` `default` = `true` (if `true`, require that array have at least 1 element)
|
|
160
|
+
* @returns
|
|
161
|
+
*/
|
|
162
|
+
static stringArray: (value: any, requireNonEmpty?: boolean) => value is string[] | undefined | null;
|
|
155
163
|
static numeric: (value: any, requireInteger?: boolean, requireNonNegative?: boolean) => value is string | number | undefined | null;
|
|
156
164
|
static number: (value: any, requireInteger?: boolean, requireNonNegative?: boolean) => value is number | undefined | null;
|
|
157
165
|
static positiveInteger: (value: any) => value is number | undefined | null;
|
|
158
|
-
static integerArray: (value: any, requireNonNegative?: boolean) => value is number[] | undefined | null;
|
|
166
|
+
static integerArray: (value: any, requireNonNegative?: boolean, requireNonEmpty?: boolean) => value is number[] | undefined | null;
|
|
159
167
|
static boolean: (value: any) => value is boolean | undefined | null;
|
|
160
168
|
static function: (value: any) => value is Function | undefined | null;
|
|
161
169
|
}
|
|
@@ -163,15 +171,20 @@ export declare class isUndefinedOr {
|
|
|
163
171
|
static type: <T>(value: any, guard: (v: any, ...args: any[]) => v is T, ...args: any[]) => value is T | undefined;
|
|
164
172
|
/**
|
|
165
173
|
* @param value
|
|
166
|
-
* @param requireNonEmpty `
|
|
174
|
+
* @param requireNonEmpty `boolean` `default` = `true` (if `true`, require that string have at least 1 non-whitespace character)
|
|
167
175
|
* @returns
|
|
168
176
|
*/
|
|
169
177
|
static string: (value: any, requireNonEmpty?: boolean) => value is string | undefined;
|
|
170
|
-
|
|
178
|
+
/**
|
|
179
|
+
* @param value
|
|
180
|
+
* @param requireNonEmpty `boolean` `default` = `true` (if `true`, require that array have at least 1 element)
|
|
181
|
+
* @returns
|
|
182
|
+
*/
|
|
183
|
+
static stringArray: (value: any, requireNonEmpty?: boolean) => value is string[] | undefined;
|
|
171
184
|
static numeric: (value: any, requireInteger?: boolean, requireNonNegative?: boolean) => value is string | number | undefined;
|
|
172
185
|
static number: (value: any, requireInteger?: boolean, requireNonNegative?: boolean) => value is number | undefined;
|
|
173
186
|
static positiveInteger: (value: any) => value is number | undefined;
|
|
174
|
-
static integerArray: (value: any, requireNonNegative?: boolean) => value is number[] | undefined;
|
|
187
|
+
static integerArray: (value: any, requireNonNegative?: boolean, requireNonEmpty?: boolean) => value is number[] | undefined;
|
|
175
188
|
static boolean: (value: any) => value is boolean | undefined;
|
|
176
189
|
static function: (value: any) => value is Function | undefined;
|
|
177
190
|
}
|
|
@@ -195,25 +208,25 @@ export declare function isFunction(value: any): value is Function;
|
|
|
195
208
|
*/
|
|
196
209
|
export declare function isUndefined(value: any): value is undefined;
|
|
197
210
|
export declare function isUndefinedOrNull(value: unknown): value is undefined | null;
|
|
198
|
-
export type NumberKeys<T> = {
|
|
199
|
-
[K in keyof T]: T[K] extends number | undefined ? K : never;
|
|
200
|
-
}[keyof T];
|
|
201
|
-
export type ArrayKeys<T> = {
|
|
202
|
-
[K in keyof T]: T[K] extends Array<any> | undefined ? K : never;
|
|
203
|
-
}[keyof T];
|
|
204
|
-
export type ArrayOfTypeKeys<T, U> = {
|
|
205
|
-
[K in keyof T]: T[K] extends Array<U> | undefined ? K : never;
|
|
206
|
-
}[keyof T];
|
|
207
|
-
export type StringKeys<T> = {
|
|
208
|
-
[K in keyof T]: T[K] extends string | undefined ? K : never;
|
|
209
|
-
}[keyof T];
|
|
210
|
-
export type PrimitiveKeys<T> = {
|
|
211
|
-
[K in keyof T]: T[K] extends string | number | boolean | null | undefined ? K : never;
|
|
212
|
-
}[keyof T];
|
|
211
|
+
export type NumberKeys<T, Required extends true | false = false> = {
|
|
212
|
+
[K in keyof T]: Required extends true ? (T[K] extends number ? K : never) : (T[K] extends number | undefined ? K : never);
|
|
213
|
+
}[keyof T][];
|
|
214
|
+
export type ArrayKeys<T, Required extends true | false = false> = {
|
|
215
|
+
[K in keyof T]: Required extends true ? (T[K] extends Array<any> ? K : never) : (T[K] extends Array<any> | undefined ? K : never);
|
|
216
|
+
}[keyof T][];
|
|
217
|
+
export type ArrayOfTypeKeys<T, U, Required extends true | false = false> = {
|
|
218
|
+
[K in keyof T]: Required extends true ? (T[K] extends Array<U> ? K : never) : (T[K] extends Array<U> | undefined ? K : never);
|
|
219
|
+
}[keyof T][];
|
|
220
|
+
export type StringKeys<T, Required extends true | false = false> = {
|
|
221
|
+
[K in keyof T]: Required extends true ? (T[K] extends string ? K : never) : (T[K] extends string | undefined ? K : never);
|
|
222
|
+
}[keyof T][];
|
|
223
|
+
export type PrimitiveKeys<T, Required extends true | false = false> = {
|
|
224
|
+
[K in keyof T]: Required extends true ? (T[K] extends string | number | boolean | null ? K : never) : (T[K] extends string | number | boolean | null | undefined ? K : never);
|
|
225
|
+
}[keyof T][];
|
|
213
226
|
export type Primitive = string | number | boolean | null | undefined;
|
|
214
227
|
/** Get the union of all values of `T` (like `valueof T`) */
|
|
215
228
|
export type ValueOf<T> = T[keyof T];
|
|
216
229
|
/** Keys of `T` whose values extend a given type `U` */
|
|
217
230
|
export type KeysOfType<T, U> = {
|
|
218
231
|
[K in keyof T]: T[K] extends U ? K : never;
|
|
219
|
-
}[keyof T];
|
|
232
|
+
}[keyof T][];
|
|
@@ -92,25 +92,29 @@ function isEmptyArray(value) {
|
|
|
92
92
|
}
|
|
93
93
|
/**
|
|
94
94
|
* @param value `any`
|
|
95
|
+
* @param requireNonNegative `boolean` `default = false`
|
|
96
|
+
* @param requireNonEmpty `boolean` `default = true`
|
|
97
|
+
* - `if` `true` then `value` must be array with at least 1 element
|
|
98
|
+
* - `if` `false` then `value` can be empty array
|
|
95
99
|
* @returns **`isIntegerArray`** `boolean` = `value is Array<number> & { length: number }`
|
|
96
|
-
* - **`true`** if `value` is an array with `length > 0` and each of its elements is an `integer`
|
|
97
|
-
* - **`false`** `otherwise`
|
|
98
100
|
*/
|
|
99
|
-
function isIntegerArray(value, requireNonNegative = false) {
|
|
100
|
-
return (
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
function isIntegerArray(value, requireNonNegative = false, requireNonEmpty = true) {
|
|
102
|
+
return (requireNonEmpty
|
|
103
|
+
? isNonEmptyArray(value) && value.every(el => isInteger(el, requireNonNegative))
|
|
104
|
+
: isEmptyArray(value));
|
|
103
105
|
}
|
|
104
106
|
/**
|
|
105
107
|
* @consideration add param to allow for empty strings?
|
|
106
108
|
* @param value `any`
|
|
109
|
+
* @param requireNonEmpty `boolean` `default = true`
|
|
110
|
+
* - `if` `true` then `value` must be array with at least 1 element
|
|
111
|
+
* - `if` `false` then `value` can be empty array
|
|
107
112
|
* @returns **`isStringArray`** `boolean` = `value is Array<string> & { length: number }`
|
|
108
|
-
* - **`true`** if `value` is an array with `length > 0` and each of its elements is a **non-empty** `string`
|
|
109
|
-
* - **`false`** `otherwise`
|
|
110
113
|
*/
|
|
111
|
-
function isStringArray(value) {
|
|
112
|
-
return (
|
|
113
|
-
&& value.every(el => isNonEmptyString(el))
|
|
114
|
+
function isStringArray(value, requireNonEmpty = true) {
|
|
115
|
+
return (requireNonEmpty
|
|
116
|
+
? isNonEmptyArray(value) && value.every(el => isNonEmptyString(el))
|
|
117
|
+
: isEmptyArray(value));
|
|
114
118
|
}
|
|
115
119
|
/**
|
|
116
120
|
* @note **passing in an array will return `false`.**
|
|
@@ -305,14 +309,19 @@ isOptional.type = (value, guard, ...args) => {
|
|
|
305
309
|
};
|
|
306
310
|
/**
|
|
307
311
|
* @param value
|
|
308
|
-
* @param requireNonEmpty `
|
|
312
|
+
* @param requireNonEmpty `boolean` `default` = `true` (if `true`, require that string have at least 1 non-whitespace character)
|
|
309
313
|
* @returns
|
|
310
314
|
*/
|
|
311
315
|
isOptional.string = (value, requireNonEmpty = true) => {
|
|
312
316
|
return isUndefinedOrNull(value) || requireNonEmpty ? isNonEmptyString(value) : typeof value === "string";
|
|
313
317
|
};
|
|
314
|
-
|
|
315
|
-
|
|
318
|
+
/**
|
|
319
|
+
* @param value
|
|
320
|
+
* @param requireNonEmpty `boolean` `default` = `true` (if `true`, require that array have at least 1 element)
|
|
321
|
+
* @returns
|
|
322
|
+
*/
|
|
323
|
+
isOptional.stringArray = (value, requireNonEmpty = true) => {
|
|
324
|
+
return isUndefinedOrNull(value) || isStringArray(value, requireNonEmpty);
|
|
316
325
|
};
|
|
317
326
|
isOptional.numeric = (value, requireInteger = false, requireNonNegative = false) => {
|
|
318
327
|
return isUndefinedOrNull(value) || isNumeric(value, requireInteger, requireNonNegative);
|
|
@@ -324,8 +333,8 @@ isOptional.number = (value, requireInteger = false, requireNonNegative = false)
|
|
|
324
333
|
isOptional.positiveInteger = (value) => {
|
|
325
334
|
return (isUndefinedOrNull(value) || isPositveInteger(value));
|
|
326
335
|
};
|
|
327
|
-
isOptional.integerArray = (value, requireNonNegative = false) => {
|
|
328
|
-
return isUndefinedOrNull(value) || isIntegerArray(value, requireNonNegative);
|
|
336
|
+
isOptional.integerArray = (value, requireNonNegative = false, requireNonEmpty = true) => {
|
|
337
|
+
return isUndefinedOrNull(value) || isIntegerArray(value, requireNonNegative, requireNonEmpty);
|
|
329
338
|
};
|
|
330
339
|
isOptional.boolean = (value) => {
|
|
331
340
|
return isUndefinedOrNull(value) || isBoolean(value);
|
|
@@ -341,14 +350,19 @@ isUndefinedOr.type = (value, guard, ...args) => {
|
|
|
341
350
|
};
|
|
342
351
|
/**
|
|
343
352
|
* @param value
|
|
344
|
-
* @param requireNonEmpty `
|
|
353
|
+
* @param requireNonEmpty `boolean` `default` = `true` (if `true`, require that string have at least 1 non-whitespace character)
|
|
345
354
|
* @returns
|
|
346
355
|
*/
|
|
347
356
|
isUndefinedOr.string = (value, requireNonEmpty = true) => {
|
|
348
357
|
return isUndefined(value) || requireNonEmpty ? isNonEmptyString(value) : typeof value === "string";
|
|
349
358
|
};
|
|
350
|
-
|
|
351
|
-
|
|
359
|
+
/**
|
|
360
|
+
* @param value
|
|
361
|
+
* @param requireNonEmpty `boolean` `default` = `true` (if `true`, require that array have at least 1 element)
|
|
362
|
+
* @returns
|
|
363
|
+
*/
|
|
364
|
+
isUndefinedOr.stringArray = (value, requireNonEmpty = true) => {
|
|
365
|
+
return isUndefined(value) || isStringArray(value, requireNonEmpty);
|
|
352
366
|
};
|
|
353
367
|
isUndefinedOr.numeric = (value, requireInteger = false, requireNonNegative = false) => {
|
|
354
368
|
return isUndefined(value) || isNumeric(value, requireInteger, requireNonNegative);
|
|
@@ -360,8 +374,8 @@ isUndefinedOr.number = (value, requireInteger = false, requireNonNegative = fals
|
|
|
360
374
|
isUndefinedOr.positiveInteger = (value) => {
|
|
361
375
|
return (isUndefined(value) || isPositveInteger(value));
|
|
362
376
|
};
|
|
363
|
-
isUndefinedOr.integerArray = (value, requireNonNegative = false) => {
|
|
364
|
-
return isUndefined(value) || isIntegerArray(value, requireNonNegative);
|
|
377
|
+
isUndefinedOr.integerArray = (value, requireNonNegative = false, requireNonEmpty = true) => {
|
|
378
|
+
return isUndefined(value) || isIntegerArray(value, requireNonNegative, requireNonEmpty);
|
|
365
379
|
};
|
|
366
380
|
isUndefinedOr.boolean = (value) => {
|
|
367
381
|
return isUndefined(value) || isBoolean(value);
|