'use strict';
/**
* @author schukai GmbH
*/
import {Monster} from '../namespace.js';
/**
* checks whether the value passed is a primitive (string, number, boolean or symbol)
*
* you can call the method via the monster namespace `Monster.Types.isPrimitive()`.
*
* ```
* <script type="module">
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/is.js';
* console.log(Monster.Types.isPrimitive('2')) // ↦ false
* console.log(Monster.Types.isPrimitive([])) // ↦ true
* </script>
* ```
*
* Alternatively, you can also integrate this function individually.
*
* ```
* <script type="module">
* import {isPrimitive} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/is.js';
* console.log(isPrimitive('2')) // ↦ true
* console.log(isPrimitive([])) // ↦ false
* </script>
* ```
*
* @param {*} value
* @returns {boolean}
* @since 1.0.0
* @copyright schukai GmbH
* @memberOf Monster/Types
*/
function isPrimitive(value) {
var type;
if (value === undefined || value === null) {
return true;
}
type = typeof value;
if (type === 'string' || type === 'number' || type === 'boolean' || type === 'symbol') {
return true;
}
return false;
}
/**
* checks whether the value passed is a boolean
*
* you can call the method via the monster namespace `Monster.Types.isBoolean()`.
*
* ```
* <script type="module">
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/is.js';
* console.log(Monster.Types.isBoolean('2')) // ↦ false
* console.log(Monster.Types.isBoolean([])) // ↦ false
* console.log(Monster.Types.isBoolean(true)) // ↦ true
* </script>
* ```
*
* Alternatively, you can also integrate this function individually.
*
* ```
* <script type="module">
* import {isBoolean} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/is.js';
* console.log(isBoolean('2')) // ↦ false
* console.log(isBoolean([])) // ↦ false
* console.log(isBoolean(2>4)) // ↦ true
* </script>
* ```
*
* @param {*} value
* @returns {boolean}
* @since 1.0.0
* @copyright schukai GmbH
* @memberOf Monster/Types
*/
function isBoolean(value) {
if (value === true || value === false) {
return true;
}
return false;
}
/**
* checks whether the value passed is a string
*
* you can call the method via the monster namespace `Monster.Types.isString()`.
*
* ```
* <script type="module">
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/is.js';
* console.log(Monster.Types.isString('2')) // ↦ true
* console.log(Monster.Types.isString([])) // ↦ false
* </script>
* ```
*
* Alternatively, you can also integrate this function individually.
*
* ```
* <script type="module">
* import {isString} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/is.js';
* console.log(isString('2')) // ↦ true
* console.log(isString([])) // ↦ false
* </script>
* ```
*
* @param {*} value
* @returns {boolean}
* @since 1.0.0
* @copyright schukai GmbH
* @memberOf Monster/Types
*/
function isString(value) {
if (value === undefined || typeof value !== 'string') {
return false;
}
return true;
}
/**
* checks whether the value passed is a object
*
* you can call the method via the monster namespace `Monster.Types.isObject()`.
*
* ```
* <script type="module">
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/is.js';
* console.log(Monster.Types.isObject('2')) // ↦ false
* console.log(Monster.Types.isObject([])) // ↦ false
* console.log(Monster.Types.isObject({})) // ↦ true
* </script>
* ```
*
* Alternatively, you can also integrate this function individually.
*
* ```
* <script type="module">
* import {isObject} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/is.js';
* console.log(isObject('2')) // ↦ false
* console.log(isObject([])) // ↦ false
* </script>
* ```
*
* @param {*} value
* @returns {boolean}
* @since 1.0.0
* @copyright schukai GmbH
* @memberOf Monster/Types
*/
function isObject(value) {
if (isArray(value)) return false;
if (isPrimitive(value)) return false;
if (typeof value === 'object') {
return true;
}
return false;
}
/**
* checks whether the value passed is a array
*
* you can call the method via the monster namespace `Monster.Types.isArray()`.
*
* ```
* <script type="module">
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/is.js';
* console.log(Monster.Types.isArray('2')) // ↦ false
* console.log(Monster.Types.isArray([])) // ↦ true
* </script>
* ```
*
* Alternatively, you can also integrate this function individually.
*
* ```
* <script type="module">
* import {isArray} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/is.js';
* console.log(isArray('2')) // ↦ false
* console.log(isArray([])) // ↦ true
* </script>
* ```
*
* @param {*} value
* @returns {boolean}
* @since 1.0.0
* @copyright schukai GmbH
* @memberOf Monster/Types
*/
function isArray(value) {
if (Array.isArray(value)) {
return true;
}
return false;
}
/**
* checks whether the value passed is a function
*
* you can call the method via the monster namespace `Monster.Types.isFunction()`.
*
* ```
* <script type="module">
* import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/is.js';
* console.log(Monster.Types.isFunction(()=>{})) // ↦ true
* console.log(Monster.Types.isFunction('2')) // ↦ false
* console.log(Monster.Types.isFunction([])) // ↦ false
* </script>
* ```
*
* Alternatively, you can also integrate this function individually.
*
* ```
* <script type="module">
* import {isFunction} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@1.0.14/dist/modules/types/is.js';
* console.log(isFunction(()=>{})) // ↦ true
* console.log(isFunction('2')) // ↦ false
* console.log(isFunction([])) // ↦ false
* </script>
* ```
*
* @param {*} value
* @returns {boolean}
* @since 1.0.0
* @copyright schukai GmbH
* @memberOf Monster/Types
*/
function isFunction(value) {
if (isArray(value)) return false;
if (isPrimitive(value)) return false;
if (typeof value === 'function') {
return true;
}
return false;
}
Monster.assignToNamespace('Monster.Types', isPrimitive, isBoolean, isString, isObject, isArray, isFunction);
export {Monster, isPrimitive, isBoolean, isString, isObject, isArray, isFunction}