@kubric/utils v2.0.5
@kubric/utils
@kubric/utils contains some commonly used util functions
Installation
yarn add @kubric/utilsnpm i @kubric/utilsUsage
import {isUndefined, get, mapValues} from "@kubric/utils";Functions
Type checks
isNull(val): returnstrueif val isnullisUndefined(val): returnstrueif val isundefinedisNullOrUndefined(val): returnstrueif val isnullorundefinedisFunction(val): returnstrueif val is a functionisString(val): returnstrueif val is a stringisValidString(val): returnstrueif val is a non-empty stringisObjectLike(val): returnstrueif val is notnulland is of typeobjectisObject(val): returnstrueif val is object-like or is a functionisPlainObject(val): returnstrueif val is an object created by theObjectconstructor or one with a[ [Prototype]]ofnull.isNumber(val): returnstrueif val is a number, or a value that can be parsed into a number.
JSON
get(object, path, defaultValue): returns value fromobjectatpath. If the value atpathis found to beundefined, thedefaultValue(is any) is returnedset(object, path, value, options): Setsvalueinobjectin thepathspecified. Ifoptions.createistrue, all objects along the path will be createdgetAsNumbers(object, paths, defaults): Accepts any object and an array of paths. For every path in index "pathIndex", it will be resolved against the object and an array of values will be returned as per the following rules- If the value is a number or a value that can be coerced into a number, the parsed number is returned
- If the value exists but is not a number or a value that can be parsed into a number, the value is returned as such
- If the value exists and "defaults" is a non array value, "defaults" is passed back
- If the value exists and "defaults" is as array value, "defaultspathIndex" is passed back
String
capitalize(str): Capitalizesstri.e. makes the first letter capitalgetStringHash(str): Returns a number hash forstrgetJSONHash(json): Returns a number hash for thejsonobject
Object
mapValues(object, func): Creates an object with the same keys asobjectand values generated by running each of it's properies throughfunc.funcis invoked with 2 argumentsvalueandkey.filterObject(object, func): To create a new object that contains keys/values filtered from the object that is passed in. Value of every key in obj is passed to the function. If the function returns true, the resultant object will have that key and its value, otherwise it is omitted in the returned object.
Function
debounce(func, wait): Creates a debounced function that delays invokingfuncuntil afterwaitmilliseconds have elapsed since the last time the debounced function was invoked.throttle(func, wait, options): Creates a throttled function that only invokesfuncat most once perwaitmilliseconds. Provideoptions.leadingandoptions.trailingto indicate whetherfuncshould be invoked on the leading and/or trailing edge of thewaittimeout. Thefuncis invoked with the last arguments provided to the throttled function. Subsequent calls to the throttled function return the result of the lastfuncinvocation. Ifoptions.leadingandoptions.trailingoptions are bothtrue,funcis invoked on the trailing edge of the timeout only if the throttled function is invoked more than once during thewaittimeout. Ifwaitis 0 andoptions.leadingisfalse,funcinvocation is deferred until to the next tick, similar to setTimeout with a timeout of 0.bindFunctions(funcMap, bindBefore, bindAfter): Creates an object with the same keys asfuncMapwhose values are obtained by binding the corresponding functions with values from the arraysbindBeforeandbindAfter. If any of the functions from the resultant map is called with sayarg1andarg2, the function'sargumentsobject will be have the value[...bindBefore, arg1, arg2, ...bindAfter]pipeline(funcArray, initialState): Returns a function that invokes the given array of functions sequentially by passing the output of the function at index n to the function at index n+1. The function returns the value returned by the last function in the array.
Promise
resolvePromises(promises): If provided with an array of promises, it returns a promise that resolves when all the promises in the array has resolved. The returned promise will resolve with an array of results with the result in index i corresponding to promise i in the input array. If provided with a map of promises, it returns a promise that resolves when all the promises in the object has resolved. The returned promise will resolve with a map of results with the result in key i corresponding to promise at the key i in the input object. If anything else is provided, the input value is returned as such.
StyleExtractor
Style extractor does concatenation of CSS class names from a style object and theme object. Refer to the test cases
at tests/StyleExtractor.test.js for examples