Explorar o código

[v11] Remove unused FIRDependency class (#13053)

Paul Beusterien hai 1 ano
pai
achega
f5309bf45b

+ 0 - 7
Crashlytics/Crashlytics/FIRCrashlytics.m

@@ -227,12 +227,6 @@ NSString *const FIRCLSGoogleTransportMappingID = @"1206";
 }
 
 + (NSArray<FIRComponent *> *)componentsToRegister {
-  FIRDependency *analyticsDep =
-      [FIRDependency dependencyWithProtocol:@protocol(FIRAnalyticsInterop)];
-
-  FIRDependency *sessionsDep =
-      [FIRDependency dependencyWithProtocol:@protocol(FIRSessionsProvider)];
-
   FIRComponentCreationBlock creationBlock =
       ^id _Nullable(FIRComponentContainer *container, BOOL *isCacheable) {
     if (!container.app.isDefaultApp) {
@@ -259,7 +253,6 @@ NSString *const FIRCLSGoogleTransportMappingID = @"1206";
   FIRComponent *component =
       [FIRComponent componentWithProtocol:@protocol(FIRCrashlyticsInstanceProvider)
                       instantiationTiming:FIRInstantiationTimingEagerInDefaultApp
-                             dependencies:@[ analyticsDep, sessionsDep ]
                             creationBlock:creationBlock];
   return @[ component ];
 }

+ 0 - 3
FirebaseABTesting/Sources/FIRExperimentController.m

@@ -128,8 +128,6 @@ NSArray *ABTExperimentsToClearFromPayloads(
 }
 
 + (nonnull NSArray<FIRComponent *> *)componentsToRegister {
-  FIRDependency *analyticsDep = [FIRDependency dependencyWithProtocol:@protocol(FIRAnalyticsInterop)
-                                                           isRequired:NO];
   FIRComponentCreationBlock creationBlock =
       ^id _Nullable(FIRComponentContainer *container, BOOL *isCacheable) {
     // Ensure it's cached so it returns the same instance every time ABTesting is called.
@@ -139,7 +137,6 @@ NSArray *ABTExperimentsToClearFromPayloads(
   };
   FIRComponent *abtProvider = [FIRComponent componentWithProtocol:@protocol(FIRABTInstanceProvider)
                                               instantiationTiming:FIRInstantiationTimingLazy
-                                                     dependencies:@[ analyticsDep ]
                                                     creationBlock:creationBlock];
 
   return @[ abtProvider ];

+ 0 - 1
FirebaseAppCheck/Sources/Core/FIRAppCheckComponent.m

@@ -46,7 +46,6 @@ NS_ASSUME_NONNULL_BEGIN
   FIRComponent *appCheckProvider =
       [FIRComponent componentWithProtocol:@protocol(FIRAppCheckInterop)
                       instantiationTiming:FIRInstantiationTimingAlwaysEager
-                             dependencies:@[]
                             creationBlock:creationBlock];
   return @[ appCheckProvider ];
 }

+ 0 - 1
FirebaseAppDistribution/Sources/FIRAppDistribution.m

@@ -101,7 +101,6 @@ NSString *const kFIRFADSignInStateKey = @"FIRFADSignInState";
   FIRComponent *component =
       [FIRComponent componentWithProtocol:@protocol(FIRAppDistributionInstanceProvider)
                       instantiationTiming:FIRInstantiationTimingEagerInDefaultApp
-                             dependencies:@[]
                             creationBlock:creationBlock];
   return @[ component ];
 }

+ 0 - 2
FirebaseAuth/Sources/Swift/Auth/AuthComponent.swift

@@ -49,10 +49,8 @@ class AuthComponent: NSObject, Library, ComponentLifecycleMaintainer {
       isCacheable.pointee = true
       return Auth(app: app)
     }
-    let appCheckInterop = Dependency(with: AppCheckInterop.self, isRequired: false)
     let authInterop = Component(AuthInterop.self,
                                 instantiationTiming: .alwaysEager,
-                                dependencies: [appCheckInterop],
                                 creationBlock: authCreationBlock)
     return [authInterop]
   }

+ 1 - 8
FirebaseCore/Extension/FIRComponent.h

@@ -32,8 +32,6 @@ typedef _Nullable id (^FIRComponentCreationBlock)(FIRComponentContainer *contain
                                                   BOOL *isCacheable)
     NS_SWIFT_NAME(ComponentCreationBlock);
 
-@class FIRDependency;
-
 /// Describes the timing of instantiation. Note: new components should default to lazy unless there
 /// is a strong reason to be eager.
 typedef NS_ENUM(NSInteger, FIRInstantiationTiming) {
@@ -52,9 +50,6 @@ NS_SWIFT_NAME(Component)
 /// The timing of instantiation.
 @property(nonatomic, readonly) FIRInstantiationTiming instantiationTiming;
 
-/// An array of dependencies for the component.
-@property(nonatomic, copy, readonly) NSArray<FIRDependency *> *dependencies;
-
 /// A block to instantiate an instance of the component with the appropriate dependencies.
 @property(nonatomic, copy, readonly) FIRComponentCreationBlock creationBlock;
 
@@ -72,14 +67,12 @@ NS_SWIFT_NAME(init(_:creationBlock:));
 /// @param protocol - The protocol describing functionality provided by the component.
 /// @param instantiationTiming - When the component should be initialized. Use .lazy unless there's
 ///                              a good reason to be instantiated earlier.
-/// @param dependencies - Any dependencies the `implementingClass` has, optional or required.
 /// @param creationBlock - A block to instantiate the component with a container, and if
 /// @return A component that can be registered with the component container.
 + (instancetype)componentWithProtocol:(Protocol *)protocol
                   instantiationTiming:(FIRInstantiationTiming)instantiationTiming
-                         dependencies:(NSArray<FIRDependency *> *)dependencies
                         creationBlock:(FIRComponentCreationBlock)creationBlock
-NS_SWIFT_NAME(init(_:instantiationTiming:dependencies:creationBlock:));
+NS_SWIFT_NAME(init(_:instantiationTiming:creationBlock:));
 
 // clang-format on
 

+ 0 - 45
FirebaseCore/Extension/FIRDependency.h

@@ -1,45 +0,0 @@
-/*
- * Copyright 2018 Google
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-/// A dependency on a specific protocol's functionality.
-NS_SWIFT_NAME(Dependency)
-@interface FIRDependency : NSObject
-
-/// The protocol describing functionality being depended on.
-@property(nonatomic, strong, readonly) Protocol *protocol;
-
-/// A flag to specify if the dependency is required or not.
-@property(nonatomic, readonly) BOOL isRequired;
-
-/// Initializes a dependency that is required. Calls `init(protocol:isRequired:)` with true for
-/// the required parameter.
-/// Creates a required dependency on the specified protocol's functionality.
-+ (instancetype)dependencyWithProtocol:(Protocol *)protocol;
-
-/// Creates a dependency on the specified protocol's functionality and specify if it's required for
-/// the class's functionality.
-+ (instancetype)dependencyWithProtocol:(Protocol *)protocol isRequired:(BOOL)required;
-
-/// Use `init(withProtocol:isRequired:)` instead.
-- (instancetype)init NS_UNAVAILABLE;
-
-@end
-
-NS_ASSUME_NONNULL_END

+ 0 - 1
FirebaseCore/Extension/FirebaseCoreInternal.h

@@ -18,7 +18,6 @@
 #import "FIRComponent.h"
 #import "FIRComponentContainer.h"
 #import "FIRComponentType.h"
-#import "FIRDependency.h"
 #import "FIRHeartbeatLogger.h"
 #import "FIRLibrary.h"
 #import "FIRLogger.h"

+ 0 - 7
FirebaseCore/Sources/FIRComponent.m

@@ -17,13 +17,11 @@
 #import "FirebaseCore/Extension/FIRComponent.h"
 
 #import "FirebaseCore/Extension/FIRComponentContainer.h"
-#import "FirebaseCore/Extension/FIRDependency.h"
 
 @interface FIRComponent ()
 
 - (instancetype)initWithProtocol:(Protocol *)protocol
              instantiationTiming:(FIRInstantiationTiming)instantiationTiming
-                    dependencies:(NSArray<FIRDependency *> *)dependencies
                    creationBlock:(FIRComponentCreationBlock)creationBlock;
 
 @end
@@ -34,29 +32,24 @@
                         creationBlock:(FIRComponentCreationBlock)creationBlock {
   return [[FIRComponent alloc] initWithProtocol:protocol
                             instantiationTiming:FIRInstantiationTimingLazy
-                                   dependencies:@[]
                                   creationBlock:creationBlock];
 }
 
 + (instancetype)componentWithProtocol:(Protocol *)protocol
                   instantiationTiming:(FIRInstantiationTiming)instantiationTiming
-                         dependencies:(NSArray<FIRDependency *> *)dependencies
                         creationBlock:(FIRComponentCreationBlock)creationBlock {
   return [[FIRComponent alloc] initWithProtocol:protocol
                             instantiationTiming:instantiationTiming
-                                   dependencies:dependencies
                                   creationBlock:creationBlock];
 }
 
 - (instancetype)initWithProtocol:(Protocol *)protocol
              instantiationTiming:(FIRInstantiationTiming)instantiationTiming
-                    dependencies:(NSArray<FIRDependency *> *)dependencies
                    creationBlock:(FIRComponentCreationBlock)creationBlock {
   self = [super init];
   if (self) {
     _protocol = protocol;
     _instantiationTiming = instantiationTiming;
-    _dependencies = [dependencies copy];
     _creationBlock = creationBlock;
   }
   return self;

+ 0 - 44
FirebaseCore/Sources/FIRDependency.m

@@ -1,44 +0,0 @@
-/*
- * Copyright 2018 Google
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#import "FirebaseCore/Extension/FIRDependency.h"
-
-@interface FIRDependency ()
-
-- (instancetype)initWithProtocol:(Protocol *)protocol isRequired:(BOOL)required;
-
-@end
-
-@implementation FIRDependency
-
-+ (instancetype)dependencyWithProtocol:(Protocol *)protocol {
-  return [[self alloc] initWithProtocol:protocol isRequired:YES];
-}
-
-+ (instancetype)dependencyWithProtocol:(Protocol *)protocol isRequired:(BOOL)required {
-  return [[self alloc] initWithProtocol:protocol isRequired:required];
-}
-
-- (instancetype)initWithProtocol:(Protocol *)protocol isRequired:(BOOL)required {
-  self = [super init];
-  if (self) {
-    _protocol = protocol;
-    _isRequired = required;
-  }
-  return self;
-}
-
-@end

+ 0 - 3
FirebaseCore/Tests/Unit/FIRTestComponents.m

@@ -78,7 +78,6 @@
   FIRComponent *testComponent = [FIRComponent
       componentWithProtocol:@protocol(FIRTestProtocolEagerCached)
         instantiationTiming:FIRInstantiationTimingAlwaysEager
-               dependencies:@[]
               creationBlock:^id _Nullable(FIRComponentContainer *_Nonnull container,
                                           BOOL *_Nonnull isCacheable) {
                 FIRTestClassEagerCached *instance = [[FIRTestClassEagerCached alloc] init];
@@ -144,11 +143,9 @@
 }
 
 + (nonnull NSArray<FIRComponent *> *)componentsToRegister {
-  FIRDependency *dep = [FIRDependency dependencyWithProtocol:@protocol(FIRTestProtocolCached)];
   FIRComponent *testComponent = [FIRComponent
       componentWithProtocol:@protocol(FIRTestProtocolCachedWithDep)
         instantiationTiming:FIRInstantiationTimingLazy
-               dependencies:@[ dep ]
               creationBlock:^id _Nullable(FIRComponentContainer *_Nonnull container,
                                           BOOL *_Nonnull isCacheable) {
                 // Fetch from the container in the instantiation block.

+ 0 - 4
FirebaseDatabase/Sources/Api/FIRDatabaseComponent.m

@@ -60,9 +60,6 @@ typedef NSMutableDictionary<NSString *, FIRDatabase *> FIRDatabaseDictionary;
 #pragma mark - FIRComponentRegistrant
 
 + (NSArray<FIRComponent *> *)componentsToRegister {
-    FIRDependency *authDep =
-        [FIRDependency dependencyWithProtocol:@protocol(FIRAuthInterop)
-                                   isRequired:NO];
     FIRComponentCreationBlock creationBlock =
         ^id _Nullable(FIRComponentContainer *container, BOOL *isCacheable) {
         *isCacheable = YES;
@@ -71,7 +68,6 @@ typedef NSMutableDictionary<NSString *, FIRDatabase *> FIRDatabaseDictionary;
     FIRComponent *databaseProvider =
         [FIRComponent componentWithProtocol:@protocol(FIRDatabaseProvider)
                         instantiationTiming:FIRInstantiationTimingLazy
-                               dependencies:@[ authDep ]
                               creationBlock:creationBlock];
     return @[ databaseProvider ];
 }

+ 0 - 4
FirebaseDynamicLinks/Sources/FIRDynamicLinks.m

@@ -110,9 +110,6 @@ static const NSInteger FIRErrorCodeDurableDeepLinkFailed = -119;
 }
 
 + (nonnull NSArray<FIRComponent *> *)componentsToRegister {
-  // Product requirement is enforced by CocoaPod. Not technical requirement for analytics.
-  FIRDependency *analyticsDep = [FIRDependency dependencyWithProtocol:@protocol(FIRAnalyticsInterop)
-                                                           isRequired:NO];
   FIRComponentCreationBlock creationBlock =
       ^id _Nullable(FIRComponentContainer *container, BOOL *isCacheable) {
     // Don't return an instance when it's not the default app.
@@ -138,7 +135,6 @@ static const NSInteger FIRErrorCodeDurableDeepLinkFailed = -119;
   FIRComponent *dynamicLinksProvider =
       [FIRComponent componentWithProtocol:@protocol(FIRDynamicLinksInstanceProvider)
                       instantiationTiming:FIRInstantiationTimingEagerInDefaultApp
-                             dependencies:@[ analyticsDep ]
                             creationBlock:creationBlock];
 
   return @[ dynamicLinksProvider ];

+ 0 - 3
FirebaseInAppMessaging/Sources/FIRInAppMessaging.m

@@ -49,8 +49,6 @@ static BOOL _autoBootstrapOnFIRAppInit = YES;
 }
 
 + (nonnull NSArray<FIRComponent *> *)componentsToRegister {
-  FIRDependency *analyticsDep = [FIRDependency dependencyWithProtocol:@protocol(FIRAnalyticsInterop)
-                                                           isRequired:YES];
   FIRComponentCreationBlock creationBlock =
       ^id _Nullable(FIRComponentContainer *container, BOOL *isCacheable) {
     // Ensure it's cached so it returns the same instance every time fiam is called.
@@ -62,7 +60,6 @@ static BOOL _autoBootstrapOnFIRAppInit = YES;
   FIRComponent *fiamProvider =
       [FIRComponent componentWithProtocol:@protocol(FIRInAppMessagingInstanceProvider)
                       instantiationTiming:FIRInstantiationTimingLazy
-                             dependencies:@[ analyticsDep ]
                             creationBlock:creationBlock];
 
   return @[ fiamProvider ];

+ 0 - 1
FirebaseInstallations/Source/Library/FIRInstallations.m

@@ -66,7 +66,6 @@ static const NSUInteger kExpectedAPIKeyLength = 39;
   FIRComponent *installationsProvider =
       [FIRComponent componentWithProtocol:@protocol(FIRInstallationsInstanceProvider)
                       instantiationTiming:FIRInstantiationTimingAlwaysEager
-                             dependencies:@[]
                             creationBlock:creationBlock];
   return @[ installationsProvider ];
 }

+ 0 - 3
FirebaseMessaging/Sources/FIRMessaging.m

@@ -168,8 +168,6 @@ BOOL FIRMessagingIsContextManagerMessage(NSDictionary *message) {
 }
 
 + (nonnull NSArray<FIRComponent *> *)componentsToRegister {
-  FIRDependency *analyticsDep = [FIRDependency dependencyWithProtocol:@protocol(FIRAnalyticsInterop)
-                                                           isRequired:NO];
   FIRComponentCreationBlock creationBlock =
       ^id _Nullable(FIRComponentContainer *container, BOOL *isCacheable) {
     if (!container.app.isDefaultApp) {
@@ -198,7 +196,6 @@ BOOL FIRMessagingIsContextManagerMessage(NSDictionary *message) {
   FIRComponent *messagingProvider =
       [FIRComponent componentWithProtocol:@protocol(FIRMessagingInterop)
                       instantiationTiming:FIRInstantiationTimingEagerInDefaultApp
-                             dependencies:@[ analyticsDep ]
                             creationBlock:creationBlock];
 
   return @[ messagingProvider ];

+ 0 - 4
FirebasePerformance/Sources/FPRClient.m

@@ -59,9 +59,6 @@
 #pragma mark - Component registration system
 
 + (nonnull NSArray<FIRComponent *> *)componentsToRegister {
-  FIRDependency *sessionsDep =
-      [FIRDependency dependencyWithProtocol:@protocol(FIRSessionsProvider)];
-
   FIRComponentCreationBlock creationBlock =
       ^id _Nullable(FIRComponentContainer *container, BOOL *isCacheable) {
     if (!container.app.isDefaultApp) {
@@ -108,7 +105,6 @@
   FIRComponent *component =
       [FIRComponent componentWithProtocol:@protocol(FIRPerformanceProvider)
                       instantiationTiming:FIRInstantiationTimingEagerInDefaultApp
-                             dependencies:@[ sessionsDep ]
                             creationBlock:creationBlock];
 
   return @[ component ];

+ 0 - 4
FirebaseRemoteConfig/Sources/FIRRemoteConfigComponent.m

@@ -118,12 +118,9 @@ static NSMutableDictionary<NSString *, FIRRemoteConfigComponent *> *_componentIn
 #pragma mark - Interoperability
 
 + (NSArray<FIRComponent *> *)componentsToRegister {
-  FIRDependency *analyticsDep = [FIRDependency dependencyWithProtocol:@protocol(FIRAnalyticsInterop)
-                                                           isRequired:NO];
   FIRComponent *rcProvider = [FIRComponent
       componentWithProtocol:@protocol(FIRRemoteConfigProvider)
         instantiationTiming:FIRInstantiationTimingAlwaysEager
-               dependencies:@[ analyticsDep ]
               creationBlock:^id _Nullable(FIRComponentContainer *container, BOOL *isCacheable) {
                 // Cache the component so instances of Remote Config are cached.
                 *isCacheable = YES;
@@ -135,7 +132,6 @@ static NSMutableDictionary<NSString *, FIRRemoteConfigComponent *> *_componentIn
   FIRComponent *rcInterop = [FIRComponent
       componentWithProtocol:@protocol(FIRRemoteConfigInterop)
         instantiationTiming:FIRInstantiationTimingAlwaysEager
-               dependencies:@[]
               creationBlock:^id _Nullable(FIRComponentContainer *container, BOOL *isCacheable) {
                 // Cache the component so instances of Remote Config are cached.
                 *isCacheable = YES;

+ 1 - 2
FirebaseSessions/Sources/FirebaseSessions.swift

@@ -272,8 +272,7 @@ private enum GoogleDataTransportConfig {
 
   static func componentsToRegister() -> [Component] {
     return [Component(SessionsProvider.self,
-                      instantiationTiming: .alwaysEager,
-                      dependencies: []) { container, isCacheable in
+                      instantiationTiming: .alwaysEager) { container, isCacheable in
         // Sessions SDK only works for the default app
         guard let app = container.app, app.isDefaultApp else { return nil }
         isCacheable.pointee = true

+ 0 - 4
Firestore/Source/API/FSTFirestoreComponent.mm

@@ -27,7 +27,6 @@
 #import "FirebaseCore/Extension/FIRComponent.h"
 #import "FirebaseCore/Extension/FIRComponentContainer.h"
 #import "FirebaseCore/Extension/FIRComponentType.h"
-#import "FirebaseCore/Extension/FIRDependency.h"
 #import "FirebaseCore/Extension/FIRLibrary.h"
 #import "FirebaseCore/Extension/FIROptionsInternal.h"
 #import "Firestore/Source/API/FIRFirestore+Internal.h"
@@ -160,12 +159,9 @@ NS_ASSUME_NONNULL_BEGIN
 #pragma mark - Interoperability
 
 + (NSArray<FIRComponent *> *)componentsToRegister {
-  FIRDependency *auth = [FIRDependency dependencyWithProtocol:@protocol(FIRAuthInterop)
-                                                   isRequired:NO];
   FIRComponent *firestoreProvider = [FIRComponent
       componentWithProtocol:@protocol(FSTFirestoreMultiDBProvider)
         instantiationTiming:FIRInstantiationTimingLazy
-               dependencies:@[ auth ]
               creationBlock:^id _Nullable(FIRComponentContainer *container, BOOL *isCacheable) {
                 FSTFirestoreComponent *multiDBComponent =
                     [[FSTFirestoreComponent alloc] initWithApp:container.app];

+ 0 - 17
Interop/FirebaseComponentSystem.md

@@ -64,9 +64,6 @@ For the rest of the documentation, it's important to be familiar with the variou
 provided by Core. Since the frameworks are written in Objective-C, we'll use the Objective-C names.
 The Swift names are identical but dropping the `FIR` prefix.
 
-- `@class FIRDependency`
-  - A dependency on a specific protocol's functionality. Created with the factory method
-      `[FIRDependency dependencyWithProtocol:isRequired:]`
 - `@class FIRComponent`
   - A component to register with Core to be consumed by other frameworks. It declares the protocol
     offered, dependencies, and a block for Core to instantiate it.
@@ -388,12 +385,6 @@ After adding the dependency on `FIRAuthInterop`. See comments with "ADDED:".
       return [[FIRFunctions alloc] initWithApp:container.app auth:auth];
     };
 
-  // ADDED: Define a dependency on the `FIRAuthInteroperable` protocol. Declare if the
-  //        dependency is required or not.
-  FIRDependency *auth =
-      [FIRDependency dependencyWithProtocol:@protocol(FIRAuthInteroperable)
-                                 isRequired:NO];
-
   // ADDED: A longer constructor is used to instantiate the `FIRComponent`; this time
   //        it includes instantiation timing and an array of dependencies. The timing
   //        allows components to be initialized upon configure time or lazily, when
@@ -402,7 +393,6 @@ After adding the dependency on `FIRAuthInterop`. See comments with "ADDED:".
   FIRComponent *internalProvider =
       [FIRComponent componentWithProtocol:@protocol(FIRFunctionsInstanceProvider)
                       instantiationTiming:FIRInstantiationTimingLazy
-                             dependencies:@[ auth ]
                             creationBlock:creationBlock];
 
   return @[ internalProvider ];
@@ -449,11 +439,6 @@ An abbreviated code sample:
       return FIR_COMPONENT(FIRAuthCombinedInterop, container);
     };
 
-  // Declare a self dependency on the combined interop component.
-  FIRDependency *auth =
-      [FIRDependency dependencyWithProtocol:@protocol(FIRAuthCombinedInterop)
-                                 isRequired:YES];
-
   // Declare the three components provided.
   FIRComponent *authComponent =
       [FIRComponent componentWithProtocol:@protocol(FIRAuthCombinedInterop)
@@ -465,13 +450,11 @@ An abbreviated code sample:
   FIRComponent *userComponent =
       [FIRComponent componentWithProtocol:@protocol(FIRAuthUserInterop)
                       instantiationTiming:FIRInstantiationTimingLazy
-                             dependencies:@[ auth ]
                             creationBlock:combinedBlock];
 
   FIRComponent *signInComponent =
       [FIRComponent componentWithProtocol:@protocol(FIRAuthSignInInterop)
                       instantiationTiming:FIRInstantiationTimingLazy
-                             dependencies:@[ auth ]
                             creationBlock:combinedBlock];
 
   return @[ authComponent, userComponent, signInComponent ];