@zairakai/js-utils 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 (93) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +270 -0
  3. package/dist/arrays.cjs +210 -0
  4. package/dist/arrays.d.cts +119 -0
  5. package/dist/arrays.d.ts +119 -0
  6. package/dist/arrays.js +32 -0
  7. package/dist/chunk-27YHP2CK.js +407 -0
  8. package/dist/chunk-3WNRYKPG.js +37 -0
  9. package/dist/chunk-42CHLXT7.js +214 -0
  10. package/dist/chunk-6F4PWJZI.js +0 -0
  11. package/dist/chunk-7SXRFZBB.js +173 -0
  12. package/dist/chunk-F6RSTW65.js +156 -0
  13. package/dist/chunk-G7ZJ23DW.js +253 -0
  14. package/dist/chunk-IPP7PA6H.js +136 -0
  15. package/dist/chunk-LDSWHSRX.js +96 -0
  16. package/dist/chunk-TY75OOIQ.js +700 -0
  17. package/dist/chunk-W6JEMFAF.js +54 -0
  18. package/dist/chunk-XEJLBAXE.js +164 -0
  19. package/dist/chunk-Z7G3SIQH.js +270 -0
  20. package/dist/chunk-ZJPKS2MQ.js +101 -0
  21. package/dist/collections.cjs +797 -0
  22. package/dist/collections.d.cts +353 -0
  23. package/dist/collections.d.ts +353 -0
  24. package/dist/collections.js +17 -0
  25. package/dist/datetime.cjs +80 -0
  26. package/dist/datetime.d.cts +75 -0
  27. package/dist/datetime.d.ts +75 -0
  28. package/dist/datetime.js +24 -0
  29. package/dist/equals.cjs +121 -0
  30. package/dist/equals.d.cts +24 -0
  31. package/dist/equals.d.ts +24 -0
  32. package/dist/equals.js +8 -0
  33. package/dist/formatters.cjs +201 -0
  34. package/dist/formatters.d.cts +180 -0
  35. package/dist/formatters.d.ts +180 -0
  36. package/dist/formatters.js +48 -0
  37. package/dist/index.cjs +2906 -0
  38. package/dist/index.d.cts +120 -0
  39. package/dist/index.d.ts +120 -0
  40. package/dist/index.js +348 -0
  41. package/dist/number.cjs +279 -0
  42. package/dist/number.d.cts +177 -0
  43. package/dist/number.d.ts +177 -0
  44. package/dist/number.js +10 -0
  45. package/dist/obj.cjs +427 -0
  46. package/dist/obj.d.cts +177 -0
  47. package/dist/obj.d.ts +177 -0
  48. package/dist/obj.js +12 -0
  49. package/dist/php-arrays.cjs +954 -0
  50. package/dist/php-arrays.d.cts +256 -0
  51. package/dist/php-arrays.d.ts +256 -0
  52. package/dist/php-arrays.js +70 -0
  53. package/dist/runtime.cjs +134 -0
  54. package/dist/runtime.d.cts +90 -0
  55. package/dist/runtime.d.ts +90 -0
  56. package/dist/runtime.js +24 -0
  57. package/dist/schemas.cjs +86 -0
  58. package/dist/schemas.d.cts +108 -0
  59. package/dist/schemas.d.ts +108 -0
  60. package/dist/schemas.js +22 -0
  61. package/dist/str.cjs +499 -0
  62. package/dist/str.d.cts +282 -0
  63. package/dist/str.d.ts +282 -0
  64. package/dist/str.js +11 -0
  65. package/dist/types.cjs +18 -0
  66. package/dist/types.d.cts +13 -0
  67. package/dist/types.d.ts +13 -0
  68. package/dist/types.js +1 -0
  69. package/dist/validator.cjs +251 -0
  70. package/dist/validator.d.cts +99 -0
  71. package/dist/validator.d.ts +99 -0
  72. package/dist/validator.js +11 -0
  73. package/dist/validators.cjs +217 -0
  74. package/dist/validators.d.cts +216 -0
  75. package/dist/validators.d.ts +216 -0
  76. package/dist/validators.js +64 -0
  77. package/package.json +180 -0
  78. package/src/arrays.ts +316 -0
  79. package/src/collections.ts +866 -0
  80. package/src/datetime.ts +103 -0
  81. package/src/equals.ts +134 -0
  82. package/src/formatters.ts +342 -0
  83. package/src/index.ts +36 -0
  84. package/src/number.ts +281 -0
  85. package/src/obj.ts +303 -0
  86. package/src/php-arrays.ts +445 -0
  87. package/src/pipe.ts +29 -0
  88. package/src/runtime.ts +194 -0
  89. package/src/schemas.ts +136 -0
  90. package/src/str.ts +438 -0
  91. package/src/types.ts +13 -0
  92. package/src/validator.ts +157 -0
  93. package/src/validators.ts +359 -0
@@ -0,0 +1,251 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/validator.ts
21
+ var validator_exports = {};
22
+ __export(validator_exports, {
23
+ ValidationInstance: () => ValidationInstance,
24
+ Validator: () => Validator,
25
+ validator: () => validator
26
+ });
27
+ module.exports = __toCommonJS(validator_exports);
28
+ var import_zod = require("zod");
29
+
30
+ // src/equals.ts
31
+ var isEqual = (a, b) => {
32
+ if (a === b) {
33
+ return true;
34
+ }
35
+ if (a && b && "object" === typeof a && "object" === typeof b) {
36
+ if (a.constructor !== b.constructor) {
37
+ return false;
38
+ }
39
+ if (Array.isArray(a)) {
40
+ if (a.length !== b.length) {
41
+ return false;
42
+ }
43
+ for (let i = 0; i < a.length; i++) {
44
+ if (!isEqual(a[i], b[i])) {
45
+ return false;
46
+ }
47
+ }
48
+ return true;
49
+ }
50
+ if (a instanceof Map && b instanceof Map) {
51
+ if (a.size !== b.size) {
52
+ return false;
53
+ }
54
+ for (const [key, val] of a) {
55
+ if (!b.has(key) || !isEqual(val, b.get(key))) {
56
+ return false;
57
+ }
58
+ }
59
+ return true;
60
+ }
61
+ if (a instanceof Set && b instanceof Set) {
62
+ if (a.size !== b.size) {
63
+ return false;
64
+ }
65
+ for (const val of a) {
66
+ if (!b.has(val)) {
67
+ return false;
68
+ }
69
+ }
70
+ return true;
71
+ }
72
+ if (a.constructor === RegExp) {
73
+ return a.source === b.source && a.flags === b.flags;
74
+ }
75
+ if (a.valueOf !== Object.prototype.valueOf) {
76
+ return a.valueOf() === b.valueOf();
77
+ }
78
+ if (a.toString !== Object.prototype.toString) {
79
+ return a.toString() === b.toString();
80
+ }
81
+ const keys = Object.keys(a);
82
+ if (keys.length !== Object.keys(b).length) {
83
+ return false;
84
+ }
85
+ const bObj = b;
86
+ const aObj = a;
87
+ for (const key of keys) {
88
+ if (!Object.prototype.hasOwnProperty.call(bObj, key)) {
89
+ return false;
90
+ }
91
+ if (!isEqual(aObj[key], bObj[key])) {
92
+ return false;
93
+ }
94
+ }
95
+ return true;
96
+ }
97
+ return a !== a && b !== b;
98
+ };
99
+ var diff = (original, current) => {
100
+ const result = {};
101
+ if (isEqual(original, current)) {
102
+ return result;
103
+ }
104
+ if (!original || !current || "object" !== typeof original || "object" !== typeof current) {
105
+ return current || {};
106
+ }
107
+ const originalObj = original;
108
+ const currentObj = current;
109
+ const keys = /* @__PURE__ */ new Set([...Object.keys(originalObj), ...Object.keys(currentObj)]);
110
+ for (const key of keys) {
111
+ if (!isEqual(originalObj[key], currentObj[key])) {
112
+ if (originalObj[key] && currentObj[key] && "object" === typeof originalObj[key] && "object" === typeof currentObj[key] && !Array.isArray(originalObj[key])) {
113
+ result[key] = diff(originalObj[key], currentObj[key]);
114
+ } else {
115
+ result[key] = currentObj[key];
116
+ }
117
+ }
118
+ }
119
+ return result;
120
+ };
121
+
122
+ // src/validator.ts
123
+ var Validator = class {
124
+ /**
125
+ * Create a new validation instance
126
+ *
127
+ * @param {unknown} data The data to validate
128
+ * @param {T | z.ZodObject<T>} rules The validation rules (Zod shape or object)
129
+ * @returns {ValidationInstance<z.ZodObject<T>>} A new ValidationInstance
130
+ */
131
+ static make(data, rules) {
132
+ const schema = rules instanceof import_zod.z.ZodObject ? rules : import_zod.z.object(rules);
133
+ return new ValidationInstance(data, schema);
134
+ }
135
+ /**
136
+ * Validate data against rules and throw if it fails
137
+ *
138
+ * @param {unknown} data The data to validate
139
+ * @param {T | z.ZodObject<T>} rules The validation rules (Zod shape or object)
140
+ * @returns {z.infer<z.ZodObject<T>>} The validated data
141
+ * @throws {z.ZodError} If validation fails
142
+ */
143
+ static validate(data, rules) {
144
+ const schema = rules instanceof import_zod.z.ZodObject ? rules : import_zod.z.object(rules);
145
+ return schema.parse(data);
146
+ }
147
+ /**
148
+ * Compare two objects for equality
149
+ *
150
+ * @param {unknown} a First object
151
+ * @param {unknown} b Second object
152
+ * @returns {boolean} True if the objects are equal
153
+ */
154
+ static isEqual(a, b) {
155
+ return isEqual(a, b);
156
+ }
157
+ /**
158
+ * Get the differences between two objects
159
+ *
160
+ * @param {unknown} a First object
161
+ * @param {unknown} b Second object
162
+ * @returns {GenericRecord} An object containing the differences
163
+ */
164
+ static diff(a, b) {
165
+ return diff(a, b);
166
+ }
167
+ };
168
+ var ValidationInstance = class {
169
+ constructor(data, schema) {
170
+ this.data = data;
171
+ this.schema = schema;
172
+ this.result = this.schema.safeParse(this.data);
173
+ }
174
+ /**
175
+ * Check if validation failed
176
+ *
177
+ * @returns {boolean} True if validation failed
178
+ */
179
+ fails() {
180
+ return !this.result.success;
181
+ }
182
+ /**
183
+ * Check if validation passed
184
+ *
185
+ * @returns {boolean} True if validation passed
186
+ */
187
+ passes() {
188
+ return this.result.success;
189
+ }
190
+ /**
191
+ * Get validation errors
192
+ *
193
+ * @returns {Record<string, string[]>} An object with field names as keys and arrays of error messages as values
194
+ */
195
+ errors() {
196
+ if (this.result.success) {
197
+ return {};
198
+ }
199
+ const errors = {};
200
+ this.result.error.issues.forEach((err) => {
201
+ const path = err.path.join(".") || "root";
202
+ if (!errors[path]) {
203
+ errors[path] = [];
204
+ }
205
+ errors[path].push(err.message);
206
+ });
207
+ return errors;
208
+ }
209
+ /**
210
+ * Get the first error message for a given field
211
+ *
212
+ * @param {string} field The field name
213
+ * @returns {string | undefined} The first error message or undefined
214
+ */
215
+ firstError(field) {
216
+ const fieldErrors = this.errors()[field];
217
+ return fieldErrors ? fieldErrors[0] : void 0;
218
+ }
219
+ /**
220
+ * Get the validated data
221
+ *
222
+ * @returns {z.infer<T>} The validated data
223
+ * @throws {Error} If validation failed
224
+ */
225
+ validated() {
226
+ if (!this.result.success) {
227
+ throw new Error("Validation failed");
228
+ }
229
+ return this.result.data;
230
+ }
231
+ /**
232
+ * Get all error messages as a flat array
233
+ *
234
+ * @returns {string[]} An array of all error messages
235
+ */
236
+ allErrors() {
237
+ if (this.result.success) {
238
+ return [];
239
+ }
240
+ return this.result.error.issues.map((err) => `${err.path.join(".")}: ${err.message}`);
241
+ }
242
+ };
243
+ var validator = (data, rules) => {
244
+ return Validator.make(data, rules);
245
+ };
246
+ // Annotate the CommonJS export names for ESM import in node:
247
+ 0 && (module.exports = {
248
+ ValidationInstance,
249
+ Validator,
250
+ validator
251
+ });
@@ -0,0 +1,99 @@
1
+ import { z } from 'zod';
2
+ import { GenericRecord } from './types.cjs';
3
+
4
+ /**
5
+ * Validator class inspired by Laravel's Validator facade
6
+ * Uses Zod under the hood for robust runtime validation
7
+ */
8
+ declare class Validator {
9
+ /**
10
+ * Create a new validation instance
11
+ *
12
+ * @param {unknown} data The data to validate
13
+ * @param {T | z.ZodObject<T>} rules The validation rules (Zod shape or object)
14
+ * @returns {ValidationInstance<z.ZodObject<T>>} A new ValidationInstance
15
+ */
16
+ static make<T extends z.ZodRawShape>(data: unknown, rules: T | z.ZodObject<T>): ValidationInstance<z.ZodObject<T, z.core.$strip>>;
17
+ /**
18
+ * Validate data against rules and throw if it fails
19
+ *
20
+ * @param {unknown} data The data to validate
21
+ * @param {T | z.ZodObject<T>} rules The validation rules (Zod shape or object)
22
+ * @returns {z.infer<z.ZodObject<T>>} The validated data
23
+ * @throws {z.ZodError} If validation fails
24
+ */
25
+ static validate<T extends z.ZodRawShape>(data: unknown, rules: T | z.ZodObject<T>): z.core.$InferObjectOutput<T, {}>;
26
+ /**
27
+ * Compare two objects for equality
28
+ *
29
+ * @param {unknown} a First object
30
+ * @param {unknown} b Second object
31
+ * @returns {boolean} True if the objects are equal
32
+ */
33
+ static isEqual(a: unknown, b: unknown): boolean;
34
+ /**
35
+ * Get the differences between two objects
36
+ *
37
+ * @param {unknown} a First object
38
+ * @param {unknown} b Second object
39
+ * @returns {GenericRecord} An object containing the differences
40
+ */
41
+ static diff(a: unknown, b: unknown): GenericRecord;
42
+ }
43
+ /**
44
+ * Individual validation instance
45
+ */
46
+ declare class ValidationInstance<T extends z.ZodTypeAny> {
47
+ private data;
48
+ private schema;
49
+ private result;
50
+ constructor(data: unknown, schema: T);
51
+ /**
52
+ * Check if validation failed
53
+ *
54
+ * @returns {boolean} True if validation failed
55
+ */
56
+ fails(): boolean;
57
+ /**
58
+ * Check if validation passed
59
+ *
60
+ * @returns {boolean} True if validation passed
61
+ */
62
+ passes(): boolean;
63
+ /**
64
+ * Get validation errors
65
+ *
66
+ * @returns {Record<string, string[]>} An object with field names as keys and arrays of error messages as values
67
+ */
68
+ errors(): Record<string, string[]>;
69
+ /**
70
+ * Get the first error message for a given field
71
+ *
72
+ * @param {string} field The field name
73
+ * @returns {string | undefined} The first error message or undefined
74
+ */
75
+ firstError(field: string): string | undefined;
76
+ /**
77
+ * Get the validated data
78
+ *
79
+ * @returns {z.infer<T>} The validated data
80
+ * @throws {Error} If validation failed
81
+ */
82
+ validated(): z.infer<T>;
83
+ /**
84
+ * Get all error messages as a flat array
85
+ *
86
+ * @returns {string[]} An array of all error messages
87
+ */
88
+ allErrors(): string[];
89
+ }
90
+ /**
91
+ * Helper function to create a validator
92
+ *
93
+ * @param {unknown} data The data to validate
94
+ * @param {T | z.ZodObject<T>} rules The validation rules
95
+ * @returns {ValidationInstance<z.ZodObject<T>>} A new ValidationInstance
96
+ */
97
+ declare const validator: <T extends z.ZodRawShape>(data: unknown, rules: T | z.ZodObject<T>) => ValidationInstance<z.ZodObject<T, z.core.$strip>>;
98
+
99
+ export { ValidationInstance, Validator, validator };
@@ -0,0 +1,99 @@
1
+ import { z } from 'zod';
2
+ import { GenericRecord } from './types.js';
3
+
4
+ /**
5
+ * Validator class inspired by Laravel's Validator facade
6
+ * Uses Zod under the hood for robust runtime validation
7
+ */
8
+ declare class Validator {
9
+ /**
10
+ * Create a new validation instance
11
+ *
12
+ * @param {unknown} data The data to validate
13
+ * @param {T | z.ZodObject<T>} rules The validation rules (Zod shape or object)
14
+ * @returns {ValidationInstance<z.ZodObject<T>>} A new ValidationInstance
15
+ */
16
+ static make<T extends z.ZodRawShape>(data: unknown, rules: T | z.ZodObject<T>): ValidationInstance<z.ZodObject<T, z.core.$strip>>;
17
+ /**
18
+ * Validate data against rules and throw if it fails
19
+ *
20
+ * @param {unknown} data The data to validate
21
+ * @param {T | z.ZodObject<T>} rules The validation rules (Zod shape or object)
22
+ * @returns {z.infer<z.ZodObject<T>>} The validated data
23
+ * @throws {z.ZodError} If validation fails
24
+ */
25
+ static validate<T extends z.ZodRawShape>(data: unknown, rules: T | z.ZodObject<T>): z.core.$InferObjectOutput<T, {}>;
26
+ /**
27
+ * Compare two objects for equality
28
+ *
29
+ * @param {unknown} a First object
30
+ * @param {unknown} b Second object
31
+ * @returns {boolean} True if the objects are equal
32
+ */
33
+ static isEqual(a: unknown, b: unknown): boolean;
34
+ /**
35
+ * Get the differences between two objects
36
+ *
37
+ * @param {unknown} a First object
38
+ * @param {unknown} b Second object
39
+ * @returns {GenericRecord} An object containing the differences
40
+ */
41
+ static diff(a: unknown, b: unknown): GenericRecord;
42
+ }
43
+ /**
44
+ * Individual validation instance
45
+ */
46
+ declare class ValidationInstance<T extends z.ZodTypeAny> {
47
+ private data;
48
+ private schema;
49
+ private result;
50
+ constructor(data: unknown, schema: T);
51
+ /**
52
+ * Check if validation failed
53
+ *
54
+ * @returns {boolean} True if validation failed
55
+ */
56
+ fails(): boolean;
57
+ /**
58
+ * Check if validation passed
59
+ *
60
+ * @returns {boolean} True if validation passed
61
+ */
62
+ passes(): boolean;
63
+ /**
64
+ * Get validation errors
65
+ *
66
+ * @returns {Record<string, string[]>} An object with field names as keys and arrays of error messages as values
67
+ */
68
+ errors(): Record<string, string[]>;
69
+ /**
70
+ * Get the first error message for a given field
71
+ *
72
+ * @param {string} field The field name
73
+ * @returns {string | undefined} The first error message or undefined
74
+ */
75
+ firstError(field: string): string | undefined;
76
+ /**
77
+ * Get the validated data
78
+ *
79
+ * @returns {z.infer<T>} The validated data
80
+ * @throws {Error} If validation failed
81
+ */
82
+ validated(): z.infer<T>;
83
+ /**
84
+ * Get all error messages as a flat array
85
+ *
86
+ * @returns {string[]} An array of all error messages
87
+ */
88
+ allErrors(): string[];
89
+ }
90
+ /**
91
+ * Helper function to create a validator
92
+ *
93
+ * @param {unknown} data The data to validate
94
+ * @param {T | z.ZodObject<T>} rules The validation rules
95
+ * @returns {ValidationInstance<z.ZodObject<T>>} A new ValidationInstance
96
+ */
97
+ declare const validator: <T extends z.ZodRawShape>(data: unknown, rules: T | z.ZodObject<T>) => ValidationInstance<z.ZodObject<T, z.core.$strip>>;
98
+
99
+ export { ValidationInstance, Validator, validator };
@@ -0,0 +1,11 @@
1
+ import {
2
+ ValidationInstance,
3
+ Validator,
4
+ validator
5
+ } from "./chunk-IPP7PA6H.js";
6
+ import "./chunk-LDSWHSRX.js";
7
+ export {
8
+ ValidationInstance,
9
+ Validator,
10
+ validator
11
+ };
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/validators.ts
21
+ var validators_exports = {};
22
+ __export(validators_exports, {
23
+ blank: () => blank,
24
+ filled: () => filled,
25
+ isArray: () => isArray,
26
+ isBase64: () => isBase64,
27
+ isBlank: () => isBlank,
28
+ isBoolean: () => isBoolean,
29
+ isDate: () => isDate,
30
+ isEmail: () => isEmail,
31
+ isEmpty: () => isEmpty,
32
+ isEven: () => isEven,
33
+ isFalse: () => isFalse,
34
+ isFloat: () => isFloat,
35
+ isFunction: () => isFunction,
36
+ isInteger: () => isInteger,
37
+ isIp: () => isIp,
38
+ isJson: () => isJson,
39
+ isMacAddress: () => isMacAddress,
40
+ isNotEmpty: () => isNotEmpty,
41
+ isNull: () => isNull,
42
+ isNumber: () => isNumber,
43
+ isNumeric: () => isNumeric,
44
+ isObject: () => isObject,
45
+ isOdd: () => isOdd,
46
+ isPresent: () => isPresent,
47
+ isSet: () => isSet,
48
+ isString: () => isString,
49
+ isTrue: () => isTrue,
50
+ isUndefined: () => isUndefined,
51
+ isUrl: () => isUrl,
52
+ isUuid: () => isUuid
53
+ });
54
+ module.exports = __toCommonJS(validators_exports);
55
+ var isTrue = (value) => true === value;
56
+ var isFalse = (value) => false === value;
57
+ var isNull = (value) => null === value;
58
+ var isUndefined = (value) => void 0 === value;
59
+ var isSet = (value) => void 0 !== value && null !== value;
60
+ var isArray = (value) => Array.isArray(value);
61
+ var isObject = (value) => "object" === typeof value && null !== value && !Array.isArray(value);
62
+ var isString = (value) => "string" === typeof value;
63
+ var isNumber = (value) => "number" === typeof value && !isNaN(value);
64
+ var isInteger = (value) => Number.isInteger(value);
65
+ var isFloat = (value) => "number" === typeof value && !isNaN(value) && !Number.isInteger(value);
66
+ var isBoolean = (value) => "boolean" === typeof value;
67
+ var isFunction = (value) => "function" === typeof value;
68
+ var isDate = (value) => value instanceof Date && !isNaN(value.getTime());
69
+ var isNumeric = (value) => {
70
+ if ("number" === typeof value) {
71
+ return !isNaN(value) && isFinite(value);
72
+ }
73
+ if ("string" === typeof value) {
74
+ const num = Number(value.trim());
75
+ return "" !== value.trim() && !isNaN(num) && isFinite(num);
76
+ }
77
+ return false;
78
+ };
79
+ var isEmail = (value) => {
80
+ if ("string" !== typeof value) {
81
+ return false;
82
+ }
83
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
84
+ return emailRegex.test(value);
85
+ };
86
+ var isUrl = (value) => {
87
+ if ("string" !== typeof value) {
88
+ return false;
89
+ }
90
+ try {
91
+ new URL(value);
92
+ return true;
93
+ } catch {
94
+ return false;
95
+ }
96
+ };
97
+ var isEmpty = (value) => {
98
+ if (isNull(value) || isUndefined(value)) {
99
+ return true;
100
+ }
101
+ if (isString(value)) {
102
+ return 0 === value.trim().length;
103
+ }
104
+ if (isArray(value)) {
105
+ return 0 === value.length;
106
+ }
107
+ if (isObject(value)) {
108
+ return 0 === Object.keys(value).length;
109
+ }
110
+ if (isNumber(value)) {
111
+ return 0 === value;
112
+ }
113
+ if (isBoolean(value)) {
114
+ return isFalse(value);
115
+ }
116
+ return false;
117
+ };
118
+ var isNotEmpty = (value) => !isEmpty(value);
119
+ var isBlank = (value) => {
120
+ if (value == null) {
121
+ return true;
122
+ }
123
+ if ("string" === typeof value) {
124
+ return "" === value.trim();
125
+ }
126
+ return isEmpty(value);
127
+ };
128
+ var isPresent = (value) => !isBlank(value);
129
+ var filled = (value) => isPresent(value);
130
+ var blank = (value) => isBlank(value);
131
+ var isEven = (value) => {
132
+ return isNumber(value) && 0 === value % 2;
133
+ };
134
+ var isOdd = (value) => {
135
+ return isNumber(value) && 0 !== value % 2;
136
+ };
137
+ var isJson = (value) => {
138
+ if ("string" !== typeof value) {
139
+ return false;
140
+ }
141
+ try {
142
+ JSON.parse(value);
143
+ return true;
144
+ } catch {
145
+ return false;
146
+ }
147
+ };
148
+ var isBase64 = (value) => {
149
+ if ("string" !== typeof value) {
150
+ return false;
151
+ }
152
+ const base64Pattern = /^[A-Za-z0-9+/]*={0,2}$/;
153
+ if (0 !== value.length % 4) {
154
+ return false;
155
+ }
156
+ return base64Pattern.test(value);
157
+ };
158
+ var isMacAddress = (value) => {
159
+ if ("string" !== typeof value) {
160
+ return false;
161
+ }
162
+ const macPattern = /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/;
163
+ return macPattern.test(value);
164
+ };
165
+ var isUuid = (value) => {
166
+ if ("string" !== typeof value) {
167
+ return false;
168
+ }
169
+ return /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value);
170
+ };
171
+ var isIp = (value) => {
172
+ if ("string" !== typeof value) {
173
+ return false;
174
+ }
175
+ const ipv4 = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;
176
+ if (ipv4.test(value)) {
177
+ return value.split(".").every((part) => {
178
+ const n = Number(part);
179
+ return n >= 0 && n <= 255 && String(n) === part;
180
+ });
181
+ }
182
+ const ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|(([0-9a-fA-F]{1,4}:){0,7}:)|(:[0-9a-fA-F]{1,4}){1,7}|(([0-9a-fA-F]{1,4}:){1,7}:)|(([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4})|::1)$/;
183
+ return ipv6.test(value);
184
+ };
185
+ // Annotate the CommonJS export names for ESM import in node:
186
+ 0 && (module.exports = {
187
+ blank,
188
+ filled,
189
+ isArray,
190
+ isBase64,
191
+ isBlank,
192
+ isBoolean,
193
+ isDate,
194
+ isEmail,
195
+ isEmpty,
196
+ isEven,
197
+ isFalse,
198
+ isFloat,
199
+ isFunction,
200
+ isInteger,
201
+ isIp,
202
+ isJson,
203
+ isMacAddress,
204
+ isNotEmpty,
205
+ isNull,
206
+ isNumber,
207
+ isNumeric,
208
+ isObject,
209
+ isOdd,
210
+ isPresent,
211
+ isSet,
212
+ isString,
213
+ isTrue,
214
+ isUndefined,
215
+ isUrl,
216
+ isUuid
217
+ });