various classification, validation and utility functions
npm install javascript-interface-libraryvarious classification, validation and utility functions for JavaScript and TypeScript
From time to time, it's necessary to classify and/or validate the values of user inputs, data read from input streams (like files or network connections) or arguments passed as part of a function call. While TypeScript type annotations already eliminate the need for many of these tests, there still exist lots of interfaces to the outer (non-TypeScript) world where value checking remains important.
These situations are, what the javascript-interface-library has been made for.
NPM users: please consider the Github README for the latest description of this package (as updating the docs would otherwise always require a new NPM package version)
> Just a small note: if you like this module and plan to use it, consider "starring" this repository (you will find the "Star" button on the top right of this page), so that I know which of my repositories to take most care of.
javascript-interface-library may be used as an ECMAScript module (ESM), a CommonJS or AMD module or from a global variable.
You may either install the package into your build environment using NPM with the command
```
npm install javascript-interface-library
or load the plain script file directly
`html`
How to access the package depends on the type of module you prefer
* ESM (or Svelte): import { ValueIsListSatisfying, ValueIsOrdinal } from 'javascript-interface-library'const JIL = require('javascript-interface-library')
* CommonJS: require(['javascript-interface-library'], (JIL) => {...})
* AMD:
Alternatively, you may access the global variable JIL directly.
Note for ECMAScript module users: all module functions and values are exported individually, thus allowing your bundler to perform some "tree-shaking" in order to include actually used functions or values (together with their dependencies) only.
For Svelte, it is recommended to import the package in a module context. From then on, its exports may be used as usual:
`html
`
Let's assume that you already "required" or "imported" (or simply loaded) the module according to your local environment. In that case, you may use it as follows:
`javascript`
console.log(JIL.ValueIsListSatisfying(
[1,2,3,4], JIL.ValueIsOrdinal, 1,10
))
As shown above, the individual functions and values may either be accessed directly (when used as an ESM) or by prefixing them with their namespace JIL (in all other cases). The following documentation lists all module contents without namespace prefix only, and the shown function signatures are those used by TypeScript.
The JavaScript Object class provides a few useful functions (or "static methods") for inspecting or converting a given object. Unfortunately, these functions are often used without prior checking whether the given target object actually inherits from the Object protoype or was built using Object.create(null) - and will fail whenever such a "vanilla" object is given.
JIL therefore contains the following functions which mimic their counterparts from the Object class, but succeed even if the given target object is "vanilla".
* Object_hasOwnProperty (Value:Object, PropertyName:string):boolean
returns true if the given Value contains a property with the name PropertyName as its own property - or false otherwise. This function mimics the JavaScript method Object.hasOwnPropertyObject_isPrototypeOf (Value:Object, Candidate:any):boolean
* true
returns if the given Value exists in the prototype chain of a given Candidate - or false otherwise. This function mimics the JavaScript method Object.isPrototypeOfObject_propertyIsEnumerable (Value:Object, PropertyName:string):boolean
* true
returns if the given Value contains a property with the name PropertyName as its own property and that one is enumerable - or false otherwise. This function mimics the JavaScript method Object.propertyIsEnumerableObject_toString (Value:Object):string
* Value
returns a string which represents the given . This function mimics the JavaScript method Object.toStringObject_toLocaleString (Value:Object):string
* Value
returns a locale-specific string which represents the given . This function mimics the JavaScript method Object.toLocaleStringObject_valueOf (Value:Object):any
* Value
returns the primitive value of the given object. This function mimics the JavaScript method Object.valueOf
The following functions check whether a given argument satisfies a certain constraint (e.g., belongs to a certain category) and return either true (if the constrain is met) or false otherwise.
* ValueExists (Value:any):boolean
returns true if the given Value exists, i.e., if it differs from both null and undefined - or false otherwiseValueIsMissing (Value:any):boolean
* true
returns if the given Value is either null or undefined - or false otherwiseValueIsBoolean (Value:any):boolean
* true
returns if the given Value is either a primitive boolean value or an instance of Boolean - or false otherwiseValueIsNumber (Value:any):boolean
* true
returns if the given Value is either a primitive numeric value or an instance of Number - or false otherwiseValueIsFiniteNumber (Value:any):boolean
* true
returns if the given Value is a finite number, i.e. a number which is not NaN and whose value is greater than negative and smaller than positive infinity - or false otherwiseValueIsNaN (Value:any):boolean
* true
returns if the given Value is NaN - or false otherwiseValueIsNumberInRange (Value:any, minValue?:number, maxValue?:number, withMin:boolean = true, withMax:boolean = true):boolean
true
returns if the given Value is a number whose value is within the range given by minValue and maxValue - or false otherwise. minValue is optional and defaults to negative infinity, maxValue is also optional but defaults to positive infinity. When true, withMin indicates that Value may also be equal to the lower end of the given range, otherwise it must just be greater than the lower limit. When true, withMax indicates that Value may also be equal to the upper end of the given range, otherwise it must just be lower than* the upper limitValueIsInteger (Value:any):boolean
* true
returns if the given Value is a whole number - or false otherwiseValueIsIntegerInRange (Value:any, minValue?:number, maxValue?:number):boolean
* true
returns if the given Value is a whole number whose value is within the range given by minValue and maxValue - or false otherwise. minValue is optional and defaults to negative infinity, maxValue is also optional but defaults to positive infinityValueIsOrdinal (Value:any):boolean
* true
returns if the given Value is a whole number greater than or equal to zero - or false otherwiseValueIsCardinal (Value:any):boolean
* true
returns if the given Value is a whole number greater than or equal to one - or false otherwiseValueIsString (Value:any):boolean
* true
returns if the given Value is either a primitive literal value or an instance of String - or false otherwiseValueIsEmptyString (Value:any):boolean
* true
returns if the given Value is a string without any characters or with some content that consists of white-space characters only - or false otherwiseValueIsNonEmptyString (Value:any):boolean
* true
returns if the given Value is a string with some content that does not just consist of white-space characters - or false otherwiseValueIsStringMatching (Value:any, Pattern:RegExp):boolean
* true
returns if the given Value is a string whose content matches the given regular expression Pattern - or false otherwiseValueIsText (Value:any):boolean
* true
returns if the given Value is a string containing "ordinary" text only (i.e., a string which lacks any kind of control characters except \\n or \\r) - or false otherwiseValueIsTextline (Value:any):boolean
* true
returns if the given Value is a string containing a single line of "ordinary" text only (i.e., a string which lacks any kind of control characters) - or false otherwiseValueIsFunction (Value:any):boolean
* true
returns if the given Value is a JavaScript function - or false otherwiseValueIsAnonymousFunction (Value:any):boolean
* true
returns if the given Value is an anonymous JavaScript function (i.e., a function without a name property) - or false otherwiseValueIsNamedFunction (Value:any):boolean
* true
returns if the given Value is a "named" JavaScript function (i.e., a function with a non-empty name property) - or false otherwiseValueIsNativeFunction (Value:any):boolean
* true
returns if the given Value is a native JavaScript function - or false otherwiseValueIsScriptedFunction (Value:any):boolean
* true
returns if the given Value is a scripted JavaScript function - or false otherwiseValueIsObject (Value:any):boolean
* true
returns if the given Value is a JavaScript object (and not null) - or false otherwiseValueIsPlainObject (Value:any):boolean
* true
returns if the given Value is a JavaScript object (different from null) which directly inherits from Object (such as a Javascript object literal) - or false otherwiseValueIsVanillaObject (Value:any):boolean
* true
returns if the given Value is a JavaScript object which has been built using Object.create(null) - or false otherwiseValueIsArray (Value:any):boolean
* true
returns if the given Value is an Array instance - or false otherwise. If given, minLength specifies the minimal required list length and maxLength specifies the maximal allowed list lengthValueIsList (Value:any, minLength?:number, maxLength?:number):boolean
* true
returns if the given Value is a "dense" JavaScript array (i.e., an array whose indices 0...n-1 all exist, where n is the length of the given array) - or false otherwiseValueIsListSatisfying (Value:any, Validator:Function, minLength?:number, maxLength?:number):boolean
* true
returns if the given Value is a "dense" JavaScript array, whose elements all pass the given Validator - or false otherwise. Validator is a function which receives a list element as its sole argument and returns true if the given element is "valid" or false otherwise. If given, minLength specifies the minimal required list length and maxLength specifies the maximal allowed list lengthValueIsInstanceOf (Value:any, Constructor:Function):boolean
* true
returns if the given Value was constructed using the given Constructor function - or false otherwiseValueInheritsFrom (Value:any, Prototype:Object):boolean
* true
returns if Prototype exists in the prototype chain of the given Value - or false otherwiseValueIsDate (Value:any):boolean
* true
returns if the given Value is a Date instance - or false otherwiseValueIsError (Value:any):boolean
* true
returns if the given Value is an Error instance - or false otherwiseValueIsPromise (Value:any):boolean
* true
returns if the given Value is a "Promise", i.e., an object with a property named then which contains a function - or false otherwiseValueIsRegExp (Value:any):boolean
* true
returns if the given Value is a RegExp instance - or false otherwiseValueIsOneOf (Value:any, ValueList:any[]):boolean
* true
returns if the given Value equals (at least) one of the items found in the given ValueList - or false otherwise. Equality is checked using the JavaScript === operatorValueIsColor (Value:any):boolean
* true
returns if the given Value is a string containing a syntactically valid CSS color specification - or false otherwiseValueIsEMailAddress (Value:any):boolean
* true
returns if the given Value is a string containing a syntactically valid EMail address - or false otherwiseValueIsURL (Value:any):boolean
* true
returns if the given Value is a string containing a syntactically valid URL - or false otherwise
The following functions check whether a given argument satisfies a certain constraint (e.g., belongs to a certain category) and either return the given argument (sometimes after some normalization), if the constrain is met, or throw an error otherwise.
Unless stated otherwise, these functions exist in four different "flavours", as indicated by their name prefixes:
* allowXXXnull
validates the given argument and returns it, if it is either missing (i.e., equals or undefined) or meets the condition defined for XXX - or throws an exception otherwiseallwedXXX
* allowXXX
synonym for , looks better when used as an expressionexpectXXX
* null
validates the given argument and returns it, if it exists (i.e., differs both from and undefined) and meets the condition defined for XXX - or throws an exception otherwise expectedXXX
* expectXXX
synonym for , looks better when used as an expression
For the sake of clarity, however, only the first "flavour" (namely allowXXX) is shown in the list below (provided that this flavour actually exists).
* expectValue (Description:string, Argument:any):any
checks if the given Argument exists (i.e., if it differs from both null and undefined). If this is the case, the function returns the given Argument, otherwise an error with the message "no ${Description} given" is thrown, which uses the given Description argument. Please note: this function does not exist in the flavours allowXXX or allowedXXXallowBoolean (Description:string, Argument:any):boolean|null|undefined
* Argument
checks if the given (if it exists) is either a primitive boolean value or an instance of Boolean. If this is the case (or Argument is missing), the function returns the primitive value of the given Argument, otherwise an error with the message "the given ${Description} is no valid boolean value" is thrown, which uses the given DescriptionallowNumber (Description:string, Argument:any):number|null|undefined
* Argument
checks if the given (if it exists) is either a primitive numeric value or an instance of Number. If this is the case (or Argument is missing), the function returns the primitive value of the given Argument, otherwise an error with the message "the given ${Description} is no valid numeric value" is thrown, which uses the given DescriptionallowFiniteNumber (Description:string, Argument:any):number|null|undefined
* Argument
checks if the given (if it exists) is a finite number, i.e. a number which is not NaN and whose value is greater than negative and smaller than positive infinity. If this is the case (or Argument is missing), the function returns the primitive value of the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowNaN (Description:string, Argument:any):number|null|undefined
* Argument
checks if the given (if it exists) is NaN. If this is the case (or Argument is missing), the function returns the primitive value of the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowNumberInRange (Description:string, Argument:any, minValue?:number, maxValue?:number, withMin?:boolean, withMax?:boolean):number|null|undefined
Argument
checks if the given (if it exists) is a number whose value is within the range given by minValue and maxValue. If this is the case (or Argument is missing), the function returns the primitive value of the given Argument, otherwise an error is thrown whose message contains the given Description. minValue is optional and defaults to negative infinity, maxValue is also optional but defaults to positive infinity. When true, withMin indicates that Value may also be equal to the lower end of the given range, otherwise it must just be greater than the lower limit. When true, withMax indicates that Value may also be equal to the upper end of the given range, otherwise it must just be lower than* the upper limitallowInteger (Description:string, Argument:any):number|null|undefined
* Argument
checks if the given (if it exists) is a whole number. If this is the case (or Argument is missing), the function returns the primitive value of the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowIntegerInRange (Description:string, Argument:any, minValue?:number, maxValue?:number):number|null|undefined
* Argument
checks if the given (if it exists) is a whole number whose value is within the range given by minValue and maxValue. If this is the case (or Argument is missing), the function returns the primitive value of the given Argument, otherwise an error is thrown whose message contains the given Description. minValue is optional and defaults to negative infinity, maxValue is also optional but defaults to positive infinityallowOrdinal (Description:string, Argument:any):number|null|undefined
* Argument
checks if the given (if it exists) is a whole number greater than or equal to zero. If this is the case (or Argument is missing), the function returns the primitive value of the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowCardinal (Description:string, Argument:any):number|null|undefined
* Argument
checks if the given (if it exists) is a whole number greater than or equal to one. If this is the case (or Argument is missing), the function returns the primitive value of the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowString (Description:string, Argument:any):string|null|undefined
* Argument
checks if the given (if it exists) is either a primitive literal value or an instance of String. If this is the case (or Argument is missing), the function returns the primitive value of the given Argument, otherwise an error with the message "the given ${Description} is no valid literal string" is thrown, which uses the given DescriptionallowNonEmptyString (Description:string, Argument:any):string|null|undefined
* Argument
checks if the given (if it exists) is a string with some content that does not just consist of white-space characters. If this is the case (or Argument is missing), the function returns the primitive value of the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowStringMatching (Description:string, Argument:any, Pattern:RegExp):string|null|undefined
* Argument
checks if the given (if it exists) is a string whose content matches the given regular expression Pattern. If this is the case (or Argument is missing), the function returns the primitive value of the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowText (Description:string, Argument:any):string|null|undefined
* Argument
checks if the given (if it exists) is a string containing "ordinary" text only (i.e., a string which lacks any kind of control characters except \\n or \\r). If this is the case (or Argument is missing), the function returns the primitive value of the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowTextline (Description:string, Argument:any):string|null|undefined
* Argument
checks if the given (if it exists) is a string containing a single line of "ordinary" text only (i.e., a string which lacks any kind of control characters). If this is the case (or Argument is missing), the function returns the primitive value of the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowFunction (Description:string, Argument:any):Function|null|undefined
* Argument
checks if the given (if it exists) is a JavaScript function. If this is the case (or Argument is missing), the function returns the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowAnonymousFunction (Description:string, Argument:any):Function|null|undefined
* Argument
checks if the given (if it exists) is an anonymous JavaScript function (i.e., a function without a name property). If this is the case (or Argument is missing), the function returns the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowNamedFunction (Description:string, Argument:any):Function|null|undefined
* Argument
checks if the given (if it exists) is a "named" JavaScript function (i.e., a function with a non-empty name property). If this is the case (or Argument is missing), the function returns the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowNativeFunction (Description:string, Argument:any):Function|null|undefined
* Argument
checks if the given (if it exists) is a native JavaScript function. If this is the case (or Argument is missing), the function returns the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowScriptedFunction (Description:string, Argument:any):Function|null|undefined
* Argument
checks if the given (if it exists) is a scripted JavaScript function. If this is the case (or Argument is missing), the function returns the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowObject (Description:string, Argument:any):any|null|undefined
* Argument
checks if the given (if it exists) is a JavaScript object (and not null). If this is the case (or Argument is missing), the function returns the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowPlainObject (Description:string, Argument:any):any|null|undefined
* Argument
checks if the given (if it exists) is a JavaScript object (different from null) which directly inherits from Object (such as a Javascript object literal). If this is the case (or Argument is missing), the function returns the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowVanillaObject (Description:string, Argument:any):any|null|undefined
* Argument
checks if the given (if it exists) is a JavaScript object which has been built using Object.create(null). If this is the case (or Argument is missing), the function returns the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowArray (Description:string, Argument:any):any[]|null|undefined
* Argument
checks if the given (if it exists) is an Array instance. If this is the case (or Argument is missing), the function returns the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowList (Description:string, Argument:any, Expectation?:string,minLength?:number, maxLength?:number):any[]|null|undefined
* Argument
checks if the given (if it exists) is a "dense" JavaScript array (i.e., an array whose indices 0...n-1 all exist, where n is the length of the given array). If this is the case (or Argument is missing), the function returns the given Argument, otherwise an error is thrown whose message contains the given Description. If given, minLength specifies the minimal required list length and maxLength specifies the maximal allowed list lengthallowListSatisfying (Description:string, Argument:any, Validator:(Value:any) => boolean,Expectation?:string, minLength?:number, maxLength?:number):any[]|null|undefined
* Argument
checks if the given (if it exists) is a "dense" JavaScript array, whose elements all pass the given Validator. If this is the case (or Argument is missing), the function returns the given Argument, otherwise an error is thrown whose message contains the given Description. Validator is a function which receives a list element as its sole argument and returns true if the given element is "valid" or false otherwise. If given, minLength specifies the minimal required list length and maxLength specifies the maximal allowed list lengthallowInstanceOf (Description:string, Argument:any, constructor:Function, Expectation:string):any|null|undefined
* Argument
checks if the given (if it exists) was constructed using the given Constructor function. If this is the case (or Argument is missing), the function returns the primitive value of the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowValueInheritingFrom (Description:string, Argument:any, prototype:any, Expectation:string):any|null|undefined
* Prototype
checks if exists in the prototype chain of the given Argument (if that exists). If this is the case (or Argument is missing), the function returns the primitive value of the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowDate (Description:string, Argument:any):Date|null|undefined
* Argument
checks if the given (if it exists) is a Date instance. If this is the case (or Argument is missing), the function returns the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowError (Description:string, Argument:any):Error|null|undefined
* Argument
checks if the given (if it exists) is an Error instance. If this is the case (or Argument is missing), the function returns the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowPromise (Description:string, Argument:any):any|null|undefined
* Argument
checks if the given (if it exists) is a "Promise", i.e., an object with a property named then which contains a function. If this is the case (or Argument is missing), the function returns the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowRegExp (Description:string, Argument:any):RegExp|null|undefined
* Argument
checks if the given (if it exists) is a RegExp instance. If this is the case (or Argument is missing), the function returns the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowOneOf (Description:string, Argument:any, ValueList:any[]):any|null|undefined
* Argument
checks if the given (if it exists) equals (at least) one of the items found in the given ValueList. If this is the case (or Argument is missing), the function returns the given Argument, otherwise an error is thrown whose message contains the given Description. Equality is checked using the JavaScript === operatorallowColor (Description:string, Argument:any):string|null|undefined
* Argument
checks if the given (if it exists) is a string containing a syntactically valid CSS color specification. If this is the case (or Argument is missing), the function returns the primitive value of the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowEMailAddress (Description:string, Argument:any):string|null|undefined
* Argument
checks if the given (if it exists) is a string containing a syntactically valid EMail address. If this is the case (or Argument is missing), the function returns the primitive value of the given Argument, otherwise an error is thrown whose message contains the given DescriptionallowURL (Description:string, Argument:any):string|null|undefined
* Argument
checks if the given (if it exists) is a string containing a syntactically valid URL. If this is the case (or Argument is missing), the function returns the primitive value of the given Argument, otherwise an error is thrown whose message contains the given Description
* throwableError (Message:string):Error
this function has been provided in order to simplify the construction of "named" Error instances: if the given Message starts with a JavaScript identifier followed by a colon, identifier and colon are stripped apart and the identifier is used as the name property of a newly constructed Error instance for the remaining part of Message. Otherwise, this function is equivalent to new Error(Message)throwError (Message:string):never
* Error
this function has been provided in order to simplify throwing "named" instances: if the given Message starts with a JavaScript identifier followed by a colon, identifier and colon are stripped apart and the identifier is used as the name property of a newly constructed Error instance for the remaining part of Message. Otherwise, this function is equivalent to throw new Error(Message) ObjectMergedWith (TargetObject:object, ...otherObjectList:object[]):object
Object.assign can not be used to copy properties with getters and setters from one object into another - this is what ObjectMergedWith is good for: it copies the descriptors of all own* properties from any object found in otherObjectList into the given TargetObject and also returns that object as its function result. Any descriptor already existing for a given property in TargetObject will be overwrittenconstrained (Value:number, Minimum:number = -Infinity, Maximum:number = Infinity):number
* Value
limits the given to the range specified by Minimum and Maximum - i.e., the function returns Minimum if Value is less than (or equal to) Minimum, Maximum if Value is greater than (or equal to) Maximum, or Value itself otherwise. Minimum and Maximum are optional and default to -Infinity or +Infinity, resp.escaped (Text:string):string
* Text
returns a copy of the given in which all control characters have been replaced by their corresponding escape sequencesunescaped (Text:string):string
* Text
returns a copy of the given in which all character escape sequences have been replaced by their corresponding (control) charactersquotable (Text:string, Quote:'"' | "'" = '"'):string
* Text
returns a copy of the given in which all control characters and Quotes have been replaced by their corresponding escape sequences. The outcome of this function may, f.e., used to construct literal values in JSON files. Quote is optional and defaults to the double-quotes characterquoted (Text:string, Quote:'"' | "'" = '"'):string
* Text
returns a copy of the given (embedded within a pair of Quotes) in which all control characters and Quotes have been replaced by their corresponding escape sequences. The outcome of this function may, f.e., used to construct literal values in JSON files. Quote is optional and defaults to the double-quotes characterHTMLsafe (Argument:string, EOLReplacement?:string):string
* Argument
returns a copy of the given in which all control characters (except \n) and characters with a special meaning for HTML have been replaced by their corresponding HTML entities. Any linefeed characters (\n) will be replaced by the given EOLReplacement string - specification of EOLReplacement is optional and defaults to MarkDownSafe (Argument:string, EOLReplacement?:string):string
* Argument
returns a copy of the given in which all control characters (except \n) and characters with a special meaning for (HTML and) Markdown have been replaced by their corresponding HTML entities. Any linefeed characters (\n) will be replaced by the given EOLReplacement string - specification of EOLReplacement is optional and defaults to ValuesDiffer (thisValue:any, otherValue:any, Mode?:'by-value'|'by-reference'|undefined):boolean
* true
returns if thisValue differs from otherValue - or false otherwise. Equality is checked by inspection, i.e., null, undefined, booleans, strings and functions are checked using the JavaScript === operator, comparison of numbers also takes care of NaN and a potential deviation by Number.EPSILON and objects or arrays are (by default) compared element by element. If the optional Mode is set to by-reference, Objects are always compared by reference, if set to by-value, instances of Boolean, Number and String are always compared by their primitive valueValuesAreEqual (thisValue:any, otherValue:any, Mode?:'by-value'|'by-reference'|undefined):boolean
* true
returns if thisValue equals to otherValue - or false otherwise. Equality is checked by inspection, i.e., null, undefined, booleans, strings and functions are checked using the JavaScript === operator, comparison of numbers also takes care of NaN and a potential deviation by Number.EPSILON and objects or arrays are (by default) compared element by element. If the optional Mode is set to by-reference, Objects are always compared by reference, if set to by-value, instances of Boolean, Number and String are always compared by their primitive valueObjectIsEmpty (Candidate:any):boolean
Candidate
returns true if the given is an empty object (i.e., an object without any own* properties) - or false otherwiseObjectIsNotEmpty (Candidate:any):boolean
Candidate
returns true if the given is a non-empty empty object (i.e., an object with at least one own* property) - or false otherwiseStringIsEmpty (Candidate:string):boolean
* Candidate
returns true if the given is an empty string (i.e., a string which either contains no characters at all or only whitespace characters) - or false otherwiseStringIsNotEmpty (Candidate:string):boolean
* Candidate
returns true if the given is a non-empty string (i.e., a string which contains one or more characters and not all of them are whitespace characters) - or false otherwiseValidatorForClassifier (Classifier:(Value:any) => boolean, NilIsAcceptable:boolean, Expectation:string):Function
Description
this function is used internally to construct many of the offered argument validation functions: it returns a new function which takes a and an Argument, uses the given Classifier to check if Argument belongs to the expected category of values and - if it does - returns the primitive value of the given Argument. Otherwise, an error message is constructed, which includes the given Description and complains about the given value not being a "valid ${Expectation}" - i.e., Expectation should describe the expected kind of argument. If set to true, NilIsAcceptable indicates that Argument may be missing (i.e., null or undefined), otherwise the given Argument is mandatory.ValidatorForClassifier
Important Note: if you plan to develop a library which may be "tree-shaked" by application bundlers (such as WebPack and Rollup) and export functions built with , you should mark all invocations of ValidatorForClassifier as "free of side-effects" by prepending them with /#__PURE__*/ - otherwise those invocations will remain in the bundled code even if you don't use the corresponding exportsvalidatedArgument (Description:string, Argument:any, ValueIsValid:(Value:any) => boolean,NilIsAcceptable:boolean, Expectation:string):any|null|undefined
* Argument
this function is used internally to actually validate a given and throw an Error with a message containing the given Description, if not. ValueIsValid is the function used check Argument and should return true if Argument is "valid" or false if not. If set to true, NilIsAcceptable indicates that Argument may be missing (i.e., null or undefined), otherwise the given Argument is mandatory. If validation fails, an error message is constructed, which includes the given Description and complains about the given value not being a "valid ${Expectation}" - i.e., Expectation should describe the expected kind of argumentFunctionWithName (originalFunction:Function, desiredName:string|String):Function
* originalFunction
this function is used internally to convert an anonymous function into a named one - either by setting the desiredName for the existing function or by wrapping it into a new function with that name
* ColorSet
is an object, whose keys are the names of all colors known by (and built into) a web browser and the corresponding values are the RGBA specifications of these colors
* HexColor (Color:string):string
converts a given Color string (which must be a valid CSS color specification) into the long hexadecimal format (#rrggbbaa)shortHexColor (Color:string):string
* Color
converts a given string (which must be a valid CSS color specification) into the short hexadecimal format (#rrggbb) - such a format must be used for HTML input elements of type "color"RGBAColor (Color:string):string
* Color
converts a given string (which must be a valid CSS color specification) into the RGBA format (rgba(r,g,b,a))
You may easily build this package yourself.
Just install NPM according to the instructions for your platform and follow these steps:
1. either clone this repository using git or download a ZIP archive with its contents to your disk and unpack it there
2. open a shell and navigate to the root directory of this repository
3. run npm install in order to install the complete build environmentnpm run build
4. execute to create a new build
If you made some changes to the source code, you may also try
```
npm run agadoo
in order to check if the result is still tree-shakable.
You may also look into the author's build-configuration-study for a general description of his build environment.