@plyaz/core 1.1.1 → 1.2.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 (243) hide show
  1. package/dist/adapters/index.d.ts +16 -0
  2. package/dist/adapters/index.d.ts.map +1 -0
  3. package/dist/adapters/nestjs.d.ts +79 -0
  4. package/dist/adapters/nestjs.d.ts.map +1 -0
  5. package/dist/adapters/nextjs.d.ts +28 -0
  6. package/dist/adapters/nextjs.d.ts.map +1 -0
  7. package/dist/backend/example/example.controller.d.ts +121 -0
  8. package/dist/backend/example/example.controller.d.ts.map +1 -0
  9. package/dist/backend/example/example.module.d.ts +29 -0
  10. package/dist/backend/example/example.module.d.ts.map +1 -0
  11. package/dist/backend/example/index.d.ts +8 -0
  12. package/dist/backend/example/index.d.ts.map +1 -0
  13. package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts +150 -0
  14. package/dist/backend/featureFlags/FeatureFlagDomainService.d.ts.map +1 -0
  15. package/dist/backend/featureFlags/config/feature-flag.config.d.ts +89 -0
  16. package/dist/backend/featureFlags/config/feature-flag.config.d.ts.map +1 -0
  17. package/dist/backend/featureFlags/config/validation.d.ts +181 -0
  18. package/dist/backend/featureFlags/config/validation.d.ts.map +1 -0
  19. package/dist/backend/featureFlags/decorators/feature-disabled.decorator.d.ts +6 -0
  20. package/dist/backend/featureFlags/decorators/feature-disabled.decorator.d.ts.map +1 -0
  21. package/dist/backend/featureFlags/decorators/feature-enabled.decorator.d.ts +8 -0
  22. package/dist/backend/featureFlags/decorators/feature-enabled.decorator.d.ts.map +1 -0
  23. package/dist/backend/featureFlags/decorators/feature-flag.decorator.d.ts +11 -0
  24. package/dist/backend/featureFlags/decorators/feature-flag.decorator.d.ts.map +1 -0
  25. package/dist/backend/featureFlags/feature-flag.controller.d.ts +14 -56
  26. package/dist/backend/featureFlags/feature-flag.controller.d.ts.map +1 -1
  27. package/dist/backend/featureFlags/feature-flag.module.d.ts +36 -44
  28. package/dist/backend/featureFlags/feature-flag.module.d.ts.map +1 -1
  29. package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts +33 -0
  30. package/dist/backend/featureFlags/guards/feature-flag.guard.d.ts.map +1 -0
  31. package/dist/backend/featureFlags/index.d.ts +14 -41
  32. package/dist/backend/featureFlags/index.d.ts.map +1 -1
  33. package/dist/backend/featureFlags/interceptors/error-handling-interceptor.d.ts +16 -0
  34. package/dist/backend/featureFlags/interceptors/error-handling-interceptor.d.ts.map +1 -0
  35. package/dist/backend/featureFlags/interceptors/feature-flag-logging-interceptor.d.ts +18 -0
  36. package/dist/backend/featureFlags/interceptors/feature-flag-logging-interceptor.d.ts.map +1 -0
  37. package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts +162 -0
  38. package/dist/backend/featureFlags/middleware/feature-flag-middleware.d.ts.map +1 -0
  39. package/dist/backend/index.d.ts +5 -0
  40. package/dist/backend/index.d.ts.map +1 -1
  41. package/dist/base/cache/CacheKeyBuilder.d.ts +115 -0
  42. package/dist/base/cache/CacheKeyBuilder.d.ts.map +1 -0
  43. package/dist/base/cache/feature/caching.d.ts +16 -0
  44. package/dist/base/cache/feature/caching.d.ts.map +1 -0
  45. package/dist/base/cache/index.d.ts +2 -0
  46. package/dist/base/cache/index.d.ts.map +1 -1
  47. package/dist/base/cache/strategies/redis.d.ts.map +1 -1
  48. package/dist/base/observability/BaseAdapter.d.ts +79 -0
  49. package/dist/base/observability/BaseAdapter.d.ts.map +1 -0
  50. package/dist/base/observability/CompositeAdapter.d.ts +72 -0
  51. package/dist/base/observability/CompositeAdapter.d.ts.map +1 -0
  52. package/dist/base/observability/DatadogAdapter.d.ts +117 -0
  53. package/dist/base/observability/DatadogAdapter.d.ts.map +1 -0
  54. package/dist/base/observability/LoggerAdapter.d.ts +54 -0
  55. package/dist/base/observability/LoggerAdapter.d.ts.map +1 -0
  56. package/dist/base/observability/ObservabilityService.d.ts +160 -0
  57. package/dist/base/observability/ObservabilityService.d.ts.map +1 -0
  58. package/dist/base/observability/index.d.ts +17 -0
  59. package/dist/base/observability/index.d.ts.map +1 -0
  60. package/dist/domain/base/BaseBackendDomainService.d.ts +528 -0
  61. package/dist/domain/base/BaseBackendDomainService.d.ts.map +1 -0
  62. package/dist/domain/base/BaseDomainService.d.ts +284 -0
  63. package/dist/domain/base/BaseDomainService.d.ts.map +1 -0
  64. package/dist/domain/base/BaseFrontendDomainService.d.ts +493 -0
  65. package/dist/domain/base/BaseFrontendDomainService.d.ts.map +1 -0
  66. package/dist/domain/base/BaseMapper.d.ts +100 -0
  67. package/dist/domain/base/BaseMapper.d.ts.map +1 -0
  68. package/dist/domain/base/BaseValidator.d.ts +105 -0
  69. package/dist/domain/base/BaseValidator.d.ts.map +1 -0
  70. package/dist/domain/base/index.d.ts +10 -0
  71. package/dist/domain/base/index.d.ts.map +1 -0
  72. package/dist/domain/example/BackendExampleDomainService.d.ts +257 -0
  73. package/dist/domain/example/BackendExampleDomainService.d.ts.map +1 -0
  74. package/dist/domain/example/FrontendExampleDomainService.d.ts +164 -0
  75. package/dist/domain/example/FrontendExampleDomainService.d.ts.map +1 -0
  76. package/dist/domain/example/index.d.ts +10 -0
  77. package/dist/domain/example/index.d.ts.map +1 -0
  78. package/dist/domain/example/mappers/ExampleMapper.d.ts +67 -0
  79. package/dist/domain/example/mappers/ExampleMapper.d.ts.map +1 -0
  80. package/dist/domain/example/validators/ExampleValidator.d.ts +33 -0
  81. package/dist/domain/example/validators/ExampleValidator.d.ts.map +1 -0
  82. package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts +86 -0
  83. package/dist/domain/featureFlags/FrontendFeatureFlagDomainService.d.ts.map +1 -0
  84. package/dist/domain/featureFlags/index.d.ts +10 -5
  85. package/dist/domain/featureFlags/index.d.ts.map +1 -1
  86. package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts +72 -0
  87. package/dist/domain/featureFlags/mappers/FeatureFlagMapper.d.ts.map +1 -0
  88. package/dist/domain/featureFlags/mappers/index.d.ts +8 -0
  89. package/dist/domain/featureFlags/mappers/index.d.ts.map +1 -0
  90. package/dist/domain/featureFlags/module.d.ts +20 -0
  91. package/dist/domain/featureFlags/module.d.ts.map +1 -0
  92. package/dist/domain/featureFlags/provider.d.ts +40 -1
  93. package/dist/domain/featureFlags/provider.d.ts.map +1 -1
  94. package/dist/domain/featureFlags/providers/api.d.ts +59 -34
  95. package/dist/domain/featureFlags/providers/api.d.ts.map +1 -1
  96. package/dist/domain/featureFlags/providers/database.d.ts +59 -52
  97. package/dist/domain/featureFlags/providers/database.d.ts.map +1 -1
  98. package/dist/domain/featureFlags/providers/factory.d.ts +50 -33
  99. package/dist/domain/featureFlags/providers/factory.d.ts.map +1 -1
  100. package/dist/domain/featureFlags/providers/file.d.ts +48 -1
  101. package/dist/domain/featureFlags/providers/file.d.ts.map +1 -1
  102. package/dist/domain/featureFlags/providers/memory.d.ts +32 -6
  103. package/dist/domain/featureFlags/providers/memory.d.ts.map +1 -1
  104. package/dist/domain/featureFlags/providers/redis.d.ts +6 -1
  105. package/dist/domain/featureFlags/providers/redis.d.ts.map +1 -1
  106. package/dist/domain/featureFlags/service.d.ts +112 -0
  107. package/dist/domain/featureFlags/service.d.ts.map +1 -0
  108. package/dist/domain/index.d.ts +2 -0
  109. package/dist/domain/index.d.ts.map +1 -1
  110. package/dist/engine/featureFlags/engine.d.ts +8 -0
  111. package/dist/engine/featureFlags/engine.d.ts.map +1 -1
  112. package/dist/entry-backend.d.ts +24 -0
  113. package/dist/entry-backend.d.ts.map +1 -0
  114. package/dist/entry-backend.js +15635 -0
  115. package/dist/entry-backend.js.map +1 -0
  116. package/dist/entry-backend.mjs +15506 -0
  117. package/dist/entry-backend.mjs.map +1 -0
  118. package/dist/entry-frontend.d.ts +23 -0
  119. package/dist/entry-frontend.d.ts.map +1 -0
  120. package/dist/entry-frontend.js +11152 -0
  121. package/dist/entry-frontend.js.map +1 -0
  122. package/dist/entry-frontend.mjs +11089 -0
  123. package/dist/entry-frontend.mjs.map +1 -0
  124. package/dist/events/CoreEventManager.d.ts +116 -0
  125. package/dist/events/CoreEventManager.d.ts.map +1 -0
  126. package/dist/events/index.d.ts +27 -0
  127. package/dist/events/index.d.ts.map +1 -0
  128. package/dist/frontend/base/index.d.ts +8 -0
  129. package/dist/frontend/base/index.d.ts.map +1 -0
  130. package/dist/frontend/components/InitializationError.d.ts +25 -0
  131. package/dist/frontend/components/InitializationError.d.ts.map +1 -0
  132. package/dist/frontend/components/InitializationLoading.d.ts +22 -0
  133. package/dist/frontend/components/InitializationLoading.d.ts.map +1 -0
  134. package/dist/frontend/components/index.d.ts +9 -0
  135. package/dist/frontend/components/index.d.ts.map +1 -0
  136. package/dist/frontend/example/index.d.ts +9 -0
  137. package/dist/frontend/example/index.d.ts.map +1 -0
  138. package/dist/frontend/featureFlags/index.d.ts +28 -7
  139. package/dist/frontend/featureFlags/index.d.ts.map +1 -1
  140. package/dist/frontend/index.d.ts +5 -0
  141. package/dist/frontend/index.d.ts.map +1 -1
  142. package/dist/frontend/providers/ApiProvider.d.ts +41 -0
  143. package/dist/frontend/providers/ApiProvider.d.ts.map +1 -0
  144. package/dist/frontend/providers/PlyazProvider.d.ts +305 -0
  145. package/dist/frontend/providers/PlyazProvider.d.ts.map +1 -0
  146. package/dist/frontend/providers/index.d.ts +8 -0
  147. package/dist/frontend/providers/index.d.ts.map +1 -0
  148. package/dist/frontend/store/feature-flags.d.ts +63 -0
  149. package/dist/frontend/store/feature-flags.d.ts.map +1 -0
  150. package/dist/frontend/store/index.d.ts +14 -0
  151. package/dist/frontend/store/index.d.ts.map +1 -0
  152. package/dist/frontend/store/integrations.d.ts +36 -0
  153. package/dist/frontend/store/integrations.d.ts.map +1 -0
  154. package/dist/frontend/store/service-accessors.d.ts +78 -0
  155. package/dist/frontend/store/service-accessors.d.ts.map +1 -0
  156. package/dist/index.d.ts +6 -2
  157. package/dist/index.d.ts.map +1 -1
  158. package/dist/index.js +15450 -0
  159. package/dist/index.js.map +1 -0
  160. package/dist/index.mjs +13461 -2440
  161. package/dist/index.mjs.map +1 -1
  162. package/dist/init/CoreInitializer.d.ts +582 -0
  163. package/dist/init/CoreInitializer.d.ts.map +1 -0
  164. package/dist/init/ServiceRegistry.d.ts +256 -0
  165. package/dist/init/ServiceRegistry.d.ts.map +1 -0
  166. package/dist/init/index.d.ts +14 -0
  167. package/dist/init/index.d.ts.map +1 -0
  168. package/dist/init/nestjs/CoreModule.d.ts +63 -0
  169. package/dist/init/nestjs/CoreModule.d.ts.map +1 -0
  170. package/dist/init/nestjs/index.d.ts +5 -0
  171. package/dist/init/nestjs/index.d.ts.map +1 -0
  172. package/dist/init/nestjs/index.js +9059 -0
  173. package/dist/init/nestjs/index.js.map +1 -0
  174. package/dist/init/nestjs/index.mjs +9055 -0
  175. package/dist/init/nestjs/index.mjs.map +1 -0
  176. package/dist/init/react.d.ts +33 -0
  177. package/dist/init/react.d.ts.map +1 -0
  178. package/dist/models/example/ExampleRepository.d.ts +124 -0
  179. package/dist/models/example/ExampleRepository.d.ts.map +1 -0
  180. package/dist/models/example/index.d.ts +7 -0
  181. package/dist/models/example/index.d.ts.map +1 -0
  182. package/dist/models/featureFlags/FeatureFlagRepository.d.ts +560 -0
  183. package/dist/models/featureFlags/FeatureFlagRepository.d.ts.map +1 -0
  184. package/dist/models/featureFlags/index.d.ts +7 -0
  185. package/dist/models/featureFlags/index.d.ts.map +1 -0
  186. package/dist/models/index.d.ts +9 -0
  187. package/dist/models/index.d.ts.map +1 -0
  188. package/dist/services/ApiClientService.d.ts +178 -0
  189. package/dist/services/ApiClientService.d.ts.map +1 -0
  190. package/dist/services/CacheService.d.ts +176 -0
  191. package/dist/services/CacheService.d.ts.map +1 -0
  192. package/dist/services/DbService.d.ts +391 -0
  193. package/dist/services/DbService.d.ts.map +1 -0
  194. package/dist/services/NotificationService.d.ts +151 -0
  195. package/dist/services/NotificationService.d.ts.map +1 -0
  196. package/dist/services/StorageService.d.ts +144 -0
  197. package/dist/services/StorageService.d.ts.map +1 -0
  198. package/dist/services/index.d.ts +12 -0
  199. package/dist/services/index.d.ts.map +1 -0
  200. package/dist/utils/common/id.d.ts +83 -0
  201. package/dist/utils/common/id.d.ts.map +1 -0
  202. package/dist/utils/common/index.d.ts +3 -1
  203. package/dist/utils/common/index.d.ts.map +1 -1
  204. package/dist/utils/common/object.d.ts +70 -0
  205. package/dist/utils/common/object.d.ts.map +1 -0
  206. package/dist/utils/common/validation.d.ts +20 -0
  207. package/dist/utils/common/validation.d.ts.map +1 -0
  208. package/dist/utils/featureFlags/conditions.d.ts.map +1 -1
  209. package/dist/utils/featureFlags/context.d.ts +0 -1
  210. package/dist/utils/featureFlags/context.d.ts.map +1 -1
  211. package/dist/utils/index.d.ts +1 -0
  212. package/dist/utils/index.d.ts.map +1 -1
  213. package/dist/utils/mapperUtils.d.ts +38 -0
  214. package/dist/utils/mapperUtils.d.ts.map +1 -0
  215. package/dist/utils/runtime.d.ts +15 -0
  216. package/dist/utils/runtime.d.ts.map +1 -0
  217. package/dist/version.d.ts +24 -0
  218. package/dist/version.d.ts.map +1 -0
  219. package/dist/web_app/auth/add_user.d.ts +3 -0
  220. package/dist/web_app/auth/add_user.d.ts.map +1 -0
  221. package/dist/web_app/auth/update_user.d.ts +2 -0
  222. package/dist/web_app/auth/update_user.d.ts.map +1 -0
  223. package/package.json +102 -15
  224. package/dist/backend/featureFlags/feature-flag.repository.d.ts +0 -85
  225. package/dist/backend/featureFlags/feature-flag.repository.d.ts.map +0 -1
  226. package/dist/backend/featureFlags/feature-flag.service.d.ts +0 -123
  227. package/dist/backend/featureFlags/feature-flag.service.d.ts.map +0 -1
  228. package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts +0 -103
  229. package/dist/frontend/featureFlags/hooks/useFeatureFlag.d.ts.map +0 -1
  230. package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts +0 -35
  231. package/dist/frontend/featureFlags/hooks/useFeatureFlagActions.d.ts.map +0 -1
  232. package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts +0 -55
  233. package/dist/frontend/featureFlags/hooks/useFeatureFlagHelpers.d.ts.map +0 -1
  234. package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts +0 -57
  235. package/dist/frontend/featureFlags/hooks/useFeatureFlagProvider.d.ts.map +0 -1
  236. package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts +0 -99
  237. package/dist/frontend/featureFlags/providers/FeatureFlagProvider.d.ts.map +0 -1
  238. package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts +0 -31
  239. package/dist/frontend/featureFlags/providers/FeatureFlagProviderHelpers.d.ts.map +0 -1
  240. package/dist/frontend/featureFlags/providers/types.d.ts +0 -21
  241. package/dist/frontend/featureFlags/providers/types.d.ts.map +0 -1
  242. package/dist/index.cjs +0 -4383
  243. package/dist/index.cjs.map +0 -1
@@ -0,0 +1,256 @@
1
+ /**
2
+ * Service Registry - Frontend Service Auto-Initialization
3
+ *
4
+ * Provides a generic, scalable pattern for initializing domain services.
5
+ * Services implement the InitializableDomainService interface and are
6
+ * initialized automatically without hardcoded switch statements.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * import { ServiceRegistry } from '@plyaz/core';
11
+ * import { FeatureFlagDomainService } from '@plyaz/core/frontend';
12
+ * import { ExampleDomainService } from '@plyaz/core/domain';
13
+ *
14
+ * // Initialize services
15
+ * await ServiceRegistry.initialize({
16
+ * apiClient: { baseURL: '/api' },
17
+ * services: [
18
+ * { service: FeatureFlagDomainService, config: { enabled: true } },
19
+ * { service: ExampleDomainService, config: { enabled: true, useRealApi: false } },
20
+ * ],
21
+ * });
22
+ *
23
+ * // Access services by key
24
+ * const flags = ServiceRegistry.get('featureFlags');
25
+ * const isEnabled = await flags.isEnabled('my-flag');
26
+ *
27
+ * // Or get with type safety
28
+ * const example = ServiceRegistry.get<ExampleDomainService>('example');
29
+ * ```
30
+ */
31
+ import type { CoreDomainServiceInstance, CoreServiceEntry, CoreServiceInitConfig, CoreServiceRegistryConfig } from '@plyaz/types/core';
32
+ import type { ObservabilityAdapter } from '@plyaz/types/observability';
33
+ /**
34
+ * Service Registry
35
+ *
36
+ * Manages frontend domain service instances with auto-initialization.
37
+ * Supports immediate, lazy, and conditional initialization.
38
+ *
39
+ * Key features:
40
+ * - Generic: No switch statements, services implement common interface
41
+ * - Scalable: Add new services without modifying registry code
42
+ * - Flexible: Immediate, lazy, or conditional initialization
43
+ * - Type-safe: Get services with proper typing
44
+ */
45
+ export declare class ServiceRegistry {
46
+ private static readonly logger;
47
+ /** Initialized singleton service instances by key */
48
+ private static _services;
49
+ /** Pending services for lazy initialization */
50
+ private static _pending;
51
+ /** Service metadata (config, singleton flag) by key */
52
+ private static _metadata;
53
+ /** Global environment */
54
+ private static _environment;
55
+ /** Runtime environment (node, browser, bun, etc.) */
56
+ private static _runtime;
57
+ /** Global API client options */
58
+ private static _apiClientOptions;
59
+ /** Global database config */
60
+ private static _dbConfig;
61
+ /** Global cache config */
62
+ private static _cacheConfig;
63
+ /** Global observability config */
64
+ private static _observabilityConfig;
65
+ /** Global observability adapter instance */
66
+ private static _observabilityInstance;
67
+ /** Global storage config */
68
+ private static _storageConfig;
69
+ /** Global notifications config */
70
+ private static _notificationsConfig;
71
+ /** Store registry interface from Core (type-safe) */
72
+ private static _storeRegistry;
73
+ /** Initialization promises (for concurrent access during lazy init) */
74
+ private static _initPromises;
75
+ /**
76
+ * Initialize the service registry with the provided configuration.
77
+ *
78
+ * @param config - Registry configuration with services to initialize
79
+ *
80
+ * @example
81
+ * ```typescript
82
+ * await ServiceRegistry.initialize({
83
+ * apiClient: { baseURL: '/api' },
84
+ * services: [
85
+ * { service: FeatureFlagDomainService, config: { enabled: true } },
86
+ * { service: ExampleDomainService, config: { enabled: true, initWhen: 'lazy' } },
87
+ * ],
88
+ * });
89
+ * ```
90
+ */
91
+ static initialize(config: CoreServiceRegistryConfig): Promise<void>;
92
+ /**
93
+ * Get a singleton service instance by key (synchronous).
94
+ * Throws if the service is not initialized or is non-singleton.
95
+ *
96
+ * @param key - Service key (e.g., 'featureFlags', 'example')
97
+ * @returns The service instance
98
+ * @throws CorePackageError if service not found, not initialized, or non-singleton
99
+ *
100
+ * @example
101
+ * ```typescript
102
+ * const flags = ServiceRegistry.get<FeatureFlagDomainService>('featureFlags');
103
+ * const isEnabled = await flags.isEnabled('my-flag');
104
+ * ```
105
+ */
106
+ static get<T extends CoreDomainServiceInstance = CoreDomainServiceInstance>(key: string): T;
107
+ /**
108
+ * Create a new instance of a service.
109
+ * Use this for non-singleton services or when you need a fresh instance.
110
+ *
111
+ * Note: The caller is responsible for disposing the returned instance.
112
+ *
113
+ * @param key - Service key
114
+ * @param configOverrides - Optional config overrides for this instance
115
+ * @returns Promise resolving to a new service instance
116
+ *
117
+ * @example
118
+ * ```typescript
119
+ * // Non-singleton service - always creates new instance
120
+ * const instance1 = await ServiceRegistry.create<WorkerService>('worker');
121
+ * const instance2 = await ServiceRegistry.create<WorkerService>('worker');
122
+ * instance1 !== instance2; // true
123
+ *
124
+ * // With config overrides
125
+ * const customWorker = await ServiceRegistry.create<WorkerService>('worker', {
126
+ * apiClient: { baseURL: 'https://custom-api.com' },
127
+ * });
128
+ *
129
+ * // Don't forget to dispose when done!
130
+ * instance1.dispose();
131
+ * instance2.dispose();
132
+ * ```
133
+ */
134
+ static create<T extends CoreDomainServiceInstance = CoreDomainServiceInstance>(key: string, configOverrides?: Partial<CoreServiceInitConfig>): Promise<T>;
135
+ /**
136
+ * Get a service instance by key with async initialization if needed.
137
+ * Use this for lazy-initialized services.
138
+ *
139
+ * @param key - Service key
140
+ * @returns Promise resolving to the service instance
141
+ *
142
+ * @example
143
+ * ```typescript
144
+ * const example = await ServiceRegistry.getAsync<ExampleDomainService>('example');
145
+ * const entities = await example.getAll();
146
+ * ```
147
+ */
148
+ static getAsync<T extends CoreDomainServiceInstance = CoreDomainServiceInstance>(key: string): Promise<T>;
149
+ /**
150
+ * Check if a service is registered (either initialized or pending).
151
+ *
152
+ * @param key - Service key
153
+ */
154
+ static has(key: string): boolean;
155
+ /**
156
+ * Check if a service is initialized and ready.
157
+ *
158
+ * @param key - Service key
159
+ */
160
+ static isInitialized(key: string): boolean;
161
+ /**
162
+ * Get all initialized service keys.
163
+ */
164
+ static getInitializedKeys(): string[];
165
+ /**
166
+ * Get all pending (lazy) service keys.
167
+ */
168
+ static getPendingKeys(): string[];
169
+ /** Build API client options and instance for service */
170
+ private static buildApiClientOptions;
171
+ /** Build DB config and instance for service with runtime validation */
172
+ private static buildDbConfig;
173
+ /** Build cache config and instance for service with runtime validation */
174
+ private static buildCacheConfig;
175
+ /** Build observability config and instance for service */
176
+ private static buildObservabilityConfig;
177
+ /** Build storage config and instance for service with runtime validation (backend-only) */
178
+ private static buildStorageConfig;
179
+ /** Build notifications config and instance for service with runtime validation (backend-only) */
180
+ private static buildNotificationsConfig;
181
+ /**
182
+ * Create a dedicated ObservabilityService instance for a service.
183
+ * Uses the same adapter pattern as global observability but with service-specific config.
184
+ */
185
+ private static createDedicatedObservability;
186
+ /**
187
+ * Set the global observability adapter instance.
188
+ * Called by Core.initialize() after creating the adapter.
189
+ */
190
+ static setObservabilityInstance(instance: ObservabilityAdapter): void;
191
+ /**
192
+ * Get the global observability adapter instance.
193
+ */
194
+ static getObservabilityInstance(): ObservabilityAdapter | null;
195
+ /**
196
+ * Initialize a single service from an entry.
197
+ * Uses the service class's static create() method.
198
+ * Merges per-service config with global config.
199
+ */
200
+ private static initializeService;
201
+ /** Build stores for service injection */
202
+ private static buildStoresForService;
203
+ /** Perform the actual service initialization */
204
+ private static doInitializeService;
205
+ /**
206
+ * Dispose a specific service by key.
207
+ *
208
+ * @param key - Service key to dispose
209
+ */
210
+ static dispose(key: string): void;
211
+ /**
212
+ * Dispose all services and clear the registry.
213
+ */
214
+ static disposeAll(): void;
215
+ /**
216
+ * Check if a service is configured as singleton.
217
+ *
218
+ * @param key - Service key
219
+ * @returns true if singleton (default), false if non-singleton
220
+ */
221
+ static isSingleton(key: string): boolean;
222
+ /**
223
+ * Get all non-singleton service keys.
224
+ * These services must be created via `create()` method.
225
+ */
226
+ static getNonSingletonKeys(): string[];
227
+ /**
228
+ * Register a new service dynamically after initialization.
229
+ *
230
+ * @param entry - Service entry to register
231
+ * @param initNow - Whether to initialize immediately (default: true)
232
+ *
233
+ * @example
234
+ * ```typescript
235
+ * // Register and initialize immediately
236
+ * await ServiceRegistry.register({
237
+ * service: NewDomainService,
238
+ * config: { enabled: true },
239
+ * });
240
+ *
241
+ * // Register for lazy initialization
242
+ * ServiceRegistry.register({
243
+ * service: LazyService,
244
+ * config: { enabled: true, initWhen: 'lazy' },
245
+ * }, false);
246
+ * ```
247
+ */
248
+ static register(entry: CoreServiceEntry, initNow?: boolean): Promise<void>;
249
+ /**
250
+ * Unregister a service (dispose if initialized).
251
+ *
252
+ * @param key - Service key to unregister
253
+ */
254
+ static unregister(key: string): void;
255
+ }
256
+ //# sourceMappingURL=ServiceRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceRegistry.d.ts","sourceRoot":"","sources":["../../src/init/ServiceRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Core initialization exports
3
+ *
4
+ * Import runtime types directly from '@plyaz/types/core':
5
+ * - CoreRuntimeEnvironment, CoreRuntimeContext
6
+ * - BACKEND_RUNTIMES, FRONTEND_RUNTIMES, UNIVERSAL_RUNTIMES
7
+ */
8
+ export { Core, DEFAULT_ENCRYPTION_FIELDS } from './CoreInitializer';
9
+ export type { CoreInitOptions, CoreServicesResult } from './CoreInitializer';
10
+ export type { CoreEnvVars, CoreFeatureFlagInitConfig, CoreErrorHandlerInitConfig, } from '@plyaz/types/core';
11
+ export { ServiceRegistry } from './ServiceRegistry';
12
+ export { DbService } from '../services/DbService';
13
+ export { ApiClientService } from '../services/ApiClientService';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/init/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,IAAI,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEpE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG7E,YAAY,EACV,WAAW,EACX,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * NestJS Module for @plyaz/core
3
+ *
4
+ * Provides dependency injection integration for NestJS applications.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * // app.module.ts
9
+ * import { CoreModule } from '@plyaz/core/nestjs';
10
+ *
11
+ * @Module({
12
+ * imports: [
13
+ * CoreModule.forRoot({
14
+ * envPath: '.env',
15
+ * db: { adapter: 'sql' },
16
+ * }),
17
+ * ],
18
+ * })
19
+ * export class AppModule {}
20
+ * ```
21
+ *
22
+ * @example Async configuration
23
+ * ```typescript
24
+ * CoreModule.forRootAsync({
25
+ * imports: [ConfigModule],
26
+ * useFactory: (config: ConfigService) => ({
27
+ * db: {
28
+ * adapter: 'sql',
29
+ * sql: { connectionString: config.get('DATABASE_URL') },
30
+ * },
31
+ * }),
32
+ * inject: [ConfigService],
33
+ * })
34
+ * ```
35
+ */
36
+ import type { DynamicModule } from '@nestjs/common';
37
+ import { type CoreInitOptions } from '../CoreInitializer';
38
+ import type { CoreNestJsCoreModuleAsyncOptions } from '@plyaz/types/core';
39
+ /**
40
+ * Injection tokens for Core services
41
+ */
42
+ export declare const CORE_OPTIONS: unique symbol;
43
+ export declare const DB_SERVICE: unique symbol;
44
+ /**
45
+ * Async configuration options for CoreModule
46
+ * Uses CoreInitOptions for type safety with Core.initialize()
47
+ */
48
+ type CoreModuleAsyncOptions = CoreNestJsCoreModuleAsyncOptions;
49
+ /**
50
+ * CoreModule - NestJS DI module for @plyaz/core
51
+ */
52
+ export declare class CoreModule {
53
+ /**
54
+ * Register CoreModule with static configuration
55
+ */
56
+ static forRoot(options?: CoreInitOptions): DynamicModule;
57
+ /**
58
+ * Register CoreModule with async configuration
59
+ */
60
+ static forRootAsync(options: CoreModuleAsyncOptions): DynamicModule;
61
+ }
62
+ export {};
63
+ //# sourceMappingURL=CoreModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CoreModule.d.ts","sourceRoot":"","sources":["../../../src/init/nestjs/CoreModule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAQ,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,YAAY,eAAyB,CAAC;AACnD,eAAO,MAAM,UAAU,eAAuB,CAAC;AAE/C;;;GAGG;AACH,KAAK,sBAAsB,GAAG,gCAAgC,CAAC;AAE/D;;GAEG;AACH,qBAAa,UAAU;IACrB;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,GAAE,eAAoB,GAAG,aAAa;IA8B5D;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,sBAAsB,GAAG,aAAa;CAiCpE"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * NestJS integration exports
3
+ */
4
+ export { CoreModule, CORE_OPTIONS, DB_SERVICE } from './CoreModule';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/init/nestjs/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}