{"_id":"vue3-migration","_rev":"27-deb569bb3515907927703ef6628f3aa9","name":"vue3-migration","dist-tags":{"latest":"1.9.0"},"versions":{"1.0.0":{"name":"vue3-migration","version":"1.0.0","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.0.0","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"843526e83e7f19a3ac31df4bc735297a955e2d8a","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.0.0.tgz","fileCount":56,"integrity":"sha512-Q2adGRUU5Ftc3GcDA7bKHOlFr8phmZsVv8HZVWNle7gmKrEPFzjZKAKO/FMuHx1X6pHNmdwjmeVidKqkOPRxsA==","signatures":[{"sig":"MEYCIQCVoINON6oPjmZ8vA4ugbcaNDqmKwDAVX6ToX3ibBl4QQIhAMHwc0Q/fnfXHDzP4Vb3WymwYFk/GabYQEj8ezCessPb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":279502},"engines":{"node":">=14"},"gitHead":"5e1902f81026919331576f3aaab3c7dc832ae164","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Vue 2 mixin to Vue 3 composable migration tool","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.0.0_1772403354712_0.9820495537908669","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"vue3-migration","version":"1.0.1","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.0.1","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"276fbcd901741c10bc72199443dbcd7d56ffb838","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.0.1.tgz","fileCount":57,"integrity":"sha512-gztOtEc7cZ0qm5tdZSMUnbDNhxcTmr+JYWfDwDldcGcSHeVIPjGe3LLYDyplNKlYH/4Fgwmh07hTUTh8krMIOA==","signatures":[{"sig":"MEYCIQCcoyV/h/9b4zZxj8hjc8/rl724aGMPCo5LiDsMO1HtyAIhANZd92yrTyX8AkZbPuCDfHzpiuS13Hqem+WXzn1S0kI2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":281117},"engines":{"node":">=14"},"gitHead":"ea52cded4e3b354d0a8bb0be789801c750903079","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Vue 2 mixin to Vue 3 composable migration tool","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.0.1_1772403814525_0.46759024247547076","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"vue3-migration","version":"1.0.2","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.0.2","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"2e48ae223551857e382eebb4f2c8a739d24f2a7e","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.0.2.tgz","fileCount":71,"integrity":"sha512-Zk5D6+lRuZkZuY97Es9iq4KQtq6j8JyMgaCzSgCN1SIQ463FV3UbSWv0ji9VOahjawq3HzGeiUhKROHI+QnEUw==","signatures":[{"sig":"MEUCIDGhwLRyDJGINtwFz/eV0gAYICFcS4WvdW1R/Iv/uhR2AiEAni4kYKd0QB7Uv+52HY/GTE7f3LNizazb+GrJ6LpDvog=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":522243},"engines":{"node":">=14"},"gitHead":"5e6af98c91a767a9057384f018005b87891bc926","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Vue 2 mixin to Vue 3 composable migration tool","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.0.2_1772586917875_0.526462416270111","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"vue3-migration","version":"1.1.0","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.1.0","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"c2142695ac6350439963b28d6467456639d92af2","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.1.0.tgz","fileCount":29,"integrity":"sha512-xrvLucz2eDTUyCf1FUqKYOTVJFEIPxQhuy5jDGNaQDzt7AgiePlng1N56XovGJTCNUWWW3s2wPNFQPR7bQUoUw==","signatures":[{"sig":"MEUCICbLUwDgw26JafRsee0u50+9UmvrLREK5pAqjAqy55+3AiEAqpgWR/B9zvrfzW5uhr/Gej0VOl9i75OUvfeEqD6FcbE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":211092},"engines":{"node":">=14"},"gitHead":"f65dea16fdde2a270e0623cc90906fbd785fcc13","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.1.0_1772618772540_0.3135722166255881","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"vue3-migration","version":"1.1.1","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.1.1","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"e1f971676ec29df238f23917405595e9b9e0b6e4","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.1.1.tgz","fileCount":29,"integrity":"sha512-HtLHOOczEzLPqb3CUA8usYZ2A1Eqtdl6/EfBz4xlNwARXnjVFKZKUspDYk3VUtx+m/6CMsATIJXDb3xylcNyGA==","signatures":[{"sig":"MEUCIGR7xk43TTZeFkxPWFdk2IXqNtBtx0U2Jnz0DlK/y0TaAiEAlxOLCx+EtUm/VODTaP8z74mG5+xvy15v+ZC06monvc4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":211236},"engines":{"node":">=14"},"gitHead":"424189653a2be96c8afc3001715ded097a09d24b","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.1.1_1772620059273_0.29254331682365087","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"vue3-migration","version":"1.2.0","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.2.0","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"84927680088f9622af48530ceb0afa06f5795d50","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.2.0.tgz","fileCount":29,"integrity":"sha512-6gel9lRkl4+gI+MqHyFJl9tCVTAB5gc+TTvatCYrkclrer5KAhXaZISQdK0C8HtPEE6vZuHt8fQ/3/tSaM8xSg==","signatures":[{"sig":"MEYCIQDaS2sZhJP9OGRjHNhuKr+8FvkBppHFuUgM2NL28AKrygIhAN36hoBIyzg2hM34ocehC4E3RwoNAGXwWjH9hr+a1b8/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":221500},"engines":{"node":">=14"},"gitHead":"05743cc4dcc020e8bf9280a036fa3d74a7f35e5b","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.2.0_1772640347371_0.6164392098638867","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"vue3-migration","version":"1.3.0","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.3.0","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"4f029e13b41e22a4c32d446378ba6dc6a63a1df5","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.3.0.tgz","fileCount":29,"integrity":"sha512-yy73euSt9U8tKkju0xm2WHvVohCNb2ktN7ZFaCkXRh1KZAaF17GJnlF+WeKrL3kV+jOeYR0Z6ngHDwEP86hg1Q==","signatures":[{"sig":"MEUCIQDq5iZCuWb6WFbskkMvZfjrzqnnNkGZFgoRk2gkona4rwIgIhjS4XUx3m+6zIS/44wI8rEG0suknUZnpOkCnN+rN8s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":222470},"engines":{"node":">=14"},"gitHead":"7c6409322303779befb55091eb143a54207d5637","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.3.0_1772648602056_0.31676723350448","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"vue3-migration","version":"1.3.1","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.3.1","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"c687e17e3def872ffa48d53d903bbb8c46ff12b4","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.3.1.tgz","fileCount":29,"integrity":"sha512-i5VF3VrJt4I6gbV3kwdoFetuKD6NpBCIg1Q+UsUAvOrGN7QgPK9+LIT7clmFvJrGj69PWjpzj/QyOtLh48vkRQ==","signatures":[{"sig":"MEUCIQDRv/NT3iATo/+gz6Ve51JzPAHGUSkfQdakv6MexQS9jgIgUoAKKoDlWA+gBgHFyOmPaI9TQ/q36WtpZRFFKlackDs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":223654},"engines":{"node":">=14"},"gitHead":"9b7126402e66b219735896463f3a18cf8ecc9511","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.3.1_1772654308527_0.3718369066087508","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"vue3-migration","version":"1.3.2","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.3.2","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"606f6e027bb35b863f45fb9db43cb8b508cbcc26","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.3.2.tgz","fileCount":29,"integrity":"sha512-hg5l9G/kIg0cyHv04LpC7d3EaTm+9VUsWx2fxOdWENEuSZ2mJNAUD+UWgzkMChLmhbLgfZXu9Nuyy35pfUSskg==","signatures":[{"sig":"MEUCIQDxySCtXW4bu5XEY+LhVZCocp+UAAEjMC/2jqrPrvwMuwIgaMOVKW6tW3Pjyft+tsxS9YP5n+mXqW+1u/L8li6Byy8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":224158},"engines":{"node":">=14"},"gitHead":"053ca0191c3df00ccbc9c9c53f1a163fbbd4e7f9","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.3.2_1772656403678_0.5413586020383723","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"vue3-migration","version":"1.4.0","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.4.0","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"eed558e892201f0192caf41c1ba538e59287685c","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.4.0.tgz","fileCount":29,"integrity":"sha512-phjvgi5jbAI5talMVc14ZB0tj7i/TlQ8ETnTwk4MCv40z1bQKsWMlfMA9nICGSfhsjDp7i4bKzb3DovoBrTz+A==","signatures":[{"sig":"MEYCIQDO0eUcLTzFlksTZteUIae8CXnx5/7x0oEMLQejOycycQIhAMlsNxZikKaV5O1FiqxjoKvF0E1+Mk1pW03Jf7hZPS67","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":253565},"engines":{"node":">=14"},"gitHead":"ef040bb0fe11b22fb3c0f17801207f221a0147ba","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.4.0_1772678053914_0.8850954322964513","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"vue3-migration","version":"1.4.1","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.4.1","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"812efecfc9a5b4c6de8ac4bc073d47882908d078","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.4.1.tgz","fileCount":29,"integrity":"sha512-uTG2tvUIf+PHLyKyiO2GjubAH9LQn5WsGOaPzF3T4u9+yw6QDIWOqHAIXG4AHnESUIdURCXUpklQiilpeMITrg==","signatures":[{"sig":"MEYCIQDU0zXiy9V2YVw2lsDUH8jb5bkvu54c3AsZf0rd7L5DjwIhAMyt8z2M+yxMM0ie24fAukDUmnnJ8WYzOR4Itm77VuC6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":257178},"engines":{"node":">=14"},"gitHead":"823ee4361cea0c001d129bff1ec6b9870e31e0b0","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.4.1_1772718908530_0.5446358803385405","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"vue3-migration","version":"1.4.2","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.4.2","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"6c0dddfbf0cd6c07a780bc13c662bfb63643b5b4","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.4.2.tgz","fileCount":29,"integrity":"sha512-E034diOgRvXpQ2loF0MgmM5fwb5bKWkjet4ycaCMh/LDHqGg1P/QgT3S90sVHKqNpOGyPzaQQMfvPKE7FwnVZw==","signatures":[{"sig":"MEYCIQCwQAi6VHfQ+TpUn+thfqq96RRGl7ErOLTkwCOYExuI9wIhAKWpv7hMMWKoCrQNhKJDLfcmmqzJImr1z3XoC1PMcok3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":263576},"engines":{"node":">=14"},"gitHead":"8c0f56cb916d7bd549858eef1fb00318794c856e","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.4.2_1772739442546_0.4192910049534626","host":"s3://npm-registry-packages-npm-production"}},"1.4.3":{"name":"vue3-migration","version":"1.4.3","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.4.3","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"7944f12bb76d268978b00cce5f43940ab401eb8f","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.4.3.tgz","fileCount":29,"integrity":"sha512-Jg2hPo8BbhDTZbA+E2yHtkUo7+rRYsfEsB5Hp9+ew4C8ufEiwREyJF9PsTqzciJpS5Fj9UhbYsksWLy+pbKRWw==","signatures":[{"sig":"MEQCIAr/fZjDBThBJGUWn7xmVwmd2D+yc+i/Ph8T/gQVvRLzAiAWgjBUZ/ZUmwFue/OnQydcWefBsAAZ94TXYR1v6D2jCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273414},"engines":{"node":">=14"},"gitHead":"d1a987a498564370f50c6ec2b67bcf20dadf3f47","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.4.3_1772752975567_0.6795714701791942","host":"s3://npm-registry-packages-npm-production"}},"1.4.4":{"name":"vue3-migration","version":"1.4.4","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.4.4","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"67be1ed18ad2290162009604d9d883b260c6f220","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.4.4.tgz","fileCount":29,"integrity":"sha512-TG1EkWnYTOzsXl/+RoJM4onG9LXBgbn4VvNmzHi4HcHsnQVFRD56s0rrU2ktSkkayNp/mcHXeQiM33zt+FaMVw==","signatures":[{"sig":"MEQCIF/bhYOFhWNUF3gGAV+l+w4+OXCaJoiov85/yiURQ90iAiBDANy4Mt6GDaydxEOPzcKjqFKKkX2eCbtczRfWdEieCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":277570},"engines":{"node":">=14"},"gitHead":"540a1dfd404ea6dd9baf316f14302d1c7cd5eb0c","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.4.4_1772757302855_0.6162312701993125","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"vue3-migration","version":"1.5.0","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.5.0","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"b0ea1d2fed7d348164b6f12bcc8ba085f65403af","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.5.0.tgz","fileCount":29,"integrity":"sha512-Y98Qwqzihjioo/vJuGvahPkbcdT4/eSU3tmfT9eQeOvedMD95PfSTEvLw2SnQcDf9UJ7cXG7vR2M6u+v8GSNdA==","signatures":[{"sig":"MEUCIQCq/IIQ4Z9e2Ep5RHl/ilIWSAPDKnqKDpNS+4G14oEjxwIgOSYJo9ouGmvKXBu1SS73dRzHkxa5dsbqw4iOdVN1qTY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":289830},"engines":{"node":">=14"},"gitHead":"9df0e67e2c8e42b7c78a930b202d7f648b7508ad","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.5.0_1772799308801_0.5613104925358396","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"vue3-migration","version":"1.6.0","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.6.0","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"1b72de4aae8f7c18ef1e16f4570b1151cef66be6","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.6.0.tgz","fileCount":30,"integrity":"sha512-PSllmj1DyVexbv/MwQ0cMgmOKWp1OM5+o9GKq7Vmqd92h18qbfXzPO10un97ICJA0i7ahosbIq4ZiJz/rAKjPg==","signatures":[{"sig":"MEYCIQDR7xcDki6vO3vK6fWywZPt/HllU6Gh2zvh1IUZwzKKLQIhAOUwlbK0TWidlYDLqC1xVWRklslyvuFoXIh5T6GZekQ1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":297908},"engines":{"node":">=14"},"gitHead":"9060c3e3f9a952ed5a3eff5e0e5e2daed513cd44","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.6.0_1772884970722_0.12663617403118965","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"vue3-migration","version":"1.6.1","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.6.1","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"d3aad0f893eb819d82f5a77e698d65cd1eb06e77","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.6.1.tgz","fileCount":30,"integrity":"sha512-QvbsAJnb0vSGSeDlIBH0EwcT9EYW1XiCahvee1wYWLmZRfZH0UesGQiFpsBpW30qP7Se2lp7AZpGCCVzDm2YvA==","signatures":[{"sig":"MEYCIQDFT3ksMuvZ3wAsyX7a+aINI/yyQjO21WFng8plszY0VwIhAPBUth2Rf3IfWvaYRJNm8P39+ZYxTJkzBVhMIaRi/RKc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":298517},"engines":{"node":">=14"},"gitHead":"243a8e47c9bb69f3a81ec6e73481f165cc4e96e2","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.6.1_1772896724340_0.034758851733080354","host":"s3://npm-registry-packages-npm-production"}},"1.6.2":{"name":"vue3-migration","version":"1.6.2","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.6.2","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"2844788e05763d0fe20d9a47a04ce77880216976","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.6.2.tgz","fileCount":30,"integrity":"sha512-LN9SWveoV1xbHkQtTMadYj2eJLV3niIQNrT7tcrj19ohDqPeJr7koKvaD7pWBIDkmwkhJsOkMnyMebQPAwmMWA==","signatures":[{"sig":"MEUCICfeFHZVXFEOPRrF1G3fW2Km8Wl85gbxHNcx0mQHXnkdAiEAy7Of8x3wlA/8DtGx08cX6QJE7e8s2bsOEkEod9fd+Ys=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":299060},"engines":{"node":">=14"},"gitHead":"3145e19ff2e951401f2578fcd2c6d25bb89d6612","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.6.2_1772898142688_0.9716132325710645","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"vue3-migration","version":"1.7.0","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.7.0","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"bd897b42eaa3d4a05a513223e7d3812d0845aee4","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.7.0.tgz","fileCount":30,"integrity":"sha512-A94nZXih/ApIcGN0IPcr8cKVQNaPCWBExEPqElhwZCKn5dVLDd4ycByBkKKGlNDIOFfwOCtSrlOyANGgehl3Jw==","signatures":[{"sig":"MEQCIGPoN3o2SsLLrf+Kxy+VbYo8OZiSpyXXmdL6awOtxQKSAiAUaA/8ukHKNOz38vAor3m65+BEMQjuygvHQEmEznXHOw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":327223},"engines":{"node":">=14"},"gitHead":"57089e88f7dc2c4b667aeb74dd1ad16b49038b94","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.7.0_1773123911233_0.07093996753356135","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"vue3-migration","version":"1.7.1","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.7.1","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"707cf3e0daa4b69ddc5be05474ae6efb92c806bc","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.7.1.tgz","fileCount":30,"integrity":"sha512-8bEG3NeJyn7QZ1GrhxfTpdy3cJQNx8Ang0m+QoWPNfgClzavoip8Ql9w3ilL3CHvU1w0nhmSodexQc4COenWsw==","signatures":[{"sig":"MEUCIGAgDRsyldc1rxkxqh5xYMMnW68GG4ACig/7JA0lCvOxAiEA4lhGq3PXhm07+rh+4i7k+AoRy53+lhMMCJGC7s+Okbg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":340798},"engines":{"node":">=14"},"gitHead":"33db6c291b1b055611b1a8f4f450f3ed9ee99833","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.7.1_1773188253341_0.3036396189057824","host":"s3://npm-registry-packages-npm-production"}},"1.7.2":{"name":"vue3-migration","version":"1.7.2","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.7.2","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"943edd5ddcc90a16ccf4c615269bc2e8f835fd14","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.7.2.tgz","fileCount":30,"integrity":"sha512-IWpV5mPftDlQVS6QDUxgU9kvU8ZjBBiTFwzbAU51/szhVst5bxmJEGFvEDxh+ddr2qE1CUMD/pariK7e8oHJ8g==","signatures":[{"sig":"MEUCIH8Lz9shL13XC7kRFUg44VnS6CHpdG9htSLxnZEQHep2AiEAq17DL2soTzjg5zkRg8ku+MXDunnkw1iZyG9totgvPTE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":351063},"engines":{"node":">=14"},"gitHead":"a1467744c7bfdce23f8ca3160ac1fe3f8956d2f2","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.7.2_1773343700974_0.15862029099316954","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"vue3-migration","version":"1.8.0","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.8.0","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"f6f41ce64b22f3814ce49bcc3dcfe4f0ce282f9d","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.8.0.tgz","fileCount":30,"integrity":"sha512-/IuUJgr7YD9wiRBb4ORRW3ovXQUemox0XACrlq/qh5imOOTct2yV5AAyvSG/8ZOvW6Z96Fyda1f3o4e9plt3gg==","signatures":[{"sig":"MEYCIQCIl3/wcWDtWpHt8H2EAt1kW2V6NF/uB+yyj/FgG3BN1QIhALv93Xs2LJw0ft5NO2VbYsoD+39Eldqn6DQ8pWJZTA4/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":394687},"engines":{"node":">=14"},"gitHead":"905e8f42c9264a32fbe6b1466a1e811779855c8a","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.8.0_1773505695815_0.3094573625807433","host":"s3://npm-registry-packages-npm-production"}},"1.8.1":{"name":"vue3-migration","version":"1.8.1","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.8.1","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"da1db4af3e3981b5acbcaa103920ebdb633dec0e","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.8.1.tgz","fileCount":30,"integrity":"sha512-7y449sEH1d+8ZcQs9zjUPImSbeEgsW3fR6GDe1EOz7SIzuolwqSu38A7SfPqBGd4DcQzsObmidk25/5ppjE7pQ==","signatures":[{"sig":"MEUCIDCoTAra66zW4Czlq28PlglKY4jlsX78LfL31FCWt6LMAiEA9hzTMZIrGqj8hKWxZwMFEY7LGAL/L78vlpwLErAoBow=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":407869},"engines":{"node":">=14"},"gitHead":"2344d6008a1ee2caa4e934d2abdd6bd604e936ad","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.8.1_1773564493186_0.3408763248847291","host":"s3://npm-registry-packages-npm-production"}},"1.8.2":{"name":"vue3-migration","version":"1.8.2","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.8.2","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"0240ca079bd4f34297e4faeaf340cc8f32460123","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.8.2.tgz","fileCount":30,"integrity":"sha512-FUDhoUWd63ALw8vje3zrbaJ31udlyhIzm7tD+9QMepKGI/J50tYIvoa48qq3R3sj6m64YsYv15A9XubeVKETNw==","signatures":[{"sig":"MEYCIQC7wJX721vHaUMe8gh8wYRS4hQQUqSxqna05S8KrQmxgwIhAIGBC27FcDwqJh+vwLENzVp6AEkNO2JTSBm793mLlT77","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":410209},"engines":{"node":">=14"},"gitHead":"5ff172b7cc6e02dd441d0de7da9f4de47f7994f1","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.8.2_1773647033981_0.22943205502117547","host":"s3://npm-registry-packages-npm-production"}},"1.8.3":{"name":"vue3-migration","version":"1.8.3","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.8.3","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"34832d33b97c34ea525c3cf5c0d98edc3d01dee2","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.8.3.tgz","fileCount":30,"integrity":"sha512-VucFqr5p9Uy8HJYp2s/y03zb3VzJGPWcJN/xJTD4hg3e7QP+fwD4LWpp1rhRXejlLSyghkiR/NQHsZ8RZ2P7tQ==","signatures":[{"sig":"MEUCIAJMJ4pOFdrQKqqQEe/zB96DzpusMOchWM89/Vo7EHULAiEA8hfOGdEiw1zOFDyaPfc4WO9RSGJO4Q1B/drY2FV8uu0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":416473},"engines":{"node":">=14"},"gitHead":"faf0bb75b7f60ff74de291c92c0c7e4fb855a8f1","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.8.3_1773730067085_0.5196798096537856","host":"s3://npm-registry-packages-npm-production"}},"1.8.4":{"name":"vue3-migration","version":"1.8.4","keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.8.4","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"bin":{"vue3-migration":"bin/cli.js"},"dist":{"shasum":"d3aa0080af37d58377ba71aa44afae2ef328eb35","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.8.4.tgz","fileCount":30,"integrity":"sha512-G5fjpCA5/XBFUJpyP8b+GWCMchzZBAUqGpzw7nkbeMVsfQAw+E7U9LUzURIzgxSpHWZFTu1NY33RlouvA9Z4CQ==","signatures":[{"sig":"MEUCIH1di6aFfj5d8vxfnEVxQ02AgsY8Ap9NXbjSIgZCCCB8AiEAyb4puZcZc0BBgqckKhI34Us87GQAe9dvugEkzbyLhe0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":421721},"engines":{"node":">=14"},"gitHead":"8d0925e677591a72288f5b0f87817e2421c61622","_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"_npmVersion":"11.0.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","directories":{},"_nodeVersion":"22.13.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/vue3-migration_1.8.4_1773840450085_0.17618473534079304","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"vue3-migration","version":"1.9.0","description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","bin":{"vue3-migration":"bin/cli.js"},"engines":{"node":">=14"},"keywords":["vue","vue3","migration","composable","mixin","vue2"],"license":"MIT","_id":"vue3-migration@1.9.0","gitHead":"8e9b9016be2a2e26061decc4d267cd0689aa7227","_nodeVersion":"22.13.1","_npmVersion":"11.0.0","dist":{"integrity":"sha512-FbFCkGAOXs5MXNK54ZGUFnd/+JB+p41qy2ErZ/nPHIeZxIgfFeXy0QkvAK0ZaVmhE/oqc/11+4megblB8hEQIw==","shasum":"c6e465bd1390c6cd0e10bb2326b8ea58bfdf0a9a","tarball":"https://registry.npmjs.org/vue3-migration/-/vue3-migration-1.9.0.tgz","fileCount":31,"unpackedSize":441344,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIELrqClp3ei1LHVoPnaVHLxJ0NUYXtEFjDLnUSR2m3BcAiA4JwMJ1DjQ2OYjMTs/ucMFVWtl6AJUF8dEpwTGrQU9jA=="}]},"_npmUser":{"name":"edencohen8","email":"edencohen.dev@gmail.com"},"directories":{},"maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vue3-migration_1.9.0_1774124750785_0.4905526395556503"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-01T22:15:54.711Z","modified":"2026-03-21T20:25:51.016Z","1.0.0":"2026-03-01T22:15:54.869Z","1.0.1":"2026-03-01T22:23:34.688Z","1.0.2":"2026-03-04T01:15:18.074Z","1.1.0":"2026-03-04T10:06:12.692Z","1.1.1":"2026-03-04T10:27:39.400Z","1.2.0":"2026-03-04T16:05:47.530Z","1.3.0":"2026-03-04T18:23:22.212Z","1.3.1":"2026-03-04T19:58:28.672Z","1.3.2":"2026-03-04T20:33:23.838Z","1.4.0":"2026-03-05T02:34:14.052Z","1.4.1":"2026-03-05T13:55:08.703Z","1.4.2":"2026-03-05T19:37:22.711Z","1.4.3":"2026-03-05T23:22:55.712Z","1.4.4":"2026-03-06T00:35:03.063Z","1.5.0":"2026-03-06T12:15:08.959Z","1.6.0":"2026-03-07T12:02:50.864Z","1.6.1":"2026-03-07T15:18:44.491Z","1.6.2":"2026-03-07T15:42:22.883Z","1.7.0":"2026-03-10T06:25:11.388Z","1.7.1":"2026-03-11T00:17:33.480Z","1.7.2":"2026-03-12T19:28:21.132Z","1.8.0":"2026-03-14T16:28:16.033Z","1.8.1":"2026-03-15T08:48:13.376Z","1.8.2":"2026-03-16T07:43:54.132Z","1.8.3":"2026-03-17T06:47:47.262Z","1.8.4":"2026-03-18T13:27:30.298Z","1.9.0":"2026-03-21T20:25:50.924Z"},"license":"MIT","keywords":["vue","vue3","migration","composable","mixin","vue2"],"description":"Automatically migrate Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all","maintainers":[{"name":"edencohen8","email":"edencohen.dev@gmail.com"}],"readme":"# vue3-migration\n\n**Stop rewriting mixins by hand.** Automatically migrate your Vue 2 mixins to Vue 3 composables — data, computed, methods, watchers, lifecycle hooks, and all.\n\nOne command. Full before/after diffs. No files changed until you say yes.\n\n## The Problem\n\nEvery Vue 2 project sitting on mixins is a migration bottleneck. Rewriting them by hand means:\n\n- Reading every mixin, understanding every member, tracing every `this.` reference\n- Creating composable files, converting `this.x` to `x.value`, rewriting lifecycle hooks\n- Updating every component that imports the mixin — removing imports, adding `setup()`, destructuring return values\n- Doing it again for the next mixin. And the next. Across dozens (or hundreds) of components.\n\n**vue3-migration does all of this automatically.** It reads your mixins, generates (or patches) composables, rewrites your components, and shows you a clean diff before touching a single file.\n\n## Install\n\n```bash\nnpm install -D vue3-migration\n```\n\nRequires Node.js >= 14 and Python >= 3.9 (used internally for AST analysis).\n\n## Quick Start\n\n```bash\nnpx vue3-migration\n```\n\nThat's it. An interactive menu walks you through four options:\n\n| # | Mode | What it does |\n|---|------|-------------|\n| **1** | **Full project** | Migrates every component at once. Generates and patches composables, injects `setup()`, removes mixin imports. Shows a full change summary before writing. |\n| **2** | **Pick a component** | Choose one component from a list. Migrate just that file. Low blast radius — perfect for large codebases. |\n| **3** | **Pick a mixin** | Choose one mixin to fully retire. Updates the composable and every component that uses it. |\n| **4** | **Project status** | Read-only scan. Generates a detailed markdown report: what's migrated, what's ready, what's blocked and why. |\n\n### Direct Commands\n\n```bash\nnpx vue3-migration all                                # Full project migration\nnpx vue3-migration component src/components/Foo.vue   # One component\nnpx vue3-migration mixin authMixin                    # Retire one mixin everywhere\nnpx vue3-migration status                             # Status report only\nnpx vue3-migration --root /path/to/project all        # Run from outside project root\n```\n\n## What It Actually Does\n\n### Generates composables from scratch\n\nNo existing composable? The tool creates one. Given a mixin like:\n\n```js\n// mixins/authMixin.js\nexport default {\n  data() {\n    return { user: null, token: '' }\n  },\n  computed: {\n    isLoggedIn() { return !!this.user }\n  },\n  methods: {\n    async login(credentials) { /* ... */ }\n  },\n  mounted() {\n    this.checkSession()\n  }\n}\n```\n\nIt generates:\n\n```js\n// composables/useAuth.js\nimport { ref, computed, onMounted } from 'vue'\n\nexport function useAuth() {\n  const user = ref(null)\n  const token = ref('')\n\n  const isLoggedIn = computed(() => !!user.value)\n\n  async function login(credentials) { /* ... */ }\n\n  onMounted(() => {\n    checkSession()\n  })\n\n  return { user, token, isLoggedIn, login }\n}\n```\n\nEvery `this.x` reference is rewritten. Lifecycle hooks are converted. Getter/setter computed properties are handled. Watch expressions with `deep`, `immediate`, and handler options are converted.\n\n### Patches incomplete composables\n\nAlready started writing composables manually? The tool detects what's missing and patches it — adds missing member declarations and updates the `return` statement. No duplicate work.\n\n### Rewrites components automatically\n\nFor every component using a mixin, the tool:\n\n1. **Removes** the mixin import line\n2. **Adds** the composable import\n3. **Removes** the mixin from the `mixins: [...]` array\n4. **Injects** a `setup()` function with destructured composable calls\n5. **Converts** lifecycle hooks to their Composition API equivalents\n6. **Merges** into existing `setup()` if one already exists\n\n**Before:**\n```vue\n<script>\nimport authMixin from '@/mixins/authMixin'\n\nexport default {\n  mixins: [authMixin],\n  data() { return { localState: true } }\n}\n</script>\n```\n\n**After:**\n```vue\n<script>\nimport { useAuth } from '@/composables/useAuth'\n\nexport default {\n  setup() {\n    const { user, token, isLoggedIn, login } = useAuth()\n    return { user, token, isLoggedIn, login }\n  },\n  data() { return { localState: true } }\n}\n</script>\n```\n\n### Handles `this.$` patterns\n\n- `this.$nextTick(cb)` &rarr; `nextTick(cb)` (auto-imports from `'vue'`)\n- `this.$set(obj, key, val)` &rarr; `obj[key] = val`\n- `this.$delete(obj, key)` &rarr; `delete obj[key]`\n- `this.$emit`, `this.$router`, `this.$store`, `this.$refs`, and 15+ more patterns are detected and flagged with actionable migration guidance\n\n### Smart about what it can't automate\n\nSome patterns need human judgment. The tool doesn't silently skip them — it flags them clearly:\n\n- **`this.$emit`** &rarr; \"Use `defineEmits` or pass `emit` from `setup()`\"\n- **`this.$router` / `this.$route`** &rarr; \"Import `useRouter()` / `useRoute()` from `vue-router`\"\n- **`this.$store`** &rarr; \"Import store directly from Pinia/Vuex\"\n- **`this.$refs`** &rarr; \"Use template refs with `ref()`\"\n- **Mixin `props`, `inject`, `provide`** &rarr; \"Must use `defineProps()` / `inject()` manually\"\n- **Nested mixins** &rarr; \"Transitive members may be missed\"\n- **`filters`** &rarr; \"Removed in Vue 3 — convert to methods\"\n- **This-aliasing** (`const self = this`) &rarr; \"Manual replacement needed\"\n\nEach warning is injected as a comment directly in the generated code, so nothing gets lost.\n\n## How It Works\n\nUnder the hood, the tool runs a **three-phase pipeline** — no files are modified until you confirm.\n\n**Phase 1 — Analyze.** For every `.vue` file in your project, the tool parses the `<script>` block, finds which mixins it uses, extracts the mixin's members (data, computed, methods, watch, lifecycle hooks), and searches for a matching composable (`authMixin` &rarr; `useAuth.js`). It then classifies each member: is it declared in the composable? Is it returned? Does the component override it? This classification determines whether the mixin is **ready** to migrate, or **blocked** (and why).\n\n**Phase 2 — Prepare composables.** Blocked entries get fixed automatically. If a composable is missing members, they're patched in. If no composable exists at all, one is generated from the mixin source — converting `data()` to `ref()`, `computed` to `computed()`, methods to plain functions, and lifecycle hooks to their Composition API equivalents. All `this.x` references are rewritten.\n\n**Phase 3 — Inject into components.** For each ready mixin, the tool removes the mixin import, removes it from the `mixins: [...]` array, adds the composable import, and injects a `setup()` function that destructures and returns the composable's members.\n\nEvery change is collected as a plan object — original content paired with new content. The CLI shows you a unified diff of the full plan, and only writes files after you type `y`.\n\nFor the full architectural deep-dive — parsing internals, data models, warning system, and module-by-module breakdown — see [ARCHITECTURE.md](ARCHITECTURE.md).\n\n## Safety Features\n\n**Nothing changes until you confirm.** Every migration mode shows a complete change summary and asks for explicit `y/n` confirmation before writing any file.\n\n**Full diff report.** Every migration writes a `migration-diff-<timestamp>.md` with unified diffs of every changed file — composables and components.\n\n**Override-aware.** If a component defines its own `data`, `computed`, or `methods` that overlap with a mixin, the tool knows the component's version takes precedence and won't inject duplicates.\n\n**Confidence scoring.** Generated composables include a confidence header:\n- **HIGH** — Clean conversion, no remaining issues\n- **MEDIUM** — Has TODOs or warnings that need review\n- **LOW** — Remaining `this.` references or structural issues\n\n**Blocked status.** If a mixin has structural issues — no matching composable, missing member declarations, or members not in the return statement — the tool marks it as blocked and tells you exactly why. Patterns that need manual attention (like `this.$emit` or `this.$router`) don't block migration — the tool proceeds and injects warning comments directly in the generated code so you know exactly what to fix.\n\n## What It Supports\n\n| Mixin feature | Auto-converted |\n|--------------|---------------|\n| `data()` properties | ref() with default values |\n| `computed` (simple) | computed(() => ...) |\n| `computed` (get/set) | computed({ get, set }) |\n| `methods` (sync & async) | Plain functions |\n| `watch` (handler + options) | watch() with deep/immediate |\n| `mounted`, `created`, etc. | onMounted(), inlined, etc. |\n| `beforeDestroy` / `destroyed` | onBeforeUnmount() / onUnmounted() |\n| `this.x` references | x.value or x (context-aware) |\n| `this.$nextTick` | nextTick() |\n| `this.$set` / `this.$delete` | Direct assignment / delete |\n| Multiple mixins per component | Multiple composable calls |\n| Existing `setup()` function | Merges (doesn't overwrite) |\n| `@/` and relative imports | Resolved and rewritten |\n\n## Recommended Workflow for Large Projects\n\n1. **Run `npx vue3-migration status`** to see the full picture — which mixins are used where, what's ready, what's blocked.\n2. **Start with \"Pick a component\"** (option 2). Migrate one component, test it, commit.\n3. **When a mixin is fully covered**, use \"Pick a mixin\" (option 3) to retire it across all components at once.\n4. **Repeat** until the status report shows zero remaining mixins.\n\nFor smaller projects, \"Full project\" (option 1) handles everything in one pass.\n\n## How It Finds Your Files\n\nThe tool searches recursively from your project root (or `--root` if specified):\n\n- **Components:** Every `.vue` file in the project tree\n- **Mixin files:** Resolved from import paths (`@/`, relative, bare imports)\n- **Composables:** First checks directories named `composables/` (case-insensitive), then falls back to searching the entire project for any `use*.js` / `use*.ts` file\n\nSkips `node_modules/`, `dist/`, `.git/`, and `__pycache__/` automatically.\n\n## Requirements\n\n- **Node.js** >= 14 (for the CLI wrapper)\n- **Python** >= 3.9 (for the migration engine — auto-detected on your PATH)\n\n## License\n\nMIT\n","readmeFilename":"README.md"}