{"id":21173913,"url":"https://github.com/simple-automation-testing/sat-utils","last_synced_at":"2025-10-25T16:12:34.384Z","repository":{"id":45789529,"uuid":"309180391","full_name":"Simple-Automation-Testing/sat-utils","owner":"Simple-Automation-Testing","description":null,"archived":false,"fork":false,"pushed_at":"2025-07-03T12:06:17.000Z","size":195,"stargazers_count":5,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-03T13:22:32.654Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Simple-Automation-Testing.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-11-01T20:17:54.000Z","updated_at":"2025-07-03T12:06:25.000Z","dependencies_parsed_at":"2024-04-21T10:26:39.328Z","dependency_job_id":"8ca4d074-a060-4fde-ab7d-a6362d2d37ae","html_url":"https://github.com/Simple-Automation-Testing/sat-utils","commit_stats":{"total_commits":76,"total_committers":2,"mean_commits":38.0,"dds":"0.013157894736842146","last_synced_commit":"0e17db7a27f81d8497e7e612f774f9416fab6724"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Simple-Automation-Testing/sat-utils","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simple-Automation-Testing%2Fsat-utils","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simple-Automation-Testing%2Fsat-utils/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simple-Automation-Testing%2Fsat-utils/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simple-Automation-Testing%2Fsat-utils/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Simple-Automation-Testing","download_url":"https://codeload.github.com/Simple-Automation-Testing/sat-utils/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simple-Automation-Testing%2Fsat-utils/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264503949,"owners_count":23618762,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-20T16:52:39.309Z","updated_at":"2025-10-25T16:12:29.352Z","avatar_url":"https://github.com/Simple-Automation-Testing.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# The purpose of this library is combine utils functions in one place\n\n![npm downloads](https://img.shields.io/npm/dm/sat-utils.svg?style=flat-square)\n\n## Content\n\n- [getRandomString](#getrandomstring)\n- [isArray](#isarray)\n- [isObject](#isobject)\n- [isNull](#isnull)\n- [isSet](#isset)\n- [isMap](#ismap)\n- [isUndefined](#isundefined)\n- [isNumber](#isnumber)\n- [isPromise](#ispromise)\n- [isBoolean](#isboolean)\n- [isRegExp](#isregexp)\n- [isSymbol](#issymbol)\n- [isFunction](#isfunction)\n- [isDate](#isdate)\n- [isBuffer](#isbuffer)\n- [isArguments](#isarguments)\n- [isAsyncFunction](#isasyncfunction)\n- [isType](#istype)\n- [getType](#gettype)\n- [isPrimitive](#isprimitive)\n- [canBeProxed](#canbeproxed)\n- [toArray](#toarray)\n- [shuffleArr](#shufflearr)\n- [shuffleArrMutable](#shufflearrmutable)\n- [prettifyCamelCase](#prettifycamelcase)\n- [isEmptyArray](#isemptyarray)\n- [isEmptyObject](#isemptyobject)\n- [isNotEmptyObject](#isnotemptyobject)\n- [isNotEmptyArray](#isnotemptyarray)\n- [execNumberExpression](#execnumberexpression)\n- [getDirFilesList](#getdirfileslist)\n- [safeJSONstringify](#safejsonstringify)\n- [safeJSONparse](#safejsonparse)\n- [camelize](#camelize)\n- [safeHasOwnPropery](#safehasownpropery)\n- [chunkArr](#chunkarr)\n- [millisecondsToMinutes](#millisecondstominutes)\n- [getRandomSubString](#getrandomsubstring)\n- [lengthToIndexesArray](#lengthtoindexesarray)\n- [getRandomNumberFromRange](#getrandomnumberfromrange)\n- [asyncRepeat](#asyncrepeat)\n- [asyncMap](#asyncmap)\n- [asyncForEach](#asyncforeach)\n- [asyncReduce](#asyncReduce)\n- [getStringEqualtyPersentage](#getStringEqualtyPersentage)\n- [stringifyData](#stringifydata)\n\n### getRandomArrayItem\n\n```js\nconst { getRandomArrayItem } = require('sat-utils');\nconst firstItem = getRandomArrayItem([1, 2, 3, 4]); // 2\nconst [first, second] = getRandomArrayItem([1, 2, 3, 4], 2); // [3, 1]\ngetRandomArrayItem([1, 2, 3, 4], 10); // =\u003e RangeError('getRandomArrayItem(): more elements taken ...\ngetRandomArrayItem([]); // =\u003e RangeError('getRandomArrayItem(): given array is empty')\ngetRandomArrayItem(null); // =\u003e TypeError 'getRandomArrayItem(): first argument should be an')\n```\n\n## getRandomString\n\n```js\nconst { getRandomString } = require('sat-utils');\nconst str1 = getRandomString(5); // AsRTl\nconst str2 = getRandomString(5, { numbers: true }); // 09326\nconst str3 = getRandomString(5, { lettersAndNumbers: true }); // 0B3a6\nconst str4 = getRandomString(5, { symbols: true }); // !@#$^\nconst str5 = getRandomString(5, { lettersNumbersAndSymbols: true }); // a2#B^\nconst str6 = getRandomString(5, { lowerCase: true }); // abcd^\n```\n\n## sleep\n\n```js\nconst { sleep } = require('sat-utils');\nasync function test() {\n  await sleep(2500);\n}\n```\n\n## isArray\n\n```js\nconst { isArray } = require('sat-utils');\n// any argument\nisArray(undefined); // =\u003e boolean\n```\n\n## isObject\n\n```js\nconst { isObject } = require('sat-utils');\n// any argument\nisObject(undefined); // =\u003e boolean\n```\n\n## isRegExp\n\n```js\nconst { isRegExp } = require('sat-utils');\n// any argument\nisRegExp(/a/gi); // =\u003e boolean\n```\n\n## isNull\n\n```js\nconst { isNull } = require('sat-utils');\n// any argument\nisNull(undefined); // =\u003e boolean\n```\n\n## isString\n\n```js\nconst { isString } = require('sat-utils');\n// any argument\nisString(undefined); // =\u003e boolean\n```\n\n## isSet\n\n```js\nconst { isSet } = require('sat-utils');\n// any argument\nisSet(undefined); // =\u003e boolean\n```\n\n## isMap\n\n```js\nconst { isMap } = require('sat-utils');\n// any argument\nisMap(undefined); // =\u003e boolean\n```\n\n## isUndefined\n\n```js\nconst { isUndefined } = require('sat-utils');\n// any argument\nisUndefined(undefined); // =\u003e boolean\n```\n\n## isNumber\n\n```js\nconst { isNumber } = require('sat-utils');\n// any argument\nisNumber(undefined); // =\u003e boolean\n```\n\n## isPromise\n\n```js\nconst { isPromise } = require('sat-utils');\n// any argument\nisPromise(undefined); // =\u003e boolean\n```\n\n## isBuffer\n\n```js\nconst { isBuffer } = require('sat-utils');\n// any argument\nisBuffer(undefined); // =\u003e boolean\n```\n\n## isBoolean\n\n```js\nconst { isBoolean } = require('sat-utils');\n// any argument\nisBoolean(undefined); // =\u003e boolean\n```\n\n## isSymbol\n\n```js\nconst { isSymbol } = require('sat-utils');\n// any argument\nisSymbol(undefined); // =\u003e boolean\n```\n\n## isFunction\n\n```js\nconst { isFunction } = require('sat-utils');\n// any argument\nisFunction(undefined); // =\u003e boolean\n```\n\n## isDate\n\n```js\nconst { isDate } = require('sat-utils');\n// any argument\nisDate(new Date()); // =\u003e boolean\n```\n\n## isArguments\n\n```js\nconst { isArguments } = require('sat-utils');\n// any argument\nisArguments(new Date()); // =\u003e boolean\n```\n\n## isAsyncFunction\n\n```js\nconst { isAsyncFunction } = require('sat-utils');\n// any argument\nisAsyncFunction(undefined); // =\u003e boolean\n```\n\n## isType\n\n```js\nconst { isType } = require('sat-utils');\n// any argument\nisType(undefined, 'function'); // =\u003e boolean\n```\n\n## getType\n\n```js\nconst { getType } = require('sat-utils');\n// any argument\ngetType(undefined); // =\u003e string\n```\n\n## isPrimitive\n\n```js\nconst { isPrimitive } = require('sat-utils');\n// any argument\nisPrimitive(undefined); // =\u003e boolean\n```\n\n## canBeProxed\n\n```js\nconst { canBeProxed } = require('sat-utils');\n// any argument\ncanBeProxed(undefined); // =\u003e boolean\n```\n\n## toArray\n\n```js\nconst { toArray } = require('sat-utils');\n\nconst arr1 = toArray(undefined); // []\nconst arr2 = toArray(null); // [null]\nconst arr3 = toArray([1, 2, 3]); // [1,2,3]\n```\n\n## shuffleArr\n\n```js\nconst { shuffleArr } = require('sat-utils');\n\nconst arr1 = shuffleArr([2, 3, 1]); // [1,3,2]\nshuffleArr({}); // TypeError 'shuffleArr(): first argument should be an array ...'\n```\n\n## shuffleArrMutable\n\n```js\nconst { shuffleArrMutable } = require('sat-utils');\n\nconst arr = [1, 2, 3, 4, 5];\nshuffleArrMutable(arr);\n\nconsole.log(arr); // [ 5, 2, 4, 1, 3 ]\n\nshuffleArrMutable({}); // TypeError 'shuffleArr(): first argument should be an array ...'\n```\n\n## prettifyCamelCase\n\n```js\nconst { prettifyCamelCase } = require('sat-utils');\n\nconst res1 = prettifyCamelCase(str); // Prettify Camel Case\nconst res2 = prettifyCamelCase(str, { joinWords: '__' }); // Prettify__Camel__Case\nconst res3 = prettifyCamelCase(str, { allUpperCase: true, joinWords: '_' }); // PRETTIFY_CAMEL_CASE\nconst res4 = prettifyCamelCase(str, { firstWordUpperCase: true }); // Prettify camel case\n```\n\n## isEmptyArray\n\n```js\nconst { isEmptyArray } = require('sat-utils');\n\nconst isEmpty = isEmptyArray([]); // true\nconst isEmpty1 = isEmptyArray([1]); // false\nconst isEmpty2 = isEmptyArray(null); // false\nconst isEmpty3 = isEmptyArray({}); // false\n```\n\n## isNotEmptyArray\n\n```js\nconst { isNotEmptyArray } = require('sat-utils');\n\nconst isEmpty = isNotEmptyArray([]); // false\nconst isEmpty1 = isNotEmptyArray([1]); // true\nconst isEmpty2 = isNotEmptyArray(null); // false\nconst isEmpty3 = isNotEmptyArray({}); // false\n```\n\n## isEmptyObject\n\n```js\nconst { isEmptyObject } = require('sat-utils');\n\nconst isEmpty = isEmptyObject({}); // true\nconst isEmpty1 = isEmptyObject({ a: 1 }); // false\nconst isEmpty2 = isEmptyObject([]); // false\nconst isEmpty3 = isEmptyObject([1]); // false\nconst isEmpty4 = isEmptyObject(null); // false\n```\n\n## isEmptyObject\n\n```js\nconst { isNotEmptyObject } = require('sat-utils');\n\nconst isEmpty = isNotEmptyObject({}); // false\nconst isEmpty1 = isNotEmptyObject({ a: 1 }); // true\nconst isEmpty2 = isNotEmptyObject([]); // false\nconst isEmpty3 = isNotEmptyObject([1]); // false\nconst isEmpty4 = isNotEmptyObject(null); // false\n```\n\n## execNumberExpression\n\n```js\nconst { execNumberExpression } = require('sat-utils');\n\nconst isTruly = execNumberExpression('\u003e10', 11); // true\nconst isTruly1 = execNumberExpression('\u003e10 and \u003c12', 11); // true\nconst isTruly2 = execNumberExpression('\u003e10 and \u003c13 and !== 12', 11); // true\nconst isTruly3 = execNumberExpression('\u003c9', 11); // false\nconst isTruly4 = execNumberExpression('!==11', 11); // false\n```\n\n## getDirFilesList\n\n```js\nconst { getDirFilesList } = require('sat-utils');\nconst files = getDirFilesList('./node_modules'); // all absolute file pathes in node_module folder\n```\n\n## safeJSONstringify\n\n```js\nconst { safeJSONstringify } = require('sat-utils');\nconsole.log(safeJSONstringify({}));\nconsole.log(safeJSONstringify(Object));\nconsole.log(safeJSONstringify(new Proxy()));\n```\n\n## safeJSONparse\n\n```js\nconst { safeJSONparse } = require('sat-utils');\nconsole.log(safeJSONparse('{}'));\nconsole.log(safeJSONstringify('dsadas dasda', {}));\n```\n\n## camelize\n\n```js\nconst { camelize } = require('sat-utils');\nconsole.log(camelize('here is my camel string')); // hereIsMyCamelString\n```\n\n## safeHasOwnPropery\n\n```js\nconst { safeHasOwnPropery } = require('sat-utils');\n\nsafeHasOwnPropery({ a: 1 }, 'a'); // true\nsafeHasOwnPropery({ a: 1 }, 'b'); // false\nsafeHasOwnPropery(undefined, 'b'); // false\nsafeHasOwnPropery(null, 'b'); // false\nsafeHasOwnPropery(function test() {\n  /** */\n}, 'name'); // true\n```\n\n## chunkArr\n\n```js\nconst { chunkArr } = require('sat-utils');\n\nchunkArr([1, 2, 3], 2); // [[1, 3], [2]]\nchunkArr([1, 2, 3], 2, true); // [[1, 2], [3]]\n```\n\n## millisecondsToMinutes\n\n```js\nconst { millisecondsToMinutes } = require('sat-utils');\n\nmillisecondsToMinutes(100_000); // 1:40\n```\n\n## getRandomSubString\n\n```js\nconst { getRandomSubString } = require('sat-utils');\n\ngetRandomSubString('abcdefgj', 3); // fgf\n```\n\n## millisecondsToMinutes\n\n```js\nconst { millisecondsToMinutes } = require('sat-utils');\n\nmillisecondsToMinutes(100_000); // 1:40\n```\n\n## lengthToIndexesArray\n\n```js\nconst { lengthToIndexesArray } = require('sat-utils');\n\nlengthToIndexesArray(3); // [0,1,2]\n```\n\n## getRandomNumberFromRange\n\n```js\nconst { getRandomNumberFromRange } = require('sat-utils');\n\ngetRandomNumberFromRange(1, 10); // 9\n```\n\n## asyncRepeat\n\n```js\nconst { asyncRepeat } = require('sat-utils');\n\nasyncRepeat(5, async () =\u003e {\n  /* async logic will be executed 5 times */\n});\n```\n\n## asyncMap\n\n```js\nconst { asyncMap } = require('sat-utils');\n\nasyncMap([1, 2, 3], async (item, index, arr) =\u003e item + index).then(console.log);\n```\n\n## asyncForEach\n\n```js\nconst { asyncForEach } = require('sat-utils');\n\nasyncForEach([1, 2, 3], async (item, index, arr) =\u003e console.log(item, index, arr));\n```\n\n## asyncReduce\n\n```js\nconst { asyncReduce } = require('sat-utils');\n\nasyncReduce([1, 2, 3], (acc, item) =\u003e new Promise(res =\u003e setTimeout(() =\u003e res(acc + item), 25)), 1).then(console.log); // 7\n```\n\n## getStringEqualtyPersentage\n\n```js\nconst { getStringEqualtyPersentage } = require('sat-utils');\n\nconst percentage = getStringEqualtyPersentage('asd', 'asd'); // 100.0\n```\n\n## stringifyData\n\n```js\nconst { stringifyData } = require('sat-utils');\nconst obj = {\n      b: [{ b: 1 }],\n      c: {\n        c: () =\u003e console.log('stringifyData'),\n      },\n    };\n\nconst str = stringifyData(data); // {b: [{b: 1}], c: {c: () =\u003e console.log('stringifyData')}}\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimple-automation-testing%2Fsat-utils","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimple-automation-testing%2Fsat-utils","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimple-automation-testing%2Fsat-utils/lists"}