@koalarx/nest 0.0.9 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/backgroud-services/cron-service/cron-job.d.ts +14 -0
- package/{common → core}/backgroud-services/cron-service/cron-job.js +18 -16
- package/core/backgroud-services/cron-service/cron-job.spec.d.ts +8 -0
- package/core/backgroud-services/cron-service/cron-job.spec.js +33 -0
- package/core/backgroud-services/event-service/event-class.d.ts +5 -0
- package/{common → core}/backgroud-services/event-service/event-class.js +3 -3
- package/core/backgroud-services/event-service/event-handler.d.ts +5 -0
- package/core/backgroud-services/event-service/event-job.d.ts +13 -0
- package/{common → core}/backgroud-services/event-service/event-job.js +4 -2
- package/{common → core}/backgroud-services/event-service/event-queue.js +9 -6
- package/core/backgroud-services/event-service/event-queue.spec.d.ts +1 -0
- package/core/backgroud-services/event-service/event-queue.spec.js +34 -0
- package/core/controllers/created-registre-response.base.d.ts +4 -0
- package/{common → core}/controllers/created-registre-response.base.js +5 -1
- package/{common → core}/controllers/list-response.base.js +5 -1
- package/core/controllers/schemas/boolean.schema.d.ts +2 -0
- package/core/controllers/schemas/boolean.schema.js +15 -0
- package/core/database/entity.base.d.ts +9 -0
- package/core/database/entity.base.js +39 -0
- package/{services/prisma → core/database}/prisma-transactional-client.d.ts +1 -2
- package/{services/prisma → core/database}/prisma.service.js +5 -1
- package/core/database/repository.base.d.ts +29 -13
- package/core/database/repository.base.js +142 -15
- package/core/koala-app.d.ts +10 -8
- package/core/koala-app.js +41 -8
- package/core/koala-global-vars.d.ts +7 -0
- package/core/koala-global-vars.js +9 -0
- package/core/koala-nest-database.module.d.ts +2 -2
- package/core/koala-nest-database.module.js +18 -18
- package/core/koala-nest-http.module.d.ts +5 -5
- package/core/koala-nest-http.module.js +8 -14
- package/core/koala-nest.module.d.ts +1 -3
- package/core/koala-nest.module.js +12 -18
- package/core/mapping/auto-mapping-class-context.d.ts +15 -0
- package/core/mapping/auto-mapping-class-context.js +18 -0
- package/core/mapping/auto-mapping-context.d.ts +11 -0
- package/core/mapping/auto-mapping-context.js +24 -0
- package/core/mapping/auto-mapping-list.d.ts +18 -0
- package/core/mapping/auto-mapping-list.js +46 -0
- package/core/mapping/auto-mapping-profile.d.ts +3 -0
- package/core/mapping/auto-mapping-profile.js +6 -0
- package/core/mapping/auto-mapping.decorator.d.ts +9 -0
- package/core/mapping/auto-mapping.decorator.js +27 -0
- package/core/mapping/auto-mapping.module.d.ts +5 -0
- package/core/mapping/auto-mapping.module.js +28 -0
- package/core/mapping/auto-mapping.service.d.ts +10 -0
- package/core/mapping/auto-mapping.service.js +93 -0
- package/core/mapping/create-map.d.ts +3 -0
- package/core/mapping/create-map.js +8 -0
- package/core/mapping/for-member.d.ts +5 -0
- package/core/mapping/for-member.js +9 -0
- package/{common → core}/models/pagination-params.d.ts +3 -0
- package/{common → core}/models/pagination-params.js +11 -4
- package/{common/mediator → core/request-overflow}/request-handler.base.d.ts +1 -1
- package/core/request-overflow/request-result.spec.d.ts +1 -0
- package/core/request-overflow/request-result.spec.js +21 -0
- package/{common/mediator → core/request-overflow}/request-validator.base.d.ts +1 -1
- package/{common/mediator → core/request-overflow}/request-validator.base.js +1 -1
- package/core/utils/assing-object.d.ts +2 -0
- package/core/utils/assing-object.js +7 -0
- package/core/utils/interfaces/icomparable.d.ts +1 -1
- package/core/utils/list.d.ts +17 -6
- package/core/utils/list.js +62 -15
- package/core/utils/list.spec.d.ts +1 -0
- package/core/utils/list.spec.js +42 -0
- package/{services/env → env}/env.d.ts +6 -6
- package/{services/env → env}/env.js +2 -2
- package/{services/env → env}/env.service.d.ts +2 -2
- package/{services/env → env}/env.service.js +6 -1
- package/filters/domain-errors.filter.d.ts +7 -7
- package/filters/domain-errors.filter.js +7 -7
- package/filters/global-exception.filter.js +5 -1
- package/package.json +10 -27
- package/services/redis/redis.service.d.ts +1 -1
- package/services/redis/redis.service.js +6 -1
- package/services/redlock/red-lock.service.js +6 -1
- package/test/koala-app-test-dependencies.d.ts +10 -0
- package/test/koala-app-test-dependencies.js +13 -0
- package/test/koala-app-test.d.ts +20 -0
- package/test/koala-app-test.js +66 -0
- package/test/repositories/in-memory-base.repository.d.ts +16 -0
- package/test/repositories/in-memory-base.repository.js +55 -0
- package/test/services/fake-logging.service.d.ts +4 -0
- package/test/services/fake-logging.service.js +9 -0
- package/test/services/fake-red-lock.service.d.ts +5 -0
- package/test/services/fake-red-lock.service.js +11 -0
- package/test/utils/create-e2e-database.d.ts +2 -0
- package/test/utils/create-e2e-database.js +27 -0
- package/test/utils/drop-e2e-database.d.ts +1 -0
- package/test/utils/drop-e2e-database.js +8 -0
- package/test/utils/wait-for.d.ts +1 -0
- package/test/utils/wait-for.js +22 -0
- package/tsconfig.lib.tsbuildinfo +1 -0
- package/common/backgroud-services/cron-service/cron-job.d.ts +0 -15
- package/common/backgroud-services/event-service/event-class.d.ts +0 -5
- package/common/backgroud-services/event-service/event-handler.d.ts +0 -5
- package/common/backgroud-services/event-service/event-job.d.ts +0 -10
- package/common/controllers/created-registre-response.base.d.ts +0 -4
- package/core/database/entity.d.ts +0 -8
- package/core/database/entity.js +0 -31
- package/decorators/is-cnpj.decorator.d.ts +0 -2
- package/decorators/is-cnpj.decorator.js +0 -71
- package/services/prisma/prisma.types.d.ts +0 -36
- package/services/prisma/prisma.types.js +0 -15
- /package/{common → core}/backgroud-services/event-service/event-handler.js +0 -0
- /package/{common → core}/backgroud-services/event-service/event-is-trigger.d.ts +0 -0
- /package/{common → core}/backgroud-services/event-service/event-is-trigger.js +0 -0
- /package/{common → core}/backgroud-services/event-service/event-queue.d.ts +0 -0
- /package/{common → core}/controllers/base.controller.d.ts +0 -0
- /package/{common → core}/controllers/base.controller.js +0 -0
- /package/{common → core}/controllers/list-response.base.d.ts +0 -0
- /package/{common → core}/controllers/router-config.base.d.ts +0 -0
- /package/{common → core}/controllers/router-config.base.js +0 -0
- /package/{common → core}/controllers/schemas/document-number.schema.d.ts +0 -0
- /package/{common → core}/controllers/schemas/document-number.schema.js +0 -0
- /package/{common → core}/controllers/schemas/email.schema.d.ts +0 -0
- /package/{common → core}/controllers/schemas/email.schema.js +0 -0
- /package/{common → core}/controllers/schemas/list-query.schema.d.ts +0 -0
- /package/{common → core}/controllers/schemas/list-query.schema.js +0 -0
- /package/{common → core}/controllers/schemas/native-enum.schema.d.ts +0 -0
- /package/{common → core}/controllers/schemas/native-enum.schema.js +0 -0
- /package/{services/prisma → core/database}/prisma-client-with-custom-transaction.interface.d.ts +0 -0
- /package/{services/prisma → core/database}/prisma-client-with-custom-transaction.interface.js +0 -0
- /package/{services/prisma → core/database}/prisma-transactional-client.js +0 -0
- /package/{services/prisma → core/database}/prisma.service.d.ts +0 -0
- /package/{common → core}/errors/bad-request.error.d.ts +0 -0
- /package/{common → core}/errors/bad-request.error.js +0 -0
- /package/{common → core}/errors/conflict.error.d.ts +0 -0
- /package/{common → core}/errors/conflict.error.js +0 -0
- /package/{common → core}/errors/no-content.error.d.ts +0 -0
- /package/{common → core}/errors/no-content.error.js +0 -0
- /package/{common → core}/errors/not-allowed.error.d.ts +0 -0
- /package/{common → core}/errors/not-allowed.error.js +0 -0
- /package/{common → core}/errors/resource-not-found.error.d.ts +0 -0
- /package/{common → core}/errors/resource-not-found.error.js +0 -0
- /package/{common → core}/errors/use-case-error.d.ts +0 -0
- /package/{common → core}/errors/use-case-error.js +0 -0
- /package/{common → core}/errors/user-already-exist.error.d.ts +0 -0
- /package/{common → core}/errors/user-already-exist.error.js +0 -0
- /package/{common → core}/errors/wrong-credentials.error.d.ts +0 -0
- /package/{common → core}/errors/wrong-credentials.error.js +0 -0
- /package/{common/mediator → core/request-overflow}/request-handler.base.js +0 -0
- /package/{common/mediator → core/request-overflow}/request-result.d.ts +0 -0
- /package/{common/mediator → core/request-overflow}/request-result.js +0 -0
- /package/{services/env → env}/env.module.d.ts +0 -0
- /package/{services/env → env}/env.module.js +0 -0
package/core/koala-app.d.ts
CHANGED
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
import { INestApplication, Type } from '@nestjs/common';
|
|
2
2
|
import { BaseExceptionFilter } from '@nestjs/core';
|
|
3
|
-
import { CronJob } from '../
|
|
4
|
-
import { EventHandler } from '../
|
|
3
|
+
import { CronJob } from '../core/backgroud-services/cron-service/cron-job';
|
|
4
|
+
import { EventHandler } from '../core/backgroud-services/event-service/event-handler';
|
|
5
|
+
import { PrismaTransactionalClient } from './database/prisma-transactional-client';
|
|
5
6
|
interface ApiDocConfig {
|
|
6
7
|
endpoint: string;
|
|
7
8
|
title: string;
|
|
9
|
+
ui?: 'swagger' | 'scalar';
|
|
8
10
|
description?: string;
|
|
9
11
|
externalDoc?: {
|
|
10
12
|
message: string;
|
|
11
13
|
url: string;
|
|
12
14
|
};
|
|
13
15
|
version: string;
|
|
14
|
-
accessDocWithCredentials?: {
|
|
15
|
-
username: string;
|
|
16
|
-
password: string;
|
|
17
|
-
};
|
|
18
16
|
withAuthorization?: boolean;
|
|
19
17
|
}
|
|
20
18
|
type CronJobClass = string | symbol | Function | Type<CronJob>;
|
|
19
|
+
type EventJobClass = string | symbol | Function | Type<EventHandler<any>>;
|
|
21
20
|
export declare class KoalaApp {
|
|
22
21
|
private readonly app;
|
|
23
22
|
private _globalExceptionFilter;
|
|
@@ -28,13 +27,16 @@ export declare class KoalaApp {
|
|
|
28
27
|
private _eventJobs;
|
|
29
28
|
constructor(app: INestApplication<any>);
|
|
30
29
|
addCronJob(job: CronJobClass): this;
|
|
31
|
-
addEventJob(eventJob:
|
|
30
|
+
addEventJob(eventJob: EventJobClass): this;
|
|
32
31
|
addCustomGlobalExceptionFilter(filter: BaseExceptionFilter): this;
|
|
33
32
|
addCustomPrismaValidationExceptionFilter(filter: BaseExceptionFilter): this;
|
|
34
33
|
addCustomDomainExceptionFilter(filter: BaseExceptionFilter): this;
|
|
35
34
|
addCustomZodExceptionFilter(filter: BaseExceptionFilter): this;
|
|
36
|
-
|
|
35
|
+
useDoc(config: ApiDocConfig): this;
|
|
37
36
|
enableCors(): this;
|
|
37
|
+
setAppName(name: string): this;
|
|
38
|
+
setInternalUserName(name: string): this;
|
|
39
|
+
setDbTransactionContext(transactionContext: Type<PrismaTransactionalClient>): this;
|
|
38
40
|
build(): Promise<INestApplication<any>>;
|
|
39
41
|
}
|
|
40
42
|
export {};
|
package/core/koala-app.js
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.KoalaApp = void 0;
|
|
4
|
+
const common_1 = require("@nestjs/common");
|
|
4
5
|
const core_1 = require("@nestjs/core");
|
|
5
6
|
const swagger_1 = require("@nestjs/swagger");
|
|
6
|
-
const
|
|
7
|
+
const nestjs_api_reference_1 = require("@scalar/nestjs-api-reference");
|
|
8
|
+
const expressBasicAuth = require("express-basic-auth");
|
|
7
9
|
const domain_errors_filter_1 = require("../filters/domain-errors.filter");
|
|
8
10
|
const global_exception_filter_1 = require("../filters/global-exception.filter");
|
|
9
11
|
const prisma_validation_exception_filter_1 = require("../filters/prisma-validation-exception.filter");
|
|
10
12
|
const zod_errors_filter_1 = require("../filters/zod-errors.filter");
|
|
13
|
+
const koala_global_vars_1 = require("./koala-global-vars");
|
|
11
14
|
const env_config_1 = require("./utils/env.config");
|
|
12
15
|
class KoalaApp {
|
|
13
16
|
app;
|
|
@@ -50,12 +53,16 @@ class KoalaApp {
|
|
|
50
53
|
this._zodExceptionFilter = filter;
|
|
51
54
|
return this;
|
|
52
55
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
+
useDoc(config) {
|
|
57
|
+
const credentials = {
|
|
58
|
+
username: process.env.SWAGGER_USERNAME ?? '',
|
|
59
|
+
password: process.env.SWAGGER_PASSWORD ?? ''
|
|
60
|
+
};
|
|
61
|
+
if (env_config_1.EnvConfig.isEnvDevelop && credentials.username && credentials.password) {
|
|
62
|
+
this.app.use([config.endpoint], expressBasicAuth({
|
|
56
63
|
challenge: true,
|
|
57
64
|
users: {
|
|
58
|
-
[
|
|
65
|
+
[credentials.username]: credentials.password
|
|
59
66
|
},
|
|
60
67
|
}));
|
|
61
68
|
}
|
|
@@ -73,7 +80,15 @@ class KoalaApp {
|
|
|
73
80
|
}
|
|
74
81
|
const document = swagger_1.SwaggerModule.createDocument(this.app, documentBuilder.build());
|
|
75
82
|
const swaggerEndpoint = config.endpoint;
|
|
76
|
-
|
|
83
|
+
if (config.ui === 'scalar' && swaggerEndpoint === '/') {
|
|
84
|
+
throw new common_1.InternalServerErrorException("O endpoint de documentação não pode ser '/' para UI Scalar.");
|
|
85
|
+
}
|
|
86
|
+
swagger_1.SwaggerModule.setup(swaggerEndpoint, this.app, document, {
|
|
87
|
+
swaggerUiEnabled: config.ui !== 'scalar',
|
|
88
|
+
});
|
|
89
|
+
if (config.ui === 'scalar') {
|
|
90
|
+
this.app.use(swaggerEndpoint, (0, nestjs_api_reference_1.apiReference)({ spec: { content: document } }));
|
|
91
|
+
}
|
|
77
92
|
return this;
|
|
78
93
|
}
|
|
79
94
|
enableCors() {
|
|
@@ -84,10 +99,28 @@ class KoalaApp {
|
|
|
84
99
|
});
|
|
85
100
|
return this;
|
|
86
101
|
}
|
|
102
|
+
setAppName(name) {
|
|
103
|
+
koala_global_vars_1.KoalaGlobalVars.appName = name;
|
|
104
|
+
return this;
|
|
105
|
+
}
|
|
106
|
+
setInternalUserName(name) {
|
|
107
|
+
koala_global_vars_1.KoalaGlobalVars.internalUserName = name;
|
|
108
|
+
return this;
|
|
109
|
+
}
|
|
110
|
+
setDbTransactionContext(transactionContext) {
|
|
111
|
+
koala_global_vars_1.KoalaGlobalVars.dbTransactionContext = transactionContext;
|
|
112
|
+
return this;
|
|
113
|
+
}
|
|
87
114
|
async build() {
|
|
88
115
|
this.app.useGlobalFilters(this._globalExceptionFilter, this._prismaValidationExceptionFilter, this._domainExceptionFilter, this._zodExceptionFilter);
|
|
89
|
-
Promise.all(this._cronJobs.map((job) => this.app.resolve(job)))
|
|
90
|
-
|
|
116
|
+
const cronJobs = await Promise.all(this._cronJobs.map((job) => this.app.resolve(job)));
|
|
117
|
+
for (const cronJob of cronJobs) {
|
|
118
|
+
cronJob.start();
|
|
119
|
+
}
|
|
120
|
+
const eventJobs = await Promise.all(this._eventJobs.map((job) => this.app.resolve(job)));
|
|
121
|
+
for (const eventJob of eventJobs) {
|
|
122
|
+
eventJob.setupSubscriptions();
|
|
123
|
+
}
|
|
91
124
|
return this.app;
|
|
92
125
|
}
|
|
93
126
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Type } from "@nestjs/common";
|
|
2
|
+
import { PrismaTransactionalClient } from "./database/prisma-transactional-client";
|
|
3
|
+
export declare class KoalaGlobalVars {
|
|
4
|
+
static appName: string;
|
|
5
|
+
static internalUserName: string;
|
|
6
|
+
static dbTransactionContext?: Type<PrismaTransactionalClient>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KoalaGlobalVars = void 0;
|
|
4
|
+
class KoalaGlobalVars {
|
|
5
|
+
static appName = 'koala-nest';
|
|
6
|
+
static internalUserName = 'internal';
|
|
7
|
+
static dbTransactionContext;
|
|
8
|
+
}
|
|
9
|
+
exports.KoalaGlobalVars = KoalaGlobalVars;
|
|
@@ -6,9 +6,9 @@ export interface KoalaNestDatabaseRepositoryConfig {
|
|
|
6
6
|
class: Type<RepositoryBase<any>>;
|
|
7
7
|
}
|
|
8
8
|
interface KoalaNestDatabaseModuleConfig {
|
|
9
|
-
repositories
|
|
9
|
+
repositories: KoalaNestDatabaseRepositoryConfig[];
|
|
10
10
|
}
|
|
11
11
|
export declare class KoalaNestDatabaseModule {
|
|
12
|
-
static
|
|
12
|
+
static register(config: KoalaNestDatabaseModuleConfig): DynamicModule;
|
|
13
13
|
}
|
|
14
14
|
export {};
|
|
@@ -9,30 +9,30 @@ var KoalaNestDatabaseModule_1;
|
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.KoalaNestDatabaseModule = exports.PRISMA_TOKEN = void 0;
|
|
11
11
|
const common_1 = require("@nestjs/common");
|
|
12
|
-
const env_service_1 = require("../
|
|
13
|
-
const prisma_service_1 = require("
|
|
12
|
+
const env_service_1 = require("../env/env.service");
|
|
13
|
+
const prisma_service_1 = require("./database/prisma.service");
|
|
14
14
|
exports.PRISMA_TOKEN = 'PRISMA_SERVICE_TOKEN';
|
|
15
15
|
let KoalaNestDatabaseModule = exports.KoalaNestDatabaseModule = KoalaNestDatabaseModule_1 = class KoalaNestDatabaseModule {
|
|
16
|
-
static
|
|
16
|
+
static register(config) {
|
|
17
|
+
const repositoriesToExport = config.repositories?.map((repository) => repository.interface) ?? [];
|
|
18
|
+
const repositoriesToProvide = config.repositories?.map((repository) => ({
|
|
19
|
+
provide: repository.interface,
|
|
20
|
+
useClass: repository.class,
|
|
21
|
+
})) ?? [];
|
|
17
22
|
return {
|
|
18
23
|
module: KoalaNestDatabaseModule_1,
|
|
19
|
-
providers:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
providers: [
|
|
25
|
+
{
|
|
26
|
+
provide: exports.PRISMA_TOKEN,
|
|
27
|
+
useClass: prisma_service_1.PrismaService,
|
|
28
|
+
},
|
|
29
|
+
...repositoriesToProvide,
|
|
30
|
+
env_service_1.EnvService,
|
|
31
|
+
],
|
|
32
|
+
exports: [exports.PRISMA_TOKEN, ...repositoriesToExport],
|
|
24
33
|
};
|
|
25
34
|
}
|
|
26
35
|
};
|
|
27
36
|
exports.KoalaNestDatabaseModule = KoalaNestDatabaseModule = KoalaNestDatabaseModule_1 = __decorate([
|
|
28
|
-
(0, common_1.Module)({
|
|
29
|
-
providers: [
|
|
30
|
-
{
|
|
31
|
-
provide: exports.PRISMA_TOKEN,
|
|
32
|
-
useClass: prisma_service_1.PrismaService,
|
|
33
|
-
},
|
|
34
|
-
env_service_1.EnvService,
|
|
35
|
-
],
|
|
36
|
-
exports: [exports.PRISMA_TOKEN],
|
|
37
|
-
})
|
|
37
|
+
(0, common_1.Module)({})
|
|
38
38
|
], KoalaNestDatabaseModule);
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { DynamicModule, MiddlewareConsumer, NestMiddleware, NestModule,
|
|
2
|
-
import {
|
|
1
|
+
import { DynamicModule, MiddlewareConsumer, NestMiddleware, NestModule, Type } from '@nestjs/common';
|
|
2
|
+
import { AutoMappingProfile } from './mapping/auto-mapping-profile';
|
|
3
3
|
interface KoalaNestHttpModuleConfig {
|
|
4
|
-
automapperProfile:
|
|
5
|
-
middlewares
|
|
4
|
+
automapperProfile: Type<AutoMappingProfile>;
|
|
5
|
+
middlewares?: Type<NestMiddleware>[];
|
|
6
6
|
}
|
|
7
7
|
export declare class KoalaNestHttpModule implements NestModule {
|
|
8
8
|
private static _config;
|
|
9
|
-
static
|
|
9
|
+
static register(config: KoalaNestHttpModuleConfig): DynamicModule;
|
|
10
10
|
configure(consumer: MiddlewareConsumer): void;
|
|
11
11
|
}
|
|
12
12
|
export {};
|
|
@@ -9,30 +9,24 @@ var KoalaNestHttpModule_1;
|
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
10
|
exports.KoalaNestHttpModule = void 0;
|
|
11
11
|
const common_1 = require("@nestjs/common");
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const env_service_1 = require("../services/env/env.service");
|
|
12
|
+
const env_service_1 = require("../env/env.service");
|
|
13
|
+
const auto_mapping_module_1 = require("./mapping/auto-mapping.module");
|
|
15
14
|
let KoalaNestHttpModule = exports.KoalaNestHttpModule = class KoalaNestHttpModule {
|
|
16
15
|
static { KoalaNestHttpModule_1 = this; }
|
|
17
16
|
static _config;
|
|
18
|
-
static
|
|
17
|
+
static register(config) {
|
|
19
18
|
this._config = config;
|
|
20
19
|
return {
|
|
21
20
|
module: KoalaNestHttpModule_1,
|
|
22
|
-
|
|
21
|
+
imports: [auto_mapping_module_1.AutoMappingModule.register(config.automapperProfile)],
|
|
22
|
+
providers: [env_service_1.EnvService],
|
|
23
|
+
exports: [auto_mapping_module_1.AutoMappingModule],
|
|
23
24
|
};
|
|
24
25
|
}
|
|
25
26
|
configure(consumer) {
|
|
26
|
-
KoalaNestHttpModule_1._config.middlewares
|
|
27
|
+
KoalaNestHttpModule_1._config.middlewares?.forEach((middleware) => consumer.apply(middleware).forRoutes('*'));
|
|
27
28
|
}
|
|
28
29
|
};
|
|
29
30
|
exports.KoalaNestHttpModule = KoalaNestHttpModule = KoalaNestHttpModule_1 = __decorate([
|
|
30
|
-
(0, common_1.Module)({
|
|
31
|
-
imports: [
|
|
32
|
-
automapper_nestjs_1.AutomapperModule.forRoot({
|
|
33
|
-
strategyInitializer: (0, automapper_classes_1.classes)(),
|
|
34
|
-
}),
|
|
35
|
-
],
|
|
36
|
-
providers: [env_service_1.EnvService],
|
|
37
|
-
})
|
|
31
|
+
(0, common_1.Module)({})
|
|
38
32
|
], KoalaNestHttpModule);
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { DynamicModule, Provider } from '@nestjs/common';
|
|
2
2
|
import { ZodType } from 'zod';
|
|
3
3
|
import { ILoggingService } from '../services/logging/ilogging.service';
|
|
4
|
-
import { KoalaNestDatabaseRepositoryConfig } from './koala-nest-database.module';
|
|
5
4
|
interface KoalaNestModuleConfig {
|
|
6
5
|
logging?: Provider<ILoggingService>;
|
|
7
6
|
env?: ZodType;
|
|
8
|
-
repositories?: KoalaNestDatabaseRepositoryConfig[];
|
|
9
7
|
}
|
|
10
8
|
export declare class KoalaNestModule {
|
|
11
|
-
static
|
|
9
|
+
static register(config?: KoalaNestModuleConfig): DynamicModule;
|
|
12
10
|
}
|
|
13
11
|
export {};
|
|
@@ -10,45 +10,39 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
10
10
|
exports.KoalaNestModule = void 0;
|
|
11
11
|
const common_1 = require("@nestjs/common");
|
|
12
12
|
const config_1 = require("@nestjs/config");
|
|
13
|
-
const env_1 = require("../
|
|
14
|
-
const
|
|
13
|
+
const env_1 = require("../env/env");
|
|
14
|
+
const env_module_1 = require("../env/env.module");
|
|
15
|
+
const env_service_1 = require("../env/env.service");
|
|
15
16
|
const ilogging_service_1 = require("../services/logging/ilogging.service");
|
|
16
17
|
const logging_service_1 = require("../services/logging/logging.service");
|
|
17
18
|
const iredis_service_1 = require("../services/redis/iredis.service");
|
|
18
19
|
const redis_service_1 = require("../services/redis/redis.service");
|
|
19
20
|
const ired_lock_service_1 = require("../services/redlock/ired-lock.service");
|
|
20
21
|
const red_lock_service_1 = require("../services/redlock/red-lock.service");
|
|
21
|
-
const koala_nest_database_module_1 = require("./koala-nest-database.module");
|
|
22
|
-
const env_module_1 = require("../services/env/env.module");
|
|
23
22
|
let KoalaNestModule = exports.KoalaNestModule = KoalaNestModule_1 = class KoalaNestModule {
|
|
24
|
-
static
|
|
23
|
+
static register(config) {
|
|
25
24
|
return {
|
|
26
25
|
module: KoalaNestModule_1,
|
|
27
26
|
imports: [
|
|
28
27
|
config_1.ConfigModule.forRoot({
|
|
29
|
-
validate: (envData) => (env ?? env_1.envSchema).parse(envData),
|
|
28
|
+
validate: (envData) => (config?.env ?? env_1.envSchema).parse(envData),
|
|
30
29
|
isGlobal: true,
|
|
31
30
|
}),
|
|
32
|
-
|
|
33
|
-
repositories,
|
|
34
|
-
}),
|
|
31
|
+
env_module_1.EnvModule,
|
|
35
32
|
],
|
|
36
33
|
providers: [
|
|
37
34
|
{
|
|
38
35
|
provide: ilogging_service_1.ILoggingService,
|
|
39
|
-
useValue: logging ?? logging_service_1.LoggingService,
|
|
36
|
+
useValue: config?.logging ?? logging_service_1.LoggingService,
|
|
40
37
|
},
|
|
38
|
+
{ provide: iredis_service_1.IRedisService, useClass: redis_service_1.RedisService },
|
|
39
|
+
{ provide: ired_lock_service_1.IRedLockService, useClass: red_lock_service_1.RedLockService },
|
|
40
|
+
env_service_1.EnvService,
|
|
41
41
|
],
|
|
42
|
+
exports: [ilogging_service_1.ILoggingService, iredis_service_1.IRedisService, ired_lock_service_1.IRedLockService],
|
|
42
43
|
};
|
|
43
44
|
}
|
|
44
45
|
};
|
|
45
46
|
exports.KoalaNestModule = KoalaNestModule = KoalaNestModule_1 = __decorate([
|
|
46
|
-
(0, common_1.Module)({
|
|
47
|
-
imports: [env_module_1.EnvModule],
|
|
48
|
-
providers: [
|
|
49
|
-
{ provide: iredis_service_1.IRedisService, useClass: redis_service_1.RedisService },
|
|
50
|
-
{ provide: ired_lock_service_1.IRedLockService, useClass: red_lock_service_1.RedLockService },
|
|
51
|
-
env_service_1.EnvService,
|
|
52
|
-
],
|
|
53
|
-
})
|
|
47
|
+
(0, common_1.Module)({})
|
|
54
48
|
], KoalaNestModule);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Type } from '@nestjs/common';
|
|
2
|
+
import { IComparable, IComparableId } from '../utils/interfaces/icomparable';
|
|
3
|
+
import { List } from '../utils/list';
|
|
4
|
+
export declare class AutoMappingClassContext implements IComparable<AutoMappingClassContext> {
|
|
5
|
+
_id: IComparableId;
|
|
6
|
+
source: Type<any>;
|
|
7
|
+
props: List<{
|
|
8
|
+
name: string;
|
|
9
|
+
type: any;
|
|
10
|
+
compositionType?: Type<any> | undefined;
|
|
11
|
+
compositionAction?: "onlySet" | "addTo" | undefined;
|
|
12
|
+
}>;
|
|
13
|
+
constructor(source: Type<any>);
|
|
14
|
+
equals(obj: AutoMappingClassContext): boolean;
|
|
15
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AutoMappingClassContext = void 0;
|
|
4
|
+
const list_1 = require("../utils/list");
|
|
5
|
+
const crypto_1 = require("crypto");
|
|
6
|
+
class AutoMappingClassContext {
|
|
7
|
+
_id;
|
|
8
|
+
source;
|
|
9
|
+
props = new list_1.List();
|
|
10
|
+
constructor(source) {
|
|
11
|
+
this._id = (0, crypto_1.randomUUID)();
|
|
12
|
+
this.source = source;
|
|
13
|
+
}
|
|
14
|
+
equals(obj) {
|
|
15
|
+
return obj._id === this._id && this.source instanceof obj.source;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.AutoMappingClassContext = AutoMappingClassContext;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Type } from '@nestjs/common';
|
|
2
|
+
import { IComparable, IComparableId } from '../utils/interfaces/icomparable';
|
|
3
|
+
import { ForMemberDefinition } from './for-member';
|
|
4
|
+
export declare class AutoMappingContext implements IComparable<AutoMappingContext> {
|
|
5
|
+
source: Type<any>;
|
|
6
|
+
target: Type<any>;
|
|
7
|
+
forMemberDifinitions: ForMemberDefinition<any, any>;
|
|
8
|
+
_id: IComparableId;
|
|
9
|
+
constructor(source: Type<any>, target: Type<any>, forMemberDifinitions: ForMemberDefinition<any, any>);
|
|
10
|
+
equals(obj: AutoMappingContext): boolean;
|
|
11
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AutoMappingContext = void 0;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
5
|
+
class AutoMappingContext {
|
|
6
|
+
source;
|
|
7
|
+
target;
|
|
8
|
+
forMemberDifinitions;
|
|
9
|
+
_id;
|
|
10
|
+
constructor(source, target, forMemberDifinitions) {
|
|
11
|
+
this.source = source;
|
|
12
|
+
this.target = target;
|
|
13
|
+
this.forMemberDifinitions = forMemberDifinitions;
|
|
14
|
+
this._id = (0, node_crypto_1.randomUUID)();
|
|
15
|
+
this.source = source;
|
|
16
|
+
this.target = target;
|
|
17
|
+
}
|
|
18
|
+
equals(obj) {
|
|
19
|
+
return (obj._id === this._id &&
|
|
20
|
+
this.source instanceof obj.source &&
|
|
21
|
+
this.target instanceof obj.target);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.AutoMappingContext = AutoMappingContext;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Type } from '@nestjs/common';
|
|
2
|
+
import { AutoMappingContext } from './auto-mapping-context';
|
|
3
|
+
import { AutoMappingClassContext } from './auto-mapping-class-context';
|
|
4
|
+
import { ForMemberDefinition } from './for-member';
|
|
5
|
+
interface AutoMappingGetContext {
|
|
6
|
+
mapContext: AutoMappingContext | null;
|
|
7
|
+
propSourceContext: AutoMappingClassContext | null;
|
|
8
|
+
propTargetContext: AutoMappingClassContext | null;
|
|
9
|
+
}
|
|
10
|
+
export declare class AutoMappingList {
|
|
11
|
+
private static _mappedPropList;
|
|
12
|
+
private static _mappingProfileList;
|
|
13
|
+
static add(source: Type<any>, target: Type<any>, ...forMember: ForMemberDefinition<any, any>): void;
|
|
14
|
+
static get(source: Type<any>, target: Type<any>): AutoMappingGetContext;
|
|
15
|
+
static getTargets(source: Type<any>): Type<any>[];
|
|
16
|
+
static addMappedProp(source: Type<any>, propName: string): void;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AutoMappingList = void 0;
|
|
4
|
+
const list_1 = require("../utils/list");
|
|
5
|
+
const auto_mapping_context_1 = require("./auto-mapping-context");
|
|
6
|
+
const auto_mapping_class_context_1 = require("./auto-mapping-class-context");
|
|
7
|
+
class AutoMappingList {
|
|
8
|
+
static _mappedPropList = new list_1.List(auto_mapping_class_context_1.AutoMappingClassContext);
|
|
9
|
+
static _mappingProfileList = new list_1.List(auto_mapping_context_1.AutoMappingContext);
|
|
10
|
+
static add(source, target, ...forMember) {
|
|
11
|
+
this._mappingProfileList.add(new auto_mapping_context_1.AutoMappingContext(source, target, forMember));
|
|
12
|
+
this._mappedPropList.add(new auto_mapping_class_context_1.AutoMappingClassContext(source));
|
|
13
|
+
this._mappedPropList.add(new auto_mapping_class_context_1.AutoMappingClassContext(target));
|
|
14
|
+
}
|
|
15
|
+
static get(source, target) {
|
|
16
|
+
return {
|
|
17
|
+
mapContext: this._mappingProfileList.find((mp) => mp.source === source && mp.target === target),
|
|
18
|
+
propSourceContext: this._mappedPropList.find((mp) => mp.source === source),
|
|
19
|
+
propTargetContext: this._mappedPropList.find((mp) => mp.source === target),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
static getTargets(source) {
|
|
23
|
+
return this._mappingProfileList
|
|
24
|
+
.filter((mp) => mp.source === source)
|
|
25
|
+
.map((mp) => mp.target)
|
|
26
|
+
.toArray();
|
|
27
|
+
}
|
|
28
|
+
static addMappedProp(source, propName) {
|
|
29
|
+
let mappedClass = this._mappedPropList.find((mp) => mp.source === source);
|
|
30
|
+
if (!mappedClass) {
|
|
31
|
+
mappedClass = new auto_mapping_class_context_1.AutoMappingClassContext(source);
|
|
32
|
+
this._mappedPropList.add(mappedClass);
|
|
33
|
+
}
|
|
34
|
+
const metadata = Reflect.getMetadata('design:type', source.prototype, propName);
|
|
35
|
+
const compositionType = Reflect.getMetadata('composition:type', source.prototype, propName);
|
|
36
|
+
const compositionAction = Reflect.getMetadata('composition:action', source.prototype, propName);
|
|
37
|
+
const type = metadata?.name;
|
|
38
|
+
mappedClass.props.add({
|
|
39
|
+
name: propName,
|
|
40
|
+
type,
|
|
41
|
+
compositionType,
|
|
42
|
+
compositionAction,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.AutoMappingList = AutoMappingList;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AutoMap = void 0;
|
|
4
|
+
const auto_mapping_list_1 = require("./auto-mapping-list");
|
|
5
|
+
function AutoMap(config) {
|
|
6
|
+
return function (target, propertyKey) {
|
|
7
|
+
const isArray = config?.isArray;
|
|
8
|
+
let customMetadata = config?.type;
|
|
9
|
+
if (!customMetadata) {
|
|
10
|
+
customMetadata = isArray ? Array : undefined;
|
|
11
|
+
}
|
|
12
|
+
if (customMetadata) {
|
|
13
|
+
if (isArray) {
|
|
14
|
+
Reflect.defineMetadata('composition:type', customMetadata, target, propertyKey);
|
|
15
|
+
Reflect.defineMetadata('composition:action', `${isArray === true || !isArray.addTo ? 'onlySet' : 'addTo'}`, target, propertyKey);
|
|
16
|
+
if (customMetadata !== Array) {
|
|
17
|
+
customMetadata = Array;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (!Reflect.getMetadata('design:type', target, propertyKey) || !isArray) {
|
|
21
|
+
Reflect.defineMetadata('design:type', customMetadata, target, propertyKey);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
auto_mapping_list_1.AutoMappingList.addMappedProp(target.constructor, propertyKey);
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
exports.AutoMap = AutoMap;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var AutoMappingModule_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.AutoMappingModule = void 0;
|
|
11
|
+
const common_1 = require("@nestjs/common");
|
|
12
|
+
const auto_mapping_profile_1 = require("./auto-mapping-profile");
|
|
13
|
+
const auto_mapping_service_1 = require("./auto-mapping.service");
|
|
14
|
+
let AutoMappingModule = exports.AutoMappingModule = AutoMappingModule_1 = class AutoMappingModule {
|
|
15
|
+
static register(profile) {
|
|
16
|
+
return {
|
|
17
|
+
module: AutoMappingModule_1,
|
|
18
|
+
providers: [
|
|
19
|
+
{ provide: auto_mapping_profile_1.AutoMappingProfile, useClass: profile },
|
|
20
|
+
auto_mapping_service_1.AutoMappingService,
|
|
21
|
+
],
|
|
22
|
+
exports: [auto_mapping_service_1.AutoMappingService],
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
exports.AutoMappingModule = AutoMappingModule = AutoMappingModule_1 = __decorate([
|
|
27
|
+
(0, common_1.Module)({})
|
|
28
|
+
], AutoMappingModule);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Type } from '@nestjs/common';
|
|
2
|
+
import { AutoMappingProfile } from './auto-mapping-profile';
|
|
3
|
+
export declare class AutoMappingService {
|
|
4
|
+
private readonly _contextList;
|
|
5
|
+
constructor(automappingProfile: AutoMappingProfile);
|
|
6
|
+
map<S, T>(data: any, source: Type<S>, target: Type<T>): T;
|
|
7
|
+
private mapNestedProp;
|
|
8
|
+
private mapListToArray;
|
|
9
|
+
private mapArrayToList;
|
|
10
|
+
}
|