@cv-tec/validations 0.0.5
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/dist/custom-class-validators/is-bcrypt-hash.d.ts +6 -0
- package/dist/custom-class-validators/is-bcrypt-hash.js +43 -0
- package/dist/custom-class-validators/is-bcrypt-hash.js.map +1 -0
- package/dist/custom-class-validators/is-validate-email-domain.d.ts +5 -0
- package/dist/custom-class-validators/is-validate-email-domain.js +37 -0
- package/dist/custom-class-validators/is-validate-email-domain.js.map +1 -0
- package/dist/entities/cv-tec-user.d.ts +13 -0
- package/dist/entities/cv-tec-user.js +45 -0
- package/dist/entities/cv-tec-user.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/package.json +43 -0
@@ -0,0 +1,6 @@
|
|
1
|
+
import { ValidationOptions, ValidatorConstraintInterface } from 'class-validator';
|
2
|
+
export declare class IsBcryptHashConstraint implements ValidatorConstraintInterface {
|
3
|
+
validate(value: string): boolean;
|
4
|
+
defaultMessage(): string;
|
5
|
+
}
|
6
|
+
export declare function IsBcryptHash(validationOptions?: ValidationOptions): (object: object, propertyName: string) => void;
|
@@ -0,0 +1,43 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
9
|
+
exports.IsBcryptHashConstraint = void 0;
|
10
|
+
exports.IsBcryptHash = IsBcryptHash;
|
11
|
+
const class_validator_1 = require("class-validator");
|
12
|
+
let IsBcryptHashConstraint = class IsBcryptHashConstraint {
|
13
|
+
validate(value) {
|
14
|
+
if (typeof value !== 'string') {
|
15
|
+
return false;
|
16
|
+
}
|
17
|
+
// Bcrypt hashes typically:
|
18
|
+
// 1. Are 60 characters long
|
19
|
+
// 2. Start with '$2a$', '$2b$', or '$2y$' (algorithm identifiers)
|
20
|
+
// 3. Have a specific format with cost factor and salt
|
21
|
+
const bcryptRegex = /^\$2[aby]\$[0-9]{2}\$[A-Za-z0-9./]{53}$/;
|
22
|
+
return bcryptRegex.test(value);
|
23
|
+
}
|
24
|
+
defaultMessage() {
|
25
|
+
return 'The string is not a valid bcrypt hash';
|
26
|
+
}
|
27
|
+
};
|
28
|
+
exports.IsBcryptHashConstraint = IsBcryptHashConstraint;
|
29
|
+
exports.IsBcryptHashConstraint = IsBcryptHashConstraint = __decorate([
|
30
|
+
(0, class_validator_1.ValidatorConstraint)({ name: 'isBcryptHash', async: false })
|
31
|
+
], IsBcryptHashConstraint);
|
32
|
+
function IsBcryptHash(validationOptions) {
|
33
|
+
return function (object, propertyName) {
|
34
|
+
(0, class_validator_1.registerDecorator)({
|
35
|
+
target: object.constructor,
|
36
|
+
propertyName: propertyName,
|
37
|
+
options: validationOptions,
|
38
|
+
constraints: [],
|
39
|
+
validator: IsBcryptHashConstraint,
|
40
|
+
});
|
41
|
+
};
|
42
|
+
}
|
43
|
+
//# sourceMappingURL=is-bcrypt-hash.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"is-bcrypt-hash.js","sourceRoot":"","sources":["../../src/custom-class-validators/is-bcrypt-hash.ts"],"names":[],"mappings":";;;;;;;;;AA2BA,oCAUC;AArCD,qDAKwB;AAGjB,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACjC,QAAQ,CAAC,KAAa;QACpB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAA;QACd,CAAC;QAED,2BAA2B;QAC3B,4BAA4B;QAC5B,kEAAkE;QAClE,sDAAsD;QACtD,MAAM,WAAW,GAAG,yCAAyC,CAAA;QAC7D,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAChC,CAAC;IAED,cAAc;QACZ,OAAO,uCAAuC,CAAA;IAChD,CAAC;CACF,CAAA;AAjBY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,qCAAmB,EAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;GAC/C,sBAAsB,CAiBlC;AAED,SAAgB,YAAY,CAAC,iBAAqC;IAChE,OAAO,UAAU,MAAc,EAAE,YAAoB;QACnD,IAAA,mCAAiB,EAAC;YAChB,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,OAAO,EAAE,iBAAiB;YAC1B,WAAW,EAAE,EAAE;YACf,SAAS,EAAE,sBAAsB;SAClC,CAAC,CAAA;IACJ,CAAC,CAAA;AACH,CAAC"}
|
@@ -0,0 +1,5 @@
|
|
1
|
+
import { ValidatorConstraintInterface, ValidationArguments } from 'class-validator';
|
2
|
+
export declare class IsValidEmailDomainContrain implements ValidatorConstraintInterface {
|
3
|
+
validate(text: string, args: ValidationArguments): Promise<boolean>;
|
4
|
+
defaultMessage(args: ValidationArguments): string;
|
5
|
+
}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
9
|
+
exports.IsValidEmailDomainContrain = void 0;
|
10
|
+
const class_validator_1 = require("class-validator");
|
11
|
+
//import disposableEmailDetector from 'disposable-email-detector'
|
12
|
+
let IsValidEmailDomainContrain = class IsValidEmailDomainContrain {
|
13
|
+
async validate(text, args) {
|
14
|
+
//return (await disposableEmailDetector(text)) === false
|
15
|
+
return true;
|
16
|
+
}
|
17
|
+
defaultMessage(args) {
|
18
|
+
// here you can provide default error message if validation failed
|
19
|
+
return 'EMAIL.INVALID';
|
20
|
+
}
|
21
|
+
};
|
22
|
+
exports.IsValidEmailDomainContrain = IsValidEmailDomainContrain;
|
23
|
+
exports.IsValidEmailDomainContrain = IsValidEmailDomainContrain = __decorate([
|
24
|
+
(0, class_validator_1.ValidatorConstraint)({ name: 'IS_VALID_EMAIL_DOMAIN', async: true })
|
25
|
+
], IsValidEmailDomainContrain);
|
26
|
+
// export function IsValidEmailDomain(validationOptions?: ValidationOptions) {
|
27
|
+
// return function (object: object, propertyName: string) {
|
28
|
+
// registerDecorator({
|
29
|
+
// target: object.constructor,
|
30
|
+
// propertyName: propertyName,
|
31
|
+
// options: validationOptions,
|
32
|
+
// constraints: [],
|
33
|
+
// validator: IsValidEmailDomainContrain,
|
34
|
+
// })
|
35
|
+
// }
|
36
|
+
// }
|
37
|
+
//# sourceMappingURL=is-validate-email-domain.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"is-validate-email-domain.js","sourceRoot":"","sources":["../../src/custom-class-validators/is-validate-email-domain.ts"],"names":[],"mappings":";;;;;;;;;AAAA,qDAIwB;AACxB,iEAAiE;AAG1D,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IACrC,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,IAAyB;QACpD,wDAAwD;QACxD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,cAAc,CAAC,IAAyB;QACtC,kEAAkE;QAClE,OAAO,eAAe,CAAA;IACxB,CAAC;CACF,CAAA;AAVY,gEAA0B;qCAA1B,0BAA0B;IADtC,IAAA,qCAAmB,EAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;GACvD,0BAA0B,CAUtC;AAED,8EAA8E;AAC9E,6DAA6D;AAC7D,0BAA0B;AAC1B,oCAAoC;AACpC,oCAAoC;AACpC,oCAAoC;AACpC,yBAAyB;AACzB,+CAA+C;AAC/C,SAAS;AACT,MAAM;AACN,IAAI"}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
export interface ICvTecUser {
|
2
|
+
firstname: string;
|
3
|
+
lastname: string;
|
4
|
+
email: string;
|
5
|
+
password: string;
|
6
|
+
}
|
7
|
+
export declare class CvTecUser {
|
8
|
+
firstname: string;
|
9
|
+
lastname: string;
|
10
|
+
email: string;
|
11
|
+
password: string;
|
12
|
+
constructor(user: ICvTecUser);
|
13
|
+
}
|
@@ -0,0 +1,45 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
10
|
+
};
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
+
exports.CvTecUser = void 0;
|
13
|
+
const class_validator_1 = require("class-validator");
|
14
|
+
// import { IsValidEmailDomain } from '../custom-class-validators/is-validate-email-domain'
|
15
|
+
const is_bcrypt_hash_1 = require("../custom-class-validators/is-bcrypt-hash");
|
16
|
+
class CvTecUser {
|
17
|
+
constructor(user) {
|
18
|
+
Object.entries(user).forEach((e) => (this[e[0]] = e[1]));
|
19
|
+
}
|
20
|
+
}
|
21
|
+
exports.CvTecUser = CvTecUser;
|
22
|
+
__decorate([
|
23
|
+
(0, class_validator_1.IsNotEmpty)(),
|
24
|
+
(0, class_validator_1.MinLength)(2),
|
25
|
+
(0, class_validator_1.MaxLength)(20),
|
26
|
+
__metadata("design:type", String)
|
27
|
+
], CvTecUser.prototype, "firstname", void 0);
|
28
|
+
__decorate([
|
29
|
+
(0, class_validator_1.IsNotEmpty)(),
|
30
|
+
(0, class_validator_1.MinLength)(2),
|
31
|
+
(0, class_validator_1.MaxLength)(20),
|
32
|
+
__metadata("design:type", String)
|
33
|
+
], CvTecUser.prototype, "lastname", void 0);
|
34
|
+
__decorate([
|
35
|
+
(0, class_validator_1.IsEmail)()
|
36
|
+
//@IsValidEmailDomain()
|
37
|
+
,
|
38
|
+
__metadata("design:type", String)
|
39
|
+
], CvTecUser.prototype, "email", void 0);
|
40
|
+
__decorate([
|
41
|
+
(0, class_validator_1.IsNotEmpty)(),
|
42
|
+
(0, is_bcrypt_hash_1.IsBcryptHash)(),
|
43
|
+
__metadata("design:type", String)
|
44
|
+
], CvTecUser.prototype, "password", void 0);
|
45
|
+
//# sourceMappingURL=cv-tec-user.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"cv-tec-user.js","sourceRoot":"","sources":["../../src/entities/cv-tec-user.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA2E;AAC3E,2FAA2F;AAC3F,8EAAwE;AAQxE,MAAa,SAAS;IAuBpB,YAAY,IAAgB;QAC1B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1D,CAAC;CACF;AA1BD,8BA0BC;AAtBC;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,EAAC,CAAC,CAAC;IACZ,IAAA,2BAAS,EAAC,EAAE,CAAC;;4CACI;AAKlB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,EAAC,CAAC,CAAC;IACZ,IAAA,2BAAS,EAAC,EAAE,CAAC;;2CACG;AAIjB;IAFC,IAAA,yBAAO,GAAE;IACV,uBAAuB;;;wCACT;AAQd;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,6BAAY,GAAE;;2CACE"}
|
package/dist/index.d.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export { CvTecUser, ICvTecUser } from './entities/cv-tec-user';
|
package/dist/index.js
ADDED
@@ -0,0 +1,6 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.CvTecUser = void 0;
|
4
|
+
var cv_tec_user_1 = require("./entities/cv-tec-user");
|
5
|
+
Object.defineProperty(exports, "CvTecUser", { enumerable: true, get: function () { return cv_tec_user_1.CvTecUser; } });
|
6
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,sDAA8D;AAArD,wGAAA,SAAS,OAAA"}
|
package/package.json
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
{
|
2
|
+
"name": "@cv-tec/validations",
|
3
|
+
"version": "0.0.5",
|
4
|
+
"private": false,
|
5
|
+
"main": "./dist/index.js",
|
6
|
+
"types": "./dist/index.d.ts",
|
7
|
+
"files": [
|
8
|
+
"dist"
|
9
|
+
],
|
10
|
+
"publishConfig": {
|
11
|
+
"access": "public"
|
12
|
+
},
|
13
|
+
"scripts": {
|
14
|
+
"dev": "nodemon",
|
15
|
+
"build": "tsc --project tsconfig.build.json && tsc-alias -p tsconfig.build.json",
|
16
|
+
"build:dev": "nodemon --config nodemon.dev.json",
|
17
|
+
"publish:patch": "npm version patch && npm run build && npm publish --acess=public && git push && git push --tag",
|
18
|
+
"publish:minor": "npm version minor && npm run build && npm publish --acess=public && git push && git push --tag",
|
19
|
+
"publish:major": "npm version major && npm run build && npm publish --acess=public && git push && git push --tag"
|
20
|
+
},
|
21
|
+
"author": "",
|
22
|
+
"license": "ISC",
|
23
|
+
"description": "",
|
24
|
+
"devDependencies": {
|
25
|
+
"@types/lodash": "^4.17.14",
|
26
|
+
"@types/node": "^22.8.0",
|
27
|
+
"@types/uuid": "^10.0.0",
|
28
|
+
"nodemon": "^3.1.7",
|
29
|
+
"ts-node": "^10.9.2",
|
30
|
+
"ts-patch": "^3.3.0",
|
31
|
+
"tsc-alias": "^1.8.10",
|
32
|
+
"tsconfig-paths": "^4.2.0",
|
33
|
+
"typescript": "^5.6.3",
|
34
|
+
"typescript-transform-paths": "^3.5.2"
|
35
|
+
},
|
36
|
+
"dependencies": {
|
37
|
+
"ajv": "^8.17.1",
|
38
|
+
"class-validator": "^0.14.1",
|
39
|
+
"disposable-email-detector": "^3.0.0",
|
40
|
+
"lodash": "^4.17.21",
|
41
|
+
"uuid": "^11.0.5"
|
42
|
+
}
|
43
|
+
}
|