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.
Files changed (129) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +370 -0
  3. package/dist/cjs/assert/assertions.js +82 -0
  4. package/dist/cjs/assert/assertions.js.map +1 -0
  5. package/dist/cjs/assert/index.js +13 -0
  6. package/dist/cjs/assert/index.js.map +1 -0
  7. package/dist/cjs/assert/invariant.js +43 -0
  8. package/dist/cjs/assert/invariant.js.map +1 -0
  9. package/dist/cjs/env/index.js +11 -0
  10. package/dist/cjs/env/index.js.map +1 -0
  11. package/dist/cjs/env/schema.js +313 -0
  12. package/dist/cjs/env/schema.js.map +1 -0
  13. package/dist/cjs/guards/advanced.js +190 -0
  14. package/dist/cjs/guards/advanced.js.map +1 -0
  15. package/dist/cjs/guards/combinators.js +195 -0
  16. package/dist/cjs/guards/combinators.js.map +1 -0
  17. package/dist/cjs/guards/index.js +68 -0
  18. package/dist/cjs/guards/index.js.map +1 -0
  19. package/dist/cjs/guards/primitives.js +123 -0
  20. package/dist/cjs/guards/primitives.js.map +1 -0
  21. package/dist/cjs/guards/structures.js +113 -0
  22. package/dist/cjs/guards/structures.js.map +1 -0
  23. package/dist/cjs/index.js +135 -0
  24. package/dist/cjs/index.js.map +1 -0
  25. package/dist/cjs/result/async.js +132 -0
  26. package/dist/cjs/result/async.js.map +1 -0
  27. package/dist/cjs/result/index.js +15 -0
  28. package/dist/cjs/result/index.js.map +1 -0
  29. package/dist/cjs/result/option.js +175 -0
  30. package/dist/cjs/result/option.js.map +1 -0
  31. package/dist/cjs/result/result.js +208 -0
  32. package/dist/cjs/result/result.js.map +1 -0
  33. package/dist/cjs/transform/coerce.js +151 -0
  34. package/dist/cjs/transform/coerce.js.map +1 -0
  35. package/dist/cjs/transform/index.js +36 -0
  36. package/dist/cjs/transform/index.js.map +1 -0
  37. package/dist/cjs/transform/pipe.js +18 -0
  38. package/dist/cjs/transform/pipe.js.map +1 -0
  39. package/dist/cjs/transform/sanitize.js +218 -0
  40. package/dist/cjs/transform/sanitize.js.map +1 -0
  41. package/dist/cjs/utils/errors.js +94 -0
  42. package/dist/cjs/utils/errors.js.map +1 -0
  43. package/dist/cjs/utils/types.js +6 -0
  44. package/dist/cjs/utils/types.js.map +1 -0
  45. package/dist/esm/assert/assertions.js +75 -0
  46. package/dist/esm/assert/assertions.js.map +1 -0
  47. package/dist/esm/assert/index.js +3 -0
  48. package/dist/esm/assert/index.js.map +1 -0
  49. package/dist/esm/assert/invariant.js +39 -0
  50. package/dist/esm/assert/invariant.js.map +1 -0
  51. package/dist/esm/env/index.js +2 -0
  52. package/dist/esm/env/index.js.map +1 -0
  53. package/dist/esm/env/schema.js +304 -0
  54. package/dist/esm/env/schema.js.map +1 -0
  55. package/dist/esm/guards/advanced.js +170 -0
  56. package/dist/esm/guards/advanced.js.map +1 -0
  57. package/dist/esm/guards/combinators.js +182 -0
  58. package/dist/esm/guards/combinators.js.map +1 -0
  59. package/dist/esm/guards/index.js +8 -0
  60. package/dist/esm/guards/index.js.map +1 -0
  61. package/dist/esm/guards/primitives.js +108 -0
  62. package/dist/esm/guards/primitives.js.map +1 -0
  63. package/dist/esm/guards/structures.js +97 -0
  64. package/dist/esm/guards/structures.js.map +1 -0
  65. package/dist/esm/index.js +17 -0
  66. package/dist/esm/index.js.map +1 -0
  67. package/dist/esm/result/async.js +127 -0
  68. package/dist/esm/result/async.js.map +1 -0
  69. package/dist/esm/result/index.js +4 -0
  70. package/dist/esm/result/index.js.map +1 -0
  71. package/dist/esm/result/option.js +170 -0
  72. package/dist/esm/result/option.js.map +1 -0
  73. package/dist/esm/result/result.js +203 -0
  74. package/dist/esm/result/result.js.map +1 -0
  75. package/dist/esm/transform/coerce.js +143 -0
  76. package/dist/esm/transform/coerce.js.map +1 -0
  77. package/dist/esm/transform/index.js +4 -0
  78. package/dist/esm/transform/index.js.map +1 -0
  79. package/dist/esm/transform/pipe.js +14 -0
  80. package/dist/esm/transform/pipe.js.map +1 -0
  81. package/dist/esm/transform/sanitize.js +195 -0
  82. package/dist/esm/transform/sanitize.js.map +1 -0
  83. package/dist/esm/utils/errors.js +84 -0
  84. package/dist/esm/utils/errors.js.map +1 -0
  85. package/dist/esm/utils/types.js +5 -0
  86. package/dist/esm/utils/types.js.map +1 -0
  87. package/dist/types/assert/assertions.d.ts +52 -0
  88. package/dist/types/assert/assertions.d.ts.map +1 -0
  89. package/dist/types/assert/index.d.ts +3 -0
  90. package/dist/types/assert/index.d.ts.map +1 -0
  91. package/dist/types/assert/invariant.d.ts +29 -0
  92. package/dist/types/assert/invariant.d.ts.map +1 -0
  93. package/dist/types/env/index.d.ts +2 -0
  94. package/dist/types/env/index.d.ts.map +1 -0
  95. package/dist/types/env/schema.d.ts +131 -0
  96. package/dist/types/env/schema.d.ts.map +1 -0
  97. package/dist/types/guards/advanced.d.ts +101 -0
  98. package/dist/types/guards/advanced.d.ts.map +1 -0
  99. package/dist/types/guards/combinators.d.ts +120 -0
  100. package/dist/types/guards/combinators.d.ts.map +1 -0
  101. package/dist/types/guards/index.d.ts +5 -0
  102. package/dist/types/guards/index.d.ts.map +1 -0
  103. package/dist/types/guards/primitives.d.ts +75 -0
  104. package/dist/types/guards/primitives.d.ts.map +1 -0
  105. package/dist/types/guards/structures.d.ts +58 -0
  106. package/dist/types/guards/structures.d.ts.map +1 -0
  107. package/dist/types/index.d.ts +8 -0
  108. package/dist/types/index.d.ts.map +1 -0
  109. package/dist/types/result/async.d.ts +72 -0
  110. package/dist/types/result/async.d.ts.map +1 -0
  111. package/dist/types/result/index.d.ts +4 -0
  112. package/dist/types/result/index.d.ts.map +1 -0
  113. package/dist/types/result/option.d.ts +106 -0
  114. package/dist/types/result/option.d.ts.map +1 -0
  115. package/dist/types/result/result.d.ts +126 -0
  116. package/dist/types/result/result.d.ts.map +1 -0
  117. package/dist/types/transform/coerce.d.ts +73 -0
  118. package/dist/types/transform/coerce.d.ts.map +1 -0
  119. package/dist/types/transform/index.d.ts +4 -0
  120. package/dist/types/transform/index.d.ts.map +1 -0
  121. package/dist/types/transform/pipe.d.ts +44 -0
  122. package/dist/types/transform/pipe.d.ts.map +1 -0
  123. package/dist/types/transform/sanitize.d.ts +108 -0
  124. package/dist/types/transform/sanitize.d.ts.map +1 -0
  125. package/dist/types/utils/errors.d.ts +51 -0
  126. package/dist/types/utils/errors.d.ts.map +1 -0
  127. package/dist/types/utils/types.d.ts +29 -0
  128. package/dist/types/utils/types.d.ts.map +1 -0
  129. package/package.json +144 -0
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ // ============================================================================
3
+ // Guarden — Guard Combinators
4
+ // ============================================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.and = and;
7
+ exports.or = or;
8
+ exports.not = not;
9
+ exports.shape = shape;
10
+ exports.tuple = tuple;
11
+ exports.arrayOf = arrayOf;
12
+ exports.mapOf = mapOf;
13
+ exports.recordOf = recordOf;
14
+ exports.refine = refine;
15
+ exports.optional = optional;
16
+ exports.nullable = nullable;
17
+ /**
18
+ * Combine two guards with AND logic (intersection).
19
+ * Value must satisfy both guards.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * const isPositiveInteger = and(isInteger, isPositiveNumber);
24
+ * ```
25
+ */
26
+ function and(guardA, guardB) {
27
+ return (value) => guardA(value) && guardB(value);
28
+ }
29
+ /**
30
+ * Combine two guards with OR logic (union).
31
+ * Value must satisfy at least one guard.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * const isStringOrNumber = or(isString, isNumber);
36
+ * ```
37
+ */
38
+ function or(guardA, guardB) {
39
+ return (value) => guardA(value) || guardB(value);
40
+ }
41
+ /**
42
+ * Negate a guard.
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * const isNotNull = not(isNull);
47
+ * ```
48
+ */
49
+ function not(guard) {
50
+ return (value) => !guard(value);
51
+ }
52
+ /**
53
+ * Create a guard that validates an object shape.
54
+ * Each property is validated by its corresponding guard.
55
+ *
56
+ * @example
57
+ * ```ts
58
+ * const isUser = shape({
59
+ * name: isString,
60
+ * age: isNumber,
61
+ * email: isEmail,
62
+ * });
63
+ *
64
+ * if (isUser(data)) {
65
+ * data.name; // string
66
+ * data.age; // number
67
+ * data.email; // string
68
+ * }
69
+ * ```
70
+ */
71
+ function shape(schema) {
72
+ return (value) => {
73
+ if (typeof value !== 'object' || value === null)
74
+ return false;
75
+ const obj = value;
76
+ for (const key in schema) {
77
+ if (!Object.prototype.hasOwnProperty.call(schema, key))
78
+ continue;
79
+ if (!schema[key](obj[key]))
80
+ return false;
81
+ }
82
+ return true;
83
+ };
84
+ }
85
+ /**
86
+ * Create a guard that validates a tuple.
87
+ *
88
+ * @example
89
+ * ```ts
90
+ * const isCoord = tuple(isNumber, isNumber);
91
+ * if (isCoord(data)) {
92
+ * const [x, y] = data; // [number, number]
93
+ * }
94
+ * ```
95
+ */
96
+ function tuple(...guards) {
97
+ return (value) => {
98
+ if (!Array.isArray(value))
99
+ return false;
100
+ if (value.length !== guards.length)
101
+ return false;
102
+ return guards.every((guard, i) => guard(value[i]));
103
+ };
104
+ }
105
+ /**
106
+ * Create a guard that validates each element of an array.
107
+ *
108
+ * @example
109
+ * ```ts
110
+ * const isStringArray = arrayOf(isString);
111
+ * if (isStringArray(data)) {
112
+ * data.forEach(s => s.toUpperCase()); // string[]
113
+ * }
114
+ * ```
115
+ */
116
+ function arrayOf(guard) {
117
+ return (value) => {
118
+ if (!Array.isArray(value))
119
+ return false;
120
+ return value.every((item) => guard(item));
121
+ };
122
+ }
123
+ /**
124
+ * Create a guard that validates Map entries.
125
+ *
126
+ * @example
127
+ * ```ts
128
+ * const isStringNumberMap = mapOf(isString, isNumber);
129
+ * ```
130
+ */
131
+ function mapOf(keyGuard, valueGuard) {
132
+ return (value) => {
133
+ if (!(value instanceof Map))
134
+ return false;
135
+ for (const [k, v] of value) {
136
+ if (!keyGuard(k) || !valueGuard(v))
137
+ return false;
138
+ }
139
+ return true;
140
+ };
141
+ }
142
+ /**
143
+ * Create a guard that validates Record (object) entries.
144
+ *
145
+ * @example
146
+ * ```ts
147
+ * const isScoreBoard = recordOf(isString, isNumber);
148
+ * ```
149
+ */
150
+ function recordOf(valueGuard) {
151
+ return (value) => {
152
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
153
+ return false;
154
+ const obj = value;
155
+ for (const key in obj) {
156
+ if (!Object.prototype.hasOwnProperty.call(obj, key))
157
+ continue;
158
+ if (!valueGuard(obj[key]))
159
+ return false;
160
+ }
161
+ return true;
162
+ };
163
+ }
164
+ /**
165
+ * Create a guard with a custom refinement predicate.
166
+ *
167
+ * @example
168
+ * ```ts
169
+ * const isEvenNumber = refine(isNumber, (n) => n % 2 === 0);
170
+ * ```
171
+ */
172
+ function refine(guard, predicate) {
173
+ return (value) => guard(value) && predicate(value);
174
+ }
175
+ /**
176
+ * Create an optional guard — allows undefined in addition to the guarded type.
177
+ *
178
+ * @example
179
+ * ```ts
180
+ * const isOptionalString = optional(isString);
181
+ * isOptionalString(undefined) // true
182
+ * isOptionalString("hello") // true
183
+ * isOptionalString(42) // false
184
+ * ```
185
+ */
186
+ function optional(guard) {
187
+ return (value) => value === undefined || guard(value);
188
+ }
189
+ /**
190
+ * Create a nullable guard — allows null in addition to the guarded type.
191
+ */
192
+ function nullable(guard) {
193
+ return (value) => value === null || guard(value);
194
+ }
195
+ //# sourceMappingURL=combinators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combinators.js","sourceRoot":"","sources":["../../../src/guards/combinators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ // ============================================================================
3
+ // Guarden — Guards Module Barrel Export
4
+ // ============================================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.tuple = exports.shape = exports.not = exports.or = exports.and = exports.isInstanceOf = exports.isMaxLength = exports.isMinLength = exports.isMatch = exports.isOneOf = exports.isInRange = exports.isNonEmptyArray = exports.isSafeInteger = exports.isInteger = exports.isNegativeNumber = exports.isPositiveNumber = exports.isHexColor = exports.isJSONString = exports.isISO8601 = exports.isUUID = exports.isURL = exports.isEmail = exports.isNonEmptyString = exports.isTypedArray = exports.isArrayBuffer = exports.isPromise = exports.isError = exports.isRegExp = exports.isValidDate = exports.isDate = exports.isWeakSet = exports.isWeakMap = exports.isSet = exports.isMap = exports.isPlainObject = exports.isObject = exports.isArray = exports.isPrimitive = exports.isFunction = exports.isNonNullish = exports.isNullish = exports.isUndefined = exports.isNull = exports.isSymbol = exports.isBigInt = exports.isBoolean = exports.isFiniteNumber = exports.isNumberIncludingNaN = exports.isNumber = exports.isString = void 0;
7
+ exports.nullable = exports.optional = exports.refine = exports.recordOf = exports.mapOf = exports.arrayOf = void 0;
8
+ var primitives_js_1 = require("./primitives.js");
9
+ Object.defineProperty(exports, "isString", { enumerable: true, get: function () { return primitives_js_1.isString; } });
10
+ Object.defineProperty(exports, "isNumber", { enumerable: true, get: function () { return primitives_js_1.isNumber; } });
11
+ Object.defineProperty(exports, "isNumberIncludingNaN", { enumerable: true, get: function () { return primitives_js_1.isNumberIncludingNaN; } });
12
+ Object.defineProperty(exports, "isFiniteNumber", { enumerable: true, get: function () { return primitives_js_1.isFiniteNumber; } });
13
+ Object.defineProperty(exports, "isBoolean", { enumerable: true, get: function () { return primitives_js_1.isBoolean; } });
14
+ Object.defineProperty(exports, "isBigInt", { enumerable: true, get: function () { return primitives_js_1.isBigInt; } });
15
+ Object.defineProperty(exports, "isSymbol", { enumerable: true, get: function () { return primitives_js_1.isSymbol; } });
16
+ Object.defineProperty(exports, "isNull", { enumerable: true, get: function () { return primitives_js_1.isNull; } });
17
+ Object.defineProperty(exports, "isUndefined", { enumerable: true, get: function () { return primitives_js_1.isUndefined; } });
18
+ Object.defineProperty(exports, "isNullish", { enumerable: true, get: function () { return primitives_js_1.isNullish; } });
19
+ Object.defineProperty(exports, "isNonNullish", { enumerable: true, get: function () { return primitives_js_1.isNonNullish; } });
20
+ Object.defineProperty(exports, "isFunction", { enumerable: true, get: function () { return primitives_js_1.isFunction; } });
21
+ Object.defineProperty(exports, "isPrimitive", { enumerable: true, get: function () { return primitives_js_1.isPrimitive; } });
22
+ var structures_js_1 = require("./structures.js");
23
+ Object.defineProperty(exports, "isArray", { enumerable: true, get: function () { return structures_js_1.isArray; } });
24
+ Object.defineProperty(exports, "isObject", { enumerable: true, get: function () { return structures_js_1.isObject; } });
25
+ Object.defineProperty(exports, "isPlainObject", { enumerable: true, get: function () { return structures_js_1.isPlainObject; } });
26
+ Object.defineProperty(exports, "isMap", { enumerable: true, get: function () { return structures_js_1.isMap; } });
27
+ Object.defineProperty(exports, "isSet", { enumerable: true, get: function () { return structures_js_1.isSet; } });
28
+ Object.defineProperty(exports, "isWeakMap", { enumerable: true, get: function () { return structures_js_1.isWeakMap; } });
29
+ Object.defineProperty(exports, "isWeakSet", { enumerable: true, get: function () { return structures_js_1.isWeakSet; } });
30
+ Object.defineProperty(exports, "isDate", { enumerable: true, get: function () { return structures_js_1.isDate; } });
31
+ Object.defineProperty(exports, "isValidDate", { enumerable: true, get: function () { return structures_js_1.isValidDate; } });
32
+ Object.defineProperty(exports, "isRegExp", { enumerable: true, get: function () { return structures_js_1.isRegExp; } });
33
+ Object.defineProperty(exports, "isError", { enumerable: true, get: function () { return structures_js_1.isError; } });
34
+ Object.defineProperty(exports, "isPromise", { enumerable: true, get: function () { return structures_js_1.isPromise; } });
35
+ Object.defineProperty(exports, "isArrayBuffer", { enumerable: true, get: function () { return structures_js_1.isArrayBuffer; } });
36
+ Object.defineProperty(exports, "isTypedArray", { enumerable: true, get: function () { return structures_js_1.isTypedArray; } });
37
+ var advanced_js_1 = require("./advanced.js");
38
+ Object.defineProperty(exports, "isNonEmptyString", { enumerable: true, get: function () { return advanced_js_1.isNonEmptyString; } });
39
+ Object.defineProperty(exports, "isEmail", { enumerable: true, get: function () { return advanced_js_1.isEmail; } });
40
+ Object.defineProperty(exports, "isURL", { enumerable: true, get: function () { return advanced_js_1.isURL; } });
41
+ Object.defineProperty(exports, "isUUID", { enumerable: true, get: function () { return advanced_js_1.isUUID; } });
42
+ Object.defineProperty(exports, "isISO8601", { enumerable: true, get: function () { return advanced_js_1.isISO8601; } });
43
+ Object.defineProperty(exports, "isJSONString", { enumerable: true, get: function () { return advanced_js_1.isJSONString; } });
44
+ Object.defineProperty(exports, "isHexColor", { enumerable: true, get: function () { return advanced_js_1.isHexColor; } });
45
+ Object.defineProperty(exports, "isPositiveNumber", { enumerable: true, get: function () { return advanced_js_1.isPositiveNumber; } });
46
+ Object.defineProperty(exports, "isNegativeNumber", { enumerable: true, get: function () { return advanced_js_1.isNegativeNumber; } });
47
+ Object.defineProperty(exports, "isInteger", { enumerable: true, get: function () { return advanced_js_1.isInteger; } });
48
+ Object.defineProperty(exports, "isSafeInteger", { enumerable: true, get: function () { return advanced_js_1.isSafeInteger; } });
49
+ Object.defineProperty(exports, "isNonEmptyArray", { enumerable: true, get: function () { return advanced_js_1.isNonEmptyArray; } });
50
+ Object.defineProperty(exports, "isInRange", { enumerable: true, get: function () { return advanced_js_1.isInRange; } });
51
+ Object.defineProperty(exports, "isOneOf", { enumerable: true, get: function () { return advanced_js_1.isOneOf; } });
52
+ Object.defineProperty(exports, "isMatch", { enumerable: true, get: function () { return advanced_js_1.isMatch; } });
53
+ Object.defineProperty(exports, "isMinLength", { enumerable: true, get: function () { return advanced_js_1.isMinLength; } });
54
+ Object.defineProperty(exports, "isMaxLength", { enumerable: true, get: function () { return advanced_js_1.isMaxLength; } });
55
+ Object.defineProperty(exports, "isInstanceOf", { enumerable: true, get: function () { return advanced_js_1.isInstanceOf; } });
56
+ var combinators_js_1 = require("./combinators.js");
57
+ Object.defineProperty(exports, "and", { enumerable: true, get: function () { return combinators_js_1.and; } });
58
+ Object.defineProperty(exports, "or", { enumerable: true, get: function () { return combinators_js_1.or; } });
59
+ Object.defineProperty(exports, "not", { enumerable: true, get: function () { return combinators_js_1.not; } });
60
+ Object.defineProperty(exports, "shape", { enumerable: true, get: function () { return combinators_js_1.shape; } });
61
+ Object.defineProperty(exports, "tuple", { enumerable: true, get: function () { return combinators_js_1.tuple; } });
62
+ Object.defineProperty(exports, "arrayOf", { enumerable: true, get: function () { return combinators_js_1.arrayOf; } });
63
+ Object.defineProperty(exports, "mapOf", { enumerable: true, get: function () { return combinators_js_1.mapOf; } });
64
+ Object.defineProperty(exports, "recordOf", { enumerable: true, get: function () { return combinators_js_1.recordOf; } });
65
+ Object.defineProperty(exports, "refine", { enumerable: true, get: function () { return combinators_js_1.refine; } });
66
+ Object.defineProperty(exports, "optional", { enumerable: true, get: function () { return combinators_js_1.optional; } });
67
+ Object.defineProperty(exports, "nullable", { enumerable: true, get: function () { return combinators_js_1.nullable; } });
68
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/guards/index.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,wCAAwC;AACxC,+EAA+E;;;;AAE/E,iDAcyB;AAbvB,yGAAA,QAAQ,OAAA;AACR,yGAAA,QAAQ,OAAA;AACR,qHAAA,oBAAoB,OAAA;AACpB,+GAAA,cAAc,OAAA;AACd,0GAAA,SAAS,OAAA;AACT,yGAAA,QAAQ,OAAA;AACR,yGAAA,QAAQ,OAAA;AACR,uGAAA,MAAM,OAAA;AACN,4GAAA,WAAW,OAAA;AACX,0GAAA,SAAS,OAAA;AACT,6GAAA,YAAY,OAAA;AACZ,2GAAA,UAAU,OAAA;AACV,4GAAA,WAAW,OAAA;AAGb,iDAeyB;AAdvB,wGAAA,OAAO,OAAA;AACP,yGAAA,QAAQ,OAAA;AACR,8GAAA,aAAa,OAAA;AACb,sGAAA,KAAK,OAAA;AACL,sGAAA,KAAK,OAAA;AACL,0GAAA,SAAS,OAAA;AACT,0GAAA,SAAS,OAAA;AACT,uGAAA,MAAM,OAAA;AACN,4GAAA,WAAW,OAAA;AACX,yGAAA,QAAQ,OAAA;AACR,wGAAA,OAAO,OAAA;AACP,0GAAA,SAAS,OAAA;AACT,8GAAA,aAAa,OAAA;AACb,6GAAA,YAAY,OAAA;AAGd,6CAmBuB;AAlBrB,+GAAA,gBAAgB,OAAA;AAChB,sGAAA,OAAO,OAAA;AACP,oGAAA,KAAK,OAAA;AACL,qGAAA,MAAM,OAAA;AACN,wGAAA,SAAS,OAAA;AACT,2GAAA,YAAY,OAAA;AACZ,yGAAA,UAAU,OAAA;AACV,+GAAA,gBAAgB,OAAA;AAChB,+GAAA,gBAAgB,OAAA;AAChB,wGAAA,SAAS,OAAA;AACT,4GAAA,aAAa,OAAA;AACb,8GAAA,eAAe,OAAA;AACf,wGAAA,SAAS,OAAA;AACT,sGAAA,OAAO,OAAA;AACP,sGAAA,OAAO,OAAA;AACP,0GAAA,WAAW,OAAA;AACX,0GAAA,WAAW,OAAA;AACX,2GAAA,YAAY,OAAA;AAGd,mDAY0B;AAXxB,qGAAA,GAAG,OAAA;AACH,oGAAA,EAAE,OAAA;AACF,qGAAA,GAAG,OAAA;AACH,uGAAA,KAAK,OAAA;AACL,uGAAA,KAAK,OAAA;AACL,yGAAA,OAAO,OAAA;AACP,uGAAA,KAAK,OAAA;AACL,0GAAA,QAAQ,OAAA;AACR,wGAAA,MAAM,OAAA;AACN,0GAAA,QAAQ,OAAA;AACR,0GAAA,QAAQ,OAAA"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ // ============================================================================
3
+ // Guarden — Primitive Type Guards
4
+ // ============================================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isString = isString;
7
+ exports.isNumber = isNumber;
8
+ exports.isNumberIncludingNaN = isNumberIncludingNaN;
9
+ exports.isFiniteNumber = isFiniteNumber;
10
+ exports.isBoolean = isBoolean;
11
+ exports.isBigInt = isBigInt;
12
+ exports.isSymbol = isSymbol;
13
+ exports.isNull = isNull;
14
+ exports.isUndefined = isUndefined;
15
+ exports.isNullish = isNullish;
16
+ exports.isNonNullish = isNonNullish;
17
+ exports.isFunction = isFunction;
18
+ exports.isPrimitive = isPrimitive;
19
+ /**
20
+ * Check if a value is a string.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * const val: unknown = "hello";
25
+ * if (isString(val)) {
26
+ * val.toUpperCase(); // TypeScript knows val is string
27
+ * }
28
+ * ```
29
+ */
30
+ function isString(value) {
31
+ return typeof value === 'string';
32
+ }
33
+ /**
34
+ * Check if a value is a number (excludes NaN by default).
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * isNumber(42) // true
39
+ * isNumber(NaN) // false
40
+ * isNumber("42") // false
41
+ * ```
42
+ */
43
+ function isNumber(value) {
44
+ return typeof value === 'number' && !Number.isNaN(value);
45
+ }
46
+ /**
47
+ * Check if a value is a number, including NaN.
48
+ */
49
+ function isNumberIncludingNaN(value) {
50
+ return typeof value === 'number';
51
+ }
52
+ /**
53
+ * Check if a value is a finite number (excludes NaN and Infinity).
54
+ */
55
+ function isFiniteNumber(value) {
56
+ return typeof value === 'number' && Number.isFinite(value);
57
+ }
58
+ /**
59
+ * Check if a value is a boolean.
60
+ */
61
+ function isBoolean(value) {
62
+ return typeof value === 'boolean';
63
+ }
64
+ /**
65
+ * Check if a value is a bigint.
66
+ */
67
+ function isBigInt(value) {
68
+ return typeof value === 'bigint';
69
+ }
70
+ /**
71
+ * Check if a value is a symbol.
72
+ */
73
+ function isSymbol(value) {
74
+ return typeof value === 'symbol';
75
+ }
76
+ /**
77
+ * Check if a value is null.
78
+ */
79
+ function isNull(value) {
80
+ return value === null;
81
+ }
82
+ /**
83
+ * Check if a value is undefined.
84
+ */
85
+ function isUndefined(value) {
86
+ return value === undefined;
87
+ }
88
+ /**
89
+ * Check if a value is null or undefined.
90
+ *
91
+ * @example
92
+ * ```ts
93
+ * if (!isNullish(val)) {
94
+ * // val is narrowed to exclude null | undefined
95
+ * }
96
+ * ```
97
+ */
98
+ function isNullish(value) {
99
+ return value === null || value === undefined;
100
+ }
101
+ /**
102
+ * Check if a value is NOT null and NOT undefined.
103
+ */
104
+ function isNonNullish(value) {
105
+ return value !== null && value !== undefined;
106
+ }
107
+ /**
108
+ * Check if a value is a function.
109
+ */
110
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
111
+ function isFunction(value) {
112
+ return typeof value === 'function';
113
+ }
114
+ /**
115
+ * Check if a value is a primitive type.
116
+ */
117
+ function isPrimitive(value) {
118
+ if (value === null || value === undefined)
119
+ return true;
120
+ const t = typeof value;
121
+ return t === 'string' || t === 'number' || t === 'boolean' || t === 'bigint' || t === 'symbol';
122
+ }
123
+ //# sourceMappingURL=primitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../../src/guards/primitives.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,kCAAkC;AAClC,+EAA+E;;AAa/E,4BAEC;AAYD,4BAEC;AAKD,oDAEC;AAKD,wCAEC;AAKD,8BAEC;AAKD,4BAEC;AAKD,4BAEC;AAKD,wBAEC;AAKD,kCAEC;AAYD,8BAEC;AAKD,oCAEC;AAMD,gCAEC;AAKD,kCAMC;AApHD;;;;;;;;;;GAUG;AACH,SAAgB,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AACnC,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,KAAc;IACjD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,KAAc;IAC3C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,SAAgB,MAAM,CAAC,KAAc;IACnC,OAAO,KAAK,KAAK,IAAI,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,KAAc;IACxC,OAAO,KAAK,KAAK,SAAS,CAAC;AAC7B,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,SAAS,CAAC,KAAc;IACtC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAI,KAAQ;IACtC,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,sEAAsE;AACtE,SAAgB,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CACzB,KAAc;IAEd,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,CAAC,GAAG,OAAO,KAAK,CAAC;IACvB,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,QAAQ,CAAC;AACjG,CAAC"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ // ============================================================================
3
+ // Guarden — Structure Type Guards
4
+ // ============================================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.isArray = isArray;
7
+ exports.isObject = isObject;
8
+ exports.isPlainObject = isPlainObject;
9
+ exports.isMap = isMap;
10
+ exports.isSet = isSet;
11
+ exports.isWeakMap = isWeakMap;
12
+ exports.isWeakSet = isWeakSet;
13
+ exports.isDate = isDate;
14
+ exports.isValidDate = isValidDate;
15
+ exports.isRegExp = isRegExp;
16
+ exports.isError = isError;
17
+ exports.isPromise = isPromise;
18
+ exports.isArrayBuffer = isArrayBuffer;
19
+ exports.isTypedArray = isTypedArray;
20
+ /**
21
+ * Check if a value is an array.
22
+ */
23
+ function isArray(value) {
24
+ return Array.isArray(value);
25
+ }
26
+ /**
27
+ * Check if a value is an object (excludes null and arrays).
28
+ */
29
+ function isObject(value) {
30
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
31
+ }
32
+ /**
33
+ * Check if a value is a plain object (created by `{}` or `Object.create(null)`).
34
+ * Excludes class instances, arrays, and other special objects.
35
+ */
36
+ function isPlainObject(value) {
37
+ if (typeof value !== 'object' || value === null)
38
+ return false;
39
+ const proto = Object.getPrototypeOf(value);
40
+ return proto === Object.prototype || proto === null;
41
+ }
42
+ /**
43
+ * Check if a value is a Map.
44
+ */
45
+ function isMap(value) {
46
+ return value instanceof Map;
47
+ }
48
+ /**
49
+ * Check if a value is a Set.
50
+ */
51
+ function isSet(value) {
52
+ return value instanceof Set;
53
+ }
54
+ /**
55
+ * Check if a value is a WeakMap.
56
+ */
57
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
58
+ function isWeakMap(value) {
59
+ return value instanceof WeakMap;
60
+ }
61
+ /**
62
+ * Check if a value is a WeakSet.
63
+ */
64
+ function isWeakSet(value) {
65
+ return value instanceof WeakSet;
66
+ }
67
+ /**
68
+ * Check if a value is a Date instance.
69
+ */
70
+ function isDate(value) {
71
+ return value instanceof Date;
72
+ }
73
+ /**
74
+ * Check if a value is a valid Date (not Invalid Date).
75
+ */
76
+ function isValidDate(value) {
77
+ return value instanceof Date && !Number.isNaN(value.getTime());
78
+ }
79
+ /**
80
+ * Check if a value is a RegExp.
81
+ */
82
+ function isRegExp(value) {
83
+ return value instanceof RegExp;
84
+ }
85
+ /**
86
+ * Check if a value is an Error instance.
87
+ */
88
+ function isError(value) {
89
+ return value instanceof Error;
90
+ }
91
+ /**
92
+ * Check if a value is a Promise.
93
+ */
94
+ function isPromise(value) {
95
+ return (value instanceof Promise ||
96
+ (typeof value === 'object' &&
97
+ value !== null &&
98
+ 'then' in value &&
99
+ typeof value['then'] === 'function'));
100
+ }
101
+ /**
102
+ * Check if a value is an ArrayBuffer.
103
+ */
104
+ function isArrayBuffer(value) {
105
+ return value instanceof ArrayBuffer;
106
+ }
107
+ /**
108
+ * Check if a value is a typed array (Uint8Array, Float32Array, etc.).
109
+ */
110
+ function isTypedArray(value) {
111
+ return ArrayBuffer.isView(value) && !(value instanceof DataView);
112
+ }
113
+ //# sourceMappingURL=structures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structures.js","sourceRoot":"","sources":["../../../src/guards/structures.ts"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,kCAAkC;AAClC,+EAA+E;;AAK/E,0BAEC;AAKD,4BAEC;AAMD,sCAIC;AAKD,sBAEC;AAKD,sBAEC;AAMD,8BAEC;AAKD,8BAEC;AAKD,wBAEC;AAKD,kCAEC;AAKD,4BAEC;AAKD,0BAEC;AAKD,8BAQC;AAKD,sCAEC;AAKD,oCAaC;AArHD;;GAEG;AACH,SAAgB,OAAO,CAAC,KAAc;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;GAGG;AACH,SAAgB,aAAa,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAY,CAAC;IACtD,OAAO,KAAK,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,SAAgB,KAAK,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,GAAG,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,SAAgB,KAAK,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,GAAG,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,sEAAsE;AACtE,SAAgB,SAAS,CAAC,KAAc;IACtC,OAAO,KAAK,YAAY,OAAO,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,KAAc;IACtC,OAAO,KAAK,YAAY,OAAO,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,SAAgB,MAAM,CAAC,KAAc;IACnC,OAAO,KAAK,YAAY,IAAI,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,KAAc;IACxC,OAAO,KAAK,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAC,KAAc;IACrC,OAAO,KAAK,YAAY,MAAM,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAgB,OAAO,CAAC,KAAc;IACpC,OAAO,KAAK,YAAY,KAAK,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,KAAc;IACtC,OAAO,CACL,KAAK,YAAY,OAAO;QACxB,CAAC,OAAO,KAAK,KAAK,QAAQ;YACxB,KAAK,KAAK,IAAI;YACd,MAAM,IAAI,KAAK;YACf,OAAQ,KAAiC,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,CACpE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,KAAc;IAC1C,OAAO,KAAK,YAAY,WAAW,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAC1B,KAAc;IAWd,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC,CAAC;AACnE,CAAC"}