@spudlabs/guardis 0.4.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/README.md +901 -0
- package/esm/mod.d.ts +55 -0
- package/esm/mod.d.ts.map +1 -0
- package/esm/mod.js +43 -0
- package/esm/package.json +3 -0
- package/esm/specs/standard-schema-spec.v1.d.ts +56 -0
- package/esm/specs/standard-schema-spec.v1.d.ts.map +1 -0
- package/esm/specs/standard-schema-spec.v1.js +1 -0
- package/esm/src/batch.d.ts +23 -0
- package/esm/src/batch.d.ts.map +1 -0
- package/esm/src/batch.js +23 -0
- package/esm/src/brand.d.ts +62 -0
- package/esm/src/brand.d.ts.map +1 -0
- package/esm/src/brand.js +9 -0
- package/esm/src/context.d.ts +19 -0
- package/esm/src/context.d.ts.map +1 -0
- package/esm/src/context.js +41 -0
- package/esm/src/extend.d.ts +23 -0
- package/esm/src/extend.d.ts.map +1 -0
- package/esm/src/extend.js +9 -0
- package/esm/src/guard.d.ts +288 -0
- package/esm/src/guard.d.ts.map +1 -0
- package/esm/src/guard.js +631 -0
- package/esm/src/helpers/http.helpers.d.ts +3 -0
- package/esm/src/helpers/http.helpers.d.ts.map +1 -0
- package/esm/src/helpers/http.helpers.js +2 -0
- package/esm/src/helpers/strings.helpers.d.ts +18 -0
- package/esm/src/helpers/strings.helpers.d.ts.map +1 -0
- package/esm/src/helpers/strings.helpers.js +47 -0
- package/esm/src/introspect.d.ts +36 -0
- package/esm/src/introspect.d.ts.map +1 -0
- package/esm/src/introspect.js +25 -0
- package/esm/src/modules/async.d.ts +27 -0
- package/esm/src/modules/async.d.ts.map +1 -0
- package/esm/src/modules/async.js +38 -0
- package/esm/src/modules/http.branded.d.ts +42 -0
- package/esm/src/modules/http.branded.d.ts.map +1 -0
- package/esm/src/modules/http.branded.js +24 -0
- package/esm/src/modules/http.d.ts +46 -0
- package/esm/src/modules/http.d.ts.map +1 -0
- package/esm/src/modules/http.js +59 -0
- package/esm/src/modules/strings.branded.d.ts +185 -0
- package/esm/src/modules/strings.branded.d.ts.map +1 -0
- package/esm/src/modules/strings.branded.js +123 -0
- package/esm/src/modules/strings.d.ts +109 -0
- package/esm/src/modules/strings.d.ts.map +1 -0
- package/esm/src/modules/strings.js +147 -0
- package/esm/src/types.d.ts +318 -0
- package/esm/src/types.d.ts.map +1 -0
- package/esm/src/types.js +1 -0
- package/esm/src/utilities.d.ts +95 -0
- package/esm/src/utilities.d.ts.map +1 -0
- package/esm/src/utilities.js +196 -0
- package/package.json +40 -0
- package/script/mod.d.ts +55 -0
- package/script/mod.d.ts.map +1 -0
- package/script/mod.js +83 -0
- package/script/package.json +3 -0
- package/script/specs/standard-schema-spec.v1.d.ts +56 -0
- package/script/specs/standard-schema-spec.v1.d.ts.map +1 -0
- package/script/specs/standard-schema-spec.v1.js +2 -0
- package/script/src/batch.d.ts +23 -0
- package/script/src/batch.d.ts.map +1 -0
- package/script/src/batch.js +26 -0
- package/script/src/brand.d.ts +62 -0
- package/script/src/brand.d.ts.map +1 -0
- package/script/src/brand.js +12 -0
- package/script/src/context.d.ts +19 -0
- package/script/src/context.d.ts.map +1 -0
- package/script/src/context.js +45 -0
- package/script/src/extend.d.ts +23 -0
- package/script/src/extend.d.ts.map +1 -0
- package/script/src/extend.js +12 -0
- package/script/src/guard.d.ts +288 -0
- package/script/src/guard.d.ts.map +1 -0
- package/script/src/guard.js +640 -0
- package/script/src/helpers/http.helpers.d.ts +3 -0
- package/script/src/helpers/http.helpers.d.ts.map +1 -0
- package/script/src/helpers/http.helpers.js +5 -0
- package/script/src/helpers/strings.helpers.d.ts +18 -0
- package/script/src/helpers/strings.helpers.d.ts.map +1 -0
- package/script/src/helpers/strings.helpers.js +52 -0
- package/script/src/introspect.d.ts +36 -0
- package/script/src/introspect.d.ts.map +1 -0
- package/script/src/introspect.js +31 -0
- package/script/src/modules/async.d.ts +27 -0
- package/script/src/modules/async.d.ts.map +1 -0
- package/script/src/modules/async.js +41 -0
- package/script/src/modules/http.branded.d.ts +42 -0
- package/script/src/modules/http.branded.d.ts.map +1 -0
- package/script/src/modules/http.branded.js +30 -0
- package/script/src/modules/http.d.ts +46 -0
- package/script/src/modules/http.d.ts.map +1 -0
- package/script/src/modules/http.js +62 -0
- package/script/src/modules/strings.branded.d.ts +185 -0
- package/script/src/modules/strings.branded.d.ts.map +1 -0
- package/script/src/modules/strings.branded.js +126 -0
- package/script/src/modules/strings.d.ts +109 -0
- package/script/src/modules/strings.d.ts.map +1 -0
- package/script/src/modules/strings.js +150 -0
- package/script/src/types.d.ts +318 -0
- package/script/src/types.d.ts.map +1 -0
- package/script/src/types.js +2 -0
- package/script/src/utilities.d.ts +95 -0
- package/script/src/utilities.d.ts.map +1 -0
- package/script/src/utilities.js +207 -0
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* guard.ts
|
|
3
|
+
* @module
|
|
4
|
+
*/
|
|
5
|
+
import type { InferShape, JsonObject, JsonPrimitive, JsonValue, Parser, ParserEntry, TupleOfLength, TypeGuard, TypeGuardShape } from "./types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Creates a type guard from a parser function.
|
|
8
|
+
*
|
|
9
|
+
* The parser should perform whatever checks are necessary to safely establish
|
|
10
|
+
* that the input is of the specified type.
|
|
11
|
+
*
|
|
12
|
+
* Injects the `has` utility method as the second argument of any parser, as
|
|
13
|
+
* a convenience to check if a property exists in an object.
|
|
14
|
+
*
|
|
15
|
+
* @param parser A function that returns the value if valid, or null if invalid.
|
|
16
|
+
* @returns A type guard function with utility methods.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* const parseString = (val: unknown): string | null => typeof val === 'string' ? val : null;
|
|
21
|
+
* const isString = createTypeGuard(parseString);
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function createTypeGuard<T1>(parser: Parser<T1>): TypeGuard<T1>;
|
|
25
|
+
/**
|
|
26
|
+
* Creates a type guard from a parser function with a custom type name.
|
|
27
|
+
*
|
|
28
|
+
* The name is used for error messages when the type guard fails.
|
|
29
|
+
*
|
|
30
|
+
* @param name The type name to use for error messages.
|
|
31
|
+
* @param parser A function that returns the value if valid, or null if invalid.
|
|
32
|
+
* @returns A type guard function with utility methods.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* const isPositive = createTypeGuard("positive number", (val: unknown): number | null =>
|
|
37
|
+
* typeof val === 'number' && val > 0 ? val : null
|
|
38
|
+
* );
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare function createTypeGuard<T1>(name: string, parser: Parser<T1>): TypeGuard<T1>;
|
|
42
|
+
/**
|
|
43
|
+
* Creates a type guard from a shape object.
|
|
44
|
+
*
|
|
45
|
+
* The shape maps property names to guard predicates or nested shapes.
|
|
46
|
+
* The resulting type guard validates that an object matches the shape.
|
|
47
|
+
*
|
|
48
|
+
* @param shape A shape object mapping keys to guards or nested shapes.
|
|
49
|
+
* @returns A type guard function with utility methods.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* const isUser = createTypeGuard({ name: isString, age: isNumber });
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare function createTypeGuard<S extends TypeGuardShape>(shape: S): TypeGuard<InferShape<S>>;
|
|
57
|
+
/**
|
|
58
|
+
* Creates a type guard from a shape object with a custom type name.
|
|
59
|
+
*
|
|
60
|
+
* @param name The type name to use for error messages.
|
|
61
|
+
* @param shape A shape object mapping keys to guards or nested shapes.
|
|
62
|
+
* @returns A type guard function with utility methods.
|
|
63
|
+
*/
|
|
64
|
+
export declare function createTypeGuard<S extends TypeGuardShape>(name: string, shape: S): TypeGuard<InferShape<S>>;
|
|
65
|
+
/**
|
|
66
|
+
* Converts a ParserEntry (parser function, named parser object, or shape) into a TypeGuard.
|
|
67
|
+
* Shared by `batch` and `extend` to avoid duplicating entry detection logic.
|
|
68
|
+
*/
|
|
69
|
+
export declare function entryToGuard(entry: ParserEntry): TypeGuard<unknown>;
|
|
70
|
+
/**
|
|
71
|
+
* Returns true if input satisfies type boolean.
|
|
72
|
+
* @param {unknown} t
|
|
73
|
+
* @return {boolean}
|
|
74
|
+
*/
|
|
75
|
+
export declare const isBoolean: TypeGuard<boolean>;
|
|
76
|
+
/**
|
|
77
|
+
* Returns true if input satisfies type string.
|
|
78
|
+
* @param {unknown} t
|
|
79
|
+
* @return {boolean}
|
|
80
|
+
*/
|
|
81
|
+
export declare const isString: TypeGuard<string>;
|
|
82
|
+
/**
|
|
83
|
+
* Returns true if input satisfies type number. Returns false if `NaN` is passed.
|
|
84
|
+
*
|
|
85
|
+
* While `NaN` is technically a number in JavaScript, it is not a valid value for many applications
|
|
86
|
+
* and will fail if used with common numeric operations.
|
|
87
|
+
*
|
|
88
|
+
* @param {unknown} t
|
|
89
|
+
* @return {boolean}
|
|
90
|
+
*/
|
|
91
|
+
export declare const isNumber: TypeGuard<number>;
|
|
92
|
+
/**
|
|
93
|
+
* Returns true if input satisfies type symbol.
|
|
94
|
+
* @param {unknown} t
|
|
95
|
+
* @return {boolean}
|
|
96
|
+
*/
|
|
97
|
+
export declare const isSymbol: TypeGuard<symbol>;
|
|
98
|
+
/**
|
|
99
|
+
* Returns true if input satisfies type binary.
|
|
100
|
+
* @param {unknown} t
|
|
101
|
+
* @return {boolean}
|
|
102
|
+
*/
|
|
103
|
+
export declare const isBinary: TypeGuard<0 | 1>;
|
|
104
|
+
/**
|
|
105
|
+
* Returns true if input satisfies type numeric.
|
|
106
|
+
* @param {unknown} t
|
|
107
|
+
* @return {boolean}
|
|
108
|
+
*/
|
|
109
|
+
export declare const isNumeric: TypeGuard<number>;
|
|
110
|
+
/**
|
|
111
|
+
* Returns true if input satisfies type Function.
|
|
112
|
+
* @param {unknown} t
|
|
113
|
+
* @return {boolean}
|
|
114
|
+
*/
|
|
115
|
+
export declare const isFunction: TypeGuard<(...args: unknown[]) => unknown>;
|
|
116
|
+
/**
|
|
117
|
+
* Returns true if input satisfies type undefined.
|
|
118
|
+
* @param {unknown} t
|
|
119
|
+
* @return {boolean}
|
|
120
|
+
*/
|
|
121
|
+
export declare const isUndefined: TypeGuard<undefined>;
|
|
122
|
+
/**
|
|
123
|
+
* Returns true if input satisfies type null.
|
|
124
|
+
* @param {unknown} t
|
|
125
|
+
* @return {boolean}
|
|
126
|
+
*/
|
|
127
|
+
declare const isNull: TypeGuard<null>;
|
|
128
|
+
/**
|
|
129
|
+
* Returns true if input is a JSON-able primitive date type
|
|
130
|
+
* @param {unknown} t
|
|
131
|
+
* @return {boolean}
|
|
132
|
+
*/
|
|
133
|
+
export declare const isJsonPrimitive: TypeGuard<JsonPrimitive>;
|
|
134
|
+
/**
|
|
135
|
+
* Returns true if input satisfies type object. _BEWARE_ object
|
|
136
|
+
* can apply to many different types, including arrays. This
|
|
137
|
+
* is not as type safe as you might think.
|
|
138
|
+
* @param {unknown} t
|
|
139
|
+
* @return {boolean}
|
|
140
|
+
*/
|
|
141
|
+
export declare const isObject: TypeGuard<object>;
|
|
142
|
+
/** Returns true if input satisfies type PropertyKey.
|
|
143
|
+
* @param {unknown} t
|
|
144
|
+
* @return {boolean}
|
|
145
|
+
*/
|
|
146
|
+
export declare const isPropertyKey: TypeGuard<PropertyKey>;
|
|
147
|
+
/**
|
|
148
|
+
* Returns true if input satisfies type object. _BEWARE_ object
|
|
149
|
+
* can apply to many different types, including arrays. This
|
|
150
|
+
* is not as type safe as you might think.
|
|
151
|
+
* @param {unknown} t
|
|
152
|
+
* @return {boolean}
|
|
153
|
+
*/
|
|
154
|
+
export declare const isJsonObject: TypeGuard<JsonObject>;
|
|
155
|
+
/**
|
|
156
|
+
* Returns true if input satisfies type array.
|
|
157
|
+
* @param {unknown} t
|
|
158
|
+
* @return {boolean}
|
|
159
|
+
*/
|
|
160
|
+
export declare const isArray: TypeGuard<unknown[]> & {
|
|
161
|
+
/**
|
|
162
|
+
* Returns true if input satisfies type array of T.
|
|
163
|
+
* @param guard The type guard for the array elements
|
|
164
|
+
* @returns {boolean}
|
|
165
|
+
*/
|
|
166
|
+
of: <T>(guard: TypeGuard<T>) => TypeGuard<T[]>;
|
|
167
|
+
};
|
|
168
|
+
/**
|
|
169
|
+
* Returns true if input satisfies type array.
|
|
170
|
+
* @param {unknown} t
|
|
171
|
+
* @return {boolean}
|
|
172
|
+
*/
|
|
173
|
+
export declare const isJsonArray: TypeGuard<JsonValue[] | readonly JsonValue[]>;
|
|
174
|
+
/**
|
|
175
|
+
* Checks if a given value is a valid JSON value.
|
|
176
|
+
*
|
|
177
|
+
* This type guard leverages helper functions to determine if the provided value is a valid JSON
|
|
178
|
+
* primitive, JSON array, or JSON object. If the value satisfies any of these conditions, it is
|
|
179
|
+
* considered a valid JSON value.
|
|
180
|
+
*
|
|
181
|
+
* @param t - The value to be checked.
|
|
182
|
+
* @returns The value itself if it is a valid JSON value; otherwise, returns null.
|
|
183
|
+
*
|
|
184
|
+
* @remarks
|
|
185
|
+
* - For primitive types, arrays, and objects, the guard confirms conformance with the JSON value standards.
|
|
186
|
+
*
|
|
187
|
+
* @example
|
|
188
|
+
* const value: unknown = getValue();
|
|
189
|
+
* const jsonValue = isJsonValue(value);
|
|
190
|
+
* if (jsonValue !== null) {
|
|
191
|
+
* // Work with the confirmed JSON value.
|
|
192
|
+
* }
|
|
193
|
+
*/
|
|
194
|
+
export declare const isJsonValue: TypeGuard<JsonValue>;
|
|
195
|
+
/**
|
|
196
|
+
* A type guard function that checks if a value is a Date object.
|
|
197
|
+
*
|
|
198
|
+
* @param t - The value to check
|
|
199
|
+
* @returns The original Date object if the value is a Date, otherwise null
|
|
200
|
+
*
|
|
201
|
+
* @example
|
|
202
|
+
* ```typescript
|
|
203
|
+
* const maybeDate: unknown = new Date();
|
|
204
|
+
*
|
|
205
|
+
* if (isDate(maybeDate)) {
|
|
206
|
+
* // maybeDate is now typed as Date
|
|
207
|
+
* console.log(maybeDate.toISOString());
|
|
208
|
+
* }
|
|
209
|
+
* ```
|
|
210
|
+
*/
|
|
211
|
+
export declare const isDate: TypeGuard<Date>;
|
|
212
|
+
/**
|
|
213
|
+
* Returns true if input satisfies type null or undefined.
|
|
214
|
+
* @param {unknown} t
|
|
215
|
+
* @return {boolean}
|
|
216
|
+
*/
|
|
217
|
+
declare const isNil: TypeGuard<null | undefined>;
|
|
218
|
+
/**
|
|
219
|
+
* Returns true if input is undefined, null, empty string, object with length
|
|
220
|
+
* of 0 or object without enumerable keys.
|
|
221
|
+
*
|
|
222
|
+
* Strings are trimmed when evaluated.
|
|
223
|
+
* @param {unknown} t
|
|
224
|
+
* @return {boolean}
|
|
225
|
+
*/
|
|
226
|
+
declare const isEmpty: TypeGuard<null | undefined | "" | [] | Record<string, never>>;
|
|
227
|
+
/**
|
|
228
|
+
* Returns true if the value is iterable (has Symbol.iterator). Does not
|
|
229
|
+
* check the type contained within the iterable.
|
|
230
|
+
* @param t
|
|
231
|
+
* @returns
|
|
232
|
+
*/
|
|
233
|
+
declare const isIterable: TypeGuard<Iterable<unknown>>;
|
|
234
|
+
/**
|
|
235
|
+
* Type guard that checks if a value is a tuple (array) of a specific length.
|
|
236
|
+
*
|
|
237
|
+
* A tuple is an array with a fixed number of elements. This function validates
|
|
238
|
+
* that the input is an array and has exactly the specified length.
|
|
239
|
+
*
|
|
240
|
+
* @typeParam N - The expected length of the tuple
|
|
241
|
+
* @param t - The value to check
|
|
242
|
+
* @param length - The expected length of the tuple
|
|
243
|
+
* @returns Type predicate indicating if the value is a tuple of length N
|
|
244
|
+
*
|
|
245
|
+
* @example
|
|
246
|
+
* ```typescript
|
|
247
|
+
* const value: unknown = [1, 2, 3];
|
|
248
|
+
*
|
|
249
|
+
* if (isTuple(value, 3)) {
|
|
250
|
+
* // value is now typed as [unknown, unknown, unknown]
|
|
251
|
+
* console.log(value.length); // 3
|
|
252
|
+
* }
|
|
253
|
+
*
|
|
254
|
+
* // Check for empty tuple
|
|
255
|
+
* if (isTuple([], 0)) {
|
|
256
|
+
* console.log("Empty tuple");
|
|
257
|
+
* }
|
|
258
|
+
* ```
|
|
259
|
+
*/
|
|
260
|
+
declare const isTuple: {
|
|
261
|
+
<N extends number>(t: unknown, length: N): t is TupleOfLength<N>;
|
|
262
|
+
strict<N extends number>(t: unknown, length: N, errorMsg?: string): t is TupleOfLength<N>;
|
|
263
|
+
/**
|
|
264
|
+
* Assertion function that throws an error if the value is not a tuple of the specified length.
|
|
265
|
+
* TypeScript will narrow the type to TupleOfLength<N> after this assertion.
|
|
266
|
+
* @typeParam N - The expected length of the tuple
|
|
267
|
+
* @param t - The value to check
|
|
268
|
+
* @param length - The expected length of the tuple
|
|
269
|
+
* @param errorMsg - Optional custom error message
|
|
270
|
+
* @throws {TypeError} If the value is not a tuple of the specified length
|
|
271
|
+
*/
|
|
272
|
+
assert: <N extends number>(t: unknown, length: N, errorMsg?: string) => asserts t is TupleOfLength<N>;
|
|
273
|
+
or<N extends number, T2>(length: N, guard: TypeGuard<T2>): TypeGuard<TupleOfLength<N> | T2>;
|
|
274
|
+
/**
|
|
275
|
+
* Optional variant of isTuple that accepts undefined or a tuple of the specified length.
|
|
276
|
+
* @typeParam N - The expected length of the tuple
|
|
277
|
+
* @param t - The value to check
|
|
278
|
+
* @param length - The expected length of the tuple
|
|
279
|
+
* @returns true if the value is undefined or a tuple of the specified length, otherwise false
|
|
280
|
+
*/
|
|
281
|
+
optional: {
|
|
282
|
+
<N extends number>(t: unknown, length: N): t is TupleOfLength<N> | undefined;
|
|
283
|
+
strict<N extends number>(t: unknown, length: N, errorMsg?: string): t is TupleOfLength<N> | undefined;
|
|
284
|
+
assert: <N extends number>(t: unknown, length: N, errorMsg?: string) => t is TupleOfLength<N> | undefined;
|
|
285
|
+
};
|
|
286
|
+
};
|
|
287
|
+
export { isEmpty, isIterable, isNil, isNull, isTuple };
|
|
288
|
+
//# sourceMappingURL=guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/src/guard.ts"],"names":[],"mappings":"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"}
|