{"_id":"perfect-logger","_rev":"27-2a5a7a55b4685f1ac15c994bb6f051cd","name":"perfect-logger","dist-tags":{"latest":"4.0.1"},"versions":{"1.0.0":{"name":"perfect-logger","version":"1.0.0","keywords":["logger"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"ISC","_id":"perfect-logger@1.0.0","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"dist":{"shasum":"504246831d45b7cea4d80ab0b8dfc2a8a9fe3475","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-1.0.0.tgz","fileCount":4,"integrity":"sha512-y9EnzUvvnz51ZY4zQiUCtKhMi4K399JeRJH8nFFCs5kgFiTpBakyvHmsnXTz8uLWvCA/gy/lyI9zSnZWIStt0g==","signatures":[{"sig":"MEYCIQCNZGiHKB4dD/eK3rKVx6/8Wo3dueKtiRNdLaEIAV4ywgIhALZEWRxPl9cW/HupHh061zt1O5s8POAOzNPnr9rmQlLc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11128,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZeBnCRA9TVsSAnZWagAAH3sP/jiVkEW0LXHG2QqOP1mL\nwZ0I0uG5Tvei9qGwMTKGgs8z6O9tXHVnKmFXzY/PPxUKYvdoKwJPIgfiL4K9\n5Me54mAmQMCc0oRw4efRS3KKRqXOUBWWn8VLCvLRr/go7gppw6CNuPyM6pIR\nIChv+NlOTw4gFJnMuRPBSEKjcyvzlnGULVPf7klmaK3gUrLXt1oHF2TckKVv\n2wmuukzhDH9Yx6b0IQJC+MEPQyd9ol+s8nf5JkEEtl6ipcPIZTqcVfODh1L/\nteGopd39pbIYJeSAKffC4k+V65J6SFhgPryR6MMddg3qmhsnDopI8k8WOSGq\n/E/LLMYcA4m80S7D3fGs/j7HnGTsAYvx2ji8Z7r7cY+dirYzjjg4TqbQdN4o\nKgIGdewAOOw3OL169nl0OmOdbhPdtkKjKYZG4HyDfQVv+S7FXJucmMVI1x7R\nYLp+Eop5SwuJRtpObJ2nfT+u0UZ4xsEl3T4qwlU7+ILDC0PltghR/dFaytI8\n7AN8gS9dA/E6IMYkDovm9gBWXtbZmlKNvz2tl7SDEpUSm1AlDN4eYEr+1biC\nkQZwCkXQyuKAOuTznreuZxWK/2ulvCnQqcAL+SD4lbbU1FTUdSRef++LypAd\n29RXTOybQNjtwDNq7zMutjL6b5fVESYARNKRskeSZPpB+nxb9z/iMV4cQFSh\n4GN+\r\n=FcM4\r\n-----END PGP SIGNATURE-----\r\n"},"main":"index.js","_from":".","_shasum":"504246831d45b7cea4d80ab0b8dfc2a8a9fe3475","gitHead":"396ccc272a5d2da3f9149cc98b83a2c391fcd458","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"_npmVersion":"4.1.2","description":"A NodeJS module that can be used for logging purposes","directories":{},"_nodeVersion":"7.6.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_1.0.0_1533403239300_0.05479600527063222","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"perfect-logger","version":"1.0.1","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"ISC","_id":"perfect-logger@1.0.1","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"dist":{"shasum":"f36c5d2e68d9834f1a2661f2a82ee8ed326d9a2b","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-1.0.1.tgz","fileCount":4,"integrity":"sha512-IxkCxHOQhmdfZ2QAtTTYuPntMFz03XMMQYjJjINnd45gW1ponw4lVm9iP08l5Yo5Dc08U64XSRQA/LgNzehsGw==","signatures":[{"sig":"MEUCIQD17unop0jG4jKU5w7xPLJOSSzGC+SS7TU9GwBLtFY8gAIgb4juhtdbASu3xeUM0MT9NcZW6Wpv1TJ+A+mXBeZVWrg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11212,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZnHGCRA9TVsSAnZWagAAAVUP/iIG0ws9jGsqCqjPjAhb\nEyscAZVfbdo6CU1R7tSe551w8xhyD6PfO+xK2/7D1bai7UwKP2gCHkqYqNbc\nYLQWp4gmK1FWefC96bixPJABldHuOJBFG6f729yvWFLCOYgdnkUHktWvthPz\nJrppiIT8fNrQm9tr7+RjRUjWQyBSDzYiOFl95kHgviTlbXD47Gr1GlcdHoPY\nEWal3rm2PZakkclRnBn3izwK/JFymzZdVkPuZh6NAWtWOeFljMsDZkU2EDZC\nZ1EUpmGKVBkFDk07+KM3Mes+niN+xAZRdTpcqtX8WoNfzxg4mSxR1lr8vk84\nrRhtrNLayj/5zq1RMybGD5yYlnQp5MyIBLHC1LQ3fKkIwKffBbHEl2h4YEfA\nG0iWD4B64ar6Pvz6gnaJ4gBkakXilizEq0j+vE3qOpXZ7SEr8aR6tE19A2Zw\nUH/KKCqd8sr/6BJQQBT8i2vOmpKo5cVlJlGOol35VP22Msp7ExhhVD0J2CQO\nndkIgnnPrnUIpEDoWEBT7NsTx5xl0YfNp/j/5/dT1Kc672dfkWpfhxFqJxZq\n9im2ok284yxgzlkLjd9meC53/IflWLyLFHP4xhHQr+KcV7DnNvfljA8LvFw9\nuA32tMgANdLHxqPSB31evR5PkojNQg0s0vOtHZmLykXLVBIZTC7CDf1U/+z0\nm+QT\r\n=tpQd\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","_from":".","_shasum":"f36c5d2e68d9834f1a2661f2a82ee8ed326d9a2b","gitHead":"2967c829170714da7276326a58421118f2de28ed","scripts":{"test":"node test.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"_npmVersion":"4.1.2","description":"A NodeJS module that can be used for logging purposes","directories":{},"_nodeVersion":"7.6.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_1.0.1_1533440453974_0.008108676690632644","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"perfect-logger","version":"1.0.2","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@1.0.2","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"57a4397b03d632955bf320562e0d690cb96b0156","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-1.0.2.tgz","fileCount":5,"integrity":"sha512-pRMkInJMskqh4S6yQy06zYsJdMBmBki+cauYk//j28RXdfsXbRMgLHkl27SCBdZ/ZFoKv8m77q75nGCHNR03pQ==","signatures":[{"sig":"MEQCIEHuAnscdAXMugDBQVLutGH3x9XVddAAGMDNMqQvTWsSAiAHsgTe5TJ/AtxRHhGwc0IZa6HD5yQmgg8HZOeHraSGgg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11411,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZnXmCRA9TVsSAnZWagAAh2UP/iuGNv8calA5Jnd8+Y4c\nYXficiffZBNoy5PpvrmemhjdR4LThnDPGfPnMy3ZXVoTQ6jBPnufDi5aWvJV\n8TSQY9PWXH8/hCM0tUpSKITQzyM+RsIAsJEyXTTI/fAA99JH+Khy77QtQ85t\nwcP/KlgacVp4Mei2UiwKunZmfTceRmeQaUmn6DeM47fvH9lEPBx0/gzgwdo9\nsggr8Cf0qd4JAM7yx8uFExCGPNFQZeC4o6n/EJ8o3TOUQa3N9RF6vGudt4Cm\n2ejJVxvFiCv06DJTK4rGRwCDZL6Evi7rjCkcJkAlteKLA0XgDZx1URVXZRYK\n+ZcIZ8YHhhVWfUBl5/8qEjSV2D0E2TDgVcN8lYaDoQHS99Ss4zKKgUnMwnVp\ncUjNxglh5/ul4g3XsOsC9bV8fNuffsiSJFF4lZli1xayZMzDpXhGrcGMtmq6\nlBN24QFjLzQ4WoQ6mhsx1CE47/7GNSHJleuzM6I5rbaQjKqJdp5WpFDpouYI\n5PtUgANmuObnv5PGOqEi35OCmJCAjL3DTJfgebpMnpUPN6CEnUeTGtzejJG0\nQvF26GAZueMNpvYYlDge6AwaXZ1jWEAeUmquDYLgGXgYYfgQ0rBJggls+wnh\nUOE+9Oy9Kn11qd2HcYv9nyyREKyAehwV1XpIQqjQWHSgVTdCAWM48VweoMbU\n7bzx\r\n=rWfm\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","_from":".","_shasum":"57a4397b03d632955bf320562e0d690cb96b0156","engines":{"node":">=4.0.0"},"gitHead":"d4b1df016c174f991f0b9fc534bf59982af2cc0c","scripts":{"test":"node test.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"4.1.2","description":"A NodeJS module that can be used for logging purposes","directories":{},"_nodeVersion":"7.6.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_1.0.2_1533441510411_0.9355121241586708","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"perfect-logger","version":"1.1.0","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@1.1.0","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"907e3f76e1beb77153708768421773ab850e746f","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-1.1.0.tgz","fileCount":5,"integrity":"sha512-kftnAO/uQMmN65hsKaubaj2tv8tQawysZksrz9R9Yvdl+5KHJMxgAYrRK4jHgxCkm5xCVqFi/qi+p/lxgDmxOw==","signatures":[{"sig":"MEUCIDCFPRKuWJ0ZG16f8FJvlke/HWwGqGTG1viyXxCHDswRAiEAlyihCYDaKe73qsael1JdemT8LI6rQc8lfPrf/v/Ke8E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":15710,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZoULCRA9TVsSAnZWagAATrEP/2TgAJjNmEvnlckfY29O\nu/TTWqI8Sj5DMHnbslVQrnAxLcfB/SiDJZNytKgTxO6BMMZE8dSXuOT3KbNV\nNorKm/uXR1bb8JM9xoJhyohdYz5LRFUdtVzkG8W7nVaWfG+Y35E44rF+D0h/\n5MEMO9FR6ZfQfmcc1EaL80KeWZMmQxwUquRw8Lkjb7ZsLVnt/snZyoeBtqeb\n9JMWYEBEegV1Kp1fbSMUdrwzq2nMgKLzb02wYXdtp9P5sh8WF/5dUdMuphz3\n2Vm8APPz77Dy0iE6UO4MIokAQEWon0WtJzbiqVrarINn71Lq36964j98dk8+\nP0EEbw+LGoYHZOYuXRezLuUh4mYNqKZKW9WMUo3klALUui2Sj+e9mVn4fP6q\n0HJ6pFCuKsiwJsAEXYlNQYN83ayauG0OC9NAOuxaLUVf+4QTJq0f0/8g9sM1\n9hFH4PlJCs0GC6za2z64UoIbfVkdPip3FyAmTHMwQUBMczF+lEDseU39+yR2\ndRZ+2a5ivHl+BknXKXiDAGvrduq/KrfEqS9nKb9I1zzpeiiJQggp2gvzl/aO\n6EIxP7qYYCYN8AHxhWCN5MRAH6AL/FfHCMDR3e9I+lueauGMu/oOxqhxwUlO\nuyys6EBmQNf84LAhvVcjOZfVKX217UzRnnHXAmcqXHcqbfRRqTErX6QOppPs\nAKut\r\n=fcU0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","_from":".","_shasum":"907e3f76e1beb77153708768421773ab850e746f","engines":{"node":">=4.0.0"},"gitHead":"193653a5257bcd98fe452a39146c48f19066e4bf","scripts":{"test":"node test.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"4.1.2","description":"A NodeJS module that can be used for logging purposes","directories":{},"_nodeVersion":"7.6.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_1.1.0_1533445386720_0.9677299849031031","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"perfect-logger","version":"1.1.1","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@1.1.1","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"a497ef2d581f8cd7f9c1b0aeb528c8812a476a15","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-1.1.1.tgz","fileCount":6,"integrity":"sha512-1jzzjimgUebbCTS7GKdrHV8cWTSLy5+lBwyy6Thgq3R1OjnTYK2c4xgkpmWqze422NGkI1vzPbYxM1/pBwrMJA==","signatures":[{"sig":"MEQCIAln9o/3Ng9sVlACHf8xlDMkCf6f2GMwmGhL9o11rPRZAiAuugKWFAskayWGvq+Z1iSCS8wy+cPHdMsrNHs4tj9Btg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":16183,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZrsQCRA9TVsSAnZWagAA2AYP/RJwoc70Oz2rl96B1ocH\nH7rKI7gmlz+PWJez4Y1MdVIJ9uRNJgxfJmmkviQSii+QV6zNOP0msj0l7EOg\nUidLXqWlyx+PQeNNsnSq4L26XzZW9zLm3cTH/BynO/GQTyCkWiLw/QmfnOxg\nLaEud6cSmUDAPy40jl2p1pr3Thtk0iXUIMazVeVEhZdva0GpjZugfviRb15j\nfhyPw4W+VMdnPT0J/Y1rOGmO9KJeAWlBEzHIES8cs72PqWGE00h64fGbw92i\nGfTORiakGxEljhURJ0kOaqct1rKWOrVQV11O5iN42U2bNncea6Ym9uCtr3pD\nomSTKDWnTSCATsQ4m+yoE0aiOQI4PiANWq/L6mFHVeYC+r04CtYK/KHLxkGW\nPP/owqN1DGry+grygN+tToPts7QSFIRiNt4KiheN2o8IvaSVB6zkgoLk9Vtq\nyaAnu89CIv+cyGeTLn8gO3QLPL3nqlS62TT4T80MC+cTWG7a3GQNnT7ae8Qz\nTLpifvOsHLqdkM4H1k2JYdpWRes3skJ/p+S7CtFXhPQAt51yHUCIlFU/qKrW\ngnmh61JEhA4byOeXwpoXRmFSb05HoEDZ44bmWEbOL/5iUG4o1OxicXYInqlU\njmh1hhiUCoQqtoJTeQLDfKltxPvlxlgByynLXmEH2IiOwKT0ZT60BCE0oLo6\ncCtf\r\n=Tj4q\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","_from":".","_shasum":"a497ef2d581f8cd7f9c1b0aeb528c8812a476a15","engines":{"node":">=4.0.0"},"gitHead":"d5a0fe77d14727e9d8a8d52b26bf67833b287838","scripts":{"test":"node test.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"4.1.2","description":"A NodeJS module that can be used for logging purposes","directories":{},"_nodeVersion":"7.6.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_1.1.1_1533459215996_0.1666307677950647","host":"s3://npm-registry-packages"}},"1.2.0":{"name":"perfect-logger","version":"1.2.0","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@1.2.0","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"2444dfb9dc4ade6bcec636135b5d11a0454114a4","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-1.2.0.tgz","fileCount":6,"integrity":"sha512-NVFOu93Etu3/7si2p/ksM+LsJMQPSm+DNS2SYseKxY6fVT6eRBI8ZHibBppH2VayNTdKjZGk2DoInqLO0gljmA==","signatures":[{"sig":"MEYCIQDr0ClnESg5NXXpgTE2ot/cpNhHBPC/+akBMJpAVixrtgIhAOazHvypH2tpukvpxlb6VMYBL2eGIuIyrlEQ67o483g8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17922,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbZslUCRA9TVsSAnZWagAA0HkQAJn5IoceegSDUS830t07\nk5gS/JulsZYv5AvjLlKMSjNbHecPV8B9+C8dcMO26Ea6biFdIPr2bAN/CDNE\np02KMN8xbScMhNoLW0k8ZkkGmI0KoVAe5zG8efeh+y/4MLa3iTMPgw9uq+1Z\nxMaFqhLq1p2+qM23aUwC8b/nHFTtamZj1tK0Khr51A3O6YH4rdk6xRr4I37m\nMzENRpPOmRV1K2cZizdzYKV1Dm5sAq0de/WGbTtXgNgEeqfj9WAk8FL16wqN\nbdaTQxCNxUYw6sqi93WxEb5hmZJgg/WnAzqY/ZyBG4bym/omzEjJuWgdxXK1\nuEwFW/vm5nWKb349+iSy7ErkkDKK63nkJ8V80gnmnOa48/BpmZNVWtDFT2HN\nC69szrfaE/7Do7+utCe5sf/DY0vpbLXWiXJsVUAiVAa4ZY8ITOsDhNjepQGT\n++f9nwye30muJ4ktOFVOvf54cRIwKgoamo1+B28Q55gdUKHnFEgg/Or4OdRe\nzS/P1DfnWlon7kD8TzYCuJamvviM5zkul0ZraNuHLhIjyhJMS4z5PIiHZZjc\ncoGSOZo0PcLNBuQqLIruKDZrQBRaCL5/KnCeiDyGWpKRwyw8ZeVHK+LCUY1x\nt9YMICTjCGvV5Btq2yb+RD9yxm/J/R4Qd/SP8wvZ4QXreIUGYRZo9W9gg28d\nQsx9\r\n=kAOe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","_from":".","_shasum":"2444dfb9dc4ade6bcec636135b5d11a0454114a4","engines":{"node":">=4.0.0"},"gitHead":"08946d4bdfb3ce38936d73dd91da9c8880cd4931","scripts":{"test":"node test.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"4.1.2","description":"A NodeJS module that can be used for logging purposes","directories":{},"_nodeVersion":"7.6.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_1.2.0_1533462867953_0.6686966283343259","host":"s3://npm-registry-packages"}},"1.3.0":{"name":"perfect-logger","version":"1.3.0","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop","color-terminal","color","colour-terminal","colour","shell","xterm"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@1.3.0","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"54205e1d3b176501f8953e6ed46312321eee7ce9","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-1.3.0.tgz","fileCount":6,"integrity":"sha512-g4PRMrikBZWlB2FOznvSeDotXyxURoRb4OGiKOBxFf2dmkoL4IeB0seRiKATqB31EdzprWzcIK+cqJl13PMGOg==","signatures":[{"sig":"MEQCIBeNUVTBa/lonSFKdgqxg9254ZLjNeKcX4/xLVwFU+l0AiB91iBFgcv+E5oa7lmn4mRPYwLb76UpozMooz7Y6cMMaA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19779,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbbwvdCRA9TVsSAnZWagAAO4cP/2ziZE8KXlf30FTl/O9D\nTjVxBp61T7yQBaMO09arOUvaI/NVqxf7n8+wajyd3uPAHjQXvMRibClgC4P5\niRqFCXVrMqEU58m47WHXmlzATn4pOzhunYiKLE0Dvu/WfNHGEiwKnYC+brai\n+FOKqhKSRnVc/edRoq6lJrCLQsOzKXz184eryvLiAngWzEtb10YELqI1cRrT\nT1KHb0YPxgKaxUTgCwfTZDl551A03Qdh5brcPZ96j6iER4ruS7LK/H1k1xEB\nCQ631dXNmnpC0JkiCCZWyZyvB4X/KgOwiAzsr/yPaEWitx5OmVE318N3VMBv\nD/wCpeuMSLMt6jSdmymHGjML7k0Ann/ylV1H9XCtmwIl2H8PbxzdolgX7qjr\nDS5gefHaeC8jSP7IomOC1RgdOq0qpY6d/zERep4TEEE4pWVWmVENhY7YFL8X\nFSxIFuzKWIsOQQQ1GflG9FpXmgcZWwSMDO7DqEFQNSLUEFiiqW6/tkzojHzx\n9SjKQJ9VCn3Y10wfYNznlTa0Z9Kb+yF7I4Ftbcqrk0qXzegIiXebO62YsAHL\n5bzz6rNctVRWqWz40WbUwHg9VkMcpPpDCa/8GO+y6wvw+C4TK/fnsg/iD/32\n9ixclv+C7L9MmhRuMUZkk4AO1iioiTZ0bgiPVoTzJsNfqiXk/QirYu0qU/O7\n0PeS\r\n=m4h5\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","_from":".","_shasum":"54205e1d3b176501f8953e6ed46312321eee7ce9","engines":{"node":">=4.0.0"},"gitHead":"91ef5a90bf7488f1cf84182c17e040dfae8c4c64","scripts":{"test":"node test.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"4.1.2","description":"A NodeJS module that can be used for logging purposes","directories":{},"_nodeVersion":"7.6.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_1.3.0_1534004188596_0.7647950515072695","host":"s3://npm-registry-packages"}},"1.3.1":{"name":"perfect-logger","version":"1.3.1","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop","color-terminal","color","colour-terminal","colour","shell","xterm"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@1.3.1","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"ff8df1e93afb7acb3b7548733232d85bf5034b19","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-1.3.1.tgz","fileCount":6,"integrity":"sha512-KIljY8d/T/xTscEyEW/oXXhoaK9G3wLSNpBAs6HlKMTjPfP7cye7SMwQoN6hxsnDe0+4frP8A7TJFvY48ExsKw==","signatures":[{"sig":"MEYCIQDmJnmFrpVWlfACfB2NxsBUKi5euQp29NAfRPyr0a9DcgIhAMtyrW5Rvszo0f+M0zLywBlP/CZVdgHVWr2vFgvy4g2B","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19641,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbbwyRCRA9TVsSAnZWagAAk8MP/ioTYbL5o6w01RCPPdca\nb98GdfDJtZ0B5/DtR+9T2SdC0ViD/uULchZ5GgoJNxxMYRy2Pa8vDPVxAbM4\nBRISzCP309W8kGMm7uWXsI2qtCnn1zU2PhmHiw/qsSt7yZuMc5lUNHHt3d52\nH+SsY7VVRl3AAM+Wj6Cmqj13awvAfoshXKjUrL3JJdNN5nfVAjo6XlosNGyj\nAknOPhTbIqD69LThFSVQnRoyz/FFeXLM/B8g7BuzYFLmn+3ge8gBI7wIcdm4\nVsA4g2xcD0uvw2xDJKVM+ISWrz28t85SYj32RMGE0QKzNv9twFgCI6SyeD00\nttHpN1SAyu4vPKBNtjGvgj4oD4OY8Ui8ta31uFmhZ1hr8xofH0+4hi8pQDkE\nSPP4Cni5MpU6K9OCg9YWPWwT2lMrSvkhpCTWy3+BSTge3ABOF8Qi0ERnsBsv\nKuvjVtFndeo5NzeT3lCPQTswq8haZKPUhfitnvt7aqVHkMKsL9lQqPvFxaPp\nBNW0ih/nbOIb5EjLqAZOXvtOjxOHAR81oJNGctJEik4YJeJR0YIQEVvPaBqG\njjhpmbRIJpVOcN+bLx3u4/Sk4q2dUX4MIbyTCgoXVgexZmsSqww0eXk6T2k0\nPixyaX8rmC9N5LG468Fvkppmrap2dF+1UxxVHEgaxvzynTOj6pFVikDpCSt/\nhpXk\r\n=4h6y\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","_from":".","_shasum":"ff8df1e93afb7acb3b7548733232d85bf5034b19","engines":{"node":">=4.0.0"},"gitHead":"8bf3b9707f9f6c4426d14a6b185170b614b4e2f2","scripts":{"test":"node test.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"4.1.2","description":"A NodeJS module that can be used for logging purposes","directories":{},"_nodeVersion":"7.6.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_1.3.1_1534004369034_0.7891282210456338","host":"s3://npm-registry-packages"}},"1.3.2":{"name":"perfect-logger","version":"1.3.2","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop","color-terminal","color","colour-terminal","colour","shell","xterm"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@1.3.2","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"c466c8ee2910054a8351d5efa0f44267ad9f54c5","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-1.3.2.tgz","fileCount":6,"integrity":"sha512-SdKXAESDEdR3n9wdFaLOqrGUMo+2c1PBxrHKq+bRCFLZXkxcjGtkLhou3PZVBVhOncIldd+jSTLRjYKJufHZYw==","signatures":[{"sig":"MEUCIALh10r+qExKlADEFYI1iDZjqXPo4/ni9PtKv/1dvY53AiEAiMtqc0hNVt6meoEy+pq0UlTBA13APsdh+oss6K+/OxE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19680,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbbxloCRA9TVsSAnZWagAARnwP/2kMZ2ygClhvRFJknGfS\nn7C2f9W7Vvbx4b6a/NGGYpqREQ7iVVxDu6ue4nymd3KH9usJkoaL1cPLRr2j\n32V8FH4ZAauww2efwcxQT38Y9McDmzTXE/wjvnSno0tRo4+sDieqwE/Kpx5/\nNpc4IuKbc1Yh7fsj0RsKC+31hMyx7C8x4CjNuT1DuZb6cHMOKIzwyvXy8Eka\noU3Nxp0QkZvjrUo/hBZytZZDgIfguhwIr7YtHHbMwocc/BFDSEMQT7oj6pkr\n1uOkv+yyRRXcqOrX8UYV9Pjq+tAk4yL6447Wj8ESFEZzlniIYoWqgHr1eZF2\nyF7a919jeTjhSWE8yU3FHph1WEG7y6UggeROiDy0069tHKO+IKCWqBbOR0Ir\ndfn15Mc5oBQeevofW82w0NWBB1sPadEogq9IhhmAKuTdK8rYjapNBoGzGCqf\nhmE9zy1GnzLCLkEKI9XREWgREsaWK++R7/SAx24w8K8rChniPBoLNz4v7/qr\nIXw2XSvBvGe/7yWYJq6B5xSzaTvVn/K1XxGD37sRXPxzXtBqQc+OKvbdNkDc\nxuR2PXGyeYYNoNKVHsiihC6zR0XQAbXjeIkBjz1r1xfuTumbfwEavgwUuezj\ngZ6S6c5ABrD+E8vVHTwLqUh0nLmaRhzc73k9Idn8gBflQo6SIfp8hqDwzCgL\nkKV2\r\n=qmti\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","_from":".","_shasum":"c466c8ee2910054a8351d5efa0f44267ad9f54c5","engines":{"node":">=4.0.0"},"gitHead":"ef1c461f6533cc0792b364a996adad4e4b2eecf4","scripts":{"test":"node test.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"4.1.2","description":"A customizable logger that can be used with NodeJS application for terminal logging purposes","directories":{},"_nodeVersion":"7.6.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_1.3.2_1534007655566_0.05566807402529217","host":"s3://npm-registry-packages"}},"1.4.0":{"name":"perfect-logger","version":"1.4.0","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop","color-terminal","color","colour-terminal","colour","shell","xterm"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@1.4.0","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"580c4d9717a0712152f9b4f6c5dff39d9552d60a","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-1.4.0.tgz","fileCount":5,"integrity":"sha512-VxxpBRgIxZDyPDyCpGM74/FluvmIOT6Gyp9TIDC5Gf11Iyu5o95Ikr6UL1qa72Y+V/As2XefbqTgalBn2ieYng==","signatures":[{"sig":"MEQCIHSLcDtaqZ5/vjQf2VumdEkNueXsZgxFuQFpShQ4iHjIAiAfo3RFKoT6I1LBCjMYF/mtTbB35gtwUiTGBbryvBktMg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21719,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcF1TpCRA9TVsSAnZWagAA41EQAJjYDrfWKT9aO5D2KFHc\njAM9OekS9xKShOoHwpAJ7kEhxAzHNmwSLm9wkc3OPyLZbx5OtFggLvLfsse2\n1sW4nZdh/IKrlEA8uMcgyFHIFsPyq/4bY2NbdBhMtolyjjCKxnIpbVH0Txbd\nIOlRnLtEgjaS1YMWhcTjyfs4GtIji2i0FIG69sfbdUSZ+UByM9qwh8raEGOF\nJTcTpLpKRdvU2gz22NlC5o+ns3l+Q6pVYm3zEmf5Ia09BL5Kl1PtPlhkTkje\nLz3r1SPTpxPKhfkUNloeAVdf1NpRs/s9oazG7rYykvDeFbkEEvoQp6TplCNO\nZ4Yq1K8RoaRsER5KPPfpJY3LPMstf+iXMI+0YUkWg6l1ER4X+Kom0fI0iYY5\nV2fC+hurjhK4Y+13F3WDr/ytUeRdQgt1cSZ197Rs9scyQRUE0RGDXFeUGqhQ\n7XhAuNkSzPCrMFIxSdRfoEXfK677EBfytblIEWtDDvcMhy3QpP4+lSp7Zwhi\nlz1U72ftXnhU71y0qhUmHXySgmjXq8pdDzWfxuErjGhEPhFOWYxlAWtV23EE\nqi0V3KVgj3ECx0W3lrVusXz0TWhPikCtnh9VUCxQ9s6SI4MyB7KzIfyil+OH\ncyEsu8ZB0BUpso7sm3BLfH7cVrMn6e94US0L4/TIB/rNv9TWItlcAJCS72dj\nUxI5\r\n=enij\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","engines":{"node":">=4.0.0"},"gitHead":"b8c4ae445ca6015412a4a675c2ad9fd939496846","scripts":{"test":"node test.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"6.4.1","description":"A customizable logger that can be used with NodeJS application for terminal logging purposes","directories":{},"_nodeVersion":"8.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_1.4.0_1545032936969_0.20642632344396916","host":"s3://npm-registry-packages"}},"1.4.1":{"name":"perfect-logger","version":"1.4.1","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop","color-terminal","color","colour-terminal","colour","shell","xterm"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@1.4.1","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"ce8cf81b20bb62514e9ff4288be9adf67bb176f7","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-1.4.1.tgz","fileCount":5,"integrity":"sha512-Hl2h2zcehjRrGnGIxupjZUtrtY2oNZ2hZTD0Y4zGDfltgy4DNWmKtDLz6EpoDaMyTizlvVDapDP58c32A1krnQ==","signatures":[{"sig":"MEUCIES15jAtETmM5NWbJBJxqtU3w+zbUV5rGu3kdQhlzcqwAiEAjLokMUzQ5MpLK8uwSv9eaa+VZHQN1+eAt8sWDLVkWK4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21980,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcF91SCRA9TVsSAnZWagAAXYsP/1GSWzf7XisY1P2NGial\neIpyJxH7v/frCzjrPSG1nrBrSVFI5BVfFngCiKSDc1/Mw2lDwrcpKvguNq6z\ny4KUTLxKJBkx/izAQhAqS8WAQCysUtKzs4y5B3MgVegQz6LhY/xaxoJnAf4l\nhVBWLbskXr/cbhezPanNAgm/pl2GOeh7s1idhnE5WoNnZAPXBreMyegKn/iX\nGgNqBxkhVJgTiEluWMhdlPtcUuwBN5UssHVLDmsVqSE/aeYaX2LbDxuCdN9w\nBv9jYhJ2zf3kY5GflrpoOdXdu5K3Klis64DcT6j5kx+oMX0cS+p4gu1K/WX/\nkAkeeMf7Ac7z8T3b4lPxkpuw0oqljW9B472yJLKo/ocfCRdeIYhjtWvee/D9\nr5BLyzQLb0TmeA2nwfPsdOY/v4qF6NVXQQewAbQW1yXXiaFnnMe7uOtmlpHJ\n+BvWNMkduf1aFsXWEW3bNTgLqfhStaoHrjQtSSAoGcU6Fh7mg1sihiLm4sWs\nlg9rW75pGx5cS6qmnMfQDH9oifNCyIJ3wfVVkywQKwm3qAUKQle6msH32sZv\neAUGuHzfryyoFqxMqqVHnFsbPrCL8+Ogl/vypt1fgoR8h9KWRwGcSUkcvxAt\nRINtS6VmWaGYGMUDI0178m7BNagdIvgpfIMjZ5bvhqH7ggZCxf0E9AUzsJZ8\nND9g\r\n=55ZQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","engines":{"node":">=4.0.0"},"gitHead":"b16ed18a44402af36084c13ad977ab583230601d","scripts":{"test":"node test.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"6.4.1","description":"A customizable logger that can be used with NodeJS application for terminal logging purposes","directories":{},"_nodeVersion":"8.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_1.4.1_1545067857695_0.039746312529061356","host":"s3://npm-registry-packages"}},"1.4.2":{"name":"perfect-logger","version":"1.4.2","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop","color-terminal","color","colour-terminal","colour","shell","xterm"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@1.4.2","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"16905f1f56e20b26d6c243a228284162d8f31b32","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-1.4.2.tgz","fileCount":5,"integrity":"sha512-DStTT5luh2BFKlCJO1A3fipQ86zxnTUGxipFeaRSQJvtT7x73SmIx5GbyR5te+O581mVmq/8+uWg5DwVv0gKzw==","signatures":[{"sig":"MEUCIHiKMHBxG82+ze7eQUSeXdn9xAwFnB9LVYIqy+LYK3TsAiEAy3e2ULwfAK2rFUNTRPK7s2ap8fo84VBFNP/WYxap5UI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25667,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcHnrBCRA9TVsSAnZWagAAhpwP/2HJaQIkaScHWxLw5Rop\n6VPw7Xzr64sYrkVGJV4K/vUlNA1CxJbryWC7kTzbOI6Xz/BCz2stOqTLuQZ3\n4QuBn/0LaplfhlBz6BB4T94uZNcj4wM51TQbarf8BiVD86VmTU71hJdlUdu9\nGGYOvELSsrSMIgXGHUU/Y/k5P/61ZaEtPSYpi/obK/IL4kKwaPnsKT5R7JHH\nYUQ+ZgE2/ujrEz+tOQa3e0k/1szh4cvqSnh6Wg2yGi5x6GSD/K2bejmLpMWK\nv1QFPx34csEYe5uQPGAWeEUugrhamPZt7/YloTdNqaLpBx9z/IJC3t69MDIL\np9NA7c1tuuvOkG0NEwTttkCiJiI/4+MMwujcHhaOXiW4zFDt3n/7isvh295v\nDBDyX++zn6zzxDMJn+qQ/53rGbRDgF9haRqImeQKEskaeiHBMQTnntvpFSwL\nyD+ozW63cP7cVgzLIM5c6tdy8nLiioc+J9mJ7okbCCli/UPm9Hv3PCWzeJb9\ny+AvyUeHXpWp8iWIfP7EZrUPtf50qi6/p0U2blk9Hq2bKidRgOHAEDqqrLNQ\nu4zwVxSoAO0WCkZcWaUEsKakvzB2+4VEJUmfwFYx1KX+pyShkxBd044+ZU66\njqh4EzTZmpqahgmkvntgEBThq2dvQtDA615cyWyFYdvOR3rWQHBDd//S6t18\nC7Yv\r\n=sVXH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","engines":{"node":">=4.0.0"},"gitHead":"929be52cd2a169c3fb1b5caecec80a9e843c953a","scripts":{"test":"node test.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"6.4.1","description":"A customizable logger that can be used with NodeJS application for terminal logging purposes","directories":{},"_nodeVersion":"8.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_1.4.2_1545501376210_0.26727633688195906","host":"s3://npm-registry-packages"}},"1.4.3":{"name":"perfect-logger","version":"1.4.3","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop","color-terminal","color","colour-terminal","colour","shell","xterm"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@1.4.3","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"45be4c342a1f88df7fefbef78fd2064a91d3fe49","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-1.4.3.tgz","fileCount":6,"integrity":"sha512-iCmZ3/+XLPnN8waAu1MeNK2UqqbHKJ1QEaOs+3zuCklmFfFhR47azF/NtJJKyP1eIy29qwgKL1k5h2upuf2sAQ==","signatures":[{"sig":"MEQCIEdYVYjt+EPjqCCz3xziu+uPaJqUFbcXIkqTs6UHQAxjAiBxmpfg53AvzOUeHuLbj5PjuXsRtXHWDuNUUU/L/ui2bg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":27374,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcH4p9CRA9TVsSAnZWagAAIawP/0nsP8fr/a3FWDrGFliA\nkf+qwqjh+HDsNSLIGTNRwh3sBqO+d6zg+po16BRUo8slHu+sTds2bx0jns4h\nDokkWg3oPAjNaIT3mj4KuIoRmKS+BkPrEfajENF63o7bhPdzbLzz311rr0eC\noCnP6Ej8EJz4E7BwRLxWEx9bcJ574Vgpf1V3PJqfFD5LGyloLTa5KZfCpi++\nITmk+oYdREp5hQ7gptLcEw0HQJEpx/XzFTw6nKbWNMDTxAK4Gjv2qWWUYI51\nsOP8NyWCdNLh5rIlJtJfyteGgT+Y61I1hbNSRatOjh7yWmD1llL4EbeEFLWp\nmI/TPoTkLYl5roKW7GK7o6uiqFtdy6UCyBT4zRNaZ6SCORrZx16FAtQQqzfu\nOLTH/gI6w4FqUpHX7I9NSvA83fSQvtB7xlHHtrDpV4+DhBJZoJEA8F33tB7D\nFR13T4chjbzggP8zRxkp2cC4QVVxTZtuFvqzX1FzvfFrKxpfPfHN6Qe/y9XI\nlrRf4Y92Me6W5/gxn9m3xPRTqaePCYbUB+OZYTzquy0kaSOzVwr8qUHFL8Pi\nm24dBtZ0eeiuCGim9RmRAKE2cAokd3L8mYzb7C6/IJM/08l/6Cf1Gbprwkxr\nWP2wZ0U3MJvlHBvqdEHXAOmduaMWXlcEQeXT7reB8jDfi7jdZ0npxwr+1iOl\nUNtY\r\n=E+0L\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","engines":{"node":">=4.0.0"},"gitHead":"35aeefb923e4efe15f95fc0e931a7d3c9eceb56f","scripts":{"test":"node test.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"6.4.1","description":"A customizable logger that can be used with NodeJS application for terminal logging purposes","directories":{},"_nodeVersion":"8.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_1.4.3_1545570941344_0.8935730121734731","host":"s3://npm-registry-packages"}},"1.4.4":{"name":"perfect-logger","version":"1.4.4","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop","color-terminal","color","colour-terminal","colour","shell","xterm"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@1.4.4","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"256ffb4e1d601e3b4f51cabb3634cefc6ded180c","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-1.4.4.tgz","fileCount":6,"integrity":"sha512-VAgUajYdbsZ/2iPYT6fCex/oReiV/Kqlj8SGfMBgNO0UrvHFPojGvoGyetCR3fDAgI0Hi4C+knpKkdAgNmZ+FQ==","signatures":[{"sig":"MEUCIFKq0cAWBsA+zocKdbblZAPTnIU+Ls3rIVWyNXvT3lGrAiEA7pnGG3xmh0bYT2M1PencFhgGKfxUAgC0MxbHdOwoE+M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26954,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcH848CRA9TVsSAnZWagAAZlEP/jdTc9o8uE3IAPw9RpoV\nzKgQNkYEqwY4upLPTyiCQodiTenLek5bfi/8Yv0yDHq1VXrtOh9my8G8OKIA\n/hIRxBE90TEm+sT4j1Kpv8bdu9eL5Zn4S/RYl5tqFDOPPyhPBSNASD5AzTHR\nzSNaTHOzgqRvKnNoZBrVXUvDO7i5CN2ow7zHmPP9bjEgyKZYxTIF0Gmwu1a8\nxAYzuPgpnnXqBMIAQvu/A0FkIPoy3KnTdPvds57ZmqYVxK0vp+0kskcDpBJb\nPHGYEaIHk3bjJd4DiJTEMto0SFHo/ecNgH8X8p2PMp7isAtkKoqGFGNHCGrT\nfcJq8SA6FSVYlQmc4Lh3hv4uGMvdzkjv3vF1/Yowt4d8eMmwRIQmgXHueTUu\n81zW1/kn0pzT5fC1NF809Rt5zrTQKx0ZwLZfX9/unNpOMAKRggSN+xgaZk3c\nzg2iH9fA1A+6thIo3A73JfSuoXOIPDJVL4q5A3C71AN0xpGmKHFomWMOuSZM\nZJer8tlGN/0WJjsC8x/qWfCYe+1j+IGd0phN09Bw+gYXbd9/o/tIFq0I8s/F\nSOIUjhpkfVXwlDRdcBr4DKLpaEviAa3bARG/yp7cnRbvaTvPzoChBZ4jQSJf\n/NgJW3KIUhit+/lamPIGg1PDJcepM1N2XPVJS9i71KqVtA4YCPVIi8im3sZz\nWFCK\r\n=t3Ii\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","engines":{"node":">=4.0.0"},"gitHead":"d4d80107add0bf01fd96e96c1ce47e54f8206ae1","scripts":{"test":"node test.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"6.4.1","description":"A customizable logger that can be used with NodeJS application for terminal logging purposes","directories":{},"_nodeVersion":"8.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_1.4.4_1545588283685_0.7262105813461224","host":"s3://npm-registry-packages"}},"1.4.5":{"name":"perfect-logger","version":"1.4.5","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop","color-terminal","color","colour-terminal","colour","shell","xterm"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@1.4.5","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"3dde97335aca36c7e0f0779c59f6f4250a5bc139","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-1.4.5.tgz","fileCount":6,"integrity":"sha512-q7nDNYHiPmlv/i9W63/OaGqvQuTLO3pTRs6tG+BFcgVqAIaMivDbQ8miFoCZxiXBtsv2vChiwkRg+WHf2Hg4iw==","signatures":[{"sig":"MEYCIQCZBvO59fHe27agfVZIwBlvgzlhhP/RQ1wWD9KMoUhq+wIhAORDAmsV3smjViIrxsfzcP0YFwVjpEJBn1TC0KIyby7y","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":27350,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcH9EkCRA9TVsSAnZWagAAmssP/2rod4h50fAy4o5tzLXx\nhzf2R4xCxtt2fsTuKvs+gl/qq8TB+IX/FaEMX7L0pyzGXl17wi9BEkYhX9OF\n37VrRVNXVEZ2Qm3SV1QQ1FRRSqsgtdrhlhfRycAIGVc2GX9NTtKLi9oXp6U+\nC+wwyfRrU7JhrTq1vULadmWo92wDgt/tCyrCj9xURIREhpaY0+DTxO1NYNgu\nyrkCsNxO7ZFgbUr/W6WCQNe2j92HaNTpgp65HnhO9tOYEuTF35jCtYPH4WJS\nMVSdgc7bXhyMMq0PdJOi7wvfgkIDLd9GKP+VZWVkNiZPxb6sDhk3aOCh7zQ2\ntfT/bkKvS5AOGrJzDpPZX+jAPmJRYnyqZE1pmIjOeRoWUUYSnKt82jEGozoh\nyN51KvyDS7Pyxt7z53TKtYy/ve/N9d59i8XTuawtYbqB5f4wyYXzEP9UDXmZ\nY9xdCMQF6rDazH+95mfuldqAHWKuWykNSzdhSc9B8F3l6SKRFcPQrtdZRFJl\ntw+f0bi43mlz/Vfe9Wl4jr+gZliNxDk9GAjtBbC/FOBfLOWh2SPwF9xJHQs5\nlnf3WogRnX17lCIPDu0c4XjJz1Al37KnwdS62bel1X2v2PQUvRZOHjAI1+w9\n4Bx7oUVZiQW62d7uUy1u+ePyr0iAiXoMW6D2SqJ+KOpTLsMJLXa5SGIz8i90\n4Amq\r\n=fZtZ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","engines":{"node":">=4.0.0"},"gitHead":"f378301aae08f74124af0d27f26785c4ef3a9aaa","scripts":{"test":"node test.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"6.4.1","description":"A customizable logger that can be used with NodeJS application for terminal logging purposes","directories":{},"_nodeVersion":"8.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_1.4.5_1545589028246_0.6617783248984044","host":"s3://npm-registry-packages"}},"1.4.6":{"name":"perfect-logger","version":"1.4.6","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop","color-terminal","color","colour-terminal","colour","shell","xterm"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@1.4.6","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"ef0e68850fe8d190b8d18abab77bad7efc42aaee","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-1.4.6.tgz","fileCount":6,"integrity":"sha512-BrlQdPo6oeNly3Wx56kM3K/+3UFbkuJEdfEaVWzTmUXecUAQr4wU//n9PrPXhDToihcIremRvUFtetPxDT6BNA==","signatures":[{"sig":"MEYCIQDaFu7FRQiPMw/ZmcnPrKDL3JCOpZK//F7dZ6auQ9d+egIhAODD+aDZFTTzKTBUP3AKPKuqEU57H2xA75UEtBH8UBJh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":27349,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcH9H3CRA9TVsSAnZWagAA73oQAJBlHIKoWcNnOks3MwyB\nb1AJr7QmL96tBl6PWHcWxJt5jmy01e+u2H3cpO8lQHjFsCaP/Cdmkbkx1D3K\nOat7Yb2ZPRElJa9EkiOEyRaxHjpc6b7s9ZI2vfmqIFE9kfu3hZPwtcGYsd5r\neBPIlb0TnxVnDO/ShzgIlj0EEGg0MFjQo+PxAHXzS7FG7K2DHjb8ySDuiKCF\nCy3ElCaFi3a7ABLzlP7VF+mtSsVRJ8IHemdM1G2rhRb6ynzekMwmpKwiZdxq\nU69WWq+8XR/fi2L3QZ/99ChaN3R06p0b8vdN2fvhaXvQnjDWD05HydUc6Kau\nU3Is5AdxMXZXkDbtjFcmG6rUfiAORYKi2IJgSmJNAZYPiPJ35C44z4r2Ad/O\nXc1/ulokPuULBIjm1fJ8prVyh70LM9v4NITILC+yYYw1AU5rlM9IqZeFNXNQ\nBkr0EnxrXFdwgZl7llrrGBoS3LoJxR/UPPlNj7LRXgUWJwH8uHZMfC3BEzdl\nLcuyrnRTlXVh/lur5ddindxZvTHlMB2eWeOHqihrUDPwJG/rI98FTEBsDPXr\nQpD/GEECPLAzIdWOd6VHBB1yua0B6t1UWUmySeMrTYsm8rrMTvizc/8ujvkL\nQMjSga9KnlLd16O5qls4kbADOqoUHeFGeupkYSdxsxHM6y/wFNSBL3zyw1gy\nrWoU\r\n=gcDT\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","engines":{"node":">=4.0.0"},"gitHead":"9d40a8b5dededa1dc0fa8b0971f09335f759c8b3","scripts":{"test":"node test.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"6.4.1","description":"A customizable logger that can be used with NodeJS application for terminal logging purposes","directories":{},"_nodeVersion":"8.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_1.4.6_1545589238738_0.9742642295654338","host":"s3://npm-registry-packages"}},"1.5.0":{"name":"perfect-logger","version":"1.5.0","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop","color-terminal","color","colour-terminal","colour","shell","xterm"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@1.5.0","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"e5efe86e56fea1e115cc6a733bc88198fb6e6f7d","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-1.5.0.tgz","fileCount":6,"integrity":"sha512-AxC95ANm24zV+d7KBynPAuzP8WaCFcluiOEYrS5N0Pe8njfgknkYQdImflGMFjc/wI+S0aFtYljfl5bBIRp2yg==","signatures":[{"sig":"MEUCIQDuJJ32WJQLrnD1l4N0o4mkCt4ElbmQ5Jh4Q8d2XnF7gAIgGk4Z1+LRBRZO2lSDnf4eBTO0jq+nw+k7HzhQ8qb5AEs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":28309,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcKNb1CRA9TVsSAnZWagAAxlwP/0nl4Cp9XLKyYfNstHbB\ngNpxdY7Yu/f/CsjgirK4aHTC3ekEL4qidXhv7DRXlE7qXyLdR/mGZ+s7dBxB\ngmZukvSqEnc0Y+pkIrGZk68isTKuUHLIAn68S4QlJSqpznvmkjPvsREn1jzG\nueoZ6XHCjkbWReINtgYFV+7FQFh0bOSWirOgXQCjTkKN6obyqA1hAgK7ndoT\nK2cGN2wEnFm8gEvC3BjaAcfmTXmDlow8KCSiU6Fr/YIKSuG9L2AWx08SBRHR\n0GuDpcEM6C8c8RMVNkQFtUbBCxvJlyMEj+UA3W08wcYF7kUCqqbrOSae0diM\n0AZITXrr5c2l2gLfGybXh50B6U+veOpkqGlDG7Dthm6rHOu0PAGkyFKmE+qA\niB0JVhpRdOqRVAhuyVT62ILo+TvczKypF14AvtaMHNP5acxbUC0zjL5bMVYv\nHt6khiQwk2jiQ+hF6OdYxpNYtenCARNAkcI/BYZCvgcvUM7MZj/AAlCunDJC\nr4BMtkV3A9DuKERSMHDbXr81upgYLbE/NqdD3YSsQkSRsPDwGPJOf7My+QjB\nTS8eC9fXS/hAQtNLy/oC6LRDnrBvOfYsFkH8LQ2kQDPPV2YYCxDumNaGzV6Z\nX7uEneekaXYGXwPmg2USRoH6H7ao+XoS2BNvHjFauzK7aBZzGDMOA8AabPja\n0jmv\r\n=g4RE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","engines":{"node":">=4.0.0"},"gitHead":"15bc7d7a60242dd1ae070859a409a7ab46155c7c","scripts":{"test":"node test.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"6.4.1","description":"A customizable logger that can be used with NodeJS application for terminal logging purposes","directories":{},"_nodeVersion":"8.15.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_1.5.0_1546180341059_0.5991931322617121","host":"s3://npm-registry-packages"}},"1.5.2":{"name":"perfect-logger","version":"1.5.2","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop","color-terminal","color","colour-terminal","colour","shell","xterm"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@1.5.2","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"b3a7bdee147569601b82111b24426397ce8d2588","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-1.5.2.tgz","fileCount":7,"integrity":"sha512-mGdNBDvGzdspk+JfpbQO/iKZd7pKpMFm9Ms7OTwcdiNipxHloZQzsc64TZVC2yx6YwmXH/3XND6OIWml9yAGLA==","signatures":[{"sig":"MEQCIGPjb17dXucAjvMYePqwx4wO0hBC7F4tuS4POBdsNQWdAiB4d9H1Gka0XZyvumn9MNz11Auf+MNdP5GqT300SqIQYg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30020,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcKQySCRA9TVsSAnZWagAArEgP/RWu56LMUp3mB+Y61L5G\n5nQ/AxgwuSqGTM/TCFdptfPU9tB5Fbp+n6+TNGr6VBWoKWbPT3jUooXuj50M\n2ZTE7rL2SIU+b5nsiqM+AmCOVMmwHnpi0Ri5uhm726NWWZChHW7j0IX9fxIq\nFSJqdOt/jDdimlJZFwqNhn3BJoIty9lV8358qtDi/T06cRtuKSbaBeEdzwfL\nErEtY9zW61L0jdhfagmgkEFSzDueqSaF0wXEtUV7/PrEFXMjZK2PnIp9n2Wo\n+Sjli8Eip2p3RlaN5Fu6AaIm0GxEDLZZdAEMV04Z+zOtvOXSrZeD8R7IsWaP\nf31lBzaRl+Yq7qp29FpWA+EWt45sVkn6yDUJ6wdbshm9gkt69IH9/2krQ4qw\nG7uyiZr8Prl14fj8e8eCeNJqdlewIGzP303NXjulh+W6uPk0q+1Qfvcgpaqu\nDB2Cq6SVfKPpQ/MHYfTBlQf9KjE9E3/W3YsM2HNjwopBREDvLtowBsr50QAI\nGJQjwBjhUoQKepHXVMBp54n+pAUIIaLA3n3zCYA6GS9FEJjunthBt4hi4FBx\nlFN9KHVki2XjunOil6wcvE9LkDShZXX8kyIS6Lf0RyTBXNUXLBLdRDxusRRs\nWBATG6dLMCf3NJ6LlPTQiwmuX6EtkHiyTPnyAIKRqYawz/GLKj96aCEvVSEa\nnK5d\r\n=O+RF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","engines":{"node":">=4.0.0"},"gitHead":"2e6686d82570c369069fe893c0dd27688856be11","scripts":{"test":"node test.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"6.4.1","description":"A customizable logger that can be used with NodeJS application for terminal logging purposes","directories":{},"_nodeVersion":"8.15.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_1.5.2_1546194066133_0.27499419538118874","host":"s3://npm-registry-packages"}},"1.6.0":{"name":"perfect-logger","version":"1.6.0","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop","color-terminal","color","colour-terminal","colour","shell","xterm"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@1.6.0","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"e6f6d9acbd63ed9b76d90455f810b914c7079e22","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-1.6.0.tgz","fileCount":7,"integrity":"sha512-AL0Telkpz0INkjcdWVwJAiCEz90PY4azUDEcfduXCfsZd5sOs2YCjNGoAND38vfX6OFEDaniRUk9UvjtHm2gwg==","signatures":[{"sig":"MEYCIQDPgg/43pkHta9ZKrf5yWBo24OE+PlrjNUYPbwySsQwqgIhAMvzXUHXOeSedqhzXKW/IhFC7Hxny3hEznE8bZtBvUme","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30124,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJce4a/CRA9TVsSAnZWagAABxcP/3R/Z6TYbREp5Fz5lvnx\nKH33khxSS2Z+RvNP9qQAUn62TETJQ99MASSZCrsIDcWDMKwQnkZFeWn7Iwtn\ndxXHqiZWhmHJEuWxTgQcRpAudrOcTTeZSgh6cWddgQnQmCt2t3VYbtQiXyml\nflH59lXbCoT/RV+qx7FXS5QImhSG7GGnWmnX+xnrsQlpSuZ310L7J8MrGyHL\nvNqu2S71MAAH2l4vUOdXpkRQXzUFfFpFtfmrIGgPNhDH5aC4bccCXsTgbX/s\nfeFW2Wi5kufCdTXRv1fmm82Hc9Nsn7uri8bJSTg5ytrpDbD+a8SbJ+KjDgXZ\nzf2+Nu9hQTI+p0+Z+2OFMGdUP5v4/KnHVXWW87WAF2uy615zS6PVu/43t6ia\nZtZW+a4W7H/dZMY/xxYnqUc848PToYt3g1xpiVgBg9RnWeOkgD15xgR4PCDW\nx0tFYn7UaJs2P6bZJm+GZeVEB1TTiDzqp9wxrOhF4unfVVViYxQgagmVCMxG\nXWuYcdbMmtWY3KmGsGhyVufKsDF1knbpmAMRJcKLmKaB4Y3U/dKQC1mR5GHi\nitc6EezSMsNLme0ul3LOEaRpkZls2s5AqHX327xdPAjHO0elgJ3AJ51Bwp5Q\ncaVZfdEnb8h2RE0ovneW63fSFbo3/FlUYvgGwdANRaeJvG/eETA1HuIbRAjX\njKhb\r\n=MGss\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","engines":{"node":">=4.0.0"},"gitHead":"a702dfa44ee5d7f87b99abd0dd37bd32b4c434ca","scripts":{"test":"node test.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"6.4.1","description":"A customizable logger that can be used with NodeJS application for terminal logging purposes","directories":{},"_nodeVersion":"8.15.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_1.6.0_1551599294426_0.9276415637407465","host":"s3://npm-registry-packages"}},"1.6.1":{"name":"perfect-logger","version":"1.6.1","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop","color-terminal","color","colour-terminal","colour","shell","xterm"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@1.6.1","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"f54ebb18e383db3eba8ec98af15797540c534027","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-1.6.1.tgz","fileCount":8,"integrity":"sha512-ab7Ql82LKXoFKBNIdZHheqLpuKgp0V0NsYsGq7OLj13JMmqfsVs1Yv9ZkU24psbLpdN3ZCqg3WzWTFltMPoOOA==","signatures":[{"sig":"MEUCIFyN6Y4LJtZZwW58XUGbgiwxTdu5tF7CYIGgc/HBzIAYAiEAza9njnMaIDnzUW1cJwU2E2h8r+yvW7Iq3rXqzly++kQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30969,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJc+2wyCRA9TVsSAnZWagAA/n8P/2cPm/27jfi5koRk2CrB\nh/qgjS9REC4KlcnaqlKvhsB9Qs2dRB87gtIDMHRpzLoxrt/dWbHJOunz6ImE\nVv2p3aa+PSIfQvvZOvjlGFuFUqQoW9DO9nrTOa810OqOiEEzLu+8Aezs454M\nR/xEs3QJl/SqRDLzWGsPnL/7dAtAl7Z9AxbjwMqewDTCUcPY/jisz6pjnDrC\nEz5lUZT/Fqy8pOGIk2NmQ1f2yvRaRF03LfugGfE5tsXOT+EKgT3PKX6QD8CS\n9kix0YRATjri5MBLOp6T0VffHhGXwg+BXHBfUZWSmACmVAIReVBe1Jomk3xd\n4ENeLkDf2xwvGmkmeHWilOXq6SVA+WPhB072hPCTdMBk7QXB4eHjnAu41iJp\nJR+XLadyPqa55t7yt49CIVGKuCPuxd2SoC7G12B2066QeKMfZylLHukA1CgQ\naGAofv1jFCI78/ppmd64HZj/bpDhQN7yj4KJPf3S0gNSGeqgpV8dCUrgj9rh\nS186TkJshS3WyyhFywFOj0tzfas2Nl+bF4pA1iZ9YtkiEzzzn8/fwMcnwtMD\nG8ElhLfus26AzglmdZuNoJFGNj6wK1m5MV+jOBo0of1xZOYwV8tbkG3hmkAv\nJfmwc2EvwCvdi78KNm2ZQpqHWhgtJ9eG5U9pXAAtgC7FqoxE544smXqln2mJ\nBYS7\r\n=8M7R\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","engines":{"node":">=4.0.0"},"gitHead":"03c46625a151de3ffed323b28a1f5bddd95ccbe4","scripts":{"test":"node test.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"6.4.1","description":"A customizable logger that can be used with NodeJS application for terminal logging purposes","directories":{},"_nodeVersion":"8.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_1.6.1_1559981106200_0.27369678959447175","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"perfect-logger","version":"2.0.0","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop","color-terminal","color","colour-terminal","colour","shell","xterm"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@2.0.0","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"aac1393816fa23342d3c967a1d4b5bceabf0e2dd","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-2.0.0.tgz","fileCount":11,"integrity":"sha512-8lBJZAcjITT9sd01JIsg9NGlqDr4nWhLrvQy/xU5wGRas/x10JmWAjzqM6ugJe4gRc8IKqwmNsIf63xPbip7kA==","signatures":[{"sig":"MEUCIA5h7C9iaISsj5bU/nvJEPB268M+NI6W/qY7zT1drOfSAiEAzMtqjVcY5KlO97dftTQHxOXqvm7qv35uJ2BQAKy9was=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":28957,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeUFoYCRA9TVsSAnZWagAAn3MP/2F4Zk6XJu2GMHwKoLSK\nuaGwCdqskdLoMZ4iPvmrOzPCnWL7Fypb8lH3TMdjSWIOH5LaAyIvesjmIy8V\nPZi0osN98BZVkhIlDIwNeN5MVVRFPITAlpwImyhEE43Fjfpwfp/TCKQaxX7T\ne3LG1N3tke0Id8gWEUSOLuM7bvdAupPK8SQdqB+TE5DD2E4xBTfuHM09sj8q\nDykQLFV5yrztKt52AZSGLyB++PPWnxO7ouhvrquWfdlVQHNw9obVUZvighk7\nsl1xxOo6bYweliiKizBGa9ySxtM/90gOF8q4gCE+UkPuY7hLiGFl0MHiBWKu\nlybL3oA1hYupCzglrHoNmfxrnQ6LVA7NCV3v4yth4rkP4tJ74fRkzVWUQjq8\nvIVxRBk+QBCD2ISbVfhebQl1OsGjhqPtGfgZbfwYSKZAbIk1ZKPmLun/g/cb\nURSFpQfRJEmj4kqOyDYYrJ0plv9pr/TEKJmJjB+w4UgPKXQYSYEdR8BSjaXy\nqUQS2y/txdFgEhrVdtcc8l6A6NyeSA+N+q6rBrVgY7lf94mDMu+g09TW77et\nmCcC+xIX8EJKbKw8cmcgm0QrbSTV4Z0+b3ioiePOLHDUmvkSQLH8cpwbTv4x\ncwz+9hXRN8dAMaAIZ8ibL+/hnPYnh5PMPcPaNtl1WLfYHzu+jpqQzqfnAAgI\nFUXO\r\n=ay65\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","engines":{"node":">=4.0.0"},"gitHead":"543879eec223357c0495a74e2d8d8012ac30196d","scripts":{"test":"node test.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"6.13.4","description":"A customizable logger that can be used with NodeJS application for terminal logging purposes","directories":{},"_nodeVersion":"8.17.0","dependencies":{"fb":"^2.0.0","ejs":"^2.5.7","gulp":"^3.9.1","mysql":"^2.15.0","jquery":"^3.2.1","lodash":"^4.17.4","express":"^4.16.2","bootstrap":"^4.2.1","gulp-sass":"^3.1.0","gulp-util":"^3.0.8","ngstorage":"^0.3.11","popper.js":"^1.14.6","socket.io":"^2.2.0","gulp-clean":"^0.3.2","gulp-watch":"^4.3.11","highcharts":"^6.0.3","nodemailer":"^4.7.0","body-parser":"^1.18.2","gulp-concat":"^2.6.1","gulp-rename":"^1.2.2","gulp-uglify":"^3.0.0","font-awesome":"^4.7.0","run-sequence":"^2.2.0","gulp-uglify-es":"^0.1.8","gulp-uglifycss":"^1.0.8","perfect-logger":"^1.5.2","socket.io-client":"^2.2.0","gulp-token-replace":"^1.1.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_2.0.0_1582324247805_0.8127774637090728","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"perfect-logger","version":"2.0.1","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop","color-terminal","color","colour-terminal","colour","shell","xterm"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@2.0.1","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"11747bddca2e651e72a28d06363fc722157068d0","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-2.0.1.tgz","fileCount":11,"integrity":"sha512-MGjZ4KcKFJ0w2LOvO2kSILZMU2KUOESaIJnI4sJ6qAumEmrRHiJVPx088WgAYnZMnys6gFI2ZP2YbNTL308xkA==","signatures":[{"sig":"MEQCIHoZzgkXizEWs03S0GC/iwN+kkWMGtg2IsSzEf1iUSz9AiBUMjTWLSD4dAZlsZB/unzwxC9Hf8cLpDWBG0fLrrMbKw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":28151,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeUFs7CRA9TVsSAnZWagAA0CoP/iR7EUayc+7ro8Veo648\nYqwxNUQHUiBdhsEkGjBYd0FFV96yTntqRwwLkMY1cfOngVWy3QC6LywYrVIM\nvxDB47pCE4G4f9ltyL8kIQw7TGZDT7thDvYsGswORCCTqR2G/Jci+WLvyFw/\nQ13L8f2o3o5peSwvI7uT86eig/BQTvJMnQaMiUM34RcAcpnMBExLgXL9ig2r\noioT8BxC4dj5XlGZO9PKk4mDC3/BiO1uCHTeWbsLObm1jMNIF+Zir1818hwE\nA+k1pDtM2Ie+vg6Adgh7O8LM6YCVpNkihgPzTpVhJdjm/AWD3bE5704kB2dP\nQQt3GY4gqOqgxXL/KCLZcXNN/npvH1BvhpuN1x9VRDQdKGkBlGOgm3bKFs/Z\nsw5GFlfURqysXamUDliTSeZYhddk/RcAWE3PmDPygFG2oHINPRRmoexJv+aR\ni/JL7z+PJrWV7o+Ap9Bp7iejKl3MZvWdEWA1m0KS6szeRsu3GVhjY4s+61po\nOoV4skRTvyCyIYdgIfFDSZzF23eBhiSRIG43h/KVwPeU1Y+uedoRQtFRUbxn\no7x8stCyXHLUQAwtjPzaB313Rr3wqozdp+QS059qxVZwE+TsT6t+cFzMy9Iw\ntS8n93jEKAKzwSx9k3gjxTvo9rI6j6Pw+/XO862eeEKOA9WDDNa7s0/BJgIS\nD1k1\r\n=YX+L\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","engines":{"node":">=4.0.0"},"gitHead":"4c8bf88841898c4108acc1bf9e4e4ec725db5b02","scripts":{"test":"node test.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"6.13.4","description":"A customizable logger that can be used with NodeJS application for terminal logging purposes","directories":{},"_nodeVersion":"8.17.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_2.0.1_1582324538636_0.028707276448958652","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"perfect-logger","version":"2.1.0","keywords":["logger","nodejs","logging","logs","log","console.log","tools","module","perfect-logger","output","terminal","whileloop","color-terminal","color","colour-terminal","colour","shell","xterm"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@2.1.0","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"65898322a0f16d4478718a5616c4acec3a331eee","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-2.1.0.tgz","fileCount":11,"integrity":"sha512-LrMM0QJTfCpMJS+xmVlPcRchm6vMI9d0GgPUyQnFWuEqYWsms4R85295pkpUEt9MT2EJAnGkCxK5HsYLxQU0Ag==","signatures":[{"sig":"MEYCIQDUceCNIAnTbrHpPTx3L12ilsGSFziK9gZNV+eDU6eWcQIhAMBFeP7vnk0fp/neSMeX9jIfpNpTiD8EsZtANBdyH8RF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":29095,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiiOyHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoqQw//TeKSkdPFdGts8CjfYs6AHHgG34F8+oKUl26NUrLWKPFIoMC+\r\n0qZyu8MLrgUnH3NUFguk3QyXbmte1P/9O1/b5dHbZ3Z/OXOLas52bNyixwcK\r\nZW0B3DYjrFbrCCTuqTzOWZRuZxfyvc6ppSGfb9cYuhoDZdKr2/9DIOH1vE6K\r\nmt9Zn2BYXyxZMhQRbtwYz8KAQz6JJc4RV2oR37GiX0EfdKZPPHL31M9JjZCP\r\nI6WGmcO4LDMTa7GOtyEYuxeDByXDx7uddgmgsPN4tTeA6PkugfS9q20Yq4Z2\r\nvEJkv9+Isr0nhsmik6mDkV+8fdUCKjUN74+GdYxW5TIff/TXfY/ke3HsitDn\r\nYMcVU+adiEOLf3dTdn9DG4imlXIosJnJLLPho8gZFx+kbzQ4X2crAtoyr3BP\r\nDhV7tpPyumLXH1CU0yY+Xf7E6Yxi1C3KHAUzxNBbbKjhsmX+AVCcZCxH+A1S\r\nVYhl+54OTI1HACe510f6s8SWZdw6PpdxP+MV8bnYVBZkj5hhZJGxns3o4hMD\r\n8ofgAAeXyOS4ngtMYC/kGFyWyaacFhgcTJ+hk/J7z0pp/rsMbJoj64P9O36i\r\nnQCuKuUnJfju42baDPSAVitAfcDKIRrSnbpWGKk78L6SqwEf4uvrZC4HvMvw\r\nz92LXz/cG7jH0yERf7Vb6QC5qLKHhXvs56Q=\r\n=VitC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"","engines":{"node":">=4.0.0"},"gitHead":"166d81a000269605c690db03bbe03344fbbbf26e","scripts":{"test":"node Example.js"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"8.5.5","description":"A customizable logger that can be used with NodeJS application for terminal logging purposes","directories":{},"_nodeVersion":"16.15.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_2.1.0_1653140615255_0.4622028629698578","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"perfect-logger","version":"3.0.0","keywords":["logger","logging","typescript","isomorphic","universal","frontend","backend","zero-dependency"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@3.0.0","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"bca62f70b6ba7ec4949c27900942144a2071980b","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-3.0.0.tgz","fileCount":25,"integrity":"sha512-gm6B2zzhlxh5Bf1HCFiqRojvgPNOuJ7TOIRS5uV3ArhBYJ6/oyYTBTOzF6JkDYVe/J5YdP0elo22XtXw0JpKCg==","signatures":[{"sig":"MEYCIQDsrt9PAOfx1zbd5THBdQEI8rmpTNyo9fUHGBreRR60/gIhAPxOYWwX8bVUYAxziWQ8yarFe2jSTA+sfnOQ8FFZfCdy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49360},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=14.0.0"},"gitHead":"620887109742ad61c01bb34116568e74b5297b05","scripts":{"lint":"eslint 'src/**/*.{js,ts}' --exit-on-fatal-error","test":"jest","build":"tsc","watch":"tsc -w","release":"standard-version --skip.test","lint:fix":"eslint 'src/**/*.{js,ts}' --fix","test:watch":"jest --watch","release:alpha":"standard-version --prerelease alpha --skip.test","release:major":"standard-version --release-as major --skip.test","release:minor":"standard-version --release-as minor --skip.test","prepublishOnly":"npm run build"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"10.9.3","description":"A zero-dependency, isomorphic logger for Node.js and Browsers with plugin support.","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.38.0","ts-jest":"^29.1.0","ts-node":"^10.9.2","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.0.0","standard-version":"^9.5.0","@typescript-eslint/parser":"^5.59.0","@typescript-eslint/eslint-plugin":"^5.59.0"},"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_3.0.0_1763906370235_0.1441356541027763","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"perfect-logger","version":"4.0.0","keywords":["logger","logging","log4j","enterprise","mdc","marker","async-appender","typescript","isomorphic","universal","frontend","backend","zero-dependency"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","_id":"perfect-logger@4.0.0","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"homepage":"https://github.com/heysulo/perfect-logger#readme","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"dist":{"shasum":"91fa67136fd9496ec36ed859e498d3ac160ea7c1","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-4.0.0.tgz","fileCount":171,"integrity":"sha512-8kh7rpjjqkORzPM1hfkLBhLD1uzP65lWs7KYoBfBtTPJNZENd2LMFspK7aHptbR3A+OIxp5gVfKsCJmo9IMBJg==","signatures":[{"sig":"MEUCIQDHuuXEajp6DDc9EFECirijpQumtmul7uS37nCqHaznXgIgbnjmLzpzRI35XQ6LN2t/UYjZ9apjWycesPdCbCHTZ34=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":443809},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/esm/index.js","engines":{"node":">=14.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/esm/index.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"gitHead":"6571f12a6961cb0fe18863d7afb642f07f238686","scripts":{"lint":"eslint 'src/**/*.{js,ts}' --exit-on-fatal-error","test":"jest","build":"tsc && tsc -p tsconfig.esm.json","watch":"tsc -w","release":"standard-version --skip.test","lint:fix":"eslint 'src/**/*.{js,ts}' --fix","test:watch":"jest --watch","release:alpha":"standard-version --prerelease alpha --skip.test","release:major":"standard-version --release-as major --skip.test","release:minor":"standard-version --release-as minor --skip.test","test:coverage":"jest --coverage","test:examples":"ts-node examples/01-quick-start.ts && ts-node examples/02-hierarchical-loggers.ts && ts-node examples/03-mdc-async-context.ts && ts-node examples/04-layouts-pattern-and-json.ts && ts-node examples/05-semantic-markers.ts && ts-node examples/06-filters-pipeline.ts && ts-node examples/07-advanced-appenders.ts && ts-node examples/08-declarative-config.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"heysulo","email":"sulochana.456@live.com"},"repository":{"url":"git+https://github.com/heysulo/perfect-logger.git","type":"git"},"_npmVersion":"10.9.3","description":"Enterprise-grade, zero-dependency, isomorphic logging framework for Node.js and Browsers inspired by Log4j 2.","directories":{},"_nodeVersion":"22.20.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","eslint":"^8.38.0","ts-jest":"^29.1.0","ts-node":"^10.9.2","typescript":"^5.0.0","@types/jest":"^29.5.0","@types/node":"^18.0.0","standard-version":"^9.5.0","@typescript-eslint/parser":"^5.59.0","@typescript-eslint/eslint-plugin":"^5.59.0"},"_npmOperationalInternal":{"tmp":"tmp/perfect-logger_4.0.0_1788564837680_0.15725825296190488","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"perfect-logger","version":"4.0.1","description":"Enterprise-grade, zero-dependency, isomorphic logging framework for Node.js and Browsers inspired by Log4j 2.","main":"dist/index.js","module":"dist/esm/index.js","types":"dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/esm/index.js"},"require":{"types":"./dist/index.d.ts","default":"./dist/index.js"}}},"scripts":{"build":"tsc && tsc -p tsconfig.esm.json","watch":"tsc -w","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","test:examples":"ts-node examples/01-quick-start.ts && ts-node examples/02-hierarchical-loggers.ts && ts-node examples/03-mdc-async-context.ts && ts-node examples/04-layouts-pattern-and-json.ts && ts-node examples/05-semantic-markers.ts && ts-node examples/06-filters-pipeline.ts && ts-node examples/07-advanced-appenders.ts && ts-node examples/08-declarative-config.ts","lint":"eslint 'src/**/*.{js,ts}' --exit-on-fatal-error","lint:fix":"eslint 'src/**/*.{js,ts}' --fix","prepublishOnly":"npm run build","release":"standard-version --skip.test","release:alpha":"standard-version --prerelease alpha --skip.test","release:minor":"standard-version --release-as minor --skip.test","release:major":"standard-version --release-as major --skip.test"},"engines":{"node":">=14.0.0"},"repository":{"type":"git","url":"git+https://github.com/heysulo/perfect-logger.git"},"keywords":["logger","logging","log4j","enterprise","mdc","marker","async-appender","typescript","isomorphic","universal","frontend","backend","zero-dependency"],"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","devDependencies":{"@types/jest":"^29.5.0","@types/node":"^18.0.0","@typescript-eslint/eslint-plugin":"^5.59.0","@typescript-eslint/parser":"^5.59.0","eslint":"^8.38.0","jest":"^29.5.0","standard-version":"^9.5.0","ts-jest":"^29.1.0","ts-node":"^10.9.2","typescript":"^5.0.0"},"gitHead":"af4f7131cb1996727636cd395b8e6f85d9f5e762","_id":"perfect-logger@4.0.1","bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"homepage":"https://github.com/heysulo/perfect-logger#readme","_nodeVersion":"24.20.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-ZuD0EWj9zEDXHpgxhxgaIvrLuLmnYKyDjSo6gf+ZVaFm7KwByRPCJTrQGuzMW4/oCkGgCMA7FrQ9LGEitPIi8w==","shasum":"c0e4912c378d464030f84f12090a7e4e79cc33ca","tarball":"https://registry.npmjs.org/perfect-logger/-/perfect-logger-4.0.1.tgz","fileCount":171,"unpackedSize":443809,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/perfect-logger@4.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDnJYuHPc20moYDKP7WYNsnwH+0RyyjnG+/0I4KHs6XvwIhAKuJQLFs9CX8rIdF/3nL8Db/NnvHpPSlcOxXNMEovFsa"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e94e9105-24fb-4751-8c2d-a599ba2c1d62"}},"directories":{},"maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/perfect-logger_4.0.1_1788588405242_0.38846905090921857"},"_hasShrinkwrap":false}},"time":{"created":"2018-08-04T17:20:39.299Z","modified":"2026-09-05T06:06:45.715Z","1.0.0":"2018-08-04T17:20:39.376Z","1.0.1":"2018-08-05T03:40:54.022Z","1.0.2":"2018-08-05T03:58:30.502Z","1.1.0":"2018-08-05T05:03:06.795Z","1.1.1":"2018-08-05T08:53:36.165Z","1.2.0":"2018-08-05T09:54:28.138Z","1.3.0":"2018-08-11T16:16:28.647Z","1.3.1":"2018-08-11T16:19:29.104Z","1.3.2":"2018-08-11T17:14:15.653Z","1.4.0":"2018-12-17T07:48:57.104Z","1.4.1":"2018-12-17T17:30:57.856Z","1.4.2":"2018-12-22T17:56:16.607Z","1.4.3":"2018-12-23T13:15:41.468Z","1.4.4":"2018-12-23T18:04:43.883Z","1.4.5":"2018-12-23T18:17:08.423Z","1.4.6":"2018-12-23T18:20:38.852Z","1.5.0":"2018-12-30T14:32:21.225Z","1.5.2":"2018-12-30T18:21:06.238Z","1.6.0":"2019-03-03T07:48:14.594Z","1.6.1":"2019-06-08T08:05:06.377Z","2.0.0":"2020-02-21T22:30:47.929Z","2.0.1":"2020-02-21T22:35:38.737Z","2.1.0":"2022-05-21T13:43:35.422Z","3.0.0":"2025-11-23T13:59:30.480Z","4.0.0":"2026-09-04T23:33:57.819Z","4.0.1":"2026-09-05T06:06:45.386Z"},"bugs":{"url":"https://github.com/heysulo/perfect-logger/issues"},"author":{"name":"Sulochana Kodituwakku","email":"sulochana.456@live.com"},"license":"MIT","homepage":"https://github.com/heysulo/perfect-logger#readme","keywords":["logger","logging","log4j","enterprise","mdc","marker","async-appender","typescript","isomorphic","universal","frontend","backend","zero-dependency"],"repository":{"type":"git","url":"git+https://github.com/heysulo/perfect-logger.git"},"description":"Enterprise-grade, zero-dependency, isomorphic logging framework for Node.js and Browsers inspired by Log4j 2.","maintainers":[{"name":"heysulo","email":"sulochana.456@live.com"}],"readme":"# perfect-logger\n\n[![npm version](https://img.shields.io/badge/version-4.0.0-blue.svg)](https://www.npmjs.com/package/perfect-logger)\n[![CI](https://github.com/heysulo/perfect-logger/actions/workflows/ci.yml/badge.svg)](https://github.com/heysulo/perfect-logger/actions/workflows/ci.yml)\n[![tests](https://img.shields.io/badge/tests-252%20passed-brightgreen.svg)]()\n[![coverage](https://img.shields.io/badge/coverage-99%25-brightgreen.svg)]()\n[![dependencies](https://img.shields.io/badge/dependencies-zero-brightgreen.svg)]()\n[![types](https://img.shields.io/badge/TypeScript-strict-blue.svg)]()\n[![license](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE)\n\nAn enterprise-grade, zero-dependency, isomorphic logging framework for TypeScript and JavaScript applications. Designed with the architectural rigor of **Apache Log4j 2** and the ergonomic clarity of **SLF4J / Logback**, `perfect-logger` brings battle-tested logging patterns to Node.js and modern browsers.\n\n---\n\n## Highlights\n\n* 🚀 **Zero Dependencies**: Pure TypeScript/JavaScript with absolutely zero external runtime dependencies.\n* 🌐 **Truly Isomorphic**: Consistent API across Node.js runtimes and modern browsers.\n* 🌳 **Hierarchical Logger Tree**: Dot-notated logger names (e.g. `api.services.auth`) with level inheritance and configurable additivity bubbling.\n* 🧩 **Decoupled Layouts**: Distinct `PatternLayout` (Log4j conversion specifiers) and `JsonLayout` (structured JSON with custom field mappings and ISO8601/epoch timestamps).\n* 🧵 **Mapped Diagnostic Context (MDC)**: Automatic context propagation across async call stacks via Node.js `AsyncLocalStorage` with browser fallback.\n* 🏷️ **First-Class Markers**: Semantic tagging (`SECURITY`, `AUDIT`, `PERF`) with hierarchical parent-child relationships and containment queries.\n* 🎛️ **Tri-State Filter Pipeline**: `ACCEPT`, `DENY`, and `NEUTRAL` decisions via `ThresholdFilter`, `MarkerFilter`, `RegexFilter`, `ContextFilter`, and `CompositeFilter`.\n* ⚡ **High-Throughput Appenders**:\n  * **`AsyncAppender`**: Decouples logging I/O to background workers with bounded queues and overflow policies (`DISCARD`, `DISCARD_OLDEST`, `BLOCK`).\n  * **`RollingFileAppender`**: Size- and time-based rotation (daily/hourly), automatic pruning (`maxFiles`), and native gzip compression (`compress: true`).\n  * **`StreamAppender`**: High-throughput writing directly to `process.stdout`, `process.stderr`, or any Node.js `WritableStream`.\n  * **`HttpAppender`**: Zero-dependency remote log transport using Node.js native `http`/`https` or browser `fetch`, batching, and exponential retry.\n  * **`ConsoleAppender`**: Colored, formatted terminal/browser console output.\n  * **`CallbackAppender`**: Custom programmatic hooks for monitoring, metrics, or test asserting.\n* ⚙️ **Declarative Configuration**: Zero-code setup with `logger.config.json` or `logger.config.js`, auto-configuration, and runtime environment variable interpolation (`${env:LOG_LEVEL:-INFO}`).\n* 🛡️ **TypeScript Strict**: 100% typed, strict null checks, zero `any`, and built-in `.d.ts` + declaration maps for instant IDE navigation.\n* 📦 **Dual Publishing**: Native CommonJS and modern ESM output.\n\n---\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Quick Start](#quick-start)\n- [Executable Examples](#executable-examples)\n- [Core Architecture](#core-architecture)\n  - [Hierarchical Loggers & Additivity](#hierarchical-loggers--additivity)\n  - [Mapped Diagnostic Context (MDC)](#mapped-diagnostic-context-mdc)\n  - [Semantic Markers](#semantic-markers)\n  - [Tri-State Filters](#tri-state-filters)\n  - [Layouts](#layouts)\n  - [Appenders](#appenders)\n- [Declarative Configuration](#declarative-configuration)\n- [Performance & Best Practices](#performance--best-practices)\n- [API Reference](#api-reference)\n- [License](#license)\n\n---\n\n## Installation\n\n```bash\n# npm\nnpm install perfect-logger\n\n# yarn\nyarn add perfect-logger\n\n# pnpm\npnpm add perfect-logger\n```\n\n---\n\n## Quick Start\n\n### Basic Usage\n\n```typescript\nimport { LogManager, ConsoleAppender, LogLevel } from 'perfect-logger';\n\n// 1. Configure the root logger\nLogManager.configure({\n    minLevel: LogLevel.INFO,\n    appenders: [new ConsoleAppender()],\n});\n\n// 2. Obtain a logger instance\nconst logger = LogManager.getLogger('app.server');\n\n// 3. Log messages with context and errors\nlogger.info('Server started successfully', { port: 8080 });\nlogger.warn('High memory usage detected', { memoryUsageMb: 1024 });\nlogger.error('Failed to connect to database', new Error('Connection refused'));\n```\n\n### Production Enterprise Setup\n\n```typescript\nimport {\n    LogManager,\n    StreamAppender,\n    RollingFileAppender,\n    HttpAppender,\n    AsyncAppender,\n    JsonLayout,\n    PatternLayout,\n    LogLevel,\n    Markers,\n    OverflowPolicy,\n} from 'perfect-logger';\n\nLogManager.configure({\n    minLevel: LogLevel.INFO,\n    root: {\n        appenders: [\n            // High-performance stdout with JSON layout\n            new StreamAppender({\n                layout: new JsonLayout({ pretty: false }),\n            }),\n            // Asynchronous rolling file with gzip compression\n            new AsyncAppender({\n                queueSize: 10000,\n                overflowPolicy: OverflowPolicy.DISCARD_OLDEST,\n                appender: new RollingFileAppender({\n                    logDirectory: './logs',\n                    fileName: 'application.log',\n                    maxSize: 50 * 1024 * 1024, // 50MB\n                    maxFiles: 10,\n                    compress: true, // Native gzip compression\n                    layout: new PatternLayout({\n                        pattern: '%d{ISO8601} [%p] [%c] %X{requestId} - %m%ex%n',\n                    }),\n                }),\n            }),\n        ],\n    },\n    loggers: {\n        // Specific logger with dedicated HTTP appender for security audits\n        'security': {\n            level: LogLevel.DEBUG,\n            additivity: true, // Also bubbles to root appenders\n            appenders: [\n                new HttpAppender({\n                    url: 'https://logs.example.com/ingest',\n                    batchSize: 100,\n                    batchInterval: 2000,\n                    headers: { 'Authorization': 'Bearer YOUR_TOKEN' },\n                }),\n            ],\n        },\n    },\n});\n```\n\n---\n\n## Executable Examples\n\nA complete, runnable test suite of TypeScript examples is available in the [`examples/`](./examples) directory. You can run any example directly using `npx ts-node`:\n\n| Example | Feature Area | Command |\n| :--- | :--- | :--- |\n| [`01-quick-start.ts`](./examples/01-quick-start.ts) | Out-of-the-box `defaultLogger`, central `LogManager.configure()`, log levels, metadata, error handling | `npx ts-node examples/01-quick-start.ts` |\n| [`02-hierarchical-loggers.ts`](./examples/02-hierarchical-loggers.ts) | Dot-notated hierarchical tree (`api.services.auth`), level inheritance, additivity bubbling, and isolation | `npx ts-node examples/02-hierarchical-loggers.ts` |\n| [`03-mdc-async-context.ts`](./examples/03-mdc-async-context.ts) | Mapped Diagnostic Context (MDC) across asynchronous calls via `AsyncLocalStorage` with concurrency isolation | `npx ts-node examples/03-mdc-async-context.ts` |\n| [`04-layouts-pattern-and-json.ts`](./examples/04-layouts-pattern-and-json.ts) | Decoupled `PatternLayout` (conversion specifiers) and `JsonLayout` (NDJSON / Datadog / ELK structured logs) | `npx ts-node examples/04-layouts-pattern-and-json.ts` |\n| [`05-semantic-markers.ts`](./examples/05-semantic-markers.ts) | Semantic markers (`Markers.SECURITY`), hierarchical marker trees, and `MarkerFilter` routing | `npx ts-node examples/05-semantic-markers.ts` |\n| [`06-filters-pipeline.ts`](./examples/06-filters-pipeline.ts) | Tri-state filter pipeline (`ACCEPT`, `DENY`, `NEUTRAL`), `RegexFilter` noise reduction, and VIP bypass | `npx ts-node examples/06-filters-pipeline.ts` |\n| [`07-advanced-appenders.ts`](./examples/07-advanced-appenders.ts) | High-performance `StreamAppender`, non-blocking `AsyncAppender`, `RollingFileAppender`, and `CallbackAppender` | `npx ts-node examples/07-advanced-appenders.ts` |\n| [`08-declarative-config.ts`](./examples/08-declarative-config.ts) | Zero-code setup with [`logger.config.json`](./examples/logger.config.json), dynamic env interpolation (`${env:VAR:-default}`) | `npx ts-node examples/08-declarative-config.ts` |\n\n---\n\n## Core Architecture\n\n```\n                                    +--------------------+\n                                    |    Application     |\n                                    +--------------------+\n                                              |\n                                              v\n                                    +--------------------+\n                                    |     LogManager     | (Global Filters, Config)\n                                    +--------------------+\n                                              |\n                                              v\n                              +--------------------------------+\n                              |         Logger Tree            |\n                              |   root                         |\n                              |    └── api                     |\n                              |         └── api.auth           |\n                              +--------------------------------+\n                                       /              \\\n                                      v                v\n                             +----------------+  +----------------+\n                             |     Logger     |  |     Logger     | (Logger Filters, MDC, Context)\n                             +----------------+  +----------------+\n                                     |                   | (Additivity)\n                                     +---------+---------+\n                                               |\n                                               v\n                                    +--------------------+\n                                    |     Appender       | (Appender Filters, Batching)\n                                    +--------------------+\n                                               |\n                                               v\n                                    +--------------------+\n                                    |      Layout        | (PatternLayout / JsonLayout)\n                                    +--------------------+\n                                               |\n                                               v\n                                    +--------------------+\n                                    | Output Destination | (Console / File / Stream / HTTP)\n                                    +--------------------+\n```\n\n---\n\n### Hierarchical Loggers & Additivity\n\nLoggers form a hierarchical dot-separated namespace tree. For example, `api.auth` is a child of `api`, which is a child of `root`.\n\n* **Level Inheritance**: If `api.auth` does not define an explicit level, it inherits from `api`. If `api` has no level, it inherits from `root`.\n* **Additivity**: By default, logs written to a child logger bubble up to the appenders of all ancestor loggers (`additivity: true`). Set `additivity: false` to restrict output strictly to that logger's appenders.\n\n```typescript\nconst authLogger = LogManager.getLogger('api.auth');\nauthLogger.setAdditivity(false); // Do not bubble up to 'api' or 'root'\n```\n\n#### Guard Methods\n\nAvoid unnecessary computation or string interpolations when a log level is not enabled:\n\n```typescript\nif (logger.isDebugEnabled()) {\n    logger.debug(`Complex calculation: ${expensiveOperation()}`);\n}\n\nlogger.isTraceEnabled();\nlogger.isInfoEnabled();\nlogger.isWarnEnabled();\nlogger.isErrorEnabled();\nlogger.isFatalEnabled();\n```\n\n---\n\n### Mapped Diagnostic Context (MDC)\n\nModeled after Log4j's `ThreadContext` and SLF4J's `MDC`, `perfect-logger` provides asynchronous context propagation. Context values automatically bind to all log entries executed within an async flow without manual parameter passing:\n\n```typescript\nimport { MDC, LogManager } from 'perfect-logger';\n\nconst logger = LogManager.getLogger('order-service');\n\n// Context is bound to all synchronous & asynchronous operations within MDC.run()\nawait MDC.run({ requestId: 'req-abc-123', userId: 42 }, async () => {\n    logger.info('Processing order checkout'); // Includes requestId and userId in context!\n    \n    await processPayment(); // Still retains requestId and userId!\n});\n```\n\nYou can also dynamically manipulate the current async context:\n\n```typescript\nMDC.put('tenantId', 'acme-corp');\nconst tenant = MDC.get<string>('tenantId');\nMDC.remove('tenantId');\nMDC.clear();\n```\n\n---\n\n### Semantic Markers\n\nMarkers allow semantic categorisation of log events across namespaces (e.g. for audit compliance, security audits, or performance metrics). Markers can also have hierarchical parents:\n\n```typescript\nimport { MarkerManager, Markers } from 'perfect-logger';\n\n// Built-in presets\nlogger.info(Markers.SECURITY, 'User failed 2FA verification');\nlogger.info(Markers.AUDIT, 'User role updated to admin');\nlogger.info(Markers.PERF, 'Query took 1240ms');\n\n// Custom hierarchical markers\nconst dbMarker = MarkerManager.getMarker('DATABASE');\nconst sqlMarker = MarkerManager.getMarker('SQL', dbMarker);\n\nlogger.debug(sqlMarker, 'SELECT * FROM users');\n\n// Containment check\nconsole.log(sqlMarker.contains(dbMarker)); // true\n```\n\n---\n\n### Tri-State Filters\n\nFilters return one of three states:\n* `FilterResult.ACCEPT`: The entry is processed immediately, bypassing downstream checks.\n* `FilterResult.DENY`: The entry is dropped immediately.\n* `FilterResult.NEUTRAL`: The filter does not make a final decision; evaluation continues down the pipeline.\n\nFilters can be applied globally in `LogManager`, on individual `Logger` nodes, or on specific `Appender` instances.\n\n| Filter | Description |\n| :--- | :--- |\n| `ThresholdFilter` | Evaluates severity against a minimum threshold level. |\n| `MarkerFilter` | Matches against a specific `Marker` (including parent markers). |\n| `RegexFilter` | Matches the log message against a regular expression. |\n| `ContextFilter` | Matches against MDC/context keys using values or predicates. |\n| `CompositeFilter` | Chains multiple filters together. |\n\n```typescript\nimport { ContextFilter, RegexFilter, CompositeFilter, FilterResult } from 'perfect-logger';\n\n// Drop logs containing sensitive credit card numbers\nconst filter = new RegexFilter({\n    regex: /\\b(?:\\d[ -]*?){13,16}\\b/,\n    onMatch: FilterResult.DENY,\n    onMismatch: FilterResult.NEUTRAL,\n});\n\n// Filter by context tenant\nconst tenantFilter = new ContextFilter({\n    key: 'tenant',\n    value: 'enterprise',\n    onMatch: FilterResult.ACCEPT,\n    onMismatch: FilterResult.DENY,\n});\n```\n\n---\n\n### Layouts\n\nLayouts separate formatting logic from output destinations.\n\n#### `PatternLayout`\n\nSupports standard Log4j conversion specifiers:\n\n| Specifier | Description | Example Output |\n| :--- | :--- | :--- |\n| `%d`, `%d{ISO8601}`, `%d{YYYY-MM-DD}` | Formatted timestamp | `2026-09-05T00:30:00.000Z` |\n| `%p`, `%level` | Log level name | `INFO`, `ERROR` |\n| `%c`, `%c{1}`, `%logger` | Logger category/namespace | `api.auth` or `auth` (with `{1}`) |\n| `%m`, `%msg` | The log message | `Operation successful` |\n| `%marker` | Marker name | `[SECURITY]` |\n| `%X{key}` | Context / MDC variable | `req-123` |\n| `%ex`, `%throwable` | Formatted error stack trace | `Error: failure\\n  at ...` |\n| `%n` | Platform newline | `\\n` |\n\n```typescript\nimport { PatternLayout } from 'perfect-logger';\n\nconst layout = new PatternLayout({\n    pattern: '%d{ISO8601} [%p] [%c{1}] %marker %X{requestId} - %m%ex%n',\n});\n```\n\n#### `JsonLayout`\n\nFormats entries into structured JSON for ingestion by Elasticsearch, Datadog, CloudWatch, or Splunk:\n\n```typescript\nimport { JsonLayout } from 'perfect-logger';\n\nconst layout = new JsonLayout({\n    pretty: false,\n    timestampFormat: 'iso', // or 'epoch'\n    includeContext: true,\n    includeError: true,\n    fieldNames: {\n        timestamp: '@timestamp',\n        level: 'log.level',\n        message: 'message',\n    },\n});\n```\n\n---\n\n### Appenders\n\n#### `AsyncAppender`\n\nWraps any target appender to perform logging asynchronously in the background. Protects application throughput with a bounded queue and customizable overflow policy:\n\n```typescript\nimport { AsyncAppender, OverflowPolicy, FileAppender } from 'perfect-logger';\n\nconst asyncAppender = new AsyncAppender({\n    appender: new FileAppender({ fileName: 'app.log' }),\n    queueSize: 5000,\n    overflowPolicy: OverflowPolicy.DISCARD_OLDEST, // Or BLOCK, DISCARD\n});\n```\n\n#### `RollingFileAppender`\n\nSupports size-based rotation, time-based rotation (daily/hourly), automatic retention pruning (`maxFiles`), and native gzip compression:\n\n```typescript\nimport { RollingFileAppender } from 'perfect-logger';\n\nconst fileAppender = new RollingFileAppender({\n    logDirectory: './logs',\n    fileName: 'app.log',\n    maxSize: 10 * 1024 * 1024, // 10MB\n    maxFiles: 5,               // Keep 5 oldest archives\n    compress: true,            // Gzip archives (.gz)\n    rotation: 'daily',         // 'daily' or 'hourly'\n});\n```\n\n#### `StreamAppender`\n\nWrites directly to any Node.js `WritableStream`, such as `process.stdout` or `process.stderr`:\n\n```typescript\nimport { StreamAppender, JsonLayout } from 'perfect-logger';\n\nconst stdoutAppender = new StreamAppender({\n    stream: process.stdout,\n    layout: new JsonLayout(),\n});\n```\n\n#### `HttpAppender`\n\nSends batches of logs over HTTP/HTTPS to remote endpoints. Uses Node.js native `http`/`https` or browser `fetch` with zero external dependencies:\n\n```typescript\nimport { HttpAppender } from 'perfect-logger';\n\nconst httpAppender = new HttpAppender({\n    url: 'https://logging.internal.net/v1/logs',\n    method: 'POST',\n    batchSize: 50,\n    batchInterval: 3000,\n    maxRetries: 3,\n    retryDelay: 1000,\n    headers: {\n        'Content-Type': 'application/json',\n        'X-API-Key': 'secret',\n    },\n});\n```\n\n---\n\n## Declarative Configuration\n\nYou can configure `perfect-logger` entirely through a configuration file (`logger.config.json` or `logger.config.js`) placed in your project root.\n\n### Automatic Configuration\n\nCalling `LogManager.autoConfigure()` automatically searches for `logger.config.json` or `logger.config.js`. If neither exists, it provides safe defaults (Console in development, Stream with JSON in production).\n\n```typescript\nimport { LogManager } from 'perfect-logger';\n\n// Automatically loads logger.config.json if present\nLogManager.autoConfigure();\n```\n\n### Example `logger.config.json`\n\nSupports runtime environment variable expansion via `${env:NAME}` or `${env:NAME:-default}`:\n\n```json\n{\n  \"appenders\": {\n    \"console\": {\n      \"type\": \"Console\",\n      \"minLevel\": \"${env:LOG_LEVEL:-INFO}\",\n      \"layout\": {\n        \"type\": \"Pattern\",\n        \"pattern\": \"%d{ISO8601} [%p] [%c] - %m%ex%n\"\n      }\n    },\n    \"file\": {\n      \"type\": \"RollingFile\",\n      \"minLevel\": \"WARN\",\n      \"logDirectory\": \"./logs\",\n      \"fileName\": \"errors.log\",\n      \"maxSize\": 10485760,\n      \"maxFiles\": 5,\n      \"compress\": true,\n      \"layout\": {\n        \"type\": \"Json\",\n        \"pretty\": false\n      }\n    }\n  },\n  \"root\": {\n    \"level\": \"INFO\",\n    \"appenders\": [\"console\"]\n  },\n  \"loggers\": {\n    \"api.payments\": {\n      \"level\": \"DEBUG\",\n      \"appenders\": [\"file\"],\n      \"additivity\": true\n    }\n  }\n}\n```\n\n---\n\n## Performance & Best Practices\n\n1. **Use `AsyncAppender` for File & Network I/O**: Shield application threads from disk latency or remote network hiccups by wrapping slow appenders in `AsyncAppender`.\n2. **Leverage Level Guards**: Guard expensive string constructions or serialization with `logger.isDebugEnabled()`.\n3. **Flush on Process Exit**: Ensure all buffered logs are flushed when your Node.js application shuts down:\n   ```typescript\n   process.on('SIGTERM', async () => {\n       await LogManager.shutdown();\n       process.exit(0);\n   });\n   ```\n4. **Prefer `StreamAppender` in Containerized Environments**: For Docker and Kubernetes, write structured JSON directly to `process.stdout` using `StreamAppender` and `JsonLayout`.\n\n---\n\n## API Reference\n\n### Exported Classes & Singletons\n\n* **`defaultLogger`**: Pre-configured root default logger instance for immediate out-of-the-box logging.\n* **`logManager` / `LogManager`**: Central configuration registry, singleton instance, static helpers (`configure()`, `getLogger()`, `getRootLogger()`, `flush()`, `shutdown()`, `autoConfigure()`).\n* **`Logger`**: Hierarchical logger with level evaluation, guard methods, context merging, and appender dispatching.\n* **`MDC`**: Mapped Diagnostic Context for async tracing (`run()`, `put()`, `get()`, `remove()`, `clear()`, `getContext()`, `getCopyOfContextMap()`).\n* **`MarkerManager` / `Markers`**: Marker creation, parent-child inheritance, and standard semantic presets (`AUDIT`, `SECURITY`, `PERF`, `DATABASE`).\n* **Appenders**: `ConsoleAppender`, `FileAppender`, `RollingFileAppender`, `StreamAppender`, `HttpAppender`, `AsyncAppender`, `CallbackAppender`, `JsonAppender`, `BaseAppender`.\n* **Layouts**: `PatternLayout`, `JsonLayout`.\n* **Filters**: `ThresholdFilter`, `MarkerFilter`, `RegexFilter`, `ContextFilter`, `CompositeFilter`.\n* **Configuration**: `ConfigLoader` declarative config parser and file auto-discovery.\n* **Types & Constants**: `LogLevel` (`TRACE = 0`..`FATAL = 5`), `FilterResult` (`ACCEPT = 1`, `NEUTRAL = 0`, `DENY = -1`), `OverflowPolicy` (`DISCARD`, `DISCARD_OLDEST`, `BLOCK`).\n\n---\n\n## Dual Package Support (CJS & ESM)\n\n`perfect-logger` ships with both CommonJS and ECMAScript Modules (ESM):\n\n```typescript\n// ESM / TypeScript\nimport { LogManager, LogLevel } from 'perfect-logger';\n\n// CommonJS\nconst { LogManager, LogLevel } = require('perfect-logger');\n```\n\n---\n\n## License\n\n[MIT](./LICENSE) © Sulochana Kodituwakku\n","readmeFilename":"README.md"}