message: rework chainFns
diff: -import { Fn, Vector2 } from '../types'
  +import { Vector2 } from '../types'
  // blank function
  export function noop() {}
  -// returns a function that chains all functions given as parameters
  -export const chainFns = (...fns: Fn[]): Fn => (...args: any[]) => fns.forEach(fn => fn(...args))
  +
  +export function chainFns(...fns: Function[]) {
  + return function (this: any) {
  + for (let fn of fns) fn.apply(this, arguments)
  + }
  +}
  +
  export const def = {
  array: <T>(value: T | T[]): T[] => (Array.isArray(value) ? value : [value, value]),
  