Sample/Pluginized/TicTacToe/TicTacToeCore/NeedleGenerated.swift (170 lines of code) (raw):

// // Copyright (c) 2018. Uber Technologies // // 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 NeedleFoundation import RxSwift import ScoreSheet import TicTacToeIntegrations import UIKit // swiftlint:disable unused_declaration private let needleDependenciesHash : String? = "4b585865bab35437b0cbc60e9d74b1b1" // MARK: - Traversal Helpers private func parent1(_ component: NeedleFoundation.Scope) -> NeedleFoundation.Scope { return component.parent } private func parent2(_ component: NeedleFoundation.Scope) -> NeedleFoundation.Scope { return component.parent.parent } private func parent3(_ component: NeedleFoundation.Scope) -> NeedleFoundation.Scope { return component.parent.parent.parent } // MARK: - Providers #if !NEEDLE_DYNAMIC private class LoggedOutDependencyacada53ea78d270efa2fProvider: LoggedOutDependency { var mutablePlayersStream: MutablePlayersStream { return rootComponent.mutablePlayersStream } private let rootComponent: RootComponent init(rootComponent: RootComponent) { self.rootComponent = rootComponent } } /// ^->RootComponent->LoggedOutComponent private func factory1434ff4463106e5c4f1bb3a8f24c1d289f2c0f2e(_ component: NeedleFoundation.Scope) -> AnyObject { return LoggedOutDependencyacada53ea78d270efa2fProvider(rootComponent: parent1(component) as! RootComponent) } private class ScoreSheetDependencyea879b8e06763171478bProvider: ScoreSheetDependency { var scoreStream: ScoreStream { return (loggedInComponent.nonCoreComponent as! LoggedInNonCoreComponent).scoreStream } private let loggedInComponent: LoggedInComponent init(loggedInComponent: LoggedInComponent) { self.loggedInComponent = loggedInComponent } } /// ^->RootComponent->LoggedInComponent->GameComponent->GameNonCoreComponent->ScoreSheetComponent private func factoryb11b7d1dec7e3c9b3dca49b41e44e0ed6a6f8eaf(_ component: NeedleFoundation.Scope) -> AnyObject { return ScoreSheetDependencyea879b8e06763171478bProvider(loggedInComponent: parent3(component) as! LoggedInComponent) } private class ScoreSheetDependency6fb80fa6e1ee31d9ba11Provider: ScoreSheetDependency { var scoreStream: ScoreStream { return loggedInNonCoreComponent.scoreStream } private let loggedInNonCoreComponent: LoggedInNonCoreComponent init(loggedInNonCoreComponent: LoggedInNonCoreComponent) { self.loggedInNonCoreComponent = loggedInNonCoreComponent } } /// ^->RootComponent->LoggedInComponent->LoggedInNonCoreComponent->ScoreSheetComponent private func factory3306c50e89e2421d0b0c65d055996113f3c13de1(_ component: NeedleFoundation.Scope) -> AnyObject { return ScoreSheetDependency6fb80fa6e1ee31d9ba11Provider(loggedInNonCoreComponent: parent1(component) as! LoggedInNonCoreComponent) } private class GameDependency1ab5926a977f706d3195Provider: GameDependency { var mutableScoreStream: MutableScoreStream { return loggedInComponent.pluginExtension.mutableScoreStream } var playersStream: PlayersStream { return rootComponent.playersStream } private let loggedInComponent: LoggedInComponent private let rootComponent: RootComponent init(loggedInComponent: LoggedInComponent, rootComponent: RootComponent) { self.loggedInComponent = loggedInComponent self.rootComponent = rootComponent } } /// ^->RootComponent->LoggedInComponent->GameComponent private func factorycf9c02c4def4e3d508816cd03d3cf415b70dfb0e(_ component: NeedleFoundation.Scope) -> AnyObject { return GameDependency1ab5926a977f706d3195Provider(loggedInComponent: parent1(component) as! LoggedInComponent, rootComponent: parent2(component) as! RootComponent) } /// GameComponent plugin extension private class GamePluginExtensionProvider: GamePluginExtension { var scoreSheetBuilder: ScoreSheetBuilder { return gameNonCoreComponent.scoreSheetBuilder } private unowned let gameNonCoreComponent: GameNonCoreComponent init(component: NeedleFoundation.Scope) { let gameComponent = component as! GameComponent gameNonCoreComponent = gameComponent.nonCoreComponent as! GameNonCoreComponent } } /// LoggedInComponent plugin extension private class LoggedInPluginExtensionProvider: LoggedInPluginExtension { var scoreSheetBuilder: ScoreSheetBuilder { return loggedInNonCoreComponent.scoreSheetBuilder } var mutableScoreStream: MutableScoreStream { return loggedInNonCoreComponent.mutableScoreStream } private unowned let loggedInNonCoreComponent: LoggedInNonCoreComponent init(component: NeedleFoundation.Scope) { let loggedInComponent = component as! LoggedInComponent loggedInNonCoreComponent = loggedInComponent.nonCoreComponent as! LoggedInNonCoreComponent } } #else extension LoggedOutComponent: Registration { public func registerItems() { keyPathToName[\LoggedOutDependency.mutablePlayersStream] = "mutablePlayersStream-MutablePlayersStream" } } extension RootComponent: Registration { public func registerItems() { } } extension ScoreSheetComponent: Registration { public func registerItems() { keyPathToName[\ScoreSheetDependency.scoreStream] = "scoreStream-ScoreStream" } } extension GameNonCoreComponent: Registration { public func registerItems() { localTable["scoreSheetBuilder-ScoreSheetBuilder"] = { self.scoreSheetBuilder as Any } } } extension LoggedInNonCoreComponent: Registration { public func registerItems() { localTable["scoreSheetBuilder-ScoreSheetBuilder"] = { self.scoreSheetBuilder as Any } localTable["mutableScoreStream-MutableScoreStream"] = { self.mutableScoreStream as Any } localTable["scoreStream-ScoreStream"] = { self.scoreStream as Any } } } extension GameComponent: Registration { public func registerItems() { keyPathToName[\GameDependency.mutableScoreStream] = "mutableScoreStream-MutableScoreStream" keyPathToName[\GameDependency.playersStream] = "playersStream-PlayersStream" } } extension LoggedInComponent: Registration { public func registerItems() { } } /// GameComponent plugin extension extension GameComponent: ExtensionRegistration { public func registerExtensionItems() { extensionToName[\GamePluginExtension.scoreSheetBuilder] = "scoreSheetBuilder-ScoreSheetBuilder" } } /// LoggedInComponent plugin extension extension LoggedInComponent: ExtensionRegistration { public func registerExtensionItems() { extensionToName[\LoggedInPluginExtension.scoreSheetBuilder] = "scoreSheetBuilder-ScoreSheetBuilder" extensionToName[\LoggedInPluginExtension.mutableScoreStream] = "mutableScoreStream-MutableScoreStream" } } #endif private func factoryEmptyDependencyProvider(_ component: NeedleFoundation.Scope) -> AnyObject { return EmptyDependencyProvider(component: component) } // MARK: - Registration private func registerProviderFactory(_ componentPath: String, _ factory: @escaping (NeedleFoundation.Scope) -> AnyObject) { __DependencyProviderRegistry.instance.registerDependencyProviderFactory(for: componentPath, factory) } #if !NEEDLE_DYNAMIC @inline(never) private func register1() { registerProviderFactory("^->RootComponent->LoggedOutComponent", factory1434ff4463106e5c4f1bb3a8f24c1d289f2c0f2e) registerProviderFactory("^->RootComponent", factoryEmptyDependencyProvider) registerProviderFactory("^->RootComponent->LoggedInComponent->GameComponent->GameNonCoreComponent->ScoreSheetComponent", factoryb11b7d1dec7e3c9b3dca49b41e44e0ed6a6f8eaf) registerProviderFactory("^->RootComponent->LoggedInComponent->LoggedInNonCoreComponent->ScoreSheetComponent", factory3306c50e89e2421d0b0c65d055996113f3c13de1) registerProviderFactory("^->RootComponent->LoggedInComponent->GameComponent->GameNonCoreComponent", factoryEmptyDependencyProvider) registerProviderFactory("^->RootComponent->LoggedInComponent->LoggedInNonCoreComponent", factoryEmptyDependencyProvider) registerProviderFactory("^->RootComponent->LoggedInComponent->GameComponent", factorycf9c02c4def4e3d508816cd03d3cf415b70dfb0e) registerProviderFactory("^->RootComponent->LoggedInComponent", factoryEmptyDependencyProvider) __PluginExtensionProviderRegistry.instance.registerPluginExtensionProviderFactory(for: "GameComponent") { component in return GamePluginExtensionProvider(component: component) } __PluginExtensionProviderRegistry.instance.registerPluginExtensionProviderFactory(for: "LoggedInComponent") { component in return LoggedInPluginExtensionProvider(component: component) } } #endif public func registerProviderFactories() { #if !NEEDLE_DYNAMIC register1() #endif }