# @ts-check

import includes_getType from './getType'
import includes_isArray from './isArray'
import includes_isNumber from './isNumber'
import includes_isString from './isString'
import includes_toString from './toString'

###* @type import('./includes').Includes ###
export default (ipt, needle) ->

  includes_type = includes_getType ipt

  if (includes_isString ipt) or includes_isNumber ipt
    unless includes_isString needle then return false
    return (InStr (includes_toString ipt), needle) > 0

  if includes_isArray ipt
    for includes_it in ipt
      if includes_it == needle then return true
    return false

  throw new Error "includes: invalid type '#{includes_type}'"