{"_id":"@codeimplants/version-control","_rev":"19-54177f1b1fb00a7fac8cc152a0332c7b","name":"@codeimplants/version-control","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"@codeimplants/version-control","version":"1.0.0","_id":"@codeimplants/version-control@1.0.0","maintainers":[{"name":"codeimplants","email":"codeimplants@gmail.com"}],"dist":{"shasum":"76e8815850166ef3240b095ca731d77c0264bf40","tarball":"https://registry.npmjs.org/@codeimplants/version-control/-/version-control-1.0.0.tgz","fileCount":52,"integrity":"sha512-Lx1oVPIMspin/jAY994WYP9U8ok7c0Bsols4U8L9+ZgdSQl67AbnWsA9s0a/Fi0td0/BTX04mWlcUD1uJkWmLw==","signatures":[{"sig":"MEUCIALfO3mPnC0FK6HxEjwtmyqTP4aJRcjt6NR1rnfYl/tlAiEAlYn+X876LZHtA84p4DXkPBOhwkfNSPQbqvq/Un5k9HI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66078},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","publish:pkg":"pnpm build && pnpm publish --access public"},"_npmUser":{"name":"codeimplants","email":"codeimplants@gmail.com"},"_npmVersion":"11.6.2","directories":{},"_nodeVersion":"22.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/version-control_1.0.0_1769867949031_0.28797935044838807","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@codeimplants/version-control","version":"1.0.1","keywords":["version-control","app-version","mobile-versioning","force-update","soft-update","maintenance-mode","capacitor","ionic","react-native","react","angular","android","ios","mobile-sdk","update-management","feature-control","remote-config","sdk"],"_id":"@codeimplants/version-control@1.0.1","maintainers":[{"name":"codeimplants","email":"codeimplants@gmail.com"}],"dist":{"shasum":"195658109bb209e6589ba02f61f21c30d3c189ea","tarball":"https://registry.npmjs.org/@codeimplants/version-control/-/version-control-1.0.1.tgz","fileCount":52,"integrity":"sha512-RWkC6rSrRnT2EM2G7a9a2boVU6yi0JffwlwrXoCvWku7NxJHaEwF+UCAw0rMRbTKE+uzg/HlJ5A8t72pBN0s+A==","signatures":[{"sig":"MEQCIDMb5ma/4KlKeLsSIx24+Eexi3JBGO00GuHqEl2Lp2gXAiB8AA2RKgPEXj+wgnhM9BT4ldixjWlRAcFVJ9YaSoBYFA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66651},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","publish:pkg":"pnpm build && pnpm publish --access public"},"_npmUser":{"name":"codeimplants","email":"codeimplants@gmail.com"},"_npmVersion":"11.6.2","description":"A lightweight cross-platform SDK to remotely control app version behavior such as soft update, force update, and maintenance mode using backend-driven rules, without enforcing UI.","directories":{},"_nodeVersion":"22.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/version-control_1.0.1_1769868058697_0.7029007625563375","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@codeimplants/version-control","version":"1.0.2","keywords":["version-control","app-version","mobile-versioning","force-update","soft-update","maintenance-mode","capacitor","ionic","react-native","react","angular","android","ios","mobile-sdk","update-management","feature-control","remote-config","sdk"],"_id":"@codeimplants/version-control@1.0.2","maintainers":[{"name":"codeimplants","email":"codeimplants@gmail.com"}],"dist":{"shasum":"7534a9ffa3b26cef45e1694e8455482bad810449","tarball":"https://registry.npmjs.org/@codeimplants/version-control/-/version-control-1.0.2.tgz","fileCount":32,"integrity":"sha512-rUur5TcxK8NuPFMtGjo9DAPg+YUmJ2GnxJSux1fQNRFAkMw+Nuf9akrXy3roGx7BgxG72Tpd0Xx73ubpgdOlyg==","signatures":[{"sig":"MEUCIQCRGB6f+Qt3s/3ph5LEZfmNOZsDS5S3r/pQzCR/B3o+bAIgIVSLcKUTsJ94923YY0yh2CpU79GF02eyljd/UbjClmU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28856},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"4187deb9ff6b1558a56946ec010699187771dd05","scripts":{"build":"tsc","publish:pkg":"pnpm build && pnpm publish --access public"},"_npmUser":{"name":"codeimplants","email":"codeimplants@gmail.com"},"_npmVersion":"11.6.2","description":"A lightweight cross-platform SDK to remotely control app version behavior such as soft update, force update, and maintenance mode using backend-driven rules, without enforcing UI.","directories":{},"_nodeVersion":"22.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/version-control_1.0.2_1771008699376_0.270354655055709","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@codeimplants/version-control","version":"1.0.4","keywords":["version-control","app-version","mobile-versioning","force-update","soft-update","maintenance-mode","capacitor","ionic","react-native","react","angular","android","ios","mobile-sdk","update-management","feature-control","remote-config","sdk"],"_id":"@codeimplants/version-control@1.0.4","maintainers":[{"name":"codeimplants","email":"codeimplants@gmail.com"}],"dist":{"shasum":"1c57c96994b4ba4ec62e3e9e79370de0dc91cd5e","tarball":"https://registry.npmjs.org/@codeimplants/version-control/-/version-control-1.0.4.tgz","fileCount":32,"integrity":"sha512-nBgrLPusa/nhTWos/Xt7Oelq0tPckb/509Y/CvMkwymL0yrYIPEX0/QmHiFpQnxBbvkfj1JiG7nQtoIxZQGrDA==","signatures":[{"sig":"MEUCIQC/Zo2fWRJoNx1wpKnZin0YfmATKeQUJ/+CF7yevONDaAIgAaJCMyHv5stocUp/0m2Q4d0Dm4yHRCt+gdhIl31L8CM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31344},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"e797363ce1bf640de3732cc0644bebe0269fdf2e","scripts":{"build":"tsc","publish:pkg":"pnpm build && pnpm publish --access public"},"_npmUser":{"name":"codeimplants","email":"codeimplants@gmail.com"},"_npmVersion":"11.6.2","description":"A lightweight cross-platform SDK to remotely control app version behavior such as soft update, force update, and maintenance mode using backend-driven rules, without enforcing UI.","directories":{},"_nodeVersion":"22.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/version-control_1.0.4_1771178755622_0.3714654114831828","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@codeimplants/version-control","version":"1.0.5","keywords":["version-control","app-version","mobile-versioning","force-update","soft-update","maintenance-mode","capacitor","ionic","react-native","react","angular","android","ios","mobile-sdk","update-management","feature-control","remote-config","sdk"],"_id":"@codeimplants/version-control@1.0.5","maintainers":[{"name":"codeimplants","email":"codeimplants@gmail.com"}],"dist":{"shasum":"950930d0bb3943d070a5d883394ccd8afba1c597","tarball":"https://registry.npmjs.org/@codeimplants/version-control/-/version-control-1.0.5.tgz","fileCount":32,"integrity":"sha512-EnpJT+8RxtCp6fL1v4Yy4DXExuuX6nlxoO8FIhQeII9LLt2eSeJwwFGUSAQVy1V8GGKphmc7ywPhVijypvEG1A==","signatures":[{"sig":"MEUCIGO5MEKUHui6lpcPWVr0pt11/qtGmg8cMC0JCUhAtJ1oAiEAscDGWcKy8NH3/z6RKvKDQ3VQHRdDxGrZXOgTnngCP6A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":31490},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"ecb63aee3bb80528bf80b5df667e57fb2ad7d7e9","scripts":{"build":"tsc","publish:pkg":"pnpm build && pnpm publish --access public"},"_npmUser":{"name":"codeimplants","email":"codeimplants@gmail.com"},"_npmVersion":"11.6.2","description":"A lightweight cross-platform SDK to remotely control app version behavior such as soft update, force update, and maintenance mode using backend-driven rules, without enforcing UI.","directories":{},"_nodeVersion":"22.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/version-control_1.0.5_1771179078651_0.33703579039404663","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@codeimplants/version-control","version":"1.0.6","keywords":["version-control","app-version","mobile-versioning","force-update","soft-update","maintenance-mode","capacitor","ionic","react-native","react","angular","android","ios","mobile-sdk","update-management","feature-control","remote-config","sdk"],"_id":"@codeimplants/version-control@1.0.6","maintainers":[{"name":"codeimplants","email":"codeimplants@gmail.com"}],"dist":{"shasum":"1803e1e4199fa08eb34ea835230b72e3874eeef4","tarball":"https://registry.npmjs.org/@codeimplants/version-control/-/version-control-1.0.6.tgz","fileCount":32,"integrity":"sha512-wDzLDWrT3siC6RISc/DxpCuHnVzZWI79bMcIzyFqcNoRz2GnM2K6SwWTG7zaqouTFi9Rqs7qh0Q9vjK8o2o4Vw==","signatures":[{"sig":"MEYCIQC6t88nXkL40YvAry3p5p9qZhNsRMr725eHdBpDu3kQVAIhAJ6GOo/MYqKTTJ+xjb4WelMngLTtLYHa7tABYCNsNwNg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":42193},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"ecb63aee3bb80528bf80b5df667e57fb2ad7d7e9","scripts":{"build":"tsc","publish:pkg":"pnpm build && pnpm publish --access public"},"_npmUser":{"name":"codeimplants","email":"codeimplants@gmail.com"},"_npmVersion":"11.6.2","description":"A lightweight cross-platform SDK to remotely control app version behavior such as soft update, force update, and maintenance mode using backend-driven rules, without enforcing UI.","directories":{},"_nodeVersion":"22.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/version-control_1.0.6_1771180947395_0.5754683858719309","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@codeimplants/version-control","version":"1.0.7","keywords":["version-control","app-version","mobile-versioning","force-update","soft-update","maintenance-mode","capacitor","ionic","react-native","react","angular","android","ios","mobile-sdk","update-management","feature-control","remote-config","sdk"],"_id":"@codeimplants/version-control@1.0.7","maintainers":[{"name":"codeimplants","email":"codeimplants@gmail.com"}],"dist":{"shasum":"cbf26ef67ee20b023921be015184bbd831d74901","tarball":"https://registry.npmjs.org/@codeimplants/version-control/-/version-control-1.0.7.tgz","fileCount":32,"integrity":"sha512-mnAhx8wQi8n/s+zwrmIkqkRYnLOusAjLY/T6nCcbz2KedNF2tTOjte7CerMEDm4fL24hts/0185w992OvXhc+Q==","signatures":[{"sig":"MEUCIHmlPdQgb8F6pwIQYTJmvZBX4g+7MPDH/H0a5uoZbsQYAiEAjmAIMFGguIP2eswvyRkbmt/ONKxsnVQYug2yMl579/s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41213},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"ecb63aee3bb80528bf80b5df667e57fb2ad7d7e9","scripts":{"build":"tsc","publish:pkg":"pnpm build && pnpm publish --access public"},"_npmUser":{"name":"codeimplants","email":"codeimplants@gmail.com"},"_npmVersion":"11.6.2","description":"A lightweight cross-platform SDK to remotely control app version behavior such as soft update, force update, and maintenance mode using backend-driven rules, without enforcing UI.","directories":{},"_nodeVersion":"22.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/version-control_1.0.7_1771226868566_0.2449813393031106","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@codeimplants/version-control","version":"1.0.8","keywords":["version-control","app-version","mobile-versioning","force-update","soft-update","maintenance-mode","capacitor","ionic","react-native","react","angular","android","ios","mobile-sdk","update-management","feature-control","remote-config","sdk"],"_id":"@codeimplants/version-control@1.0.8","maintainers":[{"name":"codeimplants","email":"codeimplants@gmail.com"}],"dist":{"shasum":"ff5eaf29f2fa9c31c8eefe46283fd9d09c77a409","tarball":"https://registry.npmjs.org/@codeimplants/version-control/-/version-control-1.0.8.tgz","fileCount":32,"integrity":"sha512-OepwGBf/ZIsZvK2Nfn8iR1jxbGGZg4JVgtwvPL36TvKOR/u2PyqjyTWSJIB5EQ/2aLePmY5j046+NdO7Fl2iXw==","signatures":[{"sig":"MEUCIQCFun/LZqWZUYfzlQe3q9z44LmHZf6vb3DSNm3SkxgO+gIgMu7ahbar2hFBOkVWGHawXMhDaHMBjp7fplYuzWrUh/8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41472},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"cea3f6a6249968c09ee84eee206bfa116f6c2c67","scripts":{"build":"tsc","publish:pkg":"pnpm build && pnpm publish --access public"},"_npmUser":{"name":"codeimplants","email":"codeimplants@gmail.com"},"_npmVersion":"11.6.2","description":"A lightweight cross-platform SDK to remotely control app version behavior such as soft update, force update, and maintenance mode using backend-driven rules, without enforcing UI.","directories":{},"_nodeVersion":"22.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/version-control_1.0.8_1771958273678_0.96712734099377","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@codeimplants/version-control","version":"1.0.9","keywords":["version-control","app-version","mobile-versioning","force-update","soft-update","maintenance-mode","capacitor","ionic","react-native","react","angular","android","ios","mobile-sdk","update-management","feature-control","remote-config","sdk"],"_id":"@codeimplants/version-control@1.0.9","maintainers":[{"name":"codeimplants","email":"codeimplants@gmail.com"}],"dist":{"shasum":"e8c93f716c0e16a050f45a5f8798a1488823c7e2","tarball":"https://registry.npmjs.org/@codeimplants/version-control/-/version-control-1.0.9.tgz","fileCount":32,"integrity":"sha512-/WIWpnwQYmgSojv6IRH5u0xo0mVp/BJZ5f4oQf9m5zfJbi63O5WhhrnZbL2nfXu8Tpf8xpzzc4w6z5Eob8QztQ==","signatures":[{"sig":"MEUCIQDlT284nVLU3Tc6VNtqJBcuy61pijpN4J1MB6CAY+SzBgIgWyrpoabOf4+2PMu8o4Nvkl3e5RRvU/FAe42VyVJPdXg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45222},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"cea3f6a6249968c09ee84eee206bfa116f6c2c67","scripts":{"build":"tsc","publish:pkg":"pnpm build && pnpm publish --access public"},"_npmUser":{"name":"codeimplants","email":"codeimplants@gmail.com"},"_npmVersion":"11.6.2","description":"A lightweight cross-platform SDK to remotely control app version behavior such as soft update, force update, and maintenance mode using backend-driven rules, without enforcing UI.","directories":{},"_nodeVersion":"22.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/version-control_1.0.9_1771963169304_0.24836367417274485","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@codeimplants/version-control","version":"1.0.10","keywords":["version-control","app-version","mobile-versioning","force-update","soft-update","maintenance-mode","capacitor","ionic","react-native","react","angular","android","ios","mobile-sdk","update-management","feature-control","remote-config","sdk"],"_id":"@codeimplants/version-control@1.0.10","maintainers":[{"name":"codeimplants","email":"codeimplants@gmail.com"}],"dist":{"shasum":"9c527ac334f7feeea423b71a94521b4e68a35307","tarball":"https://registry.npmjs.org/@codeimplants/version-control/-/version-control-1.0.10.tgz","fileCount":32,"integrity":"sha512-mJA7UImuQmxBT+uvOQAQyCVSS7D4ikYWdfjK8o/7IbCFNvHp9H+2vMHsnY76ZPdLFnCNgVwD/1ZHS2QIWhJyAA==","signatures":[{"sig":"MEUCIEKZsh/fqJ4DAtB1zk+ogzL/WAksoFjXL/F3ovKf98VvAiEA9hX1wFOLNPHiDQ4EFGUEinpKqkwvIluXmPvqyVVjkf4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51821},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"cea3f6a6249968c09ee84eee206bfa116f6c2c67","scripts":{"build":"tsc","publish:pkg":"pnpm build && pnpm publish --access public"},"_npmUser":{"name":"codeimplants","email":"codeimplants@gmail.com"},"_npmVersion":"11.6.2","description":"A lightweight cross-platform SDK to remotely control app version behavior such as soft update, force update, and maintenance mode using backend-driven rules, without enforcing UI.","directories":{},"_nodeVersion":"22.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/version-control_1.0.10_1771963787608_0.139148196763218","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@codeimplants/version-control","version":"1.0.11","keywords":["version-control","app-version","mobile-versioning","force-update","soft-update","maintenance-mode","capacitor","ionic","react-native","react","angular","android","ios","mobile-sdk","update-management","feature-control","remote-config","sdk"],"_id":"@codeimplants/version-control@1.0.11","maintainers":[{"name":"codeimplants","email":"codeimplants@gmail.com"}],"dist":{"shasum":"2f069e6897fe76c3f8e8cf0a0f8f90f2c97e166a","tarball":"https://registry.npmjs.org/@codeimplants/version-control/-/version-control-1.0.11.tgz","fileCount":32,"integrity":"sha512-oavasA5pHOJqzFI7XCqHAb1ZLE0hmcCb1XKanfVWxfeKeNRUFBexxA1XMYnQLDmMQNnG+8Ri6bO1WetGu/xHHw==","signatures":[{"sig":"MEUCIBh42BaEv70cM1B+QZ3PLEWLzoSyRvHoO9EiH1o7Rx46AiEAu9g1Pib8hgG6JVkNvHFvdaQXN68kPcD777ySDO8fUPU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52274},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"192c53508237758df3f94792936b14c234100164","scripts":{"build":"tsc","publish:pkg":"pnpm build && pnpm publish --access public"},"_npmUser":{"name":"codeimplants","email":"codeimplants@gmail.com"},"_npmVersion":"11.6.2","description":"A lightweight cross-platform SDK to remotely control app version behavior such as soft update, force update, and maintenance mode using backend-driven rules, without enforcing UI.","directories":{},"_nodeVersion":"22.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/version-control_1.0.11_1771964731093_0.7896748497622823","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@codeimplants/version-control","version":"1.0.12","keywords":["version-control","app-version","mobile-versioning","force-update","soft-update","maintenance-mode","capacitor","ionic","react-native","react","angular","android","ios","mobile-sdk","update-management","feature-control","remote-config","sdk"],"_id":"@codeimplants/version-control@1.0.12","maintainers":[{"name":"codeimplants","email":"codeimplants@gmail.com"}],"dist":{"shasum":"d689ca6abf6e7287c188b6f4f79f3d586de62784","tarball":"https://registry.npmjs.org/@codeimplants/version-control/-/version-control-1.0.12.tgz","fileCount":32,"integrity":"sha512-pYkiIkVNRIUK7McQhZX2DX/uABlqdnrL4G11OB3uxiN+xa0G6WqfnB3+u4dFUT+N9pUCvnTDlPIerX1I3IwWiw==","signatures":[{"sig":"MEUCIQDt6mExB+ekwMdZfjyL2jGUq9F5MqpMyz6BQsV49TxNhgIgcT9yxVzW/S5JxAA0r6EYik2TT8+swAMOojm0NqR8dsk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75812},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"192c53508237758df3f94792936b14c234100164","scripts":{"build":"tsc","publish:pkg":"pnpm build && pnpm publish --access public"},"_npmUser":{"name":"codeimplants","email":"codeimplants@gmail.com"},"_npmVersion":"11.6.2","description":"A lightweight cross-platform SDK to remotely control app version behavior such as soft update, force update, and maintenance mode using backend-driven rules, without enforcing UI.","directories":{},"_nodeVersion":"22.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0"},"_npmOperationalInternal":{"tmp":"tmp/version-control_1.0.12_1772113509037_0.9967051545908083","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@codeimplants/version-control","version":"1.1.0","keywords":["version-control","app-version","mobile-versioning","force-update","soft-update","maintenance-mode","capacitor","ionic","react-native","react","angular","android","ios","mobile-sdk","update-management","feature-control","remote-config","sdk"],"_id":"@codeimplants/version-control@1.1.0","maintainers":[{"name":"codeimplants","email":"codeimplants@gmail.com"}],"dist":{"shasum":"8f7ae8a09b0770464838e0489c031d9f6246e948","tarball":"https://registry.npmjs.org/@codeimplants/version-control/-/version-control-1.1.0.tgz","fileCount":38,"integrity":"sha512-CNhbEM8EoLJlqagOsW7XQCY8qCZRNKvxIRnvXsugAJ6gSu8zqEY8HJ0JpZ3pBSYs9yQmPFfkh0JuRBA4FVvIRQ==","signatures":[{"sig":"MEUCICpaFErmlLsqoNoy+5iiTcJojXgrgqml9nBsyKK6tY9OAiEAsLGXht+oElUM8qAhE512LNwrTkAH8TXckoCA5mNkL50=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89521},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"192c53508237758df3f94792936b14c234100164","scripts":{"build":"tsc","publish:pkg":"pnpm build && pnpm publish --access public"},"_npmUser":{"name":"codeimplants","email":"codeimplants@gmail.com"},"_npmVersion":"11.6.2","description":"A lightweight cross-platform SDK to remotely control app version behavior such as soft update, force update, and maintenance mode using backend-driven rules, without enforcing UI.","directories":{},"_nodeVersion":"22.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0"},"peerDependencies":{"react-native":">=0.60.0"},"peerDependenciesMeta":{"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/version-control_1.1.0_1772119169673_0.6841293907356423","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@codeimplants/version-control","version":"1.1.1","keywords":["version-control","app-version","mobile-versioning","force-update","soft-update","maintenance-mode","capacitor","ionic","react-native","react","angular","android","ios","mobile-sdk","update-management","feature-control","remote-config","sdk"],"_id":"@codeimplants/version-control@1.1.1","maintainers":[{"name":"codeimplants","email":"codeimplants@gmail.com"}],"dist":{"shasum":"fdf8f40f7066bb5564d9577a5a584e2600ef98dd","tarball":"https://registry.npmjs.org/@codeimplants/version-control/-/version-control-1.1.1.tgz","fileCount":38,"integrity":"sha512-LgshPcIT8J9dk9iPtPlpncfKp/fkFLgHbCD5wFCLu8hdia0a0YrX3CCldxsIMoBvWzRYE6zfEjzvy+zl0VRHVA==","signatures":[{"sig":"MEUCIQCAqzwseBjPVLVR8QaKROZAkDhQUIbJJjvtPacdSdv6ogIgGLSi6tN8TAOdxTtvUDlGOOK7QrEghJvVjSOxaU4GciE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89571},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"192c53508237758df3f94792936b14c234100164","scripts":{"build":"tsc","publish:pkg":"pnpm build && pnpm publish --access public"},"_npmUser":{"name":"codeimplants","email":"codeimplants@gmail.com"},"_npmVersion":"11.6.2","description":"A lightweight cross-platform SDK to remotely control app version behavior such as soft update, force update, and maintenance mode using backend-driven rules, without enforcing UI.","directories":{},"_nodeVersion":"22.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0"},"peerDependencies":{"react-native":">=0.60.0"},"peerDependenciesMeta":{"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/version-control_1.1.1_1772119459092_0.5007795534275392","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@codeimplants/version-control","version":"1.1.2","keywords":["version-control","app-version","mobile-versioning","force-update","soft-update","maintenance-mode","capacitor","ionic","react-native","react","angular","android","ios","mobile-sdk","update-management","feature-control","remote-config","sdk"],"_id":"@codeimplants/version-control@1.1.2","maintainers":[{"name":"codeimplants","email":"codeimplants@gmail.com"}],"dist":{"shasum":"f0113ca624d82944c76cbc346ce63563d427b8c1","tarball":"https://registry.npmjs.org/@codeimplants/version-control/-/version-control-1.1.2.tgz","fileCount":35,"integrity":"sha512-X6hLynWwt72vP3g2KTbAJ+tSjhXcb8Wh5aXmA1Sk5WqDedTHoBpEoYek9ZQ5eFtWjBWtrYRaGQ4YJgLVTcYv+g==","signatures":[{"sig":"MEQCIFtJvwTPq6lSRX6tL/iYVFfRRp/CIaxBdPuHga0CV7v2AiAJ/Leo+oFEMzpCC5mPeSBda0eXpcXahOkoebpRgtHc1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86836},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"a57b30d315f9d0034d51f09c026bb6e4fcb8c115","scripts":{"build":"tsc","publish:pkg":"pnpm build && pnpm publish --access public"},"_npmUser":{"name":"codeimplants","email":"codeimplants@gmail.com"},"_npmVersion":"11.6.2","description":"A lightweight cross-platform SDK to remotely control app version behavior such as soft update, force update, and maintenance mode using backend-driven rules, without enforcing UI.","directories":{},"_nodeVersion":"22.12.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0"},"peerDependencies":{"react-native":">=0.60.0"},"peerDependenciesMeta":{"react-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/version-control_1.1.2_1773919588463_0.22465503517366403","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@codeimplants/version-control","version":"1.2.0","description":"A lightweight cross-platform SDK to remotely control app version behavior such as soft update, force update, and maintenance mode using backend-driven rules, without enforcing UI.","license":"MIT","author":{"name":"Code Implants Software Technologies Pvt. Ltd."},"keywords":["version-control","app-version","mobile-versioning","force-update","soft-update","maintenance-mode","capacitor","ionic","react-native","react","angular","android","ios","mobile-sdk","update-management","feature-control","remote-config","sdk"],"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","publish:pkg":"pnpm build && pnpm publish --access public"},"dependencies":{},"devDependencies":{"typescript":"^5.4.0"},"peerDependencies":{"react-native":">=0.60.0"},"peerDependenciesMeta":{"react-native":{"optional":true}},"gitHead":"d9be53aa2c2e0a279dcf3ebc921fac34957c212b","_id":"@codeimplants/version-control@1.2.0","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-v0rJ15f7LKoZ4KbBRSC6ceMOQ9WiAsY60fKauIHNd4sgpJPjvCstHujsQrn1EIhzZhA1ooenZOIe8935E1aq8g==","shasum":"dd88c187b3fcace0cdf723a22ca99a48e94c84c4","tarball":"https://registry.npmjs.org/@codeimplants/version-control/-/version-control-1.2.0.tgz","fileCount":46,"unpackedSize":117936,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC4cgkf1oteLsBYdeqIuHsUaujjMePb3KVJK3zj8oZFpAIhALhFr1i2kLOhCPZyrjfXnrPdUaWeZ6ou169QGxKcGui9"}]},"_npmUser":{"name":"codeimplants","email":"codeimplants@gmail.com"},"directories":{},"maintainers":[{"name":"codeimplants","email":"codeimplants@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/version-control_1.2.0_1787147708426_0.9818852879869266"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-31T13:59:08.934Z","modified":"2026-08-19T13:55:08.770Z","1.0.3":"2026-01-31T12:46:22.106Z","1.0.0":"2026-01-31T13:59:09.178Z","1.0.1":"2026-01-31T14:00:58.844Z","1.0.2":"2026-02-13T18:51:39.536Z","1.0.4":"2026-02-15T18:05:55.785Z","1.0.5":"2026-02-15T18:11:18.799Z","1.0.6":"2026-02-15T18:42:27.547Z","1.0.7":"2026-02-16T07:27:48.728Z","1.0.8":"2026-02-24T18:37:53.837Z","1.0.9":"2026-02-24T19:59:29.465Z","1.0.10":"2026-02-24T20:09:47.778Z","1.0.11":"2026-02-24T20:25:31.238Z","1.0.12":"2026-02-26T13:45:09.173Z","1.1.0":"2026-02-26T15:19:29.838Z","1.1.1":"2026-02-26T15:24:19.317Z","1.1.2":"2026-03-19T11:26:28.598Z","1.2.0":"2026-08-19T13:55:08.609Z"},"keywords":["version-control","app-version","mobile-versioning","force-update","soft-update","maintenance-mode","capacitor","ionic","react-native","react","angular","android","ios","mobile-sdk","update-management","feature-control","remote-config","sdk"],"description":"A lightweight cross-platform SDK to remotely control app version behavior such as soft update, force update, and maintenance mode using backend-driven rules, without enforcing UI.","maintainers":[{"name":"codeimplants","email":"codeimplants@gmail.com"}],"readme":"# Version Control SDK\r\n\r\nA lightweight, backend-driven SDK that enables remote control of app version behavior including soft updates, force updates, and maintenance mode for mobile and web applications.\r\n\r\n## Features\r\n\r\n- 🚀 **Soft Updates** - Notify users about new versions with optional updates\r\n- ⚡ **Force Updates** - Enforce minimum version requirements\r\n- 🔧 **Maintenance Mode** - Put your app in maintenance mode remotely\r\n- 🛑 **Kill Switch** - Emergency app disable capability\r\n- 📱 **Cross-Platform** - Works on iOS, Android, and Web\r\n- 🎯 **Auto-Detection** - Automatically detects platform, version, and app ID\r\n- 🔌 **Backend-Driven** - All decisions made server-side for instant updates\r\n- 🪶 **Lightweight** - Minimal dependencies and footprint\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @codeimplants/version-control\r\n```\r\n\r\nOr with yarn:\r\n\r\n```bash\r\nyarn add @codeimplants/version-control\r\n```\r\n\r\n## Quick Start\r\n\r\n### Simple Usage\r\n\r\n```typescript\r\nimport { VersionSDK } from \"@codeimplants/version-control\";\r\n\r\n// Quick check with minimal config\r\nconst decision = await VersionSDK.check(\r\n  \"https://api.yourapp.com\",\r\n  \"your-api-key\",\r\n);\r\n\r\n// Handle the decision\r\nswitch (decision.action) {\r\n  case \"FORCE_UPDATE\":\r\n    // Show force update dialog\r\n    window.location.href = decision.storeUrl;\r\n    break;\r\n  case \"SOFT_UPDATE\":\r\n    // Show optional update dialog\r\n    showUpdatePrompt(decision.message, decision.storeUrl);\r\n    break;\r\n  case \"MAINTENANCE\":\r\n    // Show maintenance screen\r\n    showMaintenanceScreen(decision.message);\r\n    break;\r\n  case \"KILL_SWITCH\":\r\n    // App is disabled\r\n    showKillSwitchScreen(decision.message);\r\n    break;\r\n  case \"NONE\":\r\n    // Continue normally\r\n    break;\r\n}\r\n```\r\n\r\n### Advanced Usage\r\n\r\n```typescript\r\nimport { VersionSDK, VCConfig } from \"@codeimplants/version-control\";\r\n\r\nconst config: VCConfig = {\r\n  backendUrl: \"https://api.yourapp.com\",\r\n  apiKey: \"your-api-key\",\r\n  appId: \"com.yourapp.mobile\", // Optional: auto-detected\r\n  platform: \"ios\", // Optional: auto-detected\r\n  version: \"2.1.0\", // Optional: auto-detected\r\n  timeout: 8000, // Optional: default 8000ms\r\n  debug: true, // Optional: enable logging\r\n};\r\n\r\nconst sdk = VersionSDK.init(config);\r\nconst decision = await sdk.checkVersion();\r\n```\r\n\r\n## Auto-Detection\r\n\r\nThe SDK automatically detects the following if not provided:\r\n\r\n### Platform Detection\r\n\r\n- **Capacitor**: Detects iOS/Android via Capacitor.getPlatform()\r\n- **React Native**: Detects via navigator.product\r\n- **User Agent**: Falls back to UA string parsing\r\n- **Web**: Default fallback\r\n\r\n### Version Detection\r\n\r\nSources are tried in this order, and the ordering is the important part.\r\n\r\n**Binary sources** — what the user actually has installed:\r\n\r\n1. `VCAppInfo`, this package's own native module (`versionName` on Android,\r\n   `CFBundleShortVersionString` on iOS)\r\n2. `expo-application` (`nativeApplicationVersion`)\r\n3. `react-native-device-info` (`getVersion()` / `getVersionSync()`)\r\n4. `NativeModules.RNDeviceInfo` directly\r\n5. Capacitor App plugin (`Capacitor.Plugins.App.getInfo()`)\r\n\r\n**Metadata sources** — what the project files said at build time, used only\r\nwhen nothing above answers:\r\n\r\n6. `expo-constants` (`Constants.manifest` / `expoConfig`)\r\n7. Globals: `APP_VERSION`, `__VERSION__`, `VERSION`, `packageVersion`, …\r\n\r\nThere is no fallback value. If nothing usable is found, detection returns\r\n`undefined`, the SDK logs a warning, and **update rules are declined** — see\r\n[Untrusted versions](#untrusted-versions).\r\n\r\n> **Adding a strategy?** Binary sources must stay above metadata sources. A\r\n> metadata source that outranks a binary one does not fail loudly — it returns a\r\n> plausible, wrong answer, and the SDK then insists a fully up-to-date app is out\r\n> of date. `expo-constants` sat above `react-native-device-info` until 1.2.0, and\r\n> in any bare React Native app with expo modules installed it answered first with\r\n> the expo app config version. That value is generated from `package.json`, so it\r\n> stayed at the scaffold's `0.0.1` forever, and every such install was told to\r\n> update on a loop that installing the update could not break.\r\n\r\n### Untrusted versions\r\n\r\nA detected version is rejected, and the next source tried, if it cannot be a\r\nreal release: `0.0.x` (the `react-native init` / `npm init` placeholder), or\r\nanything that parses to nothing.\r\n\r\nIf no trustworthy version is found, `SOFT_UPDATE` and `FORCE_UPDATE` from the\r\nbackend are downgraded to `NONE`. This is deliberate and asymmetric: declining a\r\nreal rule costs one missed update prompt, while honouring a rule with no version\r\nto check it against shows the user an update they cannot perform — they are\r\nalready current, the store has nothing to give them, and the prompt returns every\r\nlaunch. With `FORCE_UPDATE`, that makes the app unusable with no way out.\r\n\r\n`KILL_SWITCH`, `MAINTENANCE` and `BLOCKED` are **not** gated. They are not\r\nversion comparisons, and they are the remedy for a bad release, so they must\r\nsurvive exactly this situation.\r\n\r\nTo sidestep detection entirely, pass `version` yourself — always the safest\r\noption if your app already knows its own version:\r\n\r\n```typescript\r\nVersionSDK.init({ backendUrl, apiKey, version: DeviceInfo.getVersion() });\r\n```\r\n\r\n### App ID Detection\r\n\r\nSame binary-before-metadata ordering:\r\n\r\n1. `VCAppInfo` native module\r\n2. `expo-application` (`applicationId`)\r\n3. `react-native-device-info` (`getBundleId()`)\r\n4. `NativeModules.RNDeviceInfo`\r\n5. Capacitor App plugin bundle ID\r\n6. `expo-constants` project metadata\r\n7. Globals: `APP_ID`, `__APP_ID__`, `BUNDLE_ID`, `PACKAGE_NAME`\r\n\r\n## Configuration\r\n\r\n### VCConfig\r\n\r\n```typescript\r\ninterface VCConfig {\r\n  backendUrl: string; // Your backend API URL (required)\r\n  apiKey?: string; // API key for authentication\r\n  appId?: string; // App identifier (auto-detected if not provided)\r\n  platform?: Platform; // 'android' | 'ios' | 'web' | 'all'\r\n  version?: string; // Current app version (auto-detected if not provided)\r\n  timeout?: number; // Request timeout in ms (default: 8000)\r\n  debug?: boolean; // Enable debug logging\r\n}\r\n```\r\n\r\n## Response Types\r\n\r\n### VCDecision\r\n\r\n```typescript\r\ninterface VCDecision {\r\n  action: VCAction; // The action to take\r\n  message?: string; // User-facing message\r\n  storeUrl?: string; // App store URL for updates\r\n  minVersion?: string; // Minimum required version (for FORCE_UPDATE)\r\n  latestVersion?: string; // Latest available version\r\n  raw?: any; // Raw backend response\r\n}\r\n```\r\n\r\n### Actions\r\n\r\n- **`NONE`** - No action required, app is up to date\r\n- **`SOFT_UPDATE`** - Update available but optional\r\n- **`FORCE_UPDATE`** - Update required to continue\r\n- **`MAINTENANCE`** - App is in maintenance mode\r\n- **`KILL_SWITCH`** - App is disabled\r\n- **`BLOCKED`** - Access blocked for this version/platform\r\n\r\n## Backend Integration\r\n\r\nThe SDK expects your backend endpoint to accept POST requests at `/sdk/version/check`:\r\n\r\n### Request Format\r\n\r\n```typescript\r\n{\r\n  \"appId\": \"com.yourapp.mobile\",\r\n  \"platform\": \"ios\",\r\n  \"currentVersion\": \"2.0.0\",\r\n  \"environment\": \"prod\"\r\n}\r\n```\r\n\r\n### Response Format\r\n\r\n```typescript\r\n{\r\n  \"status\": \"FORCE_UPDATE\",           // VCAction\r\n  \"message\": \"Please update to continue\",\r\n  \"title\": \"Update Required\",\r\n  \"minVersion\": \"2.1.0\",\r\n  \"latestVersion\": \"2.3.0\",\r\n  \"storeUrl\": \"https://apps.apple.com/...\"\r\n}\r\n```\r\n\r\n## Examples\r\n\r\n### React Example\r\n\r\n```typescript\r\nimport React, { useEffect, useState } from 'react';\r\nimport { VersionSDK, VCDecision } from '@codeimplants/version-control';\r\n\r\nfunction App() {\r\n  const [versionCheck, setVersionCheck] = useState<VCDecision | null>(null);\r\n\r\n  useEffect(() => {\r\n    async function checkVersion() {\r\n      const decision = await VersionSDK.check(\r\n        'https://api.yourapp.com',\r\n        'your-api-key'\r\n      );\r\n      setVersionCheck(decision);\r\n    }\r\n    checkVersion();\r\n  }, []);\r\n\r\n  if (versionCheck?.action === 'FORCE_UPDATE') {\r\n    return (\r\n      <div className=\"update-required\">\r\n        <h1>Update Required</h1>\r\n        <p>{versionCheck.message}</p>\r\n        <button onClick={() => window.location.href = versionCheck.storeUrl}>\r\n          Update Now\r\n        </button>\r\n      </div>\r\n    );\r\n  }\r\n\r\n  if (versionCheck?.action === 'MAINTENANCE') {\r\n    return (\r\n      <div className=\"maintenance\">\r\n        <h1>Maintenance Mode</h1>\r\n        <p>{versionCheck.message}</p>\r\n      </div>\r\n    );\r\n  }\r\n\r\n  return <YourApp />;\r\n}\r\n```\r\n\r\n### Capacitor/Ionic Example\r\n\r\n```typescript\r\nimport { VersionSDK } from \"@codeimplants/version-control\";\r\nimport { AlertController } from \"@ionic/angular\";\r\n\r\nexport class AppComponent {\r\n  constructor(private alertController: AlertController) {}\r\n\r\n  async ngOnInit() {\r\n    const decision = await VersionSDK.check(\r\n      \"https://api.yourapp.com\",\r\n      \"your-api-key\",\r\n    );\r\n\r\n    if (decision.action === \"SOFT_UPDATE\") {\r\n      const alert = await this.alertController.create({\r\n        header: \"Update Available\",\r\n        message: decision.message,\r\n        buttons: [\r\n          { text: \"Later\", role: \"cancel\" },\r\n          {\r\n            text: \"Update\",\r\n            handler: () => {\r\n              window.open(decision.storeUrl, \"_system\");\r\n            },\r\n          },\r\n        ],\r\n      });\r\n      await alert.present();\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n### React Native Example\r\n\r\n```typescript\r\nimport { VersionSDK } from \"@codeimplants/version-control\";\r\nimport { Alert, Linking } from \"react-native\";\r\n\r\nasync function checkAppVersion() {\r\n  const decision = await VersionSDK.check(\r\n    \"https://api.yourapp.com\",\r\n    \"your-api-key\",\r\n  );\r\n\r\n  if (decision.action === \"FORCE_UPDATE\") {\r\n    Alert.alert(\r\n      \"Update Required\",\r\n      decision.message,\r\n      [\r\n        {\r\n          text: \"Update Now\",\r\n          onPress: () => Linking.openURL(decision.storeUrl),\r\n        },\r\n      ],\r\n      { cancelable: false },\r\n    );\r\n  }\r\n}\r\n```\r\n\r\n## Version Comparison\r\n\r\nThe SDK uses semantic versioning (semver) comparison:\r\n\r\n```typescript\r\n// Examples of version comparisons\r\n\"1.0.0\" < \"1.0.1\"; // true\r\n\"1.0.0\" < \"1.1.0\"; // true\r\n\"2.0.0\" > \"1.9.9\"; // true\r\n\"1.0\" === \"1.0.0\"; // true (normalized)\r\n```\r\n\r\n## Error Handling\r\n\r\nThe SDK gracefully handles errors and returns `{ action: \"NONE\" }` if:\r\n\r\n- Network request fails\r\n- Backend is unreachable\r\n- Request times out\r\n- Invalid response format\r\n\r\nEnable debug mode to see detailed error logs:\r\n\r\n```typescript\r\nconst config = {\r\n  backendUrl: \"https://api.yourapp.com\",\r\n  debug: true, // Logs all requests and responses\r\n};\r\n```\r\n\r\n## Best Practices\r\n\r\n1. **Check on App Launch** - Always check version status when the app starts\r\n2. **Cache Decisions** - Cache the decision for a reasonable time (e.g., 1 hour)\r\n3. **Handle Offline** - Gracefully handle offline scenarios (SDK returns `NONE`)\r\n4. **User Experience** - Don't interrupt critical user flows with update prompts\r\n5. **Test Thoroughly** - Test all action types before deploying rules\r\n6. **Gradual Rollouts** - Use backend rules to gradually roll out forced updates\r\n\r\n## Platform Support\r\n\r\n- ✅ iOS (Native & Web)\r\n- ✅ Android (Native & Web)\r\n- ✅ Web Browsers\r\n- ✅ Capacitor\r\n- ✅ React Native\r\n- ✅ Ionic\r\n- ✅ Cordova\r\n\r\n## TypeScript\r\n\r\nThe SDK is written in TypeScript and includes full type definitions.\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md","author":{"name":"Code Implants Software Technologies Pvt. Ltd."},"license":"MIT"}