{"_id":"mn-utils","_rev":"240-606491f0f2216a71ee63db232c727228","name":"mn-utils","dist-tags":{"latest":"0.0.252"},"versions":{"0.0.249":{"name":"mn-utils","version":"0.0.249","keywords":["utils","CancelablePromise","Cancelable","Promise","Emitter","RPC","thread","Thread RPC","Iframe RPC","WebSocket","WebSocket RPC","HTTP RPC","request","jsonp","storage","local","param","unparam","cookie","localStorage","paramStorage","cookieStorage","dynamic module","storage","router","detection","browser detection","url parser","framework"],"license":"MIT","_id":"mn-utils@0.0.249","maintainers":[{"name":"mr.amirka","email":"mr.amirka@ya.ru"}],"dist":{"shasum":"39b7aa17bd148cd3c63c7267782fde107596fd88","tarball":"https://registry.npmjs.org/mn-utils/-/mn-utils-0.0.249.tgz","fileCount":536,"integrity":"sha512-EGt2i7xyMSYux+YN+9fct6OIaB8Mmz6VUBtfC7Fjdiyxdj0/Rw8Pi/OAHWc9lEdVz1ih8p/q9zqo4IG183dC1A==","signatures":[{"sig":"MEUCIBdXSIsdSKu1DN2VVFN1A058HhyzGFnh9VmGvoCISzk9AiEAzXnlmuuv20qqFctVPZTdgo8uUNLU/i0ilXR+em/SiqA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":126389,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjUBvsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqzvw/8CMKjJgELcmIhxOL/+Jcw1ymPg7h/81XOaemBOYH9Jlm3ZPSh\r\nOnmqesebV1sSsYaI97CQE3zvhkxslS9A0uIzrWWgnKBk+RpMVlYWd1Ua0rNI\r\nhPKzGqG/8MCyoN1/4glJZE/5IwMnTE9NLUo/rfa5joBKd7E29OTNjOQqnnQ9\r\nEp4rP/ERMfK18I7T9la5pFzCuK+NIHGf64VYJz/Eoxrnd1jLduVsMkjsUZD3\r\nSDS0lNZbCne9pmhcNliN7xXSryU3PDf4MqAPGhnMorWkrkRtaxeR95bLRVw1\r\nclyolXvHdjeyI39PmVjw5L+BCpWx/44NM3qkftAcbayz/Q6PYnkGSJPg8SlQ\r\nrfdsTnN4AeFUcvKyhUXnzv2XRWZza5/E9PXnxOmlVm8bhfsD6ltxJP7iH1LF\r\nBhv1xni672rpLSFMGOI3n3pnLJCTo6HpmbyFyM0V0vHxtETWu51cvs5eLtnN\r\nANcqxg0RWavBxAbXKZiJXG9WdIagKu5bbWIsK6ubwdiMQYvyADDE3vV6/THQ\r\nClR5OtL3Aup7iqigMy3Kx9Qt29TislVdff0O26SYFWmj1iKuAOCV0GdFIYbp\r\nYUt3EcvSc03ZmARiuA7mwqaazJSoU8o5bs8zKjq4UAxI1wLTyUH2kLD9LJTC\r\nOJbkmiOjAoMVSZXnSvMSduLwj5AuOG1F6IQ=\r\n=9DB8\r\n-----END PGP SIGNATURE-----\r\n"},"scripts":{"docs":"typedoc --options ./typedoc-config.js","lint":"eslint **/*.js*","test":"jest . --notify --config=./jest.config.js","validate":"npm run eslint && npm run test"},"_npmUser":{"name":"mr.amirka","email":"mr.amirka@ya.ru"},"_npmVersion":"6.14.15","description":"utils","directories":{},"_nodeVersion":"14.18.2","_hasShrinkwrap":false,"devDependencies":{"jest":"^24.9.0","eslint":"^6.6.0","eslint-config-google":"^0.14.0","@typescript-eslint/parser":"^2.7.0","@typescript-eslint/eslint-plugin":"^2.7.0"},"peerDependencies":{"uuid":"^8.3.2","zlib":"^1.0.5","debug":"^3.1.0","react":"^16.12.0","path-to-regexp":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/mn-utils_0.0.249_1666194412242_0.8568941839782256","host":"s3://npm-registry-packages"}},"0.0.250":{"name":"mn-utils","version":"0.0.250","keywords":["utils","Cancelable","Promise","CancelablePromise","Observable","RPC","Thread","Thread RPC","Iframe RPC","WebSocket","WebSocket RPC","HTTP RPC","request","jsonp","storage","param","unparam","cookie","localStorage","paramStorage","cookieStorage","dynamic module","router","detection","browser detection","url parser","framework"],"license":"MIT","_id":"mn-utils@0.0.250","maintainers":[{"name":"mr.amirka","email":"mr.amirka@ya.ru"}],"dist":{"shasum":"7231446575ff00ac974bff49a79ba8edf88ce778","tarball":"https://registry.npmjs.org/mn-utils/-/mn-utils-0.0.250.tgz","fileCount":553,"integrity":"sha512-gUItqsCvcpn7qEdc4piOL0f9sddekYxt9aLPjkN9uUwnXUpZp2krrkMVO6KwVU3ELXd89gsohATLCg2ihatSWQ==","signatures":[{"sig":"MEQCIG9ovjaF1eWmzWOuLMlAMf/AeXzQmXszuRtOiMdtOU8QAiAt7qIzwaUyq/wStQJAtZD75dNtHqKSKhhrtS/2FBrgsg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":403293},"gitHead":"6ab42adc9787d5544e6d666b6b8a14d465c99125","scripts":{"docs":"typedoc --options ./typedoc-config.js","lint":"eslint **/*.js*","test":"jest . --notify --config=./jest.config.js","validate":"npm run eslint && npm run test"},"_npmUser":{"name":"mr.amirka","email":"mr.amirka@ya.ru"},"_npmVersion":"8.19.3","description":"utils","directories":{},"_nodeVersion":"16.19.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^24.9.0","eslint":"^6.6.0","eslint-config-google":"^0.14.0","@typescript-eslint/parser":"^2.7.0","@typescript-eslint/eslint-plugin":"^2.7.0"},"peerDependencies":{"uuid":"^8.3.2","zlib":"^1.0.5","debug":"^3.1.0","react":"^16.12.0","path-to-regexp":"^2.2.1"},"_npmOperationalInternal":{"tmp":"tmp/mn-utils_0.0.250_1684069100155_0.2805614310134761","host":"s3://npm-registry-packages"}},"0.0.251":{"name":"mn-utils","version":"0.0.251","keywords":["utils","Cancelable","Promise","CancelablePromise","Observable","RPC","Thread","Thread RPC","Iframe RPC","WebSocket","WebSocket RPC","HTTP RPC","request","jsonp","storage","param","unparam","cookie","localStorage","paramStorage","cookieStorage","dynamic module","router","detection","browser detection","url parser","framework"],"license":"MIT","_id":"mn-utils@0.0.251","maintainers":[{"name":"mr.amirka","email":"mr.amirka@ya.ru"}],"dist":{"shasum":"3dcb81db8e9fb00626ac7f0c26bfdc5ab5d1a02c","tarball":"https://registry.npmjs.org/mn-utils/-/mn-utils-0.0.251.tgz","fileCount":555,"integrity":"sha512-bAmJX7oHwH39KQJcJ6Qg1nqRiYjueX8zRIjA1vjPB2SjzJip5DRptTOawgl4m4QBww5iWJ/f48hcZ5mcHNoXJg==","signatures":[{"sig":"MEUCIFmTt+BAdOr+imu1t6WtQI9cn0idPCeSCV9NAUDkHuMtAiEAxanpTKjeTwTI/FCtP8D0/wMNHB20eOa1LUxXYs2GDHg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":411921},"gitHead":"f56d2ed1e366858d31bb3b3f8432dbe16e86f3e7","scripts":{"docs":"typedoc --options ./typedoc-config.js","lint":"eslint **/*.js*","test":"jest . --notify --config=./jest.config.js","validate":"npm run eslint && npm run test"},"_npmUser":{"name":"mr.amirka","email":"mr.amirka@ya.ru"},"_npmVersion":"8.19.3","description":"utils","directories":{},"_nodeVersion":"16.19.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^24.9.0","eslint":"^6.6.0","eslint-config-google":"^0.14.0","@typescript-eslint/parser":"^2.7.0","@typescript-eslint/eslint-plugin":"^2.7.0"},"_npmOperationalInternal":{"tmp":"tmp/mn-utils_0.0.251_1686863912999_0.3279739957224652","host":"s3://npm-registry-packages"}},"0.0.252":{"name":"mn-utils","version":"0.0.252","description":"utils","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./async":{"types":"./dist/async/index.d.ts","default":"./dist/async/index.js"},"./is":{"types":"./dist/is/index.d.ts","default":"./dist/is/index.js"},"./join":{"types":"./dist/join/index.d.ts","default":"./dist/join/index.js"},"./split":{"types":"./dist/split/index.d.ts","default":"./dist/split/index.js"},"./jsonl":{"types":"./dist/jsonl/index.d.ts","default":"./dist/jsonl/index.js"},"./rpc":{"types":"./dist/rpc/index.d.ts","default":"./dist/rpc/index.js"},"./browser":{"types":"./dist/browser/index.d.ts","default":"./dist/browser/index.js"},"./node":{"types":"./dist/node/index.d.ts","default":"./dist/node/index.js"},"./rpc/browser":{"types":"./dist/rpc/browser/index.d.ts","default":"./dist/rpc/browser/index.js"},"./rpc/node":{"types":"./dist/rpc/node/index.d.ts","default":"./dist/rpc/node/index.js"}},"keywords":["utils"],"author":{"name":"Аmir Absaliamov"},"license":"MIT","scripts":{"docs":"typedoc --options ./typedoc-config.js","lint":"eslint . --ext .ts,.tsx,.js","lint:fix":"eslint . --ext .ts,.tsx,.js --fix --quiet","test":"jest --config=./jest.config.js","validate":"npm run lint && npm run test","build":"tsc"},"devDependencies":{"@types/jest":"^29.5.14","@types/node":"^20.11.0","@types/react":"^18.3.0","@typescript-eslint/eslint-plugin":"^7.18.0","@typescript-eslint/parser":"^7.18.0","eslint":"^8.57.1","jest":"^29.7.0","node-notifier":"^10.0.1","ts-jest":"^29.4.6"},"gitHead":"3863adcc25df208c064eb1cfa6fa0547ba210865","_id":"mn-utils@0.0.252","_nodeVersion":"24.11.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-XbyOnS2G/89p8iHgM3vqBwt1huylSJlYWcuAwab3LGANfywEOYa6ump0pPcIH0hI+9ZNG18rACKZ6ohko/HqqQ==","shasum":"5656dd282e4ba1705c1977c276c6812d705e7734","tarball":"https://registry.npmjs.org/mn-utils/-/mn-utils-0.0.252.tgz","fileCount":636,"unpackedSize":772029,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDU2YDrR2oBVVm8c3EqLGW2NbfQg5scot9pr0TscXwaGAIgEqN+3ArG71+QBk6Rv6d/KRfzR4r9NkWkOitqWE/Bbrc="}]},"_npmUser":{"name":"mr.amirka","email":"mr.amirka@ya.ru"},"directories":{},"maintainers":[{"name":"mr.amirka","email":"mr.amirka@ya.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mn-utils_0.0.252_1778409059084_0.8057581908946423"},"_hasShrinkwrap":false}},"time":{"created":"2022-10-19T15:46:52.240Z","modified":"2026-05-10T10:30:59.337Z","0.0.1":"2018-11-12T19:21:49.357Z","0.0.2":"2018-11-25T13:25:05.934Z","0.0.3":"2019-01-12T13:32:45.189Z","0.0.4":"2019-02-01T16:55:58.099Z","0.0.17":"2019-03-07T17:53:06.219Z","0.0.18":"2019-05-23T14:03:08.563Z","0.0.19":"2019-09-24T22:06:01.602Z","0.0.20":"2019-09-24T22:10:32.534Z","0.0.21":"2019-10-15T13:29:34.508Z","0.0.22":"2019-10-30T08:59:08.862Z","0.0.23":"2019-10-30T13:23:05.690Z","0.0.24":"2019-11-25T10:32:33.613Z","0.0.25":"2019-11-26T17:13:16.252Z","0.0.26":"2019-11-26T17:23:47.436Z","0.0.27":"2019-11-26T18:13:43.387Z","0.0.28":"2019-12-01T22:27:25.643Z","0.0.29":"2019-12-08T15:18:51.102Z","0.0.30":"2019-12-09T09:15:41.748Z","0.0.31":"2019-12-12T17:21:48.242Z","0.0.32":"2019-12-12T17:35:17.264Z","0.0.33":"2019-12-13T09:09:57.046Z","0.0.34":"2019-12-15T16:36:13.286Z","0.0.35":"2019-12-16T11:51:04.082Z","0.0.36":"2019-12-19T09:09:07.495Z","0.0.37":"2019-12-19T11:47:59.296Z","0.0.38":"2019-12-19T11:56:12.998Z","0.0.39":"2019-12-19T12:09:37.520Z","0.0.40":"2019-12-19T12:18:50.081Z","0.0.41":"2019-12-19T12:30:30.381Z","0.0.42":"2019-12-19T12:32:40.452Z","0.0.43":"2019-12-19T12:47:26.485Z","0.0.44":"2019-12-19T13:02:01.070Z","0.0.45":"2019-12-19T13:18:38.301Z","0.0.46":"2019-12-19T14:41:40.586Z","0.0.47":"2019-12-19T17:21:46.915Z","0.0.48":"2019-12-19T22:38:47.103Z","0.0.49":"2019-12-19T22:57:40.986Z","0.0.50":"2019-12-19T23:03:03.484Z","0.0.51":"2019-12-19T23:12:41.439Z","0.0.52":"2019-12-19T23:26:38.502Z","0.0.53":"2019-12-20T01:34:39.909Z","0.0.54":"2019-12-20T01:38:12.994Z","0.0.55":"2019-12-21T13:25:00.951Z","0.0.56":"2019-12-21T16:43:45.788Z","0.0.57":"2019-12-21T19:04:06.636Z","0.0.58":"2019-12-21T20:05:48.050Z","0.0.59":"2019-12-21T20:12:47.605Z","0.0.60":"2019-12-21T22:10:03.845Z","0.0.61":"2019-12-21T23:54:56.347Z","0.0.62":"2019-12-23T12:43:08.725Z","0.0.63":"2019-12-23T13:26:49.767Z","0.0.64":"2019-12-23T17:46:23.887Z","0.0.65":"2019-12-25T14:15:59.194Z","0.0.66":"2019-12-26T09:03:49.213Z","0.0.67":"2020-01-08T14:57:49.128Z","0.0.68":"2020-01-09T00:24:11.399Z","0.0.69":"2020-01-10T18:40:06.121Z","0.0.70":"2020-01-13T09:24:50.122Z","0.0.71":"2020-01-21T14:03:28.082Z","0.0.72":"2020-01-21T14:43:56.231Z","0.0.73":"2020-01-23T00:53:06.719Z","0.0.74":"2020-01-23T11:29:05.921Z","0.0.75":"2020-01-23T11:35:49.302Z","0.0.76":"2020-01-23T11:48:34.267Z","0.0.77":"2020-01-24T13:58:16.416Z","0.0.78":"2020-01-27T11:59:48.465Z","0.0.79":"2020-02-10T15:30:43.816Z","0.0.80":"2020-02-17T10:16:57.064Z","0.0.81":"2020-02-17T17:59:34.127Z","0.0.82":"2020-02-17T18:04:56.687Z","0.0.83":"2020-02-20T11:13:45.249Z","0.0.84":"2020-03-10T12:35:06.074Z","0.0.85":"2020-03-24T14:35:10.868Z","0.0.86":"2020-04-06T09:30:59.100Z","0.0.87":"2020-04-30T17:07:44.703Z","0.0.88":"2020-05-06T13:09:47.577Z","0.0.89":"2020-05-07T14:16:36.500Z","0.0.90":"2020-05-18T12:01:01.518Z","0.0.91":"2020-06-15T10:46:08.486Z","0.0.92":"2020-06-15T11:46:11.692Z","0.0.93":"2020-06-16T17:14:26.832Z","0.0.94":"2020-06-17T10:22:53.504Z","0.0.95":"2020-06-17T11:10:09.556Z","0.0.96":"2020-06-17T15:35:19.933Z","0.0.97":"2020-06-18T17:37:51.544Z","0.0.98":"2020-06-18T19:29:50.568Z","0.0.99":"2020-06-18T20:25:12.104Z","0.0.100":"2020-06-29T09:43:59.122Z","0.0.101":"2020-07-02T13:40:04.835Z","0.0.102":"2020-07-03T12:48:38.633Z","0.0.103":"2020-07-11T13:20:08.011Z","0.0.104":"2020-07-12T16:29:10.404Z","0.0.105":"2020-08-03T13:20:00.645Z","0.0.106":"2020-08-03T13:42:11.773Z","0.0.107":"2020-08-03T13:52:51.830Z","0.0.108":"2020-08-25T09:29:00.436Z","0.0.109":"2020-08-28T12:23:54.801Z","0.0.110":"2020-09-16T12:29:13.752Z","0.0.111":"2020-10-01T09:14:25.732Z","0.0.112":"2020-10-01T09:19:02.753Z","0.0.113":"2020-10-05T13:28:57.378Z","0.0.114":"2020-10-05T13:34:12.124Z","0.0.115":"2020-10-30T15:57:53.363Z","0.0.116":"2020-11-03T11:42:26.630Z","0.0.117":"2021-01-06T14:34:28.633Z","0.0.118":"2021-01-20T18:41:46.731Z","0.0.119":"2021-01-20T19:09:23.088Z","0.0.120":"2021-01-20T19:17:50.822Z","0.0.121":"2021-01-20T19:24:25.242Z","0.0.122":"2021-03-28T23:20:39.386Z","0.0.123":"2021-04-09T11:09:11.076Z","0.0.124":"2021-04-18T13:42:08.253Z","0.0.125":"2021-04-18T15:22:16.232Z","0.0.126":"2021-04-18T16:00:15.788Z","0.0.127":"2021-04-19T15:53:46.807Z","0.0.128":"2021-04-19T16:05:44.838Z","0.0.129":"2021-04-19T18:10:13.789Z","0.0.130":"2021-05-03T17:58:50.681Z","0.0.131":"2021-05-03T18:28:24.231Z","0.0.132":"2021-05-10T17:58:57.650Z","0.0.133":"2021-05-13T16:04:09.013Z","0.0.134":"2021-06-14T10:17:28.761Z","0.0.135":"2021-06-21T09:02:15.922Z","0.0.136":"2021-06-21T18:44:38.803Z","0.0.137":"2021-06-22T14:15:22.697Z","0.0.138":"2021-06-28T13:21:38.294Z","0.0.139":"2021-07-06T11:30:50.235Z","0.0.140":"2021-07-13T15:43:24.698Z","0.0.141":"2021-07-22T14:21:58.869Z","0.0.142":"2021-07-26T15:16:37.209Z","0.0.143":"2021-08-06T13:42:02.431Z","0.0.144":"2021-08-09T08:49:00.869Z","0.0.145":"2021-08-09T09:48:37.995Z","0.0.146":"2021-08-12T09:08:04.029Z","0.0.147":"2021-08-15T21:06:02.982Z","0.0.148":"2021-08-19T10:03:20.533Z","0.0.149":"2021-08-19T10:47:54.436Z","0.0.150":"2021-08-19T11:54:55.436Z","0.0.151":"2021-08-20T10:59:01.971Z","0.0.152":"2021-08-22T20:26:56.269Z","0.0.153":"2021-08-25T10:11:31.614Z","0.0.154":"2021-08-25T14:35:56.707Z","0.0.155":"2021-08-26T22:40:58.812Z","0.0.156":"2021-08-27T07:23:20.084Z","0.0.157":"2021-08-27T08:16:22.610Z","0.0.158":"2021-08-27T09:32:30.237Z","0.0.159":"2021-08-27T09:39:31.836Z","0.0.160":"2021-08-30T07:42:56.314Z","0.0.161":"2021-08-30T11:01:15.478Z","0.0.162":"2021-09-03T06:06:44.485Z","0.0.163":"2021-09-10T08:23:33.267Z","0.0.164":"2021-09-14T08:30:46.731Z","0.0.165":"2021-10-25T06:14:35.042Z","0.0.167":"2021-10-28T07:07:37.969Z","0.0.168":"2021-10-28T07:14:37.725Z","0.0.169":"2021-10-28T07:22:24.837Z","0.0.170":"2021-10-28T07:27:23.977Z","0.0.171":"2021-10-28T09:52:42.937Z","0.0.172":"2021-10-28T10:15:42.166Z","0.0.173":"2021-11-03T09:57:00.892Z","0.0.174":"2021-11-03T10:59:33.464Z","0.0.175":"2021-12-16T11:55:47.267Z","0.0.176":"2021-12-27T21:05:40.179Z","0.0.177":"2021-12-27T21:24:05.729Z","0.0.178":"2022-01-05T15:52:50.453Z","0.0.179":"2022-01-05T18:02:10.255Z","0.0.180":"2022-01-08T00:50:45.417Z","0.0.181":"2022-01-08T01:27:52.492Z","0.0.182":"2022-01-08T16:26:15.470Z","0.0.183":"2022-01-08T18:52:04.340Z","0.0.184":"2022-01-08T20:15:26.142Z","0.0.185":"2022-01-08T20:48:47.647Z","0.0.186":"2022-01-08T21:04:30.996Z","0.0.187":"2022-01-08T22:08:59.123Z","0.0.189":"2022-01-10T09:38:25.355Z","0.0.190":"2022-01-10T10:09:37.396Z","0.0.191":"2022-01-23T19:13:51.702Z","0.0.192":"2022-01-24T09:47:13.436Z","0.0.193":"2022-01-24T13:44:08.269Z","0.0.194":"2022-01-27T14:47:31.118Z","0.0.195":"2022-01-27T15:06:08.605Z","0.0.196":"2022-01-27T15:46:51.752Z","0.0.197":"2022-02-02T08:15:59.441Z","0.0.198":"2022-02-03T13:49:56.580Z","0.0.199":"2022-02-03T14:14:42.762Z","0.0.200":"2022-02-03T14:17:08.326Z","0.0.201":"2022-02-03T14:42:23.979Z","0.0.202":"2022-02-03T21:13:39.731Z","0.0.203":"2022-02-04T07:37:34.358Z","0.0.204":"2022-02-08T20:45:06.669Z","0.0.205":"2022-02-08T21:58:37.876Z","0.0.206":"2022-02-09T21:35:17.776Z","0.0.207":"2022-02-12T15:14:17.931Z","0.0.208":"2022-02-15T15:29:24.388Z","0.0.209":"2022-02-15T15:36:25.728Z","0.0.210":"2022-02-15T18:03:11.016Z","0.0.211":"2022-02-15T18:09:32.420Z","0.0.212":"2022-02-16T10:09:58.054Z","0.0.213":"2022-02-16T15:25:28.366Z","0.0.214":"2022-02-17T15:04:58.406Z","0.0.215":"2022-02-17T15:34:22.739Z","0.0.216":"2022-02-17T16:09:51.044Z","0.0.217":"2022-02-17T16:47:47.576Z","0.0.218":"2022-02-17T17:30:32.949Z","0.0.219":"2022-02-20T18:41:12.332Z","0.0.220":"2022-02-20T23:47:51.128Z","0.0.221":"2022-02-21T15:27:51.488Z","0.0.222":"2022-02-22T12:01:34.507Z","0.0.223":"2022-02-23T14:31:41.314Z","0.0.224":"2022-02-24T12:32:26.304Z","0.0.225":"2022-02-25T16:41:04.418Z","0.0.226":"2022-03-06T20:43:22.351Z","0.0.227":"2022-03-06T21:54:23.931Z","0.0.228":"2022-03-07T00:32:05.339Z","0.0.229":"2022-03-14T21:46:04.032Z","0.0.230":"2022-03-15T09:03:01.544Z","0.0.231":"2022-03-17T17:30:08.872Z","0.0.232":"2022-03-18T11:42:12.644Z","0.0.233":"2022-03-24T12:56:36.260Z","0.0.234":"2022-05-08T15:10:55.763Z","0.0.235":"2022-05-08T15:45:35.785Z","0.0.236":"2022-05-19T14:21:51.494Z","0.0.237":"2022-05-20T12:20:29.332Z","0.0.238":"2022-05-20T12:23:38.320Z","0.0.239":"2022-05-23T21:41:19.177Z","0.0.240":"2022-05-26T10:43:33.308Z","0.0.241":"2022-05-27T08:47:59.767Z","0.0.242":"2022-05-31T10:02:25.751Z","0.0.243":"2022-05-31T21:26:39.867Z","0.0.244":"2022-06-26T16:08:50.165Z","0.0.245":"2022-07-01T13:00:32.540Z","0.0.246":"2022-08-03T12:59:20.559Z","0.0.247":"2022-10-07T13:37:58.001Z","0.0.248":"2022-10-18T11:29:15.367Z","0.0.249":"2022-10-19T15:46:52.481Z","0.0.250":"2023-05-14T12:58:20.378Z","0.0.251":"2023-06-15T21:18:33.282Z","0.0.252":"2026-05-10T10:30:59.251Z"},"license":"MIT","keywords":["utils"],"description":"utils","maintainers":[{"name":"mr.amirka","email":"mr.amirka@ya.ru"}],"readme":"# mn-utils\n\nНабор утилит для работы с данными, URL, временем, событиями и асинхронным кодом.\n\n## Установка\n\n```bash\nnpm install\n```\n\n## Сборка\n\n```bash\nnpm run build\n```\n\nТипы и сборка попадают в `dist/`.\n\n## Тесты\n\n```bash\nnpm test\n```\n\n## Документация API\n\nГенерация Typedoc в каталог `docs/`:\n\n```bash\nnpm run docs\n```\n\n## Лицензия\n\nMIT\n\n## Основные модули\n\n- **URL**: `urlParse`, `urlExtend`, `unparam`, `param` — разбор и расширение URL, query-строки\n- **Время**: `formatTime`, `normalizeDate`, `getData` — форматирование и нормализация дат\n- **События**: `attachEvent`, `EventEmitter`, `subscribe`, `Unsubscriber`\n- **Асинхронность**: `wait`, `createTimeout`, `createInterval`, `createAnimationFrame`\n- **Объекты и массивы**: `merge`, `without`, `extend`-подобная логика, `get` по пути\n- **Строки**: `half`, `halfLast` — разбиение по разделителю\n- **Прочее**: `noop`, `getUniqId`, `tryJsonParse`, провайдеры (queue, template, router и др.)\n\nТочный список экспортов — в `src/index.ts`. Подробное API — в сгенерированной документации (`npm run docs`).\n\n\n## Публичное API (экспортируется из `src/index.ts`)\n\n### Утилиты для DOM и событий\n\n- **attachEvent** (`attachEvent.ts`): безопасная подписка на DOM-событие с возвратом функции отписки.\n- **EventEmitter** (`EventEmitter/`): типизированный emitter с методами `subscribe`, `once`, `clear`, `destroy`.\n- **subscribe** (`subscribe.ts`): утилита для добавления/удаления слушателей в произвольную коллекцию.\n- **Unsubscriber** (`Unsubscriber/`): агрегатор отписок (`add`, `unsubscribe`), удобен для сборки всех unsubscribe‑функций.\n- **noop** (`noop.ts`): пустая функция, часто используется как дефолтный колбэк.\n\n### Таймеры и асинхронность\n\n- **wait** (`wait.ts`): `Promise`, который резолвится через указанный timeout, с опциональным значением.\n- **createTimeout** (`createTimeout.ts`): обёртка над `setTimeout`, возвращает функцию отмены.\n- **createInterval** (`createInterval.ts`): реализация интервала на базе `setTimeout` с контролем жизненного цикла и отменой.\n- **createAnimationFrame** (`createAnimationFrame.ts`): loop на `requestAnimationFrame` с учётом накопленного времени.\n- **queueProvider** (`queueProvider.ts`): последовательная очередь выполнения асинхронных задач (одна задача за раз).\n- **sendingQueue** (`sendingQueue.ts`): очередь промисов с аккумуляцией ошибок и методом `drain()` для ожидания завершения всех.\n\n### URL, роутинг и HTTP‑окружение\n\n- **urlParse** (`urlParse.ts`): низкоуровневый разбор URL в богатую структуру (`TUrlProps`), включая `query`, `hash`, `child`.\n- **urlExtend** (`urlExtend.ts`): комбинирование base URL и частичных структур URL (`TUrlOptions`), для модификации query/path.\n- **unparam** (`unparam.ts`): разбор query‑строки в объект (в т.ч. вложенные структуры и массивы по скобочной нотации).\n- **routeParseProvider** (`routeParseProvider.ts`): генератор regexp+маппера по route‑шаблону (используется в `routerProvider`).\n- **regexpMapperProvider** (`regexpMapperProvider.ts`): привязка regexp `exec` к мапперу значений (в том числе для роутинга).\n- **routerProvider** (`routerProvider.ts`): сложный роутер поверх `history`/`store` и React‑компонентов (`Link`, `Router` и т.п.).\n- **rpc** (`rpc/`): семейство модулей для RPC‑взаимодействия (кодирование сообщений, клиент, пул клиентов, browser/node адаптеры).\n\n### Шаблоны и текст\n\n- **templateProvider** (`templateProvider.ts`): mini‑template движок `{{expr}}` по объекту‑scope (с `templatePartsJoin` под капотом).\n- **templatePartsJoin** (`templatePartsJoin.ts`): композиция набора функций‑частей шаблона в одну функцию.\n- **convertToBreakLineHTML** (`convertToBreakLineHTML.ts`): преобразование текста с `\\n` в HTML со span/br и экранированием `<`/`>`.\n- **formatTime** (`formatTime.ts`): форматирование дат по маске, плюс вспомогательные `normalizeDate`, `getData`.\n- **dateToUTCString** (`dateToUTCString.ts`): компактный UTC‑строковый формат `YYYYMMDDThhmmssZ`.\n- **withoutEmpty** (`withoutEmpty.ts`): очистка структуры от `null` / `undefined` / пустых строк (с контролем глубины).\n\n### Объекты и коллекции\n\n- **merge** (`merge.ts`): семантический merge коллекции значений (массив или одиночное значение) в одно значение/объект.\n- **mapperProvider** (`mapperProvider.ts`): маппер `[values] -> {keys: values[i]}` с опциональным dst.\n- **pushArray** (`pushArray.ts`): эффективная конкатенация array‑like в массив.\n- **reduce / reduceEach / reduceIn** (`reduce/`): синхронный `reduce` для массивов/array‑like и объектов, с выбором стратегии по типу коллекции или флагу `hasArray`.\n- **without** (`without.ts`): копия объекта без указанных ключей.\n- **queueProvider** / **sendingQueue**: см. раздел «Таймеры и асинхронность».\n\n### Базовые утилиты\n\n- **half** (`half.ts`): разбиение строки на две части по разделителю (первая/последняя позиция).\n- **tryJsonParse** (`tryJsonParse.ts`): безопасный `JSON.parse` с возвратом исходного значения при ошибке.\n- **getUniqId** (`getUniqId.ts`): генерация уникального строкового ID с опциональным префиксом.\n\n### Хранилища и cookie\n\n- **localStorageProvider** (`localStorageProvider.ts`): адаптер под localStorage (с единым интерфейсом хранения).\n- **cookieStorageProvider** (`cookieStorageProvider.ts`): адаптер под cookie‑хранилище с тем же интерфейсом.\n\n### Событийная модель и коммуникация\n\n- **EventEmitter / Unsubscriber / subscribe / attachEvent / noop / wait / queueProvider / sendingQueue** — используются как фундамент для `routerProvider`, `rpc`, JSONP‑запросов и прочих high‑level модулей.\n\n---\n\n## Тематические группы (расширенный обзор)\n\nНиже перечислены важные модули, в том числе не экспортируемые напрямую из `src/index.ts`, но активно используемые в коде.\n\n### 1. Работа со строками\n\n- **half / halfLast**: разбиение строки по разделителю (первое/последнее вхождение).\n- **trim**: обрезка пробелов по краям.\n- **toLower / toUpper / lowerFirst / upperFirst**: регистровые преобразования.\n- **scopeSplit / scopeJoin**: парные утилиты для разбиения строки на иерархию «областей» по паре токенов (например, скобок) и обратной сборки этой структуры в строку.\n- **escapeRegExp**: экранирование специальных символов для безопасной вставки в RegExp.\n- **repeat**: повторение строки N раз (polyfill‑дружественно).\n- **joinProvider / joinOnly / joinComma / joinSpace**: различные стратегии склейки массивов строк.\n- **kebabToCamelCase / snakeToCamelCase / camelToKebabCase / camelToSnakeCase / camelToDelimiterCase**: преобразования регистров и разделителей в идентификаторах.\n- **convertToBreakLineHTML**: см. выше, шаблоны и текст.\n\n### 2. Объекты и коллекции (общие утилиты)\n\n- **extend / extendDepth / extendIfEmpty / extendOwn**: различные варианты shallow/deep merge объектов.\n- **merge / complement**: высокоуровневые стратегии слияния коллекций значений и объектов (см. также `CRITICAL.md`).\n- **set / get / baseSet / getBase / getWithContext**: установка и получение значений по путям.\n- **without / withoutEmpty / toPlainFields / values / keys / entries / fromPairs**: извлечение и фильтрация полей.\n- **pick / remove / removeByIndex / removeOf / addOf**: выбор/удаление полей и элементов.\n- **indexOf / includes / startsWith / last / some / every / find / findIndex / findIndexLast**: универсальные операции поиска по коллекции/строке.\n- **size**: количество перечислимых значений.\n\n### 3. Проверка типов (`src/is/`)\n\nОсновные проверки:\n\n- **isArray / isArrayLike / isCollection**: массивы и коллекции.\n- **isObject / isObjectLike / isPlainObject**: различные уровни «объектности».\n- **isString / isNumber / isBoolean / isSafeNumber / isInteger / isLength / isIndex**: числовые и строковые типы.\n- **isEmpty**: пустой объект.\n- **isRegExp / isDate / isFunction / isPromise / isFormData / isBlob / isBuffer / isArrayBuffer**: специфические типы.\n- **isEmail / isPhone / isHttpUrl / isASCII / isHash**: валидация строк по формату.\n\n### 4. Асинхронные утилиты (`src/async/`)\n\n- **loopAsync (`async/loop.ts`)**: общий цикл `while(checkFn) { await statementFn }`.\n- **async/reduce / async/reduceEach**: асинхронный reduce для массивов и объектов.\n- **async/map / async/filter / async/find / ... (и их parallel‑варианты)**: параллельные/последовательные обходы коллекций с async‑итераторами.\n- **withDelay / withReDelay / withDefer / delay**: отложенное выполнение и повторные попытки.\n\n### 5. Browser‑утилиты (`src/browser/`)\n\n- **ready / readyProvider**: `DOM ready` для текущего окна/произвольного объекта `window`.\n- **jsonpRequest**: JSONP‑обёртка с автоматической очисткой script‑тега и callback‑имени.\n- **getImageByUrl / getImageNaturalSizeByUrl / getDataLink / download**: загрузка и подготовка ресурсов (картинки, blob‑ссылки).\n- **wsAsyncRequestProvider / wsSeriesRequestProvider / wsConnect**: вспомогательные модули для работы с WebSocket‑запросами.\n\n### 6. Node‑утилиты (`src/node/`)\n\n- **node/file/readUnopened / readSlice**: чтение файлов по частям и без полного открытия.\n- **node/jsonl/**: чтение/запись JSONL (JSON Lines) файлов, трансформы (`TransformTo`, `TransformFrom`), промифицированные версии.\n- **node/searchFiles/**: обход файловой системы по маскам, `searchFiles/index.ts` возвращает список путей.\n\n### 7. JSONL и потоковые форматы (`src/jsonl/`)\n\n- **stringify / parse**: сериализация/десериализация JSONL.\n- **ProviderOfTransformFrom / ProviderOfTransformTo**: фабрики stream‑трансформов.\n\n### 8. RPC (`src/rpc/`)\n\n- **types.ts**: типы сообщений (агент, тип RPC, форматы call/result/subCall/event/dispatch).\n- **RpcCoder**: кодирование/декодирование полезной нагрузки.\n- **RpcClient / RpcClientPool / RpcConnect**: высокоуровневые клиенты и пул клиентов.\n- **browser.ts / node.ts**: адаптеры под среду исполнения.\n\n### 9. Router (`src/routerProvider.ts`)\n\nВысокоуровневый модуль, объединяющий:\n\n- разбор/сборку URL (`urlParse`, `urlExtend`),\n- сопоставление маршрутов (`routeParseProvider`, `regexpMapperProvider`),\n- историю навигации (совместно с `store`),\n- блокировки навигации (lock‑watchers),\n- React‑компоненты для ссылок и роутера (`TLinkProps`, `TRouteProps` и др.).\n\n---\n\n## Связь с `CRITICAL.md`\n\nНекоторые модули из перечисленных выше имеют оговорки по реализации или дизайну.  \nПодробности, известные проблемы и рекомендации по рефакторингу собраны в файле:\n\n- **`CRITICAL.md`** — обязательно посмотри перед изменениями в:\n  - `routeParseProvider.ts`\n  - `regexpMapperProvider.ts`\n  - `set.ts`, `push.ts`, `slice.ts`, `concat.ts`\n  - `reduce.ts`\n  - `routerProvider.ts`, `rpc/*`\n\n","readmeFilename":"README.md","author":{"name":"Аmir Absaliamov"}}