@solid-nestjs/common 0.2.6 → 0.2.9
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/adapters/index.d.ts +7 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +23 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/validation.adapter.d.ts +20 -0
- package/dist/adapters/validation.adapter.d.ts.map +1 -0
- package/dist/adapters/validation.adapter.js +309 -0
- package/dist/adapters/validation.adapter.js.map +1 -0
- package/dist/decorator-registry/decorator-registry.d.ts +54 -0
- package/dist/decorator-registry/decorator-registry.d.ts.map +1 -0
- package/dist/decorator-registry/decorator-registry.js +161 -0
- package/dist/decorator-registry/decorator-registry.js.map +1 -0
- package/dist/decorator-registry/index.d.ts +2 -0
- package/dist/decorator-registry/index.d.ts.map +1 -0
- package/dist/decorator-registry/index.js +18 -0
- package/dist/decorator-registry/index.js.map +1 -0
- package/dist/decorators/index.d.ts +6 -0
- package/dist/decorators/index.d.ts.map +1 -1
- package/dist/decorators/index.js +6 -0
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/solid-entity.decorator.d.ts +6 -0
- package/dist/decorators/solid-entity.decorator.d.ts.map +1 -0
- package/dist/decorators/solid-entity.decorator.js +23 -0
- package/dist/decorators/solid-entity.decorator.js.map +1 -0
- package/dist/decorators/solid-field.decorator.d.ts +7 -0
- package/dist/decorators/solid-field.decorator.d.ts.map +1 -0
- package/dist/decorators/solid-field.decorator.js +51 -0
- package/dist/decorators/solid-field.decorator.js.map +1 -0
- package/dist/decorators/solid-id.decorator.d.ts +9 -0
- package/dist/decorators/solid-id.decorator.d.ts.map +1 -0
- package/dist/decorators/solid-id.decorator.js +27 -0
- package/dist/decorators/solid-id.decorator.js.map +1 -0
- package/dist/decorators/solid-input.decorator.d.ts +6 -0
- package/dist/decorators/solid-input.decorator.d.ts.map +1 -0
- package/dist/decorators/solid-input.decorator.js +35 -0
- package/dist/decorators/solid-input.decorator.js.map +1 -0
- package/dist/decorators/solid-relation.decorator.d.ts +19 -0
- package/dist/decorators/solid-relation.decorator.d.ts.map +1 -0
- package/dist/decorators/solid-relation.decorator.js +66 -0
- package/dist/decorators/solid-relation.decorator.js.map +1 -0
- package/dist/decorators/solid-timestamp.decorator.d.ts +13 -0
- package/dist/decorators/solid-timestamp.decorator.d.ts.map +1 -0
- package/dist/decorators/solid-timestamp.decorator.js +49 -0
- package/dist/decorators/solid-timestamp.decorator.js.map +1 -0
- package/dist/enums/aggregate-function.enum.d.ts +42 -0
- package/dist/enums/aggregate-function.enum.d.ts.map +1 -0
- package/dist/enums/aggregate-function.enum.js +46 -0
- package/dist/enums/aggregate-function.enum.js.map +1 -0
- package/dist/enums/index.d.ts +1 -0
- package/dist/enums/index.d.ts.map +1 -1
- package/dist/enums/index.js +1 -0
- package/dist/enums/index.js.map +1 -1
- package/dist/helpers/args-helpers/class-generator.helper.d.ts +143 -0
- package/dist/helpers/args-helpers/class-generator.helper.d.ts.map +1 -0
- package/dist/helpers/args-helpers/class-generator.helper.js +221 -0
- package/dist/helpers/args-helpers/class-generator.helper.js.map +1 -0
- package/dist/helpers/args-helpers/create-groupby-request.helper.d.ts +83 -0
- package/dist/helpers/args-helpers/create-groupby-request.helper.d.ts.map +1 -0
- package/dist/helpers/args-helpers/create-groupby-request.helper.js +119 -0
- package/dist/helpers/args-helpers/create-groupby-request.helper.js.map +1 -0
- package/dist/helpers/args-helpers/decorator-builder.helper.d.ts +160 -0
- package/dist/helpers/args-helpers/decorator-builder.helper.d.ts.map +1 -0
- package/dist/helpers/args-helpers/decorator-builder.helper.js +161 -0
- package/dist/helpers/args-helpers/decorator-builder.helper.js.map +1 -0
- package/dist/helpers/args-helpers/field-config.helper.d.ts +98 -0
- package/dist/helpers/args-helpers/field-config.helper.d.ts.map +1 -0
- package/dist/helpers/args-helpers/field-config.helper.js +143 -0
- package/dist/helpers/args-helpers/field-config.helper.js.map +1 -0
- package/dist/helpers/args-helpers/groupby-args-from.helper.d.ts +87 -0
- package/dist/helpers/args-helpers/groupby-args-from.helper.d.ts.map +1 -0
- package/dist/helpers/args-helpers/groupby-args-from.helper.js +185 -0
- package/dist/helpers/args-helpers/groupby-args-from.helper.js.map +1 -0
- package/dist/helpers/args-helpers/index.d.ts +15 -0
- package/dist/helpers/args-helpers/index.d.ts.map +1 -0
- package/dist/helpers/args-helpers/index.js +58 -0
- package/dist/helpers/args-helpers/index.js.map +1 -0
- package/dist/helpers/args-helpers/type-inference.helper.d.ts +191 -0
- package/dist/helpers/args-helpers/type-inference.helper.d.ts.map +1 -0
- package/dist/helpers/args-helpers/type-inference.helper.js +330 -0
- package/dist/helpers/args-helpers/type-inference.helper.js.map +1 -0
- package/dist/helpers/class-generation/dynamic-class.helper.d.ts +101 -0
- package/dist/helpers/class-generation/dynamic-class.helper.d.ts.map +1 -0
- package/dist/helpers/class-generation/dynamic-class.helper.js +180 -0
- package/dist/helpers/class-generation/dynamic-class.helper.js.map +1 -0
- package/dist/helpers/class-generation/index.d.ts +9 -0
- package/dist/helpers/class-generation/index.d.ts.map +1 -0
- package/dist/helpers/class-generation/index.js +18 -0
- package/dist/helpers/class-generation/index.js.map +1 -0
- package/dist/helpers/decorators/decorator-utils.helper.d.ts +75 -0
- package/dist/helpers/decorators/decorator-utils.helper.d.ts.map +1 -0
- package/dist/helpers/decorators/decorator-utils.helper.js +92 -0
- package/dist/helpers/decorators/decorator-utils.helper.js.map +1 -0
- package/dist/helpers/decorators/index.d.ts +9 -0
- package/dist/helpers/decorators/index.d.ts.map +1 -0
- package/dist/helpers/decorators/index.js +16 -0
- package/dist/helpers/decorators/index.js.map +1 -0
- package/dist/helpers/dto-generator-base.helper.d.ts +19 -0
- package/dist/helpers/dto-generator-base.helper.d.ts.map +1 -0
- package/dist/helpers/dto-generator-base.helper.js +72 -0
- package/dist/helpers/dto-generator-base.helper.js.map +1 -0
- package/dist/helpers/index.d.ts +9 -0
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/index.js +9 -0
- package/dist/helpers/index.js.map +1 -1
- package/dist/helpers/metadata-extractor.helper.d.ts +26 -0
- package/dist/helpers/metadata-extractor.helper.d.ts.map +1 -0
- package/dist/helpers/metadata-extractor.helper.js +67 -0
- package/dist/helpers/metadata-extractor.helper.js.map +1 -0
- package/dist/helpers/package-detector.helper.d.ts +33 -0
- package/dist/helpers/package-detector.helper.d.ts.map +1 -0
- package/dist/helpers/package-detector.helper.js +82 -0
- package/dist/helpers/package-detector.helper.js.map +1 -0
- package/dist/helpers/property-filter.helper.d.ts +15 -0
- package/dist/helpers/property-filter.helper.d.ts.map +1 -0
- package/dist/helpers/property-filter.helper.js +44 -0
- package/dist/helpers/property-filter.helper.js.map +1 -0
- package/dist/helpers/type-inference.helper.d.ts +76 -0
- package/dist/helpers/type-inference.helper.d.ts.map +1 -0
- package/dist/helpers/type-inference.helper.js +205 -0
- package/dist/helpers/type-inference.helper.js.map +1 -0
- package/dist/helpers/validation-inference.helper.d.ts +18 -0
- package/dist/helpers/validation-inference.helper.d.ts.map +1 -0
- package/dist/helpers/validation-inference.helper.js +100 -0
- package/dist/helpers/validation-inference.helper.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/adapters/decorator-adapter.interface.d.ts +8 -0
- package/dist/interfaces/adapters/decorator-adapter.interface.d.ts.map +1 -0
- package/dist/interfaces/adapters/decorator-adapter.interface.js +3 -0
- package/dist/interfaces/adapters/decorator-adapter.interface.js.map +1 -0
- package/dist/interfaces/decorators/solid-field-options.interface.d.ts +55 -0
- package/dist/interfaces/decorators/solid-field-options.interface.d.ts.map +1 -0
- package/dist/interfaces/decorators/solid-field-options.interface.js +3 -0
- package/dist/interfaces/decorators/solid-field-options.interface.js.map +1 -0
- package/dist/interfaces/index.d.ts +5 -0
- package/dist/interfaces/index.d.ts.map +1 -1
- package/dist/interfaces/index.js +5 -0
- package/dist/interfaces/index.js.map +1 -1
- package/dist/interfaces/inputs/filters.interfaces.d.ts +36 -0
- package/dist/interfaces/inputs/filters.interfaces.d.ts.map +1 -0
- package/dist/interfaces/inputs/filters.interfaces.js +3 -0
- package/dist/interfaces/inputs/filters.interfaces.js.map +1 -0
- package/dist/interfaces/inputs/find-args.interface.d.ts +8 -0
- package/dist/interfaces/inputs/find-args.interface.d.ts.map +1 -0
- package/dist/interfaces/inputs/find-args.interface.js +3 -0
- package/dist/interfaces/inputs/find-args.interface.js.map +1 -0
- package/dist/interfaces/inputs/group-by-args.interface.d.ts +33 -0
- package/dist/interfaces/inputs/group-by-args.interface.d.ts.map +1 -0
- package/dist/interfaces/inputs/group-by-args.interface.js +3 -0
- package/dist/interfaces/inputs/group-by-args.interface.js.map +1 -0
- package/dist/interfaces/inputs/group-by-request.interface.d.ts +63 -0
- package/dist/interfaces/inputs/group-by-request.interface.d.ts.map +1 -0
- package/dist/interfaces/inputs/group-by-request.interface.js +3 -0
- package/dist/interfaces/inputs/group-by-request.interface.js.map +1 -0
- package/dist/interfaces/inputs/index.d.ts +6 -0
- package/dist/interfaces/inputs/index.d.ts.map +1 -0
- package/dist/interfaces/inputs/index.js +22 -0
- package/dist/interfaces/inputs/index.js.map +1 -0
- package/dist/interfaces/inputs/pagination-request.interface.d.ts +7 -0
- package/dist/interfaces/inputs/pagination-request.interface.d.ts.map +1 -0
- package/dist/interfaces/inputs/pagination-request.interface.js +3 -0
- package/dist/interfaces/inputs/pagination-request.interface.js.map +1 -0
- package/dist/interfaces/metadata/field-metadata.interface.d.ts +29 -0
- package/dist/interfaces/metadata/field-metadata.interface.d.ts.map +1 -0
- package/dist/interfaces/metadata/field-metadata.interface.js +3 -0
- package/dist/interfaces/metadata/field-metadata.interface.js.map +1 -0
- package/dist/interfaces/misc/group-by-args.interface.d.ts +33 -0
- package/dist/interfaces/misc/group-by-args.interface.d.ts.map +1 -0
- package/dist/interfaces/misc/group-by-args.interface.js +3 -0
- package/dist/interfaces/misc/group-by-args.interface.js.map +1 -0
- package/dist/interfaces/misc/group-by-request.interface.d.ts +63 -0
- package/dist/interfaces/misc/group-by-request.interface.d.ts.map +1 -0
- package/dist/interfaces/misc/group-by-request.interface.js +3 -0
- package/dist/interfaces/misc/group-by-request.interface.js.map +1 -0
- package/dist/interfaces/misc/group-by-response.interface.d.ts +59 -0
- package/dist/interfaces/misc/group-by-response.interface.d.ts.map +1 -0
- package/dist/interfaces/misc/group-by-response.interface.js +3 -0
- package/dist/interfaces/misc/group-by-response.interface.js.map +1 -0
- package/dist/interfaces/misc/group-by.interface.d.ts +145 -0
- package/dist/interfaces/misc/group-by.interface.d.ts.map +1 -0
- package/dist/interfaces/misc/group-by.interface.js +3 -0
- package/dist/interfaces/misc/group-by.interface.js.map +1 -0
- package/dist/interfaces/misc/index.d.ts +0 -4
- package/dist/interfaces/misc/index.d.ts.map +1 -1
- package/dist/interfaces/misc/index.js +0 -4
- package/dist/interfaces/misc/index.js.map +1 -1
- package/dist/interfaces/outputs/group-by-response.interface.d.ts +59 -0
- package/dist/interfaces/outputs/group-by-response.interface.d.ts.map +1 -0
- package/dist/interfaces/outputs/group-by-response.interface.js +3 -0
- package/dist/interfaces/outputs/group-by-response.interface.js.map +1 -0
- package/dist/interfaces/outputs/index.d.ts +3 -0
- package/dist/interfaces/outputs/index.d.ts.map +1 -0
- package/dist/interfaces/outputs/index.js +19 -0
- package/dist/interfaces/outputs/index.js.map +1 -0
- package/dist/interfaces/outputs/pagination-result.interface.d.ts +10 -0
- package/dist/interfaces/outputs/pagination-result.interface.d.ts.map +1 -0
- package/dist/interfaces/outputs/pagination-result.interface.js +3 -0
- package/dist/interfaces/outputs/pagination-result.interface.js.map +1 -0
- package/dist/interfaces/services/crud-service.interface.d.ts +2 -1
- package/dist/interfaces/services/crud-service.interface.d.ts.map +1 -1
- package/dist/interfaces/services/crud-service.interface.js.map +1 -1
- package/dist/interfaces/services/data-service.interface.d.ts +3 -1
- package/dist/interfaces/services/data-service.interface.d.ts.map +1 -1
- package/dist/interfaces/structures/common-services.index.d.ts +1 -0
- package/dist/interfaces/structures/common-services.index.d.ts.map +1 -0
- package/dist/interfaces/structures/common-services.index.js +2 -0
- package/dist/interfaces/structures/common-services.index.js.map +1 -0
- package/dist/interfaces/structures/crud-service-structure.interface.d.ts +2 -1
- package/dist/interfaces/structures/crud-service-structure.interface.d.ts.map +1 -1
- package/dist/interfaces/structures/data-service-structure.interface.d.ts +2 -1
- package/dist/interfaces/structures/data-service-structure.interface.d.ts.map +1 -1
- package/dist/interfaces/structures/entity-provider-structure.interface.d.ts +2 -1
- package/dist/interfaces/structures/entity-provider-structure.interface.d.ts.map +1 -1
- package/dist/interfaces/structures/entity-provider-structure.interface.js.map +1 -1
- package/dist/interfaces/structures/service-plugins.interface.d.ts +2 -1
- package/dist/interfaces/structures/service-plugins.interface.d.ts.map +1 -1
- package/dist/metadata/index.d.ts +2 -0
- package/dist/metadata/index.d.ts.map +1 -0
- package/dist/metadata/index.js +18 -0
- package/dist/metadata/index.js.map +1 -0
- package/dist/metadata/metadata-storage.d.ts +54 -0
- package/dist/metadata/metadata-storage.d.ts.map +1 -0
- package/dist/metadata/metadata-storage.js +106 -0
- package/dist/metadata/metadata-storage.js.map +1 -0
- package/dist/registry/index.d.ts +2 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +18 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/relation-adapter-registry.d.ts +11 -0
- package/dist/registry/relation-adapter-registry.d.ts.map +1 -0
- package/dist/registry/relation-adapter-registry.js +30 -0
- package/dist/registry/relation-adapter-registry.js.map +1 -0
- package/dist/types/dto-generation.types.d.ts +46 -0
- package/dist/types/dto-generation.types.d.ts.map +1 -0
- package/dist/types/dto-generation.types.js +6 -0
- package/dist/types/dto-generation.types.js.map +1 -0
- package/dist/types/find-args.type.d.ts +9 -7
- package/dist/types/find-args.type.d.ts.map +1 -1
- package/dist/types/group-by.type.d.ts +41 -0
- package/dist/types/group-by.type.d.ts.map +1 -0
- package/dist/types/group-by.type.js +3 -0
- package/dist/types/group-by.type.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/utils/object.utils.d.ts +0 -8
- package/dist/utils/object.utils.d.ts.map +0 -1
- package/dist/utils/object.utils.js +0 -11
- package/dist/utils/object.utils.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groupby-args-from.helper.d.ts","sourceRoot":"","sources":["../../../src/helpers/args-helpers/groupby-args-from.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,GAAG,CAAC;QACV,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,UAAU,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,CAiE3E;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,CA8DjF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAEnE;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG,CAEvF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAEvE"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GroupByArgsFrom = GroupByArgsFrom;
|
|
4
|
+
exports.extractFindArgsMetadata = extractFindArgsMetadata;
|
|
5
|
+
exports.getGroupByArgsMetadata = getGroupByArgsMetadata;
|
|
6
|
+
exports.getGroupByFieldMetadata = getGroupByFieldMetadata;
|
|
7
|
+
exports.isGroupByArgsFromClass = isGroupByArgsFromClass;
|
|
8
|
+
require("reflect-metadata");
|
|
9
|
+
/**
|
|
10
|
+
* GroupByArgsFrom mixin helper that creates a GroupBy class from a FindArgs constructor.
|
|
11
|
+
*
|
|
12
|
+
* This function analyzes the provided FindArgs class and extracts relevant properties
|
|
13
|
+
* to generate a boolean-based GroupBy class, where each specified field becomes a
|
|
14
|
+
* boolean property indicating whether to group by that field.
|
|
15
|
+
*
|
|
16
|
+
* @template T - The FindArgs type
|
|
17
|
+
* @param config - Configuration specifying FindArgs type and fields to include
|
|
18
|
+
* @returns A function that can be used as a mixin base class
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* // Define FindArgs class
|
|
23
|
+
* export class FindProductArgs extends FindArgsFrom({
|
|
24
|
+
* whereType: ProductWhere,
|
|
25
|
+
* orderByType: ProductOrderBy
|
|
26
|
+
* }) {}
|
|
27
|
+
*
|
|
28
|
+
* // Create GroupBy from FindArgs
|
|
29
|
+
* const ProductGroupByFromArgs = GroupByArgsFrom({
|
|
30
|
+
* findArgsType: FindProductArgs,
|
|
31
|
+
* groupByFields: ['category', 'supplier', 'status'],
|
|
32
|
+
* className: 'ProductGroupByFromFindArgs'
|
|
33
|
+
* });
|
|
34
|
+
*
|
|
35
|
+
* // Usage in service or resolver
|
|
36
|
+
* function groupProducts(args: FindProductArgs): ProductGroupByFromArgs {
|
|
37
|
+
* return new ProductGroupByFromArgs();
|
|
38
|
+
* }
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
function GroupByArgsFrom(config) {
|
|
42
|
+
if (!config.findArgsType) {
|
|
43
|
+
throw new Error('findArgsType is required in GroupByArgsFromConfig');
|
|
44
|
+
}
|
|
45
|
+
if (!config.groupByFields || config.groupByFields.length === 0) {
|
|
46
|
+
throw new Error('groupByFields array is required and cannot be empty');
|
|
47
|
+
}
|
|
48
|
+
// Extract metadata from FindArgs class
|
|
49
|
+
const findArgsMetadata = extractFindArgsMetadata(config.findArgsType);
|
|
50
|
+
// Validate that specified fields exist in FindArgs
|
|
51
|
+
const availableFields = findArgsMetadata.properties.map(p => p.name);
|
|
52
|
+
const invalidFields = config.groupByFields.filter(field => !availableFields.includes(field));
|
|
53
|
+
if (invalidFields.length > 0) {
|
|
54
|
+
throw new Error(`Invalid groupByFields specified: ${invalidFields.join(', ')}. Available fields: ${availableFields.join(', ')}`);
|
|
55
|
+
}
|
|
56
|
+
// Generate class name
|
|
57
|
+
const className = config.className || `${findArgsMetadata.className}GroupBy`;
|
|
58
|
+
// Create dynamic class
|
|
59
|
+
const GroupByClass = class {
|
|
60
|
+
constructor() {
|
|
61
|
+
// Initialize all group by fields as optional booleans
|
|
62
|
+
config.groupByFields.forEach(fieldName => {
|
|
63
|
+
this[fieldName] = undefined;
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
// Set class name for debugging and reflection
|
|
68
|
+
Object.defineProperty(GroupByClass, 'name', {
|
|
69
|
+
value: className,
|
|
70
|
+
configurable: true
|
|
71
|
+
});
|
|
72
|
+
// Add metadata for each group by field
|
|
73
|
+
config.groupByFields.forEach(fieldName => {
|
|
74
|
+
const originalProperty = findArgsMetadata.properties.find(p => p.name === fieldName);
|
|
75
|
+
// Set property metadata for TypeScript reflection
|
|
76
|
+
Reflect.defineMetadata('design:type', Boolean, GroupByClass.prototype, fieldName);
|
|
77
|
+
// Store custom metadata for the property
|
|
78
|
+
Reflect.defineMetadata('groupby:field', {
|
|
79
|
+
originalType: originalProperty?.type,
|
|
80
|
+
description: originalProperty?.description || `Group by ${fieldName}`,
|
|
81
|
+
isOptional: true,
|
|
82
|
+
isGroupBy: true
|
|
83
|
+
}, GroupByClass.prototype, fieldName);
|
|
84
|
+
});
|
|
85
|
+
// Store class-level metadata
|
|
86
|
+
Reflect.defineMetadata('groupby:config', {
|
|
87
|
+
sourceClass: config.findArgsType.name,
|
|
88
|
+
className,
|
|
89
|
+
description: config.description || `GroupBy fields derived from ${findArgsMetadata.className}`,
|
|
90
|
+
fields: config.groupByFields,
|
|
91
|
+
entityType: findArgsMetadata.entityType
|
|
92
|
+
}, GroupByClass);
|
|
93
|
+
return GroupByClass;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Extracts metadata from a FindArgs class for use in GroupBy generation
|
|
97
|
+
*
|
|
98
|
+
* @param findArgsType - The FindArgs class to analyze
|
|
99
|
+
* @returns Extracted metadata including properties and class information
|
|
100
|
+
*/
|
|
101
|
+
function extractFindArgsMetadata(findArgsType) {
|
|
102
|
+
const className = findArgsType.name;
|
|
103
|
+
const properties = [];
|
|
104
|
+
// Get all property names from the class prototype
|
|
105
|
+
const propertyNames = Object.getOwnPropertyNames(findArgsType.prototype);
|
|
106
|
+
// Get all metadata keys to find properties with design:type metadata
|
|
107
|
+
const metadataKeys = Reflect.getMetadataKeys(findArgsType.prototype) || [];
|
|
108
|
+
const typeMetadataKeys = metadataKeys
|
|
109
|
+
.filter(key => typeof key === 'string' && key.startsWith('design:type'))
|
|
110
|
+
.map(key => key);
|
|
111
|
+
// Find property names from metadata keys
|
|
112
|
+
const metadataPropertyNames = [];
|
|
113
|
+
for (const key of typeMetadataKeys) {
|
|
114
|
+
if (key === 'design:type')
|
|
115
|
+
continue; // Skip class-level metadata
|
|
116
|
+
// Get all properties that have design:type metadata
|
|
117
|
+
const allMetadataKeys = Reflect.getMetadataKeys(findArgsType.prototype);
|
|
118
|
+
for (const metaKey of allMetadataKeys) {
|
|
119
|
+
if (typeof metaKey === 'symbol')
|
|
120
|
+
continue;
|
|
121
|
+
const parts = metaKey.split(':');
|
|
122
|
+
if (parts[0] === 'design' && parts[1] === 'type' && parts[2]) {
|
|
123
|
+
metadataPropertyNames.push(parts[2]);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Get properties that have design:type metadata directly
|
|
128
|
+
const instance = new findArgsType();
|
|
129
|
+
const instanceKeys = Object.keys(instance);
|
|
130
|
+
// Combine all sources of property names
|
|
131
|
+
const allPropertyNames = Array.from(new Set([
|
|
132
|
+
...propertyNames,
|
|
133
|
+
...metadataPropertyNames,
|
|
134
|
+
...instanceKeys
|
|
135
|
+
])).filter(name => name !== 'constructor');
|
|
136
|
+
// Extract metadata for each property
|
|
137
|
+
for (const propertyName of allPropertyNames) {
|
|
138
|
+
const type = Reflect.getMetadata('design:type', findArgsType.prototype, propertyName);
|
|
139
|
+
if (type || instanceKeys.includes(propertyName)) {
|
|
140
|
+
properties.push({
|
|
141
|
+
name: propertyName,
|
|
142
|
+
type: type || Object, // Default to Object if no type metadata
|
|
143
|
+
isOptional: true, // Assume optional for GroupBy context
|
|
144
|
+
description: `Property ${propertyName} from ${className}`
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Try to extract entity type if available in class metadata
|
|
149
|
+
const entityType = Reflect.getMetadata('entity:type', findArgsType) ||
|
|
150
|
+
Reflect.getMetadata('crud:entity', findArgsType);
|
|
151
|
+
return {
|
|
152
|
+
className,
|
|
153
|
+
properties,
|
|
154
|
+
entityType
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Gets the GroupBy configuration metadata from a class created by GroupByArgsFrom
|
|
159
|
+
*
|
|
160
|
+
* @param groupByClass - The class created by GroupByArgsFrom
|
|
161
|
+
* @returns The configuration metadata or undefined if not found
|
|
162
|
+
*/
|
|
163
|
+
function getGroupByArgsMetadata(groupByClass) {
|
|
164
|
+
return Reflect.getMetadata('groupby:config', groupByClass);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Gets the field metadata for a specific property in a GroupBy class
|
|
168
|
+
*
|
|
169
|
+
* @param groupByClass - The class created by GroupByArgsFrom
|
|
170
|
+
* @param fieldName - The field name to get metadata for
|
|
171
|
+
* @returns The field metadata or undefined if not found
|
|
172
|
+
*/
|
|
173
|
+
function getGroupByFieldMetadata(groupByClass, fieldName) {
|
|
174
|
+
return Reflect.getMetadata('groupby:field', groupByClass.prototype, fieldName);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Validates that a class was created by GroupByArgsFrom
|
|
178
|
+
*
|
|
179
|
+
* @param groupByClass - The class to validate
|
|
180
|
+
* @returns True if the class was created by GroupByArgsFrom
|
|
181
|
+
*/
|
|
182
|
+
function isGroupByArgsFromClass(groupByClass) {
|
|
183
|
+
return !!Reflect.getMetadata('groupby:config', groupByClass);
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=groupby-args-from.helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groupby-args-from.helper.js","sourceRoot":"","sources":["../../../src/helpers/args-helpers/groupby-args-from.helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Args Helper Mixins - Core Infrastructure
|
|
3
|
+
*
|
|
4
|
+
* This module provides the shared infrastructure for creating helper functions
|
|
5
|
+
* that reduce boilerplate in DTO creation. These utilities are used by the
|
|
6
|
+
* package-specific implementations in rest-api, graphql, and rest-graphql packages.
|
|
7
|
+
*/
|
|
8
|
+
export { inferFilterType, inferPlainType, FilterTypeRegistry, setDefaultFilterTypes, // deprecated, use FilterTypeRegistry.register()
|
|
9
|
+
isSupportedPrimitiveType, getReflectedPropertyType, isEnum, getEnumInfo, shouldTreatAsEnum, isRelationType, type FieldConfig, type ParsedFieldConfig } from './type-inference.helper';
|
|
10
|
+
export { parseFieldConfig, parseOrderByConfig, parseGroupByConfig, parseClassOptions, validateFieldConfig, validateClassOptions, type WhereFieldsConfig, type OrderByFieldConfig, type OrderByFieldsConfig, type GroupByFieldConfig, type GroupByFieldsConfig, type ClassOptions, type ParsedClassOptions } from './field-config.helper';
|
|
11
|
+
export { generateBaseClass, addPropertyToClass, getPropertyMetadata, setPropertyMetadata, getDefinedProperties, cloneClass, type ClassGeneratorOptions, type PropertyOptions } from '../class-generation';
|
|
12
|
+
export { applyDecoratorToProperty, applyDecoratorsToProperty, applyDecoratorToClass, applyDecoratorsToClass } from '../decorators';
|
|
13
|
+
export { BaseDecoratorBuilder, DecoratorUtils, DecoratorBuilderRegistry, addLogicalOperators, type DecoratorConfig, type DecoratorBuilder, type DecoratorBuilderFactory } from './decorator-builder.helper';
|
|
14
|
+
export { GroupByArgsFrom, extractFindArgsMetadata, getGroupByArgsMetadata, getGroupByFieldMetadata, isGroupByArgsFromClass, type GroupByArgsFromConfig, type FindArgsMetadata } from './groupby-args-from.helper';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/helpers/args-helpers/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EAAE,gDAAgD;AACvE,wBAAwB,EACxB,wBAAwB,EACxB,MAAM,EACN,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,UAAU,EACV,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACrB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,wBAAwB,EACxB,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC7B,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACtB,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Args Helper Mixins - Core Infrastructure
|
|
4
|
+
*
|
|
5
|
+
* This module provides the shared infrastructure for creating helper functions
|
|
6
|
+
* that reduce boilerplate in DTO creation. These utilities are used by the
|
|
7
|
+
* package-specific implementations in rest-api, graphql, and rest-graphql packages.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.isGroupByArgsFromClass = exports.getGroupByFieldMetadata = exports.getGroupByArgsMetadata = exports.extractFindArgsMetadata = exports.GroupByArgsFrom = exports.addLogicalOperators = exports.DecoratorBuilderRegistry = exports.DecoratorUtils = exports.BaseDecoratorBuilder = exports.applyDecoratorsToClass = exports.applyDecoratorToClass = exports.applyDecoratorsToProperty = exports.applyDecoratorToProperty = exports.cloneClass = exports.getDefinedProperties = exports.setPropertyMetadata = exports.getPropertyMetadata = exports.addPropertyToClass = exports.generateBaseClass = exports.validateClassOptions = exports.validateFieldConfig = exports.parseClassOptions = exports.parseGroupByConfig = exports.parseOrderByConfig = exports.parseFieldConfig = exports.isRelationType = exports.shouldTreatAsEnum = exports.getEnumInfo = exports.isEnum = exports.getReflectedPropertyType = exports.isSupportedPrimitiveType = exports.setDefaultFilterTypes = exports.FilterTypeRegistry = exports.inferPlainType = exports.inferFilterType = void 0;
|
|
11
|
+
// Type inference utilities
|
|
12
|
+
var type_inference_helper_1 = require("./type-inference.helper");
|
|
13
|
+
Object.defineProperty(exports, "inferFilterType", { enumerable: true, get: function () { return type_inference_helper_1.inferFilterType; } });
|
|
14
|
+
Object.defineProperty(exports, "inferPlainType", { enumerable: true, get: function () { return type_inference_helper_1.inferPlainType; } });
|
|
15
|
+
Object.defineProperty(exports, "FilterTypeRegistry", { enumerable: true, get: function () { return type_inference_helper_1.FilterTypeRegistry; } });
|
|
16
|
+
Object.defineProperty(exports, "setDefaultFilterTypes", { enumerable: true, get: function () { return type_inference_helper_1.setDefaultFilterTypes; } });
|
|
17
|
+
Object.defineProperty(exports, "isSupportedPrimitiveType", { enumerable: true, get: function () { return type_inference_helper_1.isSupportedPrimitiveType; } });
|
|
18
|
+
Object.defineProperty(exports, "getReflectedPropertyType", { enumerable: true, get: function () { return type_inference_helper_1.getReflectedPropertyType; } });
|
|
19
|
+
Object.defineProperty(exports, "isEnum", { enumerable: true, get: function () { return type_inference_helper_1.isEnum; } });
|
|
20
|
+
Object.defineProperty(exports, "getEnumInfo", { enumerable: true, get: function () { return type_inference_helper_1.getEnumInfo; } });
|
|
21
|
+
Object.defineProperty(exports, "shouldTreatAsEnum", { enumerable: true, get: function () { return type_inference_helper_1.shouldTreatAsEnum; } });
|
|
22
|
+
Object.defineProperty(exports, "isRelationType", { enumerable: true, get: function () { return type_inference_helper_1.isRelationType; } });
|
|
23
|
+
// Field configuration utilities
|
|
24
|
+
var field_config_helper_1 = require("./field-config.helper");
|
|
25
|
+
Object.defineProperty(exports, "parseFieldConfig", { enumerable: true, get: function () { return field_config_helper_1.parseFieldConfig; } });
|
|
26
|
+
Object.defineProperty(exports, "parseOrderByConfig", { enumerable: true, get: function () { return field_config_helper_1.parseOrderByConfig; } });
|
|
27
|
+
Object.defineProperty(exports, "parseGroupByConfig", { enumerable: true, get: function () { return field_config_helper_1.parseGroupByConfig; } });
|
|
28
|
+
Object.defineProperty(exports, "parseClassOptions", { enumerable: true, get: function () { return field_config_helper_1.parseClassOptions; } });
|
|
29
|
+
Object.defineProperty(exports, "validateFieldConfig", { enumerable: true, get: function () { return field_config_helper_1.validateFieldConfig; } });
|
|
30
|
+
Object.defineProperty(exports, "validateClassOptions", { enumerable: true, get: function () { return field_config_helper_1.validateClassOptions; } });
|
|
31
|
+
// Re-export class generation utilities from the common location
|
|
32
|
+
var class_generation_1 = require("../class-generation");
|
|
33
|
+
Object.defineProperty(exports, "generateBaseClass", { enumerable: true, get: function () { return class_generation_1.generateBaseClass; } });
|
|
34
|
+
Object.defineProperty(exports, "addPropertyToClass", { enumerable: true, get: function () { return class_generation_1.addPropertyToClass; } });
|
|
35
|
+
Object.defineProperty(exports, "getPropertyMetadata", { enumerable: true, get: function () { return class_generation_1.getPropertyMetadata; } });
|
|
36
|
+
Object.defineProperty(exports, "setPropertyMetadata", { enumerable: true, get: function () { return class_generation_1.setPropertyMetadata; } });
|
|
37
|
+
Object.defineProperty(exports, "getDefinedProperties", { enumerable: true, get: function () { return class_generation_1.getDefinedProperties; } });
|
|
38
|
+
Object.defineProperty(exports, "cloneClass", { enumerable: true, get: function () { return class_generation_1.cloneClass; } });
|
|
39
|
+
// Re-export decorator utilities from the common location
|
|
40
|
+
var decorators_1 = require("../decorators");
|
|
41
|
+
Object.defineProperty(exports, "applyDecoratorToProperty", { enumerable: true, get: function () { return decorators_1.applyDecoratorToProperty; } });
|
|
42
|
+
Object.defineProperty(exports, "applyDecoratorsToProperty", { enumerable: true, get: function () { return decorators_1.applyDecoratorsToProperty; } });
|
|
43
|
+
Object.defineProperty(exports, "applyDecoratorToClass", { enumerable: true, get: function () { return decorators_1.applyDecoratorToClass; } });
|
|
44
|
+
Object.defineProperty(exports, "applyDecoratorsToClass", { enumerable: true, get: function () { return decorators_1.applyDecoratorsToClass; } });
|
|
45
|
+
// Decorator building utilities (args-helpers specific)
|
|
46
|
+
var decorator_builder_helper_1 = require("./decorator-builder.helper");
|
|
47
|
+
Object.defineProperty(exports, "BaseDecoratorBuilder", { enumerable: true, get: function () { return decorator_builder_helper_1.BaseDecoratorBuilder; } });
|
|
48
|
+
Object.defineProperty(exports, "DecoratorUtils", { enumerable: true, get: function () { return decorator_builder_helper_1.DecoratorUtils; } });
|
|
49
|
+
Object.defineProperty(exports, "DecoratorBuilderRegistry", { enumerable: true, get: function () { return decorator_builder_helper_1.DecoratorBuilderRegistry; } });
|
|
50
|
+
Object.defineProperty(exports, "addLogicalOperators", { enumerable: true, get: function () { return decorator_builder_helper_1.addLogicalOperators; } });
|
|
51
|
+
// GroupByArgsFrom mixin utilities
|
|
52
|
+
var groupby_args_from_helper_1 = require("./groupby-args-from.helper");
|
|
53
|
+
Object.defineProperty(exports, "GroupByArgsFrom", { enumerable: true, get: function () { return groupby_args_from_helper_1.GroupByArgsFrom; } });
|
|
54
|
+
Object.defineProperty(exports, "extractFindArgsMetadata", { enumerable: true, get: function () { return groupby_args_from_helper_1.extractFindArgsMetadata; } });
|
|
55
|
+
Object.defineProperty(exports, "getGroupByArgsMetadata", { enumerable: true, get: function () { return groupby_args_from_helper_1.getGroupByArgsMetadata; } });
|
|
56
|
+
Object.defineProperty(exports, "getGroupByFieldMetadata", { enumerable: true, get: function () { return groupby_args_from_helper_1.getGroupByFieldMetadata; } });
|
|
57
|
+
Object.defineProperty(exports, "isGroupByArgsFromClass", { enumerable: true, get: function () { return groupby_args_from_helper_1.isGroupByArgsFromClass; } });
|
|
58
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/helpers/args-helpers/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH,2BAA2B;AAC3B,iEAaiC;AAZ/B,wHAAA,eAAe,OAAA;AACf,uHAAA,cAAc,OAAA;AACd,2HAAA,kBAAkB,OAAA;AAClB,8HAAA,qBAAqB,OAAA;AACrB,iIAAA,wBAAwB,OAAA;AACxB,iIAAA,wBAAwB,OAAA;AACxB,+GAAA,MAAM,OAAA;AACN,oHAAA,WAAW,OAAA;AACX,0HAAA,iBAAiB,OAAA;AACjB,uHAAA,cAAc,OAAA;AAKhB,gCAAgC;AAChC,6DAc+B;AAb7B,uHAAA,gBAAgB,OAAA;AAChB,yHAAA,kBAAkB,OAAA;AAClB,yHAAA,kBAAkB,OAAA;AAClB,wHAAA,iBAAiB,OAAA;AACjB,0HAAA,mBAAmB,OAAA;AACnB,2HAAA,oBAAoB,OAAA;AAUtB,gEAAgE;AAChE,wDAS6B;AAR3B,qHAAA,iBAAiB,OAAA;AACjB,sHAAA,kBAAkB,OAAA;AAClB,uHAAA,mBAAmB,OAAA;AACnB,uHAAA,mBAAmB,OAAA;AACnB,wHAAA,oBAAoB,OAAA;AACpB,8GAAA,UAAU,OAAA;AAKZ,yDAAyD;AACzD,4CAKuB;AAJrB,sHAAA,wBAAwB,OAAA;AACxB,uHAAA,yBAAyB,OAAA;AACzB,mHAAA,qBAAqB,OAAA;AACrB,oHAAA,sBAAsB,OAAA;AAGxB,uDAAuD;AACvD,uEAQoC;AAPlC,gIAAA,oBAAoB,OAAA;AACpB,0HAAA,cAAc,OAAA;AACd,oIAAA,wBAAwB,OAAA;AACxB,+HAAA,mBAAmB,OAAA;AAMrB,kCAAkC;AAClC,uEAQoC;AAPlC,2HAAA,eAAe,OAAA;AACf,mIAAA,uBAAuB,OAAA;AACvB,kIAAA,sBAAsB,OAAA;AACtB,mIAAA,uBAAuB,OAAA;AACvB,kIAAA,sBAAsB,OAAA"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { Type } from '@nestjs/common';
|
|
2
|
+
import 'reflect-metadata';
|
|
3
|
+
/**
|
|
4
|
+
* Configuration for a field in the helper functions
|
|
5
|
+
*/
|
|
6
|
+
export type FieldConfig = true | Type<any> | {
|
|
7
|
+
type?: Type<any>;
|
|
8
|
+
isPlain?: boolean;
|
|
9
|
+
description?: string;
|
|
10
|
+
required?: boolean;
|
|
11
|
+
example?: any;
|
|
12
|
+
deprecated?: boolean;
|
|
13
|
+
enum?: any;
|
|
14
|
+
enumName?: string;
|
|
15
|
+
isRelation?: boolean;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Parsed field configuration with normalized values
|
|
19
|
+
*/
|
|
20
|
+
export interface ParsedFieldConfig {
|
|
21
|
+
type?: Type<any>;
|
|
22
|
+
isPlain?: boolean;
|
|
23
|
+
description?: string;
|
|
24
|
+
required?: boolean;
|
|
25
|
+
example?: any;
|
|
26
|
+
deprecated?: boolean;
|
|
27
|
+
enum?: any;
|
|
28
|
+
enumName?: string;
|
|
29
|
+
isRelation?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Infers the appropriate plain type (String, Number, Date) for an entity property.
|
|
33
|
+
* Used when isPlain: true is specified in the field configuration.
|
|
34
|
+
*
|
|
35
|
+
* @template T - The entity type
|
|
36
|
+
* @param entity - The entity class constructor
|
|
37
|
+
* @param propertyName - The name of the property to infer type for
|
|
38
|
+
* @returns The plain type class constructor (String, Number, Date, Boolean)
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* class Product {
|
|
43
|
+
* name: string; // Will infer String
|
|
44
|
+
* price: number; // Will infer Number
|
|
45
|
+
* createdAt: Date; // Will infer Date
|
|
46
|
+
* isActive: boolean; // Will infer Boolean
|
|
47
|
+
* }
|
|
48
|
+
*
|
|
49
|
+
* const nameType = inferPlainType(Product, 'name'); // String
|
|
50
|
+
* const priceType = inferPlainType(Product, 'price'); // Number
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare function inferPlainType(entity: Type<any>, propertyName: string): Type<any>;
|
|
54
|
+
/**
|
|
55
|
+
* Infers the appropriate filter type for an entity property based on its TypeScript type.
|
|
56
|
+
* Uses reflection to determine the property type and maps it to the corresponding filter type.
|
|
57
|
+
*
|
|
58
|
+
* @template T - The entity type
|
|
59
|
+
* @param entity - The entity class constructor
|
|
60
|
+
* @param propertyName - The name of the property to infer type for
|
|
61
|
+
* @param config - Optional field configuration that may override the inferred type
|
|
62
|
+
* @returns The filter type class constructor
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* class Product {
|
|
67
|
+
* name: string; // Will infer StringFilter
|
|
68
|
+
* price: number; // Will infer NumberFilter
|
|
69
|
+
* createdAt: Date; // Will infer DateFilter
|
|
70
|
+
* isActive: boolean; // Will return Boolean
|
|
71
|
+
* }
|
|
72
|
+
*
|
|
73
|
+
* const nameFilterType = inferFilterType(Product, 'name'); // StringFilter
|
|
74
|
+
* const priceFilterType = inferFilterType(Product, 'price'); // NumberFilter
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export declare function inferFilterType(entity: Type<any>, propertyName: string, config?: FieldConfig): Type<any>;
|
|
78
|
+
/**
|
|
79
|
+
* Checks if a given type appears to be a relation type (Where/OrderBy/GroupBy class)
|
|
80
|
+
* by examining the class name patterns commonly used in the framework
|
|
81
|
+
*
|
|
82
|
+
* @param type - The type to check
|
|
83
|
+
* @returns True if it appears to be a relation type
|
|
84
|
+
*/
|
|
85
|
+
export declare function isRelationType(type: Type<any>): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Registry for filter types that can be set by each package
|
|
88
|
+
*/
|
|
89
|
+
declare class FilterTypeRegistry {
|
|
90
|
+
private static stringFilter?;
|
|
91
|
+
private static numberFilter?;
|
|
92
|
+
private static dateFilter?;
|
|
93
|
+
/**
|
|
94
|
+
* Registers filter types for the current package context
|
|
95
|
+
*
|
|
96
|
+
* @param types - Object containing the filter type constructors
|
|
97
|
+
*/
|
|
98
|
+
static register(types: {
|
|
99
|
+
StringFilter: Type<any>;
|
|
100
|
+
NumberFilter: Type<any>;
|
|
101
|
+
DateFilter: Type<any>;
|
|
102
|
+
}): void;
|
|
103
|
+
/**
|
|
104
|
+
* Gets the registered StringFilter type
|
|
105
|
+
*
|
|
106
|
+
* @returns The StringFilter type constructor
|
|
107
|
+
* @throws Error if not registered
|
|
108
|
+
*/
|
|
109
|
+
static getStringFilter(): Type<any>;
|
|
110
|
+
/**
|
|
111
|
+
* Gets the registered NumberFilter type
|
|
112
|
+
*
|
|
113
|
+
* @returns The NumberFilter type constructor
|
|
114
|
+
* @throws Error if not registered
|
|
115
|
+
*/
|
|
116
|
+
static getNumberFilter(): Type<any>;
|
|
117
|
+
/**
|
|
118
|
+
* Gets the registered DateFilter type
|
|
119
|
+
*
|
|
120
|
+
* @returns The DateFilter type constructor
|
|
121
|
+
* @throws Error if not registered
|
|
122
|
+
*/
|
|
123
|
+
static getDateFilter(): Type<any>;
|
|
124
|
+
/**
|
|
125
|
+
* Checks if filter types are registered
|
|
126
|
+
*
|
|
127
|
+
* @returns True if all filter types are registered
|
|
128
|
+
*/
|
|
129
|
+
static isRegistered(): boolean;
|
|
130
|
+
/**
|
|
131
|
+
* Clears all registered filter types (mainly for testing)
|
|
132
|
+
*/
|
|
133
|
+
static clear(): void;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Sets the default filter types for the type inference system.
|
|
137
|
+
* This should be called by each package (rest-api, graphql, rest-graphql)
|
|
138
|
+
* during initialization to provide the appropriate filter types.
|
|
139
|
+
*
|
|
140
|
+
* @param filterTypes - Object containing the filter type constructors
|
|
141
|
+
* @deprecated Use FilterTypeRegistry.register() instead
|
|
142
|
+
*/
|
|
143
|
+
export declare function setDefaultFilterTypes(filterTypes: {
|
|
144
|
+
StringFilter: Type<any>;
|
|
145
|
+
NumberFilter: Type<any>;
|
|
146
|
+
DateFilter: Type<any>;
|
|
147
|
+
}): void;
|
|
148
|
+
export { FilterTypeRegistry };
|
|
149
|
+
/**
|
|
150
|
+
* Checks if a given type is a primitive type that can be auto-inferred
|
|
151
|
+
*
|
|
152
|
+
* @param type - The type to check
|
|
153
|
+
* @returns True if the type is a supported primitive
|
|
154
|
+
*/
|
|
155
|
+
export declare function isSupportedPrimitiveType(type: any): boolean;
|
|
156
|
+
/**
|
|
157
|
+
* Gets the property type using reflection
|
|
158
|
+
*
|
|
159
|
+
* @param entity - The entity class
|
|
160
|
+
* @param propertyName - The property name
|
|
161
|
+
* @returns The reflected type or undefined if not found
|
|
162
|
+
*/
|
|
163
|
+
export declare function getReflectedPropertyType(entity: Type<any>, propertyName: string): any;
|
|
164
|
+
/**
|
|
165
|
+
* Checks if a given type appears to be an enum
|
|
166
|
+
*
|
|
167
|
+
* @param type - The type to check
|
|
168
|
+
* @returns True if the type appears to be an enum
|
|
169
|
+
*/
|
|
170
|
+
export declare function isEnum(type: any): boolean;
|
|
171
|
+
/**
|
|
172
|
+
* Extracts enum information for use in decorators
|
|
173
|
+
*
|
|
174
|
+
* @param enumObject - The enum object
|
|
175
|
+
* @returns Information about the enum
|
|
176
|
+
*/
|
|
177
|
+
export declare function getEnumInfo(enumObject: any): {
|
|
178
|
+
values: any[];
|
|
179
|
+
example: any;
|
|
180
|
+
description: string;
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* Determines if a field should be treated as an enum field
|
|
184
|
+
*
|
|
185
|
+
* @param entity - The entity class
|
|
186
|
+
* @param propertyName - The property name
|
|
187
|
+
* @param config - Field configuration
|
|
188
|
+
* @returns True if it should be treated as enum
|
|
189
|
+
*/
|
|
190
|
+
export declare function shouldTreatAsEnum(entity: Type<any>, propertyName: string, config?: FieldConfig): boolean;
|
|
191
|
+
//# sourceMappingURL=type-inference.helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-inference.helper.d.ts","sourceRoot":"","sources":["../../../src/helpers/args-helpers/type-inference.helper.ts"],"names":[],"mappings":"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"}
|