xcally-nest-library 0.0.35 → 0.0.37-XM3778-bae91
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/.jest/jestEnv.js +3 -0
- package/.nvmrc +1 -1
- package/.prettierrc +18 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/jest.config.d.ts +3 -0
- package/dist/jest.config.js +61 -0
- package/dist/jest.config.js.map +1 -0
- package/dist/src/core/application/__tests__/cached-base.service.spec.d.ts +1 -0
- package/dist/src/core/application/__tests__/cached-base.service.spec.js +224 -0
- package/dist/src/core/application/__tests__/cached-base.service.spec.js.map +1 -0
- package/dist/src/core/application/__tests__/mock-types.d.ts +66 -0
- package/dist/src/core/application/__tests__/mock-types.js +9 -0
- package/dist/src/core/application/__tests__/mock-types.js.map +1 -0
- package/dist/src/core/application/__tests__/mocks/paginated-query.mock.d.ts +2 -0
- package/dist/src/core/application/__tests__/mocks/paginated-query.mock.js +12 -0
- package/dist/src/core/application/__tests__/mocks/paginated-query.mock.js.map +1 -0
- package/dist/src/core/application/__tests__/mocks/paginated-result.mock.d.ts +31 -0
- package/dist/src/core/application/__tests__/mocks/paginated-result.mock.js +169 -0
- package/dist/src/core/application/__tests__/mocks/paginated-result.mock.js.map +1 -0
- package/dist/src/core/application/base.interface.d.ts +4 -4
- package/dist/src/core/application/base.mongo.interface.d.ts +16 -0
- package/dist/src/core/application/base.mongo.interface.js +3 -0
- package/dist/src/core/application/base.mongo.interface.js.map +1 -0
- package/dist/src/core/application/base.mongo.service.d.ts +23 -0
- package/dist/src/core/application/base.mongo.service.js +91 -0
- package/dist/src/core/application/base.mongo.service.js.map +1 -0
- package/dist/src/core/application/base.service.d.ts +2 -2
- package/dist/src/core/application/cached-base.service.d.ts +26 -0
- package/dist/src/core/application/cached-base.service.js +52 -0
- package/dist/src/core/application/cached-base.service.js.map +1 -0
- package/dist/src/core/application/cached.service.d.ts +13 -0
- package/dist/src/core/application/cached.service.js +55 -0
- package/dist/src/core/application/cached.service.js.map +1 -0
- package/dist/src/core/domain/interfaces/base.mongo.repository.interface.d.ts +12 -0
- package/dist/src/core/domain/interfaces/base.mongo.repository.interface.js +3 -0
- package/dist/src/core/domain/interfaces/base.mongo.repository.interface.js.map +1 -0
- package/dist/src/core/domain/interfaces/cache-configuration.interface.d.ts +8 -0
- package/dist/src/core/domain/interfaces/cache-configuration.interface.js +11 -0
- package/dist/src/core/domain/interfaces/cache-configuration.interface.js.map +1 -0
- package/dist/src/core/infrastracture/databases/base.mongo.entity.d.ts +14 -0
- package/dist/src/core/infrastracture/databases/base.mongo.entity.interface.d.ts +10 -0
- package/dist/src/core/infrastracture/databases/base.mongo.entity.interface.js +3 -0
- package/dist/src/core/infrastracture/databases/base.mongo.entity.interface.js.map +1 -0
- package/dist/src/core/infrastracture/databases/base.mongo.entity.js +66 -0
- package/dist/src/core/infrastracture/databases/base.mongo.entity.js.map +1 -0
- package/dist/src/core/infrastracture/databases/base.mongo.repository.d.ts +20 -0
- package/dist/src/core/infrastracture/databases/base.mongo.repository.js +275 -0
- package/dist/src/core/infrastracture/databases/base.mongo.repository.js.map +1 -0
- package/dist/src/core/infrastracture/databases/base.repository.d.ts +1 -1
- package/dist/src/modules/logger/pino/logger.module.js +1 -1
- package/dist/src/modules/logger/pino/logger.module.js.map +1 -1
- package/dist/src/modules/logger/pino/logger.service.js +1 -1
- package/dist/src/modules/logger/pino/logger.service.js.map +1 -1
- package/dist/tsconfig.json +38 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/eslint.config.mjs +49 -0
- package/index.ts +9 -0
- package/jest.config.ts +219 -0
- package/package.json +34 -21
- package/scripts/publish-feat.sh +67 -0
- package/src/core/application/__tests__/cached-base.service.spec.ts +367 -0
- package/src/core/application/__tests__/mock-types.ts +73 -0
- package/src/core/application/__tests__/mocks/paginated-query.mock.ts +10 -0
- package/src/core/application/__tests__/mocks/paginated-result.mock.ts +166 -0
- package/src/core/application/base.interface.ts +4 -5
- package/src/core/application/base.mongo.interface.ts +15 -0
- package/src/core/application/base.mongo.service.ts +170 -0
- package/src/core/application/base.service.ts +2 -2
- package/src/core/application/cached-base.service.ts +119 -0
- package/src/core/application/cached.service.ts +96 -0
- package/src/core/domain/interfaces/base.mongo.repository.interface.ts +14 -0
- package/src/core/domain/interfaces/base.repository.interface.ts +1 -0
- package/src/core/domain/interfaces/cache-configuration.interface.ts +10 -0
- package/src/core/infrastracture/databases/base.mongo.entity.interface.ts +12 -0
- package/src/core/infrastracture/databases/base.mongo.entity.ts +65 -0
- package/src/core/infrastracture/databases/base.mongo.repository.ts +371 -0
- package/src/core/infrastracture/databases/base.repository.ts +1 -1
- package/src/modules/logger/pino/logger.module.ts +1 -1
- package/src/modules/logger/pino/logger.service.ts +1 -1
- package/tsconfig.json +1 -0
- package/dist/src/modules/db-hooks-subscriber/db-hooks-subscriber.module.d.ts +0 -2
- package/dist/src/modules/db-hooks-subscriber/db-hooks-subscriber.module.js +0 -22
- package/dist/src/modules/db-hooks-subscriber/db-hooks-subscriber.module.js.map +0 -1
|
@@ -0,0 +1,66 @@
|
|
|
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 __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.paginationConfig = exports.BaseMongoEntitySubscriber = exports.BaseMongoEntity = void 0;
|
|
13
|
+
const mongodb_1 = require("mongodb");
|
|
14
|
+
const typeorm_1 = require("typeorm");
|
|
15
|
+
class BaseMongoEntity {
|
|
16
|
+
}
|
|
17
|
+
exports.BaseMongoEntity = BaseMongoEntity;
|
|
18
|
+
__decorate([
|
|
19
|
+
(0, typeorm_1.ObjectIdColumn)(),
|
|
20
|
+
__metadata("design:type", mongodb_1.ObjectId)
|
|
21
|
+
], BaseMongoEntity.prototype, "_id", void 0);
|
|
22
|
+
__decorate([
|
|
23
|
+
(0, typeorm_1.CreateDateColumn)({
|
|
24
|
+
type: 'timestamp',
|
|
25
|
+
}),
|
|
26
|
+
__metadata("design:type", Date)
|
|
27
|
+
], BaseMongoEntity.prototype, "createdAt", void 0);
|
|
28
|
+
__decorate([
|
|
29
|
+
(0, typeorm_1.UpdateDateColumn)({
|
|
30
|
+
type: 'timestamp',
|
|
31
|
+
}),
|
|
32
|
+
__metadata("design:type", Date)
|
|
33
|
+
], BaseMongoEntity.prototype, "updatedAt", void 0);
|
|
34
|
+
let BaseMongoEntitySubscriber = class BaseMongoEntitySubscriber {
|
|
35
|
+
listenTo() {
|
|
36
|
+
return BaseMongoEntity;
|
|
37
|
+
}
|
|
38
|
+
beforeInsert(event) {
|
|
39
|
+
const now = new Date();
|
|
40
|
+
now.setMilliseconds((now.getMilliseconds() + 1) % 1000);
|
|
41
|
+
event.entity.createdAt = now;
|
|
42
|
+
event.entity.updatedAt = now;
|
|
43
|
+
}
|
|
44
|
+
beforeUpdate(event) {
|
|
45
|
+
const now = new Date();
|
|
46
|
+
now.setMilliseconds((now.getMilliseconds() + 1) % 1000);
|
|
47
|
+
event.entity.updatedAt = now;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
exports.BaseMongoEntitySubscriber = BaseMongoEntitySubscriber;
|
|
51
|
+
exports.BaseMongoEntitySubscriber = BaseMongoEntitySubscriber = __decorate([
|
|
52
|
+
(0, typeorm_1.EventSubscriber)()
|
|
53
|
+
], BaseMongoEntitySubscriber);
|
|
54
|
+
exports.paginationConfig = {
|
|
55
|
+
sortableColumns: ['_id', 'createdAt', 'updatedAt'],
|
|
56
|
+
searchableColumns: ['_id', 'createdAt', 'updatedAt'],
|
|
57
|
+
filterableColumns: {
|
|
58
|
+
_id: true,
|
|
59
|
+
createdAt: true,
|
|
60
|
+
updatedAt: true,
|
|
61
|
+
},
|
|
62
|
+
select: ['_id', 'createdAt', 'updatedAt'],
|
|
63
|
+
relativePath: true,
|
|
64
|
+
dateColumns: ['createdAt', 'updatedAt'],
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=base.mongo.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.mongo.entity.js","sourceRoot":"","sources":["../../../../../src/core/infrastracture/databases/base.mongo.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAmC;AACnC,qCAQiB;AAGjB,MAAa,eAAe;CAa3B;AAbD,0CAaC;AAXC;IADC,IAAA,wBAAc,GAAE;8BACZ,kBAAQ;4CAAC;AAKd;IAHC,IAAA,0BAAgB,EAAC;QAChB,IAAI,EAAE,WAAW;KAClB,CAAC;8BACS,IAAI;kDAAC;AAKhB;IAHC,IAAA,0BAAgB,EAAC;QAChB,IAAI,EAAE,WAAW;KAClB,CAAC;8BACS,IAAI;kDAAC;AAIX,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IAI7B,QAAQ;QACb,OAAO,eAAe,CAAC;IACzB,CAAC;IAKM,YAAY,CAAC,KAAmC;QACrD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACxD,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;QAC7B,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;IAC/B,CAAC;IAEM,YAAY,CAAC,KAAmC;QACrD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACxD,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;IAC/B,CAAC;CACF,CAAA;AAvBY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,yBAAe,GAAE;GACL,yBAAyB,CAuBrC;AAEY,QAAA,gBAAgB,GAA4C;IACvE,eAAe,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC;IAClD,iBAAiB,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC;IACpD,iBAAiB,EAAE;QACjB,GAAG,EAAE,IAAI;QACT,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;KAChB;IACD,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC;IACzC,YAAY,EAAE,IAAI;IAClB,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;CACxC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IBaseMongoRepository } from '@/core/domain/interfaces/base.mongo.repository.interface';
|
|
2
|
+
import { ObjectId } from 'mongodb';
|
|
3
|
+
import { PaginateQuery, Paginated } from 'nestjs-paginate';
|
|
4
|
+
import { EntityManager, MongoRepository, ObjectLiteral } from 'typeorm';
|
|
5
|
+
import { ExtendedPaginateConfig } from './base.mongo.entity.interface';
|
|
6
|
+
export declare class BaseMongoRepository<E extends ObjectLiteral> extends MongoRepository<E> implements IBaseMongoRepository<E> {
|
|
7
|
+
paginateConfig: ExtendedPaginateConfig<E>;
|
|
8
|
+
constructor(manager: EntityManager, entityCls: new () => E, paginateConfig?: ExtendedPaginateConfig<E>);
|
|
9
|
+
getMany(query: PaginateQuery): Promise<Paginated<E>>;
|
|
10
|
+
findById(id: string | ObjectId): Promise<E>;
|
|
11
|
+
protected buildMongoFilter(query: PaginateQuery, paginateConfig: ExtendedPaginateConfig<E>): Record<string, any>;
|
|
12
|
+
private parsePrimitive;
|
|
13
|
+
private applyOps;
|
|
14
|
+
private buildSpecialOperator;
|
|
15
|
+
protected buildMongoSort(query: PaginateQuery): Record<string, 1 | -1>;
|
|
16
|
+
protected buildMongoProjectionFields(query: PaginateQuery, cursorColumn?: string): string[] | undefined;
|
|
17
|
+
protected normalizeCursorValue(val: any): string;
|
|
18
|
+
protected buildQueryString(obj: Record<string, any>): string;
|
|
19
|
+
protected buildMongoSelect(query: PaginateQuery, paginateConfig: ExtendedPaginateConfig<E>): string[] | undefined;
|
|
20
|
+
}
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseMongoRepository = void 0;
|
|
4
|
+
const mongodb_1 = require("mongodb");
|
|
5
|
+
const typeorm_1 = require("typeorm");
|
|
6
|
+
class BaseMongoRepository extends typeorm_1.MongoRepository {
|
|
7
|
+
constructor(manager, entityCls, paginateConfig) {
|
|
8
|
+
super(entityCls, manager);
|
|
9
|
+
this.paginateConfig = paginateConfig || {
|
|
10
|
+
sortableColumns: [],
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
async getMany(query) {
|
|
14
|
+
const page = query.page ?? 1;
|
|
15
|
+
const defaultLimit = this.paginateConfig.defaultLimit ?? 20;
|
|
16
|
+
const maxLimit = this.paginateConfig.maxLimit ?? 100;
|
|
17
|
+
const inputLimit = query.limit ?? defaultLimit;
|
|
18
|
+
const limit = Math.min(inputLimit, maxLimit);
|
|
19
|
+
const skip = (page - 1) * limit;
|
|
20
|
+
const filter = this.buildMongoFilter(query, this.paginateConfig);
|
|
21
|
+
const sort = this.buildMongoSort(query);
|
|
22
|
+
const selectCondition = this.buildMongoSelect(query, this.paginateConfig);
|
|
23
|
+
const [data, totalItems] = await this.findAndCount({
|
|
24
|
+
where: filter,
|
|
25
|
+
order: sort,
|
|
26
|
+
skip,
|
|
27
|
+
take: limit,
|
|
28
|
+
select: selectCondition,
|
|
29
|
+
});
|
|
30
|
+
const totalPages = Math.ceil(totalItems / limit);
|
|
31
|
+
const meta = {
|
|
32
|
+
itemsPerPage: limit,
|
|
33
|
+
totalItems,
|
|
34
|
+
currentPage: page,
|
|
35
|
+
totalPages,
|
|
36
|
+
sortBy: (query.sortBy ?? []),
|
|
37
|
+
searchBy: (query.searchBy ?? []),
|
|
38
|
+
search: query.search ?? '',
|
|
39
|
+
select: selectCondition ?? [],
|
|
40
|
+
filter: query.filter ?? {},
|
|
41
|
+
};
|
|
42
|
+
const links = {
|
|
43
|
+
current: query.path ? `${query.path}?page=${page}&limit=${limit}` : '',
|
|
44
|
+
first: query.path ? `${query.path}?page=1&limit=${limit}` : undefined,
|
|
45
|
+
previous: page > 1 && query.path ? `${query.path}?page=${page - 1}&limit=${limit}` : undefined,
|
|
46
|
+
next: page < totalPages && query.path ? `${query.path}?page=${page + 1}&limit=${limit}` : undefined,
|
|
47
|
+
last: query.path ? `${query.path}?page=${totalPages}&limit=${limit}` : undefined,
|
|
48
|
+
};
|
|
49
|
+
const plainData = data.map(d => JSON.parse(JSON.stringify(d)));
|
|
50
|
+
return {
|
|
51
|
+
data: plainData,
|
|
52
|
+
meta: meta,
|
|
53
|
+
links: links,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
async findById(id) {
|
|
57
|
+
let objectId;
|
|
58
|
+
if (typeof id === 'string') {
|
|
59
|
+
if (!mongodb_1.ObjectId.isValid(id)) {
|
|
60
|
+
throw new Error(`Invalid ObjectId string: ${id}`);
|
|
61
|
+
}
|
|
62
|
+
objectId = new mongodb_1.ObjectId(id);
|
|
63
|
+
}
|
|
64
|
+
else if (id instanceof mongodb_1.ObjectId) {
|
|
65
|
+
objectId = id;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
throw new Error(`Invalid id type: ${typeof id}`);
|
|
69
|
+
}
|
|
70
|
+
return this.findOne({
|
|
71
|
+
where: { _id: objectId },
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
buildMongoFilter(query, paginateConfig) {
|
|
75
|
+
const { filter = {} } = query;
|
|
76
|
+
const filterConfig = paginateConfig.filterableColumns || {};
|
|
77
|
+
const allowedFilterColumns = new Set(Object.keys(filterConfig));
|
|
78
|
+
const dateCols = new Set(paginateConfig.dateColumns || []);
|
|
79
|
+
const orderedConditions = [];
|
|
80
|
+
for (const [field, rawValue] of Object.entries(filter)) {
|
|
81
|
+
if (!allowedFilterColumns.has(field)) {
|
|
82
|
+
console.warn(`Column filter not allowed: ${field}`);
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
const isDate = dateCols.has(field);
|
|
86
|
+
if (Array.isArray(rawValue)) {
|
|
87
|
+
for (const cond of rawValue) {
|
|
88
|
+
if (typeof cond !== 'string')
|
|
89
|
+
continue;
|
|
90
|
+
const tokens = cond.split(':');
|
|
91
|
+
const ops = tokens.filter(t => t.startsWith('$'));
|
|
92
|
+
const valuePart = tokens.slice(tokens.findIndex(t => !t.startsWith('$'))).join(':');
|
|
93
|
+
orderedConditions.push({ field, ops, valuePart, isDate });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else if (typeof rawValue === 'string') {
|
|
97
|
+
if (!rawValue.includes(':')) {
|
|
98
|
+
orderedConditions.push({ field, ops: [], valuePart: rawValue, isDate });
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
const tokens = rawValue.split(':');
|
|
102
|
+
const ops = tokens.filter(t => t.startsWith('$'));
|
|
103
|
+
const valuePart = tokens.slice(tokens.findIndex(t => !t.startsWith('$'))).join(':');
|
|
104
|
+
orderedConditions.push({ field, ops, valuePart, isDate });
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const andGroup = [];
|
|
109
|
+
let lastCondition = null;
|
|
110
|
+
for (const { field, ops, valuePart, isDate } of orderedConditions) {
|
|
111
|
+
const mainLogical = ops[0] === '$or' || ops[0] === '$and' ? ops[0] : null;
|
|
112
|
+
if (mainLogical)
|
|
113
|
+
ops.shift();
|
|
114
|
+
const special = this.buildSpecialOperator(ops, valuePart, isDate);
|
|
115
|
+
let finalVal;
|
|
116
|
+
if (special) {
|
|
117
|
+
finalVal = special;
|
|
118
|
+
}
|
|
119
|
+
else if (ops.length && ops[ops.length - 1] === '$in') {
|
|
120
|
+
const vals = valuePart.split(',').map(s => this.parsePrimitive(s.trim(), isDate));
|
|
121
|
+
finalVal = ops[0] === '$not' ? { $nin: vals } : { $in: vals };
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
finalVal = this.parsePrimitive(valuePart, isDate);
|
|
125
|
+
if (ops.length) {
|
|
126
|
+
const temp = {};
|
|
127
|
+
this.applyOps(temp, ops, finalVal);
|
|
128
|
+
finalVal = temp;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
const condition = { [field]: finalVal };
|
|
132
|
+
if ((mainLogical === '$or' || mainLogical === '$and') && lastCondition) {
|
|
133
|
+
const prev = andGroup.pop();
|
|
134
|
+
const merged = { [mainLogical]: [prev, condition] };
|
|
135
|
+
andGroup.push(merged);
|
|
136
|
+
lastCondition = merged;
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
andGroup.push(condition);
|
|
140
|
+
lastCondition = condition;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
const finalFilter = andGroup.length === 1 ? andGroup[0] : { $and: andGroup };
|
|
144
|
+
return finalFilter;
|
|
145
|
+
}
|
|
146
|
+
parsePrimitive(raw, isDateField) {
|
|
147
|
+
if (isDateField) {
|
|
148
|
+
const d = new Date(raw);
|
|
149
|
+
if (!isNaN(d.getTime()))
|
|
150
|
+
return d;
|
|
151
|
+
}
|
|
152
|
+
if (raw === 'true')
|
|
153
|
+
return true;
|
|
154
|
+
if (raw === 'false')
|
|
155
|
+
return false;
|
|
156
|
+
if (raw !== '' && !Number.isNaN(Number(raw)) && !/^0\d+/.test(raw))
|
|
157
|
+
return Number(raw);
|
|
158
|
+
return raw;
|
|
159
|
+
}
|
|
160
|
+
applyOps(targetObj, ops, value) {
|
|
161
|
+
let ref = targetObj;
|
|
162
|
+
for (let i = 0; i < ops.length; i++) {
|
|
163
|
+
const op = ops[i];
|
|
164
|
+
const isLast = i === ops.length - 1;
|
|
165
|
+
if (isLast)
|
|
166
|
+
ref[op] = value;
|
|
167
|
+
else {
|
|
168
|
+
if (ref[op] === undefined)
|
|
169
|
+
ref[op] = {};
|
|
170
|
+
ref = ref[op];
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
buildSpecialOperator(ops, valuePart, isDate) {
|
|
175
|
+
const isNegated = ops.includes('$not');
|
|
176
|
+
const cleanOps = ops.filter(o => o !== '$not');
|
|
177
|
+
const values = valuePart.split(',').map(v => this.parsePrimitive(v.trim(), isDate));
|
|
178
|
+
const asSafeRegexString = (val) => {
|
|
179
|
+
if (val == null)
|
|
180
|
+
return '';
|
|
181
|
+
const s = String(val);
|
|
182
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
183
|
+
};
|
|
184
|
+
switch (cleanOps[0]) {
|
|
185
|
+
case '$btw': {
|
|
186
|
+
const [from, to] = values;
|
|
187
|
+
const expr = { $gte: from, $lte: to };
|
|
188
|
+
return isNegated ? { $not: expr } : expr;
|
|
189
|
+
}
|
|
190
|
+
case '$sw': {
|
|
191
|
+
const regex = new RegExp(`^${asSafeRegexString(values[0])}`, 'i');
|
|
192
|
+
return isNegated ? { $not: regex } : { $regex: regex };
|
|
193
|
+
}
|
|
194
|
+
case '$ilike': {
|
|
195
|
+
const regex = new RegExp(asSafeRegexString(values[0]), 'i');
|
|
196
|
+
return isNegated ? { $not: regex } : { $regex: regex };
|
|
197
|
+
}
|
|
198
|
+
case '$null': {
|
|
199
|
+
return isNegated ? { $ne: null } : { $eq: null };
|
|
200
|
+
}
|
|
201
|
+
case '$contains': {
|
|
202
|
+
const expr = { $all: values };
|
|
203
|
+
return isNegated ? { $not: expr } : expr;
|
|
204
|
+
}
|
|
205
|
+
default:
|
|
206
|
+
return null;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
buildMongoSort(query) {
|
|
210
|
+
const { sortBy = [] } = query;
|
|
211
|
+
const sort = {};
|
|
212
|
+
sortBy.forEach(([field, direction]) => {
|
|
213
|
+
sort[field] = direction.toUpperCase() === 'ASC' ? 1 : -1;
|
|
214
|
+
});
|
|
215
|
+
if (Object.keys(sort).length === 0) {
|
|
216
|
+
sort['_id'] = -1;
|
|
217
|
+
}
|
|
218
|
+
return sort;
|
|
219
|
+
}
|
|
220
|
+
buildMongoProjectionFields(query, cursorColumn = '_id') {
|
|
221
|
+
const { select } = query;
|
|
222
|
+
if (select && select.length) {
|
|
223
|
+
const fields = [...select];
|
|
224
|
+
if (!fields.includes(cursorColumn)) {
|
|
225
|
+
fields.push(cursorColumn);
|
|
226
|
+
}
|
|
227
|
+
return fields;
|
|
228
|
+
}
|
|
229
|
+
return undefined;
|
|
230
|
+
}
|
|
231
|
+
normalizeCursorValue(val) {
|
|
232
|
+
if (!val && val !== 0)
|
|
233
|
+
return undefined;
|
|
234
|
+
if (val instanceof mongodb_1.ObjectId && typeof val.toHexString === 'function') {
|
|
235
|
+
return val.toHexString();
|
|
236
|
+
}
|
|
237
|
+
if (val && val._bsontype === 'ObjectID' && typeof val.toHexString === 'function') {
|
|
238
|
+
return val.toHexString();
|
|
239
|
+
}
|
|
240
|
+
return String(val);
|
|
241
|
+
}
|
|
242
|
+
buildQueryString(obj) {
|
|
243
|
+
const params = new URLSearchParams();
|
|
244
|
+
for (const [k, v] of Object.entries(obj)) {
|
|
245
|
+
if (v === undefined || v === null)
|
|
246
|
+
continue;
|
|
247
|
+
params.append(k, String(v));
|
|
248
|
+
}
|
|
249
|
+
return params.toString();
|
|
250
|
+
}
|
|
251
|
+
buildMongoSelect(query, paginateConfig) {
|
|
252
|
+
const requestedSelect = query.select;
|
|
253
|
+
if (!requestedSelect || requestedSelect.length === 0) {
|
|
254
|
+
return undefined;
|
|
255
|
+
}
|
|
256
|
+
const allowedSelectColumns = new Set(paginateConfig.select || []);
|
|
257
|
+
if (allowedSelectColumns.size === 0) {
|
|
258
|
+
console.warn('no columns are allowed for selection in config');
|
|
259
|
+
return undefined;
|
|
260
|
+
}
|
|
261
|
+
const validSelect = requestedSelect.filter(field => {
|
|
262
|
+
const isAllowed = allowedSelectColumns.has(field);
|
|
263
|
+
if (!isAllowed) {
|
|
264
|
+
console.warn(`column not allowed: ${field}`);
|
|
265
|
+
}
|
|
266
|
+
return isAllowed;
|
|
267
|
+
});
|
|
268
|
+
if (validSelect.length === 0) {
|
|
269
|
+
return undefined;
|
|
270
|
+
}
|
|
271
|
+
return validSelect;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
exports.BaseMongoRepository = BaseMongoRepository;
|
|
275
|
+
//# sourceMappingURL=base.mongo.repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.mongo.repository.js","sourceRoot":"","sources":["../../../../../src/core/infrastracture/databases/base.mongo.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Repository, EntityManager, ObjectLiteral } from 'typeorm';
|
|
2
2
|
import { PaginateConfig, PaginateQuery, Paginated } from 'nestjs-paginate';
|
|
3
|
-
import { IBaseRepository } from '
|
|
3
|
+
import { IBaseRepository } from '@/core/domain/interfaces/base.repository.interface';
|
|
4
4
|
export declare class BaseRepository<E extends ObjectLiteral> extends Repository<E> implements IBaseRepository<E> {
|
|
5
5
|
protected paginateConfig: PaginateConfig<E>;
|
|
6
6
|
constructor(manager: EntityManager, entityCls: new () => E, paginateConfig?: PaginateConfig<E>);
|
|
@@ -21,7 +21,7 @@ let LoggerModule = LoggerModule_1 = class LoggerModule {
|
|
|
21
21
|
useValue: options,
|
|
22
22
|
};
|
|
23
23
|
const providers = [logger_service_1.LoggerService, loggerOptions];
|
|
24
|
-
const exports = [logger_service_1.LoggerService, loggerOptions];
|
|
24
|
+
const exports = [logger_service_1.LoggerService, loggerOptions, nestjs_cls_1.ClsModule];
|
|
25
25
|
return {
|
|
26
26
|
module: LoggerModule_1,
|
|
27
27
|
providers,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.module.js","sourceRoot":"","sources":["../../../../../src/modules/logger/pino/logger.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA+D;AAC/D,2CAA6D;AAC7D,6CAA+D;AAC/D,qDAAiD;AACjD,2CAA6C;AAC7C,2CAAuC;AAchC,IAAM,YAAY,oBAAlB,MAAM,YAAY;IACvB,MAAM,CAAC,OAAO,CAAC,OAA4B;QACzC,MAAM,aAAa,GAAG;YACpB,OAAO,EAAE,0BAAc;YACvB,QAAQ,EAAE,OAAO;SAClB,CAAC;QAEF,MAAM,SAAS,GAAG,CAAC,8BAAa,EAAE,aAAa,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,CAAC,8BAAa,EAAE,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.module.js","sourceRoot":"","sources":["../../../../../src/modules/logger/pino/logger.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA+D;AAC/D,2CAA6D;AAC7D,6CAA+D;AAC/D,qDAAiD;AACjD,2CAA6C;AAC7C,2CAAuC;AAchC,IAAM,YAAY,oBAAlB,MAAM,YAAY;IACvB,MAAM,CAAC,OAAO,CAAC,OAA4B;QACzC,MAAM,aAAa,GAAG;YACpB,OAAO,EAAE,0BAAc;YACvB,QAAQ,EAAE,OAAO;SAClB,CAAC;QAEF,MAAM,SAAS,GAAG,CAAC,8BAAa,EAAE,aAAa,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,CAAC,8BAAa,EAAE,aAAa,EAAE,sBAAS,CAAC,CAAC;QAC1D,OAAO;YACL,MAAM,EAAE,cAAY;YACpB,SAAS;YACT,OAAO;YACP,OAAO,EAAE;gBACP,sBAAS;gBACT,0BAAgB,CAAC,YAAY,CAAC;oBAC5B,OAAO,EAAE,CAAC,qBAAY,CAAC;oBACvB,MAAM,EAAE,CAAC,sBAAa,CAAC;oBACvB,UAAU,EAAE,KAAK,EAAE,MAAqB,EAAE,EAAE;wBAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,iBAAiB,CAAC;wBACtE,OAAO;4BACL,QAAQ,EAAE;gCACR,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;oCAC3B,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG;wCAAE,OAAO,OAAO,CAAC;oCAC1C,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG;wCAAE,OAAO,MAAM,CAAC;oCACzC,OAAO,MAAM,CAAC;gCAChB,CAAC;gCACD,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,MAAM;gCACxC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI;gCAWxC,MAAM,EAAE;oCACN,KAAK,EAAE,CAAC,oBAAoB,EAAE,2BAA2B,CAAC;iCAC3D;gCACD,SAAS,EAAE;oCACT,OAAO,EAAE;wCACP;4CACE,KAAK,EAAE,OAAO;4CACd,MAAM,EAAE,aAAa;4CACrB,OAAO,EAAE;gDACP,QAAQ,EAAE,IAAI;6CACf;yCACF;wCAQD;4CACE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,MAAM;4CACxC,MAAM,EAAE,WAAW;4CACnB,OAAO,EAAE;gDACP,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;oDAClC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,WAAW,MAAM;oDAChD,CAAC,CAAC,UAAU,WAAW,MAAM;gDAC/B,KAAK,EAAE,IAAI;gDACX,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;6CAC7D;yCACF;qCACF;iCACF;6BAKF;yBACF,CAAC;oBACJ,CAAC;iBACF,CAAC;aACH;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AAlFY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,eAAM,GAAE;GACI,YAAY,CAkFxB"}
|
|
@@ -26,7 +26,7 @@ let LoggerService = class LoggerService {
|
|
|
26
26
|
withAdditionalTraceId(meta) {
|
|
27
27
|
const xcTraceId = this.cls.get('xcTraceId');
|
|
28
28
|
const xcActionId = this.cls.get('xcActionId');
|
|
29
|
-
return { ...meta, xcTraceId, xcActionId };
|
|
29
|
+
return { ...meta, xcTraceId: xcTraceId ?? meta?.xcTraceId, xcActionId: xcActionId ?? meta?.xcActionId };
|
|
30
30
|
}
|
|
31
31
|
debug(msg, meta) {
|
|
32
32
|
this.logger.debug({ meta: this.withAdditionalTraceId(meta), ...this.loggerOptions }, msg);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../../../../src/modules/logger/pino/logger.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,6CAAyC;AACzC,2CAA6C;AAE7C,2CAAwC;AAYjC,IAAM,aAAa,GAAnB,MAAM,aAAa;IACxB,YAC2C,aAAkC,EAC1D,MAAkB,EAClB,GAAe;QAFS,kBAAa,GAAb,aAAa,CAAqB;QAC1D,WAAM,GAAN,MAAM,CAAY;QAClB,QAAG,GAAH,GAAG,CAAY;IAC/B,CAAC;IAEI,qBAAqB,CAAC,IAAiB;QAC7C,MAAM,SAAS,GAAuB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAChE,MAAM,UAAU,GAAuB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClE,OAAO,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../../../../src/modules/logger/pino/logger.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"module": "commonjs",
|
|
4
|
+
"declaration": true,
|
|
5
|
+
"removeComments": true,
|
|
6
|
+
"emitDecoratorMetadata": true,
|
|
7
|
+
"experimentalDecorators": true,
|
|
8
|
+
"allowSyntheticDefaultImports": true,
|
|
9
|
+
"target": "ES2021",
|
|
10
|
+
"sourceMap": true,
|
|
11
|
+
"outDir": "./dist",
|
|
12
|
+
"baseUrl": "./",
|
|
13
|
+
"incremental": true,
|
|
14
|
+
"skipLibCheck": true,
|
|
15
|
+
"strictNullChecks": false,
|
|
16
|
+
"noImplicitAny": false,
|
|
17
|
+
"strictBindCallApply": false,
|
|
18
|
+
"forceConsistentCasingInFileNames": false,
|
|
19
|
+
"noFallthroughCasesInSwitch": false,
|
|
20
|
+
"resolveJsonModule": true,
|
|
21
|
+
"paths": {
|
|
22
|
+
"@/*": ["./src/*"],
|
|
23
|
+
"@interfaces-pb/*": ["./interfaces-pb/*"],
|
|
24
|
+
"@filters/*": ["./src/lib/filters/*"],
|
|
25
|
+
"@interceptors/*": ["./src/lib/interceptors/*"],
|
|
26
|
+
"@guards/*": ["./src/lib/guards/*"],
|
|
27
|
+
"@decorators/*": ["./src/lib/decorators/*"],
|
|
28
|
+
"@misc/*": ["./src/lib/misc/*"],
|
|
29
|
+
"@lib/*": ["./src/lib/*"],
|
|
30
|
+
"@infrastructure/*": ["./src/core/infrastructure/*"],
|
|
31
|
+
"@application/*": ["./src/core/application/*"],
|
|
32
|
+
"@presentation/*": ["./src/core/presentation/*"],
|
|
33
|
+
"@domain/*": ["./src/core/domain/*"],
|
|
34
|
+
"@bootstrap/*": ["./src/bootstrap/*"],
|
|
35
|
+
"@interfaces/*": ["./src/interfaces/*"]
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|