@dyanet/nestjs-config-aws 1.0.1

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 (231) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1183 -0
  3. package/dist/cjs/config.module.js +178 -0
  4. package/dist/cjs/config.module.js.map +1 -0
  5. package/dist/cjs/index.js +47 -0
  6. package/dist/cjs/index.js.map +1 -0
  7. package/dist/cjs/integration/index.js +23 -0
  8. package/dist/cjs/integration/index.js.map +1 -0
  9. package/dist/cjs/integration/interfaces/configuration-factory.interface.js +3 -0
  10. package/dist/cjs/integration/interfaces/configuration-factory.interface.js.map +1 -0
  11. package/dist/cjs/integration/interfaces/configuration-source.interface.js +3 -0
  12. package/dist/cjs/integration/interfaces/configuration-source.interface.js.map +1 -0
  13. package/dist/cjs/integration/interfaces/index.js +26 -0
  14. package/dist/cjs/integration/interfaces/index.js.map +1 -0
  15. package/dist/cjs/integration/interfaces/integration-options.interface.js +3 -0
  16. package/dist/cjs/integration/interfaces/integration-options.interface.js.map +1 -0
  17. package/dist/cjs/integration/interfaces/integration-state.interface.js +3 -0
  18. package/dist/cjs/integration/interfaces/integration-state.interface.js.map +1 -0
  19. package/dist/cjs/integration/interfaces/nestjs-config-compatibility.interface.js +73 -0
  20. package/dist/cjs/integration/interfaces/nestjs-config-compatibility.interface.js.map +1 -0
  21. package/dist/cjs/integration/interfaces/nestjs-config-integration.interface.js +3 -0
  22. package/dist/cjs/integration/interfaces/nestjs-config-integration.interface.js.map +1 -0
  23. package/dist/cjs/integration/interfaces/typed-configuration.interface.js +4 -0
  24. package/dist/cjs/integration/interfaces/typed-configuration.interface.js.map +1 -0
  25. package/dist/cjs/integration/interfaces/utility-types.interface.js +52 -0
  26. package/dist/cjs/integration/interfaces/utility-types.interface.js.map +1 -0
  27. package/dist/cjs/integration/nestjs-config-integration.module.js +124 -0
  28. package/dist/cjs/integration/nestjs-config-integration.module.js.map +1 -0
  29. package/dist/cjs/integration/providers/aws-configuration-loader.service.js +591 -0
  30. package/dist/cjs/integration/providers/aws-configuration-loader.service.js.map +1 -0
  31. package/dist/cjs/integration/providers/configuration-factory.provider.js +383 -0
  32. package/dist/cjs/integration/providers/configuration-factory.provider.js.map +1 -0
  33. package/dist/cjs/integration/providers/index.js +20 -0
  34. package/dist/cjs/integration/providers/index.js.map +1 -0
  35. package/dist/cjs/integration/services/async-config-helper.service.js +356 -0
  36. package/dist/cjs/integration/services/async-config-helper.service.js.map +1 -0
  37. package/dist/cjs/integration/services/error-handler.service.js +265 -0
  38. package/dist/cjs/integration/services/error-handler.service.js.map +1 -0
  39. package/dist/cjs/integration/services/factory-registration.service.js +512 -0
  40. package/dist/cjs/integration/services/factory-registration.service.js.map +1 -0
  41. package/dist/cjs/integration/services/index.js +26 -0
  42. package/dist/cjs/integration/services/index.js.map +1 -0
  43. package/dist/cjs/integration/services/integration-state.service.js +83 -0
  44. package/dist/cjs/integration/services/integration-state.service.js.map +1 -0
  45. package/dist/cjs/integration/services/namespace-handler.service.js +467 -0
  46. package/dist/cjs/integration/services/namespace-handler.service.js.map +1 -0
  47. package/dist/cjs/integration/services/nestjs-config-integration.service.js +316 -0
  48. package/dist/cjs/integration/services/nestjs-config-integration.service.js.map +1 -0
  49. package/dist/cjs/integration/services/precedence-handler.service.js +294 -0
  50. package/dist/cjs/integration/services/precedence-handler.service.js.map +1 -0
  51. package/dist/cjs/integration/services/validation-integration.service.js +591 -0
  52. package/dist/cjs/integration/services/validation-integration.service.js.map +1 -0
  53. package/dist/cjs/integration/utils/config-integration.util.js +283 -0
  54. package/dist/cjs/integration/utils/config-integration.util.js.map +1 -0
  55. package/dist/cjs/integration/utils/index.js +19 -0
  56. package/dist/cjs/integration/utils/index.js.map +1 -0
  57. package/dist/cjs/interfaces/config-loader.interface.js +3 -0
  58. package/dist/cjs/interfaces/config-loader.interface.js.map +1 -0
  59. package/dist/cjs/interfaces/config-service.interface.js +11 -0
  60. package/dist/cjs/interfaces/config-service.interface.js.map +1 -0
  61. package/dist/cjs/interfaces/default-schema.interface.js +63 -0
  62. package/dist/cjs/interfaces/default-schema.interface.js.map +1 -0
  63. package/dist/cjs/interfaces/errors.interface.js +77 -0
  64. package/dist/cjs/interfaces/errors.interface.js.map +1 -0
  65. package/dist/cjs/interfaces/index.js +25 -0
  66. package/dist/cjs/interfaces/index.js.map +1 -0
  67. package/dist/cjs/interfaces/module-options.interface.js +3 -0
  68. package/dist/cjs/interfaces/module-options.interface.js.map +1 -0
  69. package/dist/cjs/loaders/environment.loader.js +59 -0
  70. package/dist/cjs/loaders/environment.loader.js.map +1 -0
  71. package/dist/cjs/loaders/secrets-manager.loader.js +122 -0
  72. package/dist/cjs/loaders/secrets-manager.loader.js.map +1 -0
  73. package/dist/cjs/loaders/ssm-parameter-store.loader.js +146 -0
  74. package/dist/cjs/loaders/ssm-parameter-store.loader.js.map +1 -0
  75. package/dist/cjs/services/config.service.js +297 -0
  76. package/dist/cjs/services/config.service.js.map +1 -0
  77. package/dist/cjs/utils/validation.util.js +114 -0
  78. package/dist/cjs/utils/validation.util.js.map +1 -0
  79. package/dist/esm/config.module.js +175 -0
  80. package/dist/esm/config.module.js.map +1 -0
  81. package/dist/esm/index.js +18 -0
  82. package/dist/esm/index.js.map +1 -0
  83. package/dist/esm/integration/index.js +7 -0
  84. package/dist/esm/integration/index.js.map +1 -0
  85. package/dist/esm/integration/interfaces/configuration-factory.interface.js +2 -0
  86. package/dist/esm/integration/interfaces/configuration-factory.interface.js.map +1 -0
  87. package/dist/esm/integration/interfaces/configuration-source.interface.js +2 -0
  88. package/dist/esm/integration/interfaces/configuration-source.interface.js.map +1 -0
  89. package/dist/esm/integration/interfaces/index.js +10 -0
  90. package/dist/esm/integration/interfaces/index.js.map +1 -0
  91. package/dist/esm/integration/interfaces/integration-options.interface.js +2 -0
  92. package/dist/esm/integration/interfaces/integration-options.interface.js.map +1 -0
  93. package/dist/esm/integration/interfaces/integration-state.interface.js +2 -0
  94. package/dist/esm/integration/interfaces/integration-state.interface.js.map +1 -0
  95. package/dist/esm/integration/interfaces/nestjs-config-compatibility.interface.js +64 -0
  96. package/dist/esm/integration/interfaces/nestjs-config-compatibility.interface.js.map +1 -0
  97. package/dist/esm/integration/interfaces/nestjs-config-integration.interface.js +2 -0
  98. package/dist/esm/integration/interfaces/nestjs-config-integration.interface.js.map +1 -0
  99. package/dist/esm/integration/interfaces/typed-configuration.interface.js +3 -0
  100. package/dist/esm/integration/interfaces/typed-configuration.interface.js.map +1 -0
  101. package/dist/esm/integration/interfaces/utility-types.interface.js +44 -0
  102. package/dist/esm/integration/interfaces/utility-types.interface.js.map +1 -0
  103. package/dist/esm/integration/nestjs-config-integration.module.js +121 -0
  104. package/dist/esm/integration/nestjs-config-integration.module.js.map +1 -0
  105. package/dist/esm/integration/providers/aws-configuration-loader.service.js +588 -0
  106. package/dist/esm/integration/providers/aws-configuration-loader.service.js.map +1 -0
  107. package/dist/esm/integration/providers/configuration-factory.provider.js +380 -0
  108. package/dist/esm/integration/providers/configuration-factory.provider.js.map +1 -0
  109. package/dist/esm/integration/providers/index.js +4 -0
  110. package/dist/esm/integration/providers/index.js.map +1 -0
  111. package/dist/esm/integration/services/async-config-helper.service.js +353 -0
  112. package/dist/esm/integration/services/async-config-helper.service.js.map +1 -0
  113. package/dist/esm/integration/services/error-handler.service.js +262 -0
  114. package/dist/esm/integration/services/error-handler.service.js.map +1 -0
  115. package/dist/esm/integration/services/factory-registration.service.js +509 -0
  116. package/dist/esm/integration/services/factory-registration.service.js.map +1 -0
  117. package/dist/esm/integration/services/index.js +10 -0
  118. package/dist/esm/integration/services/index.js.map +1 -0
  119. package/dist/esm/integration/services/integration-state.service.js +80 -0
  120. package/dist/esm/integration/services/integration-state.service.js.map +1 -0
  121. package/dist/esm/integration/services/namespace-handler.service.js +464 -0
  122. package/dist/esm/integration/services/namespace-handler.service.js.map +1 -0
  123. package/dist/esm/integration/services/nestjs-config-integration.service.js +313 -0
  124. package/dist/esm/integration/services/nestjs-config-integration.service.js.map +1 -0
  125. package/dist/esm/integration/services/precedence-handler.service.js +291 -0
  126. package/dist/esm/integration/services/precedence-handler.service.js.map +1 -0
  127. package/dist/esm/integration/services/validation-integration.service.js +585 -0
  128. package/dist/esm/integration/services/validation-integration.service.js.map +1 -0
  129. package/dist/esm/integration/utils/config-integration.util.js +240 -0
  130. package/dist/esm/integration/utils/config-integration.util.js.map +1 -0
  131. package/dist/esm/integration/utils/index.js +3 -0
  132. package/dist/esm/integration/utils/index.js.map +1 -0
  133. package/dist/esm/interfaces/config-loader.interface.js +2 -0
  134. package/dist/esm/interfaces/config-loader.interface.js.map +1 -0
  135. package/dist/esm/interfaces/config-service.interface.js +7 -0
  136. package/dist/esm/interfaces/config-service.interface.js.map +1 -0
  137. package/dist/esm/interfaces/default-schema.interface.js +59 -0
  138. package/dist/esm/interfaces/default-schema.interface.js.map +1 -0
  139. package/dist/esm/interfaces/errors.interface.js +69 -0
  140. package/dist/esm/interfaces/errors.interface.js.map +1 -0
  141. package/dist/esm/interfaces/index.js +9 -0
  142. package/dist/esm/interfaces/index.js.map +1 -0
  143. package/dist/esm/interfaces/module-options.interface.js +2 -0
  144. package/dist/esm/interfaces/module-options.interface.js.map +1 -0
  145. package/dist/esm/loaders/environment.loader.js +55 -0
  146. package/dist/esm/loaders/environment.loader.js.map +1 -0
  147. package/dist/esm/loaders/secrets-manager.loader.js +118 -0
  148. package/dist/esm/loaders/secrets-manager.loader.js.map +1 -0
  149. package/dist/esm/loaders/ssm-parameter-store.loader.js +142 -0
  150. package/dist/esm/loaders/ssm-parameter-store.loader.js.map +1 -0
  151. package/dist/esm/services/config.service.js +261 -0
  152. package/dist/esm/services/config.service.js.map +1 -0
  153. package/dist/esm/utils/validation.util.js +110 -0
  154. package/dist/esm/utils/validation.util.js.map +1 -0
  155. package/dist/types/config.module.d.ts +46 -0
  156. package/dist/types/config.module.d.ts.map +1 -0
  157. package/dist/types/index.d.ts +13 -0
  158. package/dist/types/index.d.ts.map +1 -0
  159. package/dist/types/integration/index.d.ts +6 -0
  160. package/dist/types/integration/index.d.ts.map +1 -0
  161. package/dist/types/integration/interfaces/configuration-factory.interface.d.ts +71 -0
  162. package/dist/types/integration/interfaces/configuration-factory.interface.d.ts.map +1 -0
  163. package/dist/types/integration/interfaces/configuration-source.interface.d.ts +24 -0
  164. package/dist/types/integration/interfaces/configuration-source.interface.d.ts.map +1 -0
  165. package/dist/types/integration/interfaces/index.d.ts +9 -0
  166. package/dist/types/integration/interfaces/index.d.ts.map +1 -0
  167. package/dist/types/integration/interfaces/integration-options.interface.d.ts +66 -0
  168. package/dist/types/integration/interfaces/integration-options.interface.d.ts.map +1 -0
  169. package/dist/types/integration/interfaces/integration-state.interface.d.ts +17 -0
  170. package/dist/types/integration/interfaces/integration-state.interface.d.ts.map +1 -0
  171. package/dist/types/integration/interfaces/nestjs-config-compatibility.interface.d.ts +332 -0
  172. package/dist/types/integration/interfaces/nestjs-config-compatibility.interface.d.ts.map +1 -0
  173. package/dist/types/integration/interfaces/nestjs-config-integration.interface.d.ts +259 -0
  174. package/dist/types/integration/interfaces/nestjs-config-integration.interface.d.ts.map +1 -0
  175. package/dist/types/integration/interfaces/typed-configuration.interface.d.ts +209 -0
  176. package/dist/types/integration/interfaces/typed-configuration.interface.d.ts.map +1 -0
  177. package/dist/types/integration/interfaces/utility-types.interface.d.ts +249 -0
  178. package/dist/types/integration/interfaces/utility-types.interface.d.ts.map +1 -0
  179. package/dist/types/integration/nestjs-config-integration.module.d.ts +36 -0
  180. package/dist/types/integration/nestjs-config-integration.module.d.ts.map +1 -0
  181. package/dist/types/integration/providers/aws-configuration-loader.service.d.ts +134 -0
  182. package/dist/types/integration/providers/aws-configuration-loader.service.d.ts.map +1 -0
  183. package/dist/types/integration/providers/configuration-factory.provider.d.ts +119 -0
  184. package/dist/types/integration/providers/configuration-factory.provider.d.ts.map +1 -0
  185. package/dist/types/integration/providers/index.d.ts +3 -0
  186. package/dist/types/integration/providers/index.d.ts.map +1 -0
  187. package/dist/types/integration/services/async-config-helper.service.d.ts +84 -0
  188. package/dist/types/integration/services/async-config-helper.service.d.ts.map +1 -0
  189. package/dist/types/integration/services/error-handler.service.d.ts +84 -0
  190. package/dist/types/integration/services/error-handler.service.d.ts.map +1 -0
  191. package/dist/types/integration/services/factory-registration.service.d.ts +158 -0
  192. package/dist/types/integration/services/factory-registration.service.d.ts.map +1 -0
  193. package/dist/types/integration/services/index.d.ts +9 -0
  194. package/dist/types/integration/services/index.d.ts.map +1 -0
  195. package/dist/types/integration/services/integration-state.service.d.ts +41 -0
  196. package/dist/types/integration/services/integration-state.service.d.ts.map +1 -0
  197. package/dist/types/integration/services/namespace-handler.service.d.ts +192 -0
  198. package/dist/types/integration/services/namespace-handler.service.d.ts.map +1 -0
  199. package/dist/types/integration/services/nestjs-config-integration.service.d.ts +87 -0
  200. package/dist/types/integration/services/nestjs-config-integration.service.d.ts.map +1 -0
  201. package/dist/types/integration/services/precedence-handler.service.d.ts +103 -0
  202. package/dist/types/integration/services/precedence-handler.service.d.ts.map +1 -0
  203. package/dist/types/integration/services/validation-integration.service.d.ts +222 -0
  204. package/dist/types/integration/services/validation-integration.service.d.ts.map +1 -0
  205. package/dist/types/integration/utils/config-integration.util.d.ts +81 -0
  206. package/dist/types/integration/utils/config-integration.util.d.ts.map +1 -0
  207. package/dist/types/integration/utils/index.d.ts +2 -0
  208. package/dist/types/integration/utils/index.d.ts.map +1 -0
  209. package/dist/types/interfaces/config-loader.interface.d.ts +22 -0
  210. package/dist/types/interfaces/config-loader.interface.d.ts.map +1 -0
  211. package/dist/types/interfaces/config-service.interface.d.ts +23 -0
  212. package/dist/types/interfaces/config-service.interface.d.ts.map +1 -0
  213. package/dist/types/interfaces/default-schema.interface.d.ts +195 -0
  214. package/dist/types/interfaces/default-schema.interface.d.ts.map +1 -0
  215. package/dist/types/interfaces/errors.interface.d.ts +38 -0
  216. package/dist/types/interfaces/errors.interface.d.ts.map +1 -0
  217. package/dist/types/interfaces/index.d.ts +6 -0
  218. package/dist/types/interfaces/index.d.ts.map +1 -0
  219. package/dist/types/interfaces/module-options.interface.d.ts +64 -0
  220. package/dist/types/interfaces/module-options.interface.d.ts.map +1 -0
  221. package/dist/types/loaders/environment.loader.d.ts +26 -0
  222. package/dist/types/loaders/environment.loader.d.ts.map +1 -0
  223. package/dist/types/loaders/secrets-manager.loader.d.ts +52 -0
  224. package/dist/types/loaders/secrets-manager.loader.d.ts.map +1 -0
  225. package/dist/types/loaders/ssm-parameter-store.loader.d.ts +68 -0
  226. package/dist/types/loaders/ssm-parameter-store.loader.d.ts.map +1 -0
  227. package/dist/types/services/config.service.d.ts +94 -0
  228. package/dist/types/services/config.service.d.ts.map +1 -0
  229. package/dist/types/utils/validation.util.d.ts +53 -0
  230. package/dist/types/utils/validation.util.d.ts.map +1 -0
  231. package/package.json +102 -0
@@ -0,0 +1,249 @@
1
+ /**
2
+ * Utility types for enhanced TypeScript support in nest-config-aws integration.
3
+ */
4
+ /**
5
+ * Deep readonly type for configuration objects.
6
+ */
7
+ export type DeepReadonly<T> = {
8
+ readonly [P in keyof T]: T[P] extends (infer U)[] ? DeepReadonlyArray<U> : T[P] extends object ? DeepReadonly<T[P]> : T[P];
9
+ };
10
+ /**
11
+ * Deep readonly array type.
12
+ */
13
+ export interface DeepReadonlyArray<T> extends ReadonlyArray<DeepReadonly<T>> {
14
+ }
15
+ /**
16
+ * Partial deep type for configuration objects.
17
+ */
18
+ export type PartialDeep<T> = {
19
+ [P in keyof T]?: T[P] extends (infer U)[] ? PartialDeepArray<U> : T[P] extends object ? PartialDeep<T[P]> : T[P];
20
+ };
21
+ /**
22
+ * Partial deep array type.
23
+ */
24
+ export interface PartialDeepArray<T> extends Array<PartialDeep<T>> {
25
+ }
26
+ /**
27
+ * Required deep type for configuration objects.
28
+ */
29
+ export type RequiredDeep<T> = {
30
+ [P in keyof T]-?: T[P] extends (infer U)[] ? RequiredDeepArray<U> : T[P] extends object ? RequiredDeep<T[P]> : T[P];
31
+ };
32
+ /**
33
+ * Required deep array type.
34
+ */
35
+ export interface RequiredDeepArray<T> extends Array<RequiredDeep<T>> {
36
+ }
37
+ /**
38
+ * Configuration path type for dot notation access.
39
+ */
40
+ export type ConfigPath<T, K extends keyof T = keyof T> = K extends string ? T[K] extends Record<string, any> ? `${K}` | `${K}.${ConfigPath<T[K]>}` : `${K}` : never;
41
+ /**
42
+ * Configuration value type for a given path.
43
+ */
44
+ export type ConfigValue<T, P extends string> = P extends `${infer K}.${infer Rest}` ? K extends keyof T ? ConfigValue<T[K], Rest> : never : P extends keyof T ? T[P] : never;
45
+ /**
46
+ * AWS configuration source union type.
47
+ */
48
+ export type AwsConfigSource = 'secrets-manager' | 'ssm';
49
+ /**
50
+ * Local configuration source union type.
51
+ */
52
+ export type LocalConfigSource = 'environment' | 'local-file';
53
+ /**
54
+ * All configuration source union type.
55
+ */
56
+ export type AllConfigSource = AwsConfigSource | LocalConfigSource;
57
+ /**
58
+ * Configuration source metadata.
59
+ */
60
+ export type ConfigSourceMetadata<T extends AllConfigSource> = {
61
+ source: T;
62
+ isAws: T extends AwsConfigSource ? true : false;
63
+ priority: number;
64
+ loadedAt: Date;
65
+ };
66
+ /**
67
+ * Configuration with source metadata.
68
+ */
69
+ export type ConfigWithSource<T, S extends AllConfigSource> = T & {
70
+ __metadata: ConfigSourceMetadata<S>;
71
+ };
72
+ /**
73
+ * Extract configuration type from a configuration factory.
74
+ */
75
+ export type ExtractConfig<T> = T extends () => infer U ? U : never;
76
+ /**
77
+ * Configuration factory map type.
78
+ */
79
+ export type ConfigFactoryMap = Record<string, () => any>;
80
+ /**
81
+ * Extract all configuration types from a factory map.
82
+ */
83
+ export type ExtractConfigMap<T extends ConfigFactoryMap> = {
84
+ [K in keyof T]: ExtractConfig<T[K]>;
85
+ };
86
+ /**
87
+ * Namespace configuration type.
88
+ */
89
+ export type NamespaceConfig<T extends Record<string, any>> = {
90
+ [K in keyof T]: T[K];
91
+ };
92
+ /**
93
+ * Multi-namespace configuration type.
94
+ */
95
+ export type MultiNamespaceConfig<T extends Record<string, Record<string, any>>> = {
96
+ [K in keyof T]: NamespaceConfig<T[K]>;
97
+ };
98
+ /**
99
+ * Configuration validation result.
100
+ */
101
+ export type ValidationResult<T = any> = {
102
+ isValid: boolean;
103
+ data?: T;
104
+ errors: string[];
105
+ };
106
+ /**
107
+ * Async configuration validation result.
108
+ */
109
+ export type AsyncValidationResult<T = any> = Promise<ValidationResult<T>>;
110
+ /**
111
+ * Configuration transformer function type.
112
+ */
113
+ export type ConfigTransformerFn<TInput, TOutput> = (input: TInput) => TOutput;
114
+ /**
115
+ * Async configuration transformer function type.
116
+ */
117
+ export type AsyncConfigTransformerFn<TInput, TOutput> = (input: TInput) => Promise<TOutput>;
118
+ /**
119
+ * Configuration predicate function type.
120
+ */
121
+ export type ConfigPredicate<T> = (config: T) => boolean;
122
+ /**
123
+ * Async configuration predicate function type.
124
+ */
125
+ export type AsyncConfigPredicate<T> = (config: T) => Promise<boolean>;
126
+ /**
127
+ * Configuration key extractor type.
128
+ */
129
+ export type ConfigKeyExtractor<T> = (config: T) => string[];
130
+ /**
131
+ * Configuration value extractor type.
132
+ */
133
+ export type ConfigValueExtractor<T, U> = (config: T, key: string) => U | undefined;
134
+ /**
135
+ * Configuration merger function type.
136
+ */
137
+ export type ConfigMerger<T> = (primary: T, secondary: T) => T;
138
+ /**
139
+ * Configuration serializer function type.
140
+ */
141
+ export type ConfigSerializer<T> = (config: T) => string;
142
+ /**
143
+ * Configuration deserializer function type.
144
+ */
145
+ export type ConfigDeserializer<T> = (serialized: string) => T;
146
+ /**
147
+ * Configuration cache key generator type.
148
+ */
149
+ export type CacheKeyGenerator<T> = (config: T) => string;
150
+ /**
151
+ * Configuration cache entry type.
152
+ */
153
+ export type CacheEntry<T> = {
154
+ key: string;
155
+ value: T;
156
+ timestamp: Date;
157
+ ttl?: number;
158
+ };
159
+ /**
160
+ * Configuration cache type.
161
+ */
162
+ export type ConfigCache<T> = Map<string, CacheEntry<T>>;
163
+ /**
164
+ * Configuration event type.
165
+ */
166
+ export type ConfigEventType = 'loaded' | 'updated' | 'error' | 'validated';
167
+ /**
168
+ * Configuration event handler type.
169
+ */
170
+ export type ConfigEventHandler<T = any> = (event: ConfigEventType, data: T) => void;
171
+ /**
172
+ * Async configuration event handler type.
173
+ */
174
+ export type AsyncConfigEventHandler<T = any> = (event: ConfigEventType, data: T) => Promise<void>;
175
+ /**
176
+ * Configuration watcher type.
177
+ */
178
+ export type ConfigWatcher<T> = {
179
+ watch: (handler: ConfigEventHandler<T>) => void;
180
+ unwatch: (handler: ConfigEventHandler<T>) => void;
181
+ stop: () => void;
182
+ };
183
+ /**
184
+ * Configuration builder pattern interface.
185
+ */
186
+ export interface ConfigBuilder<T> {
187
+ /**
188
+ * Add a configuration source.
189
+ */
190
+ addSource(source: AllConfigSource, config: any): ConfigBuilder<T>;
191
+ /**
192
+ * Set precedence rule.
193
+ */
194
+ setPrecedence(rule: 'aws-first' | 'local-first' | 'merge'): ConfigBuilder<T>;
195
+ /**
196
+ * Add namespace.
197
+ */
198
+ addNamespace(namespace: string): ConfigBuilder<T>;
199
+ /**
200
+ * Add validation.
201
+ */
202
+ addValidation(validator: (config: any) => boolean): ConfigBuilder<T>;
203
+ /**
204
+ * Build the configuration.
205
+ */
206
+ build(): T;
207
+ }
208
+ /**
209
+ * Configuration fluent API interface.
210
+ */
211
+ export interface ConfigFluentAPI<T> {
212
+ /**
213
+ * Filter configuration by predicate.
214
+ */
215
+ filter(predicate: ConfigPredicate<T>): ConfigFluentAPI<T>;
216
+ /**
217
+ * Transform configuration.
218
+ */
219
+ map<U>(transformer: ConfigTransformerFn<T, U>): ConfigFluentAPI<U>;
220
+ /**
221
+ * Validate configuration.
222
+ */
223
+ validate(validator: ConfigPredicate<T>): ConfigFluentAPI<T>;
224
+ /**
225
+ * Get the final configuration.
226
+ */
227
+ get(): T;
228
+ }
229
+ /**
230
+ * Type guard for AWS configuration sources.
231
+ */
232
+ export declare const isAwsSource: (source: AllConfigSource) => source is AwsConfigSource;
233
+ /**
234
+ * Type guard for local configuration sources.
235
+ */
236
+ export declare const isLocalSource: (source: AllConfigSource) => source is LocalConfigSource;
237
+ /**
238
+ * Type guard for configuration with metadata.
239
+ */
240
+ export declare const hasMetadata: <T, S extends AllConfigSource>(config: any) => config is ConfigWithSource<T, S>;
241
+ /**
242
+ * Type guard for validation result.
243
+ */
244
+ export declare const isValidationResult: <T>(result: any) => result is ValidationResult<T>;
245
+ /**
246
+ * Type guard for cache entry.
247
+ */
248
+ export declare const isCacheEntry: <T>(entry: any) => entry is CacheEntry<T>;
249
+ //# sourceMappingURL=utility-types.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utility-types.interface.d.ts","sourceRoot":"","sources":["../../../../src/integration/interfaces/utility-types.interface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { IntegrationOptions, AsyncIntegrationOptions } from './interfaces/integration-options.interface';
3
+ /**
4
+ * Token for injecting integration options
5
+ */
6
+ export declare const NESTJS_CONFIG_AWS_INTEGRATION_OPTIONS = "NESTJS_CONFIG_AWS_INTEGRATION_OPTIONS";
7
+ /**
8
+ * NestJS module for integrating nestjs-config-aws with @nestjs/config.
9
+ * This module provides AWS-sourced configuration values to the standard @nestjs/config module.
10
+ */
11
+ export declare class NestConfigAwsIntegrationModule {
12
+ /**
13
+ * Create a synchronous integration module with provided options.
14
+ *
15
+ * @param options - Integration options for the module
16
+ * @returns Dynamic module configuration
17
+ */
18
+ static forRoot(options?: IntegrationOptions): DynamicModule;
19
+ /**
20
+ * Create an asynchronous integration module with factory-based options.
21
+ * Useful when integration options depend on other services or async operations.
22
+ *
23
+ * @param options - Async integration options with factory function
24
+ * @returns Dynamic module configuration
25
+ */
26
+ static forRootAsync(options: AsyncIntegrationOptions): DynamicModule;
27
+ /**
28
+ * Create the standard providers for the integration module.
29
+ */
30
+ private static createProviders;
31
+ /**
32
+ * Create providers for asynchronous module registration.
33
+ */
34
+ private static createAsyncProviders;
35
+ }
36
+ //# sourceMappingURL=nestjs-config-integration.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nestjs-config-integration.module.d.ts","sourceRoot":"","sources":["../../../src/integration/nestjs-config-integration.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA4B,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAWzG;;GAEG;AACH,eAAO,MAAM,qCAAqC,0CAA0C,CAAC;AAE7F;;;GAGG;AACH,qBAEa,8BAA8B;IACzC;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,GAAE,kBAAuB,GAAG,aAAa;IA0B/D;;;;;;OAMG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,uBAAuB,GAAG,aAAa;IAyBpE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;IAc9B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;CASpC"}
@@ -0,0 +1,134 @@
1
+ import { IntegrationOptions } from '../interfaces/integration-options.interface';
2
+ import { ConfigurationSource } from '../interfaces/configuration-source.interface';
3
+ /**
4
+ * Service for loading configuration from AWS sources for integration with @nestjs/config.
5
+ * Uses existing AWS loaders to fetch configuration and provides namespace-aware loading capabilities.
6
+ */
7
+ export declare class AwsConfigurationLoaderService {
8
+ private readonly logger;
9
+ private readonly loaders;
10
+ private readonly options;
11
+ private readonly errorHandler;
12
+ constructor(options?: IntegrationOptions);
13
+ /**
14
+ * Load configuration from AWS sources.
15
+ * @returns Promise resolving to configuration data
16
+ */
17
+ loadConfiguration(): Promise<Record<string, any>>;
18
+ /**
19
+ * Load configuration for specific namespaces from AWS sources.
20
+ * @param namespaces - Array of namespace names to load
21
+ * @returns Promise resolving to namespaced configuration data
22
+ */
23
+ loadNamespacedConfiguration(namespaces: string[]): Promise<Record<string, Record<string, any>>>;
24
+ /**
25
+ * Check if AWS services are available.
26
+ * @returns Promise resolving to availability status
27
+ */
28
+ isAvailable(): Promise<boolean>;
29
+ /**
30
+ * Get all available configuration sources with their metadata.
31
+ * @returns Promise resolving to array of configuration sources
32
+ */
33
+ getAvailableSources(): Promise<ConfigurationSource[]>;
34
+ /**
35
+ * Create configuration loaders based on integration options.
36
+ * @returns Array of configuration loaders
37
+ */
38
+ private createLoaders;
39
+ /**
40
+ * Get the source type for a given loader.
41
+ * @param loader - The configuration loader
42
+ * @returns The configuration source type
43
+ */
44
+ private getSourceType;
45
+ /**
46
+ * Get the priority for a given loader based on precedence rules.
47
+ * @param loader - The configuration loader
48
+ * @returns The priority number (higher = higher priority)
49
+ */
50
+ private getSourcePriority;
51
+ /**
52
+ * Extract configuration for a specific namespace from loaded configuration.
53
+ * @param config - The loaded configuration
54
+ * @param namespace - The namespace to extract
55
+ * @returns Configuration values for the namespace
56
+ */
57
+ private extractNamespaceConfig;
58
+ /**
59
+ * Extract nested namespace configuration from hierarchical keys.
60
+ * @param config - The loaded configuration
61
+ * @param namespace - The namespace to extract
62
+ * @returns Configuration values for the namespace
63
+ */
64
+ private extractNestedNamespaceConfig;
65
+ /**
66
+ * Convert snake_case or kebab-case to camelCase.
67
+ * @param str - String to convert
68
+ * @returns camelCase string
69
+ */
70
+ private toCamelCase;
71
+ /**
72
+ * Convert path segments to nested key structure.
73
+ * @param path - Path string (e.g., "host/port")
74
+ * @returns Nested key structure
75
+ */
76
+ private pathToNestedKey;
77
+ /**
78
+ * Set a nested value in an object using dot notation.
79
+ * @param obj - Target object
80
+ * @param path - Dot notation path
81
+ * @param value - Value to set
82
+ */
83
+ private setNestedValue;
84
+ /**
85
+ * Get the Secrets Manager path based on configuration.
86
+ * @returns The secrets manager path
87
+ */
88
+ private getSecretsManagerPath;
89
+ /**
90
+ * Get the SSM Parameter Store path based on configuration.
91
+ * @returns The SSM parameter path
92
+ */
93
+ private getSSMParameterPath;
94
+ /**
95
+ * Check if an error is an AWS service error.
96
+ * @param error - The error to check
97
+ * @returns Whether the error is from an AWS service
98
+ */
99
+ private isAwsServiceError;
100
+ /**
101
+ * Handle AWS-specific errors with appropriate strategies.
102
+ * @param loader - The loader that encountered the error
103
+ * @param error - The AWS error
104
+ * @returns Whether to continue processing
105
+ */
106
+ private handleAwsSpecificError;
107
+ /**
108
+ * Get the service name for a loader.
109
+ * @param loader - The configuration loader
110
+ * @returns The service name
111
+ */
112
+ private getServiceName;
113
+ /**
114
+ * Get the resource name for a loader.
115
+ * @param loader - The configuration loader
116
+ * @returns The resource name
117
+ */
118
+ private getResourceName;
119
+ /**
120
+ * Load configuration with retry logic for retryable errors.
121
+ * @param loader - The configuration loader
122
+ * @param maxRetries - Maximum number of retries
123
+ * @returns Promise resolving to configuration data
124
+ */
125
+ private loadWithRetry;
126
+ /**
127
+ * Check availability with timeout and error handling.
128
+ * @param loader - The configuration loader
129
+ * @param timeoutMs - Timeout in milliseconds
130
+ * @returns Promise resolving to availability status
131
+ */
132
+ private checkAvailabilityWithTimeout;
133
+ }
134
+ //# sourceMappingURL=aws-configuration-loader.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws-configuration-loader.service.d.ts","sourceRoot":"","sources":["../../../../src/integration/providers/aws-configuration-loader.service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAA2B,MAAM,8CAA8C,CAAC;AAI5G;;;GAGG;AACH,qBACa,6BAA6B;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkD;IACzE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;gBAGN,OAAO,CAAC,EAAE,kBAAkB;IAOzE;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAkFvD;;;;OAIG;IACG,2BAA2B,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IA+ErG;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IA6BrC;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAsC3D;;;OAGG;IACH,OAAO,CAAC,aAAa;IA8BrB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAYrB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAqBzB;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAgC9B;;;;;OAKG;IACH,OAAO,CAAC,4BAA4B;IAsBpC;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAMnB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAOvB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAoBtB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAU7B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IA0C9B;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAYtB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAUvB;;;;;OAKG;YACW,aAAa;IA2B3B;;;;;OAKG;YACW,4BAA4B;CAmB3C"}
@@ -0,0 +1,119 @@
1
+ import { ConfigFactory } from '@nestjs/config';
2
+ import { ConfigurationFactoryProvider, AwsConfigurationFactory } from '../interfaces/configuration-factory.interface';
3
+ import { ConfigurationSource } from '../interfaces/configuration-source.interface';
4
+ import { PrecedenceRule, IntegrationOptions } from '../interfaces/integration-options.interface';
5
+ import { PrecedenceHandlerService } from '../services/precedence-handler.service';
6
+ /**
7
+ * Implementation of ConfigurationFactoryProvider that creates configuration factories
8
+ * for @nestjs/config integration with AWS configuration sources.
9
+ */
10
+ export declare class ConfigurationFactoryProviderImpl implements ConfigurationFactoryProvider {
11
+ private readonly precedenceHandler;
12
+ private readonly options?;
13
+ private readonly logger;
14
+ constructor(precedenceHandler: PrecedenceHandlerService, options?: IntegrationOptions | undefined);
15
+ /**
16
+ * Create a configuration factory for a specific namespace.
17
+ * @param namespace - The namespace for the configuration
18
+ * @param config - The configuration data
19
+ * @returns A configuration factory that can be used with @nestjs/config
20
+ */
21
+ createFactory(namespace: string, config: Record<string, any>): ConfigFactory;
22
+ /**
23
+ * Create multiple namespaced configuration factories from a configuration object.
24
+ * @param config - The configuration data organized by namespace
25
+ * @returns Array of configuration factories
26
+ */
27
+ createNamespacedFactories(config: Record<string, any>): ConfigFactory[];
28
+ /**
29
+ * Merge AWS configuration with existing local configuration using precedence rules.
30
+ * @param awsConfig - Configuration loaded from AWS sources
31
+ * @param localConfig - Local configuration data
32
+ * @returns Merged configuration data
33
+ */
34
+ mergeWithExisting(awsConfig: Record<string, any>, localConfig: Record<string, any>): Record<string, any>;
35
+ /**
36
+ * Create an enhanced AWS configuration factory with metadata.
37
+ * @param namespace - Optional namespace for the configuration
38
+ * @param config - The configuration data
39
+ * @param sources - Sources that contributed to this configuration
40
+ * @param precedenceRule - Precedence rule applied to this configuration
41
+ * @returns Enhanced AWS configuration factory
42
+ */
43
+ createAwsConfigurationFactory(namespace: string | undefined, config: Record<string, any>, sources: ConfigurationSource[], precedenceRule: PrecedenceRule): AwsConfigurationFactory;
44
+ /**
45
+ * Create configuration factories from multiple sources with proper organization.
46
+ * @param sourceConfigs - Map of source name to configuration data
47
+ * @param namespaces - Optional list of namespaces to organize configuration
48
+ * @returns Array of configuration factories organized by namespace
49
+ */
50
+ createFactoriesFromSources(sourceConfigs: Map<string, Record<string, any>>, namespaces?: string[]): ConfigFactory[];
51
+ /**
52
+ * Create configuration factories from sources with precedence rules.
53
+ * @param sources - Array of configuration sources
54
+ * @param precedenceRule - Precedence rule to apply
55
+ * @param namespaces - Optional list of namespaces to organize configuration
56
+ * @returns Array of configuration factories
57
+ */
58
+ createFactoriesWithPrecedence(sources: ConfigurationSource[], precedenceRule: PrecedenceRule, namespaces?: string[]): ConfigFactory[];
59
+ /**
60
+ * Merge configuration with explicit precedence rule.
61
+ * @param sources - Configuration sources
62
+ * @param precedenceRule - Precedence rule to apply
63
+ * @returns Merged configuration data
64
+ */
65
+ mergeWithPrecedence(sources: ConfigurationSource[], precedenceRule: PrecedenceRule): Record<string, any>;
66
+ /**
67
+ * Process configuration values to handle special cases and transformations.
68
+ * @param config - Raw configuration object
69
+ * @returns Processed configuration object
70
+ */
71
+ private processConfigurationValues;
72
+ /**
73
+ * Process individual configuration values.
74
+ * @param value - The value to process
75
+ * @returns Processed value
76
+ */
77
+ private processValue;
78
+ /**
79
+ * Convert string values to appropriate types.
80
+ * @param value - String value to convert
81
+ * @returns Converted value
82
+ */
83
+ private convertStringValue;
84
+ /**
85
+ * Validate if a namespace configuration is valid.
86
+ * @param namespace - The namespace name
87
+ * @param config - The configuration data
88
+ * @returns True if valid, false otherwise
89
+ */
90
+ private isValidNamespaceConfig;
91
+ /**
92
+ * Deep merge two configuration objects.
93
+ * @param target - Target object
94
+ * @param source - Source object
95
+ * @returns Merged object
96
+ */
97
+ private deepMerge;
98
+ /**
99
+ * Extract configuration for a specific namespace from multiple sources.
100
+ * @param sourceConfigs - Map of source configurations
101
+ * @param namespace - Target namespace
102
+ * @returns Configuration for the namespace
103
+ */
104
+ private extractNamespaceConfig;
105
+ /**
106
+ * Merge configuration from multiple sources.
107
+ * @param sourceConfigs - Map of source configurations
108
+ * @returns Merged configuration
109
+ */
110
+ private mergeSourceConfigs;
111
+ /**
112
+ * Extract sources for a specific namespace.
113
+ * @param sources - All configuration sources
114
+ * @param namespace - Target namespace
115
+ * @returns Sources filtered for the namespace
116
+ */
117
+ private extractNamespaceSources;
118
+ }
119
+ //# sourceMappingURL=configuration-factory.provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration-factory.provider.d.ts","sourceRoot":"","sources":["../../../../src/integration/providers/configuration-factory.provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAc,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AACtH,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjG,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAGlF;;;GAGG;AACH,qBACa,gCAAiC,YAAW,4BAA4B;IAIjF,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAL3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqD;gBAGzD,iBAAiB,EAAE,wBAAwB,EAE3C,OAAO,CAAC,EAAE,kBAAkB,YAAA;IAG/C;;;;;OAKG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,aAAa;IAmC5E;;;;OAIG;IACH,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,aAAa,EAAE;IAqBvE;;;;;OAKG;IACH,iBAAiB,CACf,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IA4BtB;;;;;;;OAOG;IACH,6BAA6B,CAC3B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,OAAO,EAAE,mBAAmB,EAAE,EAC9B,cAAc,EAAE,cAAc,GAC7B,uBAAuB;IAgB1B;;;;;OAKG;IACH,0BAA0B,CACxB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAC/C,UAAU,CAAC,EAAE,MAAM,EAAE,GACpB,aAAa,EAAE;IA0BlB;;;;;;OAMG;IACH,6BAA6B,CAC3B,OAAO,EAAE,mBAAmB,EAAE,EAC9B,cAAc,EAAE,cAAc,EAC9B,UAAU,CAAC,EAAE,MAAM,EAAE,GACpB,aAAa,EAAE;IAiClB;;;;;OAKG;IACH,mBAAmB,CACjB,OAAO,EAAE,mBAAmB,EAAE,EAC9B,cAAc,EAAE,cAAc,GAC7B,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAYtB;;;;OAIG;IACH,OAAO,CAAC,0BAA0B;IAUlC;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAuBpB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IA8B1B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAS9B;;;;;OAKG;IACH,OAAO,CAAC,SAAS;IAkBjB;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAgB9B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;CAmBhC"}
@@ -0,0 +1,3 @@
1
+ export * from './configuration-factory.provider';
2
+ export * from './aws-configuration-loader.service';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/integration/providers/index.ts"],"names":[],"mappings":"AACA,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC"}
@@ -0,0 +1,84 @@
1
+ import { ConfigFactory, ConfigModuleOptions } from '@nestjs/config';
2
+ import { FactoryRegistrationService } from './factory-registration.service';
3
+ import { IntegrationOptions } from '../interfaces/integration-options.interface';
4
+ /**
5
+ * Helper service for async configuration support with @nestjs/config.
6
+ * This service provides utilities for creating async configuration factories
7
+ * and managing dependency injection in async scenarios.
8
+ */
9
+ export declare class AsyncConfigHelperService {
10
+ private readonly factoryRegistrationService;
11
+ private readonly options;
12
+ private readonly logger;
13
+ constructor(factoryRegistrationService: FactoryRegistrationService, options?: IntegrationOptions);
14
+ /**
15
+ * Create an async configuration factory that loads AWS configuration.
16
+ * This factory can be used with @nestjs/config's load array.
17
+ *
18
+ * @returns Promise resolving to configuration factory
19
+ */
20
+ createAsyncConfigFactory(): Promise<ConfigFactory>;
21
+ /**
22
+ * Create multiple async configuration factories for namespaces.
23
+ * This method creates separate factories for each namespace.
24
+ *
25
+ * @param namespaces - Array of namespace names
26
+ * @returns Promise resolving to array of namespaced configuration factories
27
+ */
28
+ createAsyncNamespacedFactories(namespaces: string[]): Promise<ConfigFactory[]>;
29
+ /**
30
+ * Create an async factory function that can be used with dependency injection.
31
+ * This method creates a factory that can receive injected dependencies.
32
+ *
33
+ * @param dependencies - Array of dependency tokens to inject
34
+ * @returns Async factory function
35
+ */
36
+ createAsyncFactoryWithDependencies(dependencies?: any[]): (...args: any[]) => Promise<ConfigModuleOptions>;
37
+ /**
38
+ * Create an async factory that merges with existing configuration.
39
+ * This method creates a factory that can be combined with other configuration sources.
40
+ *
41
+ * @param existingFactory - Existing configuration factory to merge with
42
+ * @returns Promise resolving to merged configuration factory
43
+ */
44
+ createMergedAsyncFactory(existingFactory?: ConfigFactory): Promise<ConfigFactory>;
45
+ /**
46
+ * Create configuration options for async module setup.
47
+ * This method creates options that can be used with ConfigModule.forRoot().
48
+ *
49
+ * @param baseOptions - Base configuration options to enhance
50
+ * @returns Promise resolving to enhanced configuration options
51
+ */
52
+ createAsyncConfigOptions(baseOptions?: ConfigModuleOptions): Promise<ConfigModuleOptions>;
53
+ /**
54
+ * Check if AWS configuration is available for async loading.
55
+ * This method can be used to determine if AWS integration should be enabled.
56
+ *
57
+ * @returns Promise resolving to availability status
58
+ */
59
+ checkAsyncAvailability(): Promise<{
60
+ isAvailable: boolean;
61
+ factoriesCount: number;
62
+ errors: string[];
63
+ }>;
64
+ /**
65
+ * Create a factory that loads configuration on-demand.
66
+ * This factory delays AWS configuration loading until it's actually needed.
67
+ *
68
+ * @returns Configuration factory with lazy loading
69
+ */
70
+ createLazyAsyncFactory(): ConfigFactory;
71
+ /**
72
+ * Load configuration lazily for the lazy factory.
73
+ * @returns Promise resolving to configuration data
74
+ */
75
+ private loadConfigurationLazily;
76
+ /**
77
+ * Deep merge two configuration objects.
78
+ * @param target - Target object
79
+ * @param source - Source object
80
+ * @returns Merged object
81
+ */
82
+ private deepMerge;
83
+ }
84
+ //# sourceMappingURL=async-config-helper.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-config-helper.service.d.ts","sourceRoot":"","sources":["../../../../src/integration/services/async-config-helper.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAGjF;;;;GAIG;AACH,qBACa,wBAAwB;IAIjC,OAAO,CAAC,QAAQ,CAAC,0BAA0B;IAE3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;gBAGjD,0BAA0B,EAAE,0BAA0B,EAEtD,OAAO,GAAE,kBAAuB;IAGnD;;;;;OAKG;IACG,wBAAwB,IAAI,OAAO,CAAC,aAAa,CAAC;IAiDxD;;;;;;OAMG;IACG,8BAA8B,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAgCpF;;;;;;OAMG;IACH,kCAAkC,CAAC,YAAY,GAAE,GAAG,EAAO,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,mBAAmB,CAAC;IA6C9G;;;;;;OAMG;IACG,wBAAwB,CAAC,eAAe,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAmDvF;;;;;;OAMG;IACG,wBAAwB,CAAC,WAAW,GAAE,mBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAyCnG;;;;;OAKG;IACG,sBAAsB,IAAI,OAAO,CAAC;QACtC,WAAW,EAAE,OAAO,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IA0BF;;;;;OAKG;IACH,sBAAsB,IAAI,aAAa;IA6BvC;;;OAGG;YACW,uBAAuB;IAqBrC;;;;;OAKG;IACH,OAAO,CAAC,SAAS;CAiBlB"}