@@ -9,18 +9,17 @@ import { SideEffectFnOrObserver, SideEffectObservable } from './types';
9
9
10
10
type RxEffects < T > = {
11
11
register : RegisterFn < T > ;
12
- onCleanup : OnCleanupFn < T > ;
12
+ onDestroy : ( fn : Fn ) => Fn ;
13
13
} ;
14
14
type RegisterFn < T > = (
15
15
observable : SideEffectObservable < T > ,
16
16
sideEffectOrObserver ?: SideEffectFnOrObserver < T >
17
17
) => ( ) => void ;
18
- type OnCleanupFn < T > = ( sideEffect : ( ) => void ) => void ;
18
+ type Fn = ( ) => void ;
19
19
20
- export type RxEffectsSetupFn < T > = ( cfg : {
21
- register : RegisterFn < T > ;
22
- onCleanup : OnCleanupFn < T > ;
23
- } ) => void ;
20
+ export type RxEffectsSetupFn < T > = (
21
+ cfg : Pick < RxEffects < T > , 'register' | 'onDestroy' >
22
+ ) => void ;
24
23
25
24
/**
26
25
* @description
@@ -61,9 +60,7 @@ export function rxEffects<T>(setupFn?: RxEffectsSetupFn<T>): RxEffects<T> {
61
60
const errorHandler = inject ( ErrorHandler , { optional : true } ) ;
62
61
const destroyRef = inject ( DestroyRef ) ;
63
62
const runningEffects : Subscription [ ] = [ ] ;
64
- const destroyEf = destroyRef . onDestroy ( ( ) =>
65
- runningEffects . forEach ( ( ef ) => ef . unsubscribe ( ) )
66
- ) ;
63
+ destroyRef . onDestroy ( ( ) => runningEffects . forEach ( ( ef ) => ef . unsubscribe ( ) ) ) ;
67
64
68
65
/**
69
66
* Subscribe to observables and trigger side effect.
@@ -79,8 +76,10 @@ export function rxEffects<T>(setupFn?: RxEffectsSetupFn<T>): RxEffects<T> {
79
76
* }
80
77
* }
81
78
*
82
- * @param obs$ Source observable input
83
- * @param observer Observer object
79
+ * @param {SideEffectObservable } obs$ Source observable input
80
+ * @param {SideEffectFnOrObserver } sideEffect Observer object
81
+ *
82
+ * @return {Function } - unregisterFn
84
83
*/
85
84
function register (
86
85
obs$ : SideEffectObservable < T > ,
@@ -91,12 +90,15 @@ export function rxEffects<T>(setupFn?: RxEffectsSetupFn<T>): RxEffects<T> {
91
90
? {
92
91
...sideEffect ,
93
92
// preserve original logic
94
- error : ( e ) => {
93
+ error : ( e : unknown ) => {
95
94
sideEffect ?. error ( e ) ;
96
95
errorHandler . handleError ( e ) ;
97
96
} ,
98
97
}
99
- : { next : sideEffect , error : ( e ) => errorHandler . handleError ( e ) } ;
98
+ : {
99
+ next : sideEffect ,
100
+ error : ( e : unknown ) => errorHandler . handleError ( e ) ,
101
+ } ;
100
102
const sub = from ( obs$ ) . subscribe ( observer ) ;
101
103
runningEffects . push ( sub ) ;
102
104
return ( ) => sub . unsubscribe ( ) ;
@@ -111,21 +113,22 @@ export function rxEffects<T>(setupFn?: RxEffectsSetupFn<T>): RxEffects<T> {
111
113
* template: `<button name="save" (click)="save()">Save</button>`
112
114
* })
113
115
* class ListComponent {
114
- * private ef = rxEffects(({onCleanup }) => {
115
- * onCleanup (() => console.log('done'));
116
+ * private ef = rxEffects(({onDestroy }) => {
117
+ * onDestroy (() => console.log('done'));
116
118
* }
117
119
* }
118
120
*
119
- * @param obs$ Source observable input
120
- * @param observer Observer object
121
+ * @param {Fn } callback onDestroy callback
122
+ *
123
+ * @return {Fn } unregisterFn
121
124
*/
122
- function onCleanup ( fn ) {
123
- destroyRef . onDestroy ( fn ) ;
125
+ function onDestroy ( callback : Fn ) : Fn {
126
+ return destroyRef . onDestroy ( callback ) ;
124
127
}
125
128
126
129
const effects = {
127
130
register,
128
- onCleanup ,
131
+ onDestroy ,
129
132
} ;
130
133
131
134
setupFn ?.( effects ) ;
0 commit comments