{"_id":"react-native-code-sync","_rev":"115-bc069bd0d29acf1f47f025b14b53d449","name":"react-native-code-sync","dist-tags":{"latest":"1.0.61"},"versions":{"1.0.51":{"name":"react-native-code-sync","version":"1.0.51","keywords":["code-sync","react-native","code","sync","sync","codepush","ota-update","ota","react","live","update","liveupdate","livefix","bundle","update","bundle"],"author":{"name":"console-debugger"},"license":"ISC","_id":"react-native-code-sync@1.0.51","maintainers":[{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"}],"bin":{"ios-code-sync":"bin/ios-code-sync.sh","android-code-sync":"bin/android-code-sync.sh"},"dist":{"shasum":"880eeca58a12b9ae906dd99fea431acf7c4af8c3","tarball":"https://registry.npmjs.org/react-native-code-sync/-/react-native-code-sync-1.0.51.tgz","fileCount":20,"integrity":"sha512-NTU0xavwC+8L6sJQ128zwTwvaCMEw+PYUq4eUTrQ4nlsS1cIiFceqOoUCn17xMHMqw/4X/OAgSAhujwoIzAp7g==","signatures":[{"sig":"MEYCIQDrur7nS3udTvUaeflWjRbk3DI6FDZ3KD3BApx7ma/MVwIhANNi07afzbv5/nTDVmITxfF2VGhEWkbrBnDII11w/LHU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62648},"main":"src/index.js","types":"src/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"},"_npmVersion":"10.9.2","description":"React-native plugin for the code-sync functionality on live via OTA (Over-the-air)","directories":{},"_nodeVersion":"20.17.0","dependencies":{"axios":"^1.9.0","form-data":"^4.0.2","react-native-fs":"^2.20.0","react-native-restart":"^0.0.27","react-native-blob-util":"^0.22.2","react-native-device-info":"^14.0.4","react-native-zip-archive":"^7.0.1","@react-native-async-storage/async-storage":"^2.1.2"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=17.0.0","react-native":">=0.65.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-code-sync_1.0.51_1749477940677_0.8382378050559498","host":"s3://npm-registry-packages-npm-production"}},"1.0.52":{"name":"react-native-code-sync","version":"1.0.52","keywords":["code-sync","react-native","code","sync","sync","codepush","ota-update","ota","react","live","update","liveupdate","livefix","bundle","update","bundle"],"author":{"name":"console-debugger"},"license":"ISC","_id":"react-native-code-sync@1.0.52","maintainers":[{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"}],"bin":{"ios-code-sync":"bin/ios-code-sync.sh","android-code-sync":"bin/android-code-sync.sh"},"dist":{"shasum":"30095dea4a195c6517fb9138059433bb69801858","tarball":"https://registry.npmjs.org/react-native-code-sync/-/react-native-code-sync-1.0.52.tgz","fileCount":20,"integrity":"sha512-x4RYG0eVIOq5KzHIjKshWn+uo4UNQzF9IEtKj1MIAmt5ePwBZGpqjmHx/MpWewl1ND01ynxoVGPQkyysN8nCnQ==","signatures":[{"sig":"MEYCIQDfhMR7eUoDzwgjTFIKpYgEXa7cUXWv4RrSbiIOX8pPwAIhAI6UdXs7zhOsucKBwuvDnQqq+ZRFx/MJRjpVOX0llb4Y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62634},"main":"src/index.js","types":"src/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"},"_npmVersion":"10.9.2","description":"React-native plugin for the code-sync functionality on live via OTA (Over-the-air)","directories":{},"_nodeVersion":"20.17.0","dependencies":{"axios":"^1.9.0","form-data":"^4.0.2","react-native-fs":"^2.20.0","react-native-restart":"^0.0.27","react-native-blob-util":"^0.22.2","react-native-device-info":"^14.0.4","react-native-zip-archive":"^7.0.1","@react-native-async-storage/async-storage":"^2.1.2"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=17.0.0","react-native":">=0.65.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-code-sync_1.0.52_1749530778209_0.9738059724236132","host":"s3://npm-registry-packages-npm-production"}},"1.0.53":{"name":"react-native-code-sync","version":"1.0.53","keywords":["code-sync","react-native","code","sync","sync","codepush","ota-update","ota","react","live","update","liveupdate","livefix","bundle","update","bundle"],"author":{"name":"console-debugger"},"license":"ISC","_id":"react-native-code-sync@1.0.53","maintainers":[{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"}],"bin":{"ios-code-sync":"bin/ios-code-sync.sh","android-code-sync":"bin/android-code-sync.sh"},"dist":{"shasum":"c73672a3ec1d7156bbb587951fa6a2c69bc61803","tarball":"https://registry.npmjs.org/react-native-code-sync/-/react-native-code-sync-1.0.53.tgz","fileCount":20,"integrity":"sha512-v7/hIc9/1dHkGrjrzGLuVsnDfsz96VdrBszCneUAPsWi8yL4vx/RbcMJkD2Zqh5cQzErTYw5s3Xl4dDmp3nl/A==","signatures":[{"sig":"MEUCIQDjB0a0fMtQFJS8P+QWG9pOOFaASarhrbTfUxuAE4KmIAIgSQAct8Omjc86H50vBE+aO6zGMhi0PSyf9IKkIgaYZng=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63062},"main":"src/index.js","types":"src/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"},"_npmVersion":"10.9.2","description":"React-native plugin for the code-sync functionality on live via OTA (Over-the-air)","directories":{},"_nodeVersion":"20.17.0","dependencies":{"axios":"^1.9.0","form-data":"^4.0.2","react-native-fs":"^2.20.0","react-native-restart":"^0.0.27","react-native-blob-util":"^0.22.2","react-native-device-info":"^14.0.4","react-native-zip-archive":"^7.0.1","@react-native-async-storage/async-storage":"^2.1.2"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=17.0.0","react-native":">=0.65.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-code-sync_1.0.53_1749623210650_0.6443400484191728","host":"s3://npm-registry-packages-npm-production"}},"1.0.54":{"name":"react-native-code-sync","version":"1.0.54","keywords":["code-sync","react-native","code","sync","sync","codepush","ota-update","ota","react","live","update","liveupdate","livefix","bundle","update","bundle"],"author":{"name":"console-debugger"},"license":"ISC","_id":"react-native-code-sync@1.0.54","maintainers":[{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"}],"bin":{"ios-code-sync":"bin/ios-code-sync.sh","android-code-sync":"bin/android-code-sync.sh"},"dist":{"shasum":"4361096defda752d86acbd769ae28ef317def2a7","tarball":"https://registry.npmjs.org/react-native-code-sync/-/react-native-code-sync-1.0.54.tgz","fileCount":20,"integrity":"sha512-lqM/1na0s/yI89EcDoWu/0TEdFt6Ypm53rFuKYE9UHbvLYBjIHe9YG4Tt1OqHRVjiIBwp+dWP7zNf8qjj6Zkpg==","signatures":[{"sig":"MEUCIEuvANzXXKa/cp6TCiGd9whBVuh31SKsj8f9he7cFo66AiEAzHa1CBp8iPygstcKIh5BWt1Ye0b683lUMD0H7dJoKeQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63130},"main":"src/index.js","types":"src/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"},"_npmVersion":"10.9.2","description":"React-native plugin for the code-sync functionality on live via OTA (Over-the-air)","directories":{},"_nodeVersion":"20.17.0","dependencies":{"axios":"^1.9.0","form-data":"^4.0.2","react-native-fs":"^2.20.0","react-native-restart":"^0.0.27","react-native-blob-util":"^0.22.2","react-native-device-info":"^14.0.4","react-native-zip-archive":"^7.0.1","@react-native-async-storage/async-storage":"^2.1.2"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=17.0.0","react-native":">=0.65.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-code-sync_1.0.54_1749631340854_0.22266650105007235","host":"s3://npm-registry-packages-npm-production"}},"1.0.55":{"name":"react-native-code-sync","version":"1.0.55","keywords":["code-sync","react-native","code","sync","sync","codepush","ota-update","ota","react","live","update","liveupdate","livefix","bundle","update","bundle"],"author":{"name":"console-debugger"},"license":"ISC","_id":"react-native-code-sync@1.0.55","maintainers":[{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"}],"bin":{"ios-code-sync":"bin/ios-code-sync.sh","android-code-sync":"bin/android-code-sync.sh"},"dist":{"shasum":"528435bb60f2a1be63a2b42c6feaada97a77969e","tarball":"https://registry.npmjs.org/react-native-code-sync/-/react-native-code-sync-1.0.55.tgz","fileCount":20,"integrity":"sha512-MNsWcgfAFsOFiR0ItQegssKmQoqZrJbxnNgv1QA4w5XM/gUI9SX50nJFGYwEDbrrjxm4MlRnDI9rTLZr3wEU5g==","signatures":[{"sig":"MEUCIDFRahSFE93AsVaDRk6hx+eic/2F8MySYMdPrS6JQiVBAiEAkLpEoVl8mDfeITa9aOI0RmLs+W4SpwPWuECswlJfoxk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63126},"main":"src/index.js","types":"src/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"},"_npmVersion":"10.9.2","description":"React-native plugin for the code-sync functionality on live via OTA (Over-the-air)","directories":{},"_nodeVersion":"20.17.0","dependencies":{"axios":"^1.9.0","form-data":"^4.0.2","react-native-fs":"^2.20.0","react-native-restart":"^0.0.27","react-native-blob-util":"^0.22.2","react-native-device-info":"^14.0.4","react-native-zip-archive":"^7.0.1","@react-native-async-storage/async-storage":"^2.1.2"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=17.0.0","react-native":">=0.65.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-code-sync_1.0.55_1749631665475_0.2388285182536758","host":"s3://npm-registry-packages-npm-production"}},"1.0.56":{"name":"react-native-code-sync","version":"1.0.56","keywords":["code-sync","react-native","code","sync","sync","codepush","ota-update","ota","react","live","update","liveupdate","livefix","bundle","update","bundle"],"author":{"name":"console-debugger"},"license":"ISC","_id":"react-native-code-sync@1.0.56","maintainers":[{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"}],"bin":{"ios-code-sync":"bin/ios-code-sync.sh","android-code-sync":"bin/android-code-sync.sh"},"dist":{"shasum":"9cae0acd05f3956bf7718ec48e866d70a61dd5ec","tarball":"https://registry.npmjs.org/react-native-code-sync/-/react-native-code-sync-1.0.56.tgz","fileCount":20,"integrity":"sha512-ahYUdftW/NkZnQOX8DRg05IVZu3ycUNBBpU0GbW4r4mg05ezIj8rCxubFSqs86+9FJ09n2rKdLrWcIrnoPxuQw==","signatures":[{"sig":"MEUCIQDvTHSkEd9sRD+yBd40XEkFU2NOWwn0cSfhslt3vPXI1QIgDcwKUQIIj933wAMVjKwfbWYdHCDRoPiETT9FNIyONak=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63115},"main":"src/index.js","types":"src/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"},"_npmVersion":"10.9.2","description":"React-native plugin for the code-sync functionality on live via OTA (Over-the-air)","directories":{},"_nodeVersion":"20.17.0","dependencies":{"axios":"^1.9.0","form-data":"^4.0.2","react-native-fs":"^2.20.0","react-native-restart":"^0.0.27","react-native-blob-util":"^0.22.2","react-native-device-info":"^14.0.4","react-native-zip-archive":"^7.0.1","@react-native-async-storage/async-storage":"^2.1.2"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=17.0.0","react-native":">=0.65.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-code-sync_1.0.56_1749631969630_0.9778876701801582","host":"s3://npm-registry-packages-npm-production"}},"1.0.57":{"name":"react-native-code-sync","version":"1.0.57","keywords":["code-sync","react-native","code","sync","sync","codepush","ota-update","ota","react","live","update","liveupdate","livefix","bundle","update","bundle"],"author":{"name":"console-debugger"},"license":"ISC","_id":"react-native-code-sync@1.0.57","maintainers":[{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"}],"bin":{"ios-code-sync":"bin/ios-code-sync.sh","android-code-sync":"bin/android-code-sync.sh"},"dist":{"shasum":"dee99ebe34d47ac25156823cdf6c59f136b22a4a","tarball":"https://registry.npmjs.org/react-native-code-sync/-/react-native-code-sync-1.0.57.tgz","fileCount":20,"integrity":"sha512-Ca3mvMTwKHKnnNf2rOn5J9LuUKRzzG/qwyFHMzxaABXK2i/pgcDsk/GRptsrWzFErNBrtwV2lBhSS39pBI9O3A==","signatures":[{"sig":"MEQCIAgybEzzKqG3MBOSvBfdic8C0qxiy+ZHlm6yrqhsCHISAiAC+pfAUNYMBdSUSvFIBheD49XWIqzkoqPxUJQZPgkoBQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62511},"main":"src/index.js","types":"src/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"},"_npmVersion":"10.9.2","description":"React-native plugin for the code-sync functionality on live via OTA (Over-the-air)","directories":{},"_nodeVersion":"20.17.0","dependencies":{"axios":"^1.9.0","form-data":"^4.0.2","react-native-fs":"^2.20.0","react-native-restart":"^0.0.27","react-native-blob-util":"^0.22.2","react-native-device-info":"^14.0.4","react-native-zip-archive":"^7.0.1","@react-native-async-storage/async-storage":"^2.1.2"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=17.0.0","react-native":">=0.65.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-code-sync_1.0.57_1749632446142_0.39567032747681163","host":"s3://npm-registry-packages-npm-production"}},"1.0.58":{"name":"react-native-code-sync","version":"1.0.58","keywords":["code-sync","react-native","code","sync","sync","codepush","ota-update","ota","react","live","update","liveupdate","livefix","bundle","update","bundle"],"author":{"name":"console-debugger"},"license":"ISC","_id":"react-native-code-sync@1.0.58","maintainers":[{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"}],"bin":{"ios-code-sync":"bin/ios-code-sync.sh","android-code-sync":"bin/android-code-sync.sh"},"dist":{"shasum":"ffc8ed6676f86ecb2abdfb1c781ce4b5a04dc42b","tarball":"https://registry.npmjs.org/react-native-code-sync/-/react-native-code-sync-1.0.58.tgz","fileCount":20,"integrity":"sha512-zX5VeMKT7lnGiB13o3IXQ7Lsbwvj79Ks0iQoa9Np8y9WgSxHcYyzPw5UTDKl6ZbiNUSN7O5qD9PLyBNdTkCnSg==","signatures":[{"sig":"MEUCIQCGrJE96c5DI/wpYqDV+AX5GLO5Si7aWERDynmorlMjogIgK9e2GnCwgl/6GB8hZ6CtCgz5kVVnhO/ALXa9a3EVD5s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62539},"main":"src/index.js","types":"src/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"},"_npmVersion":"10.9.2","description":"React-native plugin for the code-sync functionality on live via OTA (Over-the-air)","directories":{},"_nodeVersion":"20.17.0","dependencies":{"axios":"^1.9.0","form-data":"^4.0.2","react-native-fs":"^2.20.0","react-native-restart":"^0.0.27","react-native-blob-util":"^0.22.2","react-native-device-info":"^14.0.4","react-native-zip-archive":"^7.0.1","@react-native-async-storage/async-storage":"^2.1.2"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=17.0.0","react-native":">=0.65.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-code-sync_1.0.58_1749633264881_0.3528355032505355","host":"s3://npm-registry-packages-npm-production"}},"1.0.59":{"name":"react-native-code-sync","version":"1.0.59","keywords":["code-sync","react-native","code","sync","sync","codepush","ota-update","ota","react","live","update","liveupdate","livefix","bundle","update","bundle"],"author":{"name":"console-debugger"},"license":"ISC","_id":"react-native-code-sync@1.0.59","maintainers":[{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"}],"bin":{"ios-code-sync":"bin/ios-code-sync.sh","android-code-sync":"bin/android-code-sync.sh"},"dist":{"shasum":"0b3ed45b7e353b50b0a837b500360d49641ef974","tarball":"https://registry.npmjs.org/react-native-code-sync/-/react-native-code-sync-1.0.59.tgz","fileCount":20,"integrity":"sha512-z97lRJ5fSlZcP+YO8J3dMklt0995zERY4x4ae9W0Mj7Aj34MTdfbavA/Voxvhyfpr/B3vethTVMr0m0B621MdQ==","signatures":[{"sig":"MEUCIQCgezFk0uKyaQ6HSPhR1RGIae1bn+IwnGA0jm/tICCWgQIgIE203PfRqybxkDCK6XXsk0LIqzl9Gw2jmDbV2xUCUog=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62513},"main":"src/index.js","types":"src/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"},"_npmVersion":"10.9.2","description":"React-native plugin for the code-sync functionality on live via OTA (Over-the-air)","directories":{},"_nodeVersion":"20.17.0","dependencies":{"axios":"^1.9.0","form-data":"^4.0.2","react-native-fs":"^2.20.0","react-native-restart":"^0.0.27","react-native-blob-util":"^0.22.2","react-native-device-info":"^14.0.4","react-native-zip-archive":"^7.0.1","@react-native-async-storage/async-storage":"^2.1.2"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=17.0.0","react-native":">=0.65.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-code-sync_1.0.59_1749634902631_0.1614952054557337","host":"s3://npm-registry-packages-npm-production"}},"1.0.60":{"name":"react-native-code-sync","version":"1.0.60","keywords":["code-sync","react-native","code","sync","sync","codepush","ota-update","ota","react","live","update","liveupdate","livefix","bundle","update","bundle"],"author":{"name":"console-debugger"},"license":"ISC","_id":"react-native-code-sync@1.0.60","maintainers":[{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"}],"bin":{"ios-code-sync":"bin/ios-code-sync.sh","android-code-sync":"bin/android-code-sync.sh"},"dist":{"shasum":"3e5bc36c37db0c9fa24177de8f9e096bc17fc97a","tarball":"https://registry.npmjs.org/react-native-code-sync/-/react-native-code-sync-1.0.60.tgz","fileCount":20,"integrity":"sha512-BT0Prd5xc+cLTrCopdTaOthyJJH237QjPwYocksZmVBufASJEn12XhGxPevNDYcj3noW8lgAxDg1K369cZeyag==","signatures":[{"sig":"MEQCIFQ4RVcKzxsnbwUy0gmdL+1lVvZLfnRN+EQPBYPAYlzwAiByH3fZ0URScS0RixdGo7Zjum/VDhnye3+PBkE6PwXhnQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62550},"main":"src/index.js","types":"src/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"},"_npmVersion":"10.9.2","description":"React-native plugin for the code-sync functionality on live via OTA (Over-the-air)","directories":{},"_nodeVersion":"20.17.0","dependencies":{"axios":"^1.9.0","form-data":"^4.0.2","react-native-fs":"^2.20.0","react-native-restart":"^0.0.27","react-native-blob-util":"^0.22.2","react-native-device-info":"^14.0.4","react-native-zip-archive":"^7.0.1","@react-native-async-storage/async-storage":"^2.1.2"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=17.0.0","react-native":">=0.65.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-code-sync_1.0.60_1749635039623_0.5033822138280828","host":"s3://npm-registry-packages-npm-production"}},"1.0.61":{"name":"react-native-code-sync","version":"1.0.61","keywords":["code-sync","react-native","code","sync","sync","codepush","ota-update","ota","react","live","update","liveupdate","livefix","bundle","update","bundle"],"author":{"name":"console-debugger"},"license":"ISC","_id":"react-native-code-sync@1.0.61","maintainers":[{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"}],"bin":{"ios-code-sync":"bin/ios-code-sync.sh","android-code-sync":"bin/android-code-sync.sh"},"dist":{"shasum":"223822e18e1e206ce736b3180fa8abff3847afbf","tarball":"https://registry.npmjs.org/react-native-code-sync/-/react-native-code-sync-1.0.61.tgz","fileCount":20,"integrity":"sha512-6tEeWZ2ZgilhmV146/gjLT0+mMj4/5wZjeFknPhI0whuNuVQGVAfiFtJfKtnzFu4ORv7PIOjKIiveuqIVpBBxQ==","signatures":[{"sig":"MEQCIERloCg9A3bZN1z6FzKRHMqYQ7/nk3rJwzsb3zs90yV2AiBe/IH5JfFQUAUVsho2ks/Ed12l4OQpcTz6BuXpsjoklA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62856},"main":"src/index.js","types":"src/index.d.ts","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"_sandeep_kumar","email":"sandeep.kumar@cardekho.com"},"_npmVersion":"10.9.2","description":"React-native plugin for the code-sync functionality on live via OTA (Over-the-air)","directories":{},"_nodeVersion":"20.17.0","dependencies":{"axios":"^1.9.0","form-data":"^4.0.2","react-native-fs":"^2.20.0","react-native-restart":"^0.0.27","react-native-blob-util":"^0.22.2","react-native-device-info":"^14.0.4","react-native-zip-archive":"^7.0.1","@react-native-async-storage/async-storage":"^2.1.2"},"_hasShrinkwrap":false,"peerDependencies":{"react":">=17.0.0","react-native":">=0.65.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-code-sync_1.0.61_1749723734614_0.09064536852336769","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-06-02T06:21:38.839Z","modified":"2026-08-05T17:09:49.442Z","1.0.0":"2025-06-02T06:21:38.997Z","1.0.1":"2025-06-02T06:28:20.111Z","1.0.2":"2025-06-02T06:42:28.792Z","1.0.3":"2025-06-02T06:55:26.474Z","1.0.4":"2025-06-02T07:01:40.080Z","1.0.5":"2025-06-02T07:20:18.330Z","1.0.6":"2025-06-02T07:51:38.734Z","1.0.7":"2025-06-02T07:56:07.292Z","1.0.8":"2025-06-02T08:06:16.898Z","1.0.9":"2025-06-02T08:08:53.230Z","1.0.10":"2025-06-02T11:52:01.796Z","1.0.11":"2025-06-03T08:59:48.692Z","1.0.12":"2025-06-03T09:29:01.934Z","1.0.13":"2025-06-03T09:29:51.499Z","1.0.14":"2025-06-03T10:02:49.878Z","1.0.15":"2025-06-03T10:23:09.419Z","1.0.16":"2025-06-03T10:25:19.476Z","1.0.17":"2025-06-03T10:52:40.273Z","1.0.18":"2025-06-03T10:54:53.414Z","1.0.19":"2025-06-03T11:03:36.605Z","1.0.20":"2025-06-03T11:16:53.192Z","1.0.21":"2025-06-03T11:20:39.085Z","1.0.22":"2025-06-03T11:54:09.910Z","1.0.23":"2025-06-03T14:13:27.762Z","1.0.24":"2025-06-03T14:17:29.833Z","1.0.25":"2025-06-03T18:27:32.190Z","1.0.26":"2025-06-03T18:37:57.853Z","1.0.27":"2025-06-04T06:29:13.737Z","1.0.28":"2025-06-04T09:48:24.360Z","1.0.29":"2025-06-04T09:53:06.402Z","1.0.30":"2025-06-04T09:54:41.369Z","1.0.31":"2025-06-04T10:28:04.594Z","1.0.32":"2025-06-04T10:41:14.448Z","1.0.33":"2025-06-04T10:59:46.779Z","1.0.34":"2025-06-05T04:46:17.278Z","1.0.35":"2025-06-05T04:53:56.356Z","1.0.36":"2025-06-05T05:06:32.270Z","1.0.37":"2025-06-05T05:15:34.523Z","1.0.38":"2025-06-05T05:18:40.999Z","1.0.39":"2025-06-05T05:48:54.518Z","1.0.40":"2025-06-05T05:50:30.808Z","1.0.41":"2025-06-05T05:56:05.343Z","1.0.42":"2025-06-05T06:01:28.816Z","1.0.43":"2025-06-05T06:04:32.175Z","1.0.44":"2025-06-05T06:11:31.838Z","1.0.45":"2025-06-05T06:21:34.498Z","1.0.46":"2025-06-09T12:17:23.892Z","1.0.47":"2025-06-09T12:26:16.930Z","1.0.48":"2025-06-09T13:36:14.963Z","1.0.49":"2025-06-09T13:57:19.362Z","1.0.50":"2025-06-09T14:04:18.731Z","1.0.51":"2025-06-09T14:05:40.854Z","1.0.52":"2025-06-10T04:46:18.464Z","1.0.53":"2025-06-11T06:26:50.823Z","1.0.54":"2025-06-11T08:42:21.063Z","1.0.55":"2025-06-11T08:47:45.656Z","1.0.56":"2025-06-11T08:52:49.828Z","1.0.57":"2025-06-11T09:00:46.354Z","1.0.58":"2025-06-11T09:14:25.068Z","1.0.59":"2025-06-11T09:41:42.789Z","1.0.60":"2025-06-11T09:43:59.794Z","1.0.61":"2025-06-12T10:22:14.778Z"},"author":{"name":"console-debugger"},"license":"ISC","keywords":["code-sync","react-native","code","sync","sync","codepush","ota-update","ota","react","live","update","liveupdate","livefix","bundle","update","bundle"],"description":"React-native plugin for the code-sync functionality on live via OTA (Over-the-air)","maintainers":[{"email":"sandeepkumar2121997@gmail.com","name":"console-debugger"}],"readme":"# React Native Code Sync\n\nReact-native plugin for the code-sync functionality on live via OTA (Over-the-air)\n\nA lightweight, developer-friendly plugin for real-time OTA (Over-the-Air) code syncing in React Native. It enables fast iteration with zero native code recompilation — perfect for rapid development and live updates.\n\n---\n\n## 🚀 Features\n\n- 🔄 Real-time code syncing for React Native\n- ⚡ Hot reload without recompiling native code\n- ☁️ Supports Over-the-Air (OTA) updates\n- ✅ Compatible with both Android & iOS\n- 🔧 Easy integration with existing projects\n\n---\n\n## 📦 Installation Bare React Native\n\n### Step 1: Install the package\n\nUsing npm:\n\n```bash\nnpm install react-native-code-sync\n```\n\nUsing yarn:\n\n```bash\nyarn add react-native-code-sync\n```\n\n### Step 2: Install peer dependencies\n\nThis plugin requires the following packages:\n\nFor more information, about libraries please visit these sites\n\n- [@react-native-async-storage/async-storage](https://react-native-async-storage.github.io/async-storage/docs/install/).\n- [axios](https://www.npmjs.com/package/axios)\n- [form-data](https://www.npmjs.com/package/form-data)\n- [react-native-blob-util](https://www.npmjs.com/package/react-native-blob-util)\n- [react-native-device-info](https://www.npmjs.com/package/react-native-device-info)\n- [react-native-fs](https://www.npmjs.com/package/react-native-fs)\n- [react-native-restart](https://www.npmjs.com/package/react-native-restart)\n- [react-native-zip-archive](https://www.npmjs.com/package/react-native-zip-archive)\n\n\nUsing npm\n```bash\nnpm install @react-native-async-storage/async-storage axios form-data react-native-blob-util react-native-device-info react-native-fs react-native-restart react-native-zip-archive\n```\n\nUsing yarn\n```bash\nyarn add @react-native-async-storage/async-storage axios form-data react-native-blob-util react-native-device-info react-native-fs react-native-restart react-native-zip-archive\n```\n\n## Native Setup\n#### Android\nIn your MainApplication.kt, override the getJSBundleFile() method:\n```java\nimport java.io.File\n\nclass MainApplication : MultiDexApplication(), ReactApplication {\n override val reactNativeHost: ReactNativeHost =\n      object : DefaultReactNativeHost(this)  {\n        override fun getPackages(): List<ReactPackage> =\n            PackageList(this).packages.apply {\n              // Packages that cannot be autolinked yet can be added manually here, for example:\n              // add(MyReactNativePackage())\n            }\n\n            override fun getJSMainModuleName(): String = \"index\"\n\n            // Add this function in your code            \n            override fun getJSBundleFile(): String? {\n            val otaBundle = File(applicationContext.filesDir, \"index.android.bundle\")\n            return if (otaBundle.exists()) otaBundle.absolutePath else \"assets://index.android.bundle\"\n            }\n}\n``` \n\n#### iOS\nInside Appdelegate.mm file add this function of code\n\n```objc\n- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge\n{\n  return [self getBundleURL];\n}\n\n- (NSURL *)getBundleURL\n{\n#if DEBUG\n  return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@\"index\"];\n#else\n  NSFileManager *fileManager = [NSFileManager defaultManager];\n  NSString *bundlePath = [self getUpdatedBundlePath] ;\n  if ([fileManager fileExistsAtPath:bundlePath]) {\n    return [NSURL fileURLWithPath:bundlePath];\n  } else {\n    return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@\"index\"];\n  }\n#endif\n}\n\n// Get Path for Updated Bundle\n- (NSString *)getUpdatedBundlePath {\n  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);\n  NSString *documentsDirectory = [paths firstObject];\n  return [documentsDirectory stringByAppendingPathComponent:@\"main.jsbundle\"];\n}\n\n\n```\n\n## Environment File Configuration\n\n```javascript\n\"CODE_SYNC_BASE_URL\": \"https://yourBaseUrl.com/\",\n\"CHECK_FOR_UPDATE\": \"your/check_for_update_api/path/endpoint\",\n\"UPLOAD_BUNDLE\": \"your/upload_bundle_api/path/endpoint\"\n```\n> ⚠️ **NOTE:** Your environment file should contain \"CODE_SYNC_BASE_URL\" and \"CHECK_FOR_UPDATE\". Here, keyname must be same as mentioned here.\n\n\n## Usage (Javascript) \nValue of \"baseUrl\" and \"checkForUpdateEndPoint\" in setCodeSyncConfig method is required, without these keys \"checkForCodeSync\" will not work. Make sure you pass\n\n```javascript\n// Use this in App.js/index.js or before using and other method of this library\n\nimport { setCodeSyncConfig } from 'react-native-code-sync'\n\nsetCodeSyncConfig({\n    enableInDevMode: false,\n    baseUrl: \"https://yourBaseUrl.com/\",\n    checkForUpdateEndPoint: \"your/api/path/endpoint\" \n})\n\n```\n\n### Step 1: Add scripts in package.json\nAdd this in your package.json file inside script block\n\nENVFILE variable will be the name of your environment file you are using in your project\n\nIf using [react-native-keys](https://www.npmjs.com/package/react-native-keys) for environment management \n```javascript\n\"scripts\":{\n    \"android:code-sync\": \"ENVFILE=keys.project.json ENV_KEY=KEYSFILE npx android-code-sync\",\n    \"ios:code-sync\": \"ENVFILE=keys.project.json npx ios-code-sync\"\n}\n```\n\nIf using [react-native-config](https://www.npmjs.com/package/react-native-config) for environment management \n```javascript\n\"scripts\":{\n    \"android:code-sync\": \"ENVFILE=.env ENV_KEY=ENVFILE npx android-code-sync\",\n    \"ios:code-sync\": \"ENVFILE=.env npx ios-code-sync\"\n}\n```\n\n\n> ⚠️ **NOTE:** Do not remove this statement: `npx android-code-sync` for android and `npx ios-code-sync` for iOS\n\n#### Functional Component Example\n```javascript\n\nimport { useCheckCodeSync, CodeSyncModal, restartApp } from 'react-native-code-sync'\n\nlet timeout\n\nconst App = () => {\n\n    const { checkForCodeSync } = useCheckCodeSync()\n\n    const [OTAVisibleModal, setOTAVisibleModal] = useState(false)\n    const [otaProgress, setOTAProgress] = useState(0)\n    const [otaUpdateError, setOTAUpdateError] = useState(false)\n\n    useEffect(() => {\n        fetchAvailableUpdate()\n    }, [])\n\n    const fetchAvailableUpdate = async () => {\n        try {\n            const isAvailable = await checkForCodeSync({\n                params: {\n                    project_key: \"Projectkey\",\n                    version: \"1.0.0\"\n                },\n                onDownloadProgress: value => setOTAProgress(value),\n                onStartUpdate: () => {\n                    if (timeout) clearTimeout(timeout)\n                    timeout = setTimeout(() => {\n                        timeout = null\n                        setOTAVisibleModal(true)\n                    }, 0);\n                },\n                onUpdateFailed: () => {\n                    navigateToScreen()\n                },\n                onUpdateNotAvailable: navigateToScreen\n            })\n            if (!isAvailable) navigateToScreen()\n        }\n        catch (err) {\n            Utility.log(\"catch error=>\", JSON.stringify(err))\n            Utility.showAPIError(err)\n            navigateToScreen()\n        }\n    }\n\n    const navigateToScreen = () => {\n        // Contimue to mobile app\n    }\n\n    const onOtaUpdateCancelPress=()=>{\n    }\n\n    const onOtaUpdateRestartPress=()=>{\n        restartApp()\n    }\n\n    return (\n        <CodeSyncModal\n            visible={OTAVisibleModal}\n            codeSyncProgress={otaProgress}\n            onCancelPress={onOtaUpdateCancelPress}\n            onRestartPress={onOtaUpdateRestartPress}\n            themeColor={COLORS.THEME}\n            appLogo={SVG_ICONS.appLogo()}\n            messageStyle={{ fontFamily: FONT_FAMILY.POPPINS_REGULAR }}\n            restartButtonLabelStyle={{ fontFamily: FONT_FAMILY.POPPINS_MEDIUM }}\n            percentageTextStyle={{ fontFamily: FONT_FAMILY.POPPINS_REGULAR }}\n            downloadErrorMessage={\"Error while parsing package\"}\n            downloadCompleteMessage={\"Your app has downloaded the latest package\"}\n            downloadingInProgressMessage={\"Please wait we are downloading updated package\"}\n            restartButtonLabel={\"Restart Now\"}\n        />\n    )\n\n}\n\n```\n\n\n#### Class Component Example\n\n```javascript\nimport React, { Component } from 'react'\nimport { View } from 'react-native'\nimport { CheckCodeSyncClass, CodeSyncModal, restartApp } from 'react-native-code-sync'\n\nlet timeout\n\nclass App extends Component {\n\n    constructor(props) {\n        super(props);\n        this.timeout = null\n        this.state = {\n            OTAVisibleModal: false,\n            otaProgress: 0,\n            otaUpdateError: false\n        }\n    }\n\n    componentDidMount() {\n        this.fetchAvailableUpdate()\n    }\n\n\n    fetchAvailableUpdate = async () => {\n        try {\n            const checkCodeSync = new CheckCodeSyncClass()\n            const isAvailable = await checkCodeSync.checkForCodeSync({\n                params: {\n                    project_key: \"Projectkey\",\n                    version: \"1.0.0\"\n                },\n                onDownloadProgress: value => this.setState({ otaProgress: value }),\n                onStartUpdate: () => {\n                    if (this.timeout) clearTimeout(this.timeout)\n                    this.timeout = setTimeout(() => {\n                        this.timeout = null\n                        this.setState({ OTAVisibleModal: true })\n                    }, 0);\n                },\n                onUpdateFailed: () => {\n                    this.navigateToScreen()\n                },\n                onUpdateNotAvailable: this.navigateToScreen\n            })\n            if (!isAvailable) this.navigateToScreen()\n        }\n        catch (err) {\n            console.log(\"catch error=>\", JSON.stringify(err))\n            this.navigateToScreen()\n        }\n    }\n\n    navigateToScreen = () => {\n        // Contimue to mobile app\n    }\n\n    onOtaUpdateCancelPress = () => {\n\n    }\n\n    onOtaUpdateRestartPress = () => {\n        restartApp()\n    }\n\n    render() {\n        return (\n            <CodeSyncModal\n                visible={this.state.OTAVisibleModal}\n                codeSyncProgress={this.state.otaProgress}\n                onCancelPress={this.onOtaUpdateCancelPress}\n                onRestartPress={this.onOtaUpdateRestartPress}\n                themeColor={COLORS.THEME}\n                appLogo={SVG_ICONS.appLogo()}\n                messageStyle={{ fontFamily: FONT_FAMILY.POPPINS_REGULAR }}\n                restartButtonLabelStyle={{ fontFamily: FONT_FAMILY.POPPINS_MEDIUM }}\n                percentageTextStyle={{ fontFamily: FONT_FAMILY.POPPINS_REGULAR }}\n                downloadErrorMessage={\"Error while parsing package\"}\n                downloadCompleteMessage={\"Your app has downloaded the latest package\"}\n                downloadingInProgressMessage={\"Please wait we are downloading updated package\"}\n                restartButtonLabel={\"Restart Now\"}\n            />\n        )\n    }\n}\n```\n\n\n## Component/ Method/ Hooks/ Funcitons used in this react-native-code-sync\n\n- CodeSyncModal\n- CheckCodeSyncClass\n- useCheckCodeSync\n- restartApp\n\n\n### CodeSyncModal Props\n\n| Prop           | Type       | Required | Default     | Description                                                   |\n| -------------- | ---------- | -------- | ----------- | ------------------------------------------------------------- |\n| `codeSyncProgress`    | `string`   | ✅        | `null`      | This is the download progress of bundle file from server                      |\n| `visible` | `boolean` | ✅        | `false`   | This open the Modal of Code sync update                   |\n| `otaUpdateError`   | `function`  | ❌        |      | This callback will get called when an error occured during code-sync update download                   |\n| `onCancelPress`     | `function`   | ❌        |     | This callback is called when user pressed the cancel button of code-sync modal.    |\n| `onRestartPress`     | `function` | ❌        |  | This is function which will be called on press of restart button after downloading bundle file.        |\n| `appLogo` | `UI Element`   | ❌        |    null   | If developer want to show the app icon on code-sync update modal, the pass the Image or SVG file to this prop |\n| `showCancelButton`     | `boolean`   | ❌        |  `'false'`   | This prop will show or hide \"Cancel\" button on code-sync update modal Options: `'true'`, `'false'`.    |\n| `themeColor`     | `string` | ❌        | `#0bbddd` | This is the theme color code for code-sync update modal        |\n| `downloadCompleteMessage` | `string`   | ❌        | `Your app has downloaded latest package, please restart your app`      | This is the message to show on code-sync update modal, after downloading of bundle file |\n| `downloadingInProgressMessage` | `string`   | ❌        |    `Please wait we are downloading updated app package`   | This is the message to show on code-sync update modal, during downloading of bundle file |\n| `downloadErrorMessage`     | `string`   | ❌        |  `'Error while parsing bundle package'`   | This is the message to show on code-sync update modal, on error occured of downloading of bundle file |\n| `cancelButtonLabel`     | `string` | ❌        | `Cancel` | This is the label for cancel button on code-sync update modal.        |\n| `restartButtonLabel` | `string`   | ❌        | `Restart`      | This is the label for restart button on code-sync update modal. |\n| `percentageTextStyle` | `Style Object`   | ❌        |     | This is the style for showing downloading percentage text on code-sync update modal.  |\n| `messageStyle`     | `Style Object`   | ❌        |    | This is the style for showing message text on code-sync update modal. |\n| `mainContaineStyle`     | `Style Object` | ❌        |  | This is the style for mainContainer on code-sync update modal.        |\n| `cancelButtonLabelStyle` | `Style Object`   | ❌        |    | This is the style for showing \"Cancel\" button on code-sync update modal. |\n| `restartButtonLabelStyle`     | `Style Object`   | ❌        |    | This is the style for showing \"Restart\" button on code-sync update modal. |\n| `customUI`     | `Style Object` | ❌        |  | This is the UI to show after download progress UI on code-sync update modal.        |\n\n\n### CheckCodeSyncClass Class\nThis class has \"checkForCodeSync\" method to check for available update and this can only be used for class components.\n\n\n#### Usage\n```javascript\nimport { CheckCodeSyncClass } from 'react-native-code-sync'\nclass App extends Components {\n    componentDidMount(){\n        this.fetchUpdate()\n    }\n\n    fetchUpdate=()=>{\n    try {\n            const codeSync = new CheckCodeSyncClass()\n            const isAvailable = await codeSync.checkForCodeSync({\n            params: {\n            project_key: \"uniqueProjectKey\",\n            version: \"1.0.1\"\n            },\n            onDownloadProgress: value => {console.log(value)},\n            onStartUpdate: () => {\n            // Bundle download started\n            },\n            onUpdateFailed: () => {\n            // Bundle download get failed\n            },\n            onUpdateNotAvailable: ()=>{\n            // Update not available\n            }\n        })\n      }\n      catch(err){\n        console.log(err)\n      }\n    }\n}\n\n```\n\n\n### useCheckCodeSync Hook\nThis hook has \"checkForCodeSync\" method to check for available update and this can only be used for functional components.\n\n#### Usage\n```javascript\nimport { useCheckCodeSync } from 'react-native-code-sync'\n\nconst App = ()=> {\nconst { checkForCodeSync } = useCheckCodeSync()\n\nuseEffect(()=>{\n    fetchUpdate()\n},[])\n\nconst fetchUpdate=async()=>{\n try {\n        const isAvailable = await checkForCodeSync({\n        params: {\n           project_key: \"uniqueProjectKey\",\n           version: \"1.0.1\"\n        },\n        onDownloadProgress: value => {console.log(value)},\n        onStartUpdate: () => {\n          // Bundle download started\n        },\n        onUpdateFailed: () => {\n          // Bundle download get failed\n        },\n        onUpdateNotAvailable: ()=>{\n          // Update not available\n        }\n    })\n }\n catch(err){\n    console.log(err)\n }\n}\n\n    return(\n      // Some UI\n    )\n}\n```\n\n> ⚠️ **NOTE:** This table shows the parameters for both 'useCheckCodeSync' hook and 'CheckCodeSyncClass' Class, both have the same parameters, the only difference is class and functional component\n\n- params - {project_key:\"projectuniquekey\", version: \"Live app version\"}\n\n| Parameters           | Type       | Required | Default     | Description                                                   |\n| -------------- | ---------- | -------- | ----------- | ------------------------------------------------------------- |\n| `params`    | `Object`   | ✅        | `null`      | This is the parameter for checking available update.                     |\n| `onDownloadProgress` | `callback` | ❌         |    | This is the callback for download bundle file, and will return value of downloading progress of bundle file.                   |\n| `onStartUpdate`   | `callback`  | ❌        |      | This is the callback called when downloading bundle started.                  |\n| `onUpdateFailed`     | `callback`   | ❌        |     |  This is the callback called when downloading of bundle file get failed.   |\n| `onUpdateNotAvailable`     | `function` | ❌        |  | This is function which will be called when there is no update available.        |\n\n\n## restartApp Method\n\nThis method is used to restart the mobile app to load bundle file from correct path, and load the latest bundle.\n\n#### Usage\n```javascript\nimport { restartApp } from 'react-native-code-sync'\n\nonPress={()=> restartApp()}\n\n```\n\n## Support\n\nFor support, email sandeepkumar2121997@gmail.com.","readmeFilename":"README.md"}