{"_id":"@barbapapazes/vue-forms","_rev":"9-1d325356815080fbcda583a314d9441a","name":"@barbapapazes/vue-forms","dist-tags":{"latest":"0.1.5"},"versions":{"0.0.1":{"name":"@barbapapazes/vue-forms","version":"0.0.1","keywords":["vue","forms"],"author":{"url":"https://github.com/barbapapazes/","name":"Estéban Soubiran","email":"e.soubiran25@gmail.com"},"license":"MIT","_id":"@barbapapazes/vue-forms@0.0.1","maintainers":[{"name":"barbapapazes","email":"e.soubiran25@gmail.com"}],"dist":{"shasum":"b557be40168bbdaed5548a27eab865e243bfefbf","tarball":"https://registry.npmjs.org/@barbapapazes/vue-forms/-/vue-forms-0.0.1.tgz","fileCount":11,"integrity":"sha512-FqOTNusx32093CzhKfwKsEszPw6nnmSduGCqNYh3lnUYHouMG+4vv4ZbkBQxSm8LQmBlOwgVcuDirtpT+4Rgfg==","signatures":[{"sig":"MEQCIBiX8jTyF3WdV072u7ZJXd6+0mD0ObL4u9TcWfaHjXKpAiBUqluxyV1zJCmv9JubJPzunTfXJe+R5vp0M7IJg+Epag==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6243},"main":"dist/index.mjs","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs"}},"gitHead":"2b779a8dcc72eed30e815061ef3cd2b9aaf94405","scripts":{"lint":"eslint .","prepack":"unbuild","release":"npm run lint && changelogen --release && npm publish --access public && git push --follow-tags","lint:fix":"eslint . --fix"},"_npmUser":{"name":"barbapapazes","email":"e.soubiran25@gmail.com"},"_npmVersion":"10.8.2","description":"Handle Vue Forms with ease","directories":{},"_nodeVersion":"20.17.0","dependencies":{"vue":"^3.5.10","ofetch":"^1.4.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.10.0+sha512.73a29afa36a0d092ece5271de5177ecbf8318d454ecd701343131b8ebc0c1a91c487da46ab77c8e596d6acf1461e3594ced4becedf8921b074fbd8653ed7051c","devDependencies":{"eslint":"^9.11.1","unbuild":"^2.0.0","typescript":"^5.6.2","changelogen":"^0.5.7","@vue/tsconfig":"^0.5.1","@antfu/eslint-config":"^3.7.3"},"_npmOperationalInternal":{"tmp":"tmp/vue-forms_0.0.1_1728073594528_0.49312793686808276","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"@barbapapazes/vue-forms","version":"0.0.2","keywords":["vue","forms"],"author":{"url":"https://github.com/barbapapazes/","name":"Estéban Soubiran","email":"e.soubiran25@gmail.com"},"license":"MIT","_id":"@barbapapazes/vue-forms@0.0.2","maintainers":[{"name":"barbapapazes","email":"e.soubiran25@gmail.com"}],"dist":{"shasum":"fa419f777f1fd1bfe2d7bf5563dfa201eb2364d1","tarball":"https://registry.npmjs.org/@barbapapazes/vue-forms/-/vue-forms-0.0.2.tgz","fileCount":11,"integrity":"sha512-5fVaYHYhOqdDgwTGxSJkKX/cBG7jyPsYoKJnyakDs0fwA2BNsiyBgXGFCykx2H8TMWOElNdEJD51OBo5oi9f7A==","signatures":[{"sig":"MEYCIQDRKqWnik6wAVMZvR8ZxELOWngzUGnbzVSLEjzBdUMmyAIhAN1PdV9Xdkg9cdym5HlZKTFOQ+7vwPuZeEPx4oTyodaN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6636},"main":"dist/index.mjs","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs"}},"gitHead":"4551107a72c9f8d71e9e65e5840c785236f6b53f","scripts":{"lint":"eslint .","prepack":"unbuild","release":"npm run lint && changelogen --release && npm publish --access public && git push --follow-tags","lint:fix":"eslint . --fix"},"_npmUser":{"name":"barbapapazes","email":"e.soubiran25@gmail.com"},"_npmVersion":"10.8.2","description":"Handle Vue Forms with ease","directories":{},"_nodeVersion":"20.17.0","dependencies":{"vue":"^3.5.10","ofetch":"^1.4.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.10.0+sha512.73a29afa36a0d092ece5271de5177ecbf8318d454ecd701343131b8ebc0c1a91c487da46ab77c8e596d6acf1461e3594ced4becedf8921b074fbd8653ed7051c","devDependencies":{"eslint":"^9.11.1","unbuild":"^2.0.0","typescript":"^5.6.2","changelogen":"^0.5.7","@vue/tsconfig":"^0.5.1","@antfu/eslint-config":"^3.7.3"},"_npmOperationalInternal":{"tmp":"tmp/vue-forms_0.0.2_1728074841507_0.016538961212277048","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"@barbapapazes/vue-forms","version":"0.0.3","keywords":["vue","forms"],"author":{"url":"https://github.com/barbapapazes/","name":"Estéban Soubiran","email":"e.soubiran25@gmail.com"},"license":"MIT","_id":"@barbapapazes/vue-forms@0.0.3","maintainers":[{"name":"barbapapazes","email":"e.soubiran25@gmail.com"}],"dist":{"shasum":"8bf2de73384b312415f9ca89a817e25b9e611257","tarball":"https://registry.npmjs.org/@barbapapazes/vue-forms/-/vue-forms-0.0.3.tgz","fileCount":11,"integrity":"sha512-XdqUbduDQPwX5CAyIkKSFqB1YzhYDEn9L0jtYCtNX7rG1JvQNUBDBbbKuKJECz+c4frL/6XyqAz1Mm+W+qVZwA==","signatures":[{"sig":"MEYCIQDMpPXhYzKNCKGGhrEcIA6toasBow/kNpO2Dgv9tko1DgIhAPvmECIZS5itG/Xo1YbroTp5wlH7wXHVXfVxF3uI6WuE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12812},"main":"dist/index.mjs","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs"}},"gitHead":"e6b8112be1b2b7cefa3424ab6fe3f5500c537de6","scripts":{"lint":"eslint .","prepack":"unbuild","release":"npm run lint && changelogen --release && npm publish --access public && git push --follow-tags","lint:fix":"eslint . --fix"},"_npmUser":{"name":"barbapapazes","email":"e.soubiran25@gmail.com"},"_npmVersion":"10.8.2","description":"Handle Vue Forms with ease","directories":{},"_nodeVersion":"20.17.0","dependencies":{"vue":"^3.5.10","ofetch":"^1.4.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.10.0+sha512.73a29afa36a0d092ece5271de5177ecbf8318d454ecd701343131b8ebc0c1a91c487da46ab77c8e596d6acf1461e3594ced4becedf8921b074fbd8653ed7051c","devDependencies":{"eslint":"^9.11.1","unbuild":"^2.0.0","typescript":"^5.6.2","changelogen":"^0.5.7","@vue/tsconfig":"^0.5.1","@antfu/eslint-config":"^3.7.3"},"_npmOperationalInternal":{"tmp":"tmp/vue-forms_0.0.3_1728079339732_0.2747741567179596","host":"s3://npm-registry-packages"}},"0.0.4":{"name":"@barbapapazes/vue-forms","version":"0.0.4","keywords":["vue","forms"],"author":{"url":"https://github.com/barbapapazes/","name":"Estéban Soubiran","email":"e.soubiran25@gmail.com"},"license":"MIT","_id":"@barbapapazes/vue-forms@0.0.4","maintainers":[{"name":"barbapapazes","email":"e.soubiran25@gmail.com"}],"dist":{"shasum":"f3fefe6f0e549abaca24707d0630e696b007ee4c","tarball":"https://registry.npmjs.org/@barbapapazes/vue-forms/-/vue-forms-0.0.4.tgz","fileCount":11,"integrity":"sha512-ssQgKUL9chzWjBknjB8S/gQKOz+CmELCw5bxCy9ZDJupXqOpwPLmYdBfeVXlaJQFv2/s4hIDSmS/BrPTS1Aylg==","signatures":[{"sig":"MEUCIBIv8m+MvxclStDyF1kgHsH4EoplkNu5DHNy9HX18484AiEAwGTFC0PUZBH03HaCNZZYuR+ReG/Oya9prXLwBhKgQMo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12780},"main":"dist/index.mjs","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs"}},"gitHead":"3be42e29679167d172745ffb94eb837219c8f95b","scripts":{"lint":"eslint .","prepack":"unbuild","release":"npm run lint && changelogen --release && npm publish --access public && git push --follow-tags","lint:fix":"eslint . --fix"},"_npmUser":{"name":"barbapapazes","email":"e.soubiran25@gmail.com"},"_npmVersion":"10.8.2","description":"Handle Vue Forms with ease","directories":{},"_nodeVersion":"20.17.0","dependencies":{"vue":"^3.5.10","ofetch":"^1.4.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.10.0+sha512.73a29afa36a0d092ece5271de5177ecbf8318d454ecd701343131b8ebc0c1a91c487da46ab77c8e596d6acf1461e3594ced4becedf8921b074fbd8653ed7051c","devDependencies":{"eslint":"^9.11.1","unbuild":"^2.0.0","typescript":"^5.6.2","changelogen":"^0.5.7","@vue/tsconfig":"^0.5.1","@antfu/eslint-config":"^3.7.3"},"_npmOperationalInternal":{"tmp":"tmp/vue-forms_0.0.4_1728079946400_0.42834106461576815","host":"s3://npm-registry-packages"}},"0.1.0":{"name":"@barbapapazes/vue-forms","version":"0.1.0","keywords":["vue","forms"],"author":{"url":"https://github.com/barbapapazes/","name":"Estéban Soubiran","email":"esteban@soubiran.dev"},"license":"MIT","_id":"@barbapapazes/vue-forms@0.1.0","maintainers":[{"name":"barbapapazes","email":"e.soubiran25@gmail.com"}],"homepage":"https://github.com/Barbapapazes-Sponsors/vue-forms","bugs":{"url":"https://github.com/Barbapapazes-Sponsors/vue-forms/issues"},"dist":{"shasum":"f259eca0d86e1a98d72e100d99fa92c6cc1f6312","tarball":"https://registry.npmjs.org/@barbapapazes/vue-forms/-/vue-forms-0.1.0.tgz","fileCount":19,"integrity":"sha512-2OA19IW3LRsTtuAKMeHCoaljrGJpgswQk8lYger21swleuaDccyZurNLUEjl5giMjBaJ6WyeNP3IJXbPvNHFiw==","signatures":[{"sig":"MEQCIBZRyFD0Jh9NeHNGcahbV0/tX6vAalTilwXOdP7OIUnTAiAGZSaaMfHYRutrunWiCatoOI988pBZIkPr3l7nIYXpPA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18939},"main":"dist/index.mjs","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs"}},"gitHead":"b72f17106c7ed9742503b20c6298c3af731d590d","scripts":{"lint":"eslint .","automd":"automd","prepack":"unbuild","release":"npm run lint && changelogen --release && npm publish --access public && git push --follow-tags","lint:fix":"eslint . --fix"},"_npmUser":{"name":"barbapapazes","email":"e.soubiran25@gmail.com"},"repository":{"url":"git+https://github.com/Barbapapazes-Sponsors/vue-forms.git","type":"git"},"_npmVersion":"10.8.2","description":"Handle forms in Vue with ease. Avoid repetitive code and focus on your business logic.","directories":{},"sideEffects":false,"_nodeVersion":"20.17.0","dependencies":{"vue":"^3.5.10","ofetch":"^1.4.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.10.0+sha512.73a29afa36a0d092ece5271de5177ecbf8318d454ecd701343131b8ebc0c1a91c487da46ab77c8e596d6acf1461e3594ced4becedf8921b074fbd8653ed7051c","devDependencies":{"automd":"^0.3.10","eslint":"^9.11.1","unbuild":"^2.0.0","typescript":"^5.6.2","changelogen":"^0.5.7","@vue/tsconfig":"^0.5.1","@antfu/eslint-config":"^3.7.3"},"_npmOperationalInternal":{"tmp":"tmp/vue-forms_0.1.0_1728136415630_0.8542384784743744","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"@barbapapazes/vue-forms","version":"0.1.1","keywords":["vue","forms"],"author":{"url":"https://github.com/barbapapazes/","name":"Estéban Soubiran","email":"esteban@soubiran.dev"},"license":"MIT","_id":"@barbapapazes/vue-forms@0.1.1","maintainers":[{"name":"barbapapazes","email":"e.soubiran25@gmail.com"}],"homepage":"https://github.com/Barbapapazes-Sponsors/vue-forms","bugs":{"url":"https://github.com/Barbapapazes-Sponsors/vue-forms/issues"},"dist":{"shasum":"d2b8420cb102ceb55f559d502afd93748bdd12cf","tarball":"https://registry.npmjs.org/@barbapapazes/vue-forms/-/vue-forms-0.1.1.tgz","fileCount":19,"integrity":"sha512-+9CWfSssStYppa7Api70aGg2xmSw1Tsm9tMRI5sZwg6yDVhYmk41L686O69Cdnf42/xoVvJlxPtfkyKNFNylDQ==","signatures":[{"sig":"MEYCIQDYdX+YTPrNmOZCvwt2AZZaNjHPFBe1tPn3441YNqA1KQIhAMoIMIt4t+IXyY3die7akW1jJqYxYPYN16M9qKPhNG0D","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24781},"main":"dist/index.mjs","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs"}},"gitHead":"be6cfc493f0b7b0d3847366a2aa0f490459e0fa8","scripts":{"lint":"automd && eslint .","automd":"automd","prepack":"unbuild","release":"npm run lint && changelogen --release && npm publish --access public && git push --follow-tags","lint:fix":"automd && eslint . --fix"},"_npmUser":{"name":"barbapapazes","email":"e.soubiran25@gmail.com"},"repository":{"url":"git+https://github.com/Barbapapazes-Sponsors/vue-forms.git","type":"git"},"_npmVersion":"10.8.2","description":"Streamline form handling in Vue with a straightforward and expressive API.","directories":{},"sideEffects":false,"_nodeVersion":"20.17.0","dependencies":{"vue":"^3.5.10","ofetch":"^1.4.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.10.0+sha512.73a29afa36a0d092ece5271de5177ecbf8318d454ecd701343131b8ebc0c1a91c487da46ab77c8e596d6acf1461e3594ced4becedf8921b074fbd8653ed7051c","devDependencies":{"automd":"^0.3.10","eslint":"^9.11.1","unbuild":"^2.0.0","typescript":"^5.6.2","changelogen":"^0.5.7","@vue/tsconfig":"^0.5.1","@antfu/eslint-config":"^3.7.3"},"_npmOperationalInternal":{"tmp":"tmp/vue-forms_0.1.1_1728157712847_0.8112567952607617","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"@barbapapazes/vue-forms","version":"0.1.2","keywords":["vue","forms"],"author":{"url":"https://github.com/barbapapazes/","name":"Estéban Soubiran","email":"esteban@soubiran.dev"},"license":"MIT","_id":"@barbapapazes/vue-forms@0.1.2","maintainers":[{"name":"barbapapazes","email":"e.soubiran25@gmail.com"}],"homepage":"https://github.com/Barbapapazes-Sponsors/vue-forms","bugs":{"url":"https://github.com/Barbapapazes-Sponsors/vue-forms/issues"},"dist":{"shasum":"e406707fc7ecc25dd4052f5db00cac860c242d1d","tarball":"https://registry.npmjs.org/@barbapapazes/vue-forms/-/vue-forms-0.1.2.tgz","fileCount":19,"integrity":"sha512-wGKE2ZkhQIZTQcPoV8OihDPvvUVdHAOXBBROWRhLFexEOpVyE4BODnd0j1o1lMgVNH41fAC8BFMvBgidnlKBqw==","signatures":[{"sig":"MEUCIQDtSPFN7Z03WVxT1veEo9gd9YgRVEaLgz9s8WZjQNElsQIgUvXzvuOkl+RphZQYKWRkEOG5RhqN60tyQQxAb9Xc78g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24921},"main":"dist/index.mjs","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs"}},"gitHead":"25e045f8bc388dbc9e66c9320fe539d622ba9516","scripts":{"lint":"automd && eslint .","automd":"automd","prepack":"unbuild","release":"npm run lint && npm run typecheck && changelogen --release && npm publish --access public && git push --follow-tags","lint:fix":"automd && eslint . --fix","typecheck":"vue-tsc"},"_npmUser":{"name":"barbapapazes","email":"e.soubiran25@gmail.com"},"repository":{"url":"git+https://github.com/Barbapapazes-Sponsors/vue-forms.git","type":"git"},"_npmVersion":"10.8.2","description":"Streamline form handling in Vue with a straightforward and expressive API.","directories":{},"sideEffects":false,"_nodeVersion":"20.17.0","dependencies":{"vue":"^3.5.10","ofetch":"^1.4.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.10.0+sha512.73a29afa36a0d092ece5271de5177ecbf8318d454ecd701343131b8ebc0c1a91c487da46ab77c8e596d6acf1461e3594ced4becedf8921b074fbd8653ed7051c","devDependencies":{"automd":"^0.3.10","eslint":"^9.11.1","unbuild":"^2.0.0","vue-tsc":"^2.1.6","typescript":"^5.6.2","changelogen":"^0.5.7","@vue/tsconfig":"^0.5.1","@antfu/eslint-config":"^3.7.3"},"_npmOperationalInternal":{"tmp":"tmp/vue-forms_0.1.2_1728197301465_0.16314332560371758","host":"s3://npm-registry-packages"}},"0.1.3":{"name":"@barbapapazes/vue-forms","version":"0.1.3","keywords":["vue","forms"],"author":{"url":"https://github.com/barbapapazes/","name":"Estéban Soubiran","email":"esteban@soubiran.dev"},"license":"MIT","_id":"@barbapapazes/vue-forms@0.1.3","maintainers":[{"name":"barbapapazes","email":"e.soubiran25@gmail.com"}],"homepage":"https://github.com/Barbapapazes-Sponsors/vue-forms","bugs":{"url":"https://github.com/Barbapapazes-Sponsors/vue-forms/issues"},"dist":{"shasum":"19d24c777e6f35939db003a05448169a09416f85","tarball":"https://registry.npmjs.org/@barbapapazes/vue-forms/-/vue-forms-0.1.3.tgz","fileCount":22,"integrity":"sha512-xXae5GuxojITjXGWoL++PSwzN+MVW2wYzKQQEJYZlkFY1aERH59Nzwqm9zSL9bujxeLJ0z3T9YMlVwV8F/sS3g==","signatures":[{"sig":"MEYCIQCH9X2FjfOyS6cf3HmQpvGIzmMq31ELBedh8bz58so5TgIhAPMQ0gk23h7cY123WZFhInENIviye0nHHeabNe302I2z","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25503},"main":"dist/index.mjs","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs"}},"gitHead":"9c021d39485b190bb43fb0ab7a351023afc6ee09","scripts":{"lint":"automd && eslint .","automd":"automd","prepack":"unbuild","release":"npm run lint && npm run typecheck && changelogen --release && npm publish --access public && git push --follow-tags","lint:fix":"automd && eslint . --fix","typecheck":"vue-tsc"},"_npmUser":{"name":"barbapapazes","email":"e.soubiran25@gmail.com"},"repository":{"url":"git+https://github.com/Barbapapazes-Sponsors/vue-forms.git","type":"git"},"_npmVersion":"10.8.2","description":"Streamline form handling in Vue with a straightforward and expressive API.","directories":{},"sideEffects":false,"_nodeVersion":"20.17.0","dependencies":{"vue":"^3.5.10","ofetch":"^1.4.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.10.0+sha512.73a29afa36a0d092ece5271de5177ecbf8318d454ecd701343131b8ebc0c1a91c487da46ab77c8e596d6acf1461e3594ced4becedf8921b074fbd8653ed7051c","devDependencies":{"automd":"^0.3.10","eslint":"^9.11.1","unbuild":"^2.0.0","vue-tsc":"^2.1.6","typescript":"^5.6.2","changelogen":"^0.5.7","@vue/tsconfig":"^0.5.1","@antfu/eslint-config":"^3.7.3"},"_npmOperationalInternal":{"tmp":"tmp/vue-forms_0.1.3_1729937182958_0.7063686744647257","host":"s3://npm-registry-packages"}},"0.1.4":{"name":"@barbapapazes/vue-forms","version":"0.1.4","keywords":["vue","forms"],"author":{"url":"https://github.com/barbapapazes/","name":"Estéban Soubiran","email":"esteban@soubiran.dev"},"license":"MIT","_id":"@barbapapazes/vue-forms@0.1.4","maintainers":[{"name":"barbapapazes","email":"e.soubiran25@gmail.com"}],"homepage":"https://github.com/Barbapapazes-Sponsors/vue-forms","bugs":{"url":"https://github.com/Barbapapazes-Sponsors/vue-forms/issues"},"dist":{"shasum":"66a557af764a35f6405f388399b4a6b97c49b176","tarball":"https://registry.npmjs.org/@barbapapazes/vue-forms/-/vue-forms-0.1.4.tgz","fileCount":22,"integrity":"sha512-HFPjU4aFIuuDhMG3fbfXx70J0NgreMaUE3bTNAucUiZpgj9DdZV6xJxFc6I/VvW4KsKs7uaP3+OLsm3U4F9qcQ==","signatures":[{"sig":"MEYCIQDO4n0ZxlvYiV9JNOrqHlQZ0ajnQ5qrYqFqg7Qm0Dp/tQIhAPmu9vXpFKJ9pO48kB/nGZdnGhDPqXismrWX1jxutTja","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25591},"main":"dist/index.mjs","type":"module","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs"}},"gitHead":"5a69a38eb022a36fe18f2bbc3a2dc955f6a2135d","scripts":{"lint":"automd && eslint .","automd":"automd","prepack":"unbuild","release":"npm run lint && npm run typecheck && changelogen --release && npm publish --access public && git push --follow-tags","lint:fix":"automd && eslint . --fix","typecheck":"vue-tsc"},"_npmUser":{"name":"barbapapazes","email":"e.soubiran25@gmail.com"},"repository":{"url":"git+https://github.com/Barbapapazes-Sponsors/vue-forms.git","type":"git"},"_npmVersion":"10.8.2","description":"Streamline form handling in Vue with a straightforward and expressive API.","directories":{},"sideEffects":false,"_nodeVersion":"20.17.0","dependencies":{"vue":"^3.5.10","ofetch":"^1.4.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.10.0+sha512.73a29afa36a0d092ece5271de5177ecbf8318d454ecd701343131b8ebc0c1a91c487da46ab77c8e596d6acf1461e3594ced4becedf8921b074fbd8653ed7051c","devDependencies":{"automd":"^0.3.10","eslint":"^9.11.1","unbuild":"^2.0.0","vue-tsc":"^2.1.6","typescript":"^5.6.2","changelogen":"^0.5.7","@vue/tsconfig":"^0.5.1","@antfu/eslint-config":"^3.7.3"},"_npmOperationalInternal":{"tmp":"tmp/vue-forms_0.1.4_1729937392963_0.8840480254221708","host":"s3://npm-registry-packages"}},"0.1.5":{"name":"@barbapapazes/vue-forms","type":"module","version":"0.1.5","packageManager":"pnpm@9.10.0+sha512.73a29afa36a0d092ece5271de5177ecbf8318d454ecd701343131b8ebc0c1a91c487da46ab77c8e596d6acf1461e3594ced4becedf8921b074fbd8653ed7051c","description":"Streamline form handling in Vue with a straightforward and expressive API.","author":{"name":"Estéban Soubiran","email":"esteban@soubiran.dev","url":"https://github.com/barbapapazes/"},"license":"MIT","homepage":"https://github.com/Barbapapazes-Sponsors/vue-forms","repository":{"type":"git","url":"git+https://github.com/Barbapapazes-Sponsors/vue-forms.git"},"keywords":["vue","forms"],"sideEffects":false,"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs"}},"main":"dist/index.mjs","types":"dist/index.d.ts","scripts":{"prepack":"unbuild","typecheck":"vue-tsc","lint":"automd && eslint .","lint:fix":"automd && eslint . --fix","automd":"automd","release":"npm run lint && npm run typecheck && changelogen --release && npm publish --access public && git push --follow-tags"},"dependencies":{"ofetch":"^1.4.0","vue":"^3.5.10"},"devDependencies":{"@antfu/eslint-config":"^3.7.3","@vue/tsconfig":"^0.5.1","automd":"^0.3.10","changelogen":"^0.5.7","eslint":"^9.11.1","typescript":"^5.6.2","unbuild":"^2.0.0","vue-tsc":"^2.1.6"},"_id":"@barbapapazes/vue-forms@0.1.5","gitHead":"5a2b6665288282fbcdf34c442cca34018380644e","bugs":{"url":"https://github.com/Barbapapazes-Sponsors/vue-forms/issues"},"_nodeVersion":"20.17.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-dfE/veHeuAwyrTfAY/w9NX3VvrpCn3VhDkjs4WPrvpao0jtuJb26Xe+CPJ0ZvcPuq6EtVPJJI+fB9e0YiOV0ZA==","shasum":"42ce773c490290cab2f8d24d3c3be7039d89acd4","tarball":"https://registry.npmjs.org/@barbapapazes/vue-forms/-/vue-forms-0.1.5.tgz","fileCount":19,"unpackedSize":25459,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFu68fiUiz+Rc6Nw9kekEmVJJBQUaOWojW1kitYcsCxEAiEAnD+eFNyWjE7rr/feKZDRV0qHnPpsPCJ1CbQ3icURX9w="}]},"_npmUser":{"name":"barbapapazes","email":"e.soubiran25@gmail.com"},"directories":{},"maintainers":[{"name":"barbapapazes","email":"e.soubiran25@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/vue-forms_0.1.5_1729949283703_0.5457335542101336"},"_hasShrinkwrap":false}},"time":{"created":"2024-10-04T20:26:34.399Z","modified":"2024-10-26T13:28:04.087Z","0.0.1":"2024-10-04T20:26:34.721Z","0.0.2":"2024-10-04T20:47:21.700Z","0.0.3":"2024-10-04T22:02:19.952Z","0.0.4":"2024-10-04T22:12:26.572Z","0.1.0":"2024-10-05T13:53:35.859Z","0.1.1":"2024-10-05T19:48:33.025Z","0.1.2":"2024-10-06T06:48:21.637Z","0.1.3":"2024-10-26T10:06:23.226Z","0.1.4":"2024-10-26T10:09:53.165Z","0.1.5":"2024-10-26T13:28:03.910Z"},"bugs":{"url":"https://github.com/Barbapapazes-Sponsors/vue-forms/issues"},"author":{"name":"Estéban Soubiran","email":"esteban@soubiran.dev","url":"https://github.com/barbapapazes/"},"license":"MIT","homepage":"https://github.com/Barbapapazes-Sponsors/vue-forms","keywords":["vue","forms"],"repository":{"type":"git","url":"git+https://github.com/Barbapapazes-Sponsors/vue-forms.git"},"description":"Streamline form handling in Vue with a straightforward and expressive API.","maintainers":[{"name":"barbapapazes","email":"e.soubiran25@gmail.com"}],"readme":"# vue-forms\n\n<!-- automd:fetch url=\"gh:barbapapazes/barbapapazes/main/automd/support-my-work.md\" -->\n\n> [!NOTE]\n> If you find this project useful, please consider [supporting my work via GitHub Sponsors](https://github.com/sponsors/barbapapazes)! 💜\n\n<!-- /automd -->\n\n<!-- automd:badges color=\"gray\" -->\n\n[![npm version](https://img.shields.io/npm/v/@barbapapazes/vue-forms?color=gray)](https://npmjs.com/package/@barbapapazes/vue-forms)\n[![npm downloads](https://img.shields.io/npm/dm/@barbapapazes/vue-forms?color=gray)](https://npm.chart.dev/@barbapapazes/vue-forms)\n\n<!-- /automd -->\n\nStreamline form handling in Vue with a straightforward and expressive API. _Eliminate boilerplate code and concentrate on your form logic._\n\n## Installation\n\n```sh\n# ✨ Auto-detect\nnpx npm install @barbapapazes/vue-forms\n\n# npm\nnpm install @barbapapazes/vue-forms\n\n# yarn\nyarn add @barbapapazes/vue-forms\n\n# pnpm\npnpm install @barbapapazes/vue-forms\n```\n\n## Usage\n\n_This package draws heavy inspiration from the `useForm` feature of [Inertia.js](https://inertiajs.com/)._\n\nTo begin, import the `useForm` composable to instantiate a new form.\n\n```ts\nimport { useForm } from '@barbapapazes/vue-forms'\n```\n\n### Fields\n\nYou need to supply an object with the initial values of the form fields. Access them through the `data` object to bind them to the form inputs.\n\n```vue\n<script setup lang=\"ts\">\nimport { useForm } from '@barbapapazes/vue-forms'\n\nconst { data } = useForm({\n  email: '',\n  password: '',\n})\n</script>\n\n<template>\n  <form>\n    <input v-model=\"data.email\" type=\"email\">\n    <input v-model=\"data.password\" type=\"password\">\n    <button type=\"submit\">\n      Submit\n    </button>\n  </form>\n</template>\n```\n\nAlternatively, you can wrap `useForm` with a `reactive` function to bypass the necessity of destructuring the `useForm` object. _[Read more about Vue.js composable functions.](https://vuejs.org/guide/reusability/composables.html#composables)_\n\n```vue\n<script setup lang=\"ts\">\nimport { useForm } from '@barbapapazes/vue-forms'\nimport { reactive } from 'vue'\n\nconst form = reactive(useForm({\n  email: '',\n  password: '',\n}))\n</script>\n\n<template>\n  <form>\n    <input v-model=\"form.data.email\" type=\"email\">\n    <input v-model=\"form.data.password\" type=\"password\">\n    <button type=\"submit\">\n      Submit\n    </button>\n  </form>\n</template>\n```\n\n### Validation\n\nThis library assumes that **validation occurs on the server-side.**\n\nHowever, since we cannot predict the structure of a returned validation error, employ the `transformErrorResponse` hook to convert the error response into a format that maps to the form fields' errors.\n\nShould your server return an error resembling this:\n\n```json\n{\n  \"data\": {\n    \"email\": [\"The email field is required.\"],\n    \"password\": [\"The password field is required.\"]\n  }\n}\n```\n\nTransform it as follows:\n\n```ts\npost('/login', {\n  transformErrorResponse: (error) => {\n    return {\n      email: error.data.email?.[0],\n      password: error.data.password?.[0],\n    }\n  }\n})\n```\n\nThis transformation maps the error messages to the corresponding fields, enabling display within the form. _Without this transformation, errors cannot be displayed._\n\n```vue\n<template>\n  <form @submit.prevent=\"submit\">\n    <input v-model=\"data.email\" type=\"email\">\n    <span v-if=\"errors.email\">{{ errors.email }}</span>\n\n    <input v-model=\"data.password\" type=\"password\">\n    <span v-if=\"errors.password\">{{ errors.password }}</span>\n\n    <button type=\"submit\">\n      Submit\n    </button>\n  </form>\n</template>\n```\n\n### Submitting\n\nOnce completed, you can submit the form to the server using several methods: `submit`, `post`, `put`, `patch`, and `delete`. _The `submit` method is versatile and handles any HTTP method._\n\n```ts\nconst { post } = useForm({\n  email: '',\n  password: '',\n})\n\npost('/login') // Sends a POST request to '/login' with a payload of { email: '', password: '' }\n```\n\nThe `useForm` exposes additional references and methods:\n\n- `processing` is set to `true` while the form is submitting and reverts to `false` upon completion of the request (whether successful or not). This can be utilized to disable the submit button during submission.\n- `recentlySuccessful` is set to `true` following a successful submission of the form and resets to `false` after a brief delay. You can adjust the delay using the `recentlySuccessfulTimeout` option.\n- `clearErrors` clears the errors object. Specific errors can be cleared by passing the field name as an argument. For instance, `clearErrors('email', 'password')` clears the errors for both the email and password fields.\n- `setError` assigns an error. Pass the field name and error message as `setError('email', 'The email field is required.')`, or provide a partial error object like `setError({ email: 'The email field is required.' })`.\n- `reset` restores the form to its initial state, clearing both the data and errors objects.\n\n```vue\n<script setup lang=\"ts\">\nimport { useForm } from '@barbapapazes/vue-forms'\nimport { reactive } from 'vue'\n\nconst form = reactive(useForm({\n  name: 'John Doe',\n  email: '',\n}))\n\ninterface CreateUserResponse {\n  data: {\n    name: string\n    email: string\n  }\n}\n\ninterface CreateUserValidationError {\n  data: {\n    errors: {\n      message: string\n      name?: string\n      email?: string[]\n    }\n  }\n}\n\nfunction submit() {\n  form.post<CreateUserResponse, CreateUserValidationError>('/form', {\n    transformErrorResponse(error) {\n      return {\n        name: error.data.errors.name,\n        email: error.data.errors.email?.[0],\n      }\n    },\n    onSuccess() {\n      form.reset()\n    },\n  })\n}\n</script>\n\n<template>\n  <h1> Vue Forms Playground </h1>\n\n  <p v-if=\"form.recentlySuccessful\">\n    Form submitted successfully!\n  </p>\n\n  <form @submit.prevent=\"submit\">\n    <label>\n      Name:\n      <input v-model=\"form.data.name\">\n      <p> {{ form.errors.name }} </p>\n    </label>\n\n    <label>\n      Email:\n      <input v-model=\"form.data.email\">\n      <p> {{ form.errors.email }} </p>\n    </label>\n\n    <button\n      type=\"submit\"\n      :disabled=\"form.processing\"\n    >\n      Submit\n    </button>\n  </form>\n</template>\n```\n\nInternally, the `useForm` composable employs the [ofetch](https://github.com/unjs/ofetch) package. You can apply similar options as those available in the `ofetch` function to each method (e.g., interceptors to manage the usage of the `XSRF-TOKEN` cookie with `onRequest`).\n\n```ts\nform.post('/login', {\n  baseURL: 'https://api.example.com',\n  headers: {\n    'Content-Type': 'application/json',\n  },\n})\n```\n\n### TypeScript\n\nThe `useForm` composable leverages the provided inputs to infer the types of the `data` and `errors` objects.\n\nYou may also define types for the response from the server in the event of a successful submission or an error.\n\n```ts\nconst form = reactive(useForm({\n  email: '',\n  password: '',\n}))\n\n// Successful response\ninterface CreateUserResponse {\n  data: {\n    name: string\n    email: string\n  }\n}\n\n// Error response\ninterface CreateUserValidationError {\n  data: {\n    errors: {\n      message: string\n      name?: string\n      email?: string[]\n    }\n  }\n}\n\nfunction submit() {\n  form.post<CreateUserResponse, CreateUserValidationError>('/api/login', {\n    // eslint-disable-next-line node/handle-callback-err\n    transformErrorResponse(error) {\n      // `error` is typed using the `CreateUserValidationError` interface\n    },\n    onSuccess(response) {\n      // `response` is typed using the `CreateUserResponse` interface\n    },\n  })\n}\n```\n\n<!-- automd:fetch url=\"gh:barbapapazes/barbapapazes/main/automd/development.md\" -->\n\n## Development\n\n<details>\n\n<summary>Local development</summary>\n\n- Clone this repository\n- Install latest LTS version of [Node.js](https://nodejs.org/en/)\n- Enable [Corepack](https://github.com/nodejs/corepack) using `corepack enable`\n- Install dependencies using `pnpm install`\n\n</details>\n\n<!-- /automd -->\n\nAfter the local development environment is configured, navigate to the `./playground` directory to launch the development server.\n\n```sh\ncd playground\npnpm dev # Start the Vite development server and a server API.\n```\n\nThe playground simulates the library in a real-world context. It's a Vue 3 application utilizing the library from the `src` directory. There's no need to pre-build the library; it connects directly with Hot Module Replacement (HMR).\n\n<!-- automd:fetch url=\"gh:barbapapazes/barbapapazes/main/automd/license.md\" -->\n\n## License\n\nPublished under the [MIT](./LICENSE) license.\n\n<!-- /automd -->\n\n<!-- automd:fetch url=\"gh:barbapapazes/barbapapazes/main/automd/sponsors.md\" -->\n\n## Sponsors\n\nI would like to thank the following sponsors for supporting my work:\n\n![Sponsors](https://raw.githubusercontent.com/Barbapapazes/static/refs/heads/main/sponsors.svg)\n\n<!-- /automd -->\n","readmeFilename":"README.md"}