rubico
Version:
[a]synchronous functional programming
42 lines (33 loc) • 1.04 kB
JavaScript
/**
* rubico v2.6.2
* https://github.com/a-synchronous/rubico
* (c) 2019-2024 Richard Tong
* rubico may be freely distributed under the MIT license.
*/
(function (root, prepend) {
if (typeof module == 'object') (module.exports = prepend) // CommonJS
else if (typeof define == 'function') define(() => prepend) // AMD
else (root.prepend = prepend) // Browser
}(typeof globalThis == 'object' ? globalThis : this, (function () { 'use strict'
const isString = function (value) {
return typeof value == 'string'
|| (value != null && value.constructor == String)
}
const isArray = Array.isArray
const prepend = item => function prependFunc(value) {
if (isArray(value)) {
if (isArray(item)){
return [...item, ...value]
}
return [item, ...value]
}
if (isString(value)){
if (!isString(item)){
throw new TypeError(`${item} is not a string`)
}
return `${item}${value}`
}
throw new TypeError(`${value} is not an Array or string`)
}
return prepend
}())))