1 2 /** 3 `BaseModule` is just a stub class that fulfils `AnyModule` protocol requirement of public default initializer, 4 but doesn't implement that protocol explicitly, though — it would have to provide a definition which would require 5 other modules to use `override` keyword in the function returning the definition. 6 */ 7 open class BaseModule { 8 public private(set) weak var appContext: AppContext? 9 10 required public init(appContext: AppContext) { 11 self.appContext = appContext 12 } 13 } 14 15 /** 16 An alias for `AnyModule` extended by the `BaseModule` class that provides public default initializer. 17 */ 18 public typealias Module = AnyModule & BaseModule 19