|
1 | 1 | import type { AnyObject, Class, EmptyObject } from 'yummies/types'; |
2 | | -import type { ViewModel } from '../view-model/index.js'; |
| 2 | +import type { |
| 3 | + AnyViewModel, |
| 4 | + AnyViewModelSimple, |
| 5 | + ViewModel, |
| 6 | + ViewModelSimple, |
| 7 | +} from '../view-model/index.js'; |
3 | 8 |
|
4 | | -export const isViewModel = <TPayload extends AnyObject = EmptyObject>( |
| 9 | +export const isViewModel = < |
| 10 | + TPayload extends AnyObject = EmptyObject, |
| 11 | + ParentViewModel extends AnyViewModel | AnyViewModelSimple | null = null, |
| 12 | +>( |
5 | 13 | value: AnyObject, |
6 | | -): value is ViewModel<TPayload> => value.payloadChanged; |
| 14 | +): value is ViewModel<TPayload, ParentViewModel> => value.payloadChanged; |
7 | 15 |
|
8 | | -export const isViewModelClass = <TPayload extends AnyObject = EmptyObject>( |
| 16 | +export const isViewModelClass = < |
| 17 | + TPayload extends AnyObject = EmptyObject, |
| 18 | + ParentViewModel extends AnyViewModel | AnyViewModelSimple | null = null, |
| 19 | +>( |
9 | 20 | value: Function, |
10 | | -): value is Class<ViewModel<TPayload>> => value.prototype.payloadChanged; |
| 21 | +): value is Class<ViewModel<TPayload, ParentViewModel>> => |
| 22 | + value.prototype.payloadChanged; |
| 23 | + |
| 24 | +export const isViewModeSimpleClass = < |
| 25 | + TPayload extends AnyObject = EmptyObject, |
| 26 | + ParentViewModel extends AnyViewModel | AnyViewModelSimple | null = null, |
| 27 | +>( |
| 28 | + value: Function, |
| 29 | +): value is Class<ViewModelSimple<TPayload, ParentViewModel>> => |
| 30 | + !isViewModelClass(value); |
0 commit comments