{"_id":"@vodyani/utils","_rev":"32-728b75eb5a129036f3f43eabb1b04ca4","name":"@vodyani/utils","dist-tags":{"latest":"8.8.1","beta":"8.7.0-beta.1"},"versions":{"1.0.0":{"name":"@vodyani/utils","license":"MIT","version":"1.0.0","author":{"name":"ChoGathK"},"description":"utils","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json","release":"npx semantic-release"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"release":{"extends":"@vodyani/semantic-release"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/jest":"27.4.1","@types/lodash":"^4.14.182","@types/node":"16.11.26","@vodyani/eslint-config":"1.0.10","@vodyani/semantic-release":"1.1.1","husky":"7.0.4","jest":"27.5.1","ts-jest":"27.1.3","typescript":"4.6.2"},"dependencies":{"lodash":"^4.17.21"},"types":"./dist/index.d.ts","gitHead":"5b2681a668f03f782578b133827745c4034003cf","_id":"@vodyani/utils@1.0.0","_nodeVersion":"16.16.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-Fai4ji/Rb3RjQ+/YY64GnklJuHoGXWstru+j2eYrRf03+4Dyq9ON2QKPXTnYlw/bdzP0uaTzKFbTNVqec9O2Ag==","shasum":"13259bc55a935e28d85ec51b4af89e59497c11a5","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-1.0.0.tgz","fileCount":21,"unpackedSize":23669,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICN2e82+RXeAos39xbThl/rYSeobCa7OXhFaikeO3p9yAiEAkRM1IsRghRHSNI9XhC1lrb890X3bC139Q7PTYl28ms0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJizqWcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqJMxAApHpq0k0W5NHgQj28aDVsXVh5Zudi+p8a5ECj7VOxGwWQQ86W\r\nPm36jJ5ATnD71DhpeikdHtYeF2l3MAdXjgmyeRWTr50VO70UT6GDGRzrbm3t\r\nmhEh4t1MQyAWH1qqq5+cqpeqfzEaw7nVCPTg6zVosYjSL/qTiss+F8GwPP+H\r\nl9+924KbhR2Ka2v4YSBm7DpEPky5SrmbIgWTzDELFf1e4cqOhHHxTE8GeeY8\r\nF3Fbf7QmUID6LwhYl6wu288LRlgN3bqjdQVbMaK9HSnLdR8xHBxmHr2D/iIT\r\nlwIQGcijGTVwg5dqsenPDfjAPydwgrVlAkDNX+K57HcTO56VSb949fEQV8R9\r\ncjxMhgJm63ws55AgqTnMYAYxFUlMglnCdae6aM9apGETKQZlwl3C6ImTeH1S\r\nzZNU3L6pvVhcf2UtMfa8rd2OZSEgDAwQ4eijcIhRyWmtB9ZwQZEHm0XPvywP\r\nQckocRHdQ9mT+GFoM+rUptoN4McdVoX+2m+nva2z4XBBiX+ye13gBwWKZYF1\r\n9/vdqURmZchbpkYJOFyYPVLaME8ekCYDvMIeKwtSuJ5U3/n/xi91aEKhh1p1\r\n7So4mXhjBWVF7HOsYip2k/qQs4z+etrnLSuMO2ZrZiqasokYYRrhyZGfq/+w\r\n3j+R0IwqKgK2mtUacXgXB6Da+dBlXE6CVq8=\r\n=9tXO\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.0.0_1657709980689_0.1418337386830446"},"_hasShrinkwrap":false},"1.1.0-beta.1":{"name":"@vodyani/utils","license":"MIT","version":"1.1.0-beta.1","author":{"name":"ChoGathK"},"description":"utils","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json","release":"npx semantic-release"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"release":{"extends":"@vodyani/semantic-release"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/jest":"27.4.1","@types/lodash":"^4.14.182","@types/node":"16.11.26","@vodyani/eslint-config":"1.0.10","@vodyani/semantic-release":"1.1.1","husky":"7.0.4","jest":"27.5.1","ts-jest":"27.1.3","typescript":"4.6.2"},"dependencies":{"lodash":"^4.17.21"},"types":"./dist/index.d.ts","readme":"# Vodyani utils\n\nbuilding...\n\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/latest.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/beta.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/dm/@vodyani/utils)](https://www.npmjs.com/package/@vodyani/utils)\n[![License](https://img.shields.io/github/license/vodyani/utils)](LICENSE)\n<br>\n![Workflow](https://github.com/vodyani/utils/actions/workflows/release.yml/badge.svg)\n[![codecov](https://codecov.io/gh/vodyani/utils/branch/master/graph/badge.svg?token=CI3WEJUN6L)](https://codecov.io/gh/vodyani/utils)\n\n## Features\n\nbuilding...\n\n## Installation\n\n```sh\nnpm install @vodyani/utils\n```\n\n## Team\n\n|[![ChoGathK](https://github.com/chogathK.png?size=100)](https://github.com/chogathK)|\n|:-:|\n|[ChoGathK](https://github.com/chogathK)|\n\n## License\n\nVodyani utils is [MIT licensed](LICENSE).\n","readmeFilename":"README.MD","gitHead":"0241e21b2b51d2a3b24649f7233953058e50101b","_id":"@vodyani/utils@1.1.0-beta.1","_nodeVersion":"16.16.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-P2F+X16SWCQ0O5HEwHtyXB59esmEkELJhhCJBVmEFIu8BZBd73VUxdBXLDYyGoPDVC8Ex/qAG9FixEuOySh03Q==","shasum":"d40aafa1527c227baac1756b762ca90e27a0b0d7","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-1.1.0-beta.1.tgz","fileCount":21,"unpackedSize":23910,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDu6y/idCNs6bnS/TNknUzBXfJJcSSAvGVxuQS6tccfXAiEA5GDu7hnXxK2+BnR+dSHDPm8gqhaSWqNdO4VQtdNHe5M="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJizqeRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqNrQ//SFCH9/HcanC0TWk2DnTG+nvdu3guNZjJhJZrjkt9PtICf9Rz\r\nmgGgc5tL1B4Vh+wkKaBx2vnNPqJat/GnLI2X5wdToyAdNPmmZhmMQTSRhTr+\r\n2rNHNvvMYutMNF8ZxT0KRsRUrpVArvOCx7POSvflbNKx6Q9N9CcS2iUSiduQ\r\nukN3FWr/4ZbKbfxiD5AtFPaJs9NOiF64q2iUHZO2H/6DvSoFnidqBamh4DLr\r\nyAgVccdXb1PcXcy7D8A+U4aUwJEowcV/hbRKd9tnNbpQyxKJItakRZSRyJkr\r\nzGTNOOHY9Wsb6fYApBJpIZgUOy/UU8GMm7Gavz7j6iam5CcG2uHiCRgx9Ygi\r\n1jhD/Wu9jiukihce4KmwN90M7nOBXl6EfKE5FFkztfbV3tGJKvVhQT/G6TrU\r\nBWqvGJMJwF5lXXJy1IM4X+50M5isIBFXAcfit1lr4O+8Q3+0thWkgp/13zSF\r\n3ONzayZ5dSwAlq1ujCZU1khs/dRPN1yMH63K1TT6RUg03khvhItb4MLqmZ2Z\r\nBg8QasMPHIvBfSFvlyqGtOkziNVg0nN5Ayczlrxxs8dXAG7ndBE9vJC+Jq3I\r\nOpsBN7GUBS931UMt5lApf/NnI5zlZVIwST6PbB+eCIa2eVIBZ4vadgfAwZTs\r\n8qxZ0OQPUyX6csPokTyM3OiTrL32Z0vAW5Y=\r\n=8mMF\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.1.0-beta.1_1657710481055_0.8348979890542323"},"_hasShrinkwrap":false},"1.1.0":{"name":"@vodyani/utils","license":"MIT","version":"1.1.0","author":{"name":"ChoGathK"},"description":"utils","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json","release":"npx semantic-release"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"release":{"extends":"@vodyani/semantic-release"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/jest":"27.4.1","@types/lodash":"^4.14.182","@types/node":"16.11.26","@vodyani/eslint-config":"1.0.10","@vodyani/semantic-release":"1.1.1","husky":"7.0.4","jest":"27.5.1","ts-jest":"27.1.3","typescript":"4.6.2"},"dependencies":{"lodash":"^4.17.21"},"types":"./dist/index.d.ts","gitHead":"8cf4b571bed4b8d89ccc6037cc4878bb8d34d11c","_id":"@vodyani/utils@1.1.0","_nodeVersion":"16.16.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-hFlI18GU5MezeU6t+F7yoCRY54GqL1VfbO28iHUQUp+LpVh7CkuWVRpBPu7ALt6HbzE1HNFWqP6CMWYRvyz7Ww==","shasum":"3331b0fac5b60bee2152a25ca5782c9639e1b4fa","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-1.1.0.tgz","fileCount":21,"unpackedSize":23903,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA0t9e5Ng4sDEpd0XZ0dvDKvgKJgFntg/IVD4/l2iPVhAiEAnok9qSFfzPSdpYKEkhfkvuNqp7o37965SVx6nkLN29g="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJizqgsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpVsA/+KlQoZy149SWm6u3ck60fFtEbK70YMNpwACFCg7vnRHV/pPX/\r\nCNhbs5V6WVuSa4Xo5KofPyshkrkWcMaZokgC3qcGeEuwYoB2+FnM68S7ZuL7\r\njfsugqq1jqAjuFFY1ScbxLbwPzIGDuvOZRe3BWHI9iQvXGkC9ZYSJix9O+Qt\r\nJWDPB0yehIAJGeatrZ4tFx8JY4Amw0oYED8ZL9yWqkaOlgKnWzLSpJ6TBD2R\r\nPsJ1cQ/A6zh/uWockyiJ8KFjONyyaUpk9+84UbO7jBmimVFkbddTQ2L2aIEh\r\nA3ZYc7DWBn97qG2MtFtArn7gWuWoy3ZugjiTVsV/SN5OM7dKG9O1PLT8iWnF\r\nSJNXkEgqGrHIl6sPnaQ/aMRVXf7+3/hPQc9pv3Nq6ccJZnVq6yu4CqvZzpP7\r\nIzrf9OkCqzUwFvaQRVecKXJtVNskb3bJCbEtbfbLIx54ZKeab4jG35Tl2gsP\r\nK/Iupls9lnAoRB/jrqZiJRKf7T9oSFYsLk86i4CFmbPt+ah1jmxxh83N3Wrz\r\nQdMI0PqjGYJVYuG0ydUkWX+j9iU9SOOkGqbmQqnwYQfX6t6Z6WiLSTQDEi8n\r\n3C0uPQtVk0aEBQvg3ykz0Nw/dcRSprskXqP7YTSwRfflGWAoNE4Bkt9zi+j9\r\nbuYwzfbha+PDQiGE5dkPKqt+pNeYW4OWIb0=\r\n=m4rC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.1.0_1657710635875_0.7155428120655918"},"_hasShrinkwrap":false},"1.1.1-beta.1":{"name":"@vodyani/utils","license":"MIT","version":"1.1.1-beta.1","author":{"name":"ChoGathK"},"description":"😁 Provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json","release":"npx semantic-release"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"release":{"extends":"@vodyani/semantic-release"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/jest":"27.4.1","@types/lodash":"4.14.182","@types/node":"16.11.26","@vodyani/eslint-config":"^1.0.10","@vodyani/semantic-release":"1.1.1","husky":"7.0.4","jest":"27.5.1","ts-jest":"27.1.3","typescript":"4.6.2"},"dependencies":{"lodash":"4.17.21"},"types":"./dist/index.d.ts","readme":"# Vodyani utils\n\n😁 Provides common utility functions used in server-side development.\n\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/latest.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/beta.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/dm/@vodyani/utils)](https://www.npmjs.com/package/@vodyani/utils)\n[![License](https://img.shields.io/github/license/vodyani/utils)](LICENSE)\n<br>\n![Workflow](https://github.com/vodyani/utils/actions/workflows/release.yml/badge.svg)\n[![codecov](https://codecov.io/gh/vodyani/utils/branch/master/graph/badge.svg?token=CI3WEJUN6L)](https://codecov.io/gh/vodyani/utils)\n\n## Installation\n\n```sh\nnpm install @vodyani/utils\n```\n\n## Usage\n\n|Features|Type|Description|\n|:-:|:-:|:-:|\n|[isDictionary](#isdictionary)|object|Checks whether the current object is a dictionary object.|\n|[isKeyof](#iskeyof)|object|Determines whether the object contains the current attribute.|\n|[toMatch](#tomatch)|object|Walks deeply through the object and returns the property value corresponding to the specified parameter.|\n|[toRestore](#torestore)|object|Restores to the corresponding object based on the depth of the specified property and property value.|\n|[toBuffer](#tobuffer)|stream|Convert Stream data to buffer.|\n|[toStream](#tostream)|stream|Convert Buffer data to stream.|\n|[toDelay](#todelay)|promise|Wait during an asynchronous function call.|\n|[toCycle](#tocycle)|promise|Create a recurring scheduled task.|\n|[toRetry](#toretry)|promise|Create a caller that can retry the callback function.|\n\n### isDictionary\n\nChecks whether the current object is a dictionary object.\n\n⚠️ Dictionary is not in (`Map`/`Set`/`Symbol`/`Buffer`/`Array`/`Stream`/`RegExp`/`Function`/`String`/`Number`/`Boolean`).\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`dict`|`any`|*The object to judge.*|\n\n**return**\n\n`boolean`\n\n**example**\n```ts\nisDictionary({}) // true\nisDictionary(Object()) // true\nisDictionary({ name: 'dict' }) // true\nisDictionary(new String()) // false\nisDictionary(new Number()) // false\nisDictionary(new Boolean()) // false\nisDictionary(new Map()) // false\nisDictionary(new Set()) // false\nisDictionary(new Array()) // false\nisDictionary(Buffer.from([])) // false\nisDictionary(new Stream()) // false\nisDictionary(null) // false\nisDictionary(undefined) // false\n```\n\n### isKeyof\n\nDetermines whether the object contains the current attribute.\n\n**param**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`obj`|`object`|*The object to judge.*|\n|`key`|`string`/`number`/`symbol`|*The property of object.*|\n\n**return**\n\n`boolean`\n\n**example**\n\n```ts\nconst sym = Symbol(1);\nconst obj = { test: 'test' };\nconst obj1 = { 0: 'test' };\nconst obj2 = { [sym]: 'test' };\n\nisKeyof(obj, 'test') // true\nisKeyof(obj, 'test1') // false\nisKeyof(obj1, 0) // true\nisKeyof(obj2, sym) // true\n```\n\n### toMatch\n\nWalks deeply through the object and returns the property value corresponding to the specified parameter.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`obj`|`any`|*The object to judge.*|\n|`token`|`string`|*The properties of the object and splice them with `rule`.*|\n|`rule`|`string`|*The rules for splicing, by default, are `.`*|\n\n**return**\n\n`T` | `any`\n\n**example**\n\n```ts\ntoMatch({ job: { name: 'job' }}, 'job.name') // 'job'\ntoMatch({ cat: { info: { name: 'mimi' } }}, 'cat.info.name') // 'mimi'\n```\n\n### toRestore\n\nRestores to the corresponding object based on the depth of the specified property and property value.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`value`|`any`|*The object properties value.*|\n|`token`|`string`|*The properties of the object and splice them with `rule`.*|\n|`rule`|`string`|*The rules for splicing, by default, are `.`*|\n\n**return**\n\n`T` | `any`\n\n**example**\n\n```ts\ntoRestore('job', 'job.name') // { job: { name: 'job' }}\ntoRestore('mimi', 'cat.info.name') // { cat: { info: { name: 'mimi' } }\n```\n\n### toBuffer\n\nConvert Stream data to buffer.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`stream`|`Stream`|*The stream data.*|\n\n**return**\n\n`Promise<Buffer>`\n\n**example**\n\n```ts\nawait toBuffer(data) // => stream data\n```\n\n### toStream\n\nConvert Buffer data to stream.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`buffer`|`Buffer`|*The buffer data.*|\n|`encoding`|`ascii`/`utf8`/`utf-8`/`utf16le`/`ucs2`/`ucs-2`/`base64`/`base64url`/`latin1`/`binary`/`hex`|*The encoding type.*|\n\n**return**\n\n`Promise<Duplex>`\n\n**example**\n\n```ts\nawait toStream(data) // => buffer data\n```\n\n### toDelay\n\nWait during an asynchronous function call.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`delay`|`number`|*The waiting time (The time unit is milliseconds).*|\n\n**return**\n\n`Promise<void>`\n\n**example**\n\n```ts\nawait toDelay(2000) // To waiting 2000 milliseconds ...\n```\n\n### toCycle\n\nCreate a recurring scheduled task.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`callback`|`Function`|*A callback function that needs to be called periodically.*|\n|`options`|`CycleOptions`|*Configuration options when triggered.*|\n\n*CycleOptions*\n\n```ts\nexport interface CycleOptions {\n  /** The cycle time, default 1000 (The time unit is milliseconds). */\n  interval: number;\n  /** The callback argument. */\n  args?: any[];\n}\n```\n\n**return**\n\n`CycleClearHandler` Returns a method that closes timed calls.\n\n*CycleClearHandler*\n\n```ts\nexport interface CycleClearHandler {\n  /** The closes timed calls. */\n  close: () => void\n}\n```\n\n**example**\n\n```ts\nawait toCycle(fn, { interval: 1000 }) // The fn function is executed every 2000 milliseconds ...\n```\n\n### toRetry\n\nCreate a recurring scheduled task.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`callback`|`Function`|*The callback function to call.*|\n|`options`|`RetryOptions`|*Configuration options when triggered.*|\n\n*RetryOptions*\n\n```ts\nexport interface RetryOptions {\n  /** The retry count. */\n  count: number;\n  /** The waiting time (The time unit is milliseconds). */\n  delay: number;\n  /** The callback argument.*/\n  args?: any[];\n}\n```\n\n**return**\n\n`Promise<T>` | `Promise<any>`\n\n**example**\n\n```ts\nawait toRetry(fn, { delay: 100, count: 3 }) // The `fn` will wait 100 milliseconds after a failure and then call again three times\n```\n\n## Team\n\n|[![ChoGathK](https://github.com/chogathK.png?size=100)](https://github.com/chogathK)|\n|:-:|\n|[ChoGathK](https://github.com/chogathK)|\n\n## License\n\nVodyani utils is [MIT licensed](LICENSE).\n","readmeFilename":"README.MD","gitHead":"d557fa357eeb76958e3ebfe6cd9f0d32f2da9159","_id":"@vodyani/utils@1.1.1-beta.1","_nodeVersion":"16.16.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-2aXBW+Oy8tjz/u9Y6Y0osVGiAECE0OxeF8w6Ut4oUJl09+lQbZCZEqJUP5VQ2CPQ/w0howxeIK6FtAUpTsnqPQ==","shasum":"3efe34efdbf560b8b77800d443fefda4eee65ed5","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-1.1.1-beta.1.tgz","fileCount":21,"unpackedSize":29385,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJI1ssx42dY34RdGqV2OF+LRsV46QUDe33dzw0R8Z+UwIhAMKrbimVAGyXU4vxlO05fFNnM+7pNPx0CeSmDTect0u0"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi1RmvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoz/g/9GNf9StLzFSkBq6tjuUhVXLI4HZRSNvomVFc7XnxzhxGhyG/8\r\nIQll+I9iXN5LP1JmJrtNSjVIja6jYHXb73+29WGLz04RBwaI0xdKi1FYqrVK\r\nuVengexKFyRmCkNnJ25xjSOl2mm2nn+jjSxofGw04/gY4AFI/fyGocsFsvHj\r\n1owxDkldlh8EIUlDtHMXyv7SpYPcW++hvwbxf3UWCbJ7tNIWy4SzBU1cSZm6\r\nQtg9w3S+WiVmWFnQ6lyXYn8xPAILFlAT8WSlBJFAzTCK69uiplkwJG7CPeEv\r\nOzgnyAF60phImCpmHj21qkrKWOOj/Yo3ChusI0yXrod//akUorOyVBonK+W4\r\nbM8JzRSxPsBwcMt5T5VqS3IVTNFXa863lCEVRo9fyV9Ug0iQKiMtHqYcuS3f\r\nYy7+vms9rMaeuIbg6p8Y51T9BlG6HlYkNszYrDiDQ4qVHilYRd/DAM/Web37\r\nLoBqMpAToL1BE7LDVORhQlvDVmdj8QvUVo2F5I8IBn/nkJWWD8ICVFeoLOxr\r\ndaZeTdt/dyOL9GL8cb1F2ZiDQQatrI64dYWZyQWHFekDY5vjbgmosR3hPB3t\r\n2tzWDymw7risTehB6NJ/VCGBmG2i6YNOFSDCThp8ehLjMiwGuyvtkfC8IJTx\r\nUyoM457mVJfGBm14iWjCXot6aWl35RIiKGs=\r\n=HjGa\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.1.1-beta.1_1658132911068_0.3166043547876163"},"_hasShrinkwrap":false},"1.1.1":{"name":"@vodyani/utils","license":"MIT","version":"1.1.1","author":{"name":"ChoGathK"},"description":"😁 Provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json","release":"npx semantic-release"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"release":{"extends":"@vodyani/semantic-release"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/jest":"27.4.1","@types/lodash":"4.14.182","@types/node":"16.11.26","@vodyani/eslint-config":"^1.0.10","@vodyani/semantic-release":"1.1.1","husky":"7.0.4","jest":"27.5.1","ts-jest":"27.1.3","typescript":"4.6.2"},"dependencies":{"lodash":"4.17.21"},"types":"./dist/index.d.ts","gitHead":"7106b51a3129aa7a36ee1813b209cf286b3ab6bc","_id":"@vodyani/utils@1.1.1","_nodeVersion":"16.16.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-hQ3D+UZlQEorZKbOoGHs40ybajbnvOdW0ftEVwCGJYLRInJx5iQEsFIbHnVPsU8y1PwL92PFB9Nn3SQPj1jdjA==","shasum":"3e8d005facdc51b27656636b81ebf612492817a9","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-1.1.1.tgz","fileCount":21,"unpackedSize":29378,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1v1PaOvtrX7snPo8U20FkHDumhqSGzxHMYD6hj+SKCQIgWdGIPPMiiVytxGUIvxzNaMOjFtVyCPayksqgvRtDpWI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi1RqsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpZRRAAjmM67oW8wdEsPoHwOZUaL199sxs5EgkjFoY5iWxnDZjSj/ZN\r\n7SCH8niylGzik42Wh71gvBnU3xV3COLyIEB9mr0MjT81d9Y/ZygoSo/b5B55\r\njZEi9ey26ZpgnxA/oB+sXGXZIy1rpfX12bfZNJp0JU5DnMP3uqcqhwwAYZsK\r\ngzvVQDV73/U0ycNPXXwh7d8OI44X9qiuI1PiX6u/EXzpue/Vk4rgKBj+MMdB\r\nc1zIDButKdfmp3EuU2NUTdKNH6HZOFZzjl0dChLu5P6I8Sm49eyJLmV78z0H\r\nS6vyueW1JXDGRzB1KQDm5mI/7UDSaXGeBJ4pC11Ed36gibFgJzujJKv/nOaw\r\n5eHUOiRmMaJZ+K9vUbw6GF9NHAVnnInpKSd3abnqEybdOjisJdLRv72ncg7e\r\nw0SaUWEA4G3qi91uWLAsUZVH9wyFkiI+rV0msk0TOkwE3rPsgciJypQ7zUcK\r\n/Bkikv5zlxlSTTG22ElALeu9gviBP0k/Q3LuKMsWTj2fEvCKaBd0/mFvnJeG\r\nGZMMPm8O/+dTXxGfoDbj++W+RFejG/AIwuvL6fcOAUrAkUaZAZT07+PNtUB9\r\nbdIN+Mx/S3rmyfMSpAIpGHh/BlsqWJF4hdHJa9UJ2rZDPCq5LKvdNWWgsMkP\r\nIX76Y4SjgIQUueNG7fArG0w7xrMLdFtHLok=\r\n=atq5\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.1.1_1658133164430_0.9256913514509566"},"_hasShrinkwrap":false},"1.2.0-beta.1":{"name":"@vodyani/utils","license":"MIT","version":"1.2.0-beta.1","author":{"name":"ChoGathK"},"description":"😁 Provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json","release":"npx semantic-release"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"release":{"extends":"@vodyani/semantic-release"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/jest":"27.4.1","@types/lodash":"4.14.182","@types/node":"16.11.26","@vodyani/eslint-config":"^1.0.10","@vodyani/semantic-release":"1.1.1","husky":"7.0.4","jest":"27.5.1","ts-jest":"27.1.3","typescript":"4.6.2"},"dependencies":{"lodash":"4.17.21"},"types":"./dist/index.d.ts","readme":"# Vodyani utils\n\n😁 Provides common utility functions used in server-side development.\n\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/latest.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/beta.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/dm/@vodyani/utils)](https://www.npmjs.com/package/@vodyani/utils)\n[![License](https://img.shields.io/github/license/vodyani/utils)](LICENSE)\n<br>\n![Workflow](https://github.com/vodyani/utils/actions/workflows/release.yml/badge.svg)\n[![codecov](https://codecov.io/gh/vodyani/utils/branch/master/graph/badge.svg?token=CI3WEJUN6L)](https://codecov.io/gh/vodyani/utils)\n[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)\n\n## Installation\n\n```sh\nnpm install @vodyani/utils\n```\n\n## Usage\n\n|Features|Type|Description|\n|:-:|:-:|:-:|\n|[isDictionary](#isdictionary)|object|Checks whether the current object is a dictionary object.|\n|[isKeyof](#iskeyof)|object|Determines whether the object contains the current attribute.|\n|[toMatch](#tomatch)|object|Walks deeply through the object and returns the property value corresponding to the specified parameter.|\n|[toRestore](#torestore)|object|Restores to the corresponding object based on the depth of the specified property and property value.|\n|[toDelay](#todelay)|promise|Wait during an asynchronous function call.|\n|[toCycle](#tocycle)|promise|Create a recurring scheduled task.|\n|[toRetry](#toretry)|promise|Create a caller that can retry the callback function.|\n\n### isDictionary\n\nChecks whether the current object is a dictionary object.\n\n⚠️ Dictionary is not in (`Map`/`Set`/`Symbol`/`Buffer`/`Array`/`Stream`/`RegExp`/`Function`/`String`/`Number`/`Boolean`).\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`dict`|`any`|*The object to judge.*|\n\n**Return**\n\n`boolean`\n\n**Example**\n```ts\nisDictionary({}) // true\nisDictionary(Object()) // true\nisDictionary({ name: 'dict' }) // true\nisDictionary(new String()) // false\nisDictionary(new Number()) // false\nisDictionary(new Boolean()) // false\nisDictionary(new Map()) // false\nisDictionary(new Set()) // false\nisDictionary(new Array()) // false\nisDictionary(Buffer.from([])) // false\nisDictionary(new Stream()) // false\nisDictionary(null) // false\nisDictionary(undefined) // false\n```\n\n### isKeyof\n\nDetermines whether the object contains the current attribute.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`obj`|`object`|*The object to judge.*|\n|`key`|`string`/`number`/`symbol`|*The property of object.*|\n\n**Return**\n\n`boolean`\n\n**Example**\n\n```ts\nconst sym = Symbol(1);\nconst obj = { test: 'test' };\nconst obj1 = { 0: 'test' };\nconst obj2 = { [sym]: 'test' };\n\nisKeyof(obj, 'test') // true\nisKeyof(obj, 'test1') // false\nisKeyof(obj1, 0) // true\nisKeyof(obj2, sym) // true\n```\n\n### toMatch\n\nWalks deeply through the object and returns the property value corresponding to the specified parameter.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`obj`|`any`|*The object to judge.*|\n|`token`|`string`|*The properties of the object and splice them with `rule`.*|\n|`rule`|`string`|*The rules for splicing, by default, are `.`*|\n\n**Return**\n\n`T` | `any`\n\n**Example**\n\n```ts\ntoMatch({ job: { name: 'job' }}, 'job.name') // 'job'\ntoMatch({ cat: { info: { name: 'mimi' } }}, 'cat.info.name') // 'mimi'\n```\n\n### toRestore\n\nRestores to the corresponding object based on the depth of the specified property and property value.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`value`|`any`|*The object properties value.*|\n|`token`|`string`|*The properties of the object and splice them with `rule`.*|\n|`rule`|`string`|*The rules for splicing, by default, are `.`*|\n\n**Return**\n\n`T` | `any`\n\n**Example**\n\n```ts\ntoRestore('job', 'job.name') // { job: { name: 'job' }}\ntoRestore('mimi', 'cat.info.name') // { cat: { info: { name: 'mimi' } }\n```\n\n### toDelay\n\nWait during an asynchronous function call.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`delay`|`number`|*The waiting time (The time unit is milliseconds).*|\n\n**Return**\n\n`Promise<void>`\n\n**Example**\n\n```ts\nawait toDelay(2000) // To waiting 2000 milliseconds ...\n```\n\n### toCycle\n\nCreate a recurring scheduled task.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`callback`|`Function`|*A callback function that needs to be called periodically.*|\n|`options`|`CycleOptions`|*Configuration options when triggered.*|\n\n*CycleOptions*\n\n```ts\nexport interface CycleOptions {\n  /** The cycle time, default 1000 (The time unit is milliseconds). */\n  interval: number;\n  /** The callback argument. */\n  args?: any[];\n}\n```\n\n**Return**\n\n`CycleClearHandler` Returns a method that closes timed calls.\n\n*CycleClearHandler*\n\n```ts\nexport interface CycleClearHandler {\n  /** The closes timed calls. */\n  close: () => void\n}\n```\n\n**Example**\n\n```ts\nawait toCycle(fn, { interval: 1000 }) // The fn function is executed every 2000 milliseconds ...\n```\n\n### toRetry\n\nCreate a recurring scheduled task.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`callback`|`Function`|*The callback function to call.*|\n|`options`|`RetryOptions`|*Configuration options when triggered.*|\n\n*RetryOptions*\n\n```ts\nexport interface RetryOptions {\n  /** The retry count. */\n  count: number;\n  /** The waiting time (The time unit is milliseconds). */\n  delay: number;\n  /** The callback argument.*/\n  args?: any[];\n}\n```\n\n**Return**\n\n`Promise<T>` | `Promise<any>`\n\n**Example**\n\n```ts\nawait toRetry(fn, { delay: 100, count: 3 }) // The `fn` will wait 100 milliseconds after a failure and then call again three times\n```\n\n## Team\n\n|[![ChoGathK](https://github.com/chogathK.png?size=100)](https://github.com/chogathK)|\n|:-:|\n|[ChoGathK](https://github.com/chogathK)|\n\n## License\n\nVodyani utils is [MIT licensed](LICENSE).\n","readmeFilename":"README.MD","gitHead":"94d254bd73638b7be6503d339dc8db5ec03fd592","_id":"@vodyani/utils@1.2.0-beta.1","_nodeVersion":"16.16.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-BGapZ/1L8p0DMI/+WTxEQRxok/3+TrtU49AzR3A8ZDLKu3gJnftTCXiUOCaR6EBGNzX89r0VOOi5tTdSBObVMA==","shasum":"ee6aaad54211aa601dffe4a4d2de6c870bc7a924","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-1.2.0-beta.1.tgz","fileCount":18,"unpackedSize":25600,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF3lyPKGcq9JdCWYuBHuXeaZKq7FstWoBYg2ZcSJLJboAiA9ge8cW41nVShqz9h+2vPf/PXNAqi7hLdvGr9PvMcLIw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi1meBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmry4RAAiAi1Jyy6KWx6Hrp1of1481vUBY1Fsq3pmvbWl00R4eCdcT63\r\nkoD5qSYfcTL1JUY8qa8XI/PgK8GTA0wHN6wWfJmoJkI+PfOSXiKTEJT/m7gh\r\nbs512Kz4KbIa2ZEgWgWUEdrDMA5x9rW/1pp153V/gVn/NHuaf1LpjhVOZypz\r\ncQb0GBfqK4zUXK8+2Znx8GUIZcTZFcC/sUaMVD0dOG6McKn6w0E/rF8aeeX+\r\n/1XRPZlq9JyPqhp7tK/ItASd0zqqsjSdxo6XkIXIWee6Hhut9cJORNtcY021\r\nlsbweh/JUfMc+cM9LieEPyLPN9zX7MKc7ZPiUHGUBduK79yUh9/c0IzDdg7n\r\n4lE3QoiOsGXvsgNliLm7JoFfs2d6C0BYSoz7CtHOvPC8mc9t/pwEQYZGRixi\r\ngEpfHh/rFi9zrw4kQbPKD3JDMNHjYci/sl/ASqDm478chHyHPsW05l5ThK7k\r\nvM8nhbVxRxECHCtagwP5vtvzDk5dTOOVksRNoRc+PJ7ASM5Liwfg3x0UZJ0g\r\nmqeKgMQK4TyTeRMuwK4j6084qT33NET6+jMFd7fn0DuOC7jgcAFft4wVXF+m\r\njyTcu6mNZeQpKcG1MmCr5yqOl0Qfvh/5twINU3jl/g2rdyIQtJKWkapsqaOM\r\nZBYXNE+W4qolEw+JOQiRXQ8vCEeIz1/6Wj8=\r\n=6S06\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.2.0-beta.1_1658218369382_0.9786853010853529"},"_hasShrinkwrap":false},"1.2.0":{"name":"@vodyani/utils","license":"MIT","version":"1.2.0","author":{"name":"ChoGathK"},"description":"😁 Provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json","release":"npx semantic-release"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"release":{"extends":"@vodyani/semantic-release"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/jest":"27.4.1","@types/lodash":"4.14.182","@types/node":"16.11.26","@vodyani/eslint-config":"^1.0.10","@vodyani/semantic-release":"1.1.1","husky":"7.0.4","jest":"27.5.1","ts-jest":"27.1.3","typescript":"4.6.2"},"dependencies":{"lodash":"4.17.21"},"types":"./dist/index.d.ts","gitHead":"b21514d8a2e52f8605f54db32ba220b690921b0c","_id":"@vodyani/utils@1.2.0","_nodeVersion":"16.16.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-6lD1b0eGoZIxIICP0W52RfEAYeWKboyIyZCjPKkC0ZRJapipU80IpF5655gNrk7qdogQngn02GwZT0syN4kGxg==","shasum":"50b1df13b2d953157268b1b90be863b426d0c57f","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-1.2.0.tgz","fileCount":18,"unpackedSize":25593,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAcYgmRemAr49kaDfHMcJfZGv/eIy7utEhizDM9XNMJ2AiEA1QJqtDbL/Q1LMqkQKNYE619re7fUEgYzwdRk7H1BjL8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi1mjPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrxpA//cBt67SQpjknuLRRz+djwZ+3FEOk4NitBEzYqmrDZ/OZlHQIN\r\nDFK2HbKtevfO0z9uyWmtvfPpcCMMYbfvl8OkQaHK5aWLo4lL/gvy1CYKKYDI\r\nrtT+SWV6VuY0W0PhSgnu3Z7c2qF04YUkae2UV9yp3bO+9fRcy2BjjNBt8V5E\r\n/R5veFHaZqnz5+q7g0YpniNwWzw+wUMVZp6NagS8FPPbK5pOWAiBod+c63Ms\r\np/GS8tWF+ldVAGqw9ll+SUtyYHs3mtJRUICYXjYrc54LaJxmlzDzMH0UnFDr\r\nZL5mjtrvA9MrUCBpX5g1z1cS9DmqZ3e0hupjLQDjlUdB7aEKifP8fwFtkqUa\r\nqvE4ZyJYwwiXprY+hl8N15q0VS/RoSGiW5JTc+8wcbPBVUzbZwT/d7wGGq84\r\nkluKujZe1hhmm2oPqtNLSbc3NF9qigHlHX3NQ08TX4zLUQ3BYka/aZ7iB6q5\r\nFBZ/jolYBdWVp02ql8LlKSXiWFL6GAA0a/+3jfr9PSqyR7Yy2AToOWlvv2et\r\nlWPddFUWBTo1fcltwixttLF9UrQ14oIm1u+LJu2gFETBGCANPo7qBmcRrQbC\r\nyIcP4u1sOPJ02KjgRnUa5Mn8aJt7+XHpcnRwMhWI/Q4wimX2M0c4KHawrfCG\r\nEwvlotZ1Nz6VyqOnMgOKnBjUDIJq6w6LMJw=\r\n=UnEG\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.2.0_1658218703588_0.6249122492731349"},"_hasShrinkwrap":false},"1.3.0-beta.1":{"name":"@vodyani/utils","license":"MIT","version":"1.3.0-beta.1","author":{"name":"ChoGathK"},"description":"😁 Provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json","release":"npx semantic-release"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"release":{"extends":"@vodyani/semantic-release"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/jest":"27.4.1","@types/lodash":"4.14.182","@types/node":"16.11.26","@vodyani/eslint-config":"^1.0.10","@vodyani/semantic-release":"1.1.1","husky":"7.0.4","jest":"27.5.1","ts-jest":"27.1.3","typescript":"4.6.2"},"dependencies":{"deepmerge-ts":"4.2.1","lodash":"4.17.21"},"types":"./dist/index.d.ts","readme":"# Vodyani utils\n\n😁 Provides common utility functions used in server-side development.\n\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/latest.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/beta.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/dm/@vodyani/utils)](https://www.npmjs.com/package/@vodyani/utils)\n[![License](https://img.shields.io/github/license/vodyani/utils)](LICENSE)\n<br>\n![Workflow](https://github.com/vodyani/utils/actions/workflows/release.yml/badge.svg)\n[![codecov](https://codecov.io/gh/vodyani/utils/branch/master/graph/badge.svg?token=CI3WEJUN6L)](https://codecov.io/gh/vodyani/utils)\n[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)\n\n## Installation\n\n```sh\nnpm install @vodyani/utils\n```\n\n## Usage\n\n|Features|Type|Description|\n|:-:|:-:|:-:|\n|[isDictionary](#isdictionary)|object|Checks whether the current object is a dictionary object.|\n|[isKeyof](#iskeyof)|object|Determines whether the object contains the current attribute.|\n|[toDeepMatch](#todeepmatch)|object|Walks deeply through the object and returns the property value corresponding to the specified parameter.|\n|[toDeepRestore](#todeeprestore)|object|Restores to the corresponding object based on the depth of the specified property and property value.|\n|[toDeepMerge](#todeepmerge)|object|Deep comparison and fusion are performed on the two incoming data.|\n|[toDeepConvertProperty](#todeepconvertproperty)|object|Formatting properties of the object in the data.|\n|[toDelay](#todelay)|promise|Wait during an asynchronous function call.|\n|[toCycle](#tocycle)|promise|Create a recurring scheduled task.|\n|[toRetry](#toretry)|promise|Create a caller that can retry the callback function.|\n\n### isDictionary\n\nChecks whether the current object is a dictionary object.\n\n⚠️ Dictionary is not in (`Map`/`Set`/`Symbol`/`Buffer`/`Array`/`Stream`/`RegExp`/`Function`/`String`/`Number`/`Boolean`).\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`dict`|`any`|*The object to judge.*|\n\n**Return**\n\n`boolean`\n\n**Example**\n```ts\nisDictionary({}) // true\nisDictionary(Object()) // true\nisDictionary({ name: 'dict' }) // true\nisDictionary(new String()) // false\nisDictionary(new Number()) // false\nisDictionary(new Boolean()) // false\nisDictionary(new Map()) // false\nisDictionary(new Set()) // false\nisDictionary(new Array()) // false\nisDictionary(Buffer.from([])) // false\nisDictionary(new Stream()) // false\nisDictionary(null) // false\nisDictionary(undefined) // false\n```\n\n### isKeyof\n\nDetermines whether the object contains the current attribute.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`obj`|`object`|*The object to judge.*|\n|`key`|`string`/`number`/`symbol`|*The property of object.*|\n\n**Return**\n\n`boolean`\n\n**Example**\n\n```ts\nconst sym = Symbol(1);\nconst obj = { test: 'test' };\nconst obj1 = { 0: 'test' };\nconst obj2 = { [sym]: 'test' };\n\nisKeyof(obj, 'test') // true\nisKeyof(obj, 'test1') // false\nisKeyof(obj1, 0) // true\nisKeyof(obj2, sym) // true\n```\n\n### toDeepMatch\n\nWalks deeply through the object and returns the property value corresponding to the specified parameter.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`obj`|`any`|*The object to judge.*|\n|`token`|`string`|*The properties of the object and splice them with `rule`.*|\n|`rule`|`string`|*The rules for splicing, by default, are `.`*|\n\n**Return**\n\n`T` | `any`\n\n**Example**\n\n```ts\ntoDeepMatch({ job: { name: 'job' }}, 'job.name') // 'job'\ntoDeepMatch({ cat: { info: { name: 'mimi' } }}, 'cat.info.name') // 'mimi'\n```\n\n### toDeepRestore\n\nRestores to the corresponding object based on the depth of the specified property and property value.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`value`|`any`|*The object properties value.*|\n|`token`|`string`|*The properties of the object and splice them with `rule`.*|\n|`rule`|`string`|*The rules for splicing, by default, are `.`*|\n\n**Return**\n\n`T` | `any`\n\n**Example**\n\n```ts\ntoDeepRestore('job', 'job.name') // { job: { name: 'job' }}\ntoDeepRestore('mimi', 'cat.info.name') // { cat: { info: { name: 'mimi' } }\n```\n\n### toDeepMerge\n\nDeep comparison and fusion are performed on the two incoming data.\n\n**tips:**\n\n- `base` will be deeply copied before merging, so it will not be changed. 😛\n- To learn how merging works, visit: [deepmerge-ts](https://github.com/RebeccaStevens/deepmerge-ts).\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`base`|`any`|*The underlying data being compared.*|\n|`source`|`any`|*New data merged into the underlying data.*|\n\n**Return**\n\n`T` | `any`\n\n**Example**\n\n```ts\nconst base = { a: 1, b: 2 };\nconst source = { a: 3, c: 4 };\ntoDeepMerge(base, source) // { a: 3, b: 2, c: 4 };\n\nconst base1 = { a: [{ b: 3 }], b: { c: [{ d: 1 }, { e: 2 }] }};\nconst source1 = { a: [{ b: 3, g: 6 }, { c: 4 }], b: { c: [{ d: 3 }, { e: 4 }] }};\ntoDeepMerge(base1, source1) // { 'a': [{ 'b': 3 }, { 'b': 3, 'g': 6 }, { 'c': 4 }], 'b': { 'c': [{ 'd': 1 }, { 'e': 2 }, { 'd': 3 }, { 'e': 4 }] }};\n\nconst base2 = [1, 2, 3, { b: 1 }];\nconst source2 = [4, 5, 6, { a: 1 }, 7];\ntoDeepMerge(base2, source2) // [1, 2, 3, { 'b': 1 }, 4, 5, 6, { 'a': 1 }, 7];\n```\n\n### toDeepConvertProperty\n\nFormatting properties of the object in the data.\n\n**tips:**\n\nThis is a higher-order method that you usually need to use in conjunction with other utility functions. 😛\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`data`|`any`|*The source data (`Array`|`Object`|`Map`).*|\n|`transformer`|`Function`|*A callback function used to convert properties.*|\n\n**Return**\n\n`any`\n\n**Example**\n\n```ts\nimport { camelCase } from 'lodash';\n\nconst toDeepCamelCase = (data: any) => toDeepConvertProperty(data, camelCase);\n\ntoDeepCamelCase({ 'user_info': { 'user_name': 'name' }}) // { 'userInfo': { 'userName': 'name' }}\n```\n\n### toDelay\n\nWait during an asynchronous function call.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`delay`|`number`|*The waiting time (The time unit is milliseconds).*|\n\n**Return**\n\n`Promise<void>`\n\n**Example**\n\n```ts\nawait toDelay(2000) // To waiting 2000 milliseconds ...\n```\n\n### toCycle\n\nCreate a recurring scheduled task.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`callback`|`Function`|*A callback function that needs to be called periodically.*|\n|`options`|`CycleOptions`|*Configuration options when triggered.*|\n\n*CycleOptions*\n\n```ts\nexport interface CycleOptions {\n  /** The cycle time, default 1000 (The time unit is milliseconds). */\n  interval: number;\n  /** The callback argument. */\n  args?: any[];\n}\n```\n\n**Return**\n\n`CycleClearHandler` Returns a method that closes timed calls.\n\n*CycleClearHandler*\n\n```ts\nexport interface CycleClearHandler {\n  /** The closes timed calls. */\n  close: () => void\n}\n```\n\n**Example**\n\n```ts\nawait toCycle(fn, { interval: 1000 }) // The fn function is executed every 2000 milliseconds ...\n```\n\n### toRetry\n\nCreate a recurring scheduled task.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`callback`|`Function`|*The callback function to call.*|\n|`options`|`RetryOptions`|*Configuration options when triggered.*|\n\n*RetryOptions*\n\n```ts\nexport interface RetryOptions {\n  /** The retry count. */\n  count: number;\n  /** The waiting time (The time unit is milliseconds). */\n  delay: number;\n  /** The callback argument.*/\n  args?: any[];\n}\n```\n\n**Return**\n\n`Promise<T>` | `Promise<any>`\n\n**Example**\n\n```ts\nawait toRetry(fn, { delay: 100, count: 3 }) // The `fn` will wait 100 milliseconds after a failure and then call again three times\n```\n\n## Team\n\n|[![ChoGathK](https://github.com/chogathK.png?size=100)](https://github.com/chogathK)|\n|:-:|\n|[ChoGathK](https://github.com/chogathK)|\n\n## License\n\nVodyani utils is [MIT licensed](LICENSE).\n","readmeFilename":"README.MD","gitHead":"34ce900bec9ee7c9eb732f1d1cf808c076d34959","_id":"@vodyani/utils@1.3.0-beta.1","_nodeVersion":"16.16.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-jiXRgRRuQyYsm9T9PyYjrw1AJQbKlD7fbxEKFbNrHFrUm6OJDJ9JGByNKf2PypO0B+CX1QJfS5V0AJ7OcT0tgA==","shasum":"18761808a5f16e3b423ca87d79c0797785850156","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-1.3.0-beta.1.tgz","fileCount":24,"unpackedSize":33654,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICUk57k20/KGSNQc4bbLC5msh118txl0NgPKtUAOuxJzAiEAsrPNM3ER1H/OGy5tPwK2Ho171DcjNYwZ1jo1BNLCvN0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi2QH5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr7FQ//aSHDx6Drn1Lv07arHy9VC3rc9Mu3TFeMPbZ3d6j4a755foKO\r\nAaT61/yuDFd+cwbDnAR7E1yoRx2nSeg5j5wFts0mzTLxoz4kGSrZpsFXcw2C\r\nC8//Su87CX/M1HrtNIqzN6MGla7tXZFf86sCq3EorQ83y3VKvWpPfewQFjNM\r\n5bsLcWOwXUL6aVR5bQNiksxphJNLsaYqGwt3LjEHcjvWLHTK/FjX8wp3+yPi\r\n/u4FlDB0QmkhsZMbCfIwA1WHGNJzDjBpqT1cUuAUW/jmHoOMORAcHj9KN0uz\r\n37L6tJftGwi+ATR/k4n+VCfEc6hSQ3lsqsPNq0OWc+YP3xfOgvPZQth2eZJL\r\nvrOdEDBJjH31YUZ9mDPTeVhN3Gxc/5hg0W3fxrtWzHQGJCtRRenbW+KpAfrt\r\nUkkId/AemG6vaA/Izcf5wSlU8o1HPtDsjvRyJgBOgLZfq7vqLS+yQUCc1wfF\r\nolmftnDgtxzM9Vsa7zd2ul1qrFCq0HV6/C2N1RA5U3hWQiui7RJp2Z8/vkCJ\r\ncN1HJM8ld5yC8DjM4OHXV1CUt4OgEdOGY9Uad2wi+0AQHshL571TQ1zAi0x4\r\nVs95VC4NKpdt9gkVCGauglHXMfVl55xSfHFv/y7G67fuT9C9TWdgxJclZ9BM\r\nEXQMRPJL3kgJ1xCvCK0zCA3lVnZS/7xB7tE=\r\n=z/RN\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.0-beta.1_1658388985149_0.9825035604108932"},"_hasShrinkwrap":false},"1.3.0":{"name":"@vodyani/utils","license":"MIT","version":"1.3.0","author":{"name":"ChoGathK"},"description":"😁 Provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json","release":"npx semantic-release"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"release":{"extends":"@vodyani/semantic-release"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/jest":"27.4.1","@types/lodash":"4.14.182","@types/node":"16.11.26","@vodyani/eslint-config":"^1.0.10","@vodyani/semantic-release":"1.1.1","husky":"7.0.4","jest":"27.5.1","ts-jest":"27.1.3","typescript":"4.6.2"},"dependencies":{"deepmerge-ts":"4.2.1","lodash":"4.17.21"},"types":"./dist/index.d.ts","gitHead":"8a7f06a22863a8bdaf81f061c27c1938e424f2a9","_id":"@vodyani/utils@1.3.0","_nodeVersion":"16.16.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-zAq3rYFK1vCYiP49/X1XdYp1L79UO5dThsMnLyn7PuTz72GioRFTvLS4BloCQ9A0Dvcg9jUHjJHe0dBDL6ZFWg==","shasum":"a54ef8f1518b43367d805c5f86b466f2fd9cb516","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-1.3.0.tgz","fileCount":24,"unpackedSize":33647,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBMENdsstYlHbaoUR/syLNxuU2eZXaZqvoO1ysgRaydJAiBSgFLZmB3l/g7fieLQdN8sKXx/ftVHtmxML1fMIIUPcQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi2QJVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoglw//SUDy0S0ReuuZrFI5PUpkmKGvkB2oV9K9f5BO3cZRp6OfwNrj\r\n308HdTJnVDbjYSviEnnvyq7MsmnCUz3K9jE8oHsNA0YJeou/WYNkDWxbW+3N\r\nBVjT57GGAtuAUp3Y7rA/pEMVuQ0Iqcw+tiIUPtN8WrS38/veZhFy4/cZSaIa\r\nVZizJS7CdmerZPa8RsI0Jpzj5RJOwbPMAxExEvhkprWgNdrpV+Uh0tvkOn7b\r\nrlSybIWe01H51BehC9doOqQpRAOj40olnlE7Xb5az7xF1H0XRPfzXSoCBAW3\r\nYvLvz89HoWCJoZjD2dODuhmG7KwoDhK5rHnqwJGGdBRNpzWybdhtpMRJNfKf\r\nPgO34AGrZ8mcewZDfH2FOxSCZ+5tA6FoYvo2vm9PdTYZ/CZYgvMVTRZhq1xv\r\nic0iV32QKg0l6+YNvb/KiYv2SBfsoKOCR/n/1+xm1+8zEX7sXjpUzRCUeCip\r\n4rPkSPEvM0kg8SfT7btOdEMmh/sgKRDuYlEktAVX1eMwjEuC9KEuT7PDka75\r\nihqu0s3DIV79KWehtdlx8SoE56bY9/EhdePVuM864LZ/Y+pwFzMWhNCoevW/\r\nqZlQ0Rw0EmgioFIggzPBvApREJlRa++vaS2cORXI0ttuYMJIkD3q4LCqU8tV\r\nJ9aQT/GVeD579nN8jSVGsIKPJngfppjo/FQ=\r\n=fWrN\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.0_1658389077317_0.4545773698409661"},"_hasShrinkwrap":false},"1.3.0-beta.2":{"name":"@vodyani/utils","license":"MIT","version":"1.3.0-beta.2","author":{"name":"ChoGathK"},"description":"😁 Provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json","release":"npx semantic-release"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"release":{"extends":"@vodyani/semantic-release"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/jest":"27.4.1","@types/lodash":"4.14.182","@types/node":"16.11.26","@vodyani/eslint-config":"^1.0.10","@vodyani/semantic-release":"1.1.1","husky":"7.0.4","jest":"27.5.1","ts-jest":"27.1.3","typescript":"4.6.2"},"dependencies":{"autobind-decorator":"^2.4.0","deepmerge-ts":"4.2.1","lodash":"4.17.21"},"types":"./dist/index.d.ts","readme":"# Vodyani utils\n\n😁 Provides common utility functions used in server-side development.\n\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/latest.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/beta.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/dm/@vodyani/utils)](https://www.npmjs.com/package/@vodyani/utils)\n[![License](https://img.shields.io/github/license/vodyani/utils)](LICENSE)\n<br>\n![Workflow](https://github.com/vodyani/utils/actions/workflows/release.yml/badge.svg)\n[![codecov](https://codecov.io/gh/vodyani/utils/branch/master/graph/badge.svg?token=CI3WEJUN6L)](https://codecov.io/gh/vodyani/utils)\n[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)\n\n## Installation\n\n```sh\nnpm install @vodyani/utils\n```\n\n## Usage\n\n|Features|Type|Description|\n|:-:|:-:|:-:|\n|[This](#this)|class|A class or method decorator which binds methods to the instance so this is always correct, even when the method is detached.|\n|[isDictionary](#isdictionary)|object|Checks whether the current object is a dictionary object.|\n|[isKeyof](#iskeyof)|object|Determines whether the object contains the current attribute.|\n|[toDeepMatch](#todeepmatch)|object|Walks deeply through the object and returns the property value corresponding to the specified parameter.|\n|[toDeepRestore](#todeeprestore)|object|Restores to the corresponding object based on the depth of the specified property and property value.|\n|[toDeepMerge](#todeepmerge)|object|Deep comparison and fusion are performed on the two incoming data.|\n|[toDeepConvertProperty](#todeepconvertproperty)|object|Formatting properties of the object in the data.|\n|[toDelay](#todelay)|promise|Wait during an asynchronous function call.|\n|[toCycle](#tocycle)|promise|Create a recurring scheduled task.|\n|[toRetry](#toretry)|promise|Create a caller that can retry the callback function.|\n\n### This\n\nA class or method decorator which binds methods to the instance so this is always correct, even when the method is detached.\n\n**tips:** To learn how merging works, visit: [autobind-decorator](https://github.com/andreypopp/autobind-decorator).\n\n**Example**\n\n```ts\nimport { This } from '@vodyani/utils';\n\nclass User {\n  private readonly name = 'demo';\n  private readonly age = 1;\n\n  public getName() { return this.name; }\n\n  @This\n  public getAge() { return this.age; }\n}\n\nconst user = new User();\nconst fn = (cb: Function) => cb();\n\nfn(user.getAge); // 1\nfn(user.getName); // Error: Cannot read properties of undefined (reading 'name')\n```\n\n### isDictionary\n\nChecks whether the current object is a dictionary object.\n\n⚠️ Dictionary is not in (`Map`/`Set`/`Symbol`/`Buffer`/`Array`/`Stream`/`RegExp`/`Function`/`String`/`Number`/`Boolean`).\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`dict`|`any`|*The object to judge.*|\n\n**Return**\n\n`boolean`\n\n**Example**\n```ts\nimport { isDictionary } from '@vodyani/utils';\n\nisDictionary({}) // true\nisDictionary(Object()) // true\nisDictionary({ name: 'dict' }) // true\nisDictionary(new String()) // false\nisDictionary(new Number()) // false\nisDictionary(new Boolean()) // false\nisDictionary(new Map()) // false\nisDictionary(new Set()) // false\nisDictionary(new Array()) // false\nisDictionary(Buffer.from([])) // false\nisDictionary(new Stream()) // false\nisDictionary(null) // false\nisDictionary(undefined) // false\n```\n\n### isKeyof\n\nDetermines whether the object contains the current attribute.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`obj`|`object`|*The object to judge.*|\n|`key`|`string`/`number`/`symbol`|*The property of object.*|\n\n**Return**\n\n`boolean`\n\n**Example**\n\n```ts\nimport { isKeyof } from '@vodyani/utils';\n\nconst sym = Symbol(1);\nconst obj = { test: 'test' };\nconst obj1 = { 0: 'test' };\nconst obj2 = { [sym]: 'test' };\n\nisKeyof(obj, 'test') // true\nisKeyof(obj, 'test1') // false\nisKeyof(obj1, 0) // true\nisKeyof(obj2, sym) // true\n```\n\n### toDeepMatch\n\nWalks deeply through the object and returns the property value corresponding to the specified parameter.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`obj`|`any`|*The object to judge.*|\n|`token`|`string`|*The properties of the object and splice them with `rule`.*|\n|`rule`|`string`|*The rules for splicing, by default, are `.`*|\n\n**Return**\n\n`T` | `any`\n\n**Example**\n\n```ts\nimport { toDeepMatch } from '@vodyani/utils';\n\ntoDeepMatch({ job: { name: 'job' }}, 'job.name') // 'job'\ntoDeepMatch({ cat: { info: { name: 'mimi' } }}, 'cat.info.name') // 'mimi'\n```\n\n### toDeepRestore\n\nRestores to the corresponding object based on the depth of the specified property and property value.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`value`|`any`|*The object properties value.*|\n|`token`|`string`|*The properties of the object and splice them with `rule`.*|\n|`rule`|`string`|*The rules for splicing, by default, are `.`*|\n\n**Return**\n\n`T` | `any`\n\n**Example**\n\n```ts\nimport { toDeepRestore } from '@vodyani/utils';\n\ntoDeepRestore('job', 'job.name') // { job: { name: 'job' }}\ntoDeepRestore('mimi', 'cat.info.name') // { cat: { info: { name: 'mimi' } }\n```\n\n### toDeepMerge\n\nDeep comparison and fusion are performed on the two incoming data.\n\n**tips:**\n\n- `base` will be deeply copied before merging, so it will not be changed. 😛\n- To learn how merging works, visit: [deepmerge-ts](https://github.com/RebeccaStevens/deepmerge-ts).\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`base`|`any`|*The underlying data being compared.*|\n|`source`|`any`|*New data merged into the underlying data.*|\n\n**Return**\n\n`T` | `any`\n\n**Example**\n\n```ts\nimport { toDeepMerge } from '@vodyani/utils';\n\nconst base = { a: 1, b: 2 };\nconst source = { a: 3, c: 4 };\ntoDeepMerge(base, source) // { a: 3, b: 2, c: 4 };\n\nconst base1 = { a: [{ b: 3 }], b: { c: [{ d: 1 }, { e: 2 }] }};\nconst source1 = { a: [{ b: 3, g: 6 }, { c: 4 }], b: { c: [{ d: 3 }, { e: 4 }] }};\ntoDeepMerge(base1, source1) // { 'a': [{ 'b': 3 }, { 'b': 3, 'g': 6 }, { 'c': 4 }], 'b': { 'c': [{ 'd': 1 }, { 'e': 2 }, { 'd': 3 }, { 'e': 4 }] }};\n\nconst base2 = [1, 2, 3, { b: 1 }];\nconst source2 = [4, 5, 6, { a: 1 }, 7];\ntoDeepMerge(base2, source2) // [1, 2, 3, { 'b': 1 }, 4, 5, 6, { 'a': 1 }, 7];\n```\n\n### toDeepConvertProperty\n\nFormatting properties of the object in the data.\n\n**tips:**\n\nThis is a higher-order method that you usually need to use in conjunction with other utility functions. 😛\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`data`|`any`|*The source data (`Array`|`Object`|`Map`).*|\n|`transformer`|`Function`|*A callback function used to convert properties.*|\n\n**Return**\n\n`any`\n\n**Example**\n\n```ts\nimport { toDeepCamelCase } from '@vodyani/utils';\n\nimport { camelCase } from 'lodash';\n\nconst toDeepCamelCase = (data: any) => toDeepConvertProperty(data, camelCase);\n\ntoDeepCamelCase({ 'user_info': { 'user_name': 'name' }}) // { 'userInfo': { 'userName': 'name' }}\n```\n\n### toDelay\n\nWait during an asynchronous function call.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`delay`|`number`|*The waiting time (The time unit is milliseconds).*|\n\n**Return**\n\n`Promise<void>`\n\n**Example**\n\n```ts\nimport { toDelay } from '@vodyani/utils';\n\nawait toDelay(2000) // To waiting 2000 milliseconds ...\n```\n\n### toCycle\n\nCreate a recurring scheduled task.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`callback`|`Function`|*A callback function that needs to be called periodically.*|\n|`options`|`CycleOptions`|*Configuration options when triggered.*|\n\n*CycleOptions*\n\n```ts\nexport interface CycleOptions {\n  /** The cycle time, default 1000 (The time unit is milliseconds). */\n  interval: number;\n  /** The callback argument. */\n  args?: any[];\n}\n```\n\n**Return**\n\n`CycleClearHandler` Returns a method that closes timed calls.\n\n*CycleClearHandler*\n\n```ts\nexport interface CycleClearHandler {\n  /** The closes timed calls. */\n  close: () => void\n}\n```\n\n**Example**\n\n```ts\nimport { toCycle } from '@vodyani/utils';\n\nawait toCycle(fn, { interval: 1000 }) // The fn function is executed every 2000 milliseconds ...\n```\n\n### toRetry\n\nCreate a recurring scheduled task.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`callback`|`Function`|*The callback function to call.*|\n|`options`|`RetryOptions`|*Configuration options when triggered.*|\n\n*RetryOptions*\n\n```ts\nexport interface RetryOptions {\n  /** The retry count. */\n  count: number;\n  /** The waiting time (The time unit is milliseconds). */\n  delay: number;\n  /** The callback argument.*/\n  args?: any[];\n}\n```\n\n**Return**\n\n`Promise<T>` | `Promise<any>`\n\n**Example**\n\n```ts\nimport { toRetry } from '@vodyani/utils';\n\nawait toRetry(fn, { delay: 100, count: 3 }) // The `fn` will wait 100 milliseconds after a failure and then call again three times\n```\n\n## Team\n\n|[![ChoGathK](https://github.com/chogathK.png?size=100)](https://github.com/chogathK)|\n|:-:|\n|[ChoGathK](https://github.com/chogathK)|\n\n## License\n\nVodyani utils is [MIT licensed](LICENSE).\n","readmeFilename":"README.MD","gitHead":"fd2c96fc9115c1a6d8569b8209fe77659939fdc3","_id":"@vodyani/utils@1.3.0-beta.2","_nodeVersion":"16.16.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-d74IPrcgjN/zqfenVlF76WkxGssU5doQ5rOd4vYjUArfTpebXVnDaP1IcBoarW8RKl6Ai0F/nmldPOvq7Z+PfQ==","shasum":"43bfca47db247581e8f4f41fe00efbefa5c7e511","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-1.3.0-beta.2.tgz","fileCount":30,"unpackedSize":36535,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGb6rdQ0R4J/tnBwN4ybso3faJn8itoBcXGMLDjlfeaQIhAKFHKNmKjDIr6bPxZIJ8PmRov7rypsgQd4ijF5oKjxw3"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi2Q22ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmofGg/+MgTffYPO6QHBxWn0p4jMOoaS12G8KgRdV4tx6tRumoIyn7EZ\r\nG6LEUA8wMoTmJ7pd1+xQMFDEl8UBK3XPlBoqdl8zHt2gIPALU7O5HokGlUOj\r\nOSjpwEHmrE7Sdd4EojnagqzY1zuU+Rmygaf2okrVN+G/1H7ahMBtIDXfgfIr\r\nNWILoEoglSUx+1Fwrresx+CmrOWDYBdEcj5ScyYh+vOD07BwN8hNbxdvwoxM\r\n2huiUeODKZ1aBCuvDuntdcGGdm57uWSHcIg/5eFHz/89uU5F70YINpMnJLjx\r\ngzdes13Vb+RqyVqzwSrGv43pLKqhTw1mlCdV8nj6ejxYq+gbOajNw69VGX64\r\nyfSjfFyh/rGwJP6ZpB+ai9+Q5CKmwjIGscO3FxxPdhvz1+ckqyP2t5BSEb8e\r\nbQ91woBzzjYnmhZHAGNuBhUeOTMrlGhQDl+F8lsDBjbVNvKPdbw6l9QHnyFB\r\nt/IidUGe6vCusiQrORisgQxPPPDlYR9o/w3Vdu73WtceQPshA6bGTldfA3mV\r\nLMW2/UT/vxC66rSKITApQ4HLsDqr0aJwTk/Ob3Ny4FcVdrWrXjpkTpsp4/Cs\r\nPOpEzFVlM4BGa3X3Wnw+hmfDgnCWKGERw2143hApBvPWYlK54TACqwGzNjdF\r\n/vcJPDIsZ1V2bgHzQtjJLq39GiN8P5crQWM=\r\n=2COs\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.3.0-beta.2_1658391990640_0.7794352555571646"},"_hasShrinkwrap":false},"1.4.0":{"name":"@vodyani/utils","license":"MIT","version":"1.4.0","author":{"name":"ChoGathK"},"description":"😁 Provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json","release":"npx semantic-release"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"release":{"extends":"@vodyani/semantic-release"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/jest":"27.4.1","@types/lodash":"4.14.182","@types/node":"16.11.26","@vodyani/eslint-config":"^1.0.10","@vodyani/semantic-release":"1.1.1","husky":"7.0.4","jest":"27.5.1","ts-jest":"27.1.3","typescript":"4.6.2"},"dependencies":{"autobind-decorator":"^2.4.0","deepmerge-ts":"4.2.1","lodash":"4.17.21"},"types":"./dist/index.d.ts","gitHead":"bec3456552de11196b655afc907eeed3136a22f6","_id":"@vodyani/utils@1.4.0","_nodeVersion":"16.16.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-L0VHxhXG54QnmuRUQj6oCIldFJSduLMz3JLqCWJDNrZQkNeJUWzBknXpCK0bn3Cw1Lk8gxwqsKekqZMC8qV6nw==","shasum":"ee6cc1d349111a0cb99a1a0adf45bc756669a469","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-1.4.0.tgz","fileCount":30,"unpackedSize":36528,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH2JnZYPKyvJGLmXr5n2ubJi5BkB0Xe7UiX0REnPMRsHAiEAh3KDfGZH/yR5FG2IRFHft3bIabU6SFcP8Z2iAUCRpK0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi2Q8DACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmop8Q//RQZ6T1O9jfjp/40Sx12gDM/t9P2k7tECyDPrKbUjbWbI7Mae\r\ncrg0hE0Ru3RXVSDOhrkqkJiiqnrUkS2qvCrShEErn3s76QwSqT5w/ESvaIHX\r\nut/hUKBbpnJzTLABw7NNdl28iQTGBbKa+ZDbkKoLdbGOBv+9DmWU5hxYElCm\r\nGZzRLRBA4WueI/YELV1f5dU15a4udM4CNML8+0qMB6+r7HQ8435kRqoe+qZk\r\nS9Fmwk/BbwEXXNIW0Ac9kAZJJO9+/drrN0nOyzRz7bncSVWxv60k3NfKAzaf\r\numDCPxCwQeVBebWuRPlDdv6CJ0Oendfs5rYaj/oXacJuz1coeNSIARqsU40F\r\nr64i0GxFCe1/6bIAjB1AZpIHbQ/OZwfTLwrdWZOionPoKcT3pN2dx6lp+oCE\r\nAs866UjqnjESLKiW4+Km08TiNhFT80FX06hP/RDB8DcP6xrIukVE8sR8vVHu\r\nHxh14OoIQ7VBe9iE5ILCWrnxp/TOZXtsEXN56Vz67Aqc0tA0g+1nHO77+Bn8\r\nG0sS2DSnZFZKRIs7Ar5T1OA80mjk5r1e4I01/s5Bt4VRiXMzDN1eyl9Pmafh\r\ncuKmzGeBNOYrljvixyeUN5KkQgS3NNMk4gZCnboVpEw2lkjKQEj5J/dC8ySl\r\nrmuasVJ2Plf8wMWssMNgslyLzv/pQE6Wa70=\r\n=gTVB\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.4.0_1658392323565_0.8800549005843401"},"_hasShrinkwrap":false},"1.4.1-beta.1":{"name":"@vodyani/utils","license":"MIT","version":"1.4.1-beta.1","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json","release":"npx semantic-release"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"release":{"extends":"@vodyani/semantic-release"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/jest":"27.4.1","@types/lodash":"4.14.182","@types/node":"16.11.26","@vodyani/eslint-config":"^1.0.10","@vodyani/semantic-release":"1.1.1","husky":"7.0.4","jest":"27.5.1","ts-jest":"27.1.3","typescript":"4.6.2"},"dependencies":{"autobind-decorator":"^2.4.0","deepmerge-ts":"4.2.1","lodash":"4.17.21"},"types":"./dist/index.d.ts","readme":"# Vodyani utils\n\n🏃🏻‍♀️  \"utils\" provides common utility functions used in server-side development.\n\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/latest.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/beta.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/dm/@vodyani/utils)](https://www.npmjs.com/package/@vodyani/utils)\n[![License](https://img.shields.io/github/license/vodyani/utils)](LICENSE)\n<br>\n![Workflow](https://github.com/vodyani/utils/actions/workflows/release.yml/badge.svg)\n[![codecov](https://codecov.io/gh/vodyani/utils/branch/master/graph/badge.svg?token=CI3WEJUN6L)](https://codecov.io/gh/vodyani/utils)\n[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)\n\n## Installation\n\n```sh\nnpm install @vodyani/utils\n```\n\n## Usage\n\n|Features|Type|Description|\n|:-:|:-:|:-:|\n|[This](#this)|class|A class or method decorator which binds methods to the instance so this is always correct, even when the method is detached.|\n|[isDictionary](#isdictionary)|object|Checks whether the current object is a dictionary object.|\n|[isKeyof](#iskeyof)|object|Determines whether the object contains the current attribute.|\n|[toDeepMatch](#todeepmatch)|object|Walks deeply through the object and returns the property value corresponding to the specified parameter.|\n|[toDeepRestore](#todeeprestore)|object|Restores to the corresponding object based on the depth of the specified property and property value.|\n|[toDeepMerge](#todeepmerge)|object|Deep comparison and fusion are performed on the two incoming data.|\n|[toDeepConvertProperty](#todeepconvertproperty)|object|Formatting properties of the object in the data.|\n|[toDelay](#todelay)|promise|Wait during an asynchronous function call.|\n|[toCycle](#tocycle)|promise|Create a recurring scheduled task.|\n|[toRetry](#toretry)|promise|Create a caller that can retry the callback function.|\n\n### This\n\nA class or method decorator which binds methods to the instance so this is always correct, even when the method is detached.\n\n**tips:** To learn how merging works, visit: [autobind-decorator](https://github.com/andreypopp/autobind-decorator).\n\n**Example**\n\n```ts\nimport { This } from '@vodyani/utils';\n\nclass User {\n  private readonly name = 'demo';\n  private readonly age = 1;\n\n  public getName() { return this.name; }\n\n  @This\n  public getAge() { return this.age; }\n}\n\nconst user = new User();\nconst fn = (cb: Function) => cb();\n\nfn(user.getAge); // 1\nfn(user.getName); // Error: Cannot read properties of undefined (reading 'name')\n```\n\n### isDictionary\n\nChecks whether the current object is a dictionary object.\n\n⚠️ Dictionary is not in (`Map`/`Set`/`Symbol`/`Buffer`/`Array`/`Stream`/`RegExp`/`Function`/`String`/`Number`/`Boolean`).\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`dict`|`any`|*The object to judge.*|\n\n**Return**\n\n`boolean`\n\n**Example**\n```ts\nimport { isDictionary } from '@vodyani/utils';\n\nisDictionary({}) // true\nisDictionary(Object()) // true\nisDictionary({ name: 'dict' }) // true\nisDictionary(new String()) // false\nisDictionary(new Number()) // false\nisDictionary(new Boolean()) // false\nisDictionary(new Map()) // false\nisDictionary(new Set()) // false\nisDictionary(new Array()) // false\nisDictionary(Buffer.from([])) // false\nisDictionary(new Stream()) // false\nisDictionary(null) // false\nisDictionary(undefined) // false\n```\n\n### isKeyof\n\nDetermines whether the object contains the current attribute.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`obj`|`object`|*The object to judge.*|\n|`key`|`string`/`number`/`symbol`|*The property of object.*|\n\n**Return**\n\n`boolean`\n\n**Example**\n\n```ts\nimport { isKeyof } from '@vodyani/utils';\n\nconst sym = Symbol(1);\nconst obj = { test: 'test' };\nconst obj1 = { 0: 'test' };\nconst obj2 = { [sym]: 'test' };\n\nisKeyof(obj, 'test') // true\nisKeyof(obj, 'test1') // false\nisKeyof(obj1, 0) // true\nisKeyof(obj2, sym) // true\n```\n\n### toDeepMatch\n\nWalks deeply through the object and returns the property value corresponding to the specified parameter.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`obj`|`any`|*The object to judge.*|\n|`token`|`string`|*The properties of the object and splice them with `rule`.*|\n|`rule`|`string`|*The rules for splicing, by default, are `.`*|\n\n**Return**\n\n`T` | `any`\n\n**Example**\n\n```ts\nimport { toDeepMatch } from '@vodyani/utils';\n\ntoDeepMatch({ job: { name: 'job' }}, 'job.name') // 'job'\ntoDeepMatch({ cat: { info: { name: 'mimi' } }}, 'cat.info.name') // 'mimi'\n```\n\n### toDeepRestore\n\nRestores to the corresponding object based on the depth of the specified property and property value.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`value`|`any`|*The object properties value.*|\n|`token`|`string`|*The properties of the object and splice them with `rule`.*|\n|`rule`|`string`|*The rules for splicing, by default, are `.`*|\n\n**Return**\n\n`T` | `any`\n\n**Example**\n\n```ts\nimport { toDeepRestore } from '@vodyani/utils';\n\ntoDeepRestore('job', 'job.name') // { job: { name: 'job' }}\ntoDeepRestore('mimi', 'cat.info.name') // { cat: { info: { name: 'mimi' } }\n```\n\n### toDeepMerge\n\nDeep comparison and fusion are performed on the two incoming data.\n\n**tips:**\n\n- `base` will be deeply copied before merging, so it will not be changed. 😛\n- To learn how merging works, visit: [deepmerge-ts](https://github.com/RebeccaStevens/deepmerge-ts).\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`base`|`any`|*The underlying data being compared.*|\n|`source`|`any`|*New data merged into the underlying data.*|\n\n**Return**\n\n`T` | `any`\n\n**Example**\n\n```ts\nimport { toDeepMerge } from '@vodyani/utils';\n\nconst base = { a: 1, b: 2 };\nconst source = { a: 3, c: 4 };\ntoDeepMerge(base, source) // { a: 3, b: 2, c: 4 };\n\nconst base1 = { a: [{ b: 3 }], b: { c: [{ d: 1 }, { e: 2 }] }};\nconst source1 = { a: [{ b: 3, g: 6 }, { c: 4 }], b: { c: [{ d: 3 }, { e: 4 }] }};\ntoDeepMerge(base1, source1) // { 'a': [{ 'b': 3 }, { 'b': 3, 'g': 6 }, { 'c': 4 }], 'b': { 'c': [{ 'd': 1 }, { 'e': 2 }, { 'd': 3 }, { 'e': 4 }] }};\n\nconst base2 = [1, 2, 3, { b: 1 }];\nconst source2 = [4, 5, 6, { a: 1 }, 7];\ntoDeepMerge(base2, source2) // [1, 2, 3, { 'b': 1 }, 4, 5, 6, { 'a': 1 }, 7];\n```\n\n### toDeepConvertProperty\n\nFormatting properties of the object in the data.\n\n**tips:**\n\nThis is a higher-order method that you usually need to use in conjunction with other utility functions. 😛\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`data`|`any`|*The source data (`Array`|`Object`|`Map`).*|\n|`transformer`|`Function`|*A callback function used to convert properties.*|\n\n**Return**\n\n`any`\n\n**Example**\n\n```ts\nimport { toDeepCamelCase } from '@vodyani/utils';\n\nimport { camelCase } from 'lodash';\n\nconst toDeepCamelCase = (data: any) => toDeepConvertProperty(data, camelCase);\n\ntoDeepCamelCase({ 'user_info': { 'user_name': 'name' }}) // { 'userInfo': { 'userName': 'name' }}\n```\n\n### toDelay\n\nWait during an asynchronous function call.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`delay`|`number`|*The waiting time (The time unit is milliseconds).*|\n\n**Return**\n\n`Promise<void>`\n\n**Example**\n\n```ts\nimport { toDelay } from '@vodyani/utils';\n\nawait toDelay(2000) // To waiting 2000 milliseconds ...\n```\n\n### toCycle\n\nCreate a recurring scheduled task.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`callback`|`Function`|*A callback function that needs to be called periodically.*|\n|`options`|`CycleOptions`|*Configuration options when triggered.*|\n\n*CycleOptions*\n\n```ts\nexport interface CycleOptions {\n  /** The cycle time, default 1000 (The time unit is milliseconds). */\n  interval: number;\n  /** The callback argument. */\n  args?: any[];\n}\n```\n\n**Return**\n\n`CycleClearHandler` Returns a method that closes timed calls.\n\n*CycleClearHandler*\n\n```ts\nexport interface CycleClearHandler {\n  /** The closes timed calls. */\n  close: () => void\n}\n```\n\n**Example**\n\n```ts\nimport { toCycle } from '@vodyani/utils';\n\nawait toCycle(fn, { interval: 1000 }) // The fn function is executed every 2000 milliseconds ...\n```\n\n### toRetry\n\nCreate a recurring scheduled task.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`callback`|`Function`|*The callback function to call.*|\n|`options`|`RetryOptions`|*Configuration options when triggered.*|\n\n*RetryOptions*\n\n```ts\nexport interface RetryOptions {\n  /** The retry count. */\n  count: number;\n  /** The waiting time (The time unit is milliseconds). */\n  delay: number;\n  /** The callback argument.*/\n  args?: any[];\n}\n```\n\n**Return**\n\n`Promise<T>` | `Promise<any>`\n\n**Example**\n\n```ts\nimport { toRetry } from '@vodyani/utils';\n\nawait toRetry(fn, { delay: 100, count: 3 }) // The `fn` will wait 100 milliseconds after a failure and then call again three times\n```\n\n## Team\n\n|[![ChoGathK](https://github.com/chogathK.png?size=100)](https://github.com/chogathK)|\n|:-:|\n|[ChoGathK](https://github.com/chogathK)|\n\n## License\n\nVodyani utils is [MIT licensed](LICENSE).\n","readmeFilename":"README.MD","gitHead":"3e4427d5a7f11937598bd4fee5ed50a455133a5d","_id":"@vodyani/utils@1.4.1-beta.1","_nodeVersion":"16.16.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-nYYduF5jWboZs8iPt9qFV/S+q4X1lLqng+APUo7F5z9KzWFKHXBprNKUlhXs2GcuxbaWyshkW/IvNOToB8QTrg==","shasum":"3116c90f9a36456918061c85fda3e3cf561a0fdf","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-1.4.1-beta.1.tgz","fileCount":30,"unpackedSize":36512,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC89RtfCq8HW4u6MxgMwcntYguXOuicOm+43zcZzB08gAiAYgYtCw683C+GY25G5hzbw4aM97t8PVapNnE69WVoDMg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi2RCRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqRnA/+JQnOVC1FPnamZ+4KExmTWYjpjr8+dVMeOxgyOGYo72nm0ECQ\r\nuiuimLVS+52qUdbn33/9MlXakLhKAs0OP9JTgf+4AwA7Byz4+Ylv5JhHn7UE\r\nQ44tAoq6dReZvg2l15pDYvGUGgHm888NkdXaCbrDrU4jiY2rCZpNbCtHh4j6\r\n08LE4ubJfrr+ejY5ZhMxav/gPqx0j17WPMQ2uZLg3fnTqL0f0GLWdKYYCAzp\r\no9AYiImhPP4JqzAi8ZliDCmbD/OHvYTCVLuiCPS1WBcd4pjOFstGGGxy4zqb\r\new+SaIrGpP9NoMBaK/opu8T5CePg+U1T/Cs3KNfe4KG9XKdvU5jZpoyx+gcB\r\nNbYQr9A9dcQp/Jjl703fWHS6QPf2l4ZzPOEqZU6ueKfrYSf1XhH7D6RgMmIi\r\nM9gVjFav1Ngmatk0+c7U/HKvNX/QnHHDZry7+WxeIWegDGAuFfj/pfxF1Le1\r\n4SLZgJfyJjHhxAeyMJi/CBfykzfd7zH7Aw5zazuDJHDgL0lcbBLR8cb4n+R6\r\n6y2svhvEnRcMn52LC3J/63hA7alBfaSuqiCUJiHH7deX2Fm5LNN6qrcpGJdQ\r\nwslU+yquNgNyC0gJSYqDq/jLRboCrUt4tkhyIvOpwi31YQYOx7fngd9T+/gx\r\n85NODLt6co/RlrErTDNT7NjeT05IOoUqqs4=\r\n=hgIE\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.4.1-beta.1_1658392721276_0.4175690576460611"},"_hasShrinkwrap":false},"1.4.1":{"name":"@vodyani/utils","license":"MIT","version":"1.4.1","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json","release":"npx semantic-release"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"release":{"extends":"@vodyani/semantic-release"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/jest":"27.4.1","@types/lodash":"4.14.182","@types/node":"16.11.26","@vodyani/eslint-config":"^1.0.10","@vodyani/semantic-release":"1.1.1","husky":"7.0.4","jest":"27.5.1","ts-jest":"27.1.3","typescript":"4.6.2"},"dependencies":{"autobind-decorator":"^2.4.0","deepmerge-ts":"4.2.1","lodash":"4.17.21"},"types":"./dist/index.d.ts","gitHead":"8b67dc737128e4db4a10294f52af3afdea4f4f4f","_id":"@vodyani/utils@1.4.1","_nodeVersion":"16.16.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-rAuPxALW02BsYO3GDtcUW2vYwI5w5dHI9jU7oCXtS07owIACmj4uyqKgXnVVT1F483bJ/ZrAaqlFmyNeSQj9lg==","shasum":"f6d1b48d024d8b4a75578c688ac742bb04dd1259","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-1.4.1.tgz","fileCount":30,"unpackedSize":36505,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEGw5Ry1Rj/MYmbs7kDhG2msF4b2UvFRC2SF202Oy6CnAiEA3DKdQJVDDyu+z0fnypKzlV3J4lJ0WRX5MGmmdfcSGTU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi2RNXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo3Tw//RlCg63XKxhGuXZQSdf78IMGxZheSSTbN1385ItbDc0MQgKS5\r\nanO9fRYYyyJR2XWPZr0nLRIiv9LPvpREvjjiu3PKZg8706kbtavdEd8HO+cd\r\n9TeWCHeyly8//Yso1+syY+8V96wyucdJRwaEU5r83D6uj6QHVyiucaMmRHrs\r\nx5TP4FItV7/ky45mu4kidt35bXZsrsHh3sl/y+1eYYzk0VRZkoj8hnygtXyb\r\njdXoXx0B7979WIKyOXbPbCHDac85wSEfn29w8PGeJC/l/x43QnScgLOqckZ8\r\nJlMNjonObu7rVzTPraEE092ibYGTilN1e9x+pcY4qdQ6N1NRDFGGJy47L6pv\r\nWx4lEObWEbGgTN+V4woUqyX3H7ny2pgFr30sFbPvV1VJnRxOETeYZ/WH9zt7\r\nnokdasmasxdo4eo5byAM9wwDt1mtUziM08SmBGUJSqu/D9PYRxN+8A7p7hlk\r\nJwz5DmQhecuwEAEdl2bZOCC8uHePR/m7WmVwlH8C2iJlVVl4OF59IIQ7Ra8g\r\npsKkv7OW+jLeR02KFUyJURL6ZjjLiNFQZSPBPLXUcSfKVuXD2GC1yODFDnwq\r\ngkX0k3P2JP3+3ZwZsqqDU9vwYseQjoTs2dk0Lfb20+MEWOdh0lAgrVUAB5zt\r\n+mEzYLDsHiYSbZaC9SJY/jVacVqjnd/lZJ8=\r\n=GyZe\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.4.1_1658393431403_0.19542062810005212"},"_hasShrinkwrap":false},"1.4.2-beta.1":{"name":"@vodyani/utils","license":"MIT","version":"1.4.2-beta.1","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json","release":"npx semantic-release"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"release":{"extends":"@vodyani/semantic-release"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/jest":"27.4.1","@types/lodash":"4.14.182","@types/node":"16.11.26","@vodyani/eslint-config":"^1.0.10","@vodyani/semantic-release":"1.1.1","husky":"7.0.4","jest":"27.5.1","ts-jest":"27.1.3","typescript":"4.6.2"},"dependencies":{"autobind-decorator":"^2.4.0","deepmerge-ts":"4.2.1","lodash":"4.17.21"},"types":"./dist/index.d.ts","readme":"# Vodyani utils\n\n🏃🏻‍♀️  \"utils\" provides common utility functions used in server-side development.\n\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/latest.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/beta.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/dm/@vodyani/utils)](https://www.npmjs.com/package/@vodyani/utils)\n[![License](https://img.shields.io/github/license/vodyani/utils)](LICENSE)\n<br>\n![Workflow](https://github.com/vodyani/utils/actions/workflows/release.yml/badge.svg)\n[![codecov](https://codecov.io/gh/vodyani/utils/branch/master/graph/badge.svg?token=CI3WEJUN6L)](https://codecov.io/gh/vodyani/utils)\n[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)\n\n## Installation\n\n```sh\nnpm install @vodyani/utils\n```\n\n## Usage\n\n|Features|Type|Description|\n|:-:|:-:|:-:|\n|[This](#this)|class|A class or method decorator which binds methods to the instance so this is always correct, even when the method is detached.|\n|[isDictionary](#isdictionary)|object|Checks whether the current object is a dictionary object.|\n|[isKeyof](#iskeyof)|object|Determines whether the object contains the current attribute.|\n|[toDeepMatch](#todeepmatch)|object|Walks deeply through the object and returns the property value corresponding to the specified parameter.|\n|[toDeepRestore](#todeeprestore)|object|Restores to the corresponding object based on the depth of the specified property and property value.|\n|[toDeepMerge](#todeepmerge)|object|Deep comparison and fusion are performed on the two incoming data.|\n|[toDeepConvertProperty](#todeepconvertproperty)|object|Formatting properties of the object in the data.|\n|[toDelay](#todelay)|promise|Wait during an asynchronous function call.|\n|[toCycle](#tocycle)|promise|Create a recurring scheduled task.|\n|[toRetry](#toretry)|promise|Create a caller that can retry the callback function.|\n\n### This\n\nA class or method decorator which binds methods to the instance so this is always correct, even when the method is detached.\n\n**Tips:**\n\nTo learn how merging works, visit: [autobind-decorator](https://github.com/andreypopp/autobind-decorator).\n\n**Example**\n\n```ts\nimport { This } from '@vodyani/utils';\n\nclass User {\n  private readonly name = 'demo';\n  private readonly age = 1;\n\n  public getName() { return this.name; }\n\n  @This\n  public getAge() { return this.age; }\n}\n\nconst user = new User();\nconst fn = (cb: Function) => cb();\n\nfn(user.getAge); // 1\nfn(user.getName); // Error: Cannot read properties of undefined (reading 'name')\n```\n\n### isDictionary\n\nChecks whether the current object is a dictionary object.\n\n⚠️ Dictionary is not in (`Map`/`Set`/`Symbol`/`Buffer`/`Array`/`Stream`/`RegExp`/`Function`/`String`/`Number`/`Boolean`).\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`dict`|`any`|*The object to judge.*|\n\n**Return**\n\n`boolean`\n\n**Example**\n```ts\nimport { isDictionary } from '@vodyani/utils';\n\nisDictionary({}) // true\nisDictionary(Object()) // true\nisDictionary({ name: 'dict' }) // true\nisDictionary(new String()) // false\nisDictionary(new Number()) // false\nisDictionary(new Boolean()) // false\nisDictionary(new Map()) // false\nisDictionary(new Set()) // false\nisDictionary(new Array()) // false\nisDictionary(Buffer.from([])) // false\nisDictionary(new Stream()) // false\nisDictionary(null) // false\nisDictionary(undefined) // false\n```\n\n### isKeyof\n\nDetermines whether the object contains the current attribute.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`obj`|`object`|*The object to judge.*|\n|`key`|`string`/`number`/`symbol`|*The property of object.*|\n\n**Return**\n\n`boolean`\n\n**Example**\n\n```ts\nimport { isKeyof } from '@vodyani/utils';\n\nconst sym = Symbol(1);\nconst obj = { test: 'test' };\nconst obj1 = { 0: 'test' };\nconst obj2 = { [sym]: 'test' };\n\nisKeyof(obj, 'test') // true\nisKeyof(obj, 'test1') // false\nisKeyof(obj1, 0) // true\nisKeyof(obj2, sym) // true\n```\n\n### toDeepMatch\n\nWalks deeply through the object and returns the property value corresponding to the specified parameter.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`obj`|`any`|*The object to judge.*|\n|`token`|`string`|*The properties of the object and splice them with `rule`.*|\n|`rule`|`string`|*The rules for splicing, by default, are `.`*|\n\n**Return**\n\n`T` | `any`\n\n**Example**\n\n```ts\nimport { toDeepMatch } from '@vodyani/utils';\n\ntoDeepMatch({ job: { name: 'job' }}, 'job.name') // 'job'\ntoDeepMatch({ cat: { info: { name: 'mimi' } }}, 'cat.info.name') // 'mimi'\n```\n\n### toDeepRestore\n\nRestores to the corresponding object based on the depth of the specified property and property value.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`value`|`any`|*The object properties value.*|\n|`token`|`string`|*The properties of the object and splice them with `rule`.*|\n|`rule`|`string`|*The rules for splicing, by default, are `.`*|\n\n**Return**\n\n`T` | `any`\n\n**Example**\n\n```ts\nimport { toDeepRestore } from '@vodyani/utils';\n\ntoDeepRestore('job', 'job.name') // { job: { name: 'job' }}\ntoDeepRestore('mimi', 'cat.info.name') // { cat: { info: { name: 'mimi' } }\n```\n\n### toDeepMerge\n\nDeep comparison and fusion are performed on the two incoming data.\n\n**Tips:**\n\n- `base` will be deeply copied before merging, so it will not be changed. 😛\n- To learn how merging works, visit: [deepmerge-ts](https://github.com/RebeccaStevens/deepmerge-ts).\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`base`|`any`|*The underlying data being compared.*|\n|`source`|`any`|*New data merged into the underlying data.*|\n\n**Return**\n\n`T` | `any`\n\n**Example**\n\n```ts\nimport { toDeepMerge } from '@vodyani/utils';\n\nconst base = { a: 1, b: 2 };\nconst source = { a: 3, c: 4 };\ntoDeepMerge(base, source) // { a: 3, b: 2, c: 4 };\n\nconst base1 = { a: [{ b: 3 }], b: { c: [{ d: 1 }, { e: 2 }] }};\nconst source1 = { a: [{ b: 3, g: 6 }, { c: 4 }], b: { c: [{ d: 3 }, { e: 4 }] }};\ntoDeepMerge(base1, source1) // { 'a': [{ 'b': 3 }, { 'b': 3, 'g': 6 }, { 'c': 4 }], 'b': { 'c': [{ 'd': 1 }, { 'e': 2 }, { 'd': 3 }, { 'e': 4 }] }};\n\nconst base2 = [1, 2, 3, { b: 1 }];\nconst source2 = [4, 5, 6, { a: 1 }, 7];\ntoDeepMerge(base2, source2) // [1, 2, 3, { 'b': 1 }, 4, 5, 6, { 'a': 1 }, 7];\n```\n\n### toDeepConvertProperty\n\nFormatting properties of the object in the data.\n\n**Tips:**\n\nThis is a higher-order method that you usually need to use in conjunction with other utility functions. 😛\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`data`|`any`|*The source data (`Array`/`Object`/`Map`).*|\n|`transformer`|`Function`|*A callback function used to convert properties.*|\n\n**Return**\n\n`any`\n\n**Example**\n\n```ts\nimport { toDeepConvertProperty } from '@vodyani/utils';\n\nimport { camelCase } from 'lodash';\n\nconst toDeepCamelCase = (data: any) => toDeepConvertProperty(data, camelCase);\n\ntoDeepCamelCase({ 'user_info': { 'user_name': 'name' }}) // { 'userInfo': { 'userName': 'name' }}\n```\n\n### toDelay\n\nWait during an asynchronous function call.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`delay`|`number`|*The waiting time (The time unit is milliseconds).*|\n\n**Return**\n\n`Promise<void>`\n\n**Example**\n\n```ts\nimport { toDelay } from '@vodyani/utils';\n\nawait toDelay(2000) // To waiting 2000 milliseconds ...\n```\n\n### toCycle\n\nCreate a recurring scheduled task.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`callback`|`Function`|*A callback function that needs to be called periodically.*|\n|`options`|`CycleOptions`|*Configuration options when triggered.*|\n\n*CycleOptions*\n\n```ts\nexport interface CycleOptions {\n  /** The cycle time, default 1000 (The time unit is milliseconds). */\n  interval: number;\n  /** The callback argument. */\n  args?: any[];\n}\n```\n\n**Return**\n\n`CycleClearHandler` Returns a method that closes timed calls.\n\n*CycleClearHandler*\n\n```ts\nexport interface CycleClearHandler {\n  /** The closes timed calls. */\n  close: () => void\n}\n```\n\n**Example**\n\n```ts\nimport { toCycle } from '@vodyani/utils';\n\nawait toCycle(fn, { interval: 1000 }) // The fn function is executed every 2000 milliseconds ...\n```\n\n### toRetry\n\nCreate a recurring scheduled task.\n\n**Params**\n\n|param|type|description|\n|:-:|:-:|:-:|\n|`callback`|`Function`|*The callback function to call.*|\n|`options`|`RetryOptions`|*Configuration options when triggered.*|\n\n*RetryOptions*\n\n```ts\nexport interface RetryOptions {\n  /** The retry count. */\n  count: number;\n  /** The waiting time (The time unit is milliseconds). */\n  delay: number;\n  /** The callback argument.*/\n  args?: any[];\n}\n```\n\n**Return**\n\n`Promise<T>` | `Promise<any>`\n\n**Example**\n\n```ts\nimport { toRetry } from '@vodyani/utils';\n\nawait toRetry(fn, { delay: 100, count: 3 }) // The `fn` will wait 100 milliseconds after a failure and then call again three times\n```\n\n## Team\n\n|[![ChoGathK](https://github.com/chogathK.png?size=100)](https://github.com/chogathK)|\n|:-:|\n|[ChoGathK](https://github.com/chogathK)|\n\n## License\n\nVodyani utils is [MIT licensed](LICENSE).\n","readmeFilename":"README.MD","gitHead":"243f3f9168f2179fb0863ac52099a04019222175","_id":"@vodyani/utils@1.4.2-beta.1","_nodeVersion":"16.16.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-J8t7gqTpEhq0AIS6MgHJukAwBS7iWw9sfEOsaz7zSelCVWFXJlYIIlFblLUEgksUCxzNhq4tcvxf6RBwGn0c9w==","shasum":"57b423d92a58e450e95510e9e2d3bd3b04b10e9c","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-1.4.2-beta.1.tgz","fileCount":30,"unpackedSize":36519,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1oYIZvKKJZWtFjyMMNMDx5i6LF8VTn3d4elR5RQH9HAIgfdX1SCa4EOSmPPYJIwAgxrKQwzOiGJqRM7XAJTHKh1E="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi2RSCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq5LQ/9FVlPX95m9F2h15GiFY3BvUXYTBffhs/4SpDf6RS4iWXcc7wo\r\nQlAmuBGhGhZZOUKIozNgiJHcpnfFpTMCWzyVFwJ8vNb6loOHUydjyZj2zOB3\r\nmGdflcWWzwBqVYNvFUtb5byjx+ujdAk+BD2nlolwhDZIwRPzzsDnNqbVXNvT\r\n6ovoGhNM3fxOIvmbrDubIAfJ0jCm4wlUPyfUkN8osQEWtILN248n6nx5kMlE\r\nbetp9ogeFe6+yfUsbQbIwj/nehuj3Z4DmkioHKkJP+bJmcRCPHzkHQrPk0Lc\r\nImoRvMqhgWJ//kPnce9PmPOgF54kAu/NMyTU+IrVDL45px/EQWej7DXyrNi8\r\npxQHAvoInTdrVECQgFNmBEMikHXAsBOVl3aIUxMN7s410vq4iItU3PHmphYX\r\nEJFwRsu1OoB8WE2e+gIkWIfmcrCfCzbGiCztc0def/hmEZeJq9M+Fmcg+9nQ\r\ne9bHegz1mxmatAwbcWcoGgJPlY0NTKPZe4/Bn92Zsb886KEZU9GSJ+JUkg00\r\nAwSHYVs4W05whdepcB/o4yJpM0GEnFCnyx3oNvdwqqE+tS1xFJAZLmXgDkjB\r\nlOX/VHo40xDdoT58K2rSjRebi0Vs0wDwPCwVtcYbfALDOFPxZvAD5m8eQCod\r\nz265QQso+hhHA8lw32VFTpi1MQsM0ar5fM0=\r\n=etjm\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.4.2-beta.1_1658393729751_0.12565802789276725"},"_hasShrinkwrap":false},"1.4.2":{"name":"@vodyani/utils","license":"MIT","version":"1.4.2","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json","release":"npx semantic-release"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"release":{"extends":"@vodyani/semantic-release"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/jest":"27.4.1","@types/lodash":"4.14.182","@types/node":"16.11.26","@vodyani/eslint-config":"^1.0.10","@vodyani/semantic-release":"1.1.1","husky":"7.0.4","jest":"27.5.1","ts-jest":"27.1.3","typescript":"4.6.2"},"dependencies":{"autobind-decorator":"^2.4.0","deepmerge-ts":"4.2.1","lodash":"4.17.21"},"types":"./dist/index.d.ts","gitHead":"7592dd1aaeb86a2e37322a01b78aef22460349f8","_id":"@vodyani/utils@1.4.2","_nodeVersion":"16.16.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-KWonWORtt742iHitfbx0LTy3YQ1mJY8Cvj6ci70/MU70peiJ6sBEaj0jSnJcpcfUtH18SWkHxXpx4PAGBTqOBQ==","shasum":"0acecabbd937d2889b8ecd6821799165da910e20","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-1.4.2.tgz","fileCount":30,"unpackedSize":36512,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA+SK1Jcl4KQN7q5CTBrSap/rdzuU/oFyFTBJ85OzCNGAiEApANYdNOfzBjw5ncr6b4QfgfwIjONqF+ajIEltu8ndqg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi2RegACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrmiBAAgjbm2+KhYsjPbLZwtEPJMAnG7TQK69tRzM9cf5tgJS18WzQ1\r\nREqE6AIbA7jTxfycHubKUW039D58PvY8d1Lsa6/Tc9BVIVhwmZRsujGqOrtr\r\nINJpm/jkqEiWMiZ6iIgajT0pOv+INATFtD9sjVYG/u2JtNur+pZsm6iB/vHK\r\n3UFfpY2fqBjd2T65EM+/I6J3/ERlJYYIEmPLwKwMMnpYSwpTV21gYxn5Wms3\r\n9fC7acpf9o41v4FK2ehuMdApxUm/P4J14sjJv8IRPQXG9Nfy+hYfA7rarRJu\r\np7Ogqxwz3WojDsBVUVY/iDn4QjvFNwMUwAOeRXgHzPoJh93IbCXe+epTSBDo\r\ncPpLrnoReHLngFuRCDkoDj2+XMLq53BUPNAERGLNsJyOoBm3E28bC/PxGHsk\r\nob45XCBdej/0skW/FMMHbQ1QRkkgT8dblFA1vrqG7bW8QbGAKk7gg9YNmykk\r\nGu2NAXzYZYThe0hhzoX5yBSjFSeDh+mSYm0EQQIc/dUHHO2pp2t9oE8p4/R6\r\nO9GSxflCug5FtqSVaNQut83w7BWFZmLxDMgWmb1O/AbTL8wY0yuwgJKBIPW1\r\nnwcAHuwwddsz6KFqaZewGTyRsDb/LM0qN3qxL1StAMeESUwqqqRJ3kcHWGk3\r\nsIiDkCo11VBi87W97Gv543r89OpEjGFcr50=\r\n=uVkV\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_1.4.2_1658394528483_0.5246739639492459"},"_hasShrinkwrap":false},"8.4.2-beta.1":{"name":"@vodyani/utils","license":"MIT","version":"8.4.2-beta.1","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json","release":"npx semantic-release"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"release":{"extends":"@vodyani/semantic-release"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/jest":"27.4.1","@types/lodash":"4.14.182","@types/node":"16.11.26","@vodyani/eslint-config":"^1.0.10","@vodyani/semantic-release":"1.1.1","husky":"7.0.4","jest":"27.5.1","ts-jest":"27.1.3","typescript":"4.6.2"},"dependencies":{"deepmerge-ts":"4.2.1","lodash":"4.17.21"},"types":"./dist/index.d.ts","readme":"# Vodyani utils\n\n🏃🏻‍♀️ Vodyani utils 提供了开发中常用的工具方法，包含：验证、转换、异步处理、算法、数据结构等功能。\n\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/latest.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/beta.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/dm/@vodyani/utils)](https://www.npmjs.com/package/@vodyani/utils)\n[![License](https://img.shields.io/github/license/vodyani/utils)](LICENSE)\n<br>\n![Workflow](https://github.com/vodyani/utils/actions/workflows/release.yml/badge.svg)\n[![codecov](https://codecov.io/gh/vodyani/utils/branch/master/graph/badge.svg?token=CI3WEJUN6L)](https://codecov.io/gh/vodyani/utils)\n[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)\n\n## Installation\n\n```sh\nnpm install @vodyani/utils\n```\n\n## Getting started\n\n- [使用文档 📚](https://vodyani.vercel.app/docs/other/utils)\n- [Documentation 📚](https://vodyani.vercel.app/en/docs/other/utils)\n\n## Questions\n\n- [Have a question? Please post it here and share your confusion with everyone 🧐](https://github.com/vodyani/utils/discussions)\n\n## Team\n\n|[![ChoGathK](https://github.com/chogathK.png?size=100)](https://github.com/chogathK)|\n|:-:|\n|[ChoGathK](https://github.com/chogathK)|\n\n## License\n\nVodyani utils is [MIT licensed](LICENSE).\n","readmeFilename":"README.MD","gitHead":"49960c4a11ad95d2f08b37807117341c6f80f4aa","_id":"@vodyani/utils@8.4.2-beta.1","_nodeVersion":"16.16.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-e3DSa+CMXSz3Mu+a6b//GjjPBdKbGk2O/c+WeYMUzmtXbwHZb00P4VpkPJM49RZfMMvZj4zXl6G43zgDV3bAHA==","shasum":"c9b7e2a186caafc4c84853a704582dbecacf3281","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-8.4.2-beta.1.tgz","fileCount":33,"unpackedSize":43973,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFkRbNFaalVLLBkRgeDpHSnz3dyy1Ncwf/m4zYcXvlvPAiEAwtru+x+6Ng2CPNQjhkn7WOGii3xUsSZZb6mbHFbiaWo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9KpgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr0ZQ/+L4PW42vYv7wWje7ve7mfJt3UZLNvn0+OGmfikRVYhaUrhoqZ\r\nbe5zssZdoXLnYlukDvxC4EFx8HdFkHtl6W5Q1d99UxPK3PTprpaR41paO+Iu\r\nr78iYMNrMTWdb3yTRJFL+AepkxKqM2mEl0y7EtCpKHPiELR0UXA41fB5hnkx\r\n7PVx3vvSzNGEcma7gWa41dQnUiOD0hNN/TR4U2d86d9PqR7+DdmfAVES4tla\r\nz3YxPdSnQoY5bBSppdiK4MyW5A1YJ7Rpalek6VWCUw+tI+UGRgu7tmcAq1Dq\r\nY3I32r518QUoKvKZ40X10g1btw0mrp5/kLxH47Rkv9nnFPFDNRadY8Jae/HT\r\nIv9VV16y76DbBHXG7ZVh0ubjUVEpQycurUAq7tNnHTblPHmKyzo+siJQ4XoI\r\nDYtnZfHhEupCtUlPqvNoYBexvzsiJcpyBl6oSAHFEqzz6v02wzz6IsEH1mFE\r\nFBKpBrpEiNQcWVUahCKG4MT3nd4pNw2LSSjOHXAERs2Fi9/sLEVn0Q0aMCpU\r\nazZK33qpIr8kw/cqlA6Rh3v2Igk5wd1KTrR7jnuY24LTQYp3w+8r2x0+HJH3\r\nxw8Gs8x0Ayl9KAgiSwU23qFLr9WurY1NwPy3jTLhhnc5OaVC4Up1p8H7IEqv\r\n2w0Q6fpcw69tdvo+QZpRY+ZsnMpuikitjr4=\r\n=UmsC\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_8.4.2-beta.1_1660201567997_0.44390429990098634"},"_hasShrinkwrap":false},"8.4.2":{"name":"@vodyani/utils","license":"MIT","version":"8.4.2","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json","release":"npx semantic-release"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"release":{"extends":"@vodyani/semantic-release"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/jest":"27.4.1","@types/lodash":"4.14.182","@types/node":"16.11.26","@vodyani/eslint-config":"^1.0.10","@vodyani/semantic-release":"1.1.1","husky":"7.0.4","jest":"27.5.1","ts-jest":"27.1.3","typescript":"4.6.2"},"dependencies":{"deepmerge-ts":"4.2.1","lodash":"4.17.21"},"types":"./dist/index.d.ts","gitHead":"0327d0f8e03545184f90d8413f7faa2645fcb022","_id":"@vodyani/utils@8.4.2","_nodeVersion":"16.16.0","_npmVersion":"8.13.2","dist":{"integrity":"sha512-Ry0n3DO9nH8q8nyzYBHkSiWbUx6VTXvvnvp9I2co9sIuVEsNmuTBTL8PJEuUKHVfriPNo9xvUEBluZkRcTlWzg==","shasum":"7db99001ca67f8dcbeb53b3106815efdaf097898","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-8.4.2.tgz","fileCount":33,"unpackedSize":43966,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICaLTdJ3Qfg+4GO37+MqqMoWBfAJhn0Q0yMhDKGeyBoxAiB/rlhzjDBDiXHQG17mHhJTpEyr3Vfm/oJR4H2o6RMw8g=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9Ku4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqSqRAAjOZy3gauU1yCSPeL6+YlqtEX34/bAEN6oPUXMuCBGxtL+jNR\r\nwKwYoW3UQmZz6nzQBuZwaZagie2iqanKvsqkhxElCc2CVSFvmOg/ecJQi4ms\r\nEOoeFZb7ExsYruo/8ypgy+DFRRZ8Dcp+CYEL/yJlZeD5OariZqx8VeXTB09f\r\nt4njW+mevwu5G+8dSNH59veGFx22HaM9dnvOS/dnpw19SI0dJOUE2FffGHCT\r\n2+58zEs6IXQvpzOU8J5mkY579DFoOqSoqPgWPdmh11pTi16h7kla7mxexG/X\r\nxQg4intT8Z5WQ2zqQ5JBQeGhCKpAqGYUdDcBX8Ty94pzHpn5SQwx9GjKq17C\r\ncU070PgHMae0Ts/SfbJ9P1vxeznF3rYlgUAm76CmHS3g9YH1WpHnRMfdzUYR\r\nj3oqyOII+Zt/qSLkerSEdvIjhwjnaGrYY5G8653UwwQvgVmvNC739B1lutT6\r\nAtFfQ0awkv0RlJBL2amd/RbAd44f53n6j6G7Q8sUllTit1gnqfMtn4aA23W3\r\nIMI4Zcn2peIIf7ppIb57auOo0uw8EybKyFMkhAUYmhfAqwS5p0z+lV26w1Wx\r\nfhwm/ERCIvyhtgBdS8PAT5b+llnhlI9DRU7yiUi6a7os3hg5YZWum7BP0ziH\r\nN2r3frGoGCruhF1kpXUZzNc4BgCdLzVxDs4=\r\n=qs7P\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_8.4.2_1660201911929_0.7769854085374381"},"_hasShrinkwrap":false},"8.4.3-beta.1":{"name":"@vodyani/utils","license":"MIT","version":"8.4.3-beta.1","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/jest":"27.4.1","@types/lodash":"4.14.182","@types/node":"16.11.26","@vodyani/eslint-config":"^1.0.10","husky":"7.0.4","jest":"27.5.1","ts-jest":"27.1.3","typescript":"4.6.2"},"dependencies":{"deepmerge-ts":"4.2.1","lodash":"4.17.21"},"types":"./dist/index.d.ts","readme":"# Vodyani utils\n\n🏃🏻‍♀️ Vodyani utils 提供了开发中常用的工具方法，包含：验证、转换、异步处理、算法、数据结构等功能。\n\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/latest.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/beta.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/dm/@vodyani/utils)](https://www.npmjs.com/package/@vodyani/utils)\n[![License](https://img.shields.io/github/license/vodyani/utils)](LICENSE)\n<br>\n![Workflow](https://github.com/vodyani/utils/actions/workflows/release.yml/badge.svg)\n[![codecov](https://codecov.io/gh/vodyani/utils/branch/master/graph/badge.svg?token=CI3WEJUN6L)](https://codecov.io/gh/vodyani/utils)\n[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)\n\n## Installation\n\n```sh\nnpm install @vodyani/utils\n```\n\n## Getting started\n\n- [使用文档 📚](https://vodyani.vercel.app/docs/other/utils)\n- [Documentation 📚](https://vodyani.vercel.app/en/docs/other/utils)\n\n## Questions\n\n- [Discussions 🧐](https://github.com/vodyani/utils/discussions)\n\n## Team\n\n|[![ChoGathK](https://github.com/chogathK.png?size=100)](https://github.com/chogathK)|\n|:-:|\n|[ChoGathK](https://github.com/chogathK)|\n\n## License\n\nVodyani utils is [MIT licensed](LICENSE).\n","readmeFilename":"README.MD","gitHead":"5d0718c526a1ee70de2f499afa37e2f2d873b421","_id":"@vodyani/utils@8.4.3-beta.1","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-+QJH5Sxaq6mbO9V+VHVA2ayvbms3r39zA4yZC0z/vTC7FXXdxoW2ZhKSoq4/xLhu7A4+YQR/Ml/8M5H2X86KLA==","shasum":"0883898c204832453c874c42c2fef4947221930c","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-8.4.3-beta.1.tgz","fileCount":33,"unpackedSize":43879,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBNjawtnseq/VbrVwUbMy4pYppogflwsYb4fKCq0BTryAiEAvv4YYXIgOLexlq9he0Z0MhCG79NUS7YjspGoNPUpXxs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjCJhBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpNYA//XswXHqRzGMrVuv1GXbEoYR69+/PuOzW+SJ0WlFar33R6mSvb\r\n7INXN8xO8UwazZK2K7fX7BuovxJtfgzbxUQDjgO/7nDglD3jfdFkQ8NWsuwO\r\nJUpPw34Xtwi106qswAR8km+A6X9OODu8E4m5ZPUlFm0SQ2gqeEBRfoR3iBxc\r\n0FayE+5s3yWsYCOds25abCItm6Kai4xpS24UpqDFtQAmGwVFENAbSudzsJej\r\nz0YXlRMiqK3cjimdcpZombtM11LwphngnynQd/yrZzuhymmza5OjrD5xS2tv\r\nhmG4uraMLwQBSLnLxR3xmd7yNNw1YhFwwdvEgbFYmyWl2xy3EqG+j5SRAP39\r\n8rP0LTbRKL1dm7/JyFWMGy3i4cmNhcSug0vXuTeM9vcuLOOxvknjrRVld2E5\r\nF+8tNjXZa+FBmgjkMxe/OwCmujD3ooPv8jCFDLxCP2yKKeCXelHnVXUwvqcd\r\nxBsa0QJs8UKe8wHB47fy1M3ZplgpKYUUul46qh/uiTYUrabBKbOsdEWyIzHp\r\n6Kf6B1Np05aQoyK7f+G5W/xOjx2YLQb793n2DmnHIITJPQuef/iFvIIPYf1s\r\nOMphuvzMN1tL68XqjdechcYhI4BzzPWlilqI/ucYEh9pmA3tA9kAgLtTSdY6\r\ndu9RmsFj6A1FcbWoe7sXvR2i1ih7C7nGs7k=\r\n=HH1y\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_8.4.3-beta.1_1661507648722_0.49614290660598503"},"_hasShrinkwrap":false},"8.4.3":{"name":"@vodyani/utils","license":"MIT","version":"8.4.3","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"devDependencies":{"@commitlint/cli":"16.2.3","@commitlint/config-conventional":"16.2.1","@types/jest":"27.4.1","@types/lodash":"4.14.182","@types/node":"16.11.26","@vodyani/eslint-config":"^1.0.10","husky":"7.0.4","jest":"27.5.1","ts-jest":"27.1.3","typescript":"4.6.2"},"dependencies":{"deepmerge-ts":"4.2.1","lodash":"4.17.21"},"types":"./dist/index.d.ts","gitHead":"1a26ad1608cc0c9ef1be69db7f68aaebed80f43f","_id":"@vodyani/utils@8.4.3","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-Bg7sN4tFjqAr0kA54NIzGXgd98+OccTR/DbxfvpoRLnjs1+rzH43+XaoA9R43gTO0cwb74W/pPM2ttthwk6XOw==","shasum":"4469e2e2c20b64cc609e1012ad3744f06e61d7ca","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-8.4.3.tgz","fileCount":33,"unpackedSize":43872,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDPERBdPm6NDiWJ2LD3wCwAzPlL7amiGuExsFRFaKgOCAiAlXNaDMG8Q+FML+ML4lLUX9XC4pI6r+gcJ2G1p9e1jeQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjCJjwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqDohAAiGte/946dV5Gm1Re1MMNgLu2YXHVL5jRSlOKLVx3PqwtbVGh\r\nJ0X5IQMjzHSUVBjhpoCe/NRadrM09cVsqRlGkd5A+3Jysc491n287GrGi5qx\r\nzNj0hClg2whqc2uufI+L+lXMYTDTv/x/9fPzghhiPBm5QBcBR4SLBi0zFoOF\r\nwqE0Gx+94CPf894pADoJkvvQYel/dAiRYmv5vPmpyJRS4MvmD0N3wcnvBYcT\r\nJlyvBLe5bapMDXsdQMRdS9Q5/vq6fmUXP7wFRI/dbI0adoxwoqubXZHhpP1D\r\nQSxGgWC7RHmxTjuuc5pnFP7/JWmYX1+ZMOpr3i+QFtNcwspK9ixx3TDEpmYE\r\nBr/ZEb/iDRHdBl1eMZBBDl4KIP2NzBoRBksqgkXVGDbESSviLTVq1ocY2RF7\r\nC7gYbFnkasfM9qapEe+Yxi6U3g31vsADPNJtT0AMkei57CyUSHEgDg13x08X\r\nCzHgshK/l+/hTD5IMm54CZVFU6csM2u+1CTtHNL6Ryj8IhFJy500gu1ZR49N\r\nQo5Rz66cGqD6luF2DbVQ4DPAYAqdSARC4LHtaTdbBKb60MWA4z+5wiI4+uOl\r\naVgI09BlZgCBaXsBvxXVeUegTkELC+skoFBsfb0jqqLI1No6/mPnNug1rhre\r\nM4A2JBeOGF+s4EeQOCBY2zCVg7A2hnnM3pM=\r\n=mrJ8\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_8.4.3_1661507824584_0.8255901296732993"},"_hasShrinkwrap":false},"8.4.4":{"name":"@vodyani/utils","license":"MIT","version":"8.4.4","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"devDependencies":{"@commitlint/cli":"16.3.0","@commitlint/config-conventional":"16.2.4","@nestjs/testing":"8.4.7","@types/jest":"27.5.2","@types/lodash":"4.14.182","@types/node":"16.11.56","@types/supertest":"2.0.12","@vodyani/eslint-config":"^1.1.0","husky":"7.0.4","jest":"27.5.1","supertest":"6.2.4","ts-jest":"27.1.5","typescript":"4.8.2"},"dependencies":{"deepmerge-ts":"4.2.1","lodash":"4.17.21"},"types":"./dist/index.d.ts","gitHead":"d191d665d282b49a56b0186e60ebf3914b0303df","_id":"@vodyani/utils@8.4.4","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-RtF0elQKHx0ZmNoauC4CAbB+4ZtWj1kQdBhB0U/nV4JE8XYbV1SnwYBQZ40Xa5SsuhGEEvkwQUyuhqMTrmvAMQ==","shasum":"1e5098acfc48c9471fcb54356cc5a2edf32c6a39","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-8.4.4.tgz","fileCount":33,"unpackedSize":44035,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBheUWqKMrjhceKrmaTgcrdT6kPXEbyf+4+xsgus5m8AAiEAw6cOb/jJGYkYcXpf9Wh8K6w895W4BwIMb0scobBugHU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjDttSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrMchAAniknqGuD1eOYwi4F0uf5MXbet6Gkw/QfMGgNY1xkTBG1l2TL\r\nVqk4sp4iB5bGNO/N+52+m1vM+uOuNKQXnycQKtWVDYDPV3Tuh5nq3JFm4ULx\r\nUtpjSDBoWKzs1xPk8dwEme1JuWhI72khcExiEVFNAku8RrAWqVY54yP6LAV1\r\nybpshPyPnpXiGYzAP+6aK9SO8y5S1Awi2I1lz5nYLgBGCSs7LtvYc4aSbQ00\r\nKctyQYsL+vsmPI3K9janBs4/leSFBqD5eNRjC8GPCd2MPOzL51MVs+3YzzK4\r\nHqqehJ/ntMTENjiqCd5TcR+qXyYal9gXGaAMBDD0ewkLcFR9wHmw1WA5Wz7x\r\ndw2OWRjRCHdva3MDrMwq6jw5F/pCX8kc5hbE4hwCgWEyVBgFkAnNMrgnUge3\r\n03eF2z7kZK4YIC+oG8Ox/WDJeQgSj71j8YEW7CbbiW4RRVCnbsJqYS4qFW9/\r\nm97snRShDPALMy0oQjgjt920XKBa5lgvMjVlvdSQHYa4Xc4l9ojLHr9IIezW\r\nsrv4Qh+mVtsaMkIq3H6AUSsNilAzLX1f8cekmpb+CnvxFObYfq7EDIHxNIW1\r\nRL1gX2SzbH4kmqgvdJ45pWaNquwGbpxkya2/echEGCQ2XBxUIb9TIu4lJHOP\r\nrelstiW0C5zUto9jxtErAbVXHG97jaWh0Jc=\r\n=0i3D\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_8.4.4_1661918034495_0.7118789893625703"},"_hasShrinkwrap":false},"8.5.0-beta.1":{"name":"@vodyani/utils","license":"MIT","version":"8.5.0-beta.1","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"dependencies":{"dayjs":"^1.11.0","deepmerge-ts":"4.2.1","lodash":"4.17.21","module-alias":"^2.2.2","uuid":"^8.3.2"},"peerDependencies":{"@types/module-alias":"2.0.1","@types/uuid":"^8.3.4"},"devDependencies":{"@commitlint/cli":"16.3.0","@commitlint/config-conventional":"16.2.4","@nestjs/testing":"8.4.7","@types/jest":"27.5.2","@types/lodash":"4.14.182","@types/module-alias":"2.0.1","@types/node":"16.11.56","@types/supertest":"2.0.12","@types/uuid":"^8.3.4","@vodyani/eslint-config":"^1.1.0","husky":"7.0.4","jest":"27.5.1","supertest":"6.2.4","ts-jest":"27.1.5","typescript":"4.8.2"},"types":"./dist/index.d.ts","readme":"# Vodyani utils\n\n🏃🏻‍♀️ Vodyani utils 提供了开发中常用的工具方法，包含：验证、转换、异步处理、算法、数据结构等功能。\n\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/latest.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/beta.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/dm/@vodyani/utils)](https://www.npmjs.com/package/@vodyani/utils)\n[![License](https://img.shields.io/github/license/vodyani/utils)](LICENSE)\n<br>\n![Workflow](https://github.com/vodyani/utils/actions/workflows/release.yml/badge.svg)\n[![codecov](https://codecov.io/gh/vodyani/utils/branch/master/graph/badge.svg?token=CI3WEJUN6L)](https://codecov.io/gh/vodyani/utils)\n[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)\n\n## Installation\n\n```sh\nnpm install @vodyani/utils\n```\n\n## Getting started\n\n- [使用文档 📚](https://vodyani.vercel.app/docs/other/utils)\n- [Documentation 📚](https://vodyani.vercel.app/en/docs/other/utils)\n\n## Questions\n\n- [Discussions 🧐](https://github.com/vodyani/utils/discussions)\n\n## Team\n\n|[![ChoGathK](https://github.com/chogathK.png?size=100)](https://github.com/chogathK)|\n|:-:|\n|[ChoGathK](https://github.com/chogathK)|\n\n## License\n\nVodyani utils is [MIT licensed](LICENSE).\n","readmeFilename":"README.MD","gitHead":"38e71607a3ebf53a65a52e45567f93681d88a765","_id":"@vodyani/utils@8.5.0-beta.1","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-c/B/q3Pd87imThNNr0zWyt7FszkGfKGMv3XflZmT2yZZR0sh61Wl8yPTsZd8DKFbeh/SMNjlEKtR4BvDc6cBfw==","shasum":"f5003d46cb65981b554471e5e2883707bb44e5dc","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-8.5.0-beta.1.tgz","fileCount":45,"unpackedSize":46934,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIARfjnPYEoGNx5djPcGx9grghhByV1L2kZdYz/4vOWazAiAkJbvyp/IQTX91LzCb1tTFENYqgfFFlmFJJBWCF0o8xw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjDuAEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoeTxAAk/kWyvB0Cfo4H7IyEz1hgklGBblEasV7Xrp2aUyod2F/FeQr\r\nZsJ1+2Fe+uq5gJl6NDCIOEJaNOC1NQdp38G3nFeZxqlpyO50C5xzavfj4DYJ\r\nmi74B+W/LJaERWK9PZ//mQ2LQSO/Y3Th7uO4qJ9J1890l/595oku2+6cXCJf\r\nKsCdzknhg5u+4I0ZOWP7CWB/KIbKrul4MadclH7MOwxS/vfC+hk5k9t8U8pE\r\n22EEUWgEKZidygQDTvOqY6ooxJl3866oRHopGPDh8Eoaum2+GttW7WylWOuN\r\nI4x8FQI3r+DGBmLzY/Tdq/bRHPRAg+I6rmfIhsh20wRgrps1qc4mwkHUMABV\r\nMDAmq3gmEC2K2iSusZUzI6/iQF1icpnIMQqoWPKqOTqvUGjWqelMmktRSD0/\r\nvSQmtvwOI+hIHVY2UtVfpdAUbeImlLiudSLamkDZXEPAs8JheBrcy8V7gM+9\r\nQy4mpid1xXt/26nS6TUqpCMGSr3eHoyQOdksiGAdbkmezy4U7+sRngVfMLFM\r\n+WWSAR6Ph1SOoLnAqOqzRiXEYIHATCpx89GacMJi7/xtz63FXYBoeZsUrP+H\r\nYKpptL3EIRPoKk+azq/McpRk5UWIuhB+SGEANbQgok35AAVd85uvBttSVArd\r\nVPOdkAEFLgxtVy+iz2cRQpzeIkUabSNPqVA=\r\n=DUmO\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_8.5.0-beta.1_1661919236033_0.7497455331351162"},"_hasShrinkwrap":false},"8.5.0":{"name":"@vodyani/utils","license":"MIT","version":"8.5.0","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"dependencies":{"dayjs":"^1.11.0","deepmerge-ts":"4.2.1","lodash":"4.17.21","module-alias":"^2.2.2","uuid":"^8.3.2"},"peerDependencies":{"@types/module-alias":"2.0.1","@types/uuid":"^8.3.4"},"devDependencies":{"@commitlint/cli":"16.3.0","@commitlint/config-conventional":"16.2.4","@nestjs/testing":"8.4.7","@types/jest":"27.5.2","@types/lodash":"4.14.182","@types/module-alias":"2.0.1","@types/node":"16.11.56","@types/supertest":"2.0.12","@types/uuid":"^8.3.4","@vodyani/eslint-config":"^1.1.0","husky":"7.0.4","jest":"27.5.1","supertest":"6.2.4","ts-jest":"27.1.5","typescript":"4.8.2"},"types":"./dist/index.d.ts","gitHead":"0728e1d388676d8899da656e3ab51346fad8e4d1","_id":"@vodyani/utils@8.5.0","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-31bVC4wmuC8Jz0dCtsOPSMllbLM4D0JXZdASxQ0Pou++05HSCoEkpApCPakcoBhUXo6UCZUj9cXYQMt8nvzbBQ==","shasum":"4cfadfe193a26b06539d49cd42584e51527d2b04","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-8.5.0.tgz","fileCount":45,"unpackedSize":46927,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICWjfEHoTC6bdNK2kron09/kzhOC7+8CCEhT9OW95NBZAiEAmhqH5FsLEXXsftRIiOaMXnWAprilBojFzoyIT0lj0NY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjDvLhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrMnA/+OrvYm6XntFMyFpPIoPsPfouoNpkXFwvss548dqq/TsOiiYGL\r\ng2kObMISchiklD++BDln6Q+VEX7AV7LUKy8F5B2BocpnP9CXaSiafbphFJYm\r\n9p4vsG1mreNhG5a1K8/90poT5zzn8OLi9z+pUuQDLaF8JpHMdq/Vzs3NoeRY\r\nQ/26wOV0qGHG1ffkcadwUHKdBRuSyRU6/2d35TamK5iAkTnMMu2ZKGFwZQ/R\r\ne6X75kZapMFt7wwyaxRneWe/ml0hSdDsTh/K7OKoGnnuXFObnPvFnXYL+n3b\r\npAzoTLQ4fMWNu5WKsTJicxE/jIBBRh2nKu3E9ZXNxQ/zawLCO35rhZQcoqJV\r\n2adHFvQ0KeTBrRXCEtb2rQPzTaCy/xp1NEeKyNnsdViZwn1gvCJzgT26VuDf\r\nX+pyP4ct7sFOywQ7tLwPsEVRNL4oSsGgAPHnBzeq0zWqXxU6lHpMH9Iq5tJr\r\nMrE4GqKKB7hEnELQuFSPfWsCahbSRYIyHLkmprAq3vRRsTALS7TFiA7QFeQT\r\nWz+hiG5W5pJdZGLCBte19oaZ4cZsIDCHblttgi8ZRbVowVgleKdczg/zB95w\r\n03voCnsIj4adoqK4C8PINCsdE5IQF3YeRjTMu8+wMegEsLYyf31TVkNGVRQw\r\nk/67Fdqp++oAwaHhmrjH3rzaoMeWp32kPss=\r\n=mvAP\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_8.5.0_1661924065145_0.388194291712431"},"_hasShrinkwrap":false},"8.5.1":{"name":"@vodyani/utils","license":"MIT","version":"8.5.1","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"dependencies":{"deepmerge-ts":"4.2.1","lodash":"4.17.21"},"devDependencies":{"@commitlint/cli":"16.3.0","@commitlint/config-conventional":"16.2.4","@nestjs/testing":"8.4.7","@types/jest":"27.5.2","@types/lodash":"4.14.182","@types/node":"16.11.56","@types/supertest":"2.0.12","@vodyani/eslint-config":"^1.1.0","husky":"7.0.4","jest":"27.5.1","supertest":"6.2.4","ts-jest":"27.1.5","typescript":"4.8.2"},"types":"./dist/index.d.ts","gitHead":"59c7c7715754cd088300cf518e56116bae99e4c7","_id":"@vodyani/utils@8.5.1","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-2WzDIJSWKNOrRVu9j+eBF1N/7dp8J4dwLBpI95F91doqB8Q4p59ez4SkRgAG/HXQpU+dubzVSJQX9pAmlSgcTg==","shasum":"630f09749f092ce4b7d2d122b257433465b5af5a","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-8.5.1.tgz","fileCount":33,"unpackedSize":44035,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICNjFV3nY4SMWM/+OxfnQhr9+K3Gs3bqZ/rpoFu2gkYXAiBCTLectZn0pHGTMXAVmU6Q9IWT7xke3u7VqEkJCBAfsw=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjDwJnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpXWxAAoyTGcRkXx0QCTwSnyXwZlhYvKYivO20lYMYL0yDj+erc2Kie\r\nwfe2/0wbC7HBaT5T7NI3FI4ER1tB0wrezERGDnq/RYew3eIcAYwHFNhIDs9n\r\neIzlnXEZc9ZVKreJFaNU8h9Efidns+hXfAbi6Ju4QXMclFeCzaaT9efxAxw3\r\nLyrZumKgZJIfpQK0ae80/CXKT33NhQLd+bfuUQhRWITvZB21jgdjVFEAlfGO\r\nyufLtMyes56XBuQGm2IRokfc26ZweyNjN76ffIrTq4JB7tQ85A2vpjxE8G/E\r\nee/NhQVSjPQ7zEVIxZhG7I94ka6mmxyiaQgZ6rUKOcu5K0skXxUOkcbcVSlo\r\n3Jq9d+e9c9vR1jG29opAFAHd82bRSp0pDOK/zZQ3ww3TUu0eumtdRKLQNTF9\r\nC3rYRcq49UPo6OmftV/SJ9uNSJ6rPMZaXzGl1uEHf4iZMmUVPOWpg4wkqyl3\r\nHMEh2mLsMRk40pno8rZexJ7K76GE5KBXhbiNle/R6u+9NpGL/ZesiLo1hyjU\r\nzpjLLayVeWL32T6Ui8iY4O944+mA/DH48KMFw+ZPIiGHyG05F0EnVFXclJ0m\r\nysZIzwSuOJHG1rs7+ZmT2tVQKbPmlTvCDzlkaaEEXizfY5Nglp3NEb/OhKeo\r\nRLre3F2wLgJkWoIS7EntzNR14ZLwi9CpciQ=\r\n=/8KA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_8.5.1_1661928039699_0.277649959640903"},"_hasShrinkwrap":false},"8.5.2-beta.1":{"name":"@vodyani/utils","license":"MIT","version":"8.5.2-beta.1","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"dependencies":{"deepmerge-ts":"4.2.1","lodash":"4.17.21"},"devDependencies":{"@commitlint/cli":"16.3.0","@commitlint/config-conventional":"16.2.4","@nestjs/testing":"8.4.7","@types/jest":"27.5.2","@types/lodash":"4.14.182","@types/node":"16.11.56","@types/supertest":"2.0.12","@vodyani/eslint-config":"^1.1.0","husky":"7.0.4","jest":"27.5.1","supertest":"6.2.4","ts-jest":"27.1.5","typescript":"4.8.2"},"types":"./dist/index.d.ts","readme":"# Vodyani utils\n\n🏃🏻‍♀️ Vodyani utils 提供了开发中常用的工具方法，包含：验证、转换、异步处理、算法、数据结构等功能。\n\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/latest.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/beta.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/dm/@vodyani/utils)](https://www.npmjs.com/package/@vodyani/utils)\n[![License](https://img.shields.io/github/license/vodyani/utils)](LICENSE)\n<br>\n![Workflow](https://github.com/vodyani/utils/actions/workflows/release.yml/badge.svg)\n[![codecov](https://codecov.io/gh/vodyani/utils/branch/master/graph/badge.svg?token=CI3WEJUN6L)](https://codecov.io/gh/vodyani/utils)\n[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)\n\n## Installation\n\n```sh\nnpm install @vodyani/utils\n```\n\n## Getting started\n\n- [使用文档 📚](https://vodyani.vercel.app/docs/other/utils)\n- [Documentation 📚](https://vodyani.vercel.app/en/docs/other/utils)\n\n## Questions\n\n- [Discussions 🧐](https://github.com/vodyani/utils/discussions)\n\n## Team\n\n|[![ChoGathK](https://github.com/chogathK.png?size=100)](https://github.com/chogathK)|\n|:-:|\n|[ChoGathK](https://github.com/chogathK)|\n\n![Alt](https://repobeats.axiom.co/api/embed/1e23cf3a598d3f75555c9bccab6664de44857ab3.svg \"Repobeats analytics image\")\n\n## License\n\nVodyani utils is [MIT licensed](LICENSE).\n","readmeFilename":"README.MD","gitHead":"2eb066ead0805ceae8126a7e46b8075d54acf77b","_id":"@vodyani/utils@8.5.2-beta.1","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-4G+CL7Hq18d8d4pIsMxp9v/8Cgt1vbYWS4MfGyvKOk9kphdB4wHzZh6gK1qnPseku/NtAc2pnVhNQtgsWKGIiQ==","shasum":"877a6e0dd01f7027e3203ee4fe5d99152a8edf45","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-8.5.2-beta.1.tgz","fileCount":39,"unpackedSize":42302,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCvVsD18ynz52myZTbDl6M2cdbJ//gcaP+Y4A7kv7fvTwIgRWc/lS1ceRw2OKVowblr7fXR6cKsMQU8kxMfwtZkS2Y="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjGE6IACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpAyg/+NcxhbVr+5t2sPv+34NAKXSPaal6W4jZXxIGI0K3a4/+gBhqS\r\nRLIEsBWhZUO8qDTQyamktNPszfzUpnclOu+pZ/f3I6Bmu2gka7Ao43cFWPyu\r\nD2pQUlUlCDmVeLBw2oAhg5zThlH2ZzwMPRo449A5zpL1I6PJhx6r5OqPK7zZ\r\n+vvS+c5T6sGr3icFL0jMGFrL3UAqy8uYSFm0jPmF21zL1ni92EJYMEFjEHES\r\nU+VyA0ExOEbPB56LU7TnQiPmq2hSu7DS3YOuqR77ul/s9RHtf/rDj3dn/2Vv\r\nWBMReh1BMr8UWfHnHOfd0cfqSMuozlit742cR6uDHrThHsJ70gzd88UZeHyL\r\niRy0OchZLLdcgPeYxmswCQLWxeD8hsDWjoVv/jMBAQ0PnEl3b3lfKaBxutSm\r\n2vazL0B2BBNiTZpVhR4CDRZmrUoQCZAl26n1se04iIgFk7egzsWpzQ3InOBs\r\n6yUpX/ESHxtv2IWfQmygUPUdQNVmjOSQxFrjfzklVCl2X0HsI5sA/4beDV+A\r\nFkTQQrqSPz/ER5AettQPMBcN5kBagh1gDJ68lNxhmHPEwQ3Z7Xs7YESdhl4w\r\nOHBNg3KOrODzXSNb+c1iszG2fv7MGjqpJp9f24ndlptzYd6WXbplHoSBCxvw\r\njQalDGMjKKouR8iJ4lnRBGN0pY+scU0UG2w=\r\n=NaNa\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_8.5.2-beta.1_1662537352529_0.6835570877307966"},"_hasShrinkwrap":false},"8.5.2":{"name":"@vodyani/utils","license":"MIT","version":"8.5.2","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"dependencies":{"deepmerge-ts":"4.2.1","lodash":"4.17.21"},"devDependencies":{"@commitlint/cli":"16.3.0","@commitlint/config-conventional":"16.2.4","@nestjs/testing":"8.4.7","@types/jest":"27.5.2","@types/lodash":"4.14.182","@types/node":"16.11.56","@types/supertest":"2.0.12","@vodyani/eslint-config":"^1.1.0","husky":"7.0.4","jest":"27.5.1","supertest":"6.2.4","ts-jest":"27.1.5","typescript":"4.8.2"},"types":"./dist/index.d.ts","gitHead":"8c17b590c213326c42abf2abec1763d9242d6237","_id":"@vodyani/utils@8.5.2","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-23+lMM8bsIDffTYkZV1P5FJFdgr7YYUZDFRzzoR413bUbuY2IbX4cAXhBlVgZCvEe2aTdUH/DoL/w/A2pCxEXA==","shasum":"8a5343174d07302ef964bdbcd4b8c7e5c1065253","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-8.5.2.tgz","fileCount":39,"unpackedSize":42295,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEpYW10qUNI1WbqGImnHnWqfJwMpjXumtHh5ikX+XQsoAiEApD8DlnKef1D9lODnr9Pl1ZhrfDRadhOPl2l0TQfoCvs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjGE9bACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpeNA//ZJlp3DrLY7OuBF5zhqZTg+ZZudHMJfXGAppoOxgM6lTgdABY\r\ncpCLP4H7yFyBfFpsBChXcGDi2SK/CdJOfBwi+wK/rS7GE26Jc7LCmECsDnN/\r\n3l0+M7i34hoM9oYSCyGCmKXlq+6oRYPTCMaRqsm2RNM2OkWWs4zjOkJTveo/\r\n1BDxEBy6RQGDYUrtmEOVO8eHYysJu+mBwi49LjX7fviLgNQ+jgYouVShdlbH\r\npymRKiHJuops9aXAQw8LLoJC7qTgkZtx8mmoqgRRFAbpHKkkvKhhpyy82Gdf\r\nIszuZSBr2pNY9E10aOi1zNoI/sBxxVEtGmppMRq4Ax+yO9QKWRJrkj7KJt6e\r\nVhwoo13pW7BTeyYpp20O1Mnt6Mmi29OrS4Q1uW9l3SDaQIlumNOYVTGj/jbl\r\ntpfnwQQna3zPSi0bmmsn2dDHmsWyfCxTLnruyI50cBfXFUFC5OwXlKuW2QA0\r\nu+3PV6duSlol0HtOSlaUz1b8LxpTIid/WHmy7Hrbw2m9pcPjRPZncc4k/S9g\r\nWgUFFyKYrFS6WbhZgjE/rzKIkyJSsXFA55WJXl+3Urhsjfly1X4v6kU7Dj1S\r\nVOG8KNSMVCFciIoPljiV3q/xCw7wfgkbQe2resvUE1h6SSVTRBl/PauNktOg\r\nt601h/OffdUQQrRPpqobIGjuEb4HhDyQ2WU=\r\n=evgG\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_8.5.2_1662537563536_0.16729883406472656"},"_hasShrinkwrap":false},"8.6.0-beta.1":{"name":"@vodyani/utils","license":"MIT","version":"8.6.0-beta.1","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"dependencies":{"deepmerge-ts":"4.2.2","lodash":"4.17.21","object-hash":"^3.0.0"},"devDependencies":{"@commitlint/cli":"16.3.0","@commitlint/config-conventional":"16.2.4","@nestjs/testing":"8.4.7","@types/jest":"27.5.2","@types/lodash":"4.14.182","@types/node":"16.11.56","@types/object-hash":"^2.2.1","@types/supertest":"2.0.12","@vodyani/eslint-config":"^1.1.0","husky":"7.0.4","jest":"27.5.1","supertest":"6.2.4","ts-jest":"27.1.5","typescript":"4.8.2"},"types":"./dist/index.d.ts","readme":"# Vodyani utils\n\n🏃🏻‍♀️ Vodyani utils 提供了开发中常用的工具方法，包含：验证、转换、异步处理、算法、数据结构等功能。\n\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/latest.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/beta.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/dm/@vodyani/utils)](https://www.npmjs.com/package/@vodyani/utils)\n[![License](https://img.shields.io/github/license/vodyani/utils)](LICENSE)\n<br>\n![Workflow](https://github.com/vodyani/utils/actions/workflows/release.yml/badge.svg)\n[![codecov](https://codecov.io/gh/vodyani/utils/branch/master/graph/badge.svg?token=CI3WEJUN6L)](https://codecov.io/gh/vodyani/utils)\n[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)\n\n## Installation\n\n```sh\nnpm install @vodyani/utils\n```\n\n## Getting started\n\n- [使用文档 📚](https://vodyani.netlify.app/docs/other/utils)\n- [Documentation 📚](https://vodyani.netlify.app/en/docs/other/utils)\n\n## Questions\n\n- [Discussions 🧐](https://github.com/vodyani/utils/discussions)\n\n## Team\n\n|[![ChoGathK](https://github.com/chogathK.png?size=100)](https://github.com/chogathK)|\n|:-:|\n|[ChoGathK](https://github.com/chogathK)|\n\n![Alt](https://repobeats.axiom.co/api/embed/1e23cf3a598d3f75555c9bccab6664de44857ab3.svg \"Repobeats analytics image\")\n\n## License\n\nVodyani utils is [MIT licensed](LICENSE).\n","readmeFilename":"README.MD","gitHead":"4977f4fdf8ad259ca66b9e28262f8e306ca856e6","_id":"@vodyani/utils@8.6.0-beta.1","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-IYrKcXb9xJ1cW5BGydwcQ7VRaR/4npBSyqb55ty0BHJt/Vfor4GRMRADVFdzm1jcgrYFReF9QrU0Tw9KLdEdjQ==","shasum":"cfde71caa084237dd07a1d4324b5d4a78af16af0","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-8.6.0-beta.1.tgz","fileCount":45,"unpackedSize":43879,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrArNdDpoeAM4KXlBi6rZrHvzf+8prIPAN4wB/0+iBYgIhAMJDBXQt3h409SrIDoVBs8IvVnDiiqSYhGMOMNa8k8lF"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMVFpACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqnAg//VLgMcUg7TGQNSke+3cEW5gfMk/EHViEkXXMC4FpdqF6CDUc3\r\n8KPcYIxf9cajK4mXYWP5CWEkL+gU5Xb2D0vDnH+bbLzY+aYPatEzSb+62zxx\r\ny8PFI8n3qi7MdHJDKVgwhdfNjZk5dCGS742TGMSLKm0jGrtzuuXMSPR1kSgN\r\nutFlup48VPjuL770IGNHr/E7q9SshmkH/oEH2gK1gCVC8pBhncWNdOIzLOdi\r\n4HriYy+b7+hbAAmOUBE3pdf8cD0Z8Y/wJHiHB348jpZffjCex34azWk1GLCU\r\nmIRRdrNOQAdLO1IBXikjV8XTZWlia71jh/3b0V+T3YVGjzIETP5cnA4Wgx7j\r\nDuU4B2qTB2bzOfBWCy6xj+TCPwDXjjmDk4N72tInxUkqH5YVnJPAPYKEt6po\r\nMR2Kz7KnYjPDud7nLicxA9Iv3DOt3dZ5Qzird+RFeoeTn0PScLwFIF172i75\r\n2R555vhJngpO0O+D97FmBWEqENjcEJUMbdTvE1jGnKyQBzlMB77LYllebIJh\r\n5mCaHDc1/5Hij3mtXOa100urrJZVDIM7WGuAoXMR/gwsagts/P/dJm1H6g0h\r\n42JUQdFN2vV4Ju5qFk1N83ApPSXZzs9w1rexKRhAAkQemtWtM/X/Q/agpHB6\r\nAd9HBLv5rbBg+zEj77YUnSgsxGOPLpcX6Yg=\r\n=HhxF\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_8.6.0-beta.1_1664176489038_0.47386984952933053"},"_hasShrinkwrap":false},"8.6.0":{"name":"@vodyani/utils","license":"MIT","version":"8.6.0","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"dependencies":{"deepmerge-ts":"4.2.2","lodash":"4.17.21","object-hash":"^3.0.0"},"devDependencies":{"@commitlint/cli":"16.3.0","@commitlint/config-conventional":"16.2.4","@nestjs/testing":"8.4.7","@types/jest":"27.5.2","@types/lodash":"4.14.182","@types/node":"16.11.56","@types/object-hash":"^2.2.1","@types/supertest":"2.0.12","@vodyani/eslint-config":"^1.1.0","husky":"7.0.4","jest":"27.5.1","supertest":"6.2.4","ts-jest":"27.1.5","typescript":"4.8.2"},"types":"./dist/index.d.ts","gitHead":"05a69d4bb041668aab71c497309c2b2b41f7f9a9","_id":"@vodyani/utils@8.6.0","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-KhH3vFre+TLF/qOmp+RZJQEtddxJ3B5puCDnGbp7w9PhdZkNrIsYAe7fTpsZL/ZJhbzGuNJVZ5Ka5iyjBQWpzA==","shasum":"255ddf94f766deb67137f3ae3749aafd3337a5a6","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-8.6.0.tgz","fileCount":45,"unpackedSize":43872,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB7ysJ1LaBIYec+XmRDK94MA2iazNf27WaL6299hU1x7AiEA/ZxXYFvJcVp9N4mXXPBg/pjGXTozr2VsndgwLTsVtwc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMVJlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoFhA//TDsxZjWe8aDfXo1dKODaM/nLMT4gemaPTsjPDr6eaCA8XuIt\r\njtyyFe7MDYS/hO8UdiBeya1zn8TzLJeaer5LmHBm341dLoDvq6ugheTW9taT\r\ntxhED37Cyn8VTZEVAVdc7/UVhY71CsQNbi04DZFnd9mq1J2s7wUkUBOPNZ9v\r\n4IqKGRlBrY/3CQu2mSu/NTnat7UGkBYeyeybDduQYVtWUocJIONBCXJqP8Nt\r\nkd4QLhMDj0iOOSQhtDI2PaOsIYEcJuyXiSYMhsMkJgYGMF91L+Tv9IxcMDms\r\nfyGOdl770m2Y4XFGZ98jjxNL7Lwn7ZrRAOJtJFEBCXndLa+dH6J/r+frPfUY\r\n+8L61/z69q+U/uBVBW3BZfnqFJNt0GgORj/jn57KjjezZvJMlSAnqK7vFcXw\r\n0LFb6tAelrJ3G0KJhdRZ4DC8B3tmCkIojEJYPSQrSrQf4E+QbI3Uv8BAonms\r\njnPwMurbJCUWwXMDPqblCboQC7BfUx7+B6HzVzV1p2lGvKGrZzu81GwiOoae\r\nZNDVwumeJx8/sZMjFYrXNgJNNzUmzFdrQ99RQL7e+rHoetk/W/TpSLGDcfr+\r\nO58B0/bBTNrswdQY+PZibKAM3j4oY6jQjIFkHqqTaTFGhWSU1K9GilZ0k6Zt\r\nLpzpL7DkNyTcKu/x46rY1T1/q53jnagV0xM=\r\n=opQk\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_8.6.0_1664176741123_0.25760711008304127"},"_hasShrinkwrap":false},"8.6.1":{"name":"@vodyani/utils","license":"MIT","version":"8.6.1","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"dependencies":{"deepmerge-ts":"4.2.2","lodash":"4.17.21","object-hash":"^3.0.0"},"devDependencies":{"@commitlint/cli":"16.3.0","@commitlint/config-conventional":"16.2.4","@nestjs/testing":"8.4.7","@types/jest":"27.5.2","@types/lodash":"4.14.182","@types/node":"16.11.56","@types/object-hash":"^2.2.1","@types/supertest":"2.0.12","@vodyani/eslint-config":"^1.1.0","husky":"7.0.4","jest":"27.5.1","supertest":"6.2.4","ts-jest":"27.1.5","typescript":"4.8.2"},"types":"./dist/index.d.ts","gitHead":"c606d639d6c23698888546e3afda93ccdecb23fc","_id":"@vodyani/utils@8.6.1","_nodeVersion":"16.17.0","_npmVersion":"8.15.0","dist":{"integrity":"sha512-+PLNaLnbjF/p62LrXtT+LxM0DPd6yFr0yQVQrECVucF2+cQ+rOyDFe3AYqiJUXBZWL+bppS3zs783aMhvagCAA==","shasum":"694831a1694454623d2f88dc92e33f70b38463a8","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-8.6.1.tgz","fileCount":45,"unpackedSize":43820,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICFbjAKBTo7pIhH8RViu03R4EPUKnxwgcY9PA9Qw182KAiEAmRy8bLdzyc9ldm5XDN08flVzjW/djNvGBQ7HsgRJhOM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjMpaLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmplxxAAiQ1FHlczT7Krn4y+0IMxujvNx+9gcIw76gw+h1y6FqqxydBP\r\n2ZOtbid1MFVGx9cTPHkQoFKsdaG7yy2uBGwFngf5R9uliJ02Gp/UFxYW8fK6\r\n0Q9vGelI4KsKCN2Zk4SkP/1x0n/0MXHD7jWOeEskMPV+C+GoD4oz57/rBDcG\r\nKtNvbbPpnSzboNh43BHIVv5ZRFVN4zokEcpZw7dftwW6F0DLshc2rxVBDQG9\r\nhRic3rgywqtQSYU+I5E/BE1mB60I9mGdwahUhhSH1hSVtCYvS/qenvx9M9Yp\r\nCk0GoTLWYUVB1lm/Rlf3xASioFRr6FT98+j1/pszlo26gqQXXrujdDlW20i2\r\n8Yas8yZksmOt8PffDZucoa3sJrV9z8zqbGY9D46F4ISiwwH2kvni6Z2Ab/Ll\r\n2BCDXqpwh9zzGj8vOlE2q1qHmoueQRdUygu9S0nfHXkN95ZBXf+53j2c5XKh\r\n9PFtxmi/An0kVXxiLvqkgMkjHsk1fKJIxDy1En+wkTeRpFwuFI3ID/Pgk9m5\r\n+1a+mJ4V3l/q2SvFhaJLrsYx4lCK6SXAfuilhfZIHS8lrliSBhrzOYmfMpVO\r\nXKrOOd72S4JpQpYnjD+aM0dyXXVNOhyi85b4GYIAiQJCxPLmGxR6HtRYwPz1\r\noPuXRBvdz4X8GRHWwcDbbFq938XVEQvBIOc=\r\n=7ztu\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_8.6.1_1664259722915_0.2472726597893613"},"_hasShrinkwrap":false},"8.7.0-beta.1":{"name":"@vodyani/utils","license":"MIT","version":"8.7.0-beta.1","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"dependencies":{"deepmerge-ts":"4.2.2","lodash":"4.17.21","object-hash":"^3.0.0"},"devDependencies":{"@commitlint/cli":"16.3.0","@commitlint/config-conventional":"16.2.4","@nestjs/testing":"8.4.7","@types/jest":"27.5.2","@types/lodash":"4.14.182","@types/node":"16.11.56","@types/object-hash":"^2.2.1","@types/supertest":"2.0.12","@vodyani/eslint-config":"^1.1.0","husky":"7.0.4","jest":"27.5.1","supertest":"6.2.4","ts-jest":"27.1.5","typescript":"4.8.2"},"types":"./dist/index.d.ts","readme":"# Vodyani utils\n\n🏃🏻‍♀️ Vodyani utils 提供了开发中常用的工具方法，包含：验证、转换、异步处理、算法、数据结构等功能。\n\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/latest.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/beta.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/dm/@vodyani/utils)](https://www.npmjs.com/package/@vodyani/utils)\n[![License](https://img.shields.io/github/license/vodyani/utils)](LICENSE)\n<br>\n![Workflow](https://github.com/vodyani/utils/actions/workflows/release.yml/badge.svg)\n[![codecov](https://codecov.io/gh/vodyani/utils/branch/master/graph/badge.svg?token=CI3WEJUN6L)](https://codecov.io/gh/vodyani/utils)\n[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)\n\n## Installation\n\n```sh\nnpm install @vodyani/utils\n```\n\n## Getting started\n\n- [使用文档 📚](https://vodyani.netlify.app/docs/other/utils)\n- [Documentation 📚](https://vodyani.netlify.app/en/docs/other/utils)\n\n## Questions\n\n- [Discussions 🧐](https://github.com/vodyani/utils/discussions)\n\n## Team\n\n|[![ChoGathK](https://github.com/chogathK.png?size=100)](https://github.com/chogathK)|\n|:-:|\n|[ChoGathK](https://github.com/chogathK)|\n\n![Alt](https://repobeats.axiom.co/api/embed/1e23cf3a598d3f75555c9bccab6664de44857ab3.svg \"Repobeats analytics image\")\n\n## License\n\nVodyani utils is [MIT licensed](LICENSE).\n","readmeFilename":"README.MD","gitHead":"eeef6bb2516797a03da696db2a5a3bf6bcd74dc3","_id":"@vodyani/utils@8.7.0-beta.1","_nodeVersion":"16.17.1","_npmVersion":"8.15.0","dist":{"integrity":"sha512-ezbZkiuNiD2r/jkEUtyICUQBTy3xWGxM+ItUh3r3l5TTuuBDywwhLa2bdRSzNJaZldpqhM/wiuLEglPEd1Wp7g==","shasum":"d0c181f09dd5f36174b36423918da156ddfa02be","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-8.7.0-beta.1.tgz","fileCount":45,"unpackedSize":46924,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXJ5w7zXqmJv0r2PG65mjagKzTRecXzBDnxTXcOGgmwQIgD2Sktl0foPX7rQEfFabreXHpeUfnkfi7+H6Q1SSLJMs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjRjGHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqiAg/9E67DuM0TsNrEUUXFEzPKEeklTrOSURoXCVc2gi1e3CerbkP4\r\nKqY1kCxAcqEZyO3gVF8MFuc3926Z8k/bcIqkqzhXVQq1TTFOja7ihFlhT5p6\r\nhsbvPAFGX9DXcTRzb6GyLvCE+pkE1FFQgCJvGlocAAPBNRekumkglOpFqVHf\r\nFSZgvVez3sJYmVMM9o4KUMcziA/LtHUVVugns9VnYXgJyinaAYe7O6Q4IFaH\r\nptgC055Cj1E8VJJvlTsTLYfHoOVn1VBCBTiW6AkHa/dP/g6qXvQSLW6CwSvd\r\nPgc7GSzBMrrQ1NAzACDQViLKw8g9L9Pev4AI4qsWnhxHrBFtcJ0/XEzQXK9a\r\nPsDdOfaY+HzhxkJT0IjI9RY/aYSIlKxgukmuZ9PHBAAzfuLYiKIREZQbmDK5\r\nQKF3w5ad4sMeh/x06jVCqavaleYu4GirzkGtQNxbO2tagm8qdt+g7acctafo\r\nMRpiQ5DMjZWc+hGsPmUOdCuSaq1LtYZAhDimwIFZAkG0yg56CqaJsStAwYA+\r\nGSSKgHguJtYt8Wg6hC5u6DKpcZXnOXAZ+QNCB0J3SLbk6+IjmefLWEMvKKPz\r\nyXZqndUG7OTTwQ5cx0F8vMTU8m89WcRj4lIhrZ3xmHI99V0Rn00AXH86+b2g\r\nLxRU0mGCUCtIp0SxJsJMq/diGxpux23VhJE=\r\n=NsbM\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_8.7.0-beta.1_1665544583631_0.14063221816575755"},"_hasShrinkwrap":false},"8.7.0":{"name":"@vodyani/utils","license":"MIT","version":"8.7.0","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"dependencies":{"deepmerge-ts":"4.2.2","lodash":"4.17.21","object-hash":"^3.0.0"},"devDependencies":{"@commitlint/cli":"16.3.0","@commitlint/config-conventional":"16.2.4","@nestjs/testing":"8.4.7","@types/jest":"27.5.2","@types/lodash":"4.14.182","@types/node":"16.11.56","@types/object-hash":"^2.2.1","@types/supertest":"2.0.12","@vodyani/eslint-config":"^1.1.0","husky":"7.0.4","jest":"27.5.1","supertest":"6.2.4","ts-jest":"27.1.5","typescript":"4.8.2"},"types":"./dist/index.d.ts","gitHead":"4fcb8f0ff997164c6c22d0bce260ddddd388e55e","_id":"@vodyani/utils@8.7.0","_nodeVersion":"16.17.1","_npmVersion":"8.15.0","dist":{"integrity":"sha512-ihibNYaIpyXB7L6v5eWmZ+Q5C++d/7Xc07yxq7kC6nyVc9hJrkKG9qovClTICtDb7cDlg2D3zJBRixknxVqUug==","shasum":"f0abe1e7ed690a7ea4daeeab375307bce664294c","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-8.7.0.tgz","fileCount":45,"unpackedSize":46917,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICD4AanvhOmxHDnTlK4XOD94AvpAXiHrqry+l6kNor0QAiAhL1Z6sZ86V+2GHE58tHCGdJvn6XHFp7guwTlD8WVFmA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjRjI/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmroAg//aqMpf1xV5MKfpgB72650vBomUNQQVg6uE884Cf/jYVSsEn9k\r\nte/FBSOZDhhtfmE8MflxiKXW+nfKWl5LQdQbDH2oec8F+0Wz6yU+b38ocQk+\r\nC8B7iBDGmOc/L3vdTdC7my0GU1wE66/G8uCWLhOx7NqjR95Uo34pdszeV9TH\r\ntlFkAQGQ4gnHXtzgy+DEngmVJvXt+wODorC/wjcrvN3466HiAWUdWg+50FJZ\r\nBFYiobu5tyFs2TYKvRPveoD/kPgr0syIJrTS2CzPhirSeSnHkTiDS4uHqluH\r\nbOjfxXcSEBRBF7dHf0y915wrjDmT1fGKqRzXcX7VDtq5TE//dzBJD0fDFfJp\r\nN9syxcv5w4zjngItn18ZsroFfTVDe14twjgohi1TI5alXBNcYa9dBhGhlNzg\r\n2noREkwxPAan2fHlUp9VQgBgw+D/Xn6CqxWog+FeKYchs8n0iYmnN0EsxSVI\r\nVpjmPT13IQlIeTSEq5NX4Vpxs8C11lSdEseKwKzRh3ct4lBK0KFiaVUJ9ZJg\r\nb5ICH2bJz7BR7MPSBdplptiby94wy7ERGSJMkIyhiYmNQtWWYcG/55yPDGwJ\r\nZmaD3/LtBD1Vt/PuKk3+J8yuZxvmFG3fhZ3dVVQFm87fdQfjmZEWFN6yGfl1\r\nnIfjIKZtidXYOEWpSrVaVX1PflRuRfftjwE=\r\n=wXAQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_8.7.0_1665544767385_0.5928126688224378"},"_hasShrinkwrap":false},"8.7.1":{"name":"@vodyani/utils","license":"MIT","version":"8.7.1","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"dependencies":{"deepmerge-ts":"4.2.2","lodash":"4.17.21","object-hash":"^3.0.0"},"devDependencies":{"@commitlint/cli":"16.3.0","@commitlint/config-conventional":"16.2.4","@nestjs/testing":"8.4.7","@types/jest":"27.5.2","@types/lodash":"4.14.182","@types/node":"16.11.56","@types/object-hash":"^2.2.1","@types/supertest":"2.0.12","@vodyani/eslint-config":"^1.1.0","husky":"7.0.4","jest":"27.5.1","supertest":"6.2.4","ts-jest":"27.1.5","typescript":"4.8.2"},"types":"./dist/index.d.ts","gitHead":"92f44fafc4060dc7cb44ab93a60912ab5958e96d","_id":"@vodyani/utils@8.7.1","_nodeVersion":"16.17.1","_npmVersion":"8.15.0","dist":{"integrity":"sha512-JZ62uxhvK0VFjEA6709YZ3BPpcK3K+hUkUjfBbi7vO2GijL3w3r3BlEZCeqgUk24vir/7Bho58HTCXomb89zMw==","shasum":"bfb6e7143c1c93f6518e70ceddfb37af077528cd","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-8.7.1.tgz","fileCount":45,"unpackedSize":46914,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmYlBuwXDWW/VRJvhujiaG1+nhVUp+Z3EF4ycmmfna1gIhALRMzX6xbQD+RFj9t1SAEBbHDeQTkEVVR/92iqtewF6l"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjRjP5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp+Eg/9GAZpg7QoRUZb5WRz9/hsh/jo0whMfQ2kI12Tfn87LbJ5KVtV\r\nPLpXh4UiCPUbqp68OAZWv+EdGIHw52UrXnHIigVyyebdkX3Kkwd1m6I57EeU\r\nMXWoO53v1bc3PvVjBiH/YZ3ZCB0q2aIQiTUG+x3xjqTVZhApZfgBqPJkX93z\r\nPNZxxixbmpUyWai/tim9K0Xc8oUeJtelRcLDB+jyIH8XU8ILzw0SgNa1Yr0D\r\nb7sMxshtvP+8VnOigGtx/dgrdKZ3jvzE1PW2klCO1tJ+grB67wvSp2ZZLUY/\r\nfCirLMZ0xzaKYbSJ0/l1iLfwm6wz+G9FIsieqMMMhfiRMliUbP0Rb30oY0D8\r\nDpd6ThSo3+wY3IlhrqlTWVq88ywusLp5oY+UzpRVT671xjdjPIw2jb3zbyr3\r\nmNFuNWhZ2uBbb6a/IRbpBkL53Rk4brwMrE1cBF4RZfVT8s0E1J2UEcIyeFre\r\nPkmEqPewniMmwe2G0Bcq8W2v00bQv9yBAQWjeOkLXUBEcH7cAdGEG06v9MkE\r\nfFcIVnkn9CBUdz/FivEhC1SE3t2NELQLkf9XAYXErFsWKcNGyUpNCIabdg1y\r\nv9d2emcq35/4lqYXzRFjEmjs4M3J3MBOSFOZy1KHL+RAtvd7Feu37LpqsHrJ\r\nyFy7fqD7VuL5Pc8eGH/D0lq0oELLkxPk6g8=\r\n=AWio\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_8.7.1_1665545208938_0.29872072831365704"},"_hasShrinkwrap":false},"8.8.0":{"name":"@vodyani/utils","license":"MIT","version":"8.8.0","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"dependencies":{"deepmerge-ts":"^4.2.2","lodash":"^4.17.21","object-hash":"^3.0.0"},"devDependencies":{"@commitlint/cli":"16.3.0","@commitlint/config-conventional":"16.2.4","@nestjs/testing":"8.4.7","@types/jest":"27.5.2","@types/lodash":"4.14.182","@types/node":"16.11.56","@types/object-hash":"^2.2.1","@types/supertest":"2.0.12","@vodyani/eslint-config":"^1.1.0","husky":"7.0.4","jest":"27.5.1","supertest":"6.2.4","ts-jest":"27.1.5","typescript":"4.8.2"},"types":"./dist/index.d.ts","gitHead":"0df784fd24924d57ef0d996201199ecc37dcec38","_id":"@vodyani/utils@8.8.0","_nodeVersion":"16.17.1","_npmVersion":"8.15.0","dist":{"integrity":"sha512-vU5IoIc4gg4oi3JXoxHR5wTL51maGIl4fQ1SIeuPtVaTELDmOYt4Wu9DaMgosLi6tPT3HjS0ZzIgSyNA2V/ofw==","shasum":"cb8ad9d4a9132eaa7e58932db6775470a1314293","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-8.8.0.tgz","fileCount":45,"unpackedSize":47374,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDowVcybfatVq4LOMgIEn+LUx3iXdHU1xO3Mb0lXqJjeQIhAPS3QkyFDQxZ8PGes49nRnoahBfCFVrCZytoh/fgkpre"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjTkRAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpjIw//YgYPvSInJYGTOFq+ikFLqnDmQs9EoA6jF8ZD8eaMQmn7VvEq\r\n0eG8qTQfP3kIOXyd83YfQ+afOi/qqAXn8hV16STBt4qnwabeIJ2hMNiiRqFO\r\nHgRKw+JAwK0+noq5OOX38StKl0PxyRoTHPKlOtFU8JfbZMclRYjF84lbacy8\r\nGyZCNT9lPVlnsqRvJ/gTh5miVU0TnaC4fS49EViAGXoABR3hbZDsIXIowxJJ\r\nhIKzNcLbSsqkbgFRC0b+sO4isyOD+mO0dsrKUqovMV5NYHaTNTVZNuVKEyTh\r\n95CLxzAupoXN+YJYcnwqTCtU5xy1yQ+Oz8w46DQ5IPseBIAsjiTz1GK0xgag\r\nBBOm5WB+OxOyJOLBUOoLytGuU2SLO71h7kTtR1PYXD9P1nIADk5ljmCBBLme\r\nJQI3TukHdDUNX2hluzekfPlCJ6igJGbM0a38CW2nk0AZc862Qo3rTlTCNESY\r\nUI+XWnTMh114PUa5DwiSzwKshtbcl/GxYsN/6boPVJeJPTiQC5C8k++RCOxe\r\nCPQyC1YxVL4WyANc8Xuy1rJruVzXYIKkHI0LBm5g8oeCo2FlcqCA+w68uTSw\r\nbb8u7Gsil0tE3SeabbCpsoVFMOPO8OUVji5l6TuWgDQjTIPGltWeaicso+Zi\r\nj2MwP0Ocry57C4j7uiAZvRW+taUR/U4fxoI=\r\n=D9ym\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_8.8.0_1666073664394_0.5960136170027643"},"_hasShrinkwrap":false},"8.8.1":{"name":"@vodyani/utils","license":"MIT","version":"8.8.1","author":{"name":"ChoGathK"},"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"main":"dist/index.js","scripts":{"local":"npm i && npm i @vodyani/eslint-config -D && npx husky install","build":"rm -rf dist && tsc","test":"jest","test:coverage":"jest --coverage","lint":"eslint ./src ./test && tsc","lint:fix":"eslint --fix --ext .ts src/ test/","lint:html-report":"eslint ./src ./test -f html -o eslint-report.html","lint:json-report":"eslint ./src ./test -f json -o eslint-report.json"},"publishConfig":{"access":"public"},"eslintConfig":{"extends":"@vodyani"},"commitlint":{"extends":"@commitlint/config-conventional"},"jest":{"testEnvironment":"node","testRegex":"(/test/.spec.*|(\\.|/)(test|spec))\\.(jsx?|tsx?)$","moduleNameMapper":{"@/(.*)$":"<rootDir>/src/$1"},"transform":{"^.+\\.js$":"babel-jest","^.+\\.ts$":"ts-jest"},"transformIgnorePatterns":["./node_modules/(?!(lodash-es|other-es-lib))"]},"dependencies":{"deepmerge-ts":"^4.2.2","lodash":"^4.17.21","object-hash":"^3.0.0"},"devDependencies":{"@commitlint/cli":"16.3.0","@commitlint/config-conventional":"16.2.4","@nestjs/testing":"8.4.7","@types/jest":"27.5.2","@types/lodash":"4.14.182","@types/node":"16.11.56","@types/object-hash":"^2.2.1","@types/supertest":"2.0.12","@vodyani/eslint-config":"^1.1.0","husky":"7.0.4","jest":"27.5.1","supertest":"6.2.4","ts-jest":"27.1.5","typescript":"4.8.2"},"types":"./dist/index.d.ts","gitHead":"787de23b92db347d43af6ccf0f5ea8f420fc8f04","_id":"@vodyani/utils@8.8.1","_nodeVersion":"16.17.1","_npmVersion":"8.15.0","dist":{"integrity":"sha512-UvD/bS9v2sb+2u/pVyDiJbJ5JyKXqfvDBRE+BG/OVWdxRVEsVF8fLSvzi/xJ3+Q+clUvOWNH/RGOc5fbIpBy/A==","shasum":"18fe21dbd6481d0ab9783d4b4424cd2b7dfa60c0","tarball":"https://registry.npmjs.org/@vodyani/utils/-/utils-8.8.1.tgz","fileCount":45,"unpackedSize":47522,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBYSdxP1JPqHbAPg53ly4H8gWxqWJvHCU60aXx+Rn4c2AiAS1fd6hliUnS8mDSGhHxiF4Ydih3tJ32Qgpx+vix3NEg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjTkXHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpnDQ/9FUuxrIGEM/DR7u7Ne44ucncD1u408E1aHVaDEqr9vqEDOyA4\r\nBUCGM+hK4rjSUwUI1+GX3h/SOxyv5EfBkw7k6LIjFdWD0P3ktpFOMG0P2hY2\r\nwovca/M9yevJzQk9pnZfZ1wp/NSMGrSY261gO7Mx1IuDG41SQPuSkwAwf13C\r\naxF4HhTcWmNJxWTfhAAk8a0qXTkYvupTOe/gpaboXj2O5P59+2899p7Vme73\r\ndH2dLX3TFwGGSkXzBirHKfYiGpAE6yrIgikUJZgR9Ipi6CMC6T/5ieALkTdQ\r\nZJUmB22TIQFTQIf29Ja5bEWpvvPlw3WYG+1TL+PtaB0lF126gEod1J3+2JXq\r\nN1SpJAb/cg70fea0qRacgHJWaN9pI/04Bhc+YCnGmEVxX9fn4L5VgABuVxtP\r\nJ7QNrwZZ53Mj5Y+MxNRRoxO5gVvmS+3z0NJhKR6f24XgIVo+gHSkcBX/oPHj\r\n3zLRaTh104hbRoNVOk459PrIc4XIOfmWSFO5gQQ25UqQiNxYhEE0pEJwWt+X\r\nUBOJHyBbZs2OyqoJp/9T71w/Mg5jMZBheyKih2o+jfUlAe4jgYIGJ0Tf/eOs\r\n7fDw8bdsEsyH5YGYvZs7nRybn2LwaOT3KfVMAWhwM3+gl7MZ0Pst9P7/dWRx\r\nNgIVHHlZnY/h/krRFCxTvdw5k+rgdlrYK8c=\r\n=+VxO\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chogathkk","email":"chogathkk@gmail.com"},"directories":{},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/utils_8.8.1_1666074055200_0.9314310938844579"},"_hasShrinkwrap":false}},"time":{"created":"2022-07-13T10:59:40.595Z","1.0.0":"2022-07-13T10:59:40.896Z","modified":"2022-10-18T06:20:55.595Z","1.1.0-beta.1":"2022-07-13T11:08:01.376Z","1.1.0":"2022-07-13T11:10:36.258Z","1.1.1-beta.1":"2022-07-18T08:28:31.266Z","1.1.1":"2022-07-18T08:32:44.580Z","1.2.0-beta.1":"2022-07-19T08:12:49.548Z","1.2.0":"2022-07-19T08:18:23.734Z","1.3.0-beta.1":"2022-07-21T07:36:25.294Z","1.3.0":"2022-07-21T07:37:57.498Z","1.3.0-beta.2":"2022-07-21T08:26:30.876Z","1.4.0":"2022-07-21T08:32:03.776Z","1.4.1-beta.1":"2022-07-21T08:38:41.464Z","1.4.1":"2022-07-21T08:50:31.640Z","1.4.2-beta.1":"2022-07-21T08:55:29.978Z","1.4.2":"2022-07-21T09:08:48.661Z","8.4.2-beta.1":"2022-08-11T07:06:08.169Z","8.4.2":"2022-08-11T07:11:52.125Z","8.4.3-beta.1":"2022-08-26T09:54:08.986Z","8.4.3":"2022-08-26T09:57:04.754Z","8.4.4":"2022-08-31T03:53:54.683Z","8.5.0-beta.1":"2022-08-31T04:13:56.304Z","8.5.0":"2022-08-31T05:34:25.326Z","8.5.1":"2022-08-31T06:40:39.846Z","8.5.2-beta.1":"2022-09-07T07:55:52.689Z","8.5.2":"2022-09-07T07:59:23.775Z","8.6.0-beta.1":"2022-09-26T07:14:49.199Z","8.6.0":"2022-09-26T07:19:01.371Z","8.6.1":"2022-09-27T06:22:03.065Z","8.7.0-beta.1":"2022-10-12T03:16:23.797Z","8.7.0":"2022-10-12T03:19:27.571Z","8.7.1":"2022-10-12T03:26:49.176Z","8.8.0":"2022-10-18T06:14:24.635Z","8.8.1":"2022-10-18T06:20:55.513Z"},"maintainers":[{"name":"chogathkk","email":"chogathkk@gmail.com"}],"description":"🏃🏻‍♀️ utils provides common utility functions used in server-side development.","homepage":"https://github.com/vodyani/utils#readme","keywords":["vodyani","nodejs","javascript","typescript","npm-package"],"repository":{"type":"git","url":"git+https://github.com/vodyani/utils.git"},"author":{"name":"ChoGathK"},"bugs":{"url":"https://github.com/vodyani/utils/issues"},"license":"MIT","readme":"# Vodyani utils\n\n🏃🏻‍♀️ utils 是一个函数工具库，提供了验证、转换、异步处理、算法、数据结构等功能。\n\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/latest.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/v/@vodyani/utils/beta.svg)](https://www.npmjs.com/package/@vodyani/utils)\n[![Npm](https://img.shields.io/npm/dm/@vodyani/utils)](https://www.npmjs.com/package/@vodyani/utils)\n[![License](https://img.shields.io/github/license/vodyani/utils)](LICENSE)\n<br>\n![Workflow](https://github.com/vodyani/utils/actions/workflows/release.yml/badge.svg)\n[![codecov](https://codecov.io/gh/vodyani/utils/branch/master/graph/badge.svg?token=CI3WEJUN6L)](https://codecov.io/gh/vodyani/utils)\n[![semantic-release: angular](https://img.shields.io/badge/semantic--release-angular-e10079?logo=semantic-release)](https://github.com/semantic-release/semantic-release)\n\n## Installation\n\n```sh\nnpm install @vodyani/utils\n```\n\n## Getting started\n\n- [使用文档 📚](https://vodyani.netlify.app/docs/other/utils)\n- [Documentation 📚](https://vodyani.netlify.app/en/docs/other/utils)\n\n## Questions\n\n- [Discussions 🧐](https://github.com/vodyani/utils/discussions)\n\n## Team\n\n|[![ChoGathK](https://github.com/chogathK.png?size=100)](https://github.com/chogathK)|\n|:-:|\n|[ChoGathK](https://github.com/chogathK)|\n\n![Alt](https://repobeats.axiom.co/api/embed/1e23cf3a598d3f75555c9bccab6664de44857ab3.svg \"Repobeats analytics image\")\n\n## License\n\nVodyani utils is [MIT licensed](LICENSE).\n","readmeFilename":"README.MD"}