{"_id":"logkitten","_rev":"9-1076696d9a75a7c28fb05a05f1593b71","name":"logkitten","dist-tags":{"latest":"1.3.3"},"versions":{"1.0.1":{"name":"logkitten","version":"1.0.1","keywords":["logcat","cli","android","android studio","ios","Console.app","console","log","logs","logging"],"author":{"name":"Paweł Trysła","email":"zamotany.oss@gmail.com"},"license":"MIT","_id":"logkitten@1.0.1","maintainers":[{"name":"yaroslavs","email":"yaroslavs@wix.com"}],"contributors":[{"name":"Yaroslav Serhieiev","email":"noomorph@gmail.com"}],"homepage":"https://github.com/wix-incubator/logkitten","bugs":{"url":"https://github.com/wix-incubator/logkitten/issues"},"bin":{"logkitten":"bin/logkitten.js"},"dist":{"shasum":"3ed1040c5d0f41a6e22196ce8e38db2953b1a365","tarball":"https://registry.npmjs.org/logkitten/-/logkitten-1.0.1.tgz","fileCount":61,"integrity":"sha512-6JxQBxPaFILKS3MpqM/oKR8cjRfbVBqq8LWALpVYKS/8yHon18nvNAurU3h88DEGQ1lMaWMuv2zdbd18O9Zz1A==","signatures":[{"sig":"MEUCIFwo/Y6IVzf4wBx0kMD67tBsvxvzn7ZUHOCi9suDABCDAiEA7I1+VpFLxp+oJyzeGboAH55580ZcYcQqYDGnk+P5qoo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113229},"jest":{"testRegex":"/__tests__/.*\\.(test|spec)\\.ts?$"},"main":"build/api.js","types":"./build/api.d.ts","gitHead":"6ad798af19e8ce8f85abac2de7feb3066fb7f72e","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/git","@semantic-release/github"],"branches":["master"]},"scripts":{"lint":"eslint --ext '.js,.ts' ./src","test":"jest","prepare":"yarn build:source && yarn build:def","build:def":"tsc --emitDeclarationOnly","typecheck":"tsc --noEmit","build:source":"babel src --out-dir build --extensions '.js,.ts' --ignore '**/__tests__/**' --source-maps --delete-dir-on-start"},"_npmUser":{"name":"yaroslavs","actor":{"name":"yaroslavs","type":"user","email":"yaroslavs@wix.com"},"email":"yaroslavs@wix.com"},"repository":{"url":"git+https://github.com/wix-incubator/logkitten.git","type":"git"},"_npmVersion":"10.9.2","description":"Display pretty Android and iOS logs without Android Studio or Console.app, with intuitive Command Line Interface.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"dayjs":"^1.8.22","yargs":"^15.0.0","ansi-fragments":"^0.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"jest":"^30.0.0","eslint":"^8.57.0","@babel/cli":"^7.24.0","babel-jest":"^30.0.0","typescript":"~5.1.0","@babel/core":"^7.24.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","@types/yargs":"^15.0.0","semantic-release":"^22.0.5","@babel/preset-env":"^7.24.0","eslint-plugin-jest":"^27.0.0","eslint-plugin-import":"^2.31.0","@semantic-release/git":"^10.0.1","@babel/preset-typescript":"^7.24.0","@callstack/eslint-config":"^13.0.0","@typescript-eslint/parser":"^5.0.0","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^5.0.0","@babel/plugin-proposal-class-properties":"^7.18.0"},"_npmOperationalInternal":{"tmp":"tmp/logkitten_1.0.1_1750426613577_0.4375066360754789","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"logkitten","version":"1.0.2","keywords":["logcat","android","android studio","ios","Console.app","console","log","logs","logging","api","node"],"author":{"name":"Paweł Trysła","email":"zamotany.oss@gmail.com"},"license":"MIT","_id":"logkitten@1.0.2","maintainers":[{"name":"yaroslavs","email":"yaroslavs@wix.com"}],"contributors":[{"name":"Yaroslav Serhieiev","email":"noomorph@gmail.com"}],"homepage":"https://github.com/wix-incubator/logkitten","bugs":{"url":"https://github.com/wix-incubator/logkitten/issues"},"dist":{"shasum":"c82c393cd2a893622d36f1b165a56d9d7c17d42b","tarball":"https://registry.npmjs.org/logkitten/-/logkitten-1.0.2.tgz","fileCount":51,"integrity":"sha512-A9F5fpYkFdN/wEb+9HsaZg96WbQ4c1g8uR06wydK72CLzjIGBctAAH6hTZWvqlOJkLN/m/irKs0xBdq50fP8Mw==","signatures":[{"sig":"MEQCIAdLa1AgDoF2vV+axGDJZVFKKZvubhplXTHZA6eUH/qgAiAPflT+KniRtd4C+0HdYJEJh6comkGh0ic4lEckL0JECA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66924},"jest":{"testRegex":"/__tests__/.*\\.(test|spec)\\.ts?$"},"main":"build/api.js","types":"./build/api.d.ts","gitHead":"f503b1c2a5365557a0915f9f7cb9617acd0d7304","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/git","@semantic-release/github"],"branches":["master"]},"scripts":{"lint":"eslint --ext '.js,.ts' ./src","test":"jest","prepare":"yarn build:source && yarn build:def","build:def":"tsc --emitDeclarationOnly","typecheck":"tsc --noEmit","build:source":"babel src --out-dir build --extensions '.js,.ts' --ignore '**/__tests__/**' --source-maps --delete-dir-on-start"},"_npmUser":{"name":"yaroslavs","actor":{"name":"yaroslavs","type":"user","email":"yaroslavs@wix.com"},"email":"yaroslavs@wix.com"},"repository":{"url":"git+https://github.com/wix-incubator/logkitten.git","type":"git"},"_npmVersion":"10.9.2","description":"Stream Android and iOS logs without Android Studio or Console.app, with programmatic Node.js API for log analysis.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"dayjs":"^1.8.22"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"jest":"^30.0.0","eslint":"^8.57.0","@babel/cli":"^7.24.0","babel-jest":"^30.0.0","typescript":"~5.1.0","@babel/core":"^7.24.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","semantic-release":"^22.0.5","@babel/preset-env":"^7.24.0","eslint-plugin-jest":"^27.0.0","eslint-plugin-import":"^2.31.0","@semantic-release/git":"^10.0.1","@babel/preset-typescript":"^7.24.0","@callstack/eslint-config":"^13.0.0","@typescript-eslint/parser":"^5.0.0","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^5.0.0","@babel/plugin-proposal-class-properties":"^7.18.0"},"_npmOperationalInternal":{"tmp":"tmp/logkitten_1.0.2_1750428165586_0.9475043416826883","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"logkitten","version":"1.1.0","keywords":["logcat","android","android studio","ios","Console.app","console","log","logs","logging","api","node"],"author":{"name":"Paweł Trysła","email":"zamotany.oss@gmail.com"},"license":"MIT","_id":"logkitten@1.1.0","maintainers":[{"name":"yaroslavs","email":"yaroslavs@wix.com"}],"contributors":[{"name":"Yaroslav Serhieiev","email":"noomorph@gmail.com"}],"homepage":"https://github.com/wix-incubator/logkitten","bugs":{"url":"https://github.com/wix-incubator/logkitten/issues"},"dist":{"shasum":"dc1798a31af72c524699a13d425a73c86cdd58b8","tarball":"https://registry.npmjs.org/logkitten/-/logkitten-1.1.0.tgz","fileCount":51,"integrity":"sha512-enDLsJ0KnhLJo6yTlQt32hy1lCXRNLZJ5gL4tZUwlXMiGVQU5dfrLWR2if0weROerU96tWb3tSZM+Vhw/g1SjQ==","signatures":[{"sig":"MEQCIC86FXC4QLVVosP8RODSzBuxzyscPUVX4HPFMsb+376BAiBUaCaM964e9mOpjKuVvUi5NvIe6pPeNjzf8ldr/FMVrA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68295},"jest":{"testRegex":"/__tests__/.*\\.(test|spec)\\.ts?$"},"main":"build/api.js","types":"./build/api.d.ts","gitHead":"217ba266354a8435dfec6fd25482b6e522a95316","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/git","@semantic-release/github"],"branches":["master"]},"scripts":{"lint":"eslint --ext '.js,.ts' ./src","test":"jest","prepare":"yarn build:source && yarn build:def","build:def":"tsc --emitDeclarationOnly","typecheck":"tsc --noEmit","build:source":"babel src --out-dir build --extensions '.js,.ts' --ignore '**/__tests__/**' --source-maps --delete-dir-on-start"},"_npmUser":{"name":"yaroslavs","actor":{"name":"yaroslavs","type":"user","email":"yaroslavs@wix.com"},"email":"yaroslavs@wix.com"},"repository":{"url":"git+https://github.com/wix-incubator/logkitten.git","type":"git"},"_npmVersion":"10.9.2","description":"Stream Android and iOS logs without Android Studio or Console.app, with programmatic Node.js API for log analysis.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"dayjs":"^1.8.22"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"jest":"^30.0.0","eslint":"^8.57.0","@babel/cli":"^7.24.0","babel-jest":"^30.0.0","typescript":"~5.1.0","@babel/core":"^7.24.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","semantic-release":"^22.0.5","@babel/preset-env":"^7.24.0","eslint-plugin-jest":"^27.0.0","eslint-plugin-import":"^2.31.0","@semantic-release/git":"^10.0.1","@babel/preset-typescript":"^7.24.0","@callstack/eslint-config":"^13.0.0","@typescript-eslint/parser":"^5.0.0","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^5.0.0","@babel/plugin-proposal-class-properties":"^7.18.0"},"_npmOperationalInternal":{"tmp":"tmp/logkitten_1.1.0_1750429073406_0.10685972509302988","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"logkitten","version":"1.1.1","keywords":["logcat","android","android studio","ios","Console.app","console","log","logs","logging","api","node"],"author":{"name":"Paweł Trysła","email":"zamotany.oss@gmail.com"},"license":"MIT","_id":"logkitten@1.1.1","maintainers":[{"name":"yaroslavs","email":"yaroslavs@wix.com"}],"contributors":[{"name":"Yaroslav Serhieiev","email":"noomorph@gmail.com"}],"homepage":"https://github.com/wix-incubator/logkitten","bugs":{"url":"https://github.com/wix-incubator/logkitten/issues"},"dist":{"shasum":"5327206638b61b938c2711071b8e096a5d77fffe","tarball":"https://registry.npmjs.org/logkitten/-/logkitten-1.1.1.tgz","fileCount":51,"integrity":"sha512-FO2w4G+eM/x2C0UuRVhZ1mksCq5mJ7bn7SV4TZ2Yl4qSXJ1MJ412JwITFIAC7QVRMIScHzYvc7yfj71qwHxmHw==","signatures":[{"sig":"MEYCIQDLufl2iUO8jLfOIoM+4/U3yG+hJjJrHas6EXMKHdqSRAIhAMwY9I/5oyVp7Vv3YhPHlxh4pZHdnSABY8qaKRSPQqWd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68304},"jest":{"testRegex":"/__tests__/.*\\.(test|spec)\\.ts?$"},"main":"build/api.js","types":"./build/api.d.ts","gitHead":"7e39495ef0741375862b7a81510e35ea8958eeee","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/git","@semantic-release/github"],"branches":["master"]},"scripts":{"lint":"eslint --ext '.js,.ts' ./src","test":"jest","prepare":"yarn build:source && yarn build:def","build:def":"tsc --emitDeclarationOnly","typecheck":"tsc --noEmit","build:source":"babel src --out-dir build --extensions '.js,.ts' --ignore '**/__tests__/**' --source-maps --delete-dir-on-start"},"_npmUser":{"name":"yaroslavs","actor":{"name":"yaroslavs","type":"user","email":"yaroslavs@wix.com"},"email":"yaroslavs@wix.com"},"repository":{"url":"git+https://github.com/wix-incubator/logkitten.git","type":"git"},"_npmVersion":"10.9.2","description":"Stream Android and iOS logs without Android Studio or Console.app, with programmatic Node.js API for log analysis.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"dayjs":"^1.8.22"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"jest":"^30.0.0","eslint":"^8.57.0","@babel/cli":"^7.24.0","babel-jest":"^30.0.0","typescript":"~5.1.0","@babel/core":"^7.24.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","semantic-release":"^22.0.5","@babel/preset-env":"^7.24.0","eslint-plugin-jest":"^27.0.0","eslint-plugin-import":"^2.31.0","@semantic-release/git":"^10.0.1","@babel/preset-typescript":"^7.24.0","@callstack/eslint-config":"^13.0.0","@typescript-eslint/parser":"^5.0.0","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^5.0.0","@babel/plugin-proposal-class-properties":"^7.18.0"},"_npmOperationalInternal":{"tmp":"tmp/logkitten_1.1.1_1750430305480_0.19976911741602388","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"logkitten","version":"1.2.0","keywords":["logcat","android","android studio","ios","Console.app","console","log","logs","logging","api","node"],"author":{"name":"Paweł Trysła","email":"zamotany.oss@gmail.com"},"license":"MIT","_id":"logkitten@1.2.0","maintainers":[{"name":"yaroslavs","email":"yaroslavs@wix.com"}],"contributors":[{"name":"Yaroslav Serhieiev","email":"noomorph@gmail.com"}],"homepage":"https://github.com/wix-incubator/logkitten","bugs":{"url":"https://github.com/wix-incubator/logkitten/issues"},"dist":{"shasum":"375e84c26b20d64f810bbbdf27353e92fd41c8d0","tarball":"https://registry.npmjs.org/logkitten/-/logkitten-1.2.0.tgz","fileCount":55,"integrity":"sha512-B9D4xXODubWFrfscOpUKPkgXzuJ7KWORtIMriiiZfsbI7M0lEIjhCCZYrsnQXh3nFW5Tk9CRvNjDUJ7LEriQsw==","signatures":[{"sig":"MEUCIQCX+X8J136T56pq4AQG46v/ULMI860EtXQYWacrGaXvmAIgX0+WLdBdb+IuwaJki2Tn2pivI5Gm2fkBXzXwCBq5drs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76120},"jest":{"testRegex":"/__tests__/.*\\.(test|spec)\\.ts?$"},"main":"build/api.js","types":"./build/api.d.ts","gitHead":"3245c982318c78ee06e1b356027ea0226c7dc99f","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/git","@semantic-release/github"],"branches":["master"]},"scripts":{"lint":"eslint --ext '.js,.ts' ./src","test":"jest","prepare":"yarn build:source && yarn build:def","build:def":"tsc --emitDeclarationOnly","typecheck":"tsc --noEmit","build:source":"babel src --out-dir build --extensions '.js,.ts' --ignore '**/__tests__/**' --source-maps --delete-dir-on-start"},"_npmUser":{"name":"yaroslavs","actor":{"name":"yaroslavs","type":"user","email":"yaroslavs@wix.com"},"email":"yaroslavs@wix.com"},"repository":{"url":"git+https://github.com/wix-incubator/logkitten.git","type":"git"},"_npmVersion":"10.9.2","description":"Stream Android and iOS logs without Android Studio or Console.app, with programmatic Node.js API for log analysis.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"dayjs":"^1.8.22"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"jest":"^30.0.0","eslint":"^8.57.0","@babel/cli":"^7.24.0","babel-jest":"^30.0.0","typescript":"~5.1.0","@babel/core":"^7.24.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","semantic-release":"^22.0.5","@babel/preset-env":"^7.24.0","eslint-plugin-jest":"^27.0.0","eslint-plugin-import":"^2.31.0","@semantic-release/git":"^10.0.1","@babel/preset-typescript":"^7.24.0","@callstack/eslint-config":"^13.0.0","@typescript-eslint/parser":"^5.0.0","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^5.0.0","@babel/plugin-proposal-class-properties":"^7.18.0"},"_npmOperationalInternal":{"tmp":"tmp/logkitten_1.2.0_1750755231791_0.9565103333519631","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"logkitten","version":"1.3.0","keywords":["logcat","android","android studio","ios","Console.app","console","log","logs","logging","api","node"],"author":{"name":"Paweł Trysła","email":"zamotany.oss@gmail.com"},"license":"MIT","_id":"logkitten@1.3.0","maintainers":[{"name":"yaroslavs","email":"yaroslavs@wix.com"}],"contributors":[{"name":"Yaroslav Serhieiev","email":"yaroslavs@wix.com"}],"homepage":"https://github.com/wix-incubator/logkitten","bugs":{"url":"https://github.com/wix-incubator/logkitten/issues"},"dist":{"shasum":"0d6494330bdb24d5021511f1ba51b50443e38320","tarball":"https://registry.npmjs.org/logkitten/-/logkitten-1.3.0.tgz","fileCount":83,"integrity":"sha512-MnWyCJ9GKMrPHuiyyffriOC6OjVVUVSwPJwsnQdQEE8zoCM0XJAMBOB30JLOj0240JMuUpfSsqWRhJRSdmejUg==","signatures":[{"sig":"MEYCIQCiF0ih9D2YFrsVMq448c5lmiMMabp2q8R9RvfaHwNsVQIhAMDcyy2f6JaDVr5wu8JUZXkt0hEEjvLrHmP5er3hGsEx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90299},"jest":{"testMatch":["<rootDir>/src/**/*.test.ts"]},"main":"build/index.js","types":"./build/index.d.ts","gitHead":"1633a186d661fb98c6f448ecb616532856e1059f","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/git","@semantic-release/github"],"branches":["master"]},"scripts":{"lint":"eslint --ext '.js,.ts' ./src","test":"jest","prepare":"yarn build:source && yarn build:def","demo:ios":"node scripts/demo-ios.js","build:def":"tsc --emitDeclarationOnly","typecheck":"tsc --noEmit","build:source":"babel src --out-dir build --extensions '.js,.ts' --ignore '**/__tests__/**' --source-maps --delete-dir-on-start","demo:android":"node scripts/demo-android.js"},"_npmUser":{"name":"yaroslavs","actor":{"name":"yaroslavs","type":"user","email":"yaroslavs@wix.com"},"email":"yaroslavs@wix.com"},"repository":{"url":"git+https://github.com/wix-incubator/logkitten.git","type":"git"},"_npmVersion":"10.9.2","description":"Stream Android and iOS logs without Android Studio or Console.app, with programmatic Node.js API for log analysis.","directories":{},"_nodeVersion":"22.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"jest":"^30.0.0","eslint":"^8.57.0","@babel/cli":"^7.24.0","babel-jest":"^30.0.0","typescript":"~5.1.0","@babel/core":"^7.24.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","semantic-release":"^22.0.5","@babel/preset-env":"^7.24.0","eslint-plugin-jest":"^27.0.0","eslint-plugin-import":"^2.31.0","@semantic-release/git":"^10.0.1","@babel/preset-typescript":"^7.24.0","@callstack/eslint-config":"^13.0.0","@typescript-eslint/parser":"^5.0.0","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^5.0.0","@babel/plugin-proposal-class-properties":"^7.18.0"},"_npmOperationalInternal":{"tmp":"tmp/logkitten_1.3.0_1750869433632_0.37596909111125676","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"logkitten","version":"1.3.1","keywords":["logcat","android","android studio","ios","Console.app","console","log","logs","logging","api","node"],"author":{"name":"Paweł Trysła","email":"zamotany.oss@gmail.com"},"license":"MIT","_id":"logkitten@1.3.1","maintainers":[{"name":"yaroslavs","email":"yaroslavs@wix.com"}],"contributors":[{"name":"Yaroslav Serhieiev","email":"yaroslavs@wix.com"}],"homepage":"https://github.com/wix-incubator/logkitten","bugs":{"url":"https://github.com/wix-incubator/logkitten/issues"},"dist":{"shasum":"acddde9cda146c4db90dc9f63ba28ce273ee69cf","tarball":"https://registry.npmjs.org/logkitten/-/logkitten-1.3.1.tgz","fileCount":83,"integrity":"sha512-eBb8VaqideJrkAENEVMS0qpNSgTOhC5yeW/tf7nso5jENUpTLDcxcRVA/xYf6B1FJsWB+z0o6ACrlaPzbVMypA==","signatures":[{"sig":"MEQCIDIXNpv1vgBdy5DYZ2j7xzCi1WiUYx92oOHBFKLgRuSqAiBYTQTbib81RtdFaG6JgWDr/0Do1ZT19qXQ+Co+qNVGBQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91845},"jest":{"testMatch":["<rootDir>/src/**/*.test.ts"]},"main":"build/index.js","types":"./build/index.d.ts","gitHead":"b9332e0320b50e61f2da314d608c4955049c7814","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/git","@semantic-release/github"],"branches":["master"]},"scripts":{"lint":"eslint --ext '.js,.ts' ./src","test":"jest","prepare":"yarn build:source && yarn build:def","demo:ios":"node scripts/demo-ios.js","build:def":"tsc --emitDeclarationOnly","typecheck":"tsc --noEmit","build:source":"babel src --out-dir build --extensions '.js,.ts' --ignore '**/__tests__/**' --source-maps --delete-dir-on-start","demo:android":"node scripts/demo-android.js"},"_npmUser":{"name":"yaroslavs","email":"yaroslavs@wix.com"},"repository":{"url":"git+https://github.com/wix-incubator/logkitten.git","type":"git"},"_npmVersion":"10.9.2","description":"Stream Android and iOS logs without Android Studio or Console.app, with programmatic Node.js API for log analysis.","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"jest":"^30.0.0","eslint":"^8.57.0","@babel/cli":"^7.24.0","babel-jest":"^30.0.0","typescript":"~5.1.0","@babel/core":"^7.24.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","semantic-release":"^22.0.5","@babel/preset-env":"^7.24.0","eslint-plugin-jest":"^27.0.0","eslint-plugin-import":"^2.31.0","@semantic-release/git":"^10.0.1","@babel/preset-typescript":"^7.24.0","@callstack/eslint-config":"^13.0.0","@typescript-eslint/parser":"^5.0.0","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^5.0.0","@babel/plugin-proposal-class-properties":"^7.18.0"},"_npmOperationalInternal":{"tmp":"tmp/logkitten_1.3.1_1758738527593_0.8034352509799825","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"logkitten","version":"1.3.2","keywords":["logcat","android","android studio","ios","Console.app","console","log","logs","logging","api","node"],"author":{"name":"Paweł Trysła","email":"zamotany.oss@gmail.com"},"license":"MIT","_id":"logkitten@1.3.2","maintainers":[{"name":"yaroslavs","email":"yaroslavs@wix.com"}],"contributors":[{"name":"Yaroslav Serhieiev","email":"yaroslavs@wix.com"}],"homepage":"https://github.com/wix-incubator/logkitten","bugs":{"url":"https://github.com/wix-incubator/logkitten/issues"},"dist":{"shasum":"d4534771857459e599af396519f64707b6c53206","tarball":"https://registry.npmjs.org/logkitten/-/logkitten-1.3.2.tgz","fileCount":83,"integrity":"sha512-c0jaoSCk34XTIy1mpxhmm5NIyqWKIEMG9LU2/ELGECKK8lnZzic9ca9UrWfvDjA7j+aurvVB4pCSEKr8aBTYRQ==","signatures":[{"sig":"MEUCIFebvQHICseL9dHW8CMOU5ENBzbuYcibpP8GzBbl07W3AiEAv/OleBbPnoQUAU5/R50cmsXRvnFSr9O1OXuue0d0ax8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91968},"jest":{"testMatch":["<rootDir>/src/**/*.test.ts"]},"main":"build/index.js","types":"./build/index.d.ts","gitHead":"3ce690be2a9dbd64aec7fdf70cb5b7f66641cdf8","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/git","@semantic-release/github"],"branches":["master"]},"scripts":{"lint":"eslint --ext '.js,.ts' ./src","test":"jest","prepare":"yarn build:source && yarn build:def","demo:ios":"node scripts/demo-ios.js","build:def":"tsc --emitDeclarationOnly","typecheck":"tsc --noEmit","build:source":"babel src --out-dir build --extensions '.js,.ts' --ignore '**/__tests__/**' --source-maps --delete-dir-on-start","demo:android":"node scripts/demo-android.js"},"_npmUser":{"name":"yaroslavs","email":"yaroslavs@wix.com"},"repository":{"url":"git+https://github.com/wix-incubator/logkitten.git","type":"git"},"_npmVersion":"10.9.2","description":"Stream Android and iOS logs without Android Studio or Console.app, with programmatic Node.js API for log analysis.","directories":{},"_nodeVersion":"22.19.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.2","devDependencies":{"jest":"^30.0.0","eslint":"^8.57.0","@babel/cli":"^7.24.0","babel-jest":"^30.0.0","typescript":"~5.1.0","@babel/core":"^7.24.0","@types/jest":"^30.0.0","@types/node":"^20.0.0","semantic-release":"^22.0.5","@babel/preset-env":"^7.24.0","eslint-plugin-jest":"^27.0.0","eslint-plugin-import":"^2.31.0","@semantic-release/git":"^10.0.1","@babel/preset-typescript":"^7.24.0","@callstack/eslint-config":"^13.0.0","@typescript-eslint/parser":"^5.0.0","@semantic-release/changelog":"^6.0.3","@typescript-eslint/eslint-plugin":"^5.0.0","@babel/plugin-proposal-class-properties":"^7.18.0"},"_npmOperationalInternal":{"tmp":"tmp/logkitten_1.3.2_1758786320739_0.9758222408188948","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"logkitten","version":"1.3.3","description":"Stream Android and iOS logs without Android Studio or Console.app, with programmatic Node.js API for log analysis.","packageManager":"yarn@4.9.2","publishConfig":{"access":"public"},"keywords":["logcat","android","android studio","ios","Console.app","console","log","logs","logging","api","node"],"repository":{"type":"git","url":"git+https://github.com/wix-incubator/logkitten.git"},"author":{"name":"Paweł Trysła","email":"zamotany.oss@gmail.com"},"contributors":[{"name":"Yaroslav Serhieiev","email":"yaroslavs@wix.com"}],"bugs":{"url":"https://github.com/wix-incubator/logkitten/issues"},"homepage":"https://github.com/wix-incubator/logkitten","license":"MIT","main":"build/index.js","scripts":{"lint":"eslint --ext '.js,.ts' ./src","build:source":"babel src --out-dir build --extensions '.js,.ts' --ignore '**/__tests__/**' --source-maps --delete-dir-on-start","build:def":"tsc --emitDeclarationOnly","prepare":"yarn build:source && yarn build:def","typecheck":"tsc --noEmit","test":"jest","demo:ios":"node scripts/demo-ios.js","demo:android":"node scripts/demo-android.js"},"devDependencies":{"@babel/cli":"^7.24.0","@babel/core":"^7.24.0","@babel/plugin-proposal-class-properties":"^7.18.0","@babel/preset-env":"^7.24.0","@babel/preset-typescript":"^7.24.0","@callstack/eslint-config":"^13.0.0","@semantic-release/changelog":"^6.0.3","@semantic-release/git":"^10.0.1","@types/jest":"^30.0.0","@types/node":"^20.0.0","@typescript-eslint/eslint-plugin":"^5.0.0","@typescript-eslint/parser":"^5.0.0","babel-jest":"^30.0.0","eslint":"^8.57.0","eslint-plugin-import":"^2.31.0","eslint-plugin-jest":"^27.0.0","jest":"^30.0.0","semantic-release":"^22.0.5","typescript":"~5.1.0"},"jest":{"testMatch":["<rootDir>/src/**/*.test.ts"]},"release":{"branches":["master"],"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/git","@semantic-release/github"]},"_id":"logkitten@1.3.3","gitHead":"b65008b547e98eac097c2c34eefd312e2f52bc4d","types":"./build/index.d.ts","_nodeVersion":"22.20.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-6oHaRYZonwU2MV0uJ6m27ur73lX18jqOoNmDPvcrt7Uh/vy+XZoIMi/u+k4hj06Nuv8VVVfyUj68SALqSxzIaA==","shasum":"58d14aef3d6b289f806a0563b5de83d5ef1baa79","tarball":"https://registry.npmjs.org/logkitten/-/logkitten-1.3.3.tgz","fileCount":83,"unpackedSize":92321,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDCRPvjholYEuAPO3LYFXYaInJTOvAUT6stc5N2K4G/gQIgU0LDVHu/ZNdY4iU8lHpUi8T/4DEufT/fk+1cXzffmwY="}]},"_npmUser":{"name":"yaroslavs","email":"yaroslavs@wix.com"},"directories":{},"maintainers":[{"name":"yaroslavs","email":"yaroslavs@wix.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/logkitten_1.3.3_1759491056308_0.5796131794748007"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-20T13:36:53.488Z","modified":"2025-10-03T11:30:56.715Z","1.0.1":"2025-06-20T13:36:53.745Z","1.0.2":"2025-06-20T14:02:45.839Z","1.1.0":"2025-06-20T14:17:53.594Z","1.1.1":"2025-06-20T14:38:25.694Z","1.2.0":"2025-06-24T08:53:51.971Z","1.3.0":"2025-06-25T16:37:13.830Z","1.3.1":"2025-09-24T18:28:47.805Z","1.3.2":"2025-09-25T07:45:20.956Z","1.3.3":"2025-10-03T11:30:56.525Z"},"bugs":{"url":"https://github.com/wix-incubator/logkitten/issues"},"author":{"name":"Paweł Trysła","email":"zamotany.oss@gmail.com"},"license":"MIT","homepage":"https://github.com/wix-incubator/logkitten","keywords":["logcat","android","android studio","ios","Console.app","console","log","logs","logging","api","node"],"repository":{"type":"git","url":"git+https://github.com/wix-incubator/logkitten.git"},"description":"Stream Android and iOS logs without Android Studio or Console.app, with programmatic Node.js API for log analysis.","contributors":[{"name":"Yaroslav Serhieiev","email":"yaroslavs@wix.com"}],"maintainers":[{"name":"yaroslavs","email":"yaroslavs@wix.com"}],"readme":"# <img src=\"logo.webp\" alt=\"\" align=\"right\" height=\"48\"> logkitten\n\n[![Version][version]][package]\n[![PRs Welcome][prs-welcome-badge]][prs-welcome]\n[![MIT License][license-badge]][license]\n\nStream Android and iOS logs without Android Studio or Console.app, with programmatic Node.js API for log analysis.\n\n> This is a Wix Incubator fork of the original [logkitty](https://github.com/zamotany/logkitty) project.\n\n## Installation\n\n```sh\nnpm install logkitten\n# or\nyarn add logkitten\n```\n\n## Usage\n\n```ts\nimport { logkitten, Level } from 'logkitten';\n\n// Basic usage - get all Android logs\nconst emitter = logkitten({\n  platform: 'android',\n});\n\nemitter.on('entry', (entry) => {\n  // Process the structured log entry\n  console.log({\n    ts: new Date(entry.ts),\n    level: entry.level,\n    pid: entry.pid,\n    tid: entry.tid,\n    message: entry.msg,\n  });\n});\n\nemitter.on('error', (error: Error) => {\n  console.error('Logging error:', error.message);\n});\n\n// When you're done listening to logs, close the stream programmatically\nawait emitter.close(); // or emitter.close(callback)\n```\n\n## API Reference\n\n### Main Function\n\n#### `logkitten(options)`\n\nThe main function that accepts platform-specific options:\n\n```ts\n// Android\nconst androidEmitter = logkitten({\n  platform: 'android',\n  // Optional: specify custom adb path\n  adbPath: '/custom/path/to/adb',\n  // Optional: target specific device\n  deviceId: 'emulator-5554',\n  // Optional: filter entries\n  filter: (entry) => entry.tag === 'MyApp'\n});\n\n// iOS\nconst iosEmitter = logkitten({\n  platform: 'ios',\n  // Optional: target specific simulator (defaults to 'booted')\n  deviceId: 'A1B2C3D4-E5F6-7890-ABCD-EF1234567890',\n  // Optional: filter entries\n  filter: (entry) => entry.processImagePath.includes('/MyApp')\n});\n```\n\n### Entry Structure\n\nEach log entry is a structured object with platform-specific extensions:\n\n```ts\ninterface Entry {\n  msg: string;           // Message content\n  ts: number;           // Timestamp in milliseconds\n  pid: number;          // Process ID\n  tid: number;          // Thread ID\n  level: number;        // Log level/priority (Level enum)\n}\n\ninterface AndroidEntry extends Entry {\n  tag: string;          // Log tag\n  uid: string;          // User ID\n}\n\ninterface IosEntry extends Entry {\n  category: string;           // iOS category\n  formatString: string;       // Format string used for the log message\n  processImagePath: string;   // Path to the process executable\n  subsystem: string;          // iOS subsystem\n  userID: number;            // User ID\n}\n```\n\n### LogkittenEmitter\n\nThe emitter returned by all functions extends Node's `EventEmitter` and provides:\n\n* **Events**\n  * `entry` (arguments: `entry: AndroidEntry | IosEntry`) – Emitted when a new log entry passes filters.\n  * `error` (arguments: `error: Error`) – Emitted when parsing fails or the underlying process encounters errors.\n  * `close` – Emitted once the logging process is terminated via `.close()`.\n\n* **Methods**\n  * `close(cb?)` – Gracefully stops the underlying logging process and returns a Promise that resolves when cleanup is complete.\n\n## Levels\n\n```ts\nimport { Level } from 'logkitten';\n\n// Available priorities (from lowest to highest):\nLevel.TRACE    // 10 - Trace level (Android verbose)\nLevel.DEBUG    // 20 - Debug level\nLevel.INFO     // 30 - Info level\nLevel.WARN     // 40 - Warning level\nLevel.ERROR    // 50 - Error level\nLevel.FATAL    // 60 - Fatal level\n```\n\n## Filtering\n\nYou can provide a custom filter function to control which log entries are emitted:\n\n```ts\nconst emitter = logkitten({\n  platform: 'android',\n  filter: (entry) => {\n    // Only include entries with specific tags\n    return entry.tag === 'MyApp' || entry.tag === 'ReactNative';\n  }\n});\n```\n\n### Filter Examples\n\n**Filter by tag (Android):**\n\n```ts\n(entry) => entry.tag === 'MyApp'\n```\n\n**Filter by process (both platforms):**\n\n```ts\n(entry) => entry.pid === myAppPid\n```\n\n**Filter by message content:**\n\n```ts\nfilter: (entry) => /error|warning/i.test(entry.msg)\n```\n\n**Filter by subsystem (iOS):**\n\n```ts\nfilter: (entry) => entry.subsystem === 'com.mycompany.myapp'\n```\n\n**Multi-criteria filtering:**\n\n```ts\n(entry) => {\n  const isMyApp = entry.tag === 'MyApp' || entry.processImagePath?.includes('MyApp');\n  const isError = entry.level >= Level.ERROR;\n  const hasKeyword = entry.msg.includes('network');\n  return isMyApp && (isError || hasKeyword);\n}\n```\n\n## Examples\n\n### Log Analysis and Error Tracking\n\n```ts\nconst emitter = logkitten({\n  platform: 'android',\n});\n\nconst errorCount = new Map();\n\nemitter.on('entry', (entry) => {\n  if (entry.level >= Level.ERROR) {\n    const count = errorCount.get(entry.tag) || 0;\n    errorCount.set(entry.tag, count + 1);\n  }\n});\n\n// Log error summary every 10 seconds\nsetInterval(() => {\n  console.log('Error counts by tag:', Object.fromEntries(errorCount));\n}, 10000);\n```\n\n### Structured Log Storage\n\n```ts\nconst emitter = logkitten({\n  platform: 'ios',\n  filter: (entry) => entry.processImagePath.includes('/MyApp'),\n});\n\nconst logs = [];\n\nemitter.on('entry', (entry) => {\n  // Store structured log data\n  logs.push({\n    timestamp: entry.ts,\n    level: entry.level,\n    source: entry.subsystem,\n    content: entry.msg,\n  });\n\n  // Keep only last 1000 entries\n  if (logs.length > 1000) {\n    logs.shift();\n  }\n});\n```\n\n## Credits\n\nThis project is a fork and continuation of the original [logkitty](https://github.com/zamotany/logkitty) by [Paweł Trysła (@zamotany)](https://github.com/zamotany), maintained by Wix Incubator.\n\nThe original project has been inactive since 2020, and this fork continues development with modern dependencies and bug fixes.\nWhile we maintain this fork primarily for our own use, we welcome community contributions and will consider issues and feature requests as time permits.\n\n<!-- badges (common) -->\n\n[license-badge]: https://img.shields.io/npm/l/logkitten.svg?style=flat-square\n[license]: https://opensource.org/licenses/MIT\n[prs-welcome-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square\n[prs-welcome]: http://makeapullrequest.com\n[version]: https://img.shields.io/npm/v/logkitten.svg?style=flat-square\n[package]: https://www.npmjs.com/package/logkitten\n","readmeFilename":"README.md"}