@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,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AlreadyExistsInError = void 0;
|
|
4
|
+
class AlreadyExistsInError extends Error {
|
|
5
|
+
constructor(id, field, entityClass) {
|
|
6
|
+
super(`ID ${id.id} already exists in ${field} of a ${entityClass.name}`);
|
|
7
|
+
this.name = 'AlreadyExistsError';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.AlreadyExistsInError = AlreadyExistsInError;
|
|
11
|
+
//# sourceMappingURL=already-exists-in.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"already-exists-in.error.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/errors/already-exists-in.error.ts"],"names":[],"mappings":";;;AAGA,MAAa,oBAAqB,SAAQ,KAAK;IAC7C,YACE,EAAQ,EACR,KAAa,EACb,WAA2C;QAE3C,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,sBAAsB,KAAK,SAAS,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;QAExE,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;IAClC,CAAC;CACF;AAVD,oDAUC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AlreadyExistsError = void 0;
|
|
4
|
+
class AlreadyExistsError extends Error {
|
|
5
|
+
// Implementação "real" do construtor
|
|
6
|
+
constructor(...args) {
|
|
7
|
+
if (args.length === 1) {
|
|
8
|
+
// Caso do UUID
|
|
9
|
+
const [id] = args;
|
|
10
|
+
super(`Entity already exists. Using ID ${id}`);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
// Caso de outro campo
|
|
14
|
+
const [field, value] = args;
|
|
15
|
+
super(`Entity already exists. Field ${field} with value ${value} already in use.`);
|
|
16
|
+
}
|
|
17
|
+
this.name = 'AlreadyExistsError';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.AlreadyExistsError = AlreadyExistsError;
|
|
21
|
+
//# sourceMappingURL=already-exists.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"already-exists.error.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/errors/already-exists.error.ts"],"names":[],"mappings":";;;AAEA,MAAa,kBAAmB,SAAQ,KAAK;IAM3C,qCAAqC;IACrC,YAAY,GAAG,IAAwC;QACrD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,eAAe;YACf,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA;YACjB,KAAK,CAAC,mCAAmC,EAAE,EAAE,CAAC,CAAA;QAChD,CAAC;aAAM,CAAC;YACN,sBAAsB;YACtB,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,CAAA;YAC3B,KAAK,CACH,gCAAgC,KAAK,eAAe,KAAK,kBAAkB,CAC5E,CAAA;QACH,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAA;IAClC,CAAC;CACF;AAtBD,gDAsBC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ForbiddenError = void 0;
|
|
4
|
+
class ForbiddenError extends Error {
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = 'ForbiddenError';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.ForbiddenError = ForbiddenError;
|
|
11
|
+
//# sourceMappingURL=forbidden.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forbidden.error.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/errors/forbidden.error.ts"],"names":[],"mappings":";;;AAAA,MAAa,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAA;IAC9B,CAAC;CACF;AALD,wCAKC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./already-exists-in.error"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./permision-denied.error"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./invalid-argument.error"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./already-exists.error"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./not-found.error"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./forbidden.error"), exports);
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/errors/index.ts"],"names":[],"mappings":";;;AAAA,oEAAyC;AACzC,mEAAwC;AACxC,mEAAwC;AACxC,iEAAsC;AACtC,4DAAiC;AACjC,4DAAiC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InvalidArgumentError = void 0;
|
|
4
|
+
class InvalidArgumentError extends Error {
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = 'InvalidArgumentError';
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.InvalidArgumentError = InvalidArgumentError;
|
|
11
|
+
//# sourceMappingURL=invalid-argument.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invalid-argument.error.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/errors/invalid-argument.error.ts"],"names":[],"mappings":";;;AAAA,MAAa,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAA;IACpC,CAAC;CACF;AALD,oDAKC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NotFoundError = void 0;
|
|
4
|
+
class NotFoundError extends Error {
|
|
5
|
+
constructor(param1, param2, param3) {
|
|
6
|
+
if (param3 === undefined) {
|
|
7
|
+
const id = param1;
|
|
8
|
+
const entityClass = param2;
|
|
9
|
+
const idsMessage = Array.isArray(id) ? id.join(', ') : id;
|
|
10
|
+
super(`${entityClass.name} not found using ID ${idsMessage}`);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
const field = param1;
|
|
14
|
+
const value = param2;
|
|
15
|
+
const entityClass = param3;
|
|
16
|
+
super(`${entityClass.name} not found using ${field} ${value}`);
|
|
17
|
+
}
|
|
18
|
+
this.name = 'NotFoundError';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.NotFoundError = NotFoundError;
|
|
22
|
+
//# sourceMappingURL=not-found.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"not-found.error.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/errors/not-found.error.ts"],"names":[],"mappings":";;;AAEA,MAAa,aAAc,SAAQ,KAAK;IAStC,YACE,MAA4B,EAC5B,MAA8C,EAC9C,MAAuC;QAEvC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,EAAE,GAAG,MAAM,CAAA;YACjB,MAAM,WAAW,GAAG,MAAwC,CAAA;YAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YACzD,KAAK,CAAC,GAAG,WAAW,CAAC,IAAI,uBAAuB,UAAU,EAAE,CAAC,CAAA;QAC/D,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,MAAgB,CAAA;YAC9B,MAAM,KAAK,GAAG,MAAM,CAAA;YACpB,MAAM,WAAW,GAAG,MAAM,CAAA;YAC1B,KAAK,CAAC,GAAG,WAAW,CAAC,IAAI,oBAAoB,KAAK,IAAI,KAAK,EAAE,CAAC,CAAA;QAChE,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,eAAe,CAAA;IAC7B,CAAC;CACF;AA5BD,sCA4BC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PermissionDeniedError = void 0;
|
|
4
|
+
class PermissionDeniedError extends Error {
|
|
5
|
+
action;
|
|
6
|
+
resourceType;
|
|
7
|
+
reason;
|
|
8
|
+
constructor(action, resourceType, reason) {
|
|
9
|
+
super(`Permission Denied: Cannot perform action '${action}' on resource '${resourceType}'. ${reason ? `Reason: ${reason}` : ''}`);
|
|
10
|
+
this.name = 'PermissionDeniedError';
|
|
11
|
+
this.action = action;
|
|
12
|
+
this.resourceType = resourceType;
|
|
13
|
+
this.reason = reason;
|
|
14
|
+
if (Error.captureStackTrace) {
|
|
15
|
+
Error.captureStackTrace(this, PermissionDeniedError);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.PermissionDeniedError = PermissionDeniedError;
|
|
20
|
+
//# sourceMappingURL=permision-denied.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permision-denied.error.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/errors/permision-denied.error.ts"],"names":[],"mappings":";;;AAAA,MAAa,qBAAsB,SAAQ,KAAK;IAC9B,MAAM,CAAQ;IACd,YAAY,CAAQ;IACpB,MAAM,CAAS;IAE/B,YAAY,MAAc,EAAE,YAAoB,EAAE,MAAe;QAC/D,KAAK,CACH,6CAA6C,MAAM,kBAAkB,YAAY,MAAM,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3H,CAAA;QAED,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAA;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QAEpB,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAA;QACtD,CAAC;IACH,CAAC;CACF;AAnBD,sDAmBC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import EventEmitter2 from 'eventemitter2';
|
|
2
|
+
import { AggregateRoot } from '../aggregate-root';
|
|
3
|
+
import { IEventGateway } from './gateways';
|
|
4
|
+
export declare class DomainEventMediator {
|
|
5
|
+
private eventRepository;
|
|
6
|
+
readonly eventEmitter: EventEmitter2;
|
|
7
|
+
constructor(eventEmitter: EventEmitter2, eventRepository: IEventGateway);
|
|
8
|
+
register(event: string, handler: any): void;
|
|
9
|
+
publish(aggregateRoot: AggregateRoot): Promise<void>;
|
|
10
|
+
publishIntegrationEvents(aggregateRoot: AggregateRoot): Promise<void>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DomainEventMediator = void 0;
|
|
4
|
+
class DomainEventMediator {
|
|
5
|
+
eventRepository;
|
|
6
|
+
eventEmitter;
|
|
7
|
+
constructor(eventEmitter, eventRepository) {
|
|
8
|
+
this.eventRepository = eventRepository;
|
|
9
|
+
this.eventEmitter = eventEmitter;
|
|
10
|
+
}
|
|
11
|
+
register(event, handler) {
|
|
12
|
+
this.eventEmitter.on(event, handler);
|
|
13
|
+
}
|
|
14
|
+
async publish(aggregateRoot) {
|
|
15
|
+
const uncommittedEvents = aggregateRoot.getUncommittedEvents();
|
|
16
|
+
for (const event of uncommittedEvents) {
|
|
17
|
+
const eventClassName = event.constructor.name;
|
|
18
|
+
aggregateRoot.markEventAsDispatched(event);
|
|
19
|
+
await this.eventEmitter.emitAsync(eventClassName, event);
|
|
20
|
+
// Usar dados do evento + contexto do aggregate
|
|
21
|
+
const eventMetadata = {
|
|
22
|
+
...event,
|
|
23
|
+
aggregate_type: aggregateRoot.constructor.name,
|
|
24
|
+
aggregate_data: aggregateRoot.toJSON()
|
|
25
|
+
};
|
|
26
|
+
await this.eventRepository.logEvent('domain', eventClassName, eventMetadata);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
async publishIntegrationEvents(aggregateRoot) {
|
|
30
|
+
// Iterar sobre todos os eventos (incluindo os já dispatched)
|
|
31
|
+
for (const event of Array.from(aggregateRoot.events)) {
|
|
32
|
+
// Se o evento tiver método getIntegrationEvent que aceita aggregateRoot, passar o aggregate
|
|
33
|
+
let integrationEvent;
|
|
34
|
+
if (typeof event.getIntegrationEvent === 'function') {
|
|
35
|
+
// Tenta chamar com aggregateRoot se aceitar, senão sem argumentos
|
|
36
|
+
try {
|
|
37
|
+
integrationEvent = event.getIntegrationEvent(aggregateRoot);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
integrationEvent = event.getIntegrationEvent();
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (!integrationEvent)
|
|
44
|
+
continue;
|
|
45
|
+
await this.eventEmitter.emitAsync(integrationEvent.event_name, integrationEvent);
|
|
46
|
+
const integrationEventName = integrationEvent.event_name;
|
|
47
|
+
await this.eventRepository.logEvent('integration', integrationEventName, integrationEvent.metadata);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.DomainEventMediator = DomainEventMediator;
|
|
52
|
+
//# sourceMappingURL=domain-event-mediator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-event-mediator.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/events/domain-event-mediator.ts"],"names":[],"mappings":";;;AAMA,MAAa,mBAAmB;IAKpB;IAJM,YAAY,CAAe;IAE3C,YACE,YAA2B,EACnB,eAA8B;QAA9B,oBAAe,GAAf,eAAe,CAAe;QAEtC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,CAAC;IAED,QAAQ,CAAC,KAAa,EAAE,OAAY;QAClC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACtC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,aAA4B;QACxC,MAAM,iBAAiB,GAAG,aAAa,CAAC,oBAAoB,EAAE,CAAA;QAE9D,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;YACtC,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAA;YAC7C,aAAa,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAA;YAE1C,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;YAExD,+CAA+C;YAC/C,MAAM,aAAa,GAAG;gBACpB,GAAG,KAAK;gBACR,cAAc,EAAE,aAAa,CAAC,WAAW,CAAC,IAAI;gBAC9C,cAAc,EAAE,aAAa,CAAC,MAAM,EAAE;aACvC,CAAA;YAED,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CACjC,QAAQ,EACR,cAAc,EACd,aAAa,CACd,CAAA;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,aAA4B;QACzD,6DAA6D;QAC7D,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YACrD,4FAA4F;YAC5F,IAAI,gBAA+C,CAAA;YACnD,IAAI,OAAQ,KAAa,CAAC,mBAAmB,KAAK,UAAU,EAAE,CAAC;gBAC7D,kEAAkE;gBAClE,IAAI,CAAC;oBACH,gBAAgB,GAAI,KAAa,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAA;gBACtE,CAAC;gBAAC,MAAM,CAAC;oBACP,gBAAgB,GAAI,KAAa,CAAC,mBAAmB,EAAE,CAAA;gBACzD,CAAC;YACH,CAAC;YAED,IAAI,CAAC,gBAAgB;gBAAE,SAAQ;YAE/B,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAC/B,gBAAgB,CAAC,UAAU,EAC3B,gBAAgB,CACjB,CAAA;YAED,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,UAAU,CAAA;YACxD,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CACjC,aAAa,EACb,oBAAoB,EACpB,gBAAgB,CAAC,QAAQ,CAC1B,CAAA;QACH,CAAC;IACH,CAAC;CACF;AAnED,kDAmEC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ValueObject } from '../value-object';
|
|
2
|
+
export interface IDomainEvent {
|
|
3
|
+
aggregate_id: ValueObject;
|
|
4
|
+
occurred_at: Date;
|
|
5
|
+
event_version: number;
|
|
6
|
+
getIntegrationEvent?(): IIntegrationEvent | undefined;
|
|
7
|
+
}
|
|
8
|
+
export interface IIntegrationEvent<T = any> {
|
|
9
|
+
event_version: number;
|
|
10
|
+
occurred_at: Date;
|
|
11
|
+
metadata: T;
|
|
12
|
+
event_name: string;
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-event.interface.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/events/domain-event.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event.gateway.js","sourceRoot":"","sources":["../../../../../../../../libs/shared-kernel/src/lib/domain/events/gateways/event.gateway.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './event.gateway';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../libs/shared-kernel/src/lib/domain/events/gateways/index.ts"],"names":[],"mappings":";;;AAAA,0DAA+B"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./gateways"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./domain-event-mediator"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./domain-event.interface"), exports);
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/events/index.ts"],"names":[],"mappings":";;;AAAA,qDAA0B;AAC1B,kEAAuC;AACvC,mEAAwC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './unit-of-work.interface';
|
|
2
|
+
export * from './aggregate-root';
|
|
3
|
+
export * from './value-objects';
|
|
4
|
+
export * from './value-object';
|
|
5
|
+
export * from './repository';
|
|
6
|
+
export * from './validators';
|
|
7
|
+
export * from './events';
|
|
8
|
+
export * from './errors';
|
|
9
|
+
export * from './entity';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./unit-of-work.interface"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./aggregate-root"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./value-objects"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./value-object"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./repository"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./validators"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./events"), exports);
|
|
11
|
+
tslib_1.__exportStar(require("./errors"), exports);
|
|
12
|
+
tslib_1.__exportStar(require("./entity"), exports);
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../libs/shared-kernel/src/lib/domain/index.ts"],"names":[],"mappings":";;;AAAA,mEAAwC;AACxC,2DAAgC;AAChC,0DAA+B;AAC/B,yDAA8B;AAC9B,uDAA4B;AAC5B,uDAA4B;AAC5B,mDAAwB;AACxB,mDAAwB;AACxB,mDAAwB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type PlateStatus = 'valid' | 'invalid' | 'unknown';
|
|
2
|
+
/**
|
|
3
|
+
* Valida o status de uma placa
|
|
4
|
+
* @param plate - Placa a ser validada
|
|
5
|
+
* @returns PlateStatus - 'unknown' se placa vazia/unknown, 'invalid' se formato inválido, 'valid' se formato válido
|
|
6
|
+
*/
|
|
7
|
+
export declare function validatePlateStatus(plate: string): PlateStatus;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validatePlateStatus = validatePlateStatus;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const Joi = tslib_1.__importStar(require("joi"));
|
|
6
|
+
/**
|
|
7
|
+
* Schema de validação de placas brasileiras
|
|
8
|
+
* Formato: AAA0X00 (Mercosul) ou AAA9999 (antigo)
|
|
9
|
+
*/
|
|
10
|
+
const plateSchema = Joi.string()
|
|
11
|
+
.length(7)
|
|
12
|
+
.pattern(/^[A-Z]{3}[0-9][A-Z0-9][0-9]{2}$/)
|
|
13
|
+
.message('Formato de placa inválido. Use o formato AAA0X00 ou AAA9999');
|
|
14
|
+
/**
|
|
15
|
+
* Valida o status de uma placa
|
|
16
|
+
* @param plate - Placa a ser validada
|
|
17
|
+
* @returns PlateStatus - 'unknown' se placa vazia/unknown, 'invalid' se formato inválido, 'valid' se formato válido
|
|
18
|
+
*/
|
|
19
|
+
function validatePlateStatus(plate) {
|
|
20
|
+
// Normalizar placa
|
|
21
|
+
const normalizedPlate = String(plate || '')
|
|
22
|
+
.toUpperCase()
|
|
23
|
+
.trim();
|
|
24
|
+
// Caso 1: placa "unknown" ou vazia da câmera
|
|
25
|
+
if (normalizedPlate === 'UNKNOWN' || normalizedPlate === '') {
|
|
26
|
+
return 'unknown';
|
|
27
|
+
}
|
|
28
|
+
// Caso 2: validar formato brasileiro
|
|
29
|
+
const validationResult = plateSchema.validate(normalizedPlate);
|
|
30
|
+
if (validationResult.error) {
|
|
31
|
+
return 'invalid';
|
|
32
|
+
}
|
|
33
|
+
return 'valid';
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=plate-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plate-validator.js","sourceRoot":"","sources":["../../../../../../libs/shared-kernel/src/lib/domain/plate-validator.ts"],"names":[],"mappings":";;AAkBA,kDAmBC;;AArCD,iDAA0B;AAI1B;;;GAGG;AACH,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,EAAE;KAC7B,MAAM,CAAC,CAAC,CAAC;KACT,OAAO,CAAC,iCAAiC,CAAC;KAC1C,OAAO,CAAC,6DAA6D,CAAC,CAAA;AAEzE;;;;GAIG;AACH,SAAgB,mBAAmB,CAAC,KAAa;IAC/C,mBAAmB;IACnB,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;SACxC,WAAW,EAAE;SACb,IAAI,EAAE,CAAA;IAET,6CAA6C;IAC7C,IAAI,eAAe,KAAK,SAAS,IAAI,eAAe,KAAK,EAAE,EAAE,CAAC;QAC5D,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,qCAAqC;IACrC,MAAM,gBAAgB,GAAG,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA;IAE9D,IAAI,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './repository-interface';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/repository/index.ts"],"names":[],"mappings":";;;AAAA,iEAAsC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Entity } from '../entity';
|
|
2
|
+
import { ValueObject } from '../value-object';
|
|
3
|
+
export interface IRepository<E extends Entity, EntityId extends ValueObject> {
|
|
4
|
+
insert(entity: E): Promise<void>;
|
|
5
|
+
bulkInsert(entities: E[]): Promise<void>;
|
|
6
|
+
update(entity: E): Promise<void>;
|
|
7
|
+
delete(entity_id: EntityId): Promise<void>;
|
|
8
|
+
findById(entity_id: EntityId): Promise<E | null>;
|
|
9
|
+
findAll(): Promise<E[]>;
|
|
10
|
+
findByIds(ids: EntityId[]): Promise<E[]>;
|
|
11
|
+
existsById(ids: EntityId[]): Promise<{
|
|
12
|
+
exists: EntityId[];
|
|
13
|
+
not_exists: EntityId[];
|
|
14
|
+
}>;
|
|
15
|
+
getEntity(): new (...args: any[]) => E;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository-interface.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/repository/repository-interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AggregateRoot } from './aggregate-root';
|
|
2
|
+
export interface IUnitOfWork {
|
|
3
|
+
begin(): Promise<void>;
|
|
4
|
+
commit(): Promise<void>;
|
|
5
|
+
rollback(): Promise<void>;
|
|
6
|
+
addAggregateRoot(aggregateRoot: AggregateRoot): void;
|
|
7
|
+
getAggregateRoots(): AggregateRoot[];
|
|
8
|
+
clearAggregateRoots(): void;
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unit-of-work.interface.js","sourceRoot":"","sources":["../../../../../../libs/shared-kernel/src/lib/domain/unit-of-work.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { IValidatorFields } from './validator-fields-interface';
|
|
2
|
+
import { Notification } from './notification';
|
|
3
|
+
export declare abstract class ClassValidatorFields implements IValidatorFields {
|
|
4
|
+
validate(notification: Notification, data: any, fields: string[]): boolean;
|
|
5
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ClassValidatorFields = void 0;
|
|
4
|
+
const class_validator_1 = require("class-validator");
|
|
5
|
+
class ClassValidatorFields {
|
|
6
|
+
validate(notification, data, fields) {
|
|
7
|
+
const errors = (0, class_validator_1.validateSync)(data, {
|
|
8
|
+
groups: fields
|
|
9
|
+
});
|
|
10
|
+
if (errors.length) {
|
|
11
|
+
for (const error of errors) {
|
|
12
|
+
const field = error.property;
|
|
13
|
+
if (error.constraints) {
|
|
14
|
+
Object.values(error.constraints).forEach((message) => {
|
|
15
|
+
notification.addError(message, field);
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return !errors.length;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.ClassValidatorFields = ClassValidatorFields;
|
|
24
|
+
//# sourceMappingURL=class-validator-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"class-validator-fields.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/validators/class-validator-fields.ts"],"names":[],"mappings":";;;AAAA,qDAA8C;AAI9C,MAAsB,oBAAoB;IACxC,QAAQ,CAAC,YAA0B,EAAE,IAAS,EAAE,MAAgB;QAC9D,MAAM,MAAM,GAAG,IAAA,8BAAY,EAAC,IAAI,EAAE;YAChC,MAAM,EAAE,MAAM;SACf,CAAC,CAAA;QAEF,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAA;gBAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;oBACtB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;wBACnD,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;oBACvC,CAAC,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,MAAM,CAAA;IACvB,CAAC;CACF;AAnBD,oDAmBC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// created from 'create-ts-index'
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
tslib_1.__exportStar(require("./class-validator-fields"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./zod-fields"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./notification"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./validation.error"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./validator-fields-interface"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./validator-rules"), exports);
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/validators/index.ts"],"names":[],"mappings":";AAAA,iCAAiC;;;AAEjC,mEAAwC;AACxC,uDAA4B;AAC5B,yDAA8B;AAC9B,6DAAkC;AAClC,uEAA4C;AAC5C,4DAAiC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class Notification {
|
|
2
|
+
errors: Map<string, string | string[]>;
|
|
3
|
+
addError(error: string, field?: string): void;
|
|
4
|
+
setError(error: string | string[], field?: string): void;
|
|
5
|
+
hasErrors(): boolean;
|
|
6
|
+
copyErrors(notification: Notification): void;
|
|
7
|
+
toJSON(): (string | {
|
|
8
|
+
[key: string]: string[];
|
|
9
|
+
})[];
|
|
10
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Notification = void 0;
|
|
4
|
+
class Notification {
|
|
5
|
+
errors = new Map();
|
|
6
|
+
addError(error, field) {
|
|
7
|
+
if (field) {
|
|
8
|
+
const errors = (this.errors.get(field) ?? []);
|
|
9
|
+
if (errors.indexOf(error) === -1) {
|
|
10
|
+
errors.push(error);
|
|
11
|
+
}
|
|
12
|
+
this.errors.set(field, errors);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
this.errors.set(error, error);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
setError(error, field) {
|
|
19
|
+
if (field) {
|
|
20
|
+
this.errors.set(field, Array.isArray(error) ? error : [error]);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
if (Array.isArray(error)) {
|
|
24
|
+
error.forEach((value) => {
|
|
25
|
+
this.errors.set(value, value);
|
|
26
|
+
});
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
this.errors.set(error, error);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
hasErrors() {
|
|
33
|
+
return this.errors.size > 0;
|
|
34
|
+
}
|
|
35
|
+
copyErrors(notification) {
|
|
36
|
+
notification.errors.forEach((value, field) => {
|
|
37
|
+
this.setError(value, field);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
toJSON() {
|
|
41
|
+
const errors = [];
|
|
42
|
+
this.errors.forEach((value, key) => {
|
|
43
|
+
if (typeof value === 'string') {
|
|
44
|
+
errors.push(value);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
errors.push({ [key]: value });
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
return errors;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.Notification = Notification;
|
|
54
|
+
//# sourceMappingURL=notification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notification.js","sourceRoot":"","sources":["../../../../../../../libs/shared-kernel/src/lib/domain/validators/notification.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAY;IACvB,MAAM,GAAG,IAAI,GAAG,EAA6B,CAAA;IAE7C,QAAQ,CAAC,KAAa,EAAE,KAAc;QACpC,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAa,CAAA;YACzD,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACpB,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAChC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,KAAwB,EAAE,KAAc;QAC/C,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;QAChE,CAAC;aAAM,CAAC;YACN,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;oBACtB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;gBAC/B,CAAC,CAAC,CAAA;gBACF,OAAM;YACR,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,UAAU,CAAC,YAA0B;QACnC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC3C,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAC7B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,MAAM;QACJ,MAAM,MAAM,GAAgD,EAAE,CAAA;QAC9D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACpB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAlDD,oCAkDC"}
|