4.0.0 (2017-07-18)
Bug Fixes
- build: Fixed deployment of latest master as commit (#18) (5d0ecf9)
- build: Get tests running for each project (c4a1054)
- build: Limit concurrency for lerna bootstrap (7e7a7d8)
- Devtools: Removed SHOULD_INSTRUMENT token used to eagerly inject providers (#57) (b90df34)
- Effects: Start child effects after running root effects (#43) (931adb1)
- Effects: Use Actions generic type for the return of the ofType operator (d176a11)
- Example: Fix Book State interface parent (#90) (6982952)
- example-app: Suppress StoreDevtoolsConfig compiler warning (8804156)
- omit: Strengthen the type checking of the omit utility function (3982038)
- router-store: NavigationCancel and NavigationError creates a cycle when used with routerReducer (a085730), closes #68
- Store: Exported initial state tokens (#65) (4b27b6d)
- Store: pass all required arguments to projector (#74) (9b82b3a)
- Store: Remove parameter destructuring for strict mode (#33) (#77) (c9d6a45)
- Store: Removed readonly from type (#72) (68274c9)
- StoreDevtools: Type InjectionToken for AOT compilation (e21d688)
Code Refactoring
- Effects: Simplified AP, added better error reporting and effects stream control (015107f)
Features
- build: Updated build pipeline for modules (68bd9df)
- Effects: Ensure effects are only subscribed to once (089abdc)
- Effects: Introduce new Effects testing module (#70) (7dbb571)
- router-store: Added action types (#47) (1f67cb3), closes #44
- store: Add 'createSelector' and 'createFeatureSelector' utils (#10) (41758b1)
- Store: Allow initial state function for AoT compatibility (#59) (1a166ec), closes #51
- Store: Allow parent modules to provide reducers with tokens (#36) (069b12f), closes #34
- Store: Simplify API for adding meta-reducers (#87) (d2295c7)
BREAKING CHANGES
- Effects: Effects API for registering effects has been updated to allow for multiple classes to be provided.
BEFORE:
@NgModule({
imports: [EffectsModule.run(SourceA), EffectsModule.run(SourceB)],
})
export class AppModule {}
AFTER:
@NgModule({
imports: [EffectsModule.forRoot([SourceA, SourceB, SourceC])],
})
export class AppModule {}
@NgModule({
imports: [EffectsModule.forFeature([FeatureSourceA, FeatureSourceB, FeatureSourceC])],
})
export class SomeFeatureModule {}