Utils (@pim.sk/utils)

is

Type and value detection utilities. All functions return true/false. isJson optionally returns the parsed value. isNavigator and isDev are constants populated on import.
import { isBoolean, isNumber, isString, isNull, isUndefined, isNil, isArray, isObject, isFunction, isClass, isDate, isDOM, isJson, isNavigator, isDev } from '@pim.sk/utils/is.mjs'

Usage

isBoolean / isNumber / isString / isNull / isUndefined / isNil

Primitive type checks. Return true/false.

isBoolean( true )       // → true
isBoolean( "true" )     // → false

isNumber( 42 )          // → true
isNumber( NaN )         // → true  (NaN is typeof "number")

isString( "hello" )     // → true

isNull( null )          // → true
isNull( undefined )     // → false

isUndefined( undefined )// → true
isUndefined( null )     // → false

isNil( null )           // → true   (null OR undefined)
isNil( undefined )      // → true
isNil( 0 )              // → false
isNull( null )           // → true
isNull( undefined )      // → false

isUndefined( undefined ) // → true
isUndefined( null )      // → false

isNil( null )            // → true
isNil( undefined )       // → true
isNil( 0 )               // → false

isArray( v )

Returns true for arrays. Uses Array.isArray() internally.

isArray( [1, 2, 3] )    // → true
isArray( [] )           // → true
isArray( {} )           // → false
isArray( "string" )     // → false
isArray( [1, 2, 3] )  // → true
isArray( {} )         // → false

isObject( v )

Returns true only for plain objects — { }. Returns false for arrays, class instances, null, and other types.

isObject( {} )               // → true
isObject( { a: 1 } )        // → true
isObject( [] )               // → false  (array)
isObject( new MyClass() )    // → false  (class instance)
isObject( null )             // → false
class MyClass {}

isObject( {} )             // → true
isObject( [] )             // → false
isObject( new MyClass() )  // → false

isFunction( v )

Returns true for function expressions and arrow functions. Uses constructor.name === "Function".

isFunction( () => {} )           // → true
isFunction( function() {} )      // → true
isFunction( class MyClass {} )   // → false  (class declaration)
isFunction( {} )                 // → false
isFunction( () => {} )       // → true
isFunction( function(){} )   // → true
isFunction( class Foo {} )   // → false

isClass( v )

Returns true for instances of any named class. Excludes plain objects, arrays, and functions.

class MyClass {}
const instance = new MyClass()

isClass( instance )    // → true
isClass( new Date() )  // → true
isClass( {} )          // → false  (plain object)
isClass( [] )          // → false  (array)
class MyClass {}
const instance = new MyClass()

isClass( instance )    // → true
isClass( new Date() )  // → true
isClass( {} )          // → false

isDate( str )

Validates a date string. Requires ISO 8601 format (YYYY-MM-DD). Rejects SK locale format (DD.MM.YYYY), strings with letters, and values without a dash.

isDate( "2024-01-15" )    // → true   ISO format
isDate( "2024-01-15T10:30:00" ) // → true
isDate( "15.01.2024" )    // → false  SK format not supported
isDate( "2024/01/15" )    // → false  no dash
isDate( "hello" )         // → false
isDate( 1234567890 )      // → false  not a string
isDate( "2024-01-15" )          // → true
isDate( "2024-01-15T10:30:00" ) // → true
isDate( "15.01.2024" )          // → false

isDOM( el )

Returns true if the value is a DOM Element. Uses instanceof Element.

isDOM( document.body )                   // → true
isDOM( document.createElement("div") )   // → true
isDOM( {} )                              // → false
isDOM( "<div>html string</div>" )        // → false
isDOM( document.body )                  // → true
isDOM( document.createElement("div") )  // → true
isDOM( {} )                             // → false

isJson( str, ['parse'] )

Checks if a string is valid JSON. With the "parse" option returns the parsed value instead of true.

isJson( '[1,2,{"a":3}]' )           // → true
isJson( '[1,2,{"a":3}]', "parse" )  // → [1, 2, { a: 3 }]
isJson( '<b>Error</b> [1,2,3]' )    // → false
isJson( 'not json' )                // → false

// typical usage — fallback to raw string if not JSON:
res = isJson(res, "parse") || res
isJson( '[1,2,{"a":3}]' )           // → true
isJson( '[1,2,{"a":3}]', "parse" )  // → [1, 2, { a: 3 }]
isJson( '<b>Error</b>' )            // → false

res = isJson(res, "parse") || res

isNavigator

Object with OS and browser flags detected from navigator.userAgent / navigator.userAgentData. Populated once on import.

isNavigator = {
    android: false,
    ios:     false,
    mac:     false,
    windows: false,
    linux:   false,
    chrome:  false,   // Chrome OS
    other:   false,
    mobile:  null,    // true/false — null if userAgentData unsupported
}
// read-only, populated on import
console.log( isNavigator.windows )  // → true / false
console.log( isNavigator.mobile )   // → true / false / null

isDev

Boolean. true if window._MINJSDEV exists and is active (dev mode). Useful for conditionally loading .min.* files.

isDev only works in the mpws framework. It expects the existence of the variable _MINJSDEV.

// true  — dev mode is active (window._MINJSDEV.o.show === true)
// false — dev mode missing or disabled
if( isDev ){
    // load full version
} else {
    // load minified version
}
v 1.1.2