Releases: thomverbeek/VIPER
0.7.0
This release drastically alters VIPER from a unidirectional to bidirectional implementation:
- It rearranges VIPER components to more closely model the traditional definition. View <-> Presenter <-> Interactor
- Similarly, Presenters now talk to Routers to make decisions regarding navigation.
- The role of PresenterModel and ViewModel is clearer - they provide state information to their respective counterparts
- The mechanics of message passing are simplified - ViewModel and PresenterModel are only provided upon initialisation as dependencies. Consumers can use publishers or delegation to subscribe to updates.
AnyObject
requirement forces all VIPER objects to be implemented as classes. This allows for some Objective-C runtime magic to abstract message passing mechanics.Combine
is removed as a dependency, which lowers the minimum OS requirements. Message passing is handled under the hood via simple closures. The need for subscriptions is removed in favour of associated objects and function variable scopes.- VIPER components don't need to declare
Combine
publishers for message passing. - Restored weakly-held view property on Routers.
v0.6.1
This build simplifies the Combine sink-store mechanic to set up subscriptions for inter-component callbacks.
VIPER + Combine
This release upgrades VIPER with Combine to separate components.
v0.5.0
This release renames Resolver
to Builder
in line with VIPER parlance in the industry. It also corrects a bug in the command line generator.
v0.4.1
This release adds an optional parameter to the command line tool to create a directory for the generated VIPER module. This can be set to false when generating files for use in standalone Swift packages.
v0.4.0
This release updates the naming convention for VIPER components. VIPERBuilder
is renamed to VIPERModule
; Dependencies
is renamed to Entities
(to more closely align with VIPER terminology); Modules
is renamed to Resolver
.
This release also includes an executable command line tool called viper-tools
, allowing you to generate VIPER template files.
v0.3.0
This release removes trivial code, and switches the Presenter and Interactor around. This allows the Interactor to talk to the Router, reducing communication obstacles.
v0.2.0
This release adds the concept of VIPERModule, an abstraction for assembled VIPER components. Use this to allow VIPER modules to cross framework boundaries without exposing their underlying implementation.
Adds the concept of Modules to Routers to vend VIPER modules; removes their awareness of Services. Unifies the concept of Dependencies and Services into Dependencies.
v0.1.0
This first release introduces the core VIPER components required to assemble a VIPER module.