<commit_before>export function isMobile (agent = navigator.userAgent) {
	return /Android|iPhone|iPad|iPod/i.test(agent)
}


export function isNode (target) {
	return typeof window.Node === 'object'
		? target instanceof window.Node
		: target !== null
			&& typeof target === 'object'
			&& typeof target.nodeType === 'number'
			&& typeof target.nodeName === 'string'
}


export function isNodeList (target) {
	const prototypeToString = Object.prototype.toString.call(target)
	const regex = /^\[object (HTMLCollection|NodeList|Object)\]$/

	return typeof window.NodeList === 'object'
		? target instanceof window.NodeList
		: typeof target === 'object'
			&& typeof target.length === 'number'
			&& regex.test(prototypeToString)
			&& (target.length === 0 || isNode(target[0]))
}


export function transformSupported () {
	const style = document.documentElement.style
	return 'transform' in style || 'WebkitTransform' in style
}


export function transitionSupported () {
	const style = document.documentElement.style
	return 'transition' in style || 'WebkitTransition' in style
}
<commit_msg>add skeleton for new browser utility<commit_after>export function isMobile (agent = navigator.userAgent) {
	return /Android|iPhone|iPad|iPod/i.test(agent)
}


export function isNode (target) {
	return typeof window.Node === 'object'
		? target instanceof window.Node
		: target !== null
			&& typeof target === 'object'
			&& typeof target.nodeType === 'number'
			&& typeof target.nodeName === 'string'
}


export function isNodeList (target) {
	const prototypeToString = Object.prototype.toString.call(target)
	const regex = /^\[object (HTMLCollection|NodeList|Object)\]$/

	return typeof window.NodeList === 'object'
		? target instanceof window.NodeList
		: typeof target === 'object'
			&& typeof target.length === 'number'
			&& regex.test(prototypeToString)
			&& (target.length === 0 || isNode(target[0]))
}


// export const getComputedProperty = (name => {
// 	const properties = {}
//
// 	return () => {
// 		if (properties[name]) return properties[name]
//
// 		if (typeof name === 'string') {
// 			const computed = window.getComputedStyle()
// 			if (typeof computed[name] === 'string')
// 				return properties[name] = name
// 			if (typeof computed[`-webkit-${name}`] === 'string')
// 				return properties[name] = `-webkit-${name}`
//
// 			throw new RangeError(`Unable to find "${name}" in computed style properties.`)
// 		}
// 		throw new Error('Expected a string.')
// 	}
// })()


export function transformSupported () {
	const style = document.documentElement.style
	return 'transform' in style || 'WebkitTransform' in style
}


export function transitionSupported () {
	const style = document.documentElement.style
	return 'transition' in style || 'WebkitTransition' in style
}

{'fraction_non_alphanumeric': 0.14949928469241774, 'fraction_numerical': 0.001430615164520744, 'mean_word_length': 4.132110091743119, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '618722', 'n_tokens_mistral': 876, 'n_tokens_neox': 813, 'n_words': 218}