{"_id":"@codemagic/react-native-patch","_rev":"11-912e249c5c7d8eff8fe3b28a6b8f7244","name":"@codemagic/react-native-patch","dist-tags":{"latest":"0.5.0"},"versions":{"0.1.0":{"name":"@codemagic/react-native-patch","version":"0.1.0","keywords":["react-native","expo","ota","over-the-air","code-push","hot-update","codemagic","codemagic-patch"],"license":"Apache-2.0","_id":"@codemagic/react-native-patch@0.1.0","maintainers":[{"name":"kimminsik","email":"kmsbernard@gmail.com"},{"name":"tokarev","email":"team@nevercode.io"},{"name":"choiminseok","email":"cms3718@gmail.com"}],"homepage":"https://github.com/codemagic-ci-cd/codemagic-patch/tree/main/client#readme","bugs":{"url":"https://github.com/codemagic-ci-cd/codemagic-patch/issues"},"dist":{"shasum":"63cba734f2c500fa57676618aed598ed11156dd5","tarball":"https://registry.npmjs.org/@codemagic/react-native-patch/-/react-native-patch-0.1.0.tgz","fileCount":325,"integrity":"sha512-M0U3keUAayNpKIj4kmQjBPKur+HAFdeGJZ4DTqLeV+HsaZzikaTd190jrJEASLMUKIRkaUKniiXJMgXw05Szdw==","signatures":[{"sig":"MEUCIHt6wNPX+KsTDqdFEG8mlOb1yHUdPNWrh+/Irbckf8R0AiEA5WRC8fiVMRa2VDHQdaRuIIigHiOo0ZX/LFFNFL5ZeKw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4842078},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","react-native":"./src/index.ts"},"./testing":{"types":"./testing.ts","default":"./dist/testing.js","react-native":"./testing.ts"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"e2e0bc34dde8fdf7eddd419f703d4a98542398e7","scripts":{"lint":"yarn exec eslint \"src/**/*.ts\" \"test/**/*.ts\" \"e2e/**/*.ts\" \"plugin/**/*.ts\"","test":"yarn exec vitest run test/**/*.test.ts","build":"yarn exec rimraf dist plugin/build node_modules/.cache && yarn exec tsc -p tsconfig.build.json && yarn exec tsc -p tsconfig.plugin.json","clean":"yarn exec rimraf dist plugin/build node_modules/.cache","prepare":"rimraf dist plugin/build node_modules/.cache && tsc -p tsconfig.build.json && tsc -p tsconfig.plugin.json","typecheck":"yarn exec tsc -p tsconfig.json","describe:e2e":"node ./e2e/scripts/describe-e2e-setup.mjs","e2e:lane:ios":"node ./e2e/scripts/run-maestro-lane.mjs --platform ios","e2e:ios:smoke":"bash ./e2e/scripts/ios-smoke.sh","e2e:server:test":"yarn exec vitest run test/e2e-server/**/*.test.ts","e2e:lane:android":"node ./e2e/scripts/run-maestro-lane.mjs --platform android","e2e:server:start":"node --import ../node_modules/tsx/dist/loader.mjs ./e2e/scripts/start-scenario-server.ts","e2e:android:smoke":"bash ./e2e/scripts/android-smoke.sh","e2e:scaffold:test":"yarn exec vitest run test/e2e-lanes.test.ts"},"_npmUser":{"name":"kimminsik","email":"kmsbernard@gmail.com"},"repository":{"url":"git+https://github.com/codemagic-ci-cd/codemagic-patch.git","type":"git","directory":"client"},"_npmVersion":"10.8.2","description":"React Native client SDK for Codemagic Patch — over-the-air JavaScript & asset updates for React Native and Expo apps.","directories":{},"_nodeVersion":"20.20.2","react-native":"./src/index.ts","codegenConfig":{"ios":{"modulesConformingToProtocol":{"RCTTurboModule":["CodemagicPatchModule"]}},"name":"CodemagicPatchSpec","type":"modules","android":{"javaPackageName":"io.codemagic.patch"},"jsSrcsDir":"src"},"installConfig":{"hoistingLimits":"workspaces"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"testing":["./testing.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"expo":"~56.0.9","react":"19.2.4","eslint":"^9.36.0","rimraf":"^6.0.1","vitest":"^3.2.4","typescript":"^5.9.3","react-native":"0.84.1"},"peerDependencies":{"react":">=18","react-native":">=0.76"},"_npmOperationalInternal":{"tmp":"tmp/react-native-patch_0.1.0_1782865708783_0.8770100151584206","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@codemagic/react-native-patch","version":"0.1.1","keywords":["react-native","expo","ota","over-the-air","code-push","hot-update","codemagic","codemagic-patch"],"license":"Apache-2.0","_id":"@codemagic/react-native-patch@0.1.1","maintainers":[{"name":"kimminsik","email":"kmsbernard@gmail.com"},{"name":"tokarev","email":"team@nevercode.io"},{"name":"choiminseok","email":"cms3718@gmail.com"}],"homepage":"https://github.com/codemagic-ci-cd/codemagic-patch/tree/main/client#readme","bugs":{"url":"https://github.com/codemagic-ci-cd/codemagic-patch/issues"},"dist":{"shasum":"6d473fc382bc89492df89207b43c9d59294e74be","tarball":"https://registry.npmjs.org/@codemagic/react-native-patch/-/react-native-patch-0.1.1.tgz","fileCount":325,"integrity":"sha512-CDWeymcdeo9XwwsS2plE0TZjnkbD37nS2zWJr3uPF+aTaRuCufmHcZpBm4DDx1RTJxV4jETKWIa2Y4wiccFaww==","signatures":[{"sig":"MEUCIEdhwk5gor7GUMDyrAgbRTcYKN8b3jmcxtmXnLqqN5zyAiEAlzb7q+/oJRwQOL/2quD5VfKLqr42Hx8vXRrjQjuAfeo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4845471},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","react-native":"./src/index.ts"},"./testing":{"types":"./testing.ts","default":"./dist/testing.js","react-native":"./testing.ts"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"ff0848b98a2ce16d675567c93cc560c7146f2b81","scripts":{"lint":"yarn exec eslint \"src/**/*.ts\" \"test/**/*.ts\" \"e2e/**/*.ts\" \"plugin/**/*.ts\"","test":"yarn exec vitest run test/**/*.test.ts","build":"yarn exec rimraf dist plugin/build node_modules/.cache && yarn exec tsc -p tsconfig.build.json && yarn exec tsc -p tsconfig.plugin.json","clean":"yarn exec rimraf dist plugin/build node_modules/.cache","prepare":"rimraf dist plugin/build node_modules/.cache && tsc -p tsconfig.build.json && tsc -p tsconfig.plugin.json","typecheck":"yarn exec tsc -p tsconfig.json","describe:e2e":"node ./e2e/scripts/describe-e2e-setup.mjs","e2e:lane:ios":"node ./e2e/scripts/run-maestro-lane.mjs --platform ios","e2e:ios:smoke":"bash ./e2e/scripts/ios-smoke.sh","e2e:server:test":"yarn exec vitest run test/e2e-server/**/*.test.ts","e2e:lane:android":"node ./e2e/scripts/run-maestro-lane.mjs --platform android","e2e:server:start":"node --import ../node_modules/tsx/dist/loader.mjs ./e2e/scripts/start-scenario-server.ts","e2e:android:smoke":"bash ./e2e/scripts/android-smoke.sh","e2e:scaffold:test":"yarn exec vitest run test/e2e-lanes.test.ts"},"_npmUser":{"name":"kimminsik","email":"kmsbernard@gmail.com"},"repository":{"url":"git+https://github.com/codemagic-ci-cd/codemagic-patch.git","type":"git","directory":"client"},"_npmVersion":"10.9.3","description":"React Native client SDK for Codemagic Patch — over-the-air JavaScript & asset updates for React Native and Expo apps.","directories":{},"_nodeVersion":"22.20.0","react-native":"./src/index.ts","codegenConfig":{"ios":{"modulesConformingToProtocol":{"RCTTurboModule":["CodemagicPatchModule"]}},"name":"CodemagicPatchSpec","type":"modules","android":{"javaPackageName":"io.codemagic.patch"},"jsSrcsDir":"src"},"installConfig":{"hoistingLimits":"workspaces"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"testing":["./testing.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"expo":"~56.0.9","react":"19.2.4","eslint":"^9.36.0","rimraf":"^6.0.1","vitest":"^3.2.4","typescript":"^5.9.3","react-native":"0.84.1"},"peerDependencies":{"react":">=18","react-native":">=0.76"},"_npmOperationalInternal":{"tmp":"tmp/react-native-patch_0.1.1_1784696616999_0.8190684760555824","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@codemagic/react-native-patch","version":"0.1.2","keywords":["react-native","expo","ota","over-the-air","code-push","hot-update","codemagic","codemagic-patch"],"license":"Apache-2.0","_id":"@codemagic/react-native-patch@0.1.2","maintainers":[{"name":"kimminsik","email":"kmsbernard@gmail.com"},{"name":"tokarev","email":"team@nevercode.io"},{"name":"choiminseok","email":"cms3718@gmail.com"}],"homepage":"https://github.com/codemagic-ci-cd/codemagic-patch/tree/main/client#readme","bugs":{"url":"https://github.com/codemagic-ci-cd/codemagic-patch/issues"},"dist":{"shasum":"485c759b1bdaa85390db4cfd1a822571f8cac005","tarball":"https://registry.npmjs.org/@codemagic/react-native-patch/-/react-native-patch-0.1.2.tgz","fileCount":328,"integrity":"sha512-N8CCCmWbSE3Ka27Pc4l3nd4POu7xpchpeJZFjwHP8qZONtNnZLdp4K+RjMxik1YMkxaSe4gl4NyX3R4zJVVeVg==","signatures":[{"sig":"MEQCIC2f9I4ipjeUevbg9TF+r3wt4+fJS37vq5lPnZjwHrq7AiAKJC2AzEaaTwDGXFTgtoG/LyEi9TKtUDorQG2ZFHr9Xw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4859084},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","react-native":"./src/index.ts"},"./testing":{"types":"./testing.ts","default":"./dist/testing.js","react-native":"./testing.ts"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"1b97c73220c83a95fd2958561999fe981cf03575","scripts":{"lint":"yarn exec eslint \"src/**/*.ts\" \"test/**/*.ts\" \"e2e/**/*.ts\" \"plugin/**/*.ts\"","test":"yarn exec vitest run test/**/*.test.ts","build":"yarn exec rimraf dist plugin/build node_modules/.cache && yarn exec tsc -p tsconfig.build.json && yarn exec tsc -p tsconfig.plugin.json","clean":"yarn exec rimraf dist plugin/build node_modules/.cache","prepare":"rimraf dist plugin/build node_modules/.cache && tsc -p tsconfig.build.json && tsc -p tsconfig.plugin.json","typecheck":"yarn exec tsc -p tsconfig.json","describe:e2e":"node ./e2e/scripts/describe-e2e-setup.mjs","e2e:lane:ios":"node ./e2e/scripts/run-maestro-lane.mjs --platform ios","e2e:ios:smoke":"bash ./e2e/scripts/ios-smoke.sh","e2e:server:test":"yarn exec vitest run test/e2e-server/**/*.test.ts","e2e:lane:android":"node ./e2e/scripts/run-maestro-lane.mjs --platform android","e2e:server:start":"node --import ../node_modules/tsx/dist/loader.mjs ./e2e/scripts/start-scenario-server.ts","e2e:android:smoke":"bash ./e2e/scripts/android-smoke.sh","e2e:scaffold:test":"yarn exec vitest run test/e2e-lanes.test.ts"},"_npmUser":{"name":"choiminseok","email":"cms3718@gmail.com"},"repository":{"url":"git+https://github.com/codemagic-ci-cd/codemagic-patch.git","type":"git","directory":"client"},"_npmVersion":"10.9.4","description":"React Native client SDK for Codemagic Patch — over-the-air JavaScript & asset updates for React Native and Expo apps.","directories":{},"_nodeVersion":"22.22.0","react-native":"./src/index.ts","codegenConfig":{"ios":{"modulesConformingToProtocol":{"RCTTurboModule":["CodemagicPatchModule"]}},"name":"CodemagicPatchSpec","type":"modules","android":{"javaPackageName":"io.codemagic.patch"},"jsSrcsDir":"src"},"installConfig":{"hoistingLimits":"workspaces"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"testing":["./testing.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"expo":"~56.0.9","react":"19.2.4","eslint":"^9.36.0","rimraf":"^6.0.1","vitest":"^3.2.4","typescript":"^5.9.3","react-native":"0.84.1"},"peerDependencies":{"react":">=18","react-native":">=0.73"},"_npmOperationalInternal":{"tmp":"tmp/react-native-patch_0.1.2_1785339393701_0.5869672846813871","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@codemagic/react-native-patch","version":"0.1.3","keywords":["react-native","expo","ota","over-the-air","code-push","hot-update","codemagic","codemagic-patch"],"license":"Apache-2.0","_id":"@codemagic/react-native-patch@0.1.3","maintainers":[{"name":"kimminsik","email":"kmsbernard@gmail.com"},{"name":"tokarev","email":"team@nevercode.io"},{"name":"choiminseok","email":"cms3718@gmail.com"}],"homepage":"https://github.com/codemagic-ci-cd/codemagic-patch/tree/main/client#readme","bugs":{"url":"https://github.com/codemagic-ci-cd/codemagic-patch/issues"},"dist":{"shasum":"ab730a010cdef355efd542b9fc39befb5c46c573","tarball":"https://registry.npmjs.org/@codemagic/react-native-patch/-/react-native-patch-0.1.3.tgz","fileCount":327,"integrity":"sha512-XhMEGHli+vGMd9VcMZYfBfYhqAIQ1sojLEp+Tj7gm/x0MpfrvqcNgLn0UYO4Gt3QADDRNEmQ2CWY7jn4ziSGZg==","signatures":[{"sig":"MEQCIF+RSiw5SiHICbSINLbdQNb1tcFeZVWE8H4jxbYwQgzbAiA58JUemMQy6Sw/RRzSqt1/nYhetT/X+BmmgO1imln9Xg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4853956},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","react-native":"./src/index.ts"},"./testing":{"types":"./testing.ts","default":"./dist/testing.js","react-native":"./testing.ts"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"450cb17a216453d3a3121c33a88a2b9e63bafd68","scripts":{"lint":"yarn exec eslint \"src/**/*.ts\" \"test/**/*.ts\" \"e2e/**/*.ts\" \"plugin/**/*.ts\"","test":"yarn exec vitest run test/**/*.test.ts","build":"yarn exec rimraf dist plugin/build node_modules/.cache && yarn exec tsc -p tsconfig.build.json && yarn exec tsc -p tsconfig.plugin.json","clean":"yarn exec rimraf dist plugin/build node_modules/.cache","prepare":"rimraf dist plugin/build node_modules/.cache && tsc -p tsconfig.build.json && tsc -p tsconfig.plugin.json","typecheck":"yarn exec tsc -p tsconfig.json","describe:e2e":"node ./e2e/scripts/describe-e2e-setup.mjs","e2e:lane:ios":"node ./e2e/scripts/run-maestro-lane.mjs --platform ios","e2e:ios:smoke":"bash ./e2e/scripts/ios-smoke.sh","e2e:server:test":"yarn exec vitest run test/e2e-server/**/*.test.ts","e2e:lane:android":"node ./e2e/scripts/run-maestro-lane.mjs --platform android","e2e:server:start":"node --import ../node_modules/tsx/dist/loader.mjs ./e2e/scripts/start-scenario-server.ts","e2e:android:smoke":"bash ./e2e/scripts/android-smoke.sh","e2e:scaffold:test":"yarn exec vitest run test/e2e-lanes.test.ts"},"_npmUser":{"name":"choiminseok","email":"cms3718@gmail.com"},"repository":{"url":"git+https://github.com/codemagic-ci-cd/codemagic-patch.git","type":"git","directory":"client"},"_npmVersion":"11.17.0","description":"React Native client SDK for Codemagic Patch — over-the-air JavaScript & asset updates for React Native and Expo apps.","directories":{},"_nodeVersion":"26.5.0","react-native":"./src/index.ts","codegenConfig":{"ios":{"modulesConformingToProtocol":{"RCTTurboModule":["CodemagicPatchModule"]}},"name":"CodemagicPatchSpec","type":"modules","android":{"javaPackageName":"io.codemagic.patch"},"jsSrcsDir":"src"},"installConfig":{"hoistingLimits":"workspaces"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"testing":["./testing.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"expo":"~56.0.9","react":"19.2.4","eslint":"^9.36.0","rimraf":"^6.0.1","vitest":"^3.2.4","typescript":"^5.9.3","react-native":"0.84.1"},"peerDependencies":{"react":">=18","react-native":">=0.73"},"_npmOperationalInternal":{"tmp":"tmp/react-native-patch_0.1.3_1785341388196_0.12419593160027187","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@codemagic/react-native-patch","version":"0.1.4","keywords":["react-native","expo","ota","over-the-air","code-push","hot-update","codemagic","codemagic-patch"],"license":"Apache-2.0","_id":"@codemagic/react-native-patch@0.1.4","maintainers":[{"name":"kimminsik","email":"kmsbernard@gmail.com"},{"name":"tokarev","email":"team@nevercode.io"},{"name":"choiminseok","email":"cms3718@gmail.com"}],"homepage":"https://github.com/codemagic-ci-cd/codemagic-patch/tree/main/client#readme","bugs":{"url":"https://github.com/codemagic-ci-cd/codemagic-patch/issues"},"dist":{"shasum":"536737941175cb4dfeda2afd84a33141e9098e97","tarball":"https://registry.npmjs.org/@codemagic/react-native-patch/-/react-native-patch-0.1.4.tgz","fileCount":327,"integrity":"sha512-eurkOyzx0llvlfjOtLYhbxf90UJAa2/1OhgrMiux5lURwIJZ92uLKQPz57uxxFWH2D6vQ4goUP2t9JHIGOZsIQ==","signatures":[{"sig":"MEQCIHfk65zVIPzvVFC+GpbiA7KX1x0+G3k3NSslobiP5zzoAiA7fwmRp0rqIR/4oSKu1uL04plKcFecch0AfiZwMkNPgQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4857562},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","react-native":"./src/index.ts"},"./testing":{"types":"./testing.ts","default":"./dist/testing.js","react-native":"./testing.ts"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"5e4ae8a1ebe2c28350184532d3e360d505dccb69","scripts":{"lint":"yarn exec eslint \"src/**/*.ts\" \"test/**/*.ts\" \"e2e/**/*.ts\" \"plugin/**/*.ts\"","test":"yarn exec vitest run test/**/*.test.ts","build":"yarn exec rimraf dist plugin/build node_modules/.cache && yarn exec tsc -p tsconfig.build.json && yarn exec tsc -p tsconfig.plugin.json","clean":"yarn exec rimraf dist plugin/build node_modules/.cache","prepare":"rimraf dist plugin/build node_modules/.cache && tsc -p tsconfig.build.json && tsc -p tsconfig.plugin.json","typecheck":"yarn exec tsc -p tsconfig.json","describe:e2e":"node ./e2e/scripts/describe-e2e-setup.mjs","e2e:lane:ios":"node ./e2e/scripts/run-maestro-lane.mjs --platform ios","e2e:ios:smoke":"bash ./e2e/scripts/ios-smoke.sh","e2e:server:test":"yarn exec vitest run test/e2e-server/**/*.test.ts","e2e:lane:android":"node ./e2e/scripts/run-maestro-lane.mjs --platform android","e2e:server:start":"node --import ../node_modules/tsx/dist/loader.mjs ./e2e/scripts/start-scenario-server.ts","e2e:android:smoke":"bash ./e2e/scripts/android-smoke.sh","e2e:scaffold:test":"yarn exec vitest run test/e2e-lanes.test.ts"},"_npmUser":{"name":"kimminsik","email":"kmsbernard@gmail.com"},"repository":{"url":"git+https://github.com/codemagic-ci-cd/codemagic-patch.git","type":"git","directory":"client"},"_npmVersion":"10.8.2","description":"React Native client SDK for Codemagic Patch — over-the-air JavaScript & asset updates for React Native and Expo apps.","directories":{},"_nodeVersion":"20.20.2","react-native":"./src/index.ts","codegenConfig":{"ios":{"modulesConformingToProtocol":{"RCTTurboModule":["CodemagicPatchModule"]}},"name":"CodemagicPatchSpec","type":"modules","android":{"javaPackageName":"io.codemagic.patch"},"jsSrcsDir":"src"},"installConfig":{"hoistingLimits":"workspaces"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"testing":["./testing.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"expo":"~56.0.9","react":"19.2.4","eslint":"^9.36.0","rimraf":"^6.0.1","vitest":"^3.2.4","typescript":"^5.9.3","react-native":"0.84.1"},"peerDependencies":{"react":">=18","react-native":">=0.73"},"_npmOperationalInternal":{"tmp":"tmp/react-native-patch_0.1.4_1785602831028_0.2816548695789234","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@codemagic/react-native-patch","version":"0.1.5","keywords":["react-native","expo","ota","over-the-air","code-push","hot-update","codemagic","codemagic-patch"],"license":"Apache-2.0","_id":"@codemagic/react-native-patch@0.1.5","maintainers":[{"name":"kimminsik","email":"kmsbernard@gmail.com"},{"name":"tokarev","email":"team@nevercode.io"},{"name":"choiminseok","email":"cms3718@gmail.com"}],"homepage":"https://github.com/codemagic-ci-cd/codemagic-patch/tree/main/client#readme","bugs":{"url":"https://github.com/codemagic-ci-cd/codemagic-patch/issues"},"dist":{"shasum":"3f1412a53bce40ada3923db93ab0a2c6becbe921","tarball":"https://registry.npmjs.org/@codemagic/react-native-patch/-/react-native-patch-0.1.5.tgz","fileCount":327,"integrity":"sha512-Mm7ToedY+lIJoI2/pVQ1CPa4VkK+dTB5T5HWC4g2zFTlZNqCBTxuMW84pYR5q9TUgPx5kbuOcFH626azjqoKzg==","signatures":[{"sig":"MEYCIQCVi6r4i4qZs4atLHWKVVWk3OSwVEKmuzt3iViyOSgGWgIhAONlezWgV18CGOU2W6o1h2hHch/I+lskyJbLfPgR252N","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4857792},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","react-native":"./src/index.ts"},"./testing":{"types":"./testing.ts","default":"./dist/testing.js","react-native":"./testing.ts"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"1fe39c0b1a4ed87314e57126096331b2c1bbfc03","scripts":{"lint":"yarn exec eslint \"src/**/*.ts\" \"test/**/*.ts\" \"e2e/**/*.ts\" \"plugin/**/*.ts\"","test":"yarn exec vitest run test/**/*.test.ts","build":"yarn exec rimraf dist plugin/build node_modules/.cache && yarn exec tsc -p tsconfig.build.json && yarn exec tsc -p tsconfig.plugin.json","clean":"yarn exec rimraf dist plugin/build node_modules/.cache","prepare":"rimraf dist plugin/build node_modules/.cache && tsc -p tsconfig.build.json && tsc -p tsconfig.plugin.json","typecheck":"yarn exec tsc -p tsconfig.json","describe:e2e":"node ./e2e/scripts/describe-e2e-setup.mjs","e2e:lane:ios":"node ./e2e/scripts/run-maestro-lane.mjs --platform ios","e2e:ios:smoke":"bash ./e2e/scripts/ios-smoke.sh","e2e:server:test":"yarn exec vitest run test/e2e-server/**/*.test.ts","e2e:lane:android":"node ./e2e/scripts/run-maestro-lane.mjs --platform android","e2e:server:start":"node --import ../node_modules/tsx/dist/loader.mjs ./e2e/scripts/start-scenario-server.ts","e2e:android:smoke":"bash ./e2e/scripts/android-smoke.sh","e2e:scaffold:test":"yarn exec vitest run test/e2e-lanes.test.ts"},"_npmUser":{"name":"kimminsik","email":"kmsbernard@gmail.com"},"repository":{"url":"git+https://github.com/codemagic-ci-cd/codemagic-patch.git","type":"git","directory":"client"},"_npmVersion":"10.8.2","description":"React Native client SDK for Codemagic Patch — over-the-air JavaScript & asset updates for React Native and Expo apps.","directories":{},"_nodeVersion":"20.20.2","react-native":"./src/index.ts","codegenConfig":{"ios":{"modulesConformingToProtocol":{"RCTTurboModule":["CodemagicPatchModule"]}},"name":"CodemagicPatchSpec","type":"modules","android":{"javaPackageName":"io.codemagic.patch"},"jsSrcsDir":"src"},"installConfig":{"hoistingLimits":"workspaces"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"testing":["./testing.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"expo":"~56.0.9","react":"19.2.4","eslint":"^9.36.0","rimraf":"^6.0.1","vitest":"^3.2.4","typescript":"^5.9.3","react-native":"0.84.1"},"peerDependencies":{"react":">=18","react-native":">=0.73"},"_npmOperationalInternal":{"tmp":"tmp/react-native-patch_0.1.5_1786506183155_0.6734312889697909","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@codemagic/react-native-patch","version":"0.1.6","keywords":["react-native","expo","ota","over-the-air","code-push","hot-update","codemagic","codemagic-patch"],"license":"Apache-2.0","_id":"@codemagic/react-native-patch@0.1.6","maintainers":[{"name":"kimminsik","email":"kmsbernard@gmail.com"},{"name":"tokarev","email":"team@nevercode.io"},{"name":"choiminseok","email":"cms3718@gmail.com"}],"homepage":"https://github.com/codemagic-ci-cd/codemagic-patch/tree/main/client#readme","bugs":{"url":"https://github.com/codemagic-ci-cd/codemagic-patch/issues"},"dist":{"shasum":"08b9a738caeaecf3e3543fdfa3459066caf599e3","tarball":"https://registry.npmjs.org/@codemagic/react-native-patch/-/react-native-patch-0.1.6.tgz","fileCount":327,"integrity":"sha512-kTc4bqPHuvfrhSVKnJ/xXbrNDAAZTgSD9PFczcTeEedP/JFyRVLaeni1Nd4LeS0dQld4g6vjRS8v6DwVhvaghA==","signatures":[{"sig":"MEUCIQCp8YA/AS9horMu8TB+mSeSnj4QIWNIfIvT9LBtmnKtOAIgQmWZcWl1P3FCFlXAmtxJEOkJ+aT6LCgCGMJd/K4KMQs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4857805},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","react-native":"./src/index.ts"},"./testing":{"types":"./testing.ts","default":"./dist/testing.js","react-native":"./testing.ts"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"e5ebe71da496e8d9182e4a6f8626cb87b60a3d6e","scripts":{"lint":"yarn exec eslint \"src/**/*.ts\" \"test/**/*.ts\" \"e2e/**/*.ts\" \"plugin/**/*.ts\"","test":"yarn exec vitest run test/**/*.test.ts","build":"yarn exec rimraf dist plugin/build node_modules/.cache && yarn exec tsc -p tsconfig.build.json && yarn exec tsc -p tsconfig.plugin.json","clean":"yarn exec rimraf dist plugin/build node_modules/.cache","prepare":"rimraf dist plugin/build node_modules/.cache && tsc -p tsconfig.build.json && tsc -p tsconfig.plugin.json","typecheck":"yarn exec tsc -p tsconfig.json","describe:e2e":"node ./e2e/scripts/describe-e2e-setup.mjs","e2e:lane:ios":"node ./e2e/scripts/run-maestro-lane.mjs --platform ios","e2e:ios:smoke":"bash ./e2e/scripts/ios-smoke.sh","e2e:server:test":"yarn exec vitest run test/e2e-server/**/*.test.ts","e2e:lane:android":"node ./e2e/scripts/run-maestro-lane.mjs --platform android","e2e:server:start":"node --import ../node_modules/tsx/dist/loader.mjs ./e2e/scripts/start-scenario-server.ts","e2e:android:smoke":"bash ./e2e/scripts/android-smoke.sh","e2e:scaffold:test":"yarn exec vitest run test/e2e-lanes.test.ts"},"_npmUser":{"name":"kimminsik","email":"kmsbernard@gmail.com"},"repository":{"url":"git+https://github.com/codemagic-ci-cd/codemagic-patch.git","type":"git","directory":"client"},"_npmVersion":"10.8.2","description":"React Native client SDK for Codemagic Patch — over-the-air JavaScript & asset updates for React Native and Expo apps.","directories":{},"_nodeVersion":"20.20.2","react-native":"./src/index.ts","codegenConfig":{"ios":{"modulesConformingToProtocol":{"RCTTurboModule":["CodemagicPatchModule"]}},"name":"CodemagicPatchSpec","type":"modules","android":{"javaPackageName":"io.codemagic.patch"},"jsSrcsDir":"src"},"installConfig":{"hoistingLimits":"workspaces"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"testing":["./testing.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"expo":"~56.0.9","react":"19.2.4","eslint":"^9.36.0","rimraf":"^6.0.1","vitest":"^3.2.4","typescript":"^5.9.3","react-native":"0.84.1"},"peerDependencies":{"react":">=18","react-native":">=0.73"},"_npmOperationalInternal":{"tmp":"tmp/react-native-patch_0.1.6_1786684898643_0.8242096736969626","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@codemagic/react-native-patch","version":"0.2.0","keywords":["react-native","expo","ota","over-the-air","code-push","hot-update","codemagic","codemagic-patch"],"license":"Apache-2.0","_id":"@codemagic/react-native-patch@0.2.0","maintainers":[{"name":"kimminsik","email":"kmsbernard@gmail.com"},{"name":"tokarev","email":"team@nevercode.io"},{"name":"choiminseok","email":"cms3718@gmail.com"}],"homepage":"https://github.com/codemagic-ci-cd/codemagic-patch/tree/main/client#readme","bugs":{"url":"https://github.com/codemagic-ci-cd/codemagic-patch/issues"},"dist":{"shasum":"24f7b0065a60be1c72ecbe328f616ea988b273be","tarball":"https://registry.npmjs.org/@codemagic/react-native-patch/-/react-native-patch-0.2.0.tgz","fileCount":332,"integrity":"sha512-wtqg1q6RH2Fityu7FNWIHTr7MGrhCkFRX94d1XXUgPw3SrJAaT2kWwPNP2+HVXFkaAioOEx/9CnzvwbMrrSaFw==","signatures":[{"sig":"MEUCIQCI+a+kzHKyRL9WjEaNOajtt/pnIjavClRsvYZSHg2EPwIgLq3k43bt2NacH7CB967jfbVkAO1Mac4/agqGyCC+ky4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4863680},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","react-native":"./src/index.ts"},"./testing":{"types":"./testing.ts","default":"./dist/testing.js","react-native":"./testing.ts"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"27cc015236468a90edef8f2a493abd79f9f81ade","scripts":{"lint":"yarn exec eslint \"src/**/*.ts\" \"test/**/*.ts\" \"e2e/**/*.ts\" \"plugin/**/*.ts\"","test":"yarn exec vitest run test/**/*.test.ts","build":"yarn exec rimraf dist plugin/build node_modules/.cache && yarn exec tsc -p tsconfig.build.json && yarn exec tsc -p tsconfig.plugin.json","clean":"yarn exec rimraf dist plugin/build node_modules/.cache","prepare":"rimraf dist plugin/build node_modules/.cache && tsc -p tsconfig.build.json && tsc -p tsconfig.plugin.json","typecheck":"yarn exec tsc -p tsconfig.json","describe:e2e":"node ./e2e/scripts/describe-e2e-setup.mjs","e2e:lane:ios":"node ./e2e/scripts/run-maestro-lane.mjs --platform ios","e2e:ios:smoke":"bash ./e2e/scripts/ios-smoke.sh","e2e:server:test":"yarn exec vitest run test/e2e-server/**/*.test.ts","e2e:lane:android":"node ./e2e/scripts/run-maestro-lane.mjs --platform android","e2e:server:start":"node --import ../node_modules/tsx/dist/loader.mjs ./e2e/scripts/start-scenario-server.ts","e2e:android:smoke":"bash ./e2e/scripts/android-smoke.sh","e2e:scaffold:test":"yarn exec vitest run test/e2e-lanes.test.ts"},"_npmUser":{"name":"choiminseok","email":"cms3718@gmail.com"},"repository":{"url":"git+https://github.com/codemagic-ci-cd/codemagic-patch.git","type":"git","directory":"client"},"_npmVersion":"10.9.2","description":"React Native client SDK for Codemagic Patch — over-the-air JavaScript & asset updates for React Native and Expo apps.","directories":{},"_nodeVersion":"22.14.0","react-native":"./src/index.ts","codegenConfig":{"ios":{"modulesConformingToProtocol":{"RCTTurboModule":["CodemagicPatchModule"]}},"name":"CodemagicPatchSpec","type":"modules","android":{"javaPackageName":"io.codemagic.patch"},"jsSrcsDir":"src"},"installConfig":{"hoistingLimits":"workspaces"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"testing":["./testing.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"expo":"~56.0.9","react":"19.2.4","eslint":"^9.36.0","rimraf":"^6.0.1","vitest":"^3.2.4","typescript":"^5.9.3","react-native":"0.84.1"},"peerDependencies":{"react":">=18","react-native":">=0.73"},"_npmOperationalInternal":{"tmp":"tmp/react-native-patch_0.2.0_1787368719697_0.5092950727044385","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@codemagic/react-native-patch","version":"0.3.0","keywords":["react-native","expo","ota","over-the-air","code-push","hot-update","codemagic","codemagic-patch"],"license":"Apache-2.0","_id":"@codemagic/react-native-patch@0.3.0","maintainers":[{"name":"kimminsik","email":"kmsbernard@gmail.com"},{"name":"tokarev","email":"team@nevercode.io"},{"name":"choiminseok","email":"cms3718@gmail.com"}],"homepage":"https://github.com/codemagic-ci-cd/codemagic-patch/tree/main/client#readme","bugs":{"url":"https://github.com/codemagic-ci-cd/codemagic-patch/issues"},"dist":{"shasum":"3af18f79b353c7db4e8e0a10e5a2499a1f5f4222","tarball":"https://registry.npmjs.org/@codemagic/react-native-patch/-/react-native-patch-0.3.0.tgz","fileCount":339,"integrity":"sha512-CPr6uevirSqVgQt4I/rOgbG0uEOsKooMuzVUMbr0lU2UteywCZZWlH/Lh2xVb+6QvUqvdVvTKoQ4OSmh4GQeCg==","signatures":[{"sig":"MEYCIQDM+D9ogrp4a7lVFmoYAHUxMbVlNboi9Aw4A9/2Axtn9gIhALQb4w+/lNqaxjA3IaCRRTZTN45Ks9R4cxTcTIVc3jP3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCUgyfgKMdoZkBMITaCM7rVHQhO9nZY6WveGrgfpVKazwIgJoJd/5G9pOFe5IB8FjmIkY4TrhadpKKecnRDFPjdNHY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4906704},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","react-native":"./src/index.ts"},"./testing":{"types":"./testing.ts","default":"./dist/testing.js","react-native":"./testing.ts"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"f22294f7c2599b79979b8620e5cb6db4bf3bdf0a","scripts":{"lint":"yarn exec eslint \"src/**/*.ts\" \"test/**/*.ts\" \"e2e/**/*.ts\" \"plugin/**/*.ts\"","test":"yarn exec vitest run test/**/*.test.ts","build":"yarn exec rimraf dist plugin/build node_modules/.cache && yarn exec tsc -p tsconfig.build.json && yarn exec tsc -p tsconfig.plugin.json","clean":"yarn exec rimraf dist plugin/build node_modules/.cache","prepare":"rimraf dist plugin/build node_modules/.cache && tsc -p tsconfig.build.json && tsc -p tsconfig.plugin.json","typecheck":"yarn exec tsc -p tsconfig.json","describe:e2e":"node ./e2e/scripts/describe-e2e-setup.mjs","e2e:lane:ios":"node ./e2e/scripts/run-maestro-lane.mjs --platform ios","e2e:ios:smoke":"bash ./e2e/scripts/ios-smoke.sh","e2e:server:test":"yarn exec vitest run test/e2e-server/**/*.test.ts","e2e:lane:android":"node ./e2e/scripts/run-maestro-lane.mjs --platform android","e2e:server:start":"node --import ../node_modules/tsx/dist/loader.mjs ./e2e/scripts/start-scenario-server.ts","e2e:android:smoke":"bash ./e2e/scripts/android-smoke.sh","e2e:scaffold:test":"yarn exec vitest run test/e2e-lanes.test.ts"},"_npmUser":{"name":"kimminsik","email":"kmsbernard@gmail.com"},"repository":{"url":"git+https://github.com/codemagic-ci-cd/codemagic-patch.git","type":"git","directory":"client"},"_npmVersion":"10.8.2","description":"React Native client SDK for Codemagic Patch — over-the-air JavaScript & asset updates for React Native and Expo apps.","directories":{},"_nodeVersion":"20.20.2","react-native":"./src/index.ts","codegenConfig":{"ios":{"modulesConformingToProtocol":{"RCTTurboModule":["CodemagicPatchModule"]}},"name":"CodemagicPatchSpec","type":"modules","android":{"javaPackageName":"io.codemagic.patch"},"jsSrcsDir":"src"},"installConfig":{"hoistingLimits":"workspaces"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"testing":["./testing.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"expo":"~56.0.9","react":"19.2.4","eslint":"^9.36.0","rimraf":"^6.0.1","vitest":"^3.2.4","typescript":"^5.9.3","react-native":"0.84.1"},"peerDependencies":{"react":">=18","react-native":">=0.73"},"_npmOperationalInternal":{"tmp":"tmp/react-native-patch_0.3.0_1788775945565_0.8484322743313593","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@codemagic/react-native-patch","version":"0.4.0","keywords":["react-native","expo","ota","over-the-air","code-push","hot-update","codemagic","codemagic-patch"],"license":"Apache-2.0","_id":"@codemagic/react-native-patch@0.4.0","maintainers":[{"name":"kimminsik","email":"kmsbernard@gmail.com"},{"name":"tokarev","email":"team@nevercode.io"},{"name":"choiminseok","email":"cms3718@gmail.com"}],"homepage":"https://github.com/codemagic-ci-cd/codemagic-patch/tree/main/client#readme","bugs":{"url":"https://github.com/codemagic-ci-cd/codemagic-patch/issues"},"dist":{"shasum":"a0faabdb8c14821321aec27d1bdc0c17ac5f5235","tarball":"https://registry.npmjs.org/@codemagic/react-native-patch/-/react-native-patch-0.4.0.tgz","fileCount":344,"integrity":"sha512-sDVZakRG23rifDLXToT1YHZ4i0Q24wNHlGmcHrm/qWIF2FrHBUCA01tTSo/btb0ebs4rEb/JJjZg0NJ5eZDAOA==","signatures":[{"sig":"MEYCIQDeIs4fHqSiZG1zRnzROkuf0/4uIEH4O34RsW4LM7O7DgIhAIAJy5wadIq+F21vVjRCCTP96y81qqRyhKlwAlXtFjkY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCbeBBBkFIRCZT7Ms2hfFeiR4ZZL/XiNDodU8uyEkEkcgIhAKE3ec+7yf1eiAU/kvdhQZ5iYTlZeW6cRAIBlmjaMhj8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4912324},"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","react-native":"./src/index.ts"},"./testing":{"types":"./testing.ts","default":"./dist/testing.js","react-native":"./testing.ts"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"df4fc68817c925c9006d43b3ce77b1cf72116d8e","scripts":{"lint":"yarn exec eslint \"src/**/*.ts\" \"test/**/*.ts\" \"e2e/**/*.ts\" \"plugin/**/*.ts\"","test":"yarn exec vitest run test/**/*.test.ts","build":"yarn exec rimraf dist plugin/build node_modules/.cache && yarn exec tsc -p tsconfig.build.json && yarn exec tsc -p tsconfig.plugin.json","clean":"yarn exec rimraf dist plugin/build node_modules/.cache","prepare":"rimraf dist plugin/build node_modules/.cache && tsc -p tsconfig.build.json && tsc -p tsconfig.plugin.json","typecheck":"yarn exec tsc -p tsconfig.json","describe:e2e":"node ./e2e/scripts/describe-e2e-setup.mjs","e2e:lane:ios":"node ./e2e/scripts/run-maestro-lane.mjs --platform ios","e2e:ios:smoke":"bash ./e2e/scripts/ios-smoke.sh","e2e:server:test":"yarn exec vitest run test/e2e-server/**/*.test.ts","e2e:lane:android":"node ./e2e/scripts/run-maestro-lane.mjs --platform android","e2e:server:start":"node --import ../node_modules/tsx/dist/loader.mjs ./e2e/scripts/start-scenario-server.ts","e2e:android:smoke":"bash ./e2e/scripts/android-smoke.sh","e2e:scaffold:test":"yarn exec vitest run test/e2e-lanes.test.ts"},"_npmUser":{"name":"kimminsik","email":"kmsbernard@gmail.com"},"repository":{"url":"git+https://github.com/codemagic-ci-cd/codemagic-patch.git","type":"git","directory":"client"},"_npmVersion":"11.12.1","description":"React Native client SDK for Codemagic Patch — over-the-air JavaScript & asset updates for React Native and Expo apps.","directories":{},"_nodeVersion":"24.15.0","react-native":"./src/index.ts","codegenConfig":{"ios":{"modulesConformingToProtocol":{"RCTTurboModule":["CodemagicPatchModule"]}},"name":"CodemagicPatchSpec","type":"modules","android":{"javaPackageName":"io.codemagic.patch"},"jsSrcsDir":"src"},"installConfig":{"hoistingLimits":"workspaces"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"testing":["./testing.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"expo":"~56.0.9","react":"19.2.4","eslint":"^9.36.0","rimraf":"^6.0.1","vitest":"^3.2.4","typescript":"^5.9.3","react-native":"0.84.1"},"peerDependencies":{"react":">=18","react-native":">=0.73"},"_npmOperationalInternal":{"tmp":"tmp/react-native-patch_0.4.0_1789373553873_0.22961595920360622","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"_id":"@codemagic/react-native-patch@0.5.0","bugs":{"url":"https://github.com/codemagic-ci-cd/codemagic-patch/issues"},"dist":{"shasum":"64ab3c5ef73817a175020e99a34b4f9a05df9494","tarball":"https://registry.npmjs.org/@codemagic/react-native-patch/-/react-native-patch-0.5.0.tgz","fileCount":349,"integrity":"sha512-/jaWAOOvY4p422h9bzuoS2FgfKA82K7c2mIy/aCf1V53csCmQwelFIoRm0Wpf2rX3+/pnGhjGena7AhGv3MPvA==","signatures":[{"sig":"MEUCIQDm3CXTUTw+OBOUd2C5sw6UT1hTEe4z757GTMHWO3J2kAIgOHWXxu5DBIOGRW0tkcTIQR/FR9z2XD9CL0DPyTix7p8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICGB5J1R1VZo/XkAnVaZ574tqwkwS49GTKC6raF8ZxTmAiBwDsVR73ZXrJItdKmwyFl2pnhkV16XRpg8PW3zkELERg=="}],"unpackedSize":4940249},"main":"./dist/index.js","name":"@codemagic/react-native-patch","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","react-native":"./src/index.ts"},"./testing":{"types":"./testing.ts","default":"./dist/testing.js","react-native":"./testing.ts"},"./package.json":"./package.json","./app.plugin.js":"./app.plugin.js"},"gitHead":"b41c6f556e13346ff9b666eb82490900672f1dd9","license":"Apache-2.0","scripts":{"lint":"yarn exec eslint \"src/**/*.ts\" \"test/**/*.ts\" \"e2e/**/*.ts\" \"plugin/**/*.ts\"","test":"yarn exec vitest run test/**/*.test.ts","build":"yarn exec rimraf dist plugin/build node_modules/.cache && yarn exec tsc -p tsconfig.build.json && yarn exec tsc -p tsconfig.plugin.json","clean":"yarn exec rimraf dist plugin/build node_modules/.cache","prepare":"rimraf dist plugin/build node_modules/.cache && tsc -p tsconfig.build.json && tsc -p tsconfig.plugin.json","typecheck":"yarn exec tsc -p tsconfig.json","describe:e2e":"node ./e2e/scripts/describe-e2e-setup.mjs","e2e:lane:ios":"node ./e2e/scripts/run-maestro-lane.mjs --platform ios","e2e:ios:smoke":"bash ./e2e/scripts/ios-smoke.sh","e2e:server:test":"yarn exec vitest run test/e2e-server/**/*.test.ts","e2e:lane:android":"node ./e2e/scripts/run-maestro-lane.mjs --platform android","e2e:server:start":"node --import ../node_modules/tsx/dist/loader.mjs ./e2e/scripts/start-scenario-server.ts","e2e:android:smoke":"bash ./e2e/scripts/android-smoke.sh","e2e:scaffold:test":"yarn exec vitest run test/e2e-lanes.test.ts"},"version":"0.5.0","_npmUser":{"name":"kimminsik","email":"kmsbernard@gmail.com"},"homepage":"https://patch.codemagic.io/","keywords":["react-native","expo","ota","over-the-air","code-push","hot-update","codemagic","codemagic-patch"],"repository":{"url":"git+https://github.com/codemagic-ci-cd/codemagic-patch.git","type":"git","directory":"client"},"_npmVersion":"10.8.2","description":"React Native client SDK for Codemagic Patch — over-the-air JavaScript & asset updates for React Native and Expo apps.","directories":{},"maintainers":[{"name":"kimminsik","email":"kmsbernard@gmail.com"},{"name":"tokarev","email":"team@nevercode.io"},{"name":"choiminseok","email":"cms3718@gmail.com"}],"_nodeVersion":"20.20.2","react-native":"./src/index.ts","codegenConfig":{"ios":{"modulesConformingToProtocol":{"RCTTurboModule":["CodemagicPatchModule"]}},"name":"CodemagicPatchSpec","type":"modules","android":{"javaPackageName":"io.codemagic.patch"},"jsSrcsDir":"src"},"installConfig":{"hoistingLimits":"workspaces"},"publishConfig":{"access":"public"},"typesVersions":{"*":{"testing":["./testing.ts"]}},"_hasShrinkwrap":false,"devDependencies":{"expo":"~56.0.9","jsdom":"^29.1.1","react":"19.2.4","eslint":"^9.36.0","rimraf":"^6.0.1","vitest":"^3.2.4","react-dom":"19.2.4","typescript":"^5.9.3","@types/react":"^19.2.17","react-native":"0.84.1","@types/react-dom":"^19.2.3"},"peerDependencies":{"react":">=18","react-native":">=0.73"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-native-patch_0.5.0_1790134555144_0.5993055432338505"}}},"time":{"created":"2026-07-01T00:28:28.587Z","modified":"2026-09-23T03:35:55.436Z","0.1.0":"2026-07-01T00:28:28.991Z","0.1.1":"2026-07-22T05:03:37.190Z","0.1.2":"2026-07-29T15:36:33.916Z","0.1.3":"2026-07-29T16:09:48.434Z","0.1.4":"2026-08-01T16:47:11.272Z","0.1.5":"2026-08-12T03:43:03.385Z","0.1.6":"2026-08-14T05:21:38.849Z","0.2.0":"2026-08-22T03:18:39.890Z","0.3.0":"2026-09-07T10:12:25.695Z","0.4.0":"2026-09-14T08:12:34.015Z","0.5.0":"2026-09-23T03:35:55.272Z"},"bugs":{"url":"https://github.com/codemagic-ci-cd/codemagic-patch/issues"},"license":"Apache-2.0","homepage":"https://patch.codemagic.io/","keywords":["react-native","expo","ota","over-the-air","code-push","hot-update","codemagic","codemagic-patch"],"repository":{"url":"git+https://github.com/codemagic-ci-cd/codemagic-patch.git","type":"git","directory":"client"},"description":"React Native client SDK for Codemagic Patch — over-the-air JavaScript & asset updates for React Native and Expo apps.","maintainers":[{"name":"kimminsik","email":"kmsbernard@gmail.com"},{"name":"tokarev","email":"team@nevercode.io"},{"name":"choiminseok","email":"cms3718@gmail.com"}],"readme":"# `@codemagic/react-native-patch`\n\nClient SDK for [Codemagic Patch](https://github.com/codemagic-ci-cd/codemagic-patch): a self-hosted CodePush successor for over-the-air updates on React Native and Expo apps. Download, verify, and boot JS/asset bundles on device so you can ship JS changes without a new store binary.\n\nThis package is only the on-device side. You also need a Patch server (self-hosted) and the [`cmpatch` CLI](https://github.com/codemagic-ci-cd/codemagic-patch/tree/main/cli) to publish releases. The monorepo has both, plus a dashboard and a local evaluation stack.\n\n## What you get\n\nFrom the [monorepo](https://github.com/codemagic-ci-cd/codemagic-patch):\n\n- Full stack via Docker Compose (API, worker, Postgres, MinIO, dashboard)\n- Web dashboard with RBAC and release management\n- On-device demo app for trying OTA updates quickly\n\nFrom this SDK:\n\n- Binary patches when available, for smaller downloads (falls back to a full bundle)\n- Signature verification when you configure a public key\n- Automatic rollback if a new package fails before the app reports ready\n- Expo config plugin for prebuild projects, plus bare React Native wiring\n- One-line `Patch.wrap(App)` root wrapper, CodePush-style `sync()`, or step-by-step APIs when you need control\n\n  <img width=\"700\" alt=\"the self-hosted Patch dashboard\" src=\"https://github.com/user-attachments/assets/e48f2c99-78e9-48c0-ae75-5a5278581e7d\" />\n\n## Requirements\n\n- React Native `0.73+` — New Architecture support starts at RN 0.76; RN 0.73–0.75 are supported on the Old (Paper) Architecture only\n- Android `minSdkVersion` 23+ (the library follows the host's `rootProject.ext.minSdkVersion`; without one it builds at 23)\n- Android native build with CMake/JNI support\n- iOS native build with CocoaPods and mixed Swift/ObjC++ compilation\n- Expo SDK 52+ (via the bundled config plugin — see [Expo apps](#expo-apps))\n- **Expo Go is not supported** — the native module is not part of the Expo Go runtime\n\n## Installation\n\n```sh\nnpm install @codemagic/react-native-patch\n# or\nyarn add @codemagic/react-native-patch\n```\n\n`react` (`>=18`) and `react-native` (`>=0.73`) are peer dependencies. On iOS, install the native pod:\n\n```sh\ncd ios && pod install\n```\n## Quick start\n\nConfiguration lives in **native resources** (deployment key, API URL, download base URL, optional public key), not in a JS config object. The Expo plugin writes those for you; bare apps set them in `Info.plist` / `strings.xml` and wire bundle selection.\n\n### Expo (config plugin)\n\nIf you maintain native projects manually, follow [manual native setup](https://patch.codemagic.io/docs/setup/native-setup#option-a-bare-react-native).\n\n```json\n{\n  \"plugins\": [\n    [\"@codemagic/react-native-patch\", {\n      \"ios\": {\n        \"deploymentKey\": \"<key>\",\n        \"downloadBaseUrl\": \"<url>\",\n        \"apiUrl\": \"<url>\",\n        \"publicKey\": \"<pem>\"\n      },\n      \"android\": {\n        \"deploymentKey\": \"<key>\",\n        \"downloadBaseUrl\": \"<url>\",\n        \"apiUrl\": \"<url>\",\n        \"publicKey\": \"<pem>\"\n      }\n    }]\n  ]\n}\n```\n\nConfigure at least one platform. Every block you provide needs `deploymentKey`, `downloadBaseUrl`, and `apiUrl` (`publicKey` and `maxLaunchAttempts` are optional). Then run `expo prebuild`. See [Configuration](#configuration) for where each value comes from.\n\n### Bare React Native\n\nAdd `CodemagicPatchDeploymentKey`, `CodemagicPatchApiUrl`, and `CodemagicPatchDownloadBaseUrl` (optional `CodemagicPatchPublicKey`) to Android `strings.xml` and iOS `Info.plist`, then point RN’s JS bundle path at `CodemagicPatch.getJSBundleFile` / `CodemagicPatch.bundleURL()` so boot order is pending package → current package → embedded bundle. Full snippets are in [Configuration](#configuration) below.\n\n### Wrap the root component\n\n```tsx\nimport * as Patch from \"@codemagic/react-native-patch\";\n\nfunction App() {\n  return <AppNavigator />;\n}\n\nexport default Patch.wrap(App);\n```\n\n`wrap()` renders your app right away and runs `sync()` once the root has mounted. With no options, ordinary updates install on the next restart and mandatory updates install immediately; pass `WrapOptions` as the second argument to change that (`Patch.wrap(App, { installMode: Patch.InstallMode.ON_NEXT_RESUME })`).\n\nSet `checkFrequency: \"ON_APP_RESUME\"` to check on mount and on foreground return; the default `\"ON_APP_START\"` checks only on mount. For example: `Patch.wrap(App, { checkFrequency: Patch.CheckFrequency.ON_APP_RESUME, installMode: Patch.InstallMode.ON_NEXT_RESTART })`. For manual checks, use the direct APIs without `wrap()`. `Patch.CheckFrequency` and `Patch.InstallMode` provide named constants; existing string literals remain supported.\n\n`wrap()` forwards props and refs to your root component. It does not copy custom static properties, such as `App.navigationOptions`, onto the wrapper.\n\nMounting the wrapped root is what reports the app as ready: `sync()` calls `notifyAppReady()` first, which confirms the running package and arms rollback for the next one. If your app has to finish an asynchronous bootstrap (authentication, database migration) before it can vouch for the running bundle, skip `wrap()` and call `sync()` yourself at that point:\n\n```ts\nimport { sync } from \"@codemagic/react-native-patch\";\nimport { bootstrapApp } from \"./bootstrap\"; // Your app's initialization routine.\n\nawait bootstrapApp(); // If initialization fails, do not confirm the bundle.\nconst status = await sync();\n// \"update-installed\" | \"up-to-date\" | \"embedded-revert-applied\"\n// | \"sync-in-progress\" | \"error\"\n```\n\n`sync()` never throws. It checks for an update, downloads and installs when appropriate, and reports app readiness so a bad package can roll back.\n\nFor check / download / install as separate steps, restart timing helpers (`restartApp`, `allowRestart` / `disallowRestart`), `getRunningBundleUpdateMetadata()` to read which OTA release is running, or `isNextVersionReady()` to learn whether an installed update is waiting for the next reload, see the [SDK types](https://github.com/codemagic-ci-cd/codemagic-patch/blob/main/client/src/types.ts).\n\n## Configuration\n\nCodemagic Patch is configured through **native resources**, not a JS API — the deployment key, URLs, public key, and binary version are read natively before the SDK initializes. Provide these values per host app:\n\n| Resource | Required | Meaning |\n| --- | --- | --- |\n| `CodemagicPatchDeploymentKey` | yes | Deployment key for this app/track |\n| `CodemagicPatchApiUrl` | yes | API server origin (the server's `SERVER_URL`), e.g. `https://updates.example.com`. The SDK appends `/v1/...` |\n| `CodemagicPatchDownloadBaseUrl` | yes | Artifact origin (the server's `PUBLIC_BASE_URL`), e.g. `https://storage.example.com/codemagic-patch`. May include a bucket/path prefix; the SDK appends manifest/artifact paths |\n| `CodemagicPatchPublicKey` | no | PEM public key; required only when enforcing client-side signature verification |\n| `CodemagicPatchMaxLaunchAttempts` | no | Positive integer; consecutive launches a pending update may boot without `notifyAppReady()` before crash rollback. Default `3`; see [`notifyAppReady()`](https://patch.codemagic.io/docs/reference/sdk-reference#notifyappready) |\n\nThe two URLs point at different systems (API server vs. object storage / CDN), which is why one usually carries a path and the other does not.\n\n**Where the values come from:** the deployment key is the `DEPLOYMENT_KEY` column of `cmpatch deployment list --app <app-name> --format table` (or the deployment's page in the dashboard); the API URL and download base URL are printed by the self-host installer when the server is set up. Use **separate apps — and therefore separate deployment keys — for iOS and Android**.\n\n### Bare React Native\n\n1. **Declare the resources.**\n\n   iOS — `ios/<YourApp>/Info.plist`:\n\n   ```xml\n   <key>CodemagicPatchDeploymentKey</key>\n   <string>ios-staging-deployment-key</string>\n   <key>CodemagicPatchDownloadBaseUrl</key>\n   <string>https://storage-updates.example.com/codemagic-patch</string>\n   <key>CodemagicPatchApiUrl</key>\n   <string>https://updates.example.com</string>\n   <!-- optional, only when enforcing code signing -->\n   <key>CodemagicPatchPublicKey</key>\n   <string>-----BEGIN PUBLIC KEY-----\\n...\\n-----END PUBLIC KEY-----</string>\n   <!-- optional, defaults to 3 -->\n   <key>CodemagicPatchMaxLaunchAttempts</key>\n   <integer>3</integer>\n   ```\n\n   Android — `android/app/src/main/res/values/strings.xml`:\n\n   ```xml\n   <resources>\n     <string name=\"CodemagicPatchDeploymentKey\" translatable=\"false\">android-staging-deployment-key</string>\n     <string name=\"CodemagicPatchDownloadBaseUrl\" translatable=\"false\">https://storage-updates.example.com/codemagic-patch</string>\n     <string name=\"CodemagicPatchApiUrl\" translatable=\"false\">https://updates.example.com</string>\n     <!-- optional, only when enforcing code signing -->\n     <string name=\"CodemagicPatchPublicKey\" translatable=\"false\">-----BEGIN PUBLIC KEY-----\\n...\\n-----END PUBLIC KEY-----</string>\n     <!-- optional, defaults to 3 -->\n     <string name=\"CodemagicPatchMaxLaunchAttempts\" translatable=\"false\">3</string>\n   </resources>\n   ```\n\n2. **Wire native bundle selection** before the RN bridge starts, so boot order is **pending package → current package → embedded bundle**.\n\n   Android — feed `CodemagicPatch.getJSBundleFile(applicationContext)` into React Native in `MainApplication`. On RN ≤ 0.81 (`ReactNativeHost`), override `getJSBundleFile()`:\n\n   ```kotlin\n   override fun getJSBundleFile(): String? =\n       CodemagicPatch.getJSBundleFile(applicationContext)\n   ```\n\n   On RN 0.82+ (new-arch `reactHost`), pass it as `jsBundleFilePath`:\n\n   ```kotlin\n   override val reactHost: ReactHost by lazy {\n     getDefaultReactHost(\n       context = applicationContext,\n       packageList = PackageList(this).packages,\n       jsBundleFilePath = CodemagicPatch.getJSBundleFile(applicationContext),\n     )\n   }\n   ```\n\n   iOS — import `CodemagicPatchClient` and override `bundleURL()` / `sourceURL(for:)` in `AppDelegate` with the same selection order. Keep the `DEBUG` branch pointing at Metro so local development keeps working:\n\n   ```swift\n   import CodemagicPatchClient\n\n   class ReactNativeDelegate: RCTDefaultReactNativeFactoryDelegate {\n     override func sourceURL(for bridge: RCTBridge) -> URL? {\n       self.bundleURL()\n     }\n\n     override func bundleURL() -> URL? {\n   #if DEBUG\n       RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: \"index\")\n   #else\n       CodemagicPatch.bundleURL() ?? Bundle.main.url(forResource: \"main\", withExtension: \"jsbundle\")\n   #endif\n     }\n   }\n   ```\n\n   On RN ≤ 0.76, where the app template still ships an Objective-C++ `AppDelegate.mm`, override `sourceURLForBridge:` with the same selection. The native module is a Swift pod exposed to Objective-C as `@objc(CodemagicPatch)`; its generated `-Swift.h` is not on the host target's header search paths and `@import` is unavailable in ObjC++, so forward-declare the surface you call:\n\n   ```objc\n   // CodemagicPatch is a Swift pod exposed as @objc(CodemagicPatch); forward-declare it —\n   // the implementation links in from the pod's static library.\n   @interface CodemagicPatch : NSObject\n   + (NSURL *_Nullable)bundleURL;\n   @end\n\n   - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge\n   {\n   #if DEBUG\n     return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@\"index\"];\n   #else\n     return [CodemagicPatch bundleURL] ?: [[NSBundle mainBundle] URLForResource:@\"main\" withExtension:@\"jsbundle\"];\n   #endif\n   }\n   ```\n\n   Expected embedded bundle names are `index.android.bundle` (Android) and `main.jsbundle` (iOS). If the SDK cannot determine a non-blank binary version (`versionName` / `CFBundleShortVersionString`), it no-ops and falls back to the embedded bundle.\n\n   > **Debug builds load JS from Metro**, so OTA updates are not picked up there — that is expected, not a wiring problem. To see an update apply, run a release-style build.\n\n3. **Register the native module** for your architecture — the TurboModule (New Architecture) or the bridge module/package (Old Architecture). Autolinking handles this in most apps.\n\n### Expo apps\n\nFor projects using Prebuild, use the bundled config plugin (`app.plugin.js`) as shown in [Quick start](#expo-config-plugin). Native projects maintained manually use the native configuration and bundle-selection steps instead. The plugin configuration is:\n\n```json\n{\n  \"plugins\": [\n    [\"@codemagic/react-native-patch\", {\n      \"ios\":     { \"deploymentKey\": \"<key>\", \"downloadBaseUrl\": \"<url>\", \"apiUrl\": \"<url>\", \"publicKey\": \"<pem>\" },\n      \"android\": { \"deploymentKey\": \"<key>\", \"downloadBaseUrl\": \"<url>\", \"apiUrl\": \"<url>\", \"publicKey\": \"<pem>\" }\n    }]\n  ]\n}\n```\n\nThe plugin writes the native resources and wires bundle selection automatically (Configuration steps 1–3). Configure **at least one platform**, and complete every block you provide — `deploymentKey`, `downloadBaseUrl`, and `apiUrl` are all required per block (`publicKey` and `maxLaunchAttempts` are optional). The plugin resolves `expo/config-plugins` from your app's own Expo SDK, so there is nothing extra to install; `expo` is not a runtime or peer dependency of this package.\n\n## Usage\n\nThe simplest integration is `Patch.wrap(App)`, which renders your root component immediately and runs `sync()` after it mounts. `sync()` checks for an update, downloads it, installs it, and reports app readiness in one call. It never throws — it resolves to a status string. Call it directly when you need to pick the moment yourself, for example after an asynchronous bootstrap:\n\n```ts\nimport { sync } from \"@codemagic/react-native-patch\";\nimport { bootstrapApp } from \"./bootstrap\"; // Your app's initialization routine.\n\nawait bootstrapApp(); // If initialization fails, do not confirm the bundle.\nconst status = await sync();\n// \"update-installed\" | \"up-to-date\" | \"embedded-revert-applied\"\n// | \"sync-in-progress\" | \"error\"\n```\n\nFor finer control, drive the steps yourself and call `notifyAppReady()` once the app has started successfully (so the update is not rolled back):\n\n```ts\nimport {\n  checkForUpdate,\n  downloadUpdate,\n  installUpdate,\n  notifyAppReady,\n} from \"@codemagic/react-native-patch\";\n```\n\n`restartApp`, `allowRestart` / `disallowRestart`, and `hydrate` are also exported for controlling reload timing, `getRunningBundleUpdateMetadata()` reports the running OTA release (`{ label, packageHash, releaseNotes }`, or `null` on the embedded bundle), and `isNextVersionReady()` reports whether a newer package is installed and waiting for the next reload. See the [type definitions](https://github.com/codemagic-ci-cd/codemagic-patch/tree/main/client/src/types.ts) for the full API surface.\n\n## Documentation\n\nFull integration guide, update protocol, and self-hosting instructions live in the [Codemagic Patch repository](https://github.com/codemagic-ci-cd/codemagic-patch).\n\nComing from `react-native-code-push`? The [CodePush migration guide](https://github.com/codemagic-ci-cd/codemagic-patch/blob/main/docs/migrate-from-codepush.md) maps the native config resources, JS APIs, and CLI commands to their Codemagic Patch equivalents.\n\n## License\n\n[Apache-2.0](./LICENSE)\n","readmeFilename":"README.md"}