@xbg.solutions/utils-validation 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/lib/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Validation utilities barrel export
3
+ */
4
+ export { EMAIL_REGEX, PHONE_REGEX, UID_REGEX, COUNTRY_CODE_REGEX, validateEmail, validatePhone, validateIANATimezone, validateCurrency, validateLength, validateUID, validateCountryCode, validateURL, validatePositiveNumber, validateNonNegativeNumber, validateFutureDate, validateEnum, } from './validators';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,EACX,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,WAAW,EACX,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,YAAY,GACb,MAAM,cAAc,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * Validation utilities barrel export
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.validateEnum = exports.validateFutureDate = exports.validateNonNegativeNumber = exports.validatePositiveNumber = exports.validateURL = exports.validateCountryCode = exports.validateUID = exports.validateLength = exports.validateCurrency = exports.validateIANATimezone = exports.validatePhone = exports.validateEmail = exports.COUNTRY_CODE_REGEX = exports.UID_REGEX = exports.PHONE_REGEX = exports.EMAIL_REGEX = void 0;
7
+ var validators_1 = require("./validators");
8
+ Object.defineProperty(exports, "EMAIL_REGEX", { enumerable: true, get: function () { return validators_1.EMAIL_REGEX; } });
9
+ Object.defineProperty(exports, "PHONE_REGEX", { enumerable: true, get: function () { return validators_1.PHONE_REGEX; } });
10
+ Object.defineProperty(exports, "UID_REGEX", { enumerable: true, get: function () { return validators_1.UID_REGEX; } });
11
+ Object.defineProperty(exports, "COUNTRY_CODE_REGEX", { enumerable: true, get: function () { return validators_1.COUNTRY_CODE_REGEX; } });
12
+ Object.defineProperty(exports, "validateEmail", { enumerable: true, get: function () { return validators_1.validateEmail; } });
13
+ Object.defineProperty(exports, "validatePhone", { enumerable: true, get: function () { return validators_1.validatePhone; } });
14
+ Object.defineProperty(exports, "validateIANATimezone", { enumerable: true, get: function () { return validators_1.validateIANATimezone; } });
15
+ Object.defineProperty(exports, "validateCurrency", { enumerable: true, get: function () { return validators_1.validateCurrency; } });
16
+ Object.defineProperty(exports, "validateLength", { enumerable: true, get: function () { return validators_1.validateLength; } });
17
+ Object.defineProperty(exports, "validateUID", { enumerable: true, get: function () { return validators_1.validateUID; } });
18
+ Object.defineProperty(exports, "validateCountryCode", { enumerable: true, get: function () { return validators_1.validateCountryCode; } });
19
+ Object.defineProperty(exports, "validateURL", { enumerable: true, get: function () { return validators_1.validateURL; } });
20
+ Object.defineProperty(exports, "validatePositiveNumber", { enumerable: true, get: function () { return validators_1.validatePositiveNumber; } });
21
+ Object.defineProperty(exports, "validateNonNegativeNumber", { enumerable: true, get: function () { return validators_1.validateNonNegativeNumber; } });
22
+ Object.defineProperty(exports, "validateFutureDate", { enumerable: true, get: function () { return validators_1.validateFutureDate; } });
23
+ Object.defineProperty(exports, "validateEnum", { enumerable: true, get: function () { return validators_1.validateEnum; } });
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,2CAiBsB;AAhBpB,yGAAA,WAAW,OAAA;AACX,yGAAA,WAAW,OAAA;AACX,uGAAA,SAAS,OAAA;AACT,gHAAA,kBAAkB,OAAA;AAClB,2GAAA,aAAa,OAAA;AACb,2GAAA,aAAa,OAAA;AACb,kHAAA,oBAAoB,OAAA;AACpB,8GAAA,gBAAgB,OAAA;AAChB,4GAAA,cAAc,OAAA;AACd,yGAAA,WAAW,OAAA;AACX,iHAAA,mBAAmB,OAAA;AACnB,yGAAA,WAAW,OAAA;AACX,oHAAA,sBAAsB,OAAA;AACtB,uHAAA,yBAAyB,OAAA;AACzB,gHAAA,kBAAkB,OAAA;AAClB,0GAAA,YAAY,OAAA"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Validation Utilities
3
+ *
4
+ * Reusable validation functions for common data types.
5
+ * All validators return boolean (true = valid, false = invalid).
6
+ */
7
+ /**
8
+ * Email validation (RFC 5322 simplified)
9
+ */
10
+ export declare const EMAIL_REGEX: RegExp;
11
+ export declare function validateEmail(email: string): boolean;
12
+ /**
13
+ * Phone number validation (E.164 format)
14
+ * Format: +[country code][number] (e.g., +61412345678)
15
+ * Length: 7-15 digits total (minimum viable phone number)
16
+ */
17
+ export declare const PHONE_REGEX: RegExp;
18
+ export declare function validatePhone(phone: string): boolean;
19
+ /**
20
+ * IANA timezone validation
21
+ * Validates against the IANA timezone database
22
+ * Requires proper format (e.g., "Australia/Sydney", not "EST")
23
+ */
24
+ export declare function validateIANATimezone(timezone: string): boolean;
25
+ export declare function validateCurrency(code: string): boolean;
26
+ /**
27
+ * String length validation
28
+ */
29
+ export declare function validateLength(str: string, min: number, max: number): boolean;
30
+ /**
31
+ * UID format validation (Firestore auto-generated IDs)
32
+ * Format: 20+ alphanumeric characters, hyphens, underscores
33
+ */
34
+ export declare const UID_REGEX: RegExp;
35
+ export declare function validateUID(uid: string): boolean;
36
+ /**
37
+ * ISO 3166-1 alpha-2 country code validation
38
+ * Format: Two uppercase letters (e.g., AU, US, GB)
39
+ */
40
+ export declare const COUNTRY_CODE_REGEX: RegExp;
41
+ export declare function validateCountryCode(code: string): boolean;
42
+ /**
43
+ * URL validation (basic)
44
+ */
45
+ export declare function validateURL(url: string): boolean;
46
+ /**
47
+ * Positive number validation
48
+ */
49
+ export declare function validatePositiveNumber(value: unknown): boolean;
50
+ /**
51
+ * Non-negative number validation (>= 0)
52
+ */
53
+ export declare function validateNonNegativeNumber(value: unknown): boolean;
54
+ /**
55
+ * Date validation (not in the past)
56
+ */
57
+ export declare function validateFutureDate(date: Date): boolean;
58
+ /**
59
+ * Enum validation helper
60
+ */
61
+ export declare function validateEnum<T extends string>(value: string, allowedValues: readonly T[]): value is T;
62
+ //# sourceMappingURL=validators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,eAAO,MAAM,WAAW,QAA+B,CAAC;AAExD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKpD;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,QAAuB,CAAC;AAEhD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKpD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAkB9D;AAmBD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKtD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,GACV,OAAO,CAMT;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,QAAyB,CAAC;AAEhD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAKhD;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAAe,CAAC;AAE/C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKzD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAWhD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAK9D;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKjE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAKtD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAC3C,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,SAAS,CAAC,EAAE,GAC1B,KAAK,IAAI,CAAC,CAEZ"}
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ /**
3
+ * Validation Utilities
4
+ *
5
+ * Reusable validation functions for common data types.
6
+ * All validators return boolean (true = valid, false = invalid).
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.COUNTRY_CODE_REGEX = exports.UID_REGEX = exports.PHONE_REGEX = exports.EMAIL_REGEX = void 0;
10
+ exports.validateEmail = validateEmail;
11
+ exports.validatePhone = validatePhone;
12
+ exports.validateIANATimezone = validateIANATimezone;
13
+ exports.validateCurrency = validateCurrency;
14
+ exports.validateLength = validateLength;
15
+ exports.validateUID = validateUID;
16
+ exports.validateCountryCode = validateCountryCode;
17
+ exports.validateURL = validateURL;
18
+ exports.validatePositiveNumber = validatePositiveNumber;
19
+ exports.validateNonNegativeNumber = validateNonNegativeNumber;
20
+ exports.validateFutureDate = validateFutureDate;
21
+ exports.validateEnum = validateEnum;
22
+ /**
23
+ * Email validation (RFC 5322 simplified)
24
+ */
25
+ exports.EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
26
+ function validateEmail(email) {
27
+ if (!email || typeof email !== 'string') {
28
+ return false;
29
+ }
30
+ return exports.EMAIL_REGEX.test(email.trim());
31
+ }
32
+ /**
33
+ * Phone number validation (E.164 format)
34
+ * Format: +[country code][number] (e.g., +61412345678)
35
+ * Length: 7-15 digits total (minimum viable phone number)
36
+ */
37
+ exports.PHONE_REGEX = /^\+?[1-9]\d{6,14}$/;
38
+ function validatePhone(phone) {
39
+ if (!phone || typeof phone !== 'string') {
40
+ return false;
41
+ }
42
+ return exports.PHONE_REGEX.test(phone.trim());
43
+ }
44
+ /**
45
+ * IANA timezone validation
46
+ * Validates against the IANA timezone database
47
+ * Requires proper format (e.g., "Australia/Sydney", not "EST")
48
+ */
49
+ function validateIANATimezone(timezone) {
50
+ if (!timezone || typeof timezone !== 'string') {
51
+ return false;
52
+ }
53
+ // Require proper IANA format (must contain slash: Continent/City)
54
+ // Reject abbreviations like EST, GMT, UTC offsets like GMT+10
55
+ if (!timezone.includes('/') && timezone !== 'UTC') {
56
+ return false;
57
+ }
58
+ try {
59
+ // Use Intl.DateTimeFormat to validate timezone
60
+ Intl.DateTimeFormat(undefined, { timeZone: timezone });
61
+ return true;
62
+ }
63
+ catch (_a) {
64
+ return false;
65
+ }
66
+ }
67
+ /**
68
+ * Currency code validation (ISO 4217)
69
+ * Common currencies only for MVP
70
+ */
71
+ const VALID_CURRENCIES = new Set([
72
+ 'AUD', // Australian Dollar
73
+ 'USD', // US Dollar
74
+ 'EUR', // Euro
75
+ 'GBP', // British Pound
76
+ 'JPY', // Japanese Yen
77
+ 'CNY', // Chinese Yuan
78
+ 'INR', // Indian Rupee
79
+ 'CAD', // Canadian Dollar
80
+ 'NZD', // New Zealand Dollar
81
+ 'SGD', // Singapore Dollar
82
+ ]);
83
+ function validateCurrency(code) {
84
+ if (!code || typeof code !== 'string') {
85
+ return false;
86
+ }
87
+ return VALID_CURRENCIES.has(code.toUpperCase());
88
+ }
89
+ /**
90
+ * String length validation
91
+ */
92
+ function validateLength(str, min, max) {
93
+ if (!str || typeof str !== 'string') {
94
+ return false;
95
+ }
96
+ const length = str.trim().length;
97
+ return length >= min && length <= max;
98
+ }
99
+ /**
100
+ * UID format validation (Firestore auto-generated IDs)
101
+ * Format: 20+ alphanumeric characters, hyphens, underscores
102
+ */
103
+ exports.UID_REGEX = /^[a-zA-Z0-9_-]{20,}$/;
104
+ function validateUID(uid) {
105
+ if (!uid || typeof uid !== 'string') {
106
+ return false;
107
+ }
108
+ return exports.UID_REGEX.test(uid);
109
+ }
110
+ /**
111
+ * ISO 3166-1 alpha-2 country code validation
112
+ * Format: Two uppercase letters (e.g., AU, US, GB)
113
+ */
114
+ exports.COUNTRY_CODE_REGEX = /^[A-Z]{2}$/;
115
+ function validateCountryCode(code) {
116
+ if (!code || typeof code !== 'string') {
117
+ return false;
118
+ }
119
+ return exports.COUNTRY_CODE_REGEX.test(code.toUpperCase());
120
+ }
121
+ /**
122
+ * URL validation (basic)
123
+ */
124
+ function validateURL(url) {
125
+ if (!url || typeof url !== 'string') {
126
+ return false;
127
+ }
128
+ try {
129
+ const parsed = new URL(url);
130
+ return parsed.protocol === 'http:' || parsed.protocol === 'https:';
131
+ }
132
+ catch (_a) {
133
+ return false;
134
+ }
135
+ }
136
+ /**
137
+ * Positive number validation
138
+ */
139
+ function validatePositiveNumber(value) {
140
+ if (typeof value !== 'number') {
141
+ return false;
142
+ }
143
+ return value > 0 && !isNaN(value) && isFinite(value);
144
+ }
145
+ /**
146
+ * Non-negative number validation (>= 0)
147
+ */
148
+ function validateNonNegativeNumber(value) {
149
+ if (typeof value !== 'number') {
150
+ return false;
151
+ }
152
+ return value >= 0 && !isNaN(value) && isFinite(value);
153
+ }
154
+ /**
155
+ * Date validation (not in the past)
156
+ */
157
+ function validateFutureDate(date) {
158
+ if (!(date instanceof Date) || isNaN(date.getTime())) {
159
+ return false;
160
+ }
161
+ return date.getTime() > Date.now();
162
+ }
163
+ /**
164
+ * Enum validation helper
165
+ */
166
+ function validateEnum(value, allowedValues) {
167
+ return allowedValues.includes(value);
168
+ }
169
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "@xbg.solutions/utils-validation",
3
+ "version": "1.0.0",
4
+ "description": "Input validation with Joi and express-validator",
5
+ "main": "lib/index.js",
6
+ "types": "lib/index.d.ts",
7
+ "files": ["lib"],
8
+ "scripts": {
9
+ "build": "tsc",
10
+ "build:watch": "tsc --watch",
11
+ "clean": "rm -rf lib",
12
+ "prepublishOnly": "npm run build"
13
+ },
14
+ "dependencies": {"joi": "^17.11.0", "express-validator": "^7.0.1"},
15
+ "devDependencies": {"@types/node": "^20.11.0", "typescript": "^5.3.3"},
16
+ "engines": {
17
+ "node": "22"
18
+ },
19
+ "publishConfig": {
20
+ "access": "public"
21
+ }
22
+ }