@umituz/react-native-firebase 2.6.2 → 2.6.4

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 (101) hide show
  1. package/package.json +1 -1
  2. package/src/application/auth/index.ts +2 -34
  3. package/src/application/auth/use-cases/index.ts +1 -21
  4. package/src/domains/account-deletion/domain/index.ts +1 -8
  5. package/src/domains/account-deletion/index.ts +0 -42
  6. package/src/domains/account-deletion/infrastructure/services/AccountDeletionExecutor.ts +79 -0
  7. package/src/domains/account-deletion/infrastructure/services/AccountDeletionTypes.ts +0 -1
  8. package/src/domains/account-deletion/infrastructure/services/account-deletion.service.ts +2 -14
  9. package/src/domains/auth/index.ts +3 -12
  10. package/src/domains/auth/infrastructure.ts +11 -0
  11. package/src/domains/firestore/domain/entities/Collection.ts +0 -2
  12. package/src/domains/firestore/domain/index.ts +8 -12
  13. package/src/domains/firestore/domain/value-objects/{QueryOptions.ts.bak → QueryOptions.ts} +20 -68
  14. package/src/domains/firestore/domain/value-objects/QueryOptionsFactory.ts +95 -0
  15. package/src/domains/firestore/domain/value-objects/QueryOptionsHelpers.ts +110 -0
  16. package/src/domains/firestore/domain/value-objects/WhereClause.ts +115 -0
  17. package/src/domains/firestore/domain/value-objects/WhereClauseFactory.ts +101 -0
  18. package/src/domains/firestore/domain/value-objects/WhereClauseHelpers.ts +123 -0
  19. package/src/domains/firestore/domain/value-objects/WhereClauseValidation.ts +83 -0
  20. package/src/domains/firestore/presentation/hooks/useFirestoreMutation.ts +1 -1
  21. package/src/domains/firestore/presentation/hooks/useFirestoreQuery.ts +1 -1
  22. package/src/shared/infrastructure/config/base/ServiceClientSingleton.ts +29 -0
  23. package/src/application/auth/ports/AuthPort.ts.bak +0 -164
  24. package/src/application/auth/ports/AuthPort_part_aa +0 -150
  25. package/src/application/auth/ports/AuthPort_part_ab +0 -14
  26. package/src/application/auth/use-cases/SignInUseCase.ts.bak +0 -253
  27. package/src/application/auth/use-cases/SignInUseCaseHelpers.ts +0 -0
  28. package/src/application/auth/use-cases/SignInUseCaseMain.ts +0 -0
  29. package/src/application/auth/use-cases/SignInUseCase_part_aa +0 -150
  30. package/src/application/auth/use-cases/SignInUseCase_part_ab +0 -103
  31. package/src/application/auth/use-cases/SignOutUseCase.ts.bak +0 -288
  32. package/src/application/auth/use-cases/SignOutUseCaseCleanup.ts +0 -0
  33. package/src/application/auth/use-cases/SignOutUseCaseMain.ts +0 -0
  34. package/src/application/auth/use-cases/SignOutUseCase_part_aa +0 -150
  35. package/src/application/auth/use-cases/SignOutUseCase_part_ab +0 -138
  36. package/src/domains/account-deletion/domain/services/UserValidationHelpers.ts.bak +0 -181
  37. package/src/domains/account-deletion/domain/services/UserValidationHelpers_part_aa +0 -150
  38. package/src/domains/account-deletion/domain/services/UserValidationHelpers_part_ab +0 -31
  39. package/src/domains/account-deletion/domain/services/UserValidationService.ts.bak +0 -286
  40. package/src/domains/account-deletion/domain/services/UserValidationService_part_aa +0 -150
  41. package/src/domains/account-deletion/domain/services/UserValidationService_part_ab +0 -136
  42. package/src/domains/account-deletion/infrastructure/services/AccountDeletionExecutor.ts.bak +0 -230
  43. package/src/domains/account-deletion/infrastructure/services/AccountDeletionExecutor_part_aa +0 -150
  44. package/src/domains/account-deletion/infrastructure/services/AccountDeletionExecutor_part_ab +0 -80
  45. package/src/domains/account-deletion/infrastructure/services/AccountDeletionReauthHandler.ts.bak +0 -174
  46. package/src/domains/account-deletion/infrastructure/services/AccountDeletionReauthHandler_part_aa +0 -150
  47. package/src/domains/account-deletion/infrastructure/services/AccountDeletionReauthHandler_part_ab +0 -24
  48. package/src/domains/account-deletion/infrastructure/services/AccountDeletionRepository.ts.bak +0 -266
  49. package/src/domains/account-deletion/infrastructure/services/AccountDeletionRepository_part_aa +0 -150
  50. package/src/domains/account-deletion/infrastructure/services/AccountDeletionRepository_part_ab +0 -116
  51. package/src/domains/account-deletion/infrastructure/services/reauthentication.service.ts.bak +0 -160
  52. package/src/domains/account-deletion/infrastructure/services/reauthentication.service_part_aa +0 -150
  53. package/src/domains/account-deletion/infrastructure/services/reauthentication.service_part_ab +0 -10
  54. package/src/domains/auth/infrastructure.ts.bak +0 -156
  55. package/src/domains/auth/infrastructure_part_aa +0 -150
  56. package/src/domains/auth/infrastructure_part_ab +0 -6
  57. package/src/domains/auth/presentation/hooks/GoogleOAuthHelpers.ts +0 -0
  58. package/src/domains/auth/presentation/hooks/GoogleOAuthHookService.ts.bak +0 -247
  59. package/src/domains/auth/presentation/hooks/GoogleOAuthHookService_part_aa +0 -150
  60. package/src/domains/auth/presentation/hooks/GoogleOAuthHookService_part_ab +0 -97
  61. package/src/domains/auth/presentation/hooks/GoogleOAuthService.ts +0 -0
  62. package/src/domains/firestore/domain/entities/Collection.ts.bak +0 -288
  63. package/src/domains/firestore/domain/entities/Collection_part_aa +0 -150
  64. package/src/domains/firestore/domain/entities/Collection_part_ab +0 -138
  65. package/src/domains/firestore/domain/entities/Document.ts.bak +0 -233
  66. package/src/domains/firestore/domain/entities/DocumentHelpers.ts +0 -0
  67. package/src/domains/firestore/domain/entities/DocumentMain.ts +0 -0
  68. package/src/domains/firestore/domain/entities/Document_part_aa +0 -150
  69. package/src/domains/firestore/domain/entities/Document_part_ab +0 -83
  70. package/src/domains/firestore/domain/services/QueryService.ts.bak +0 -182
  71. package/src/domains/firestore/domain/services/QueryServiceAnalysis.ts.bak +0 -169
  72. package/src/domains/firestore/domain/services/QueryServiceAnalysis_part_aa +0 -150
  73. package/src/domains/firestore/domain/services/QueryServiceAnalysis_part_ab +0 -19
  74. package/src/domains/firestore/domain/services/QueryServiceHelpers.ts.bak +0 -151
  75. package/src/domains/firestore/domain/services/QueryServiceHelpers_part_aa +0 -150
  76. package/src/domains/firestore/domain/services/QueryServiceHelpers_part_ab +0 -1
  77. package/src/domains/firestore/domain/services/QueryService_part_aa +0 -150
  78. package/src/domains/firestore/domain/services/QueryService_part_ab +0 -32
  79. package/src/domains/firestore/domain/value-objects/QueryOptionsSerialization.ts.bak +0 -207
  80. package/src/domains/firestore/domain/value-objects/QueryOptionsSerialization_part_aa +0 -150
  81. package/src/domains/firestore/domain/value-objects/QueryOptionsSerialization_part_ab +0 -57
  82. package/src/domains/firestore/domain/value-objects/QueryOptionsValidation.ts.bak +0 -182
  83. package/src/domains/firestore/domain/value-objects/QueryOptionsValidation_part_aa +0 -150
  84. package/src/domains/firestore/domain/value-objects/QueryOptionsValidation_part_ab +0 -32
  85. package/src/domains/firestore/domain/value-objects/QueryOptions_part_aa +0 -150
  86. package/src/domains/firestore/domain/value-objects/QueryOptions_part_ab +0 -41
  87. package/src/domains/firestore/domain/value-objects/WhereClause.ts.bak +0 -299
  88. package/src/domains/firestore/domain/value-objects/WhereClauseFactory.ts.bak +0 -207
  89. package/src/domains/firestore/domain/value-objects/WhereClauseFactory_part_aa +0 -150
  90. package/src/domains/firestore/domain/value-objects/WhereClauseFactory_part_ab +0 -57
  91. package/src/domains/firestore/domain/value-objects/WhereClause_part_aa +0 -150
  92. package/src/domains/firestore/domain/value-objects/WhereClause_part_ab +0 -149
  93. package/src/shared/infrastructure/base/ErrorHandler.ts.bak +0 -189
  94. package/src/shared/infrastructure/base/ErrorHandler_part_aa +0 -150
  95. package/src/shared/infrastructure/base/ErrorHandler_part_ab +0 -39
  96. package/src/shared/infrastructure/base/ServiceBase.ts.bak +0 -220
  97. package/src/shared/infrastructure/base/ServiceBase_part_aa +0 -150
  98. package/src/shared/infrastructure/base/ServiceBase_part_ab +0 -70
  99. package/src/shared/infrastructure/config/base/ServiceClientSingleton.ts.bak +0 -155
  100. package/src/shared/infrastructure/config/base/ServiceClientSingleton_part_aa +0 -150
  101. package/src/shared/infrastructure/config/base/ServiceClientSingleton_part_ab +0 -5
@@ -1,220 +0,0 @@
1
- /**
2
- * Service Base Class
3
- * Single Responsibility: Provide common service functionality
4
- *
5
- * Base class for all services to eliminate duplication.
6
- * Integrates error handling and initialization.
7
- * Reduces service boilerplate by ~50%.
8
- *
9
- * Max lines: 150 (enforced for maintainability)
10
- */
11
-
12
- import type { Result } from '../../domain/utils';
13
- import { ErrorHandler, type ErrorHandlerOptions } from './ErrorHandler';
14
- import { successResult } from '../../domain/utils';
15
- import type { ErrorInfo } from '../../domain/utils';
16
-
17
- /**
18
- * Service state
19
- */
20
- interface ServiceState {
21
- isInitialized: boolean;
22
- initializationError: string | null;
23
- }
24
-
25
- /**
26
- * Service base options
27
- */
28
- export interface ServiceBaseOptions extends ErrorHandlerOptions {
29
- /** Service name for logging and error messages */
30
- serviceName: string;
31
- /** Auto-initialize on first access */
32
- autoInitialize?: boolean;
33
- }
34
-
35
- /**
36
- * Base class for all services
37
- * Provides common initialization, error handling, and state management
38
- *
39
- * Usage:
40
- * ```typescript
41
- * class MyService extends ServiceBase {
42
- * constructor() {
43
- * super({ serviceName: 'MyService' });
44
- * }
45
- *
46
- * async myMethod() {
47
- * return this.handleAsync(async () => {
48
- * // Your logic here
49
- * return result;
50
- * }, 'my-method/failed');
51
- * }
52
- * }
53
- * ```
54
- */
55
- export abstract class ServiceBase {
56
- protected readonly errorHandler: ErrorHandler;
57
- protected readonly serviceName: string;
58
- protected readonly autoInitialize: boolean;
59
- protected state: ServiceState;
60
- private initInProgress = false;
61
-
62
- constructor(options: ServiceBaseOptions) {
63
- this.serviceName = options.serviceName;
64
- this.autoInitialize = options.autoInitialize ?? false;
65
- this.errorHandler = new ErrorHandler({
66
- ...options,
67
- defaultErrorCode: `${this.serviceName.toLowerCase()}/error`,
68
- });
69
- this.state = {
70
- isInitialized: false,
71
- initializationError: null,
72
- };
73
- }
74
-
75
- /**
76
- * Initialize the service
77
- * Override this method to provide custom initialization logic
78
- */
79
- protected async initialize(): Promise<Result<void>> {
80
- // Override in subclasses
81
- this.state.isInitialized = true;
82
- return successResult();
83
- }
84
-
85
- /**
86
- * Ensure service is initialized before operation
87
- * Automatically initializes if autoInitialize is enabled
88
- */
89
- protected async ensureInitialized(): Promise<Result<void>> {
90
- if (this.state.isInitialized) {
91
- return successResult();
92
- }
93
-
94
- if (this.state.initializationError) {
95
- return {
96
- success: false,
97
- error: {
98
- code: `${this.serviceName.toLowerCase()}/initialization-failed`,
99
- message: this.state.initializationError,
100
- },
101
- };
102
- }
103
-
104
- if (this.initInProgress) {
105
- return {
106
- success: false,
107
- error: {
108
- code: `${this.serviceName.toLowerCase()}/initialization-in-progress`,
109
- message: 'Service initialization is in progress',
110
- },
111
- };
112
- }
113
-
114
- if (!this.autoInitialize) {
115
- return {
116
- success: false,
117
- error: {
118
- code: `${this.serviceName.toLowerCase()}/not-initialized`,
119
- message: 'Service is not initialized. Call initialize() first.',
120
- },
121
- };
122
- }
123
-
124
- this.initInProgress = true;
125
- try {
126
- const result = await this.initialize();
127
- if (!result.success) {
128
- this.state.initializationError = result.error?.message || 'Initialization failed';
129
- return result;
130
- }
131
- this.state.isInitialized = true;
132
- return successResult();
133
- } finally {
134
- this.initInProgress = false;
135
- }
136
- }
137
-
138
- /**
139
- * Wrap async operation with error handling and initialization check
140
- */
141
- protected async execute<T>(
142
- operation: () => Promise<T>,
143
- errorCode?: string
144
- ): Promise<Result<T>> {
145
- const initResult = await this.ensureInitialized();
146
- if (!initResult.success) {
147
- return {
148
- success: false,
149
- error: initResult.error,
150
- };
151
- }
152
-
153
- return this.errorHandler.handleAsync(operation, errorCode);
154
- }
155
-
156
- /**
157
- * Wrap sync operation with error handling
158
- */
159
- protected executeSync<T>(operation: () => T, errorCode?: string): Result<T> {
160
- return this.errorHandler.handle(operation, errorCode);
161
- }
162
-
163
- /**
164
- * Check if service is initialized
165
- */
166
- isInitialized(): boolean {
167
- return this.state.isInitialized;
168
- }
169
-
170
- /**
171
- * Get initialization error if any
172
- */
173
- getInitializationError(): string | null {
174
- return this.state.initializationError;
175
- }
176
-
177
- /**
178
- * Reset service state
179
- * Override to add custom cleanup logic
180
- */
181
- reset(): void {
182
- this.state = {
183
- isInitialized: false,
184
- initializationError: null,
185
- };
186
- this.initInProgress = false;
187
- }
188
-
189
- /**
190
- * Get service name
191
- */
192
- getServiceName(): string {
193
- return this.serviceName;
194
- }
195
-
196
- /**
197
- * Log in development mode
198
- */
199
- protected log(message: string, ...args: unknown[]): void {
200
- if (__DEV__) {
201
- console.log(`[${this.serviceName}] ${message}`, ...args);
202
- }
203
- }
204
-
205
- /**
206
- * Log error in development mode
207
- */
208
- protected logError(message: string, error?: unknown): void {
209
- if (__DEV__) {
210
- console.error(`[${this.serviceName}] ${message}`, error);
211
- }
212
- }
213
-
214
- /**
215
- * Create a failure result
216
- */
217
- protected failure(code: string, message?: string): Result {
218
- return this.errorHandler.failureFrom(code, message);
219
- }
220
- }
@@ -1,150 +0,0 @@
1
- /**
2
- * Service Base Class
3
- * Single Responsibility: Provide common service functionality
4
- *
5
- * Base class for all services to eliminate duplication.
6
- * Integrates error handling and initialization.
7
- * Reduces service boilerplate by ~50%.
8
- *
9
- * Max lines: 150 (enforced for maintainability)
10
- */
11
-
12
- import type { Result } from '../../domain/utils';
13
- import { ErrorHandler, type ErrorHandlerOptions } from './ErrorHandler';
14
- import { successResult } from '../../domain/utils';
15
- import type { ErrorInfo } from '../../domain/utils';
16
-
17
- /**
18
- * Service state
19
- */
20
- interface ServiceState {
21
- isInitialized: boolean;
22
- initializationError: string | null;
23
- }
24
-
25
- /**
26
- * Service base options
27
- */
28
- export interface ServiceBaseOptions extends ErrorHandlerOptions {
29
- /** Service name for logging and error messages */
30
- serviceName: string;
31
- /** Auto-initialize on first access */
32
- autoInitialize?: boolean;
33
- }
34
-
35
- /**
36
- * Base class for all services
37
- * Provides common initialization, error handling, and state management
38
- *
39
- * Usage:
40
- * ```typescript
41
- * class MyService extends ServiceBase {
42
- * constructor() {
43
- * super({ serviceName: 'MyService' });
44
- * }
45
- *
46
- * async myMethod() {
47
- * return this.handleAsync(async () => {
48
- * // Your logic here
49
- * return result;
50
- * }, 'my-method/failed');
51
- * }
52
- * }
53
- * ```
54
- */
55
- export abstract class ServiceBase {
56
- protected readonly errorHandler: ErrorHandler;
57
- protected readonly serviceName: string;
58
- protected readonly autoInitialize: boolean;
59
- protected state: ServiceState;
60
- private initInProgress = false;
61
-
62
- constructor(options: ServiceBaseOptions) {
63
- this.serviceName = options.serviceName;
64
- this.autoInitialize = options.autoInitialize ?? false;
65
- this.errorHandler = new ErrorHandler({
66
- ...options,
67
- defaultErrorCode: `${this.serviceName.toLowerCase()}/error`,
68
- });
69
- this.state = {
70
- isInitialized: false,
71
- initializationError: null,
72
- };
73
- }
74
-
75
- /**
76
- * Initialize the service
77
- * Override this method to provide custom initialization logic
78
- */
79
- protected async initialize(): Promise<Result<void>> {
80
- // Override in subclasses
81
- this.state.isInitialized = true;
82
- return successResult();
83
- }
84
-
85
- /**
86
- * Ensure service is initialized before operation
87
- * Automatically initializes if autoInitialize is enabled
88
- */
89
- protected async ensureInitialized(): Promise<Result<void>> {
90
- if (this.state.isInitialized) {
91
- return successResult();
92
- }
93
-
94
- if (this.state.initializationError) {
95
- return {
96
- success: false,
97
- error: {
98
- code: `${this.serviceName.toLowerCase()}/initialization-failed`,
99
- message: this.state.initializationError,
100
- },
101
- };
102
- }
103
-
104
- if (this.initInProgress) {
105
- return {
106
- success: false,
107
- error: {
108
- code: `${this.serviceName.toLowerCase()}/initialization-in-progress`,
109
- message: 'Service initialization is in progress',
110
- },
111
- };
112
- }
113
-
114
- if (!this.autoInitialize) {
115
- return {
116
- success: false,
117
- error: {
118
- code: `${this.serviceName.toLowerCase()}/not-initialized`,
119
- message: 'Service is not initialized. Call initialize() first.',
120
- },
121
- };
122
- }
123
-
124
- this.initInProgress = true;
125
- try {
126
- const result = await this.initialize();
127
- if (!result.success) {
128
- this.state.initializationError = result.error?.message || 'Initialization failed';
129
- return result;
130
- }
131
- this.state.isInitialized = true;
132
- return successResult();
133
- } finally {
134
- this.initInProgress = false;
135
- }
136
- }
137
-
138
- /**
139
- * Wrap async operation with error handling and initialization check
140
- */
141
- protected async execute<T>(
142
- operation: () => Promise<T>,
143
- errorCode?: string
144
- ): Promise<Result<T>> {
145
- const initResult = await this.ensureInitialized();
146
- if (!initResult.success) {
147
- return {
148
- success: false,
149
- error: initResult.error,
150
- };
@@ -1,70 +0,0 @@
1
- }
2
-
3
- return this.errorHandler.handleAsync(operation, errorCode);
4
- }
5
-
6
- /**
7
- * Wrap sync operation with error handling
8
- */
9
- protected executeSync<T>(operation: () => T, errorCode?: string): Result<T> {
10
- return this.errorHandler.handle(operation, errorCode);
11
- }
12
-
13
- /**
14
- * Check if service is initialized
15
- */
16
- isInitialized(): boolean {
17
- return this.state.isInitialized;
18
- }
19
-
20
- /**
21
- * Get initialization error if any
22
- */
23
- getInitializationError(): string | null {
24
- return this.state.initializationError;
25
- }
26
-
27
- /**
28
- * Reset service state
29
- * Override to add custom cleanup logic
30
- */
31
- reset(): void {
32
- this.state = {
33
- isInitialized: false,
34
- initializationError: null,
35
- };
36
- this.initInProgress = false;
37
- }
38
-
39
- /**
40
- * Get service name
41
- */
42
- getServiceName(): string {
43
- return this.serviceName;
44
- }
45
-
46
- /**
47
- * Log in development mode
48
- */
49
- protected log(message: string, ...args: unknown[]): void {
50
- if (__DEV__) {
51
- console.log(`[${this.serviceName}] ${message}`, ...args);
52
- }
53
- }
54
-
55
- /**
56
- * Log error in development mode
57
- */
58
- protected logError(message: string, error?: unknown): void {
59
- if (__DEV__) {
60
- console.error(`[${this.serviceName}] ${message}`, error);
61
- }
62
- }
63
-
64
- /**
65
- * Create a failure result
66
- */
67
- protected failure(code: string, message?: string): Result {
68
- return this.errorHandler.failureFrom(code, message);
69
- }
70
- }
@@ -1,155 +0,0 @@
1
- /**
2
- * Service Client Singleton Base Class
3
- *
4
- * Provides a generic singleton pattern for Firebase service clients.
5
- * Eliminates code duplication across FirebaseClient, FirestoreClient, FirebaseAuthClient.
6
- *
7
- * Features:
8
- * - Generic singleton pattern
9
- * - Initialization state management
10
- * - Error handling and tracking
11
- * - Automatic cleanup
12
- *
13
- * @template TInstance - The service instance type (e.g., Firestore, Auth)
14
- * @template TConfig - The configuration type (optional)
15
- */
16
-
17
- interface ServiceClientState<TInstance> {
18
- instance: TInstance | null;
19
- initializationError: string | null;
20
- isInitialized: boolean;
21
- }
22
-
23
- interface ServiceClientOptions<TInstance, TConfig = unknown> {
24
- serviceName: string;
25
- initializer?: (config?: TConfig) => TInstance | null;
26
- autoInitializer?: () => TInstance | null;
27
- }
28
-
29
- /**
30
- * Generic service client singleton base class
31
- * Provides common initialization, state management, and error handling
32
- */
33
- export class ServiceClientSingleton<TInstance, TConfig = unknown> {
34
- protected state: ServiceClientState<TInstance>;
35
- private readonly options: ServiceClientOptions<TInstance, TConfig>;
36
- private initInProgress = false;
37
-
38
- constructor(options: ServiceClientOptions<TInstance, TConfig>) {
39
- this.options = options;
40
- this.state = {
41
- instance: null,
42
- initializationError: null,
43
- isInitialized: false,
44
- };
45
- }
46
-
47
- /**
48
- * Initialize the service with optional configuration
49
- */
50
- initialize(config?: TConfig): TInstance | null {
51
- if (this.state.isInitialized && this.state.instance) {
52
- return this.state.instance;
53
- }
54
-
55
- if (this.state.initializationError) {
56
- return null;
57
- }
58
-
59
- // Prevent concurrent initialization attempts
60
- if (this.initInProgress) {
61
- return null;
62
- }
63
-
64
- this.initInProgress = true;
65
- try {
66
- const instance = this.options.initializer ? this.options.initializer(config) : null;
67
- if (instance) {
68
- this.state.instance = instance;
69
- this.state.isInitialized = true;
70
- }
71
- return instance;
72
- } catch (error) {
73
- const errorMessage = error instanceof Error ? error.message : `Failed to initialize ${this.options.serviceName}`;
74
- this.state.initializationError = errorMessage;
75
- return null;
76
- } finally {
77
- this.initInProgress = false;
78
- }
79
- }
80
-
81
- /**
82
- * Get the service instance, auto-initializing if needed
83
- */
84
- getInstance(autoInit: boolean = false): TInstance | null {
85
- if (this.state.instance) {
86
- return this.state.instance;
87
- }
88
-
89
- if (this.state.initializationError) {
90
- return null;
91
- }
92
-
93
- // Prevent concurrent auto-initialization attempts
94
- if (this.initInProgress) {
95
- return null;
96
- }
97
-
98
- if (autoInit && this.options.autoInitializer) {
99
- this.initInProgress = true;
100
- try {
101
- const instance = this.options.autoInitializer();
102
- if (instance) {
103
- this.state.instance = instance;
104
- this.state.isInitialized = true;
105
- }
106
- return instance;
107
- } catch (error) {
108
- const errorMessage = error instanceof Error ? error.message : `Failed to initialize ${this.options.serviceName}`;
109
- this.state.initializationError = errorMessage;
110
- } finally {
111
- this.initInProgress = false;
112
- }
113
- }
114
-
115
- return null;
116
- }
117
-
118
- /**
119
- * Check if the service is initialized
120
- */
121
- isInitialized(): boolean {
122
- return this.state.isInitialized;
123
- }
124
-
125
- /**
126
- * Get the initialization error if any
127
- */
128
- getInitializationError(): string | null {
129
- return this.state.initializationError;
130
- }
131
-
132
- /**
133
- * Reset the service state
134
- */
135
- reset(): void {
136
- this.state.instance = null;
137
- this.state.initializationError = null;
138
- this.state.isInitialized = false;
139
- this.initInProgress = false;
140
- }
141
-
142
- /**
143
- * Get the current instance without initialization
144
- */
145
- protected getCurrentInstance(): TInstance | null {
146
- return this.state.instance;
147
- }
148
-
149
- /**
150
- * Set initialization error
151
- */
152
- protected setError(error: string): void {
153
- this.state.initializationError = error;
154
- }
155
- }