/// import types = require('./types') var __i = 0 export var serial = (): number => __i++ export var arr = ( arrayish: any ): any[] => ( Array.prototype.slice.apply( arrayish ) ); export function arrp( xs:T[], x:T ): T { xs.push( x ) ; return x } export function args_cb( raw_args: any ){ var args_arr = arr( raw_args ) var cb = args_arr.pop() return { args: args_arr, cb: cb } } export var exists = ( v: any ): boolean => ( ( typeof v !== 'undefined' ) && ( v !== null ) ) export function delay( ms: number, f: Function ): types.Stopper { var i = setTimeout( f, ms ) return ( ) => clearTimeout( i ) } export var EQ = ( a: any , b: any ) => a === b export var last = ( arr:T[] ) => arr[arr.length - 1] export function around( before: () => void, fin: () => void, func: () => T ): () => T { return () => { var a = arguments try { before() return func.apply(null, a) } finally { fin() } } }