@koalarx/nest 0.0.3
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/LICENSE +21 -0
- package/README.md +7 -0
- package/common/backgroud-services/cron-service/cron-job.d.ts +15 -0
- package/common/backgroud-services/cron-service/cron-job.js +47 -0
- package/common/backgroud-services/event-service/event-class.d.ts +5 -0
- package/common/backgroud-services/event-service/event-class.js +11 -0
- package/common/backgroud-services/event-service/event-handler.d.ts +5 -0
- package/common/backgroud-services/event-service/event-handler.js +10 -0
- package/common/backgroud-services/event-service/event-is-trigger.d.ts +3 -0
- package/common/backgroud-services/event-service/event-is-trigger.js +7 -0
- package/common/backgroud-services/event-service/event-job.d.ts +10 -0
- package/common/backgroud-services/event-service/event-job.js +19 -0
- package/common/backgroud-services/event-service/event-queue.d.ts +17 -0
- package/common/backgroud-services/event-service/event-queue.js +55 -0
- package/common/controllers/base.controller.d.ts +4 -0
- package/common/controllers/base.controller.js +6 -0
- package/common/controllers/created-registre-response.base.d.ts +3 -0
- package/common/controllers/created-registre-response.base.js +17 -0
- package/common/controllers/list-response.base.d.ts +4 -0
- package/common/controllers/list-response.base.js +17 -0
- package/common/controllers/router-config.base.d.ts +7 -0
- package/common/controllers/router-config.base.js +18 -0
- package/common/controllers/schemas/document-number.schema.d.ts +1 -0
- package/common/controllers/schemas/document-number.schema.js +27 -0
- package/common/controllers/schemas/email.schema.d.ts +1 -0
- package/common/controllers/schemas/email.schema.js +14 -0
- package/common/controllers/schemas/list-query.schema.d.ts +17 -0
- package/common/controllers/schemas/list-query.schema.js +19 -0
- package/common/controllers/schemas/native-enum.schema.d.ts +7 -0
- package/common/controllers/schemas/native-enum.schema.js +29 -0
- package/common/errors/bad-request.error.d.ts +4 -0
- package/common/errors/bad-request.error.js +9 -0
- package/common/errors/conflict.error.d.ts +3 -0
- package/common/errors/conflict.error.js +9 -0
- package/common/errors/no-content.error.d.ts +4 -0
- package/common/errors/no-content.error.js +9 -0
- package/common/errors/not-allowed.error.d.ts +4 -0
- package/common/errors/not-allowed.error.js +9 -0
- package/common/errors/resource-not-found.error.d.ts +4 -0
- package/common/errors/resource-not-found.error.js +9 -0
- package/common/errors/use-case-error.d.ts +3 -0
- package/common/errors/use-case-error.js +2 -0
- package/common/errors/user-already-exist.error.d.ts +3 -0
- package/common/errors/user-already-exist.error.js +9 -0
- package/common/errors/wrong-credentials.error.d.ts +3 -0
- package/common/errors/wrong-credentials.error.js +9 -0
- package/common/mediator/request-handler.base.d.ts +4 -0
- package/common/mediator/request-handler.base.js +6 -0
- package/common/mediator/request-result.d.ts +15 -0
- package/common/mediator/request-result.js +37 -0
- package/common/mediator/request-validator.base.d.ts +7 -0
- package/common/mediator/request-validator.base.js +17 -0
- package/common/models/pagination-params.d.ts +14 -0
- package/common/models/pagination-params.js +60 -0
- package/core/database/entity.d.ts +8 -0
- package/core/database/entity.js +23 -0
- package/core/database/repository.base.d.ts +16 -0
- package/core/database/repository.base.js +27 -0
- package/core/koala-app.d.ts +40 -0
- package/core/koala-app.js +94 -0
- package/core/koala-nest-database.module.d.ts +13 -0
- package/core/koala-nest-database.module.js +37 -0
- package/core/koala-nest-http.module.d.ts +12 -0
- package/core/koala-nest-http.module.js +38 -0
- package/core/koala-nest.module.d.ts +13 -0
- package/core/koala-nest.module.js +52 -0
- package/core/utils/env.config.d.ts +6 -0
- package/core/utils/env.config.js +18 -0
- package/core/utils/filter-request-params.d.ts +13 -0
- package/core/utils/filter-request-params.js +22 -0
- package/core/utils/interfaces/icomparable.d.ts +5 -0
- package/core/utils/interfaces/icomparable.js +6 -0
- package/core/utils/list.d.ts +24 -0
- package/core/utils/list.js +94 -0
- package/core/utils/promise-all.d.ts +7 -0
- package/core/utils/promise-all.js +19 -0
- package/core/utils/set-mask-document-number.d.ts +1 -0
- package/core/utils/set-mask-document-number.js +14 -0
- package/decorators/api-exclude-endpoint-diff-develop.decorator.d.ts +1 -0
- package/decorators/api-exclude-endpoint-diff-develop.decorator.js +9 -0
- package/decorators/api-property-only-develop.decorator.d.ts +2 -0
- package/decorators/api-property-only-develop.decorator.js +9 -0
- package/decorators/cookies.decorator.d.ts +1 -0
- package/decorators/cookies.decorator.js +8 -0
- package/decorators/is-cnpj.decorator.d.ts +2 -0
- package/decorators/is-cnpj.decorator.js +71 -0
- package/decorators/is-public.decorator.d.ts +2 -0
- package/decorators/is-public.decorator.js +7 -0
- package/filters/domain-errors.filter.d.ts +16 -0
- package/filters/domain-errors.filter.js +62 -0
- package/filters/global-exception.filter.d.ts +7 -0
- package/filters/global-exception.filter.js +39 -0
- package/filters/prisma-validation-exception.filter.d.ts +8 -0
- package/filters/prisma-validation-exception.filter.js +53 -0
- package/filters/zod-errors.filter.d.ts +7 -0
- package/filters/zod-errors.filter.js +30 -0
- package/package.json +91 -0
- package/services/env/env.d.ts +25 -0
- package/services/env/env.js +13 -0
- package/services/env/env.module.d.ts +2 -0
- package/services/env/env.module.js +19 -0
- package/services/env/env.service.d.ts +14 -0
- package/services/env/env.service.js +22 -0
- package/services/logging/ilogging.service.d.ts +16 -0
- package/services/logging/ilogging.service.js +6 -0
- package/services/logging/logging.service.d.ts +4 -0
- package/services/logging/logging.service.js +19 -0
- package/services/prisma/prisma-client-with-custom-transaction.interface.d.ts +8 -0
- package/services/prisma/prisma-client-with-custom-transaction.interface.js +2 -0
- package/services/prisma/prisma-transactional-client.d.ts +11 -0
- package/services/prisma/prisma-transactional-client.js +25 -0
- package/services/prisma/prisma.service.d.ts +13 -0
- package/services/prisma/prisma.service.js +38 -0
- package/services/prisma/prisma.types.d.ts +36 -0
- package/services/prisma/prisma.types.js +15 -0
- package/services/redis/iredis.service.d.ts +5 -0
- package/services/redis/iredis.service.js +6 -0
- package/services/redis/redis.service.d.ts +13 -0
- package/services/redis/redis.service.js +53 -0
- package/services/redlock/ired-lock.service.d.ts +4 -0
- package/services/redlock/ired-lock.service.js +6 -0
- package/services/redlock/red-lock.service.d.ts +9 -0
- package/services/redlock/red-lock.service.js +40 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2023 Igor D. Rangel
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="https://nestjs.com/" target="blank"><img src="https://nestjs.com/img/logo-small.svg" width="120" alt="Nest Logo" /></a>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">@koalarx/nest</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">Uma abstração <a href="https://nestjs.com" target="_blank">Nest.js</a> para APIs escaláveis.</p>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ILoggingService } from '../../../services/logging/ilogging.service';
|
|
2
|
+
import { IRedLockService } from '../../../services/redlock/ired-lock.service';
|
|
3
|
+
import { RequestResult } from '../../mediator/request-result';
|
|
4
|
+
export type CronJobResponse = RequestResult<Error, null>;
|
|
5
|
+
export declare abstract class CronJob {
|
|
6
|
+
private readonly redlockService;
|
|
7
|
+
private readonly loggingService;
|
|
8
|
+
private readonly loggedUsername;
|
|
9
|
+
private readonly appName;
|
|
10
|
+
readonly timeout: number;
|
|
11
|
+
protected constructor(redlockService: IRedLockService, loggingService: ILoggingService, loggedUsername: string, appName: string, timeInMinutes: number);
|
|
12
|
+
abstract run(): Promise<void>;
|
|
13
|
+
protected abstract isActive(): Promise<boolean>;
|
|
14
|
+
protected start(job: () => Promise<CronJobResponse>): Promise<void>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CronJob = void 0;
|
|
4
|
+
const delay_1 = require("@koalarx/utils/operators/delay");
|
|
5
|
+
class CronJob {
|
|
6
|
+
redlockService;
|
|
7
|
+
loggingService;
|
|
8
|
+
loggedUsername;
|
|
9
|
+
appName;
|
|
10
|
+
timeout;
|
|
11
|
+
constructor(redlockService, loggingService, loggedUsername, appName, timeInMinutes) {
|
|
12
|
+
this.redlockService = redlockService;
|
|
13
|
+
this.loggingService = loggingService;
|
|
14
|
+
this.loggedUsername = loggedUsername;
|
|
15
|
+
this.appName = appName;
|
|
16
|
+
this.timeout = timeInMinutes * 60 * 1000;
|
|
17
|
+
}
|
|
18
|
+
async start(job) {
|
|
19
|
+
const name = this.constructor.name;
|
|
20
|
+
while (true) {
|
|
21
|
+
if (await this.isActive()) {
|
|
22
|
+
const ttlSecondsLock = this.timeout / 1000;
|
|
23
|
+
const acquiredLock = await this.redlockService.acquiredLock(name, ttlSecondsLock);
|
|
24
|
+
if (acquiredLock) {
|
|
25
|
+
const error = await job()
|
|
26
|
+
.then((result) => {
|
|
27
|
+
if (result.isFailure()) {
|
|
28
|
+
return result.value;
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
})
|
|
32
|
+
.catch((error) => error);
|
|
33
|
+
if (error) {
|
|
34
|
+
this.loggingService.report({
|
|
35
|
+
error,
|
|
36
|
+
packageName: this.appName,
|
|
37
|
+
loggedUsername: this.loggedUsername,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
await (0, delay_1.klDelay)(this.timeout);
|
|
43
|
+
await this.redlockService.releaseLock(name);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.CronJob = CronJob;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EventClass = void 0;
|
|
4
|
+
class EventClass {
|
|
5
|
+
eventJob;
|
|
6
|
+
ocurredAt = new Date();
|
|
7
|
+
constructor(eventJob) {
|
|
8
|
+
this.eventJob = eventJob;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.EventClass = EventClass;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EventHandler = void 0;
|
|
4
|
+
const event_queue_1 = require("./event-queue");
|
|
5
|
+
class EventHandler {
|
|
6
|
+
setupSubscriptions() {
|
|
7
|
+
event_queue_1.EventQueue.register(this.handleEvent.bind(this), this.constructor.name);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.EventHandler = EventHandler;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Entity } from '../../../core/database/entity';
|
|
2
|
+
import { IComparable } from '../../../core/utils/interfaces/icomparable';
|
|
3
|
+
import { EventClass } from './event-class';
|
|
4
|
+
import { EventQueue } from './event-queue';
|
|
5
|
+
export declare class EventJob<TEntity extends IComparable> extends Entity<TEntity> {
|
|
6
|
+
private _eventQueue;
|
|
7
|
+
get eventQueue(): EventQueue[];
|
|
8
|
+
clearQueue(): void;
|
|
9
|
+
addEvent(event: EventClass<EventJob<TEntity>>): void;
|
|
10
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EventJob = void 0;
|
|
4
|
+
const entity_1 = require("../../../core/database/entity");
|
|
5
|
+
const event_queue_1 = require("./event-queue");
|
|
6
|
+
class EventJob extends entity_1.Entity {
|
|
7
|
+
_eventQueue = [];
|
|
8
|
+
get eventQueue() {
|
|
9
|
+
return this._eventQueue;
|
|
10
|
+
}
|
|
11
|
+
clearQueue() {
|
|
12
|
+
this._eventQueue = [];
|
|
13
|
+
}
|
|
14
|
+
addEvent(event) {
|
|
15
|
+
this.eventQueue.push(event);
|
|
16
|
+
event_queue_1.EventQueue.markAggregateForDispatch(this);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.EventJob = EventJob;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { IComparableId } from '../../../core/utils/interfaces/icomparable';
|
|
2
|
+
import { EventJob } from './event-job';
|
|
3
|
+
type EventJobCallback = (event: any) => void;
|
|
4
|
+
export declare class EventQueue {
|
|
5
|
+
private static handlersMap;
|
|
6
|
+
private static markedAggregates;
|
|
7
|
+
static markAggregateForDispatch(aggregate: EventJob<any>): void;
|
|
8
|
+
static dispatchEventsForAggregate(id: IComparableId): void;
|
|
9
|
+
static register(callback: EventJobCallback, eventClassName: string): void;
|
|
10
|
+
static clearHandlers(): void;
|
|
11
|
+
static clearMarkedAggregates(): void;
|
|
12
|
+
private static dispatchAggregateEvents;
|
|
13
|
+
private static removeAggregateFromMarkedDispatchList;
|
|
14
|
+
private static findMarkedAggregateByID;
|
|
15
|
+
private static dispatch;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EventQueue = void 0;
|
|
4
|
+
class EventQueue {
|
|
5
|
+
static handlersMap = {};
|
|
6
|
+
static markedAggregates = [];
|
|
7
|
+
static markAggregateForDispatch(aggregate) {
|
|
8
|
+
const aggregateFound = !!this.findMarkedAggregateByID(aggregate.id);
|
|
9
|
+
if (!aggregateFound) {
|
|
10
|
+
this.markedAggregates.push(aggregate);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
static dispatchEventsForAggregate(id) {
|
|
14
|
+
const aggregate = this.findMarkedAggregateByID(id);
|
|
15
|
+
if (aggregate) {
|
|
16
|
+
this.dispatchAggregateEvents(aggregate);
|
|
17
|
+
aggregate.clearQueue();
|
|
18
|
+
this.removeAggregateFromMarkedDispatchList(aggregate);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
static register(callback, eventClassName) {
|
|
22
|
+
const wasEventRegisteredBefore = eventClassName in this.handlersMap;
|
|
23
|
+
if (!wasEventRegisteredBefore) {
|
|
24
|
+
this.handlersMap[eventClassName] = [];
|
|
25
|
+
}
|
|
26
|
+
this.handlersMap[eventClassName].push(callback);
|
|
27
|
+
}
|
|
28
|
+
static clearHandlers() {
|
|
29
|
+
this.handlersMap = {};
|
|
30
|
+
}
|
|
31
|
+
static clearMarkedAggregates() {
|
|
32
|
+
this.markedAggregates = [];
|
|
33
|
+
}
|
|
34
|
+
static dispatchAggregateEvents(aggregate) {
|
|
35
|
+
aggregate.eventQueue.forEach((event) => this.dispatch(event));
|
|
36
|
+
}
|
|
37
|
+
static removeAggregateFromMarkedDispatchList(aggregate) {
|
|
38
|
+
const index = this.markedAggregates.findIndex((a) => a.equals(aggregate));
|
|
39
|
+
this.markedAggregates.splice(index, 1);
|
|
40
|
+
}
|
|
41
|
+
static findMarkedAggregateByID(id) {
|
|
42
|
+
return this.markedAggregates.find((aggregate) => aggregate.id === id);
|
|
43
|
+
}
|
|
44
|
+
static dispatch(event) {
|
|
45
|
+
const eventClassName = event.constructor.name;
|
|
46
|
+
const isEventRegistered = eventClassName in this.handlersMap;
|
|
47
|
+
if (isEventRegistered) {
|
|
48
|
+
const handlers = this.handlersMap[eventClassName];
|
|
49
|
+
for (const handler of handlers) {
|
|
50
|
+
handler(event);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.EventQueue = EventQueue;
|
|
@@ -0,0 +1,17 @@
|
|
|
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.CreatedRegistreResponseBase = void 0;
|
|
10
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
11
|
+
class CreatedRegistreResponseBase {
|
|
12
|
+
id;
|
|
13
|
+
}
|
|
14
|
+
exports.CreatedRegistreResponseBase = CreatedRegistreResponseBase;
|
|
15
|
+
__decorate([
|
|
16
|
+
(0, swagger_1.ApiProperty)()
|
|
17
|
+
], CreatedRegistreResponseBase.prototype, "id", void 0);
|
|
@@ -0,0 +1,17 @@
|
|
|
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.ListResponseBase = void 0;
|
|
10
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
11
|
+
class ListResponseBase {
|
|
12
|
+
count;
|
|
13
|
+
}
|
|
14
|
+
exports.ListResponseBase = ListResponseBase;
|
|
15
|
+
__decorate([
|
|
16
|
+
(0, swagger_1.ApiProperty)()
|
|
17
|
+
], ListResponseBase.prototype, "count", void 0);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RouterConfigBase = void 0;
|
|
4
|
+
class RouterConfigBase {
|
|
5
|
+
_tag;
|
|
6
|
+
_group;
|
|
7
|
+
constructor(_tag, _group) {
|
|
8
|
+
this._tag = _tag;
|
|
9
|
+
this._group = _group;
|
|
10
|
+
}
|
|
11
|
+
get group() {
|
|
12
|
+
return this._group;
|
|
13
|
+
}
|
|
14
|
+
get tag() {
|
|
15
|
+
return this._tag;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.RouterConfigBase = RouterConfigBase;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function documentNumberSchema(value: string): boolean;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.documentNumberSchema = void 0;
|
|
4
|
+
const string_1 = require("@koalarx/utils/operators/string");
|
|
5
|
+
function documentNumberSchema(value) {
|
|
6
|
+
if (value !== '' && value !== 'undefined' && value !== 'null') {
|
|
7
|
+
if (value.includes('.')) {
|
|
8
|
+
if (value.length === 14) {
|
|
9
|
+
return (0, string_1.validateCpf)(value);
|
|
10
|
+
}
|
|
11
|
+
else if (value.length === 18) {
|
|
12
|
+
return (0, string_1.validateCnpj)(value);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
if (value.length === 11) {
|
|
17
|
+
return (0, string_1.validateCpf)(value);
|
|
18
|
+
}
|
|
19
|
+
else if (value.length === 14) {
|
|
20
|
+
return (0, string_1.validateCnpj)(value);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
exports.documentNumberSchema = documentNumberSchema;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function emailSchema(email?: string, isRequired?: boolean): string | boolean;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.emailSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
function emailSchema(email, isRequired = false) {
|
|
6
|
+
if (isRequired && !email) {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
if (!email) {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
return zod_1.z.coerce.string().max(50).email().parse(email);
|
|
13
|
+
}
|
|
14
|
+
exports.emailSchema = emailSchema;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const LIST_QUERY_SCHEMA: z.ZodObject<{
|
|
3
|
+
page: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, number>>;
|
|
4
|
+
limit: z.ZodOptional<z.ZodDefault<z.ZodNumber>>;
|
|
5
|
+
orderBy: z.ZodOptional<z.ZodString>;
|
|
6
|
+
direction: z.ZodOptional<z.ZodDefault<z.ZodEnum<["asc", "desc"]>>>;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
page?: number | undefined;
|
|
9
|
+
limit?: number | undefined;
|
|
10
|
+
orderBy?: string | undefined;
|
|
11
|
+
direction?: "asc" | "desc" | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
page?: number | undefined;
|
|
14
|
+
limit?: number | undefined;
|
|
15
|
+
orderBy?: string | undefined;
|
|
16
|
+
direction?: "asc" | "desc" | undefined;
|
|
17
|
+
}>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LIST_QUERY_SCHEMA = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const pagination_params_1 = require("../../models/pagination-params");
|
|
6
|
+
exports.LIST_QUERY_SCHEMA = zod_1.z.object({
|
|
7
|
+
page: zod_1.z.coerce
|
|
8
|
+
.number()
|
|
9
|
+
.transform((value) => {
|
|
10
|
+
if (value) {
|
|
11
|
+
return value - 1;
|
|
12
|
+
}
|
|
13
|
+
return pagination_params_1.QueryFilterParams.page;
|
|
14
|
+
})
|
|
15
|
+
.optional(),
|
|
16
|
+
limit: zod_1.z.coerce.number().default(pagination_params_1.QueryFilterParams.limit).optional(),
|
|
17
|
+
orderBy: zod_1.z.string().optional(),
|
|
18
|
+
direction: zod_1.z.enum(['asc', 'desc']).default('asc').optional(),
|
|
19
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
interface NativeEnumInterface<TEnum> {
|
|
3
|
+
isOptional: (value: string) => TEnum[keyof TEnum] | undefined;
|
|
4
|
+
isRequired: (value: string) => TEnum[keyof TEnum];
|
|
5
|
+
}
|
|
6
|
+
export declare function nativeEnumSchema<TEnum extends z.EnumLike>(nativeEnum: TEnum): NativeEnumInterface<TEnum>;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.nativeEnumSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
function nativeEnumSchema(nativeEnum) {
|
|
6
|
+
return {
|
|
7
|
+
isOptional: (value) => {
|
|
8
|
+
if (value === 'null' || value === '') {
|
|
9
|
+
return undefined;
|
|
10
|
+
}
|
|
11
|
+
return zod_1.z.coerce
|
|
12
|
+
.number()
|
|
13
|
+
.transform((value) => {
|
|
14
|
+
if (value !== undefined) {
|
|
15
|
+
return zod_1.z.nativeEnum(nativeEnum).parse(value);
|
|
16
|
+
}
|
|
17
|
+
return undefined;
|
|
18
|
+
})
|
|
19
|
+
.parse(value);
|
|
20
|
+
},
|
|
21
|
+
isRequired: (value) => {
|
|
22
|
+
return zod_1.z.coerce
|
|
23
|
+
.number()
|
|
24
|
+
.transform((value) => zod_1.z.nativeEnum(nativeEnum).parse(value))
|
|
25
|
+
.parse(value);
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
exports.nativeEnumSchema = nativeEnumSchema;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BadRequestError = void 0;
|
|
4
|
+
class BadRequestError extends Error {
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(message ?? 'Bad Request');
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.BadRequestError = BadRequestError;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConflictError = void 0;
|
|
4
|
+
class ConflictError extends Error {
|
|
5
|
+
constructor(identifier) {
|
|
6
|
+
super(`O registro ${identifier} já existe.`);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.ConflictError = ConflictError;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NotAllowedError = void 0;
|
|
4
|
+
class NotAllowedError extends Error {
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(message ?? 'Você não tem permissão para utilizar esse recurso.');
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.NotAllowedError = NotAllowedError;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResourceNotFoundError = void 0;
|
|
4
|
+
class ResourceNotFoundError extends Error {
|
|
5
|
+
constructor(name = 'Recurso') {
|
|
6
|
+
super(`${name} não encontrado(a).`);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.ResourceNotFoundError = ResourceNotFoundError;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserAlreadyExist = void 0;
|
|
4
|
+
class UserAlreadyExist extends Error {
|
|
5
|
+
constructor(identifier) {
|
|
6
|
+
super(`User ${identifier} already exists`);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.UserAlreadyExist = UserAlreadyExist;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WrongCredentialsError = void 0;
|
|
4
|
+
class WrongCredentialsError extends Error {
|
|
5
|
+
constructor() {
|
|
6
|
+
super('Credentials are not valid');
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.WrongCredentialsError = WrongCredentialsError;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare class Failure<L, R> {
|
|
2
|
+
readonly value: L;
|
|
3
|
+
constructor(value: L);
|
|
4
|
+
isFailure(): this is Failure<L, R>;
|
|
5
|
+
isOk(): this is Ok<L, R>;
|
|
6
|
+
}
|
|
7
|
+
export declare class Ok<L, R> {
|
|
8
|
+
readonly value: R;
|
|
9
|
+
constructor(value: R);
|
|
10
|
+
isFailure(): this is Failure<L, R>;
|
|
11
|
+
isOk(): this is Ok<L, R>;
|
|
12
|
+
}
|
|
13
|
+
export type RequestResult<L, R> = Failure<L, R> | Ok<L, R>;
|
|
14
|
+
export declare const failure: <L, R>(value: L) => RequestResult<L, R>;
|
|
15
|
+
export declare const ok: <L, R>(value: R) => RequestResult<L, R>;
|