@elsikora/nestjs-crud-automator 1.10.2-dev.2 → 1.10.2
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/dist/cjs/decorator/api/controller/index.d.ts +1 -2
- package/dist/cjs/decorator/api/controller.decorator.d.ts +3 -0
- package/dist/cjs/decorator/api/{controller/decorator.js → controller.decorator.js} +2 -2
- package/dist/cjs/decorator/api/controller.decorator.js.map +1 -0
- package/dist/cjs/decorator/api/index.d.ts +1 -0
- package/dist/cjs/index.js +4 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interface/utility/index.d.ts +0 -1
- package/dist/cjs/utility/dto/generate-exception.utility.js +0 -6
- package/dist/cjs/utility/dto/generate-exception.utility.js.map +1 -1
- package/dist/cjs/utility/dto/generate.utility.js +1 -16
- package/dist/cjs/utility/dto/generate.utility.js.map +1 -1
- package/dist/cjs/utility/dto/index.d.ts +0 -1
- package/dist/esm/decorator/api/controller/index.d.ts +1 -2
- package/dist/esm/decorator/api/controller.decorator.d.ts +3 -0
- package/dist/esm/decorator/api/{controller/decorator.js → controller.decorator.js} +2 -2
- package/dist/esm/decorator/api/controller.decorator.js.map +1 -0
- package/dist/esm/decorator/api/index.d.ts +1 -0
- package/dist/esm/index.js +1 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interface/utility/index.d.ts +0 -1
- package/dist/esm/utility/dto/generate-exception.utility.js +0 -6
- package/dist/esm/utility/dto/generate-exception.utility.js.map +1 -1
- package/dist/esm/utility/dto/generate.utility.js +1 -16
- package/dist/esm/utility/dto/generate.utility.js.map +1 -1
- package/dist/esm/utility/dto/index.d.ts +0 -1
- package/package.json +1 -1
- package/dist/cjs/decorator/api/controller/decorator.d.ts +0 -4
- package/dist/cjs/decorator/api/controller/decorator.js.map +0 -1
- package/dist/cjs/interface/utility/dto/generate-cache-key.interface.d.ts +0 -9
- package/dist/cjs/interface/utility/dto/index.d.ts +0 -1
- package/dist/cjs/utility/dto/generate-cache-key.utility.d.ts +0 -7
- package/dist/cjs/utility/dto/generate-cache-key.utility.js +0 -13
- package/dist/cjs/utility/dto/generate-cache-key.utility.js.map +0 -1
- package/dist/esm/decorator/api/controller/decorator.d.ts +0 -4
- package/dist/esm/decorator/api/controller/decorator.js.map +0 -1
- package/dist/esm/interface/utility/dto/generate-cache-key.interface.d.ts +0 -9
- package/dist/esm/interface/utility/dto/index.d.ts +0 -1
- package/dist/esm/utility/dto/generate-cache-key.utility.d.ts +0 -7
- package/dist/esm/utility/dto/generate-cache-key.utility.js +0 -11
- package/dist/esm/utility/dto/generate-cache-key.utility.js.map +0 -1
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export
|
|
2
|
-
export { ApiControllerObservable } from './observable.decorator';
|
|
1
|
+
export * from './observable.decorator';
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { IApiBaseEntity, IApiControllerProperties } from '../../interface/index';
|
|
2
|
+
import type { TApiControllerConstructor } from '../../type/index';
|
|
3
|
+
export declare const ApiController: <E extends IApiBaseEntity>(options: IApiControllerProperties<E>) => <T extends TApiControllerConstructor>(target: T) => T;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var controller_factory = require('
|
|
3
|
+
var controller_factory = require('../../factory/api/controller.factory.js');
|
|
4
4
|
|
|
5
5
|
const ApiController = (options) => (target) => {
|
|
6
6
|
const factory = new controller_factory.ApiControllerFactory(target, options);
|
|
@@ -18,4 +18,4 @@ const ApiController = (options) => (target) => {
|
|
|
18
18
|
};
|
|
19
19
|
|
|
20
20
|
exports.ApiController = ApiController;
|
|
21
|
-
//# sourceMappingURL=decorator.js.map
|
|
21
|
+
//# sourceMappingURL=controller.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.decorator.js","sources":["../../../../../src/decorator/api/controller.decorator.ts"],"sourcesContent":[null],"names":["ApiControllerFactory"],"mappings":";;;;AAKO,MAAM,aAAa,GACzB,CAA2B,OAAoC,KAC/D,CAAsC,MAAS,KAAO;IACrD,MAAM,OAAO,GAA4B,IAAIA,uCAAoB,CAAI,MAAM,EAAE,OAAO,CAAC;IACrF,OAAO,CAAC,IAAI,EAAE;;AAGd,IAAA,MAAM,mBAAmB,GAA2D,cAAc,MAAM,CAAA;;AAEvG,QAAA,WAAA,CAAY,GAAG,UAAe,EAAA;;AAE7B,YAAA,KAAK,CAAC,GAAG,UAAU,CAAC;;KAErB;AACD,IAAA,MAAM,CAAC,cAAc,CAAC,mBAAmB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AAE1E,IAAA,OAAO,mBAAwB;AAChC;;;;"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -35,10 +35,10 @@ var number_constant = require('./constant/number.constant.js');
|
|
|
35
35
|
var constant = require('./constant/utility/dto/constant.js');
|
|
36
36
|
var generate_constant = require('./constant/utility/dto/generate.constant.js');
|
|
37
37
|
var hasPairedCustomSuffixesFields_constant = require('./constant/validator/has-paired-custom-suffixes-fields.constant.js');
|
|
38
|
-
var decorator = require('./decorator/api/controller/decorator.js');
|
|
39
38
|
var observable_decorator = require('./decorator/api/controller/observable.decorator.js');
|
|
39
|
+
var controller_decorator = require('./decorator/api/controller.decorator.js');
|
|
40
40
|
var create_decorator = require('./decorator/api/function/create.decorator.js');
|
|
41
|
-
var decorator
|
|
41
|
+
var decorator = require('./decorator/api/function/decorator.js');
|
|
42
42
|
var delete_decorator = require('./decorator/api/function/delete.decorator.js');
|
|
43
43
|
var getList_decorator = require('./decorator/api/function/get-list.decorator.js');
|
|
44
44
|
var getMany_decorator = require('./decorator/api/function/get-many.decorator.js');
|
|
@@ -98,7 +98,6 @@ var camelCaseString_utility = require('./utility/camel-case-string.utility.js');
|
|
|
98
98
|
var capitalizeString_utility = require('./utility/capitalize-string.utility.js');
|
|
99
99
|
var analize_utility = require('./utility/dto/analize.utility.js');
|
|
100
100
|
var buildDecorator_utility = require('./utility/dto/build-decorator.utility.js');
|
|
101
|
-
var generateCacheKey_utility = require('./utility/dto/generate-cache-key.utility.js');
|
|
102
101
|
var generateDecorator_utility = require('./utility/dto/generate-decorator.utility.js');
|
|
103
102
|
var generateDynamic_utility = require('./utility/dto/generate-dynamic.utility.js');
|
|
104
103
|
var generateException_utility = require('./utility/dto/generate-exception.utility.js');
|
|
@@ -168,10 +167,10 @@ exports.NUMBER_CONSTANT = number_constant.NUMBER_CONSTANT;
|
|
|
168
167
|
exports.DTO_UTILITY_CONSTANT = constant.DTO_UTILITY_CONSTANT;
|
|
169
168
|
exports.DTO_GENERATE_CONSTANT = generate_constant.DTO_GENERATE_CONSTANT;
|
|
170
169
|
exports.VALIDATOR_HAS_PAIRED_CUSTOM_SUFFIXES_FIELDS_CONSTANT = hasPairedCustomSuffixesFields_constant.VALIDATOR_HAS_PAIRED_CUSTOM_SUFFIXES_FIELDS_CONSTANT;
|
|
171
|
-
exports.ApiController = decorator.ApiController;
|
|
172
170
|
exports.ApiControllerObservable = observable_decorator.ApiControllerObservable;
|
|
171
|
+
exports.ApiController = controller_decorator.ApiController;
|
|
173
172
|
exports.ApiFunctionCreate = create_decorator.ApiFunctionCreate;
|
|
174
|
-
exports.ApiFunction = decorator
|
|
173
|
+
exports.ApiFunction = decorator.ApiFunction;
|
|
175
174
|
exports.ApiFunctionDelete = delete_decorator.ApiFunctionDelete;
|
|
176
175
|
exports.ApiFunctionGetList = getList_decorator.ApiFunctionGetList;
|
|
177
176
|
exports.ApiFunctionGetMany = getMany_decorator.ApiFunctionGetMany;
|
|
@@ -336,7 +335,6 @@ exports.CamelCaseString = camelCaseString_utility.CamelCaseString;
|
|
|
336
335
|
exports.CapitalizeString = capitalizeString_utility.CapitalizeString;
|
|
337
336
|
exports.analyzeEntityMetadata = analize_utility.analyzeEntityMetadata;
|
|
338
337
|
exports.DtoBuildDecorator = buildDecorator_utility.DtoBuildDecorator;
|
|
339
|
-
exports.DtoGenerateCacheKey = generateCacheKey_utility.DtoGenerateCacheKey;
|
|
340
338
|
exports.DtoGenerateDecorator = generateDecorator_utility.DtoGenerateDecorator;
|
|
341
339
|
exports.DtoGenerateDynamic = generateDynamic_utility.DtoGenerateDynamic;
|
|
342
340
|
exports.DtoGenerateException = generateException_utility.DtoGenerateException;
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -25,7 +25,6 @@ require('../../enum/decorator/api/route-type.enum.js');
|
|
|
25
25
|
var common = require('@nestjs/common');
|
|
26
26
|
var camelCaseString_utility = require('../camel-case-string.utility.js');
|
|
27
27
|
|
|
28
|
-
const exceptionDtoCache = new Map();
|
|
29
28
|
/**
|
|
30
29
|
* Creates exception DTOs with standardized properties based on HTTP status codes.
|
|
31
30
|
* Generates a class with properties like correlationID, error name, message, status code, and timestamp,
|
|
@@ -34,10 +33,6 @@ const exceptionDtoCache = new Map();
|
|
|
34
33
|
* @returns {Type<unknown>} A generated DTO class for the exception
|
|
35
34
|
*/
|
|
36
35
|
function DtoGenerateException(httpStatus) {
|
|
37
|
-
const cached = exceptionDtoCache.get(httpStatus);
|
|
38
|
-
if (cached) {
|
|
39
|
-
return cached;
|
|
40
|
-
}
|
|
41
36
|
const errorName = common.HttpStatus[httpStatus];
|
|
42
37
|
class GeneratedErrorDTO {
|
|
43
38
|
correlationID;
|
|
@@ -101,7 +96,6 @@ function DtoGenerateException(httpStatus) {
|
|
|
101
96
|
tslib_es6.__metadata("design:type", Number)
|
|
102
97
|
], GeneratedErrorDTO.prototype, "timestamp", void 0);
|
|
103
98
|
Object.defineProperty(GeneratedErrorDTO, "name", { value: `Exception${camelCaseString_utility.CamelCaseString(errorName)}DTO` });
|
|
104
|
-
exceptionDtoCache.set(httpStatus, GeneratedErrorDTO);
|
|
105
99
|
return GeneratedErrorDTO;
|
|
106
100
|
}
|
|
107
101
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-exception.utility.js","sources":["../../../../../src/utility/dto/generate-exception.utility.ts"],"sourcesContent":[null],"names":["HttpStatus","CamelCaseString","__decorate","ApiPropertyUUID","ApiPropertyString","EApiPropertyStringType","EXCEPTION_DTO_CONSTANT","ApiPropertyEnum","ApiPropertyNumber","EApiPropertyNumberType","DATE_CONSTANT","NUMBER_CONSTANT"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA
|
|
1
|
+
{"version":3,"file":"generate-exception.utility.js","sources":["../../../../../src/utility/dto/generate-exception.utility.ts"],"sourcesContent":[null],"names":["HttpStatus","CamelCaseString","__decorate","ApiPropertyUUID","ApiPropertyString","EApiPropertyStringType","EXCEPTION_DTO_CONSTANT","ApiPropertyEnum","ApiPropertyNumber","EApiPropertyNumberType","DATE_CONSTANT","NUMBER_CONSTANT"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA;;;;;;AAMG;AACG,SAAU,oBAAoB,CAAC,UAAsB,EAAA;AAC1D,IAAA,MAAM,SAAS,GAAWA,iBAAU,CAAC,UAAU,CAAC;AAEhD,IAAA,MAAM,iBAAiB,CAAA;AAEtB,QAAA,aAAa;AAYb,QAAA,KAAK,GAAWC,uCAAe,CAAC,SAAS,CAAC;QAY1C,OAAO,GAAW,eAAe;QAUjC,UAAU,GAAe,UAAU;AAYnC,QAAA,SAAS;AACT;AA/CA,IAAAC,oBAAA,CAAA;AADC,QAAAC,8BAAe,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;;AAChD,KAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,MAAA,CAAA;AAYvB,IAAAD,oBAAA,CAAA;AAVC,QAAAE,kCAAiB,CAAC;AAClB,YAAA,WAAW,EAAE,MAAM;AACnB,YAAA,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AACzB,YAAA,YAAY,EAAEH,uCAAe,CAAC,SAAS,CAAC;YACxC,MAAM,EAAEI,sCAAsB,CAAC,MAAM;AACrC,YAAA,UAAU,EAAE,IAAI;YAChB,SAAS,EAAEC,yCAAsB,CAAC,oBAAoB;YACtD,SAAS,EAAEA,yCAAsB,CAAC,oBAAoB;AACtD,YAAA,OAAO,EAAE,sBAAsB;SAC/B,CAAC;;AACyC,KAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AAY3C,IAAAJ,oBAAA,CAAA;AAVC,QAAAE,kCAAiB,CAAC;AAClB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AACzB,YAAA,YAAY,EAAE,eAAe;YAC7B,MAAM,EAAEC,sCAAsB,CAAC,MAAM;AACrC,YAAA,UAAU,EAAE,IAAI;YAChB,SAAS,EAAEC,yCAAsB,CAAC,4BAA4B;YAC9D,SAAS,EAAEA,yCAAsB,CAAC,4BAA4B;AAC9D,YAAA,OAAO,EAAE,sBAAsB;SAC/B,CAAC;;AACgC,KAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,CAAA;AAUlC,IAAAJ,oBAAA,CAAA;AARC,QAAAK,8BAAe,CAAC;AAChB,YAAA,WAAW,EAAE,aAAa;AAC1B,YAAA,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AACzB,YAAA,IAAI,EAAEP,iBAAU;AAChB,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,YAAY,EAAE,UAAU;AACxB,YAAA,UAAU,EAAE,IAAI;SAChB,CAAC;;AACkC,KAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,MAAA,CAAA;AAYpC,IAAAE,oBAAA,CAAA;AAVC,QAAAM,kCAAiB,CAAC;AAClB,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;AACzB,YAAA,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE;YACxB,MAAM,EAAEC,sCAAsB,CAAC,OAAO;AACtC,YAAA,UAAU,EAAE,IAAI;YAChB,OAAO,EAAEC,2BAAa,CAAC,iBAAiB;YACxC,OAAO,EAAEA,2BAAa,CAAC,iBAAiB;YACxC,UAAU,EAAEC,+BAAe,CAAC,GAAG;SAC/B,CAAC;;AACiB,KAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,MAAA,CAAA;AAGpB,IAAA,MAAM,CAAC,cAAc,CAAC,iBAAiB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAA,SAAA,EAAYV,uCAAe,CAAC,SAAS,CAAC,CAAA,GAAA,CAAK,EAAE,CAAC;AAExG,IAAA,OAAO,iBAAiB;AACzB;;;;"}
|
|
@@ -20,7 +20,6 @@ var routeType_enum = require('../../enum/decorator/api/route-type.enum.js');
|
|
|
20
20
|
var swagger = require('@nestjs/swagger');
|
|
21
21
|
var camelCaseString_utility = require('../camel-case-string.utility.js');
|
|
22
22
|
var buildDecorator_utility = require('./build-decorator.utility.js');
|
|
23
|
-
var generateCacheKey_utility = require('./generate-cache-key.utility.js');
|
|
24
23
|
var generateDynamic_utility = require('./generate-dynamic.utility.js');
|
|
25
24
|
var generateFilterDecorator_utility = require('./generate-filter-decorator.utility.js');
|
|
26
25
|
var generateGetListResponse_utility = require('./generate-get-list-response.utility.js');
|
|
@@ -31,7 +30,6 @@ var errorException_utility = require('../error-exception.utility.js');
|
|
|
31
30
|
var hasPairedCustomSuffixesFields_validator = require('../../validator/has-paired-custom-suffixes-fields.validator.js');
|
|
32
31
|
var classValidator = require('class-validator');
|
|
33
32
|
|
|
34
|
-
const dtoGenerateCache = new Map();
|
|
35
33
|
/**
|
|
36
34
|
* Core utility for DTO generation that determines which properties should be included in the DTO.
|
|
37
35
|
* Builds decorators, handles special cases like filter queries, and generates the appropriate class
|
|
@@ -50,17 +48,6 @@ function DtoGenerate(entity, entityMetadata, method, dtoType, dtoConfig, current
|
|
|
50
48
|
if (!isShouldBeGenerated_utility.DtoIsShouldBeGenerated(method, dtoType)) {
|
|
51
49
|
return undefined;
|
|
52
50
|
}
|
|
53
|
-
const cacheKey = generateCacheKey_utility.DtoGenerateCacheKey({
|
|
54
|
-
dtoConfig,
|
|
55
|
-
dtoType,
|
|
56
|
-
entityName: String(entityMetadata.name),
|
|
57
|
-
guardName: currentGuard?.name,
|
|
58
|
-
method,
|
|
59
|
-
});
|
|
60
|
-
const cached = dtoGenerateCache.get(cacheKey);
|
|
61
|
-
if (cached) {
|
|
62
|
-
return cached;
|
|
63
|
-
}
|
|
64
51
|
if (!entityMetadata.primaryKey?.metadata?.[propertyDescribe_constant.PROPERTY_DESCRIBE_DECORATOR_API_CONSTANT.METADATA_KEY]) {
|
|
65
52
|
throw errorException_utility.ErrorException(`Primary key for entity ${String(entityMetadata.name)} not found in metadata storage`);
|
|
66
53
|
}
|
|
@@ -185,9 +172,7 @@ function DtoGenerate(entity, entityMetadata, method, dtoType, dtoConfig, current
|
|
|
185
172
|
value: `${entityMetadata.name ?? "UnknownResource"}${camelCaseString_utility.CamelCaseString(method)}${camelCaseString_utility.CamelCaseString(dtoType)}DTO`,
|
|
186
173
|
});
|
|
187
174
|
// @ts-ignore
|
|
188
|
-
|
|
189
|
-
dtoGenerateCache.set(cacheKey, result);
|
|
190
|
-
return result;
|
|
175
|
+
return method === routeType_enum.EApiRouteType.GET_LIST && dtoType === dtoType_enum.EApiDtoType.RESPONSE ? generateGetListResponse_utility.DtoGenerateGetListResponse(entity, GeneratedDTO, `${entityMetadata.name ?? "UnknownResource"}${camelCaseString_utility.CamelCaseString(method)}${camelCaseString_utility.CamelCaseString(dtoType)}ItemsDTO`) : GeneratedDTO;
|
|
191
176
|
}
|
|
192
177
|
|
|
193
178
|
exports.DtoGenerate = DtoGenerate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.utility.js","sources":["../../../../../src/utility/dto/generate.utility.ts"],"sourcesContent":[null],"names":["DtoIsShouldBeGenerated","
|
|
1
|
+
{"version":3,"file":"generate.utility.js","sources":["../../../../../src/utility/dto/generate.utility.ts"],"sourcesContent":[null],"names":["DtoIsShouldBeGenerated","PROPERTY_DESCRIBE_DECORATOR_API_CONSTANT","ErrorException","DtoIsPropertyShouldBeMarked","EApiRouteType","EApiDtoType","DtoGetGetListQueryBaseClass","DtoGenerateDynamic","DtoBuildDecorator","DtoGenerateFilterDecorator","DTO_GENERATE_CONSTANT","EApiPropertyDescribeType","Validate","HasPairedCustomSuffixesFieldsValidator","ApiExtraModels","CamelCaseString","DtoGenerateGetListResponse"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export { analyzeEntityMetadata } from './analize.utility';
|
|
2
2
|
export { DtoBuildDecorator } from './build-decorator.utility';
|
|
3
|
-
export { DtoGenerateCacheKey } from './generate-cache-key.utility';
|
|
4
3
|
export { DtoGenerateDecorator } from './generate-decorator.utility';
|
|
5
4
|
export { DtoGenerateDynamic } from './generate-dynamic.utility';
|
|
6
5
|
export { DtoGenerateException } from './generate-exception.utility';
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export
|
|
2
|
-
export { ApiControllerObservable } from './observable.decorator';
|
|
1
|
+
export * from './observable.decorator';
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { IApiBaseEntity, IApiControllerProperties } from '../../interface/index';
|
|
2
|
+
import type { TApiControllerConstructor } from '../../type/index';
|
|
3
|
+
export declare const ApiController: <E extends IApiBaseEntity>(options: IApiControllerProperties<E>) => <T extends TApiControllerConstructor>(target: T) => T;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApiControllerFactory } from '
|
|
1
|
+
import { ApiControllerFactory } from '../../factory/api/controller.factory.js';
|
|
2
2
|
|
|
3
3
|
const ApiController = (options) => (target) => {
|
|
4
4
|
const factory = new ApiControllerFactory(target, options);
|
|
@@ -16,4 +16,4 @@ const ApiController = (options) => (target) => {
|
|
|
16
16
|
};
|
|
17
17
|
|
|
18
18
|
export { ApiController };
|
|
19
|
-
//# sourceMappingURL=decorator.js.map
|
|
19
|
+
//# sourceMappingURL=controller.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.decorator.js","sources":["../../../../../src/decorator/api/controller.decorator.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAKO,MAAM,aAAa,GACzB,CAA2B,OAAoC,KAC/D,CAAsC,MAAS,KAAO;IACrD,MAAM,OAAO,GAA4B,IAAI,oBAAoB,CAAI,MAAM,EAAE,OAAO,CAAC;IACrF,OAAO,CAAC,IAAI,EAAE;;AAGd,IAAA,MAAM,mBAAmB,GAA2D,cAAc,MAAM,CAAA;;AAEvG,QAAA,WAAA,CAAY,GAAG,UAAe,EAAA;;AAE7B,YAAA,KAAK,CAAC,GAAG,UAAU,CAAC;;KAErB;AACD,IAAA,MAAM,CAAC,cAAc,CAAC,mBAAmB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AAE1E,IAAA,OAAO,mBAAwB;AAChC;;;;"}
|
package/dist/esm/index.js
CHANGED
|
@@ -33,8 +33,8 @@ export { NUMBER_CONSTANT } from './constant/number.constant.js';
|
|
|
33
33
|
export { DTO_UTILITY_CONSTANT } from './constant/utility/dto/constant.js';
|
|
34
34
|
export { DTO_GENERATE_CONSTANT } from './constant/utility/dto/generate.constant.js';
|
|
35
35
|
export { VALIDATOR_HAS_PAIRED_CUSTOM_SUFFIXES_FIELDS_CONSTANT } from './constant/validator/has-paired-custom-suffixes-fields.constant.js';
|
|
36
|
-
export { ApiController } from './decorator/api/controller/decorator.js';
|
|
37
36
|
export { ApiControllerObservable } from './decorator/api/controller/observable.decorator.js';
|
|
37
|
+
export { ApiController } from './decorator/api/controller.decorator.js';
|
|
38
38
|
export { ApiFunctionCreate } from './decorator/api/function/create.decorator.js';
|
|
39
39
|
export { ApiFunction } from './decorator/api/function/decorator.js';
|
|
40
40
|
export { ApiFunctionDelete } from './decorator/api/function/delete.decorator.js';
|
|
@@ -96,7 +96,6 @@ export { CamelCaseString } from './utility/camel-case-string.utility.js';
|
|
|
96
96
|
export { CapitalizeString } from './utility/capitalize-string.utility.js';
|
|
97
97
|
export { analyzeEntityMetadata } from './utility/dto/analize.utility.js';
|
|
98
98
|
export { DtoBuildDecorator } from './utility/dto/build-decorator.utility.js';
|
|
99
|
-
export { DtoGenerateCacheKey } from './utility/dto/generate-cache-key.utility.js';
|
|
100
99
|
export { DtoGenerateDecorator } from './utility/dto/generate-decorator.utility.js';
|
|
101
100
|
export { DtoGenerateDynamic } from './utility/dto/generate-dynamic.utility.js';
|
|
102
101
|
export { DtoGenerateException } from './utility/dto/generate-exception.utility.js';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -23,7 +23,6 @@ import '../../enum/decorator/api/route-type.enum.js';
|
|
|
23
23
|
import { HttpStatus } from '@nestjs/common';
|
|
24
24
|
import { CamelCaseString } from '../camel-case-string.utility.js';
|
|
25
25
|
|
|
26
|
-
const exceptionDtoCache = new Map();
|
|
27
26
|
/**
|
|
28
27
|
* Creates exception DTOs with standardized properties based on HTTP status codes.
|
|
29
28
|
* Generates a class with properties like correlationID, error name, message, status code, and timestamp,
|
|
@@ -32,10 +31,6 @@ const exceptionDtoCache = new Map();
|
|
|
32
31
|
* @returns {Type<unknown>} A generated DTO class for the exception
|
|
33
32
|
*/
|
|
34
33
|
function DtoGenerateException(httpStatus) {
|
|
35
|
-
const cached = exceptionDtoCache.get(httpStatus);
|
|
36
|
-
if (cached) {
|
|
37
|
-
return cached;
|
|
38
|
-
}
|
|
39
34
|
const errorName = HttpStatus[httpStatus];
|
|
40
35
|
class GeneratedErrorDTO {
|
|
41
36
|
correlationID;
|
|
@@ -99,7 +94,6 @@ function DtoGenerateException(httpStatus) {
|
|
|
99
94
|
__metadata("design:type", Number)
|
|
100
95
|
], GeneratedErrorDTO.prototype, "timestamp", void 0);
|
|
101
96
|
Object.defineProperty(GeneratedErrorDTO, "name", { value: `Exception${CamelCaseString(errorName)}DTO` });
|
|
102
|
-
exceptionDtoCache.set(httpStatus, GeneratedErrorDTO);
|
|
103
97
|
return GeneratedErrorDTO;
|
|
104
98
|
}
|
|
105
99
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-exception.utility.js","sources":["../../../../../src/utility/dto/generate-exception.utility.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAWA
|
|
1
|
+
{"version":3,"file":"generate-exception.utility.js","sources":["../../../../../src/utility/dto/generate-exception.utility.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,6 @@ import { EApiRouteType } from '../../enum/decorator/api/route-type.enum.js';
|
|
|
18
18
|
import { ApiExtraModels } from '@nestjs/swagger';
|
|
19
19
|
import { CamelCaseString } from '../camel-case-string.utility.js';
|
|
20
20
|
import { DtoBuildDecorator } from './build-decorator.utility.js';
|
|
21
|
-
import { DtoGenerateCacheKey } from './generate-cache-key.utility.js';
|
|
22
21
|
import { DtoGenerateDynamic } from './generate-dynamic.utility.js';
|
|
23
22
|
import { DtoGenerateFilterDecorator } from './generate-filter-decorator.utility.js';
|
|
24
23
|
import { DtoGenerateGetListResponse } from './generate-get-list-response.utility.js';
|
|
@@ -29,7 +28,6 @@ import { ErrorException } from '../error-exception.utility.js';
|
|
|
29
28
|
import { HasPairedCustomSuffixesFieldsValidator } from '../../validator/has-paired-custom-suffixes-fields.validator.js';
|
|
30
29
|
import { Validate } from 'class-validator';
|
|
31
30
|
|
|
32
|
-
const dtoGenerateCache = new Map();
|
|
33
31
|
/**
|
|
34
32
|
* Core utility for DTO generation that determines which properties should be included in the DTO.
|
|
35
33
|
* Builds decorators, handles special cases like filter queries, and generates the appropriate class
|
|
@@ -48,17 +46,6 @@ function DtoGenerate(entity, entityMetadata, method, dtoType, dtoConfig, current
|
|
|
48
46
|
if (!DtoIsShouldBeGenerated(method, dtoType)) {
|
|
49
47
|
return undefined;
|
|
50
48
|
}
|
|
51
|
-
const cacheKey = DtoGenerateCacheKey({
|
|
52
|
-
dtoConfig,
|
|
53
|
-
dtoType,
|
|
54
|
-
entityName: String(entityMetadata.name),
|
|
55
|
-
guardName: currentGuard?.name,
|
|
56
|
-
method,
|
|
57
|
-
});
|
|
58
|
-
const cached = dtoGenerateCache.get(cacheKey);
|
|
59
|
-
if (cached) {
|
|
60
|
-
return cached;
|
|
61
|
-
}
|
|
62
49
|
if (!entityMetadata.primaryKey?.metadata?.[PROPERTY_DESCRIBE_DECORATOR_API_CONSTANT.METADATA_KEY]) {
|
|
63
50
|
throw ErrorException(`Primary key for entity ${String(entityMetadata.name)} not found in metadata storage`);
|
|
64
51
|
}
|
|
@@ -183,9 +170,7 @@ function DtoGenerate(entity, entityMetadata, method, dtoType, dtoConfig, current
|
|
|
183
170
|
value: `${entityMetadata.name ?? "UnknownResource"}${CamelCaseString(method)}${CamelCaseString(dtoType)}DTO`,
|
|
184
171
|
});
|
|
185
172
|
// @ts-ignore
|
|
186
|
-
|
|
187
|
-
dtoGenerateCache.set(cacheKey, result);
|
|
188
|
-
return result;
|
|
173
|
+
return method === EApiRouteType.GET_LIST && dtoType === EApiDtoType.RESPONSE ? DtoGenerateGetListResponse(entity, GeneratedDTO, `${entityMetadata.name ?? "UnknownResource"}${CamelCaseString(method)}${CamelCaseString(dtoType)}ItemsDTO`) : GeneratedDTO;
|
|
189
174
|
}
|
|
190
175
|
|
|
191
176
|
export { DtoGenerate };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.utility.js","sources":["../../../../../src/utility/dto/generate.utility.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate.utility.js","sources":["../../../../../src/utility/dto/generate.utility.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export { analyzeEntityMetadata } from './analize.utility';
|
|
2
2
|
export { DtoBuildDecorator } from './build-decorator.utility';
|
|
3
|
-
export { DtoGenerateCacheKey } from './generate-cache-key.utility';
|
|
4
3
|
export { DtoGenerateDecorator } from './generate-decorator.utility';
|
|
5
4
|
export { DtoGenerateDynamic } from './generate-dynamic.utility';
|
|
6
5
|
export { DtoGenerateException } from './generate-exception.utility';
|
package/package.json
CHANGED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { IApiBaseEntity } from '../../../interface/api-base-entity.interface';
|
|
2
|
-
import type { IApiControllerProperties } from '../../../interface/decorator/api/index';
|
|
3
|
-
import type { TApiControllerConstructor } from '../../../type/decorator/api/controller/index';
|
|
4
|
-
export declare const ApiController: <E extends IApiBaseEntity>(options: IApiControllerProperties<E>) => <T extends TApiControllerConstructor>(target: T) => T;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"decorator.js","sources":["../../../../../../src/decorator/api/controller/decorator.ts"],"sourcesContent":[null],"names":["ApiControllerFactory"],"mappings":";;;;AAMO,MAAM,aAAa,GACzB,CAA2B,OAAoC,KAC/D,CAAsC,MAAS,KAAO;IACrD,MAAM,OAAO,GAA4B,IAAIA,uCAAoB,CAAI,MAAM,EAAE,OAAO,CAAC;IACrF,OAAO,CAAC,IAAI,EAAE;;AAGd,IAAA,MAAM,mBAAmB,GAA2D,cAAc,MAAM,CAAA;;AAEvG,QAAA,WAAA,CAAY,GAAG,UAAe,EAAA;;AAE7B,YAAA,KAAK,CAAC,GAAG,UAAU,CAAC;;KAErB;AACD,IAAA,MAAM,CAAC,cAAc,CAAC,mBAAmB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AAE1E,IAAA,OAAO,mBAAwB;AAChC;;;;"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { EApiDtoType, EApiRouteType } from '../../../enum/decorator/api/index';
|
|
2
|
-
import type { IApiControllerPropertiesRouteAutoDtoConfig } from '../../decorator/api/index';
|
|
3
|
-
export interface IDtoGenerateCacheKey {
|
|
4
|
-
dtoConfig?: IApiControllerPropertiesRouteAutoDtoConfig;
|
|
5
|
-
dtoType: EApiDtoType;
|
|
6
|
-
entityName: string;
|
|
7
|
-
guardName?: string;
|
|
8
|
-
method: EApiRouteType;
|
|
9
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type { IDtoGenerateCacheKey } from './generate-cache-key.interface';
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { IDtoGenerateCacheKey } from '../../interface/utility/index';
|
|
2
|
-
/**
|
|
3
|
-
* Generates a unique cache key for DTO instances based on entity name, route method, DTO type, guard, and config.
|
|
4
|
-
* @param {IDtoGenerateCacheKey} key - The key object containing entity name, method, DTO type, guard name, and DTO config
|
|
5
|
-
* @returns {string} A unique string key for caching DTO instances
|
|
6
|
-
*/
|
|
7
|
-
export declare function DtoGenerateCacheKey(key: IDtoGenerateCacheKey): string;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Generates a unique cache key for DTO instances based on entity name, route method, DTO type, guard, and config.
|
|
5
|
-
* @param {IDtoGenerateCacheKey} key - The key object containing entity name, method, DTO type, guard name, and DTO config
|
|
6
|
-
* @returns {string} A unique string key for caching DTO instances
|
|
7
|
-
*/
|
|
8
|
-
function DtoGenerateCacheKey(key) {
|
|
9
|
-
return `${key.entityName}_${key.method}_${key.dtoType}_${key.guardName ?? "no-guard"}_${JSON.stringify(key.dtoConfig ?? {})}`;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
exports.DtoGenerateCacheKey = DtoGenerateCacheKey;
|
|
13
|
-
//# sourceMappingURL=generate-cache-key.utility.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate-cache-key.utility.js","sources":["../../../../../src/utility/dto/generate-cache-key.utility.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAEA;;;;AAIG;AACG,SAAU,mBAAmB,CAAC,GAAyB,EAAA;AAC5D,IAAA,OAAO,CAAA,EAAG,GAAG,CAAC,UAAU,CAAA,CAAA,EAAI,GAAG,CAAC,MAAM,CAAA,CAAA,EAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,IAAI,UAAU,CAAA,CAAA,EAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE;AAC9H;;;;"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { IApiBaseEntity } from '../../../interface/api-base-entity.interface';
|
|
2
|
-
import type { IApiControllerProperties } from '../../../interface/decorator/api/index';
|
|
3
|
-
import type { TApiControllerConstructor } from '../../../type/decorator/api/controller/index';
|
|
4
|
-
export declare const ApiController: <E extends IApiBaseEntity>(options: IApiControllerProperties<E>) => <T extends TApiControllerConstructor>(target: T) => T;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"decorator.js","sources":["../../../../../../src/decorator/api/controller/decorator.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAMO,MAAM,aAAa,GACzB,CAA2B,OAAoC,KAC/D,CAAsC,MAAS,KAAO;IACrD,MAAM,OAAO,GAA4B,IAAI,oBAAoB,CAAI,MAAM,EAAE,OAAO,CAAC;IACrF,OAAO,CAAC,IAAI,EAAE;;AAGd,IAAA,MAAM,mBAAmB,GAA2D,cAAc,MAAM,CAAA;;AAEvG,QAAA,WAAA,CAAY,GAAG,UAAe,EAAA;;AAE7B,YAAA,KAAK,CAAC,GAAG,UAAU,CAAC;;KAErB;AACD,IAAA,MAAM,CAAC,cAAc,CAAC,mBAAmB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AAE1E,IAAA,OAAO,mBAAwB;AAChC;;;;"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { EApiDtoType, EApiRouteType } from '../../../enum/decorator/api/index';
|
|
2
|
-
import type { IApiControllerPropertiesRouteAutoDtoConfig } from '../../decorator/api/index';
|
|
3
|
-
export interface IDtoGenerateCacheKey {
|
|
4
|
-
dtoConfig?: IApiControllerPropertiesRouteAutoDtoConfig;
|
|
5
|
-
dtoType: EApiDtoType;
|
|
6
|
-
entityName: string;
|
|
7
|
-
guardName?: string;
|
|
8
|
-
method: EApiRouteType;
|
|
9
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type { IDtoGenerateCacheKey } from './generate-cache-key.interface';
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { IDtoGenerateCacheKey } from '../../interface/utility/index';
|
|
2
|
-
/**
|
|
3
|
-
* Generates a unique cache key for DTO instances based on entity name, route method, DTO type, guard, and config.
|
|
4
|
-
* @param {IDtoGenerateCacheKey} key - The key object containing entity name, method, DTO type, guard name, and DTO config
|
|
5
|
-
* @returns {string} A unique string key for caching DTO instances
|
|
6
|
-
*/
|
|
7
|
-
export declare function DtoGenerateCacheKey(key: IDtoGenerateCacheKey): string;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generates a unique cache key for DTO instances based on entity name, route method, DTO type, guard, and config.
|
|
3
|
-
* @param {IDtoGenerateCacheKey} key - The key object containing entity name, method, DTO type, guard name, and DTO config
|
|
4
|
-
* @returns {string} A unique string key for caching DTO instances
|
|
5
|
-
*/
|
|
6
|
-
function DtoGenerateCacheKey(key) {
|
|
7
|
-
return `${key.entityName}_${key.method}_${key.dtoType}_${key.guardName ?? "no-guard"}_${JSON.stringify(key.dtoConfig ?? {})}`;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export { DtoGenerateCacheKey };
|
|
11
|
-
//# sourceMappingURL=generate-cache-key.utility.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate-cache-key.utility.js","sources":["../../../../../src/utility/dto/generate-cache-key.utility.ts"],"sourcesContent":[null],"names":[],"mappings":"AAEA;;;;AAIG;AACG,SAAU,mBAAmB,CAAC,GAAyB,EAAA;AAC5D,IAAA,OAAO,CAAA,EAAG,GAAG,CAAC,UAAU,CAAA,CAAA,EAAI,GAAG,CAAC,MAAM,CAAA,CAAA,EAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,IAAI,UAAU,CAAA,CAAA,EAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE;AAC9H;;;;"}
|