guarden 1.0.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/LICENSE +21 -0
- package/README.md +370 -0
- package/dist/cjs/assert/assertions.js +82 -0
- package/dist/cjs/assert/assertions.js.map +1 -0
- package/dist/cjs/assert/index.js +13 -0
- package/dist/cjs/assert/index.js.map +1 -0
- package/dist/cjs/assert/invariant.js +43 -0
- package/dist/cjs/assert/invariant.js.map +1 -0
- package/dist/cjs/env/index.js +11 -0
- package/dist/cjs/env/index.js.map +1 -0
- package/dist/cjs/env/schema.js +313 -0
- package/dist/cjs/env/schema.js.map +1 -0
- package/dist/cjs/guards/advanced.js +190 -0
- package/dist/cjs/guards/advanced.js.map +1 -0
- package/dist/cjs/guards/combinators.js +195 -0
- package/dist/cjs/guards/combinators.js.map +1 -0
- package/dist/cjs/guards/index.js +68 -0
- package/dist/cjs/guards/index.js.map +1 -0
- package/dist/cjs/guards/primitives.js +123 -0
- package/dist/cjs/guards/primitives.js.map +1 -0
- package/dist/cjs/guards/structures.js +113 -0
- package/dist/cjs/guards/structures.js.map +1 -0
- package/dist/cjs/index.js +135 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/result/async.js +132 -0
- package/dist/cjs/result/async.js.map +1 -0
- package/dist/cjs/result/index.js +15 -0
- package/dist/cjs/result/index.js.map +1 -0
- package/dist/cjs/result/option.js +175 -0
- package/dist/cjs/result/option.js.map +1 -0
- package/dist/cjs/result/result.js +208 -0
- package/dist/cjs/result/result.js.map +1 -0
- package/dist/cjs/transform/coerce.js +151 -0
- package/dist/cjs/transform/coerce.js.map +1 -0
- package/dist/cjs/transform/index.js +36 -0
- package/dist/cjs/transform/index.js.map +1 -0
- package/dist/cjs/transform/pipe.js +18 -0
- package/dist/cjs/transform/pipe.js.map +1 -0
- package/dist/cjs/transform/sanitize.js +218 -0
- package/dist/cjs/transform/sanitize.js.map +1 -0
- package/dist/cjs/utils/errors.js +94 -0
- package/dist/cjs/utils/errors.js.map +1 -0
- package/dist/cjs/utils/types.js +6 -0
- package/dist/cjs/utils/types.js.map +1 -0
- package/dist/esm/assert/assertions.js +75 -0
- package/dist/esm/assert/assertions.js.map +1 -0
- package/dist/esm/assert/index.js +3 -0
- package/dist/esm/assert/index.js.map +1 -0
- package/dist/esm/assert/invariant.js +39 -0
- package/dist/esm/assert/invariant.js.map +1 -0
- package/dist/esm/env/index.js +2 -0
- package/dist/esm/env/index.js.map +1 -0
- package/dist/esm/env/schema.js +304 -0
- package/dist/esm/env/schema.js.map +1 -0
- package/dist/esm/guards/advanced.js +170 -0
- package/dist/esm/guards/advanced.js.map +1 -0
- package/dist/esm/guards/combinators.js +182 -0
- package/dist/esm/guards/combinators.js.map +1 -0
- package/dist/esm/guards/index.js +8 -0
- package/dist/esm/guards/index.js.map +1 -0
- package/dist/esm/guards/primitives.js +108 -0
- package/dist/esm/guards/primitives.js.map +1 -0
- package/dist/esm/guards/structures.js +97 -0
- package/dist/esm/guards/structures.js.map +1 -0
- package/dist/esm/index.js +17 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/result/async.js +127 -0
- package/dist/esm/result/async.js.map +1 -0
- package/dist/esm/result/index.js +4 -0
- package/dist/esm/result/index.js.map +1 -0
- package/dist/esm/result/option.js +170 -0
- package/dist/esm/result/option.js.map +1 -0
- package/dist/esm/result/result.js +203 -0
- package/dist/esm/result/result.js.map +1 -0
- package/dist/esm/transform/coerce.js +143 -0
- package/dist/esm/transform/coerce.js.map +1 -0
- package/dist/esm/transform/index.js +4 -0
- package/dist/esm/transform/index.js.map +1 -0
- package/dist/esm/transform/pipe.js +14 -0
- package/dist/esm/transform/pipe.js.map +1 -0
- package/dist/esm/transform/sanitize.js +195 -0
- package/dist/esm/transform/sanitize.js.map +1 -0
- package/dist/esm/utils/errors.js +84 -0
- package/dist/esm/utils/errors.js.map +1 -0
- package/dist/esm/utils/types.js +5 -0
- package/dist/esm/utils/types.js.map +1 -0
- package/dist/types/assert/assertions.d.ts +52 -0
- package/dist/types/assert/assertions.d.ts.map +1 -0
- package/dist/types/assert/index.d.ts +3 -0
- package/dist/types/assert/index.d.ts.map +1 -0
- package/dist/types/assert/invariant.d.ts +29 -0
- package/dist/types/assert/invariant.d.ts.map +1 -0
- package/dist/types/env/index.d.ts +2 -0
- package/dist/types/env/index.d.ts.map +1 -0
- package/dist/types/env/schema.d.ts +131 -0
- package/dist/types/env/schema.d.ts.map +1 -0
- package/dist/types/guards/advanced.d.ts +101 -0
- package/dist/types/guards/advanced.d.ts.map +1 -0
- package/dist/types/guards/combinators.d.ts +120 -0
- package/dist/types/guards/combinators.d.ts.map +1 -0
- package/dist/types/guards/index.d.ts +5 -0
- package/dist/types/guards/index.d.ts.map +1 -0
- package/dist/types/guards/primitives.d.ts +75 -0
- package/dist/types/guards/primitives.d.ts.map +1 -0
- package/dist/types/guards/structures.d.ts +58 -0
- package/dist/types/guards/structures.d.ts.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/result/async.d.ts +72 -0
- package/dist/types/result/async.d.ts.map +1 -0
- package/dist/types/result/index.d.ts +4 -0
- package/dist/types/result/index.d.ts.map +1 -0
- package/dist/types/result/option.d.ts +106 -0
- package/dist/types/result/option.d.ts.map +1 -0
- package/dist/types/result/result.d.ts +126 -0
- package/dist/types/result/result.d.ts.map +1 -0
- package/dist/types/transform/coerce.d.ts +73 -0
- package/dist/types/transform/coerce.d.ts.map +1 -0
- package/dist/types/transform/index.d.ts +4 -0
- package/dist/types/transform/index.d.ts.map +1 -0
- package/dist/types/transform/pipe.d.ts +44 -0
- package/dist/types/transform/pipe.d.ts.map +1 -0
- package/dist/types/transform/sanitize.d.ts +108 -0
- package/dist/types/transform/sanitize.d.ts.map +1 -0
- package/dist/types/utils/errors.d.ts +51 -0
- package/dist/types/utils/errors.d.ts.map +1 -0
- package/dist/types/utils/types.d.ts +29 -0
- package/dist/types/utils/types.d.ts.map +1 -0
- package/package.json +144 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { type Result } from '../result/result.js';
|
|
2
|
+
import { CoercionError } from '../utils/errors.js';
|
|
3
|
+
/**
|
|
4
|
+
* Coerce a value to a number.
|
|
5
|
+
* Handles strings, booleans, and Date objects.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* toNumber("42") // Ok(42)
|
|
10
|
+
* toNumber("abc") // Err(CoercionError)
|
|
11
|
+
* toNumber(true) // Ok(1)
|
|
12
|
+
* toNumber(null) // Err(CoercionError)
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export declare function toNumber(value: unknown): Result<number, CoercionError>;
|
|
16
|
+
/**
|
|
17
|
+
* Coerce a value to a string.
|
|
18
|
+
* Handles numbers, booleans, null, undefined, and objects.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* toString(42) // "42"
|
|
23
|
+
* toString(null) // ""
|
|
24
|
+
* toString(undefined) // ""
|
|
25
|
+
* toString(true) // "true"
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare function toString(value: unknown): string;
|
|
29
|
+
/**
|
|
30
|
+
* Coerce a value to a boolean.
|
|
31
|
+
* Handles common truthy/falsy string representations.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* toBoolean("true") // true
|
|
36
|
+
* toBoolean("yes") // true
|
|
37
|
+
* toBoolean("1") // true
|
|
38
|
+
* toBoolean("false") // false
|
|
39
|
+
* toBoolean("no") // false
|
|
40
|
+
* toBoolean("0") // false
|
|
41
|
+
* toBoolean(1) // true
|
|
42
|
+
* toBoolean(0) // false
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare function toBoolean(value: unknown): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Coerce a value to a Date.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* toDate("2024-01-15") // Ok(Date)
|
|
52
|
+
* toDate(1705276800000) // Ok(Date)
|
|
53
|
+
* toDate("not-a-date") // Err(CoercionError)
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare function toDate(value: unknown): Result<Date, CoercionError>;
|
|
57
|
+
/**
|
|
58
|
+
* Wrap a non-array value in an array. Arrays are returned as-is.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* toArray(42) // [42]
|
|
63
|
+
* toArray([1, 2]) // [1, 2]
|
|
64
|
+
* toArray(null) // []
|
|
65
|
+
* toArray(undefined)// []
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export declare function toArray<T>(value: T | T[] | null | undefined): T[];
|
|
69
|
+
/**
|
|
70
|
+
* Coerce a value to an integer.
|
|
71
|
+
*/
|
|
72
|
+
export declare function toInteger(value: unknown): Result<number, CoercionError>;
|
|
73
|
+
//# sourceMappingURL=coerce.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coerce.d.ts","sourceRoot":"","sources":["../../../src/transform/coerce.ts"],"names":[],"mappings":"AAIA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAgBtE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAW/C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQjD;AAED;;;;;;;;;GASG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,CAalE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,CAAC,EAAE,CAIjE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAKvE"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { pipe, flow } from './pipe.js';
|
|
2
|
+
export { toNumber, toString, toBoolean, toDate, toArray, toInteger } from './coerce.js';
|
|
3
|
+
export { trim, trimStart, trimEnd, lowercase, uppercase, capitalize, titleCase, camelCase, kebabCase, snakeCase, stripHtml, escapeHtml, unescapeHtml, truncate, slugify, removeWhitespace, collapseWhitespace, padStart, padEnd, reverse, countOccurrences, } from './sanitize.js';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transform/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxF,OAAO,EACL,IAAI,EACJ,SAAS,EACT,OAAO,EACP,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,gBAAgB,EAChB,kBAAkB,EAClB,QAAQ,EACR,MAAM,EACN,OAAO,EACP,gBAAgB,GACjB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compose functions left-to-right with full type inference.
|
|
3
|
+
* Each function receives the output of the previous one.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* const result = pipe(
|
|
8
|
+
* " Hello World ",
|
|
9
|
+
* (s) => s.trim(),
|
|
10
|
+
* (s) => s.toLowerCase(),
|
|
11
|
+
* (s) => s.replace(/\s+/g, '-'),
|
|
12
|
+
* );
|
|
13
|
+
* // result === "hello-world"
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare function pipe<A>(value: A): A;
|
|
17
|
+
export declare function pipe<A, B>(value: A, fn1: (a: A) => B): B;
|
|
18
|
+
export declare function pipe<A, B, C>(value: A, fn1: (a: A) => B, fn2: (b: B) => C): C;
|
|
19
|
+
export declare function pipe<A, B, C, D>(value: A, fn1: (a: A) => B, fn2: (b: B) => C, fn3: (c: C) => D): D;
|
|
20
|
+
export declare function pipe<A, B, C, D, E>(value: A, fn1: (a: A) => B, fn2: (b: B) => C, fn3: (c: C) => D, fn4: (d: D) => E): E;
|
|
21
|
+
export declare function pipe<A, B, C, D, E, F>(value: A, fn1: (a: A) => B, fn2: (b: B) => C, fn3: (c: C) => D, fn4: (d: D) => E, fn5: (e: E) => F): F;
|
|
22
|
+
export declare function pipe<A, B, C, D, E, F, G>(value: A, fn1: (a: A) => B, fn2: (b: B) => C, fn3: (c: C) => D, fn4: (d: D) => E, fn5: (e: E) => F, fn6: (f: F) => G): G;
|
|
23
|
+
export declare function pipe<A, B, C, D, E, F, G, H>(value: A, fn1: (a: A) => B, fn2: (b: B) => C, fn3: (c: C) => D, fn4: (d: D) => E, fn5: (e: E) => F, fn6: (f: F) => G, fn7: (g: G) => H): H;
|
|
24
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I>(value: A, fn1: (a: A) => B, fn2: (b: B) => C, fn3: (c: C) => D, fn4: (d: D) => E, fn5: (e: E) => F, fn6: (f: F) => G, fn7: (g: G) => H, fn8: (h: H) => I): I;
|
|
25
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J>(value: A, fn1: (a: A) => B, fn2: (b: B) => C, fn3: (c: C) => D, fn4: (d: D) => E, fn5: (e: E) => F, fn6: (f: F) => G, fn7: (g: G) => H, fn8: (h: H) => I, fn9: (i: I) => J): J;
|
|
26
|
+
/**
|
|
27
|
+
* Create a composed function from multiple functions (left-to-right).
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* const processName = flow(
|
|
32
|
+
* (s: string) => s.trim(),
|
|
33
|
+
* (s) => s.toLowerCase(),
|
|
34
|
+
* (s) => s.replace(/\s+/g, '-'),
|
|
35
|
+
* );
|
|
36
|
+
* processName(" Hello World "); // "hello-world"
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export declare function flow<A, B>(fn1: (a: A) => B): (a: A) => B;
|
|
40
|
+
export declare function flow<A, B, C>(fn1: (a: A) => B, fn2: (b: B) => C): (a: A) => C;
|
|
41
|
+
export declare function flow<A, B, C, D>(fn1: (a: A) => B, fn2: (b: B) => C, fn3: (c: C) => D): (a: A) => D;
|
|
42
|
+
export declare function flow<A, B, C, D, E>(fn1: (a: A) => B, fn2: (b: B) => C, fn3: (c: C) => D, fn4: (d: D) => E): (a: A) => E;
|
|
43
|
+
export declare function flow<A, B, C, D, E, F>(fn1: (a: A) => B, fn2: (b: B) => C, fn3: (c: C) => D, fn4: (d: D) => E, fn5: (e: E) => F): (a: A) => F;
|
|
44
|
+
//# sourceMappingURL=pipe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe.d.ts","sourceRoot":"","sources":["../../../src/transform/pipe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trim whitespace from both ends.
|
|
3
|
+
*/
|
|
4
|
+
export declare function trim(value: string): string;
|
|
5
|
+
/**
|
|
6
|
+
* Trim whitespace from the start.
|
|
7
|
+
*/
|
|
8
|
+
export declare function trimStart(value: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Trim whitespace from the end.
|
|
11
|
+
*/
|
|
12
|
+
export declare function trimEnd(value: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Convert to lowercase.
|
|
15
|
+
*/
|
|
16
|
+
export declare function lowercase(value: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Convert to uppercase.
|
|
19
|
+
*/
|
|
20
|
+
export declare function uppercase(value: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Capitalize the first letter.
|
|
23
|
+
*/
|
|
24
|
+
export declare function capitalize(value: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Capitalize the first letter of each word.
|
|
27
|
+
*/
|
|
28
|
+
export declare function titleCase(value: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* Convert to camelCase.
|
|
31
|
+
*/
|
|
32
|
+
export declare function camelCase(value: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Convert to kebab-case.
|
|
35
|
+
*/
|
|
36
|
+
export declare function kebabCase(value: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* Convert to snake_case.
|
|
39
|
+
*/
|
|
40
|
+
export declare function snakeCase(value: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* Strip HTML tags from a string.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* stripHtml("<p>Hello <b>world</b></p>") // "Hello world"
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare function stripHtml(value: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* Escape HTML special characters to prevent XSS.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```ts
|
|
55
|
+
* escapeHtml('<script>alert("xss")</script>')
|
|
56
|
+
* // '<script>alert("xss")</script>'
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export declare function escapeHtml(value: string): string;
|
|
60
|
+
/**
|
|
61
|
+
* Unescape HTML entities.
|
|
62
|
+
*/
|
|
63
|
+
export declare function unescapeHtml(value: string): string;
|
|
64
|
+
/**
|
|
65
|
+
* Truncate a string to a maximum length.
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```ts
|
|
69
|
+
* truncate("Hello, World!", 8) // "Hello..."
|
|
70
|
+
* truncate("Hello, World!", 8, "…") // "Hello, …"
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export declare function truncate(value: string, maxLength: number, suffix?: string): string;
|
|
74
|
+
/**
|
|
75
|
+
* Convert a string to a URL-friendly slug.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```ts
|
|
79
|
+
* slugify("Hello, World! 🌍") // "hello-world"
|
|
80
|
+
* slugify(" Foo BAR baz ") // "foo-bar-baz"
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
export declare function slugify(value: string): string;
|
|
84
|
+
/**
|
|
85
|
+
* Remove all whitespace from a string.
|
|
86
|
+
*/
|
|
87
|
+
export declare function removeWhitespace(value: string): string;
|
|
88
|
+
/**
|
|
89
|
+
* Collapse multiple spaces into a single space.
|
|
90
|
+
*/
|
|
91
|
+
export declare function collapseWhitespace(value: string): string;
|
|
92
|
+
/**
|
|
93
|
+
* Pad a string to a minimum length (left-pads by default).
|
|
94
|
+
*/
|
|
95
|
+
export declare function padStart(value: string, length: number, fillChar?: string): string;
|
|
96
|
+
/**
|
|
97
|
+
* Pad a string to a minimum length (right-pads).
|
|
98
|
+
*/
|
|
99
|
+
export declare function padEnd(value: string, length: number, fillChar?: string): string;
|
|
100
|
+
/**
|
|
101
|
+
* Reverse a string (Unicode-aware).
|
|
102
|
+
*/
|
|
103
|
+
export declare function reverse(value: string): string;
|
|
104
|
+
/**
|
|
105
|
+
* Count occurrences of a substring.
|
|
106
|
+
*/
|
|
107
|
+
export declare function countOccurrences(value: string, search: string): number;
|
|
108
|
+
//# sourceMappingURL=sanitize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/transform/sanitize.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUhD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUlD;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,SAAQ,GAAG,MAAM,CAGjF;AAED;;;;;;;;GAQG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQ7C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,SAAM,GAAG,MAAM,CAE9E;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,SAAM,GAAG,MAAM,CAE5E;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAStE"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error class for all Guarden errors.
|
|
3
|
+
* Provides clean stack traces and error identification.
|
|
4
|
+
*/
|
|
5
|
+
export declare class GuardenError extends Error {
|
|
6
|
+
readonly code: string;
|
|
7
|
+
constructor(message: string, code: string);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Thrown when a runtime assertion fails.
|
|
11
|
+
*/
|
|
12
|
+
export declare class AssertionError extends GuardenError {
|
|
13
|
+
constructor(message: string);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Thrown when an invariant is violated.
|
|
17
|
+
* Indicates a bug in the program logic.
|
|
18
|
+
*/
|
|
19
|
+
export declare class InvariantError extends GuardenError {
|
|
20
|
+
constructor(message: string);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Thrown when type coercion fails.
|
|
24
|
+
*/
|
|
25
|
+
export declare class CoercionError extends GuardenError {
|
|
26
|
+
readonly originalValue: unknown;
|
|
27
|
+
readonly targetType: string;
|
|
28
|
+
constructor(value: unknown, targetType: string);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Thrown when environment variable validation fails.
|
|
32
|
+
*/
|
|
33
|
+
export declare class EnvValidationError extends GuardenError {
|
|
34
|
+
readonly variableName: string;
|
|
35
|
+
readonly errors: string[];
|
|
36
|
+
constructor(variableName: string, errors: string[]);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Thrown when multiple environment variables fail validation.
|
|
40
|
+
*/
|
|
41
|
+
export declare class EnvConfigError extends GuardenError {
|
|
42
|
+
readonly validationErrors: EnvValidationError[];
|
|
43
|
+
constructor(errors: EnvValidationError[]);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Thrown when code reaches a state that should be unreachable.
|
|
47
|
+
*/
|
|
48
|
+
export declare class UnreachableError extends GuardenError {
|
|
49
|
+
constructor(value: never);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/utils/errors.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAgB,IAAI,EAAE,MAAM,CAAC;gBAEjB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;CAO1C;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,YAAY;gBAClC,OAAO,EAAE,MAAM;CAI5B;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,YAAY;gBAClC,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAC7C,SAAgB,aAAa,EAAE,OAAO,CAAC;IACvC,SAAgB,UAAU,EAAE,MAAM,CAAC;gBAEvB,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM;CAS/C;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,SAAgB,YAAY,EAAE,MAAM,CAAC;IACrC,SAAgB,MAAM,EAAE,MAAM,EAAE,CAAC;gBAErB,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;CASnD;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,SAAgB,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;gBAE3C,MAAM,EAAE,kBAAkB,EAAE;CAMzC;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;gBACpC,KAAK,EAAE,KAAK;CAOzB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** A type guard function that narrows `unknown` to `T` */
|
|
2
|
+
export type Guard<T> = (value: unknown) => value is T;
|
|
3
|
+
/** Extract the guarded type from a Guard */
|
|
4
|
+
export type GuardType<G> = G extends Guard<infer T> ? T : never;
|
|
5
|
+
/** Make all properties required and non-nullable */
|
|
6
|
+
export type RequiredDeep<T> = {
|
|
7
|
+
[K in keyof T]-?: NonNullable<T[K]>;
|
|
8
|
+
};
|
|
9
|
+
/** A value that could be null or undefined */
|
|
10
|
+
export type Nullish = null | undefined;
|
|
11
|
+
/** A value that is neither null nor undefined */
|
|
12
|
+
export type NonNullish<T> = Exclude<T, Nullish>;
|
|
13
|
+
/** Primitive JavaScript types */
|
|
14
|
+
export type Primitive = string | number | boolean | bigint | symbol | null | undefined;
|
|
15
|
+
/** A plain object with string keys */
|
|
16
|
+
export type PlainObject = Record<string, unknown>;
|
|
17
|
+
/** Function type shorthand */
|
|
18
|
+
export type AnyFunction = (...args: unknown[]) => unknown;
|
|
19
|
+
/** A readonly tuple type */
|
|
20
|
+
export type ReadonlyTuple<T extends readonly unknown[]> = readonly [...T];
|
|
21
|
+
/** Branded type for nominal typing */
|
|
22
|
+
export type Brand<T, B extends string> = T & {
|
|
23
|
+
readonly __brand: B;
|
|
24
|
+
};
|
|
25
|
+
/** Infer the shape from a guard record */
|
|
26
|
+
export type ShapeGuardType<T extends Record<string, Guard<unknown>>> = {
|
|
27
|
+
[K in keyof T]: GuardType<T[K]>;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/types.ts"],"names":[],"mappings":"AAIA,0DAA0D;AAC1D,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC;AAEtD,4CAA4C;AAC5C,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAEhE,oDAAoD;AACpD,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;KAC3B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACpC,CAAC;AAEF,8CAA8C;AAC9C,MAAM,MAAM,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAEvC,iDAAiD;AACjD,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAEhD,iCAAiC;AACjC,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;AAEvF,sCAAsC;AACtC,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAElD,8BAA8B;AAC9B,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAE1D,4BAA4B;AAC5B,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1E,sCAAsC;AACtC,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;CAAE,CAAC;AAErE,0CAA0C;AAC1C,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI;KACpE,CAAC,IAAI,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAChC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "guarden",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Blazing-fast, tree-shakeable TypeScript-first runtime safety toolkit. Type guards, assertions, Result/Option monads, data pipelines, and env validation — zero dependencies.",
|
|
5
|
+
"author": "Avinashvelu03",
|
|
6
|
+
"sideEffects": false,
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/Avinashvelu03/guarden.git"
|
|
11
|
+
},
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/Avinashvelu03/guarden/issues"
|
|
14
|
+
},
|
|
15
|
+
"homepage": "https://github.com/Avinashvelu03/guarden#readme",
|
|
16
|
+
"keywords": [
|
|
17
|
+
"typescript",
|
|
18
|
+
"type-guard",
|
|
19
|
+
"runtime-validation",
|
|
20
|
+
"type-safety",
|
|
21
|
+
"assertions",
|
|
22
|
+
"invariant",
|
|
23
|
+
"result-type",
|
|
24
|
+
"option-type",
|
|
25
|
+
"monad",
|
|
26
|
+
"functional-programming",
|
|
27
|
+
"error-handling",
|
|
28
|
+
"data-pipeline",
|
|
29
|
+
"pipe",
|
|
30
|
+
"coerce",
|
|
31
|
+
"sanitize",
|
|
32
|
+
"env-validation",
|
|
33
|
+
"environment-variables",
|
|
34
|
+
"type-narrowing",
|
|
35
|
+
"runtime-checks",
|
|
36
|
+
"zero-dependencies",
|
|
37
|
+
"tree-shakeable",
|
|
38
|
+
"guards",
|
|
39
|
+
"validation",
|
|
40
|
+
"typescript-utility",
|
|
41
|
+
"developer-tools"
|
|
42
|
+
],
|
|
43
|
+
"type": "module",
|
|
44
|
+
"main": "./dist/cjs/index.js",
|
|
45
|
+
"module": "./dist/esm/index.js",
|
|
46
|
+
"types": "./dist/types/index.d.ts",
|
|
47
|
+
"exports": {
|
|
48
|
+
".": {
|
|
49
|
+
"import": {
|
|
50
|
+
"types": "./dist/types/index.d.ts",
|
|
51
|
+
"default": "./dist/esm/index.js"
|
|
52
|
+
},
|
|
53
|
+
"require": {
|
|
54
|
+
"types": "./dist/types/index.d.ts",
|
|
55
|
+
"default": "./dist/cjs/index.js"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"./guards": {
|
|
59
|
+
"import": {
|
|
60
|
+
"types": "./dist/types/guards/index.d.ts",
|
|
61
|
+
"default": "./dist/esm/guards/index.js"
|
|
62
|
+
},
|
|
63
|
+
"require": {
|
|
64
|
+
"types": "./dist/types/guards/index.d.ts",
|
|
65
|
+
"default": "./dist/cjs/guards/index.js"
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"./assert": {
|
|
69
|
+
"import": {
|
|
70
|
+
"types": "./dist/types/assert/index.d.ts",
|
|
71
|
+
"default": "./dist/esm/assert/index.js"
|
|
72
|
+
},
|
|
73
|
+
"require": {
|
|
74
|
+
"types": "./dist/types/assert/index.d.ts",
|
|
75
|
+
"default": "./dist/cjs/assert/index.js"
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"./result": {
|
|
79
|
+
"import": {
|
|
80
|
+
"types": "./dist/types/result/index.d.ts",
|
|
81
|
+
"default": "./dist/esm/result/index.js"
|
|
82
|
+
},
|
|
83
|
+
"require": {
|
|
84
|
+
"types": "./dist/types/result/index.d.ts",
|
|
85
|
+
"default": "./dist/cjs/result/index.js"
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
"./transform": {
|
|
89
|
+
"import": {
|
|
90
|
+
"types": "./dist/types/transform/index.d.ts",
|
|
91
|
+
"default": "./dist/esm/transform/index.js"
|
|
92
|
+
},
|
|
93
|
+
"require": {
|
|
94
|
+
"types": "./dist/types/transform/index.d.ts",
|
|
95
|
+
"default": "./dist/cjs/transform/index.js"
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"./env": {
|
|
99
|
+
"import": {
|
|
100
|
+
"types": "./dist/types/env/index.d.ts",
|
|
101
|
+
"default": "./dist/esm/env/index.js"
|
|
102
|
+
},
|
|
103
|
+
"require": {
|
|
104
|
+
"types": "./dist/types/env/index.d.ts",
|
|
105
|
+
"default": "./dist/cjs/env/index.js"
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
"files": [
|
|
110
|
+
"dist",
|
|
111
|
+
"LICENSE",
|
|
112
|
+
"README.md"
|
|
113
|
+
],
|
|
114
|
+
"engines": {
|
|
115
|
+
"node": ">=18.0.0"
|
|
116
|
+
},
|
|
117
|
+
"scripts": {
|
|
118
|
+
"build": "npm run build:esm && npm run build:cjs && npm run build:types",
|
|
119
|
+
"build:esm": "tsc -p tsconfig.esm.json",
|
|
120
|
+
"build:cjs": "tsc -p tsconfig.cjs.json",
|
|
121
|
+
"build:types": "tsc -p tsconfig.types.json",
|
|
122
|
+
"test": "vitest run",
|
|
123
|
+
"test:watch": "vitest",
|
|
124
|
+
"test:coverage": "vitest run --coverage",
|
|
125
|
+
"lint": "eslint src/ tests/ --ext .ts",
|
|
126
|
+
"lint:fix": "eslint src/ tests/ --ext .ts --fix",
|
|
127
|
+
"format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"",
|
|
128
|
+
"format:check": "prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"",
|
|
129
|
+
"typecheck": "tsc --noEmit",
|
|
130
|
+
"clean": "rimraf dist coverage",
|
|
131
|
+
"prepublishOnly": "npm run clean && npm run build && npm run test"
|
|
132
|
+
},
|
|
133
|
+
"devDependencies": {
|
|
134
|
+
"@types/node": "^20.19.37",
|
|
135
|
+
"@typescript-eslint/eslint-plugin": "^7.18.0",
|
|
136
|
+
"@typescript-eslint/parser": "^7.18.0",
|
|
137
|
+
"@vitest/coverage-v8": "^1.6.1",
|
|
138
|
+
"eslint": "^8.57.1",
|
|
139
|
+
"prettier": "^3.8.1",
|
|
140
|
+
"rimraf": "^5.0.10",
|
|
141
|
+
"typescript": "^5.9.3",
|
|
142
|
+
"vitest": "^1.6.1"
|
|
143
|
+
}
|
|
144
|
+
}
|