{"_id":"@amazingcat/electron-ipc-router","_rev":"12-72613db793fcc175002150ba38ee4cd4","name":"@amazingcat/electron-ipc-router","dist-tags":{"latest":"1.3.6"},"versions":{"1.2.2":{"name":"@amazingcat/electron-ipc-router","version":"1.2.2","keywords":["router","electron","ipc","cattr"],"author":{"name":"Cattr Team & Contributors","email":"hi@cattr.app"},"license":"MIT","_id":"@amazingcat/electron-ipc-router@1.2.2","maintainers":[{"name":"amazingcat-team","email":"team@amazingcat.net"},{"name":"imcatwhocode","email":"hi@imcatwhocode.dev"}],"homepage":"https://github.com/cattr-app/electron-ipc-router#readme","bugs":{"url":"https://github.com/cattr-app/electron-ipc-router/issues"},"xo":{"env":["browser","node"],"rules":{"curly":["error","multi"],"padded-blocks":["error","always"],"object-curly-spacing":["error","always"],"max-statements-per-line":["error",{"max":2}],"no-multiple-empty-lines":["error",{"max":2,"maxEOF":1}]},"space":true},"dist":{"shasum":"644d4eec96a6e49a1158939cff6c49ba240bacb8","tarball":"https://registry.npmjs.org/@amazingcat/electron-ipc-router/-/electron-ipc-router-1.2.2.tgz","fileCount":6,"integrity":"sha512-IRFSWdSss2uWCt+T9q1OH86BPIjuvIE9CXjCJL6XvPDHPfjGUIJUI2TGtLHfUidgDRr3ImodasK2Qef1I7Gqjg==","signatures":[{"sig":"MEQCIF3Zke1k1or57DtAhce8rXKRFINeupQ3knbsV1Vmie58AiASe7LJB2yCbEslxl484fqT6D+Ho8GyLejFYLK+z3AcKw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14581,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeQWSiCRA9TVsSAnZWagAAFnQQAIf/Bt2cmJM3Cjh7Vzpa\nDsE/wA3w4fFaNb08MbK7/x/SdKkCcB4Pr7aHbsVy82dQxt2bk/YllAIzWy8u\nyEWllCVHy+iFZqxCyhcLiO2oGlkLGZaDC8YgQVf8C4xXzi5DTWDyuG9UnOMv\nP39lPRnSQh/eh3zcWPm/slUUySK2WRxOS+rFCzp1raJvAlxG//3hGYt/zdOO\nG+PdzLR7e7xqaIiK+vpnlduaZ5PDnNCm9RQWp2xEMdNeEpUu1fseloVZasAx\nX4UPdgr1ddSDSKwr5g84Wb48+Cqr69/Uau0eXBd67QlKawwTzZilDKdAV+tu\nZBFr7762OSRacLy+1vg98ARq5zedvyQaAjxmBcLKaI3yjSDmQW+pfGAcYSWC\neuzgE2KjOFAbGqXzPJ25xSuCaPerCWrK1N6jYBay56//RPSJhflGp8w82vAC\nmtSqNbmeCmCLgMOdL24FyxDIAnOtgwKzzUd741hLPLPPsgt6O8hHpayrAgdy\nhDCw0R3BMr3x1p2AgAtXIvlCUImvnDQ1BDguBB+dYAXCW9+V4wMFaFysS/Aj\nQquFMTo+lycVyByM5OgSx6usoirhcRFacIDG3v5U8TwcIPgf2skf3bWhKjVB\nQVQ1B++GJirR/wMeLTrHSvfaEcN0oGa3JutIvP04ZcNL+EN1nEdNsz9QrYQ0\nxsdB\r\n=+O9v\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"c42d0bf9e4114738864ff323c7d994e13fa20b93","scripts":{"test":"xo"},"_npmUser":{"name":"imcatwhocode","email":"hi@imcatwhocode.dev"},"repository":{"url":"git+https://github.com/cattr-app/electron-ipc-router.git","type":"git"},"_npmVersion":"6.13.4","description":"Simple Electron IPC router","directories":{},"_nodeVersion":"12.14.1","dependencies":{"uuid":"^3.4.0"},"_hasShrinkwrap":false,"devDependencies":{"xo":"^0.25.3"},"_npmOperationalInternal":{"tmp":"tmp/electron-ipc-router_1.2.2_1581343905743_0.1338117568360475","host":"s3://npm-registry-packages"}},"1.2.3":{"name":"@amazingcat/electron-ipc-router","version":"1.2.3","keywords":["router","electron","ipc"],"author":{"name":"amazingcat LLC Team","email":"to@amazingcat.net"},"license":"MIT","_id":"@amazingcat/electron-ipc-router@1.2.3","maintainers":[{"name":"imcatwhocode","email":"hi@imcatwhocode.dev"},{"name":"amazingcat-team","email":"team@amazingcat.net"},{"name":"vermorag","email":"alexander.vyarvelsky@yandex.ru"}],"xo":{"env":["browser","node"],"rules":{"curly":["error","multi"],"padded-blocks":["error","always"],"object-curly-spacing":["error","always"],"max-statements-per-line":["error",{"max":2}],"no-multiple-empty-lines":["error",{"max":2,"maxEOF":1}]},"space":true},"dist":{"shasum":"04c85c6a3f7cfcddd1911c83d7de8b19a95edd5e","tarball":"https://registry.npmjs.org/@amazingcat/electron-ipc-router/-/electron-ipc-router-1.2.3.tgz","fileCount":5,"integrity":"sha512-W+frXo2li1M7PlSiJefX0sz4DFICIcDhC0bfBIEB0EqD63vD1Sr83GZP+9AFrczhxrXIWcRM1T3qCl5rSCzbEA==","signatures":[{"sig":"MEUCICkOThKZ5ydeW3dLRI5EimcTgumr0dWAekRpoqgE8+eMAiEA74zBUqGT3D5p69GHF6zD24GkjO8LKwqjnM4EET0S2/4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25868,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgBqa7CRA9TVsSAnZWagAALWUQAIqvf0J60S9JEcFW/VAH\ndLoSIDNMZErVb0OxfHvM/n6HO5tcFHU8qAC+Cnc0hlGh0dysv5ZTjRhjIbcL\njJt6SaUZanZaM6opq48t83Q436EEubXb0A+VAQtmC9r8ZCDLaoT6SL6XjIE/\nsm5lwBQtVRXA27w9D/1y8O1buP5aehagMgYZIbx//C3D57B+WzTQEMxRrGpg\nBT+Ol6RMEA5ayWOjX5EA85BtM8xiCdeq3NBxVFWIWRb6QnqlVhJgs4MTRNL2\nBHDEUKIBDZOjLspayWuzj5UeePdl9avDm8JoDruOfnJjJ9pkSLXoa1Wz3dnd\nZ10NN9h38XkIfV9DzBI7N7SWLDpoT8gM2yT2sWI7zH/Piz2bN76oPbK2cJrm\n4RGm82BF45pTaV+7bQpy7vlvlOlYt8n7wWcEZ4RlPEWtnvEluEtKYkxYfZ8m\nP5SYS953zypGqTsz/yCm1c1GSwAmQUzMiXWSLN4UGGyKqJHu9Ti9hd28QY05\nD7RLg5MeA736Y8rewIJsKqwfUQFfTnOcVu63Loivz8wV+el+vMF+dj6nRhGn\nB+OpmEQqdRyKiYz64ywzgprvPUL31ucSwp0cXumFDglJOSPfdGOCbxS2LwGz\nxua6myJRbx8ppgART6omJeyhaZ1aTheGdwiimFQ1na7aM/E2GAUFd80WkgIN\nzlDd\r\n=GHnA\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"736a087b51f4926f096d8f78527ea91bc28824cb","scripts":{"test":"xo"},"_npmUser":{"name":"imcatwhocode","email":"hi@imcatwhocode.dev"},"repository":{"url":"git@git.amazingcat.net:AmazingTime/amazing-electron-ipc-router.git","type":"git"},"_npmVersion":"6.14.10","description":"Small Electron IPC router, which implements request-response pattern","directories":{},"_nodeVersion":"14.15.4","dependencies":{"uuid":"^8.3.2"},"_hasShrinkwrap":false,"devDependencies":{"xo":"^0.37.1"},"_npmOperationalInternal":{"tmp":"tmp/electron-ipc-router_1.2.3_1611048635053_0.34712234924591634","host":"s3://npm-registry-packages"}},"1.2.4":{"name":"@amazingcat/electron-ipc-router","version":"1.2.4","keywords":["router","electron","ipc"],"author":{"name":"amazingcat LLC Team","email":"to@amazingcat.net"},"license":"MIT","_id":"@amazingcat/electron-ipc-router@1.2.4","maintainers":[{"name":"imcatwhocode","email":"hi@imcatwhocode.dev"},{"name":"amazingcat-team","email":"team@amazingcat.net"},{"name":"vermorag","email":"alexander.vyarvelsky@yandex.ru"}],"xo":{"env":["browser","node"],"rules":{"curly":["error","multi"],"padded-blocks":["error","always"],"object-curly-spacing":["error","always"],"max-statements-per-line":["error",{"max":2}],"no-multiple-empty-lines":["error",{"max":2,"maxEOF":1}]},"space":true},"dist":{"shasum":"533c3d2e952e2fb152531f240ce0df3f59e9f67b","tarball":"https://registry.npmjs.org/@amazingcat/electron-ipc-router/-/electron-ipc-router-1.2.4.tgz","fileCount":5,"integrity":"sha512-arZFWvzxTA/d2BNvGyv02MbpuddxajguaaWdR9XgKxGIHwwBb8PyncVyf8mBX8HmQydNXe6PDbs9pKpMHxbaSQ==","signatures":[{"sig":"MEUCICh/t5d5WDsC4Zzl4WN1fvjbxjarjMqopwRg6fL3/hxJAiEAz7lRd6q/j/+lvJG9y+xpQnouScqL7BWutFzb4aqPSuE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25868,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgDzMOCRA9TVsSAnZWagAAZroP/RvBGE2NswTslGAQZIBS\n8sqFTO20RqFty21b9NJnB9QMAP3zUPfvXoSeQ06ITpQ3fKDd4bS/qWBv3kOM\n3VqavijOiTaZS/eQeMmlStru6y6uTdSJ21xG980ojbhZumV0HTwCRKUltvWO\nZDiTiqo25FhD5iQMWN+8hr+uq3FtNVoV0JT5nDWsjTWfcNzEKGbM0kG6HNhh\nJgZs6EeT8vZu5wUkhBSPio7oYxjUSrxuCvaBd/ABKWTuY7XzC44CFk+0kM46\nZ+HpPAOOy1JXyAuIQY7oVbGcF72DaRxPaQV/Llsf493cAPhhHDfdM3wOilZj\ne1CfhX3JrsOPtCuYYS8FYvEBctyZfKY0efjS5lA0lPMy67pc8QYiYy+spfhf\nraV06lS4IRF0dp+Iil3/EXN5HetVSkcjMP8M4j4f3uYoEfvRR5KRJtmY7JjG\nVIVUpGArd0o1OHTRO6FsSM5XZ8D8GM5ApMUfy0/XHCrv4Wqs4smwKPoaTEUf\nE/usbr/bG4SoxQFXCC4nU7ZpUcZHUtCIYkWo7XlvSvjeWHdNEvcozjjOSUWw\nrykeOrrQelNhy8a4DiYEuarBZWhYdtEd3HAawUq0ErKyYUQw0hwIINjFMit0\nbRpliwswMefz4MQQ4JRGxBcCZf8uqtbr27NCh8/jdT7qmfHRswZknTilRMR6\n9lo6\r\n=erIp\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"9a683e9899e62426cd11a84635d1a633bcdffd47","scripts":{"test":"xo"},"_npmUser":{"name":"imcatwhocode","email":"hi@imcatwhocode.dev"},"repository":{"url":"git@git.amazingcat.net:AmazingTime/amazing-electron-ipc-router.git","type":"git"},"_npmVersion":"6.14.10","description":"Small Electron IPC router, which implements request-response pattern","directories":{},"_nodeVersion":"14.15.4","dependencies":{"uuid":"^8.3.2"},"_hasShrinkwrap":false,"devDependencies":{"xo":"^0.37.1"},"_npmOperationalInternal":{"tmp":"tmp/electron-ipc-router_1.2.4_1611608845683_0.8343744750671724","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"@amazingcat/electron-ipc-router","version":"1.3.0","keywords":["router","electron","ipc"],"author":{"name":"amazingcat LLC Team","email":"to@amazingcat.net"},"license":"MIT","_id":"@amazingcat/electron-ipc-router@1.3.0","maintainers":[{"name":"imcatwhocode","email":"hi@imcatwhocode.dev"},{"name":"amazingcat-team","email":"team@amazingcat.net"},{"name":"vermorag","email":"alexander.vyarvelsky@yandex.ru"}],"dist":{"shasum":"7b2027cfb67ab7d366da23e3b0e3fdadf44e49fe","tarball":"https://registry.npmjs.org/@amazingcat/electron-ipc-router/-/electron-ipc-router-1.3.0.tgz","fileCount":4,"integrity":"sha512-Dev6b+BapBSt187khwSlHhuPR5iQNcB3Knmwcb3IhZgIOQcVZPaKKwbKHA2KDYNJeT7UyD7BQmO/z18d+zgwxg==","signatures":[{"sig":"MEQCICXulkcONyjQG89SM2WaFdOU7We8O/VvYhafiqL3ArliAiBY8+dHtiFuVaLd0zDZH7524eEXfpTLUHkY+5l6WymawA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25302,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgf01tCRA9TVsSAnZWagAAxWQP/3Ufdnp0H6SQi5+x+HKX\n6dniRSSqVynHQE0Tg1frbnBpGQ9yv5FyD8A1QzZW18x9swUTv6mDGIvWfOz/\nQisnpSgy5U4bXBVGKIWJwcCctPjr6vcrdCfyJgTflhHjdMIwyUKoDx0722Mw\njuQQ+nKOM82RqI62/x3RGq1BGnUZSlapAQMmqS8sWlZ6Qz/7WyN2feOjLU5g\nwclajVA1Vih4kad4AHl0w9JQV3O7jwerdRwLNgvxVxCoPI7hzeLBtsRl4dbQ\nE5FoEyUQ9TfblX8OAA+g6Uo5yNgp/C5l3JYL7dzxyyLNXsBmXtNBzy9akL2X\nuUymJHOT+QlDWKk5kVatWUfw4x+rNWvSE16UvQ9XUJ6wao+rai+LOjlcY8MH\nul3ghP32lTB/CDvknmJ7gsjogqjsjVuY69bYwJKMeFubJr8yHSZmaFFD/xao\n+8OC4pVkcmgKrIT+mK1UzicLFHFiFfgNzt7S4DNwo4ud1VMUvYOf/LSECoGM\nrZNP4g7P9JDxTHxiXaSh+S9YKZ710JUPPFnV/pB+ZCafaDRg7KNTSh/KDpoa\n36pBtdlZXmChel2uETHL9LoCEGi1laPjLlhUmjOAF27PFhmgSggNHtsN+00L\nzVKgJxjPmRriQIZD69xefK/yQWlEKA89HMGXRkwG/FPpa7lVskjIjcywA02y\nmHrQ\r\n=05cO\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"a70be19e089f5affba04872b3ae60c2c7d910c69","scripts":{"test":"eslint ."},"_npmUser":{"name":"imcatwhocode","email":"hi@imcatwhocode.dev"},"repository":{"url":"git@git.amazingcat.net:AmazingTime/amazing-electron-ipc-router.git","type":"git"},"_npmVersion":"6.14.12","description":"Small Electron IPC router, which implements request-response pattern","directories":{},"_nodeVersion":"14.16.1","dependencies":{"nanoid":"^3.1.22"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.24.0","eslint-config-airbnb":"^18.2.1","eslint-plugin-import":"^2.22.1"},"_npmOperationalInternal":{"tmp":"tmp/electron-ipc-router_1.3.0_1618955628514_0.2888207883264209","host":"s3://npm-registry-packages"}},"1.3.1":{"name":"@amazingcat/electron-ipc-router","version":"1.3.1","keywords":["router","electron","ipc"],"author":{"name":"amazingcat LLC Team","email":"to@amazingcat.net"},"license":"MIT","_id":"@amazingcat/electron-ipc-router@1.3.1","maintainers":[{"name":"imcatwhocode","email":"hi@imcatwhocode.dev"},{"name":"amazingcat-team","email":"team@amazingcat.net"},{"name":"vermorag","email":"alexander.vyarvelsky@yandex.ru"}],"dist":{"shasum":"2e7033fc3ab77427eb719fb1703777465f82e143","tarball":"https://registry.npmjs.org/@amazingcat/electron-ipc-router/-/electron-ipc-router-1.3.1.tgz","fileCount":4,"integrity":"sha512-vUTefD9hCmnD1NBPUK201/kSylON/o+7jJDvvCL+lKa6ed1cuPPMrnaj/htL30Bd9q8/D7V75aR5bZ/zfBcyMQ==","signatures":[{"sig":"MEYCIQC0HkoC9wzthcVkr932fobcKgBsmjSQSYtiTPlGfhVSSAIhAOokg9bqyMQxL6XngXcoFYwEUGOqTFwJR8fufZoihaze","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25292,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgf1gJCRA9TVsSAnZWagAAIyMP/RCqnmz2SckpmaMBv6EP\nA37CA+3+0pLcr9Vu5WIlSchpPbXGLfsOjJJnJ/0AvklnTwDR+M3+RXTPwA6P\nI3hS9tWx1sucFKaxz9SotOT099M40Mb7oJAzePIvMYTnsopm+R7dt323wjRC\nKacHz0s1z6ydIME+eHVr9uokI65/ukBzvapweI1dDZi60+9c3KT/3CCA3/II\ncZe+/Go4sAlTYadbWTOepx8KGuBcQTsyQsPJ5+2PbmmPSaT4Xt/n55tHpWm1\nNt8ca6+3b6nTTBAYUDg6bMMq7V/ru+jd/gSic0jY0EMhpFmdWzUHUn2OsayB\n+aRE+DTCV9WSzFKva0KBOK5sihA/JDZ/vemMag/hFJJqHx3LWigKQe7Mak7o\nC9lX+0aQPATmG7xMo/66fiMFUcoYpbpWNlTGz7kKos06clnod5M2KmiWH/sd\nZ2SmPNDRxDpNKBGZqWZkyKhLTg1pNCB/64CW5n3OgNTM1qlnj12FA+0+YON0\nUECZ3tuOto/GusPYJuox1OfrdOgxIPCfS/Y/7k6cfPC/R8GgqTa3QchQybiu\nVv9I0/MmEbcaviD8jgXjeilcCcKOlFHG0fX5g0XXlMqPIj/2o3g+ihRysmTa\n8dW7TxzN0H+yKqtVBNIgfpYycZxB98IREYWKJF40LaRQ02vkCBSfwquDgJc0\n6b1B\r\n=SXaC\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"4933d678fb751fa4d5193ab424e61fd3415c3c6a","scripts":{"test":"eslint ."},"_npmUser":{"name":"imcatwhocode","email":"hi@imcatwhocode.dev"},"repository":{"url":"git@git.amazingcat.net:AmazingTime/amazing-electron-ipc-router.git","type":"git"},"_npmVersion":"6.14.12","description":"Small Electron IPC router, which implements request-response pattern","directories":{},"_nodeVersion":"14.16.1","dependencies":{"nanoid":"^3.1.22"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.24.0","eslint-config-airbnb":"^18.2.1","eslint-plugin-import":"^2.22.1"},"_npmOperationalInternal":{"tmp":"tmp/electron-ipc-router_1.3.1_1618958344581_0.8840295131215818","host":"s3://npm-registry-packages"}},"1.3.2":{"name":"@amazingcat/electron-ipc-router","version":"1.3.2","keywords":["router","electron","ipc"],"author":{"name":"amazingcat LLC Team","email":"to@amazingcat.net"},"license":"MIT","_id":"@amazingcat/electron-ipc-router@1.3.2","maintainers":[{"name":"imcatwhocode","email":"hi@imcatwhocode.dev"},{"name":"amazingcat-team","email":"team@amazingcat.net"},{"name":"vermorag","email":"alexander.vyarvelsky@yandex.ru"}],"dist":{"shasum":"3b8e92abc2bef211584cd8f33bdd5829c4971091","tarball":"https://registry.npmjs.org/@amazingcat/electron-ipc-router/-/electron-ipc-router-1.3.2.tgz","fileCount":4,"integrity":"sha512-zsCCj0VDSCoMceuJjDnrsk5O9VPumIkSxbbzqMoMg1jeoyugC1nSSZXnYufF1Gv1W8wfHuuPYL/qdEGNO73onA==","signatures":[{"sig":"MEUCIG6BNu5CVFUg7HJo6MVb4V76Sgd9yTAszk45dfISSWxPAiEAnko6vXS/VJHieRMrfstYbAqayAyP4DrqWujuYeuUF4k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25325,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgf4dfCRA9TVsSAnZWagAAgqEP/3aPekHC2Dsc0Jr6OJ4+\n9sK2cpkhIwQQnC94g/c8E3TISs+EfudVEbjeQ1IF+gXB6fhQ7g+RIM8ShQGf\nh1TowIDduY4AdumHxS5PC6PpGFZG+JVcTnRkZ1U79NeZyLc38xxot85ljGL9\nFYr0agR/CAbwQBNFPyl5IaXKnA/KwGS0mZoPiKPUNcWISRwRKaifBMGEavO5\nVQgnn60UM0hsDzZX+PhqyKyIDhO19+lZfsCogZf81dful20EuXtwM4VrE4yo\nf+dO6rEOXLSmBr9orjVAYpl7kEqg3Jhnl0CTc+nvOBf9IqVw8+9IAhdrhVR0\nawlYATWkIp8/BiGSXVI43ITiw5nri+hOra/BKvDDoQmgx4BppQHmwAqtsKBY\nyG1GBsUiK4ghMqNvTmXid/FH6A3KBSvPdtywkwWTnxu14GDUtG+NXNPLcQUD\n6fXFlDyyWiNS5vHtYJJVPkMI9KG9YxY2DgZ3p3M/EZDCJxvVcxS4SlEkrlLS\nCtpp8BRxB986fhqSFxP+JNmMQoevLSlpqo9yAXwp3zUEcIE4BTotxTtKmMjJ\n5UKgQKPlSYEJGssh55X2lzVx4oplhDaNYnUo+iuKBuZvs4H7RDlQKRr7PoaF\nuiTURwfjEy5/gfCI740oX44DVVuwdWUSUFJdnUjsecpafSkkLWi7JbuGNS3Z\nZz+a\r\n=fdwR\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"08ed074556feb7ae15c479f8f5daae6d708b8786","scripts":{"test":"eslint ."},"_npmUser":{"name":"imcatwhocode","email":"hi@imcatwhocode.dev"},"repository":{"url":"git@git.amazingcat.net:AmazingTime/amazing-electron-ipc-router.git","type":"git"},"_npmVersion":"6.14.12","description":"Small Electron IPC router, which implements request-response pattern","directories":{},"_nodeVersion":"14.16.1","dependencies":{"nanoid":"^3.1.22"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^7.24.0","eslint-config-airbnb":"^18.2.1","eslint-plugin-import":"^2.22.1"},"_npmOperationalInternal":{"tmp":"tmp/electron-ipc-router_1.3.2_1618970462686_0.18623764538081122","host":"s3://npm-registry-packages"}},"1.3.3":{"name":"@amazingcat/electron-ipc-router","version":"1.3.3","keywords":["router","electron","ipc"],"author":{"name":"amazingcat LLC Team","email":"to@amazingcat.net"},"license":"MIT","_id":"@amazingcat/electron-ipc-router@1.3.3","maintainers":[{"name":"amazingcat-team","email":"team@amazingcat.net"},{"name":"vermorag","email":"inbox@alexv-pro.ru"}],"homepage":"https://github.com/cattr-app/electron-ipc-router#readme","bugs":{"url":"https://github.com/cattr-app/electron-ipc-router/issues"},"dist":{"shasum":"706649b262c7c5013a9b8dd7d840d81e222b99a3","tarball":"https://registry.npmjs.org/@amazingcat/electron-ipc-router/-/electron-ipc-router-1.3.3.tgz","fileCount":6,"integrity":"sha512-kIyYcK+TWSm5eFRfXjS8H+lD6c3V5pS40Zs8yK80z5qAWENC080UGa5LrsZOy+ZuEHBz1JmjG4lB46GTp0CqcQ==","signatures":[{"sig":"MEUCIQC4X81Z8EuzggUTR4X2xA6PbwD9FxlizMK5yPcvN14e5wIgdmy1SRtFcA/CcGgdApwJfUzlw4qrOuez+yfFS5s66kU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazingcat%2felectron-ipc-router@1.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":26151},"engines":{"node":"~24.21"},"gitHead":"647adce3bd09004adeecbdaf10548f18784f8150","scripts":{"test":"eslint ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0a917a33-058a-4d70-9ed6-0fe3640ef51e"}},"repository":{"url":"git+https://github.com/cattr-app/electron-ipc-router.git","type":"git"},"_npmVersion":"12.0.2","description":"Small Electron IPC router, which implements request-response pattern","directories":{},"_nodeVersion":"24.20.0","dependencies":{"nanoid":"^3.1.22"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@12.0.2+sha512.b885e890b9418fa1693544d05f53e64f9a73ec194837d4258b15fecdd692347b1dd2a517b1b0cbaf9d31cd8e92c3b70956bd2ecc72833a57b4b3098f5bfa7943","devDependencies":{"eslint":"^7.24.0","eslint-config-airbnb":"^18.2.1","eslint-plugin-import":"^2.22.1"},"_npmOperationalInternal":{"tmp":"tmp/electron-ipc-router_1.3.3_1789562007936_0.8153408949771335","host":"s3://npm-registry-packages-npm-production"}},"1.3.5":{"name":"@amazingcat/electron-ipc-router","version":"1.3.5","keywords":["router","electron","ipc"],"author":{"name":"amazingcat LLC Team","email":"to@amazingcat.net"},"license":"MIT","_id":"@amazingcat/electron-ipc-router@1.3.5","maintainers":[{"name":"amazingcat-team","email":"team@amazingcat.net"},{"name":"vermorag","email":"inbox@alexv-pro.ru"}],"homepage":"https://github.com/cattr-app/electron-ipc-router#readme","bugs":{"url":"https://github.com/cattr-app/electron-ipc-router/issues"},"dist":{"shasum":"f3b108d24d65c49c2938ac99a412535a66789f7b","tarball":"https://registry.npmjs.org/@amazingcat/electron-ipc-router/-/electron-ipc-router-1.3.5.tgz","fileCount":6,"integrity":"sha512-FpMD9PjbEGsBo1JSf+dqjTLNcqK2f/iJFoyePfD3+PPBdLqfgbskB5EYCzC627ySwkuzXPqKoEHzoiMe/PJhOw==","signatures":[{"sig":"MEUCICHIBqtwHoFSEs73l9N9jCK94yNXGBuNYc6cl7/fbo0ZAiEA5PCOb5k3kLYTpsTHvrEydGLt+P3aQ3eUBmHsovoveGI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazingcat%2felectron-ipc-router@1.3.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":26068},"engines":{"node":"~14.19"},"gitHead":"119a538410ddb7d386c3e8084c70fc5cd6965431","scripts":{"test":"eslint ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0a917a33-058a-4d70-9ed6-0fe3640ef51e"}},"repository":{"url":"git+https://github.com/cattr-app/electron-ipc-router.git","type":"git"},"_npmVersion":"11.19.0","description":"Small Electron IPC router, which implements request-response pattern","directories":{},"_nodeVersion":"24.20.0","dependencies":{"nanoid":"^3.1.22"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"npm@6.14.18+sha512.a774a3a927214ae35052a6c9060c1dbf42f73ba6ca91a49f42b43326cb2436934a2e0d20dfb739c535c55744aa4e55fd196be81b10442d524c456ab427ca1a2c","devDependencies":{"eslint":"^7.24.0","eslint-config-airbnb":"^18.2.1","eslint-plugin-import":"^2.22.1"},"_npmOperationalInternal":{"tmp":"tmp/electron-ipc-router_1.3.5_1789650862047_0.3797422367212342","host":"s3://npm-registry-packages-npm-production"}},"1.3.6":{"name":"@amazingcat/electron-ipc-router","version":"1.3.6","description":"Small Electron IPC router, which implements request-response pattern","scripts":{"test":"eslint ."},"repository":{"type":"git","url":"git+https://github.com/cattr-app/electron-ipc-router.git"},"keywords":["router","electron","ipc"],"author":{"name":"amazingcat LLC Team","email":"to@amazingcat.net"},"license":"MIT","dependencies":{"nanoid":"^3.1.22"},"devDependencies":{"eslint":"^7.24.0","eslint-config-airbnb":"^18.2.1","eslint-plugin-import":"^2.22.1"},"engines":{"node":"~14.21"},"publishConfig":{"access":"public"},"packageManager":"npm@9.9.4+sha512.37371088ba6a0ee2e16af772276277b4627f9e2fde6dca87545664bf50b8ffa95b96b6943db3e0089e1585be286b71458516b6623f60039f23187ff3b4ab9e35","gitHead":"9246dbba2568ad5bb61fedc721d4898b9053ada9","_id":"@amazingcat/electron-ipc-router@1.3.6","bugs":{"url":"https://github.com/cattr-app/electron-ipc-router/issues"},"homepage":"https://github.com/cattr-app/electron-ipc-router#readme","_nodeVersion":"24.20.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-ZzOSQF4qEJ7OUAVq+JwvpfbgTsCG2OH1WVjQ7/aQKk5TNKvyCy0ORpVn9iE1iD/WoTf8ippxephhvaZeLPPxCw==","shasum":"67ce1b35570dfd4fc07aedcbd1fb3cd5421d1813","tarball":"https://registry.npmjs.org/@amazingcat/electron-ipc-router/-/electron-ipc-router-1.3.6.tgz","fileCount":6,"unpackedSize":26066,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@amazingcat%2felectron-ipc-router@1.3.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCRlBNdjvKvf7LZHuRcqErIpNPcrZimD2v4+fKMaexWuAIgCpFpTLJYVEvAgeG/O+s8mHUlrh9GzxBRZjrnbgHg0ac="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:0a917a33-058a-4d70-9ed6-0fe3640ef51e"}},"directories":{},"maintainers":[{"name":"amazingcat-team","email":"team@amazingcat.net"},{"name":"vermorag","email":"inbox@alexv-pro.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/electron-ipc-router_1.3.6_1789652337451_0.9662613837895477"},"_hasShrinkwrap":false}},"time":{"created":"2020-02-10T14:11:45.411Z","modified":"2026-09-17T13:38:57.903Z","1.2.2":"2020-02-10T14:11:45.847Z","1.2.3":"2021-01-19T09:30:35.166Z","1.2.4":"2021-01-25T21:07:25.856Z","1.3.0":"2021-04-20T21:53:48.700Z","1.3.1":"2021-04-20T22:39:04.702Z","1.3.2":"2021-04-21T02:01:02.825Z","1.3.3":"2026-09-16T12:33:28.074Z","1.3.5":"2026-09-17T13:14:22.189Z","1.3.6":"2026-09-17T13:38:57.570Z"},"bugs":{"url":"https://github.com/cattr-app/electron-ipc-router/issues"},"author":{"name":"amazingcat LLC Team","email":"to@amazingcat.net"},"license":"MIT","homepage":"https://github.com/cattr-app/electron-ipc-router#readme","keywords":["router","electron","ipc"],"repository":{"type":"git","url":"git+https://github.com/cattr-app/electron-ipc-router.git"},"description":"Small Electron IPC router, which implements request-response pattern","maintainers":[{"name":"amazingcat-team","email":"team@amazingcat.net"},{"name":"vermorag","email":"inbox@alexv-pro.ru"}],"readme":"# Amazing Electron IPC Router\nПростой роутер, реализующий request-response паттерн при работе с Electron IPC.\n\n## Простые примеры\nПростой пример работы с IPC-роутером для общего понимания.\n\n**Main-процесс**\n```javascript\n// Получаем стандартный IPC в Electron\nconst { ipcMain } = require('electron');\n\n// Подгружаем наш IPCRouter и создаём его инстанс\nconst IPCRouter = require('amazing-electron-ipc-router');\n\n// Второй аргумент не обязателен - при его отсутствии будет присовен идентификатор по умолчанию\n// Для обращения к нему, в эндпоинтах следует не указывать routerId\nconst ipc = new IPCRouter(ipcMain, 'sampleRouterId');\n\n// Устанавливаем хэндлер для эндпойнта\n// Стоит отметить, что функция обработчика может так же быть AsyncFunction или Promise (что, в целом, одно и то же)\nipc.serve('misc/say-hi', request => {\n\n    // Производим какие-то операции над запросом\n    let greeting = `Hello, ${request.packet.body.name}!`;\n\n    // Возвращаем ответ\n    request.send(200, { greeting });\n\n});\n\n// Роутер может работать в обе стороны, то есть, как renderer, так и main-процессы могут обслуживать роуты и совершать запросы.\n// Это пример функции, выполняющей запрос, который ожидает что-то получить в ответ\nconst sendCatFace = async () => {\n\n    const result = await ipc.request('catface:sampleRouterId', { catface: '(,,◕　⋏　◕,,)' })\n    console.log(result.body.message); // выведет: Thank you for this pretty catface!\n\n};\n\n// А вот так можно сделать запрос, который не ожидает ничего получить в ответ\nipc.emit('playback/control:sampleRouterId', { action: 'NextSong' });\n```\n\n**Renderer-процесс**\n```javascript\n// Получаем стандартный IPC в Electron\nconst { ipcRenderer } = require('electron');\n\n// Подгружаем наш IPC и создаём его инстанс\nconst IPCRouter = require('amazing-electron-ipc-router');\n\n// Второй аргумент не обязателен - при его отсутствии будет присовен идентификатор по умолчанию\n// Для обращения к нему, в эндпоинтах следует не указывать routerId\nconst ipc = new IPCRouter(ipcRenderer, 'sampleRouterId');\n\n// Обслуживаем эндпойнт, который принимаешь кошачьи морды с main-процесса\nipc.serve('catface', request => {\n\n    // Выводим морду в консоль\n    console.log(request.packet.body.catface);\n\n    // Возвращаем ответ\n    request.send(200, { message: 'Thank you for this pretty catface!' });\n\n});\n\n// Функция, тыркающая эндпойнт в main-процессе\nconst sayHi = async name => {\n\n    const result = await ipc.request('misc/say-hi:sampleRouterId', { name: 'Mark' })\n    console.log(result.body); // выведет: Hello, Mark!\n\n};\n```\n\n## Как работает внутри?\nОчень муторно и костыльно, но фигли делать, не хттп же сервер на локалхосте поднимать, в самом деле? Вкратце, модуль организует связь по четырём событиям (они выполняют роль, как бы, каналов / соединений):\n\n - `ipc-req:main` - получение входящих **запросов** от Renderer-процесса\n - `ipc-res:main` - получение ответов на запросы от Renderer-процесса\n - `ipc-req:renderer` - получение входящих запросов от Main-процесса\n - `ipc-res:renderer` - получение ответов на запросы от Main-процесса\n\nПакеты являются следующими структурами:\n```javascript\n<Request> {\n\n    // Заголовок запроса\n    _header: {\n\n        // Уникальный идентификатор пакета (UUIDv4)\n        id: String<UUID>,\n\n        // IPC endpoint на который отправляется этот запрос\n        endpoint: String,\n\n    },\n\n    // Тело (данные) запроса\n    body: Object,\n\n    // Функция отправки ответа\n    send: Function\n\n}\n\n<Response> {\n\n    // Заголовок ответа\n    _header: {\n\n        // Уникальный идентификатор пакета, на который мы отвечаем (UUIDv4)\n        id: String<UUID>,\n\n        // Статус-код ответа, в случае истечения таймаута ответа, он равен -1\n        code: Number\n\n    },\n\n    // Тело (данные) ответа\n    body: Object\n\n}\n```\n\n\n## Описание API\nЗдесь приведено описание основных методов. Больше информации можно найти в JSDoc в самом коде.\n### IPCRouter.constructor(ipc)\nКонструктор класса, принимает на вход `electron.ipcMain` или `electron.ipcRenderer`.\n**Пример:**\n```javascript\nconst { ipcMain } = require('electron');\nconst IPC = require('amazing-electron-ipc-router');\nconst ipc = new IPC(ipcMain);\n```\n\n------\n\n### IPCRouter.setWebContents(wc)\nПозволяет подключить к роутеру WebContents IPC, что даёт возможность отправлять запросы из main-процесса в renderer.\n**Вызывается только в main-процессе.**\n**Пример:**\n```javascript\nconst ipc = new IPC(ipcMain);\nconst window = new BrowserWindow(..);\nipc.setWebContents(window.webContents);\n```\n\n------\n\n### IPCRouter.serve(endpoint, handler, [override = false])\nУстанавливает обработчик для эндпойнта. В качестве первого аргумента, принимает название эндпойнта (тип `String`), а в качестве обработчика может принимать `Function` (обычные функции) или `AsyncFunction` (async-функции и Native Promises).\n\nПараметр `override` отвечает за возможность перезаписи существующего обработчика. При стандартном значении (`false`), при попытке повторно установить обработчик для одного эндпойнта, функция выкинет ошибку. Если же, выставить параметр `override` в `true`, то повторный вызов функции переопределит обработчик на тот, который был передан при последнем вызове.\n\n**Пример:**\n```javascript\nipc.serve('test', async request => { ... });  // => true\nipc.serve('test', request => { ... })         // => throws Error, потому что override = false\nipc.serve('test', request => { ... }, true);  // => true, потому что override = true\n```\n\n------\n\n### IPCRouter.emit(endpoint, body)\nОтправляет запрос, не требующий ответа.\nПринимает на вход первым аргументом имя эндпойнта (`String`), вторым - тело запроса (`Object`). Обратите внимание, что тело запроса является необходимым параметром, поэтому даже если оно пустое, то это нужно явно указать (см. пример).\n\n**Пример:**\n```javascript\nipc.emit('test', { test: '1234' });  // => true, присутствуют данные в теле запроса\nipc.emit('test', {});               // => true, тело запроса пустое\nipc.emit('test');                    // => throws Error, т.к. тело запроса явно не указано\n```\n\n------\n\n### async IPCRouter.request(endpoint, body, [timeout = 30000])\nОтправляет запрос, ожидая получить на него ответ в течении заданного времени (парметр `timeout`).\nПринимает на вход первым аргументом имя эндпойнта (`String`), вторым - тело запроса (`Object`, обратите внимание, что особенность с пустым телом запроса, описанная для `IPC.emit` здесь так же справедлива), третьим - таймаут ожидания ответа в миллисекундах (`Number`, по-дефолту, равен 30000 мс, т.е. 30 секундам).\n\nДля отключения таймаута, необходимо третьим аргументом передать ноль (`Number(0)`).\n\nЭта функция является `AsyncFunction`, следовательно её следует использовать в конструкциях `async-await` или в Promise-chain. Она возвращает объект формата `Response` (описание структуры которого есть выше).\n**Пример:**\n```javascript\nasync () => {\n\n    // Запрашиваем морду кота\n    const freshCatFace = await ipc.request('catface/get', { emotion: 'smile' });\n\n    // Проверяем запрос на таймаут\n    if (freshCatFace.code === -1) console.error('Request timed out, no catface for today :( ');\n\n    // Будем считать, что код 200 означает успешное выполнение запроса\n    else if (freshCatFace.code === 200) console.log('Just look at this!', freshCatFace.body.packet.face);\n\n    // Сюда свалятся другие ошибки / статусы\n    else console.error(`Error ocurred during catface fetching, #${freshCatFace.code}`);\n};\n```\n\n------\n\n### Request.send([code], body)\nЭта функция содержится в объекте Request, и позволяет на него чёта ответить.\n\nПринимает на вход комбинацию статус-кода + тела ответа, или просто тела ответа (см. пример). В случае, если статус-код не указан, по-дефолту отправляется `200`.\n\nВозвращает `Boolean(true)`, если ответ бы отправлен.\n\n**Пример:**\n```javascript\nipc.serve('test', request => {\n\n  request.send({ meow: 'purr' }); // => true, статус-код 200\n  // или\n  request.send(200, { meow: 'purr' }); // => true, статус-код 200\n  // или\n  request.send(400, { meow: 'woof' }); // => true, статус-код 400\n  // или\n  request.send(200); // => throw Error, потому что не указано тело ответа\n\n});\n```\n\n## Контрибьют, лицензия, ту-ду и прочее\nДа а чёрт его знает, что здесь писать.\n","readmeFilename":"README.md"}