@solid-nestjs/common 0.2.8 → 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.
Files changed (161) hide show
  1. package/dist/adapters/index.d.ts +7 -0
  2. package/dist/adapters/index.d.ts.map +1 -0
  3. package/dist/adapters/index.js +23 -0
  4. package/dist/adapters/index.js.map +1 -0
  5. package/dist/adapters/validation.adapter.d.ts +20 -0
  6. package/dist/adapters/validation.adapter.d.ts.map +1 -0
  7. package/dist/adapters/validation.adapter.js +309 -0
  8. package/dist/adapters/validation.adapter.js.map +1 -0
  9. package/dist/decorator-registry/decorator-registry.d.ts +54 -0
  10. package/dist/decorator-registry/decorator-registry.d.ts.map +1 -0
  11. package/dist/decorator-registry/decorator-registry.js +161 -0
  12. package/dist/decorator-registry/decorator-registry.js.map +1 -0
  13. package/dist/decorator-registry/index.d.ts +2 -0
  14. package/dist/decorator-registry/index.d.ts.map +1 -0
  15. package/dist/decorator-registry/index.js +18 -0
  16. package/dist/decorator-registry/index.js.map +1 -0
  17. package/dist/decorators/index.d.ts +6 -0
  18. package/dist/decorators/index.d.ts.map +1 -1
  19. package/dist/decorators/index.js +6 -0
  20. package/dist/decorators/index.js.map +1 -1
  21. package/dist/decorators/solid-entity.decorator.d.ts +6 -0
  22. package/dist/decorators/solid-entity.decorator.d.ts.map +1 -0
  23. package/dist/decorators/solid-entity.decorator.js +23 -0
  24. package/dist/decorators/solid-entity.decorator.js.map +1 -0
  25. package/dist/decorators/solid-field.decorator.d.ts +7 -0
  26. package/dist/decorators/solid-field.decorator.d.ts.map +1 -0
  27. package/dist/decorators/solid-field.decorator.js +51 -0
  28. package/dist/decorators/solid-field.decorator.js.map +1 -0
  29. package/dist/decorators/solid-id.decorator.d.ts +9 -0
  30. package/dist/decorators/solid-id.decorator.d.ts.map +1 -0
  31. package/dist/decorators/solid-id.decorator.js +27 -0
  32. package/dist/decorators/solid-id.decorator.js.map +1 -0
  33. package/dist/decorators/solid-input.decorator.d.ts +6 -0
  34. package/dist/decorators/solid-input.decorator.d.ts.map +1 -0
  35. package/dist/decorators/solid-input.decorator.js +35 -0
  36. package/dist/decorators/solid-input.decorator.js.map +1 -0
  37. package/dist/decorators/solid-relation.decorator.d.ts +19 -0
  38. package/dist/decorators/solid-relation.decorator.d.ts.map +1 -0
  39. package/dist/decorators/solid-relation.decorator.js +66 -0
  40. package/dist/decorators/solid-relation.decorator.js.map +1 -0
  41. package/dist/decorators/solid-timestamp.decorator.d.ts +13 -0
  42. package/dist/decorators/solid-timestamp.decorator.d.ts.map +1 -0
  43. package/dist/decorators/solid-timestamp.decorator.js +49 -0
  44. package/dist/decorators/solid-timestamp.decorator.js.map +1 -0
  45. package/dist/helpers/args-helpers/class-generator.helper.d.ts +143 -0
  46. package/dist/helpers/args-helpers/class-generator.helper.d.ts.map +1 -0
  47. package/dist/helpers/args-helpers/class-generator.helper.js +221 -0
  48. package/dist/helpers/args-helpers/class-generator.helper.js.map +1 -0
  49. package/dist/helpers/args-helpers/create-groupby-request.helper.d.ts +83 -0
  50. package/dist/helpers/args-helpers/create-groupby-request.helper.d.ts.map +1 -0
  51. package/dist/helpers/args-helpers/create-groupby-request.helper.js +119 -0
  52. package/dist/helpers/args-helpers/create-groupby-request.helper.js.map +1 -0
  53. package/dist/helpers/args-helpers/decorator-builder.helper.d.ts +160 -0
  54. package/dist/helpers/args-helpers/decorator-builder.helper.d.ts.map +1 -0
  55. package/dist/helpers/args-helpers/decorator-builder.helper.js +161 -0
  56. package/dist/helpers/args-helpers/decorator-builder.helper.js.map +1 -0
  57. package/dist/helpers/args-helpers/field-config.helper.d.ts +98 -0
  58. package/dist/helpers/args-helpers/field-config.helper.d.ts.map +1 -0
  59. package/dist/helpers/args-helpers/field-config.helper.js +143 -0
  60. package/dist/helpers/args-helpers/field-config.helper.js.map +1 -0
  61. package/dist/helpers/args-helpers/groupby-args-from.helper.d.ts +87 -0
  62. package/dist/helpers/args-helpers/groupby-args-from.helper.d.ts.map +1 -0
  63. package/dist/helpers/args-helpers/groupby-args-from.helper.js +185 -0
  64. package/dist/helpers/args-helpers/groupby-args-from.helper.js.map +1 -0
  65. package/dist/helpers/args-helpers/index.d.ts +15 -0
  66. package/dist/helpers/args-helpers/index.d.ts.map +1 -0
  67. package/dist/helpers/args-helpers/index.js +58 -0
  68. package/dist/helpers/args-helpers/index.js.map +1 -0
  69. package/dist/helpers/args-helpers/type-inference.helper.d.ts +191 -0
  70. package/dist/helpers/args-helpers/type-inference.helper.d.ts.map +1 -0
  71. package/dist/helpers/args-helpers/type-inference.helper.js +330 -0
  72. package/dist/helpers/args-helpers/type-inference.helper.js.map +1 -0
  73. package/dist/helpers/class-generation/dynamic-class.helper.d.ts +101 -0
  74. package/dist/helpers/class-generation/dynamic-class.helper.d.ts.map +1 -0
  75. package/dist/helpers/class-generation/dynamic-class.helper.js +180 -0
  76. package/dist/helpers/class-generation/dynamic-class.helper.js.map +1 -0
  77. package/dist/helpers/class-generation/index.d.ts +9 -0
  78. package/dist/helpers/class-generation/index.d.ts.map +1 -0
  79. package/dist/helpers/class-generation/index.js +18 -0
  80. package/dist/helpers/class-generation/index.js.map +1 -0
  81. package/dist/helpers/decorators/decorator-utils.helper.d.ts +75 -0
  82. package/dist/helpers/decorators/decorator-utils.helper.d.ts.map +1 -0
  83. package/dist/helpers/decorators/decorator-utils.helper.js +92 -0
  84. package/dist/helpers/decorators/decorator-utils.helper.js.map +1 -0
  85. package/dist/helpers/decorators/index.d.ts +9 -0
  86. package/dist/helpers/decorators/index.d.ts.map +1 -0
  87. package/dist/helpers/decorators/index.js +16 -0
  88. package/dist/helpers/decorators/index.js.map +1 -0
  89. package/dist/helpers/dto-generator-base.helper.d.ts +19 -0
  90. package/dist/helpers/dto-generator-base.helper.d.ts.map +1 -0
  91. package/dist/helpers/dto-generator-base.helper.js +72 -0
  92. package/dist/helpers/dto-generator-base.helper.js.map +1 -0
  93. package/dist/helpers/index.d.ts +9 -0
  94. package/dist/helpers/index.d.ts.map +1 -1
  95. package/dist/helpers/index.js +9 -0
  96. package/dist/helpers/index.js.map +1 -1
  97. package/dist/helpers/metadata-extractor.helper.d.ts +26 -0
  98. package/dist/helpers/metadata-extractor.helper.d.ts.map +1 -0
  99. package/dist/helpers/metadata-extractor.helper.js +67 -0
  100. package/dist/helpers/metadata-extractor.helper.js.map +1 -0
  101. package/dist/helpers/package-detector.helper.d.ts +33 -0
  102. package/dist/helpers/package-detector.helper.d.ts.map +1 -0
  103. package/dist/helpers/package-detector.helper.js +82 -0
  104. package/dist/helpers/package-detector.helper.js.map +1 -0
  105. package/dist/helpers/property-filter.helper.d.ts +15 -0
  106. package/dist/helpers/property-filter.helper.d.ts.map +1 -0
  107. package/dist/helpers/property-filter.helper.js +44 -0
  108. package/dist/helpers/property-filter.helper.js.map +1 -0
  109. package/dist/helpers/type-inference.helper.d.ts +76 -0
  110. package/dist/helpers/type-inference.helper.d.ts.map +1 -0
  111. package/dist/helpers/type-inference.helper.js +205 -0
  112. package/dist/helpers/type-inference.helper.js.map +1 -0
  113. package/dist/helpers/validation-inference.helper.d.ts +18 -0
  114. package/dist/helpers/validation-inference.helper.d.ts.map +1 -0
  115. package/dist/helpers/validation-inference.helper.js +100 -0
  116. package/dist/helpers/validation-inference.helper.js.map +1 -0
  117. package/dist/index.d.ts +4 -0
  118. package/dist/index.d.ts.map +1 -1
  119. package/dist/index.js +4 -0
  120. package/dist/index.js.map +1 -1
  121. package/dist/interfaces/adapters/decorator-adapter.interface.d.ts +8 -0
  122. package/dist/interfaces/adapters/decorator-adapter.interface.d.ts.map +1 -0
  123. package/dist/interfaces/adapters/decorator-adapter.interface.js +3 -0
  124. package/dist/interfaces/adapters/decorator-adapter.interface.js.map +1 -0
  125. package/dist/interfaces/decorators/solid-field-options.interface.d.ts +55 -0
  126. package/dist/interfaces/decorators/solid-field-options.interface.d.ts.map +1 -0
  127. package/dist/interfaces/decorators/solid-field-options.interface.js +3 -0
  128. package/dist/interfaces/decorators/solid-field-options.interface.js.map +1 -0
  129. package/dist/interfaces/index.d.ts +3 -0
  130. package/dist/interfaces/index.d.ts.map +1 -1
  131. package/dist/interfaces/index.js +3 -0
  132. package/dist/interfaces/index.js.map +1 -1
  133. package/dist/interfaces/metadata/field-metadata.interface.d.ts +29 -0
  134. package/dist/interfaces/metadata/field-metadata.interface.d.ts.map +1 -0
  135. package/dist/interfaces/metadata/field-metadata.interface.js +3 -0
  136. package/dist/interfaces/metadata/field-metadata.interface.js.map +1 -0
  137. package/dist/metadata/index.d.ts +2 -0
  138. package/dist/metadata/index.d.ts.map +1 -0
  139. package/dist/metadata/index.js +18 -0
  140. package/dist/metadata/index.js.map +1 -0
  141. package/dist/metadata/metadata-storage.d.ts +54 -0
  142. package/dist/metadata/metadata-storage.d.ts.map +1 -0
  143. package/dist/metadata/metadata-storage.js +106 -0
  144. package/dist/metadata/metadata-storage.js.map +1 -0
  145. package/dist/registry/index.d.ts +2 -0
  146. package/dist/registry/index.d.ts.map +1 -0
  147. package/dist/registry/index.js +18 -0
  148. package/dist/registry/index.js.map +1 -0
  149. package/dist/registry/relation-adapter-registry.d.ts +11 -0
  150. package/dist/registry/relation-adapter-registry.d.ts.map +1 -0
  151. package/dist/registry/relation-adapter-registry.js +30 -0
  152. package/dist/registry/relation-adapter-registry.js.map +1 -0
  153. package/dist/types/dto-generation.types.d.ts +46 -0
  154. package/dist/types/dto-generation.types.d.ts.map +1 -0
  155. package/dist/types/dto-generation.types.js +6 -0
  156. package/dist/types/dto-generation.types.js.map +1 -0
  157. package/dist/types/index.d.ts +1 -0
  158. package/dist/types/index.d.ts.map +1 -1
  159. package/dist/types/index.js +1 -0
  160. package/dist/types/index.js.map +1 -1
  161. package/package.json +2 -2
@@ -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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"}