All files / src/decorators Watch.ts

91.67% Statements 11/12
66.67% Branches 6/9
100% Functions 2/2
91.67% Lines 11/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24  1x 1x 1x                 1x 1x 1x 1x     1x 1x   1x    
import { createDecorator } from './Component'
import { WatchOptions } from '../types/options'
 
/**
 * decorator of a watch function
 *
 * @param  path the path or the expression to observe
 * @param  WatchOption
 * @return MethodDecorator
 */
export function Watch(path: string, watchOptions: WatchOptions = {}): MethodDecorator {
  return createDecorator((componentOptions, handler) => {
    componentOptions.watch = componentOptions.watch || Object.create(null)
    const watch: any = componentOptions.watch
    if (typeof watch[path] === 'object' && !Array.isArray(watch[path])) {
      waItch[path] = [watch[path]]
    } else if (typeof watch[path] === 'undefined') {
      watch[path] = []
    }E
 
    watch[path].push({ handler, ...watchOptions })
  })
}