@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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@koalarx/nest",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -14,38 +14,21 @@
|
|
|
14
14
|
"homepage": "https://github.com/igordrangel/koala-nest#readme",
|
|
15
15
|
"types": "./koala-nest.d.ts",
|
|
16
16
|
"peerDependencies": {
|
|
17
|
-
"@koalarx/utils": "
|
|
18
|
-
"@nestjs/common": "
|
|
19
|
-
"@nestjs/config": "
|
|
20
|
-
"@nestjs/core": "
|
|
21
|
-
"@nestjs/
|
|
22
|
-
"@nestjs/
|
|
23
|
-
"@nestjs/
|
|
24
|
-
"@
|
|
25
|
-
"@nestjs
|
|
26
|
-
"@prisma/client": "5.3.1",
|
|
27
|
-
"automapper-classes": "8.7.12",
|
|
28
|
-
"automapper-core": "8.7.12",
|
|
29
|
-
"automapper-nestjs": "8.7.12",
|
|
30
|
-
"bcrypt": "5.1.0",
|
|
31
|
-
"class-transformer": "0.5.1",
|
|
32
|
-
"class-validator": "0.14.0",
|
|
33
|
-
"class-validator-cpf": "1.1.1",
|
|
17
|
+
"@koalarx/utils": "3.1.3",
|
|
18
|
+
"@nestjs/common": "11.0.12",
|
|
19
|
+
"@nestjs/config": "4.0.1",
|
|
20
|
+
"@nestjs/core": "11.0.12",
|
|
21
|
+
"@nestjs/mapped-types": "2.1.0",
|
|
22
|
+
"@nestjs/platform-express": "11.0.12",
|
|
23
|
+
"@nestjs/swagger": "11.0.7",
|
|
24
|
+
"@prisma/client": "6.5.0",
|
|
25
|
+
"@scalar/nestjs-api-reference": "0.4.2",
|
|
34
26
|
"cookie-parser": "1.4.6",
|
|
35
|
-
"cpf-cnpj-validator": "1.0.3",
|
|
36
27
|
"dotenv": "16.0.3",
|
|
37
28
|
"express-basic-auth": "1.2.1",
|
|
38
|
-
"googleapis": "118.0.0",
|
|
39
29
|
"ioredis": "5.3.2",
|
|
40
|
-
"passport": "0.6.0",
|
|
41
|
-
"passport-headerapikey": "1.2.2",
|
|
42
|
-
"passport-jwt": "4.0.1",
|
|
43
|
-
"passport-local": "1.0.0",
|
|
44
|
-
"phone": "3.1.40",
|
|
45
30
|
"reflect-metadata": "0.1.13",
|
|
46
31
|
"rimraf": "3.0.2",
|
|
47
|
-
"rxjs": "7.2.0",
|
|
48
|
-
"swagger-ui-express": "4.6.3",
|
|
49
32
|
"zod": "3.22.4",
|
|
50
33
|
"zod-validation-error": "1.5.0"
|
|
51
34
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { OnModuleDestroy } from '@nestjs/common';
|
|
2
|
-
import { EnvService } from '
|
|
2
|
+
import { EnvService } from '../../env/env.service';
|
|
3
3
|
import { IRedisService } from './iredis.service';
|
|
4
4
|
export declare class RedisService implements IRedisService, OnModuleDestroy {
|
|
5
5
|
private readonly redisClient;
|
|
@@ -5,11 +5,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
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
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
8
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
12
|
exports.RedisService = void 0;
|
|
10
13
|
const common_1 = require("@nestjs/common");
|
|
11
14
|
const ioredis_1 = require("ioredis");
|
|
12
15
|
const env_config_1 = require("../../core/utils/env.config");
|
|
16
|
+
const env_service_1 = require("../../env/env.service");
|
|
13
17
|
let RedisService = exports.RedisService = class RedisService {
|
|
14
18
|
redisClient;
|
|
15
19
|
environment;
|
|
@@ -49,5 +53,6 @@ let RedisService = exports.RedisService = class RedisService {
|
|
|
49
53
|
}
|
|
50
54
|
};
|
|
51
55
|
exports.RedisService = RedisService = __decorate([
|
|
52
|
-
(0, common_1.Injectable)()
|
|
56
|
+
(0, common_1.Injectable)(),
|
|
57
|
+
__metadata("design:paramtypes", [env_service_1.EnvService])
|
|
53
58
|
], RedisService);
|
|
@@ -5,10 +5,14 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
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
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
8
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
12
|
exports.RedLockService = void 0;
|
|
10
13
|
const common_1 = require("@nestjs/common");
|
|
11
14
|
const env_config_1 = require("../../core/utils/env.config");
|
|
15
|
+
const iredis_service_1 = require("../redis/iredis.service");
|
|
12
16
|
let RedLockService = exports.RedLockService = class RedLockService {
|
|
13
17
|
redisService;
|
|
14
18
|
constructor(redisService) {
|
|
@@ -36,5 +40,6 @@ let RedLockService = exports.RedLockService = class RedLockService {
|
|
|
36
40
|
}
|
|
37
41
|
};
|
|
38
42
|
exports.RedLockService = RedLockService = __decorate([
|
|
39
|
-
(0, common_1.Injectable)()
|
|
43
|
+
(0, common_1.Injectable)(),
|
|
44
|
+
__metadata("design:paramtypes", [iredis_service_1.IRedisService])
|
|
40
45
|
], RedLockService);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Type } from "@nestjs/common";
|
|
2
|
+
interface KoalaAppTestDependenciesConfig {
|
|
3
|
+
dependencies: any[];
|
|
4
|
+
}
|
|
5
|
+
export declare class KoalaAppTestDependencies {
|
|
6
|
+
private readonly _config;
|
|
7
|
+
constructor(_config: KoalaAppTestDependenciesConfig);
|
|
8
|
+
get<T>(objectType: Type<T>): T;
|
|
9
|
+
}
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KoalaAppTestDependencies = void 0;
|
|
4
|
+
class KoalaAppTestDependencies {
|
|
5
|
+
_config;
|
|
6
|
+
constructor(_config) {
|
|
7
|
+
this._config = _config;
|
|
8
|
+
}
|
|
9
|
+
get(objectType) {
|
|
10
|
+
return this._config.dependencies.find((dependency) => dependency instanceof objectType);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.KoalaAppTestDependencies = KoalaAppTestDependencies;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { INestApplication, Type } from '@nestjs/common';
|
|
2
|
+
import { BaseExceptionFilter } from '@nestjs/core';
|
|
3
|
+
import { PrismaTransactionalClient } from '../core/database/prisma-transactional-client';
|
|
4
|
+
export declare class KoalaAppTest {
|
|
5
|
+
private readonly app;
|
|
6
|
+
private _globalExceptionFilter;
|
|
7
|
+
private _prismaValidationExceptionFilter;
|
|
8
|
+
private _domainExceptionFilter;
|
|
9
|
+
private _zodExceptionFilter;
|
|
10
|
+
constructor(app: INestApplication<any>);
|
|
11
|
+
addCustomGlobalExceptionFilter(filter: BaseExceptionFilter): this;
|
|
12
|
+
addCustomPrismaValidationExceptionFilter(filter: BaseExceptionFilter): this;
|
|
13
|
+
addCustomDomainExceptionFilter(filter: BaseExceptionFilter): this;
|
|
14
|
+
addCustomZodExceptionFilter(filter: BaseExceptionFilter): this;
|
|
15
|
+
enableCors(): this;
|
|
16
|
+
setAppName(name: string): this;
|
|
17
|
+
setInternalUserName(name: string): this;
|
|
18
|
+
setDbTransactionContext(transactionContext: Type<PrismaTransactionalClient>): this;
|
|
19
|
+
build(): INestApplication<any>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KoalaAppTest = void 0;
|
|
4
|
+
const core_1 = require("@nestjs/core");
|
|
5
|
+
const koala_global_vars_1 = require("../core/koala-global-vars");
|
|
6
|
+
const domain_errors_filter_1 = require("../filters/domain-errors.filter");
|
|
7
|
+
const global_exception_filter_1 = require("../filters/global-exception.filter");
|
|
8
|
+
const prisma_validation_exception_filter_1 = require("../filters/prisma-validation-exception.filter");
|
|
9
|
+
const zod_errors_filter_1 = require("../filters/zod-errors.filter");
|
|
10
|
+
class KoalaAppTest {
|
|
11
|
+
app;
|
|
12
|
+
_globalExceptionFilter;
|
|
13
|
+
_prismaValidationExceptionFilter;
|
|
14
|
+
_domainExceptionFilter;
|
|
15
|
+
_zodExceptionFilter;
|
|
16
|
+
constructor(app) {
|
|
17
|
+
this.app = app;
|
|
18
|
+
const { httpAdapter } = app.get(core_1.HttpAdapterHost);
|
|
19
|
+
this._globalExceptionFilter = new global_exception_filter_1.GlobalExceptionsFilter(httpAdapter);
|
|
20
|
+
this._prismaValidationExceptionFilter =
|
|
21
|
+
new prisma_validation_exception_filter_1.PrismaValidationExceptionFilter();
|
|
22
|
+
this._domainExceptionFilter = new domain_errors_filter_1.DomainErrorsFilter();
|
|
23
|
+
this._zodExceptionFilter = new zod_errors_filter_1.ZodErrorsFilter();
|
|
24
|
+
}
|
|
25
|
+
addCustomGlobalExceptionFilter(filter) {
|
|
26
|
+
this._globalExceptionFilter = filter;
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
addCustomPrismaValidationExceptionFilter(filter) {
|
|
30
|
+
this._prismaValidationExceptionFilter = filter;
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
addCustomDomainExceptionFilter(filter) {
|
|
34
|
+
this._domainExceptionFilter = filter;
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
addCustomZodExceptionFilter(filter) {
|
|
38
|
+
this._zodExceptionFilter = filter;
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
enableCors() {
|
|
42
|
+
this.app.enableCors({
|
|
43
|
+
credentials: true,
|
|
44
|
+
origin: true,
|
|
45
|
+
optionsSuccessStatus: 200,
|
|
46
|
+
});
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
setAppName(name) {
|
|
50
|
+
koala_global_vars_1.KoalaGlobalVars.appName = name;
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
setInternalUserName(name) {
|
|
54
|
+
koala_global_vars_1.KoalaGlobalVars.internalUserName = name;
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
setDbTransactionContext(transactionContext) {
|
|
58
|
+
koala_global_vars_1.KoalaGlobalVars.dbTransactionContext = transactionContext;
|
|
59
|
+
return this;
|
|
60
|
+
}
|
|
61
|
+
build() {
|
|
62
|
+
this.app.useGlobalFilters(this._globalExceptionFilter, this._prismaValidationExceptionFilter, this._domainExceptionFilter, this._zodExceptionFilter);
|
|
63
|
+
return this.app;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.KoalaAppTest = KoalaAppTest;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CreatedRegistreResponseBase } from '../../core/controllers/created-registre-response.base';
|
|
2
|
+
import { ListResponseBase } from '../../core/controllers/list-response.base';
|
|
3
|
+
import { EntityBase } from '../../core/database/entity.base';
|
|
4
|
+
import { PaginationParams } from '../../core/models/pagination-params';
|
|
5
|
+
import { IComparableId } from '../../core/utils/interfaces/icomparable';
|
|
6
|
+
export declare abstract class InMemoryBaseRepository<TClass extends EntityBase<any>> {
|
|
7
|
+
private readonly typeId;
|
|
8
|
+
protected items: TClass[];
|
|
9
|
+
constructor(typeId?: 'number' | 'string');
|
|
10
|
+
protected findById(id: IComparableId): Promise<TClass | null>;
|
|
11
|
+
protected findMany<T extends PaginationParams>(query: T, predicate?: (value: TClass, index: number, array: TClass[]) => unknown): Promise<TClass[]>;
|
|
12
|
+
protected findManyAndCount<T extends PaginationParams>(query: T, predicate?: (value: TClass, index: number, array: TClass[]) => unknown): Promise<ListResponseBase<TClass>>;
|
|
13
|
+
protected saveChanges(item: TClass): Promise<CreatedRegistreResponseBase<any>>;
|
|
14
|
+
protected remove(predicate: (value: TClass, index: number, obj: TClass[]) => unknown): Promise<void>;
|
|
15
|
+
private getNewId;
|
|
16
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InMemoryBaseRepository = void 0;
|
|
4
|
+
const array_1 = require("@koalarx/utils/operators/array");
|
|
5
|
+
const pagination_params_1 = require("../../core/models/pagination-params");
|
|
6
|
+
const node_crypto_1 = require("node:crypto");
|
|
7
|
+
class InMemoryBaseRepository {
|
|
8
|
+
typeId;
|
|
9
|
+
items = [];
|
|
10
|
+
constructor(typeId = 'number') {
|
|
11
|
+
this.typeId = typeId;
|
|
12
|
+
}
|
|
13
|
+
async findById(id) {
|
|
14
|
+
return this.items.find((item) => item._id === id) ?? null;
|
|
15
|
+
}
|
|
16
|
+
async findMany(query, predicate) {
|
|
17
|
+
const page = query.page ?? pagination_params_1.QueryFilterParams.page;
|
|
18
|
+
const limit = query.limit ?? pagination_params_1.QueryFilterParams.limit;
|
|
19
|
+
return (0, array_1.klArray)(predicate ? this.items.filter(predicate) : this.items)
|
|
20
|
+
.orderBy(query.orderBy ?? '', query.direction === 'desc')
|
|
21
|
+
.getValue()
|
|
22
|
+
.slice(page * limit, (page + 1) * limit);
|
|
23
|
+
}
|
|
24
|
+
async findManyAndCount(query, predicate) {
|
|
25
|
+
const items = await this.findMany(query, predicate);
|
|
26
|
+
return {
|
|
27
|
+
items,
|
|
28
|
+
count: items.length,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
async saveChanges(item) {
|
|
32
|
+
const itemIndex = this.items.findIndex((itemDB) => itemDB.equals(item));
|
|
33
|
+
if (itemIndex > -1) {
|
|
34
|
+
this.items[itemIndex] = item;
|
|
35
|
+
}
|
|
36
|
+
const id = this.typeId === 'number'
|
|
37
|
+
? this.getNewId()
|
|
38
|
+
: (0, node_crypto_1.randomUUID)();
|
|
39
|
+
item.automap({ ...item, id });
|
|
40
|
+
this.items.push(item);
|
|
41
|
+
return { id: item._id };
|
|
42
|
+
}
|
|
43
|
+
async remove(predicate) {
|
|
44
|
+
const itemIndex = this.items.findIndex(predicate);
|
|
45
|
+
if (itemIndex > -1) {
|
|
46
|
+
this.items.splice(itemIndex, 1);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
getNewId() {
|
|
50
|
+
return this.typeId === 'number'
|
|
51
|
+
? (0, array_1.klArray)(this.items).orderBy('_id', true).getValue()[0]?._id ?? 0 + 1
|
|
52
|
+
: (0, node_crypto_1.randomUUID)();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.InMemoryBaseRepository = InMemoryBaseRepository;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FakeLoggingService = void 0;
|
|
4
|
+
class FakeLoggingService {
|
|
5
|
+
async report(data) {
|
|
6
|
+
console.log('FakeLoggingService.report', data);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.FakeLoggingService = FakeLoggingService;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FakeRedLockService = void 0;
|
|
4
|
+
class FakeRedLockService {
|
|
5
|
+
async acquiredLock(key, ttlSecondsLock) {
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
async releaseLock(key) {
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.FakeRedLockService = FakeRedLockService;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createE2EDatabase = void 0;
|
|
4
|
+
require("dotenv/config");
|
|
5
|
+
const node_child_process_1 = require("node:child_process");
|
|
6
|
+
const node_crypto_1 = require("node:crypto");
|
|
7
|
+
function generateUniqueDatabaseURL() {
|
|
8
|
+
const schemaId = (0, node_crypto_1.randomUUID)();
|
|
9
|
+
if (!process.env.DATABASE_URL) {
|
|
10
|
+
throw new Error('Please provider a DATABASE_URL environment variable');
|
|
11
|
+
}
|
|
12
|
+
const url = new URL(process.env.DATABASE_URL);
|
|
13
|
+
url.searchParams.set('schema', schemaId);
|
|
14
|
+
return {
|
|
15
|
+
url: url.toString(),
|
|
16
|
+
schemaId
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function createE2EDatabase() {
|
|
20
|
+
const { url, schemaId } = generateUniqueDatabaseURL();
|
|
21
|
+
process.env.DATABASE_URL = url;
|
|
22
|
+
process.env.DIRECT_URL = url;
|
|
23
|
+
process.env.PRISMA_SCHEMA_DISABLE_ADVISORY_LOCK = 'true';
|
|
24
|
+
(0, node_child_process_1.execSync)('npx prisma migrate deploy', {});
|
|
25
|
+
return schemaId;
|
|
26
|
+
}
|
|
27
|
+
exports.createE2EDatabase = createE2EDatabase;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function dropE2EDatabase(schemaId: string): import(".prisma/client").Prisma.PrismaPromise<number>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dropE2EDatabase = void 0;
|
|
4
|
+
const client_1 = require("@prisma/client");
|
|
5
|
+
function dropE2EDatabase(schemaId) {
|
|
6
|
+
return new client_1.PrismaClient().$executeRawUnsafe(`DROP SCHEMA IF EXISTS "${schemaId}" CASCADE`);
|
|
7
|
+
}
|
|
8
|
+
exports.dropE2EDatabase = dropE2EDatabase;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function waitFor(assertions: () => void, maxDuration?: number): Promise<void>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.waitFor = void 0;
|
|
4
|
+
async function waitFor(assertions, maxDuration = 1000) {
|
|
5
|
+
return new Promise((resolve, reject) => {
|
|
6
|
+
let elapsedTime = 0;
|
|
7
|
+
const interval = setInterval(() => {
|
|
8
|
+
elapsedTime += 10;
|
|
9
|
+
try {
|
|
10
|
+
assertions();
|
|
11
|
+
clearInterval(interval);
|
|
12
|
+
resolve();
|
|
13
|
+
}
|
|
14
|
+
catch (err) {
|
|
15
|
+
if (elapsedTime >= maxDuration) {
|
|
16
|
+
reject(err);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}, 10);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
exports.waitFor = waitFor;
|