@synapseagency/shared-kernel 0.0.1
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/index.d.ts +1 -0
- package/index.js +5 -0
- package/index.js.map +1 -0
- package/package.json +27 -0
- package/src/index.d.ts +3 -0
- package/src/index.js +7 -0
- package/src/index.js.map +1 -0
- package/src/lib/application/application.service.d.ts +11 -0
- package/src/lib/application/application.service.js +50 -0
- package/src/lib/application/application.service.js.map +1 -0
- package/src/lib/application/authenticated-actor.type.d.ts +5 -0
- package/src/lib/application/authenticated-actor.type.js +3 -0
- package/src/lib/application/authenticated-actor.type.js.map +1 -0
- package/src/lib/application/cqrs/index.d.ts +1 -0
- package/src/lib/application/cqrs/index.js +5 -0
- package/src/lib/application/cqrs/index.js.map +1 -0
- package/src/lib/application/cqrs/query/index.d.ts +5 -0
- package/src/lib/application/cqrs/query/index.js +9 -0
- package/src/lib/application/cqrs/query/index.js.map +1 -0
- package/src/lib/application/cqrs/query/pagination-output.d.ts +11 -0
- package/src/lib/application/cqrs/query/pagination-output.js +16 -0
- package/src/lib/application/cqrs/query/pagination-output.js.map +1 -0
- package/src/lib/application/cqrs/query/query.interface.d.ts +9 -0
- package/src/lib/application/cqrs/query/query.interface.js +3 -0
- package/src/lib/application/cqrs/query/query.interface.js.map +1 -0
- package/src/lib/application/cqrs/query/search-input.d.ts +8 -0
- package/src/lib/application/cqrs/query/search-input.js +3 -0
- package/src/lib/application/cqrs/query/search-input.js.map +1 -0
- package/src/lib/application/cqrs/query/search-params.d.ts +25 -0
- package/src/lib/application/cqrs/query/search-params.js +82 -0
- package/src/lib/application/cqrs/query/search-params.js.map +1 -0
- package/src/lib/application/cqrs/query/search-result.d.ts +22 -0
- package/src/lib/application/cqrs/query/search-result.js +28 -0
- package/src/lib/application/cqrs/query/search-result.js.map +1 -0
- package/src/lib/application/domain-event-handler.interface.d.ts +7 -0
- package/src/lib/application/domain-event-handler.interface.js +3 -0
- package/src/lib/application/domain-event-handler.interface.js.map +1 -0
- package/src/lib/application/email.gateway.interface.d.ts +3 -0
- package/src/lib/application/email.gateway.interface.js +3 -0
- package/src/lib/application/email.gateway.interface.js.map +1 -0
- package/src/lib/application/file-storage.gateway.interface.d.ts +4 -0
- package/src/lib/application/file-storage.gateway.interface.js +3 -0
- package/src/lib/application/file-storage.gateway.interface.js.map +1 -0
- package/src/lib/application/index.d.ts +9 -0
- package/src/lib/application/index.js +13 -0
- package/src/lib/application/index.js.map +1 -0
- package/src/lib/application/message-broker.interface.d.ts +4 -0
- package/src/lib/application/message-broker.interface.js +3 -0
- package/src/lib/application/message-broker.interface.js.map +1 -0
- package/src/lib/application/tenant.gateway.d.ts +5 -0
- package/src/lib/application/tenant.gateway.js +3 -0
- package/src/lib/application/tenant.gateway.js.map +1 -0
- package/src/lib/application/use-case.interface.d.ts +3 -0
- package/src/lib/application/use-case.interface.js +3 -0
- package/src/lib/application/use-case.interface.js.map +1 -0
- package/src/lib/domain/aggregate-root.d.ts +13 -0
- package/src/lib/domain/aggregate-root.js +29 -0
- package/src/lib/domain/aggregate-root.js.map +1 -0
- package/src/lib/domain/entity.d.ts +7 -0
- package/src/lib/domain/entity.js +9 -0
- package/src/lib/domain/entity.js.map +1 -0
- package/src/lib/domain/errors/already-exists-in.error.d.ts +5 -0
- package/src/lib/domain/errors/already-exists-in.error.js +11 -0
- package/src/lib/domain/errors/already-exists-in.error.js.map +1 -0
- package/src/lib/domain/errors/already-exists.error.d.ts +5 -0
- package/src/lib/domain/errors/already-exists.error.js +21 -0
- package/src/lib/domain/errors/already-exists.error.js.map +1 -0
- package/src/lib/domain/errors/forbidden.error.d.ts +3 -0
- package/src/lib/domain/errors/forbidden.error.js +11 -0
- package/src/lib/domain/errors/forbidden.error.js.map +1 -0
- package/src/lib/domain/errors/index.d.ts +6 -0
- package/src/lib/domain/errors/index.js +10 -0
- package/src/lib/domain/errors/index.js.map +1 -0
- package/src/lib/domain/errors/invalid-argument.error.d.ts +3 -0
- package/src/lib/domain/errors/invalid-argument.error.js +11 -0
- package/src/lib/domain/errors/invalid-argument.error.js.map +1 -0
- package/src/lib/domain/errors/not-found.error.d.ts +5 -0
- package/src/lib/domain/errors/not-found.error.js +22 -0
- package/src/lib/domain/errors/not-found.error.js.map +1 -0
- package/src/lib/domain/errors/permision-denied.error.d.ts +6 -0
- package/src/lib/domain/errors/permision-denied.error.js +20 -0
- package/src/lib/domain/errors/permision-denied.error.js.map +1 -0
- package/src/lib/domain/events/domain-event-mediator.d.ts +11 -0
- package/src/lib/domain/events/domain-event-mediator.js +52 -0
- package/src/lib/domain/events/domain-event-mediator.js.map +1 -0
- package/src/lib/domain/events/domain-event.interface.d.ts +13 -0
- package/src/lib/domain/events/domain-event.interface.js +3 -0
- package/src/lib/domain/events/domain-event.interface.js.map +1 -0
- package/src/lib/domain/events/gateways/event.gateway.d.ts +3 -0
- package/src/lib/domain/events/gateways/event.gateway.js +3 -0
- package/src/lib/domain/events/gateways/event.gateway.js.map +1 -0
- package/src/lib/domain/events/gateways/index.d.ts +1 -0
- package/src/lib/domain/events/gateways/index.js +5 -0
- package/src/lib/domain/events/gateways/index.js.map +1 -0
- package/src/lib/domain/events/index.d.ts +3 -0
- package/src/lib/domain/events/index.js +7 -0
- package/src/lib/domain/events/index.js.map +1 -0
- package/src/lib/domain/index.d.ts +9 -0
- package/src/lib/domain/index.js +13 -0
- package/src/lib/domain/index.js.map +1 -0
- package/src/lib/domain/plate-validator.d.ts +7 -0
- package/src/lib/domain/plate-validator.js +35 -0
- package/src/lib/domain/plate-validator.js.map +1 -0
- package/src/lib/domain/repository/index.d.ts +1 -0
- package/src/lib/domain/repository/index.js +5 -0
- package/src/lib/domain/repository/index.js.map +1 -0
- package/src/lib/domain/repository/repository-interface.d.ts +16 -0
- package/src/lib/domain/repository/repository-interface.js +3 -0
- package/src/lib/domain/repository/repository-interface.js.map +1 -0
- package/src/lib/domain/unit-of-work.interface.d.ts +9 -0
- package/src/lib/domain/unit-of-work.interface.js +3 -0
- package/src/lib/domain/unit-of-work.interface.js.map +1 -0
- package/src/lib/domain/validators/class-validator-fields.d.ts +5 -0
- package/src/lib/domain/validators/class-validator-fields.js +24 -0
- package/src/lib/domain/validators/class-validator-fields.js.map +1 -0
- package/src/lib/domain/validators/index.d.ts +6 -0
- package/src/lib/domain/validators/index.js +11 -0
- package/src/lib/domain/validators/index.js.map +1 -0
- package/src/lib/domain/validators/notification.d.ts +10 -0
- package/src/lib/domain/validators/notification.js +54 -0
- package/src/lib/domain/validators/notification.js.map +1 -0
- package/src/lib/domain/validators/validation.error.d.ts +19 -0
- package/src/lib/domain/validators/validation.error.js +43 -0
- package/src/lib/domain/validators/validation.error.js.map +1 -0
- package/src/lib/domain/validators/validator-fields-interface.d.ts +7 -0
- package/src/lib/domain/validators/validator-fields-interface.js +3 -0
- package/src/lib/domain/validators/validator-fields-interface.js.map +1 -0
- package/src/lib/domain/validators/validator-rules.d.ts +12 -0
- package/src/lib/domain/validators/validator-rules.js +46 -0
- package/src/lib/domain/validators/validator-rules.js.map +1 -0
- package/src/lib/domain/validators/zod-fields.d.ts +8 -0
- package/src/lib/domain/validators/zod-fields.js +53 -0
- package/src/lib/domain/validators/zod-fields.js.map +1 -0
- package/src/lib/domain/value-object.d.ts +3 -0
- package/src/lib/domain/value-object.js +17 -0
- package/src/lib/domain/value-object.js.map +1 -0
- package/src/lib/domain/value-objects/cnpj.vo.d.ts +21 -0
- package/src/lib/domain/value-objects/cnpj.vo.js +86 -0
- package/src/lib/domain/value-objects/cnpj.vo.js.map +1 -0
- package/src/lib/domain/value-objects/cpf.vo.d.ts +21 -0
- package/src/lib/domain/value-objects/cpf.vo.js +86 -0
- package/src/lib/domain/value-objects/cpf.vo.js.map +1 -0
- package/src/lib/domain/value-objects/helpers/as-array.helper.d.ts +2 -0
- package/src/lib/domain/value-objects/helpers/as-array.helper.js +13 -0
- package/src/lib/domain/value-objects/helpers/as-array.helper.js.map +1 -0
- package/src/lib/domain/value-objects/helpers/index.d.ts +1 -0
- package/src/lib/domain/value-objects/helpers/index.js +5 -0
- package/src/lib/domain/value-objects/helpers/index.js.map +1 -0
- package/src/lib/domain/value-objects/index.d.ts +5 -0
- package/src/lib/domain/value-objects/index.js +9 -0
- package/src/lib/domain/value-objects/index.js.map +1 -0
- package/src/lib/domain/value-objects/tenant-id.vo.d.ts +3 -0
- package/src/lib/domain/value-objects/tenant-id.vo.js +8 -0
- package/src/lib/domain/value-objects/tenant-id.vo.js.map +1 -0
- package/src/lib/domain/value-objects/uuid.vo.d.ts +10 -0
- package/src/lib/domain/value-objects/uuid.vo.js +31 -0
- package/src/lib/domain/value-objects/uuid.vo.js.map +1 -0
- package/src/lib/infra/db/in-memory/in-memory.repository.d.ts +18 -0
- package/src/lib/infra/db/in-memory/in-memory.repository.js +69 -0
- package/src/lib/infra/db/in-memory/in-memory.repository.js.map +1 -0
- package/src/lib/infra/db/in-memory/index.d.ts +1 -0
- package/src/lib/infra/db/in-memory/index.js +5 -0
- package/src/lib/infra/db/in-memory/index.js.map +1 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { FieldsErrors } from './validator-fields-interface';
|
|
2
|
+
export declare abstract class BaseValidationError extends Error {
|
|
3
|
+
error: FieldsErrors[];
|
|
4
|
+
constructor(error: FieldsErrors[], message?: string);
|
|
5
|
+
count(): number;
|
|
6
|
+
}
|
|
7
|
+
export declare class ValidationError extends Error {
|
|
8
|
+
}
|
|
9
|
+
export declare class EntityValidationError extends BaseValidationError {
|
|
10
|
+
error: FieldsErrors[];
|
|
11
|
+
constructor(error: FieldsErrors[]);
|
|
12
|
+
}
|
|
13
|
+
export declare class SearchValidationError extends BaseValidationError {
|
|
14
|
+
constructor(error: FieldsErrors[]);
|
|
15
|
+
}
|
|
16
|
+
export declare class LoadEntityError extends BaseValidationError {
|
|
17
|
+
error: FieldsErrors[];
|
|
18
|
+
constructor(error: FieldsErrors[]);
|
|
19
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LoadEntityError = exports.SearchValidationError = exports.EntityValidationError = exports.ValidationError = exports.BaseValidationError = void 0;
|
|
4
|
+
class BaseValidationError extends Error {
|
|
5
|
+
error;
|
|
6
|
+
constructor(error, message = 'Validation Error') {
|
|
7
|
+
super(message);
|
|
8
|
+
this.error = error;
|
|
9
|
+
}
|
|
10
|
+
count() {
|
|
11
|
+
return Object.keys(this.error).length;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.BaseValidationError = BaseValidationError;
|
|
15
|
+
class ValidationError extends Error {
|
|
16
|
+
}
|
|
17
|
+
exports.ValidationError = ValidationError;
|
|
18
|
+
class EntityValidationError extends BaseValidationError {
|
|
19
|
+
error;
|
|
20
|
+
constructor(error) {
|
|
21
|
+
super(error, 'Entity Validation Error');
|
|
22
|
+
this.error = error;
|
|
23
|
+
this.name = 'EntityValidationError';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.EntityValidationError = EntityValidationError;
|
|
27
|
+
class SearchValidationError extends BaseValidationError {
|
|
28
|
+
constructor(error) {
|
|
29
|
+
super(error, 'Search Validation Error');
|
|
30
|
+
this.name = 'SearchValidationError';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.SearchValidationError = SearchValidationError;
|
|
34
|
+
class LoadEntityError extends BaseValidationError {
|
|
35
|
+
error;
|
|
36
|
+
constructor(error) {
|
|
37
|
+
super(error, 'LoadEntityError');
|
|
38
|
+
this.error = error;
|
|
39
|
+
this.name = 'LoadEntityError';
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.LoadEntityError = LoadEntityError;
|
|
43
|
+
//# sourceMappingURL=validation.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.error.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/validators/validation.error.ts"],"names":[],"mappings":";;;AAEA,MAAsB,mBAAoB,SAAQ,KAAK;IAE5C;IADT,YACS,KAAqB,EAC5B,OAAO,GAAG,kBAAkB;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAA;QAHP,UAAK,GAAL,KAAK,CAAgB;IAI9B,CAAC;IAED,KAAK;QACH,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAA;IACvC,CAAC;CACF;AAXD,kDAWC;AAED,MAAa,eAAgB,SAAQ,KAAK;CAAG;AAA7C,0CAA6C;AAE7C,MAAa,qBAAsB,SAAQ,mBAAmB;IAChC;IAA5B,YAA4B,KAAqB;QAC/C,KAAK,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAA;QADb,UAAK,GAAL,KAAK,CAAgB;QAE/C,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;IACrC,CAAC;CACF;AALD,sDAKC;AAED,MAAa,qBAAsB,SAAQ,mBAAmB;IAC5D,YAAY,KAAqB;QAC/B,KAAK,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAA;QACvC,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;IACrC,CAAC;CACF;AALD,sDAKC;AAED,MAAa,eAAgB,SAAQ,mBAAmB;IAC1B;IAA5B,YAA4B,KAAqB;QAC/C,KAAK,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAA;QADL,UAAK,GAAL,KAAK,CAAgB;QAE/C,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;IAC/B,CAAC;CACF;AALD,0CAKC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator-fields-interface.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/validators/validator-fields-interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class ValidatorRules {
|
|
2
|
+
private value;
|
|
3
|
+
private property;
|
|
4
|
+
private constructor();
|
|
5
|
+
static values(value: any, property: string): ValidatorRules;
|
|
6
|
+
required(): Omit<this, 'required'>;
|
|
7
|
+
string(): Omit<this, 'string'>;
|
|
8
|
+
maxLength(max: number): Omit<this, 'maxLength'>;
|
|
9
|
+
boolean(): Omit<this, 'boolean'>;
|
|
10
|
+
}
|
|
11
|
+
export declare function isEmpty(value: any): boolean;
|
|
12
|
+
export default ValidatorRules;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ValidatorRules = void 0;
|
|
4
|
+
exports.isEmpty = isEmpty;
|
|
5
|
+
const validation_error_1 = require("./validation.error");
|
|
6
|
+
class ValidatorRules {
|
|
7
|
+
value;
|
|
8
|
+
property;
|
|
9
|
+
constructor(value, property) {
|
|
10
|
+
this.value = value;
|
|
11
|
+
this.property = property;
|
|
12
|
+
}
|
|
13
|
+
static values(value, property) {
|
|
14
|
+
return new ValidatorRules(value, property);
|
|
15
|
+
}
|
|
16
|
+
required() {
|
|
17
|
+
if (this.value === null || this.value === undefined || this.value === '') {
|
|
18
|
+
throw new validation_error_1.ValidationError(`The ${this.property} is required`);
|
|
19
|
+
}
|
|
20
|
+
return this;
|
|
21
|
+
}
|
|
22
|
+
string() {
|
|
23
|
+
if (!isEmpty(this.value) && typeof this.value !== 'string') {
|
|
24
|
+
throw new validation_error_1.ValidationError(`The ${this.property} must be a string`);
|
|
25
|
+
}
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
maxLength(max) {
|
|
29
|
+
if (!isEmpty(this.value) && this.value.length > max) {
|
|
30
|
+
throw new validation_error_1.ValidationError(`The ${this.property} must be less or equal than ${max} characters`);
|
|
31
|
+
}
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
boolean() {
|
|
35
|
+
if (!isEmpty(this.value) && typeof this.value !== 'boolean') {
|
|
36
|
+
throw new validation_error_1.ValidationError(`The ${this.property} must be a boolean`);
|
|
37
|
+
}
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.ValidatorRules = ValidatorRules;
|
|
42
|
+
function isEmpty(value) {
|
|
43
|
+
return value === undefined || value === null;
|
|
44
|
+
}
|
|
45
|
+
exports.default = ValidatorRules;
|
|
46
|
+
//# sourceMappingURL=validator-rules.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator-rules.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/validators/validator-rules.ts"],"names":[],"mappings":";;;AA2CA,0BAEC;AA7CD,yDAAoD;AAEpD,MAAa,cAAc;IAEf;IACA;IAFV,YACU,KAAU,EACV,QAAgB;QADhB,UAAK,GAAL,KAAK,CAAK;QACV,aAAQ,GAAR,QAAQ,CAAQ;IACvB,CAAC;IAEJ,MAAM,CAAC,MAAM,CAAC,KAAU,EAAE,QAAgB;QACxC,OAAO,IAAI,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC5C,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,EAAE,CAAC;YACzE,MAAM,IAAI,kCAAe,CAAC,OAAO,IAAI,CAAC,QAAQ,cAAc,CAAC,CAAA;QAC/D,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC3D,MAAM,IAAI,kCAAe,CAAC,OAAO,IAAI,CAAC,QAAQ,mBAAmB,CAAC,CAAA;QACpE,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,SAAS,CAAC,GAAW;QACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACpD,MAAM,IAAI,kCAAe,CACvB,OAAO,IAAI,CAAC,QAAQ,+BAA+B,GAAG,aAAa,CACpE,CAAA;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC5D,MAAM,IAAI,kCAAe,CAAC,OAAO,IAAI,CAAC,QAAQ,oBAAoB,CAAC,CAAA;QACrE,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAvCD,wCAuCC;AAED,SAAgB,OAAO,CAAC,KAAU;IAChC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAA;AAC9C,CAAC;AAED,kBAAe,cAAc,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { IValidatorFields } from './validator-fields-interface';
|
|
3
|
+
import { Notification } from './notification';
|
|
4
|
+
export declare abstract class ZodValidatorFields implements IValidatorFields {
|
|
5
|
+
abstract schema: z.ZodTypeAny;
|
|
6
|
+
validate(notification: Notification, data: any, fields: string[]): boolean;
|
|
7
|
+
private createPartialSchema;
|
|
8
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ZodValidatorFields = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
class ZodValidatorFields {
|
|
6
|
+
validate(notification, data, fields) {
|
|
7
|
+
const schema = fields && fields.length > 0
|
|
8
|
+
? this.createPartialSchema(fields)
|
|
9
|
+
: this.schema;
|
|
10
|
+
const result = schema.safeParse(data);
|
|
11
|
+
if (!result.success) {
|
|
12
|
+
const zodErrors = result.error.format();
|
|
13
|
+
Object.entries(zodErrors)
|
|
14
|
+
.filter(([key]) => key !== '_errors')
|
|
15
|
+
.forEach(([field, error]) => {
|
|
16
|
+
if (error && typeof error === 'object' && '_errors' in error) {
|
|
17
|
+
const errorMessages = error._errors;
|
|
18
|
+
if (Array.isArray(errorMessages)) {
|
|
19
|
+
errorMessages.forEach((message) => {
|
|
20
|
+
notification.addError(message, field);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
createPartialSchema(fields) {
|
|
30
|
+
if (fields.length === 0) {
|
|
31
|
+
return this.schema;
|
|
32
|
+
}
|
|
33
|
+
// Primeiro verificamos se é um ZodObject
|
|
34
|
+
if (this.schema instanceof zod_1.z.ZodObject) {
|
|
35
|
+
// Extraímos a shape do schema
|
|
36
|
+
const shapeObject = this.schema._def.shape;
|
|
37
|
+
// Filtramos apenas os campos requisitados
|
|
38
|
+
const filteredShape = Object.keys(shapeObject).reduce((acc, key) => {
|
|
39
|
+
// Verificamos campos simples e campos aninhados via prefixo
|
|
40
|
+
if (fields.includes(key) ||
|
|
41
|
+
fields.some((field) => field.startsWith(`${key}.`))) {
|
|
42
|
+
acc[key] = shapeObject[key];
|
|
43
|
+
}
|
|
44
|
+
return acc;
|
|
45
|
+
}, {});
|
|
46
|
+
return zod_1.z.object(filteredShape);
|
|
47
|
+
}
|
|
48
|
+
// Se não for um ZodObject, retornamos o schema original
|
|
49
|
+
return this.schema;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.ZodValidatorFields = ZodValidatorFields;
|
|
53
|
+
//# sourceMappingURL=zod-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod-fields.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/validators/zod-fields.ts"],"names":[],"mappings":";;;AAAA,6BAAuB;AAIvB,MAAsB,kBAAkB;IAGtC,QAAQ,CAAC,YAA0B,EAAE,IAAS,EAAE,MAAgB;QAC9D,MAAM,MAAM,GACV,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YACzB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAA;QAEjB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAErC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAA;YACvC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;iBACtB,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC;iBACpC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC1B,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;oBAC7D,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAA;oBACnC,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;wBACjC,aAAa,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;4BAChC,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;wBACvC,CAAC,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAA;YACJ,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,mBAAmB,CAAC,MAAgB;QAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,MAAM,CAAA;QACpB,CAAC;QAED,yCAAyC;QACzC,IAAI,IAAI,CAAC,MAAM,YAAY,OAAC,CAAC,SAAS,EAAE,CAAC;YACvC,8BAA8B;YAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAA;YAE1C,0CAA0C;YAC1C,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAEnD,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBACb,4DAA4D;gBAC5D,IACE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;oBACpB,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,EACnD,CAAC;oBACD,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;gBAC7B,CAAC;gBACD,OAAO,GAAG,CAAA;YACZ,CAAC,EAAE,EAAE,CAAC,CAAA;YAEN,OAAO,OAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QAChC,CAAC;QAED,wDAAwD;QACxD,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;CACF;AA7DD,gDA6DC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ValueObject = void 0;
|
|
4
|
+
const lodash_1 = require("lodash");
|
|
5
|
+
class ValueObject {
|
|
6
|
+
equals(vo) {
|
|
7
|
+
if (vo === null || vo === undefined) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
if (vo.constructor.name !== this.constructor.name) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
return (0, lodash_1.isEqual)(vo, this);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.ValueObject = ValueObject;
|
|
17
|
+
//# sourceMappingURL=value-object.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"value-object.js","sourceRoot":"","sources":["../../../../../../libs/shared-kernel/src/lib/domain/value-object.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,MAAsB,WAAW;IACxB,MAAM,CAAC,EAAQ;QACpB,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAClD,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,IAAA,gBAAO,EAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAC1B,CAAC;CACF;AAZD,kCAYC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Either } from 'fp-ts/lib/Either';
|
|
2
|
+
import { ValueObject } from '../value-object';
|
|
3
|
+
export declare class InvalidCNPJError extends Error {
|
|
4
|
+
constructor(cnpj: string);
|
|
5
|
+
}
|
|
6
|
+
export declare class CNPJ extends ValueObject {
|
|
7
|
+
private _value;
|
|
8
|
+
private constructor();
|
|
9
|
+
get value(): string;
|
|
10
|
+
static create(cnpj: string): Either<InvalidCNPJError, CNPJ>;
|
|
11
|
+
static generate(): CNPJ;
|
|
12
|
+
format(): string;
|
|
13
|
+
toJSON(): {
|
|
14
|
+
value: string;
|
|
15
|
+
};
|
|
16
|
+
private static strip;
|
|
17
|
+
private static format;
|
|
18
|
+
private static isValid;
|
|
19
|
+
private static generateCNPJ;
|
|
20
|
+
private static calculateDigit;
|
|
21
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CNPJ = exports.InvalidCNPJError = void 0;
|
|
4
|
+
const Either_1 = require("fp-ts/lib/Either");
|
|
5
|
+
const value_object_1 = require("../value-object");
|
|
6
|
+
class InvalidCNPJError extends Error {
|
|
7
|
+
constructor(cnpj) {
|
|
8
|
+
super(`Invalid CNPJ: ${cnpj}`);
|
|
9
|
+
this.name = 'InvalidCNPJError';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.InvalidCNPJError = InvalidCNPJError;
|
|
13
|
+
class CNPJ extends value_object_1.ValueObject {
|
|
14
|
+
_value;
|
|
15
|
+
constructor(value) {
|
|
16
|
+
super();
|
|
17
|
+
this._value = CNPJ.strip(value); // Remover formatação
|
|
18
|
+
}
|
|
19
|
+
get value() {
|
|
20
|
+
return this._value;
|
|
21
|
+
}
|
|
22
|
+
static create(cnpj) {
|
|
23
|
+
if (!CNPJ.isValid(cnpj)) {
|
|
24
|
+
return (0, Either_1.left)(new InvalidCNPJError(cnpj));
|
|
25
|
+
}
|
|
26
|
+
return (0, Either_1.right)(new CNPJ(cnpj));
|
|
27
|
+
}
|
|
28
|
+
static generate() {
|
|
29
|
+
const cnpj = CNPJ.generateCNPJ();
|
|
30
|
+
return new CNPJ(cnpj);
|
|
31
|
+
}
|
|
32
|
+
format() {
|
|
33
|
+
return CNPJ.format(this._value);
|
|
34
|
+
}
|
|
35
|
+
toJSON() {
|
|
36
|
+
return {
|
|
37
|
+
value: this._value
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
// Métodos auxiliares
|
|
41
|
+
static strip(cnpj) {
|
|
42
|
+
return cnpj.replace(/\D/g, '');
|
|
43
|
+
}
|
|
44
|
+
static format(cnpj) {
|
|
45
|
+
const stripped = CNPJ.strip(cnpj);
|
|
46
|
+
return stripped.replace(/^(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/, '$1.$2.$3/$4-$5');
|
|
47
|
+
}
|
|
48
|
+
static isValid(cnpj) {
|
|
49
|
+
const stripped = CNPJ.strip(cnpj);
|
|
50
|
+
if (stripped.length !== 14 || /^(\d)\1+$/.test(stripped)) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
const calculateDigit = (base, factors) => {
|
|
54
|
+
let sum = 0;
|
|
55
|
+
for (let i = 0; i < base.length; i++) {
|
|
56
|
+
sum += parseInt(base[i]) * factors[i];
|
|
57
|
+
}
|
|
58
|
+
const remainder = sum % 11;
|
|
59
|
+
return remainder < 2 ? 0 : 11 - remainder;
|
|
60
|
+
};
|
|
61
|
+
const base = stripped.slice(0, 12);
|
|
62
|
+
const firstDigit = calculateDigit(base, [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]);
|
|
63
|
+
const secondDigit = calculateDigit(base + firstDigit, [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]);
|
|
64
|
+
return stripped === base + firstDigit + secondDigit;
|
|
65
|
+
}
|
|
66
|
+
static generateCNPJ() {
|
|
67
|
+
const randomDigits = () => String(Math.floor(Math.random() * 9));
|
|
68
|
+
let base = '';
|
|
69
|
+
for (let i = 0; i < 12; i++) {
|
|
70
|
+
base += randomDigits();
|
|
71
|
+
}
|
|
72
|
+
const firstDigit = CNPJ.calculateDigit(base, [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]);
|
|
73
|
+
const secondDigit = CNPJ.calculateDigit(base + firstDigit, [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]);
|
|
74
|
+
return base + firstDigit + secondDigit;
|
|
75
|
+
}
|
|
76
|
+
static calculateDigit(base, factors) {
|
|
77
|
+
let sum = 0;
|
|
78
|
+
for (let i = 0; i < base.length; i++) {
|
|
79
|
+
sum += parseInt(base[i]) * factors[i];
|
|
80
|
+
}
|
|
81
|
+
const remainder = sum % 11;
|
|
82
|
+
return remainder < 2 ? 0 : 11 - remainder;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.CNPJ = CNPJ;
|
|
86
|
+
//# sourceMappingURL=cnpj.vo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cnpj.vo.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/value-objects/cnpj.vo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Either } from 'fp-ts/lib/Either';
|
|
2
|
+
import { ValueObject } from '../value-object';
|
|
3
|
+
export declare class InvalidCPFError extends Error {
|
|
4
|
+
constructor(cpf: string);
|
|
5
|
+
}
|
|
6
|
+
export declare class CPF extends ValueObject {
|
|
7
|
+
private _value;
|
|
8
|
+
private constructor();
|
|
9
|
+
get value(): string;
|
|
10
|
+
static create(cpf: string): Either<InvalidCPFError, CPF>;
|
|
11
|
+
static generate(): CPF;
|
|
12
|
+
format(): string;
|
|
13
|
+
toJSON(): {
|
|
14
|
+
value: string;
|
|
15
|
+
};
|
|
16
|
+
private static strip;
|
|
17
|
+
private static format;
|
|
18
|
+
private static isValid;
|
|
19
|
+
private static generateCPF;
|
|
20
|
+
private static calculateDigit;
|
|
21
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CPF = exports.InvalidCPFError = void 0;
|
|
4
|
+
const Either_1 = require("fp-ts/lib/Either");
|
|
5
|
+
const value_object_1 = require("../value-object");
|
|
6
|
+
class InvalidCPFError extends Error {
|
|
7
|
+
constructor(cpf) {
|
|
8
|
+
super(`Invalid CPF: ${cpf}`);
|
|
9
|
+
this.name = 'InvalidCPFError';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.InvalidCPFError = InvalidCPFError;
|
|
13
|
+
class CPF extends value_object_1.ValueObject {
|
|
14
|
+
_value;
|
|
15
|
+
constructor(value) {
|
|
16
|
+
super();
|
|
17
|
+
this._value = CPF.strip(value); // Remove formatação
|
|
18
|
+
}
|
|
19
|
+
get value() {
|
|
20
|
+
return this._value;
|
|
21
|
+
}
|
|
22
|
+
static create(cpf) {
|
|
23
|
+
if (!CPF.isValid(cpf)) {
|
|
24
|
+
return (0, Either_1.left)(new InvalidCPFError(cpf));
|
|
25
|
+
}
|
|
26
|
+
return (0, Either_1.right)(new CPF(cpf));
|
|
27
|
+
}
|
|
28
|
+
static generate() {
|
|
29
|
+
const cpf = CPF.generateCPF();
|
|
30
|
+
return new CPF(cpf);
|
|
31
|
+
}
|
|
32
|
+
format() {
|
|
33
|
+
return CPF.format(this._value);
|
|
34
|
+
}
|
|
35
|
+
toJSON() {
|
|
36
|
+
return {
|
|
37
|
+
value: this._value
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
// Métodos auxiliares
|
|
41
|
+
static strip(cpf) {
|
|
42
|
+
return cpf.replace(/\D/g, '');
|
|
43
|
+
}
|
|
44
|
+
static format(cpf) {
|
|
45
|
+
const stripped = CPF.strip(cpf);
|
|
46
|
+
return stripped.replace(/^(\d{3})(\d{3})(\d{3})(\d{2})$/, '$1.$2.$3-$4');
|
|
47
|
+
}
|
|
48
|
+
static isValid(cpf) {
|
|
49
|
+
const stripped = CPF.strip(cpf);
|
|
50
|
+
if (stripped.length !== 11 || /^(\d)\1+$/.test(stripped)) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
const calculateDigit = (base, factors) => {
|
|
54
|
+
let sum = 0;
|
|
55
|
+
for (let i = 0; i < base.length; i++) {
|
|
56
|
+
sum += parseInt(base[i]) * factors[i];
|
|
57
|
+
}
|
|
58
|
+
const remainder = sum % 11;
|
|
59
|
+
return remainder < 2 ? 0 : 11 - remainder;
|
|
60
|
+
};
|
|
61
|
+
const base = stripped.slice(0, 9);
|
|
62
|
+
const firstDigit = calculateDigit(base, [10, 9, 8, 7, 6, 5, 4, 3, 2]);
|
|
63
|
+
const secondDigit = calculateDigit(base + firstDigit, [11, 10, 9, 8, 7, 6, 5, 4, 3, 2]);
|
|
64
|
+
return stripped === base + firstDigit + secondDigit;
|
|
65
|
+
}
|
|
66
|
+
static generateCPF() {
|
|
67
|
+
const randomDigits = () => String(Math.floor(Math.random() * 9));
|
|
68
|
+
let base = '';
|
|
69
|
+
for (let i = 0; i < 9; i++) {
|
|
70
|
+
base += randomDigits();
|
|
71
|
+
}
|
|
72
|
+
const firstDigit = CPF.calculateDigit(base, [10, 9, 8, 7, 6, 5, 4, 3, 2]);
|
|
73
|
+
const secondDigit = CPF.calculateDigit(base + firstDigit, [11, 10, 9, 8, 7, 6, 5, 4, 3, 2]);
|
|
74
|
+
return base + firstDigit + secondDigit;
|
|
75
|
+
}
|
|
76
|
+
static calculateDigit(base, factors) {
|
|
77
|
+
let sum = 0;
|
|
78
|
+
for (let i = 0; i < base.length; i++) {
|
|
79
|
+
sum += parseInt(base[i]) * factors[i];
|
|
80
|
+
}
|
|
81
|
+
const remainder = sum % 11;
|
|
82
|
+
return remainder < 2 ? 0 : 11 - remainder;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.CPF = CPF;
|
|
86
|
+
//# sourceMappingURL=cpf.vo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cpf.vo.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/value-objects/cpf.vo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.asArray = asArray;
|
|
4
|
+
const Either_1 = require("fp-ts/Either");
|
|
5
|
+
function asArray(either) {
|
|
6
|
+
if ((0, Either_1.isRight)(either)) {
|
|
7
|
+
return [either.right, undefined];
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
return [undefined, either.left];
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=as-array.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"as-array.helper.js","sourceRoot":"","sources":["../../../../../../../../libs/shared-kernel/src/lib/domain/value-objects/helpers/as-array.helper.ts"],"names":[],"mappings":";;AAEA,0BAQC;AAVD,yCAA8C;AAE9C,SAAgB,OAAO,CACrB,MAAoB;IAEpB,IAAI,IAAA,gBAAO,EAAC,MAAM,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAClC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './as-array.helper';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../libs/shared-kernel/src/lib/domain/value-objects/helpers/index.ts"],"names":[],"mappings":";;;AAAA,4DAAiC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./cnpj.vo"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./cpf.vo"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./uuid.vo"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./tenant-id.vo"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./helpers"), exports);
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/value-objects/index.ts"],"names":[],"mappings":";;;AAAA,oDAAyB;AACzB,mDAAwB;AACxB,oDAAyB;AACzB,yDAA8B;AAC9B,oDAAyB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TenantId = void 0;
|
|
4
|
+
const uuid_vo_1 = require("./uuid.vo");
|
|
5
|
+
class TenantId extends uuid_vo_1.Uuid {
|
|
6
|
+
}
|
|
7
|
+
exports.TenantId = TenantId;
|
|
8
|
+
//# sourceMappingURL=tenant-id.vo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-id.vo.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/value-objects/tenant-id.vo.ts"],"names":[],"mappings":";;;AAAA,uCAAgC;AAEhC,MAAa,QAAS,SAAQ,cAAI;CAAG;AAArC,4BAAqC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ValueObject } from '../value-object';
|
|
2
|
+
export declare class Uuid extends ValueObject {
|
|
3
|
+
readonly id: string;
|
|
4
|
+
constructor(id?: string);
|
|
5
|
+
private validate;
|
|
6
|
+
toString(): string;
|
|
7
|
+
}
|
|
8
|
+
export declare class InvalidUuidError extends Error {
|
|
9
|
+
constructor(message?: string);
|
|
10
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InvalidUuidError = exports.Uuid = void 0;
|
|
4
|
+
const uuid_1 = require("uuid");
|
|
5
|
+
const value_object_1 = require("../value-object");
|
|
6
|
+
class Uuid extends value_object_1.ValueObject {
|
|
7
|
+
id;
|
|
8
|
+
constructor(id) {
|
|
9
|
+
super();
|
|
10
|
+
this.id = id || (0, uuid_1.v4)();
|
|
11
|
+
this.validate();
|
|
12
|
+
}
|
|
13
|
+
validate() {
|
|
14
|
+
const isValid = (0, uuid_1.validate)(this.id);
|
|
15
|
+
if (!isValid) {
|
|
16
|
+
throw new InvalidUuidError();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
toString() {
|
|
20
|
+
return this.id;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.Uuid = Uuid;
|
|
24
|
+
class InvalidUuidError extends Error {
|
|
25
|
+
constructor(message) {
|
|
26
|
+
super(message || 'ID must be a valid UUID');
|
|
27
|
+
this.name = 'InvalidUuidError';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.InvalidUuidError = InvalidUuidError;
|
|
31
|
+
//# sourceMappingURL=uuid.vo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid.vo.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/value-objects/uuid.vo.ts"],"names":[],"mappings":";;;AAAA,+BAA6D;AAC7D,kDAA6C;AAE7C,MAAa,IAAK,SAAQ,0BAAW;IAC1B,EAAE,CAAQ;IAEnB,YAAY,EAAW;QACrB,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,IAAA,SAAM,GAAE,CAAA;QACxB,IAAI,CAAC,QAAQ,EAAE,CAAA;IACjB,CAAC;IAEO,QAAQ;QACd,MAAM,OAAO,GAAG,IAAA,eAAY,EAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,gBAAgB,EAAE,CAAA;QAC9B,CAAC;IACH,CAAC;IAEQ,QAAQ;QACf,OAAO,IAAI,CAAC,EAAE,CAAA;IAChB,CAAC;CACF;AAnBD,oBAmBC;AAED,MAAa,gBAAiB,SAAQ,KAAK;IACzC,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,IAAI,yBAAyB,CAAC,CAAA;QAC3C,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAA;IAChC,CAAC;CACF;AALD,4CAKC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Entity } from '../../../domain/entity';
|
|
2
|
+
import { IRepository } from '../../../domain/repository/repository-interface';
|
|
3
|
+
import { ValueObject } from '../../../domain/value-object';
|
|
4
|
+
export declare abstract class InMemoryRepository<E extends Entity, EntityId extends ValueObject> implements IRepository<E, EntityId> {
|
|
5
|
+
items: E[];
|
|
6
|
+
insert(entity: E): Promise<void>;
|
|
7
|
+
bulkInsert(entities: any[]): Promise<void>;
|
|
8
|
+
update(entity: E): Promise<void>;
|
|
9
|
+
delete(entity_id: EntityId): Promise<void>;
|
|
10
|
+
findById(entity_id: EntityId): Promise<E | null>;
|
|
11
|
+
findAll(): Promise<any[]>;
|
|
12
|
+
findByIds(ids: EntityId[]): Promise<E[]>;
|
|
13
|
+
existsById(ids: EntityId[]): Promise<{
|
|
14
|
+
exists: EntityId[];
|
|
15
|
+
not_exists: EntityId[];
|
|
16
|
+
}>;
|
|
17
|
+
abstract getEntity(): new (...args: any[]) => E;
|
|
18
|
+
}
|