{"_id":"@syncraft-labs/vue","_rev":"12-b9cc230976603b8b0dafe097044e31a7","name":"@syncraft-labs/vue","dist-tags":{"latest":"0.6.0"},"versions":{"0.1.0":{"name":"@syncraft-labs/vue","version":"0.1.0","keywords":["syncraft","vue","composable","local-first","offline","sync","shallowRef","composition-api"],"author":{"name":"Denis Listiadi"},"license":"MIT","_id":"@syncraft-labs/vue@0.1.0","maintainers":[{"name":"denislistiadi","email":"denislistiadi24@gmail.com"}],"homepage":"https://github.com/denislistiadi/syncraft/tree/main/packages/vue#readme","bugs":{"url":"https://github.com/denislistiadi/syncraft/issues"},"dist":{"shasum":"aee003859c0768166243fdd71425a6baa9eb1168","tarball":"https://registry.npmjs.org/@syncraft-labs/vue/-/vue-0.1.0.tgz","fileCount":8,"integrity":"sha512-lCF1lnWFVGeMmtC7ouxdz1vXW0UNdhvf29D3AaEMtgeB5NMMsbu76xjh06xGpLoM4tAfwAPk1FBrdNo+Yabhkg==","signatures":[{"sig":"MEYCIQC2cjesIElW67P43JqWATaLwWBc/N1NowguwAgrdhrOhQIhAO5WYwCOWiBKuEPL1V4WZgKYSS1FBJfg82sxUxqaQi5m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56670},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"65b0a3aea39a9913a4f4604bcbe2b83404f56e44","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","test:watch":"vitest watch"},"_npmUser":{"name":"denislistiadi","email":"denislistiadi24@gmail.com"},"repository":{"url":"git+https://github.com/denislistiadi/syncraft.git","type":"git","directory":"packages/vue"},"_npmVersion":"10.9.2","description":"Vue composables for Syncraft — local-first state synchronization.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"@syncraft-labs/core":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.4.0","jsdom":"^26.1.0","vitest":"^3.2.0","typescript":"^5.8.0","fake-indexeddb":"^6.0.0","@vue/test-utils":"^2.4.0"},"peerDependencies":{"vue":">=3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/vue_0.1.0_1782719302687_0.82312248029077","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@syncraft-labs/vue","version":"0.1.1","keywords":["syncraft-labs","vue","composable","local-first","offline","sync","shallowRef","composition-api"],"author":{"name":"Denis Listiadi"},"license":"MIT","_id":"@syncraft-labs/vue@0.1.1","maintainers":[{"name":"denislistiadi","email":"denislistiadi24@gmail.com"}],"homepage":"https://github.com/denislistiadi/syncraft-labs/tree/main/packages/vue#readme","bugs":{"url":"https://github.com/denislistiadi/syncraft-labs/issues"},"dist":{"shasum":"53c609211732c55694cf775f2d33e823df7ec279","tarball":"https://registry.npmjs.org/@syncraft-labs/vue/-/vue-0.1.1.tgz","fileCount":8,"integrity":"sha512-I6I/KuZgl/TihcfICxYpx4fY+pUbDdlbYTyVgd4rxoaKqcjxtts9xdswbuY0eFGaM20w0K9nCldpoUpf3yEscg==","signatures":[{"sig":"MEUCIQDfrPC3F+8qE6Aqe3iNP9HgZChAvxufS+GJnWQjdQNMKwIgZDMptshHre8+kmR6IR7iplhZM7I5diO8EXsE0P8Oy6k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@syncraft-labs%2fvue@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":56696},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"77eb453b357b5266fa73c73f9e45482e5a6e1351","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest watch"},"_npmUser":{"name":"denislistiadi","email":"denislistiadi24@gmail.com"},"repository":{"url":"git+https://github.com/denislistiadi/syncraft-labs.git","type":"git","directory":"packages/vue"},"_npmVersion":"10.8.2","description":"Vue composables for Syncraft Labs — local-first state synchronization.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@syncraft-labs/core":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.4.0","jsdom":"^26.1.0","vitest":"^3.2.0","typescript":"^5.8.0","fake-indexeddb":"^6.0.0","@vue/test-utils":"^2.4.0"},"peerDependencies":{"vue":">=3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/vue_0.1.1_1783685572774_0.8023500900115126","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@syncraft-labs/vue","version":"0.2.0","keywords":["syncraft-labs","vue","composable","local-first","offline","sync","shallowRef","composition-api"],"author":{"name":"Denis Listiadi"},"license":"MIT","_id":"@syncraft-labs/vue@0.2.0","maintainers":[{"name":"denislistiadi","email":"denislistiadi24@gmail.com"}],"homepage":"https://syncraft-labs.netlify.app","bugs":{"url":"https://github.com/denislistiadi/syncraft-labs/issues"},"dist":{"shasum":"6842abcf38d6f45fdfd034c64815afce1f3ce7bd","tarball":"https://registry.npmjs.org/@syncraft-labs/vue/-/vue-0.2.0.tgz","fileCount":8,"integrity":"sha512-8L1uOrDBWUSYJqs83WZG3ej8y6kAXA2JQz17iEA1C+MhEdqdhLgofyTtAOeh+ITuUptNGtIBqH9Eq77qiWFIwA==","signatures":[{"sig":"MEQCIDrDbXeY94FjPPe+N17pl4K64BbW5tZL1+wgHLL61WdnAiBY4pGvjxfFoqCcPS1W2p4NTanAU3BiuzbcBbKjMQmPag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@syncraft-labs%2fvue@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":62282},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"bd63f956f0e7dcbc6a4703cb56a3d7ef49ded4fa","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest watch"},"_npmUser":{"name":"denislistiadi","email":"denislistiadi24@gmail.com"},"repository":{"url":"git+https://github.com/denislistiadi/syncraft-labs.git","type":"git","directory":"packages/vue"},"_npmVersion":"10.8.2","description":"Vue 3 composables for Syncraft Labs — local-first state synchronization.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@syncraft-labs/core":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.4.0","jsdom":"^26.1.0","vitest":"^3.2.0","typescript":"^5.8.0","fake-indexeddb":"^6.0.0","@vue/test-utils":"^2.4.0"},"peerDependencies":{"vue":">=3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/vue_0.2.0_1783926993750_0.2786459287151377","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@syncraft-labs/vue","version":"0.2.1","keywords":["syncraft-labs","vue","composable","local-first","offline","sync","shallowRef","composition-api"],"author":{"name":"Denis Listiadi"},"license":"MIT","_id":"@syncraft-labs/vue@0.2.1","maintainers":[{"name":"denislistiadi","email":"denislistiadi24@gmail.com"}],"homepage":"https://syncraft-labs.netlify.app","bugs":{"url":"https://github.com/denislistiadi/syncraft-labs/issues"},"dist":{"shasum":"4b0b8b6733abc3616a4569a4fa0b5fc634ecd4e1","tarball":"https://registry.npmjs.org/@syncraft-labs/vue/-/vue-0.2.1.tgz","fileCount":8,"integrity":"sha512-vvstjvB7vdaNb58S3j8VFqT9JnRnWnsaO9JAWeo01TUNilcTl6xSbbC4KkV61bpj2qBef8P2b1E4/BwNVBXcPA==","signatures":[{"sig":"MEUCIEyMaclgJOB5My3ERBsTnlodDvBPlfXFc2CwtV2/gzKzAiEAtcmdhhndLxJf6iz+Al9Krbp7UVSUowDv0a9QzYEZq2w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@syncraft-labs%2fvue@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":60210},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"0cc7defbb109a7b1f375e77ceec4bdd98b2f62cc","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest watch"},"_npmUser":{"name":"denislistiadi","email":"denislistiadi24@gmail.com"},"repository":{"url":"git+https://github.com/denislistiadi/syncraft-labs.git","type":"git","directory":"packages/vue"},"_npmVersion":"10.8.2","description":"Vue 3 composables for Syncraft Labs — local-first state synchronization.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@syncraft-labs/core":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.4.0","jsdom":"^26.1.0","vitest":"^3.2.0","typescript":"^5.8.0","fake-indexeddb":"^6.0.0","@vue/test-utils":"^2.4.0"},"peerDependencies":{"vue":">=3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/vue_0.2.1_1784564444980_0.6182440686695421","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@syncraft-labs/vue","version":"0.3.0","keywords":["syncraft-labs","vue","composable","local-first","offline","sync","shallowRef","composition-api","plugin","state-management","indexeddb","typescript"],"author":{"name":"Denis Listiadi"},"license":"MIT","_id":"@syncraft-labs/vue@0.3.0","maintainers":[{"name":"denislistiadi","email":"denislistiadi24@gmail.com"}],"homepage":"https://syncraft-labs.web.id","bugs":{"url":"https://github.com/denislistiadi/syncraft-labs/issues"},"dist":{"shasum":"ec7bb9a8ee86c4bf7d7a0ff9e9c751e714977626","tarball":"https://registry.npmjs.org/@syncraft-labs/vue/-/vue-0.3.0.tgz","fileCount":8,"integrity":"sha512-Tw7KV2AYh99ikjsbcv8Af6jAeu0EUo43AYH1yJpCtB8P383hhXF7rw0SZuHC3tgliaOZSlCSwxxi+XTlSk5JCQ==","signatures":[{"sig":"MEQCID1vtluakH1sj3S7AK0csJckRYVpTxb1AhWV4C4o5P8qAiAweexZATlazqPjK/hcRzQHsgbh6qJPPmWFduW3MWKa7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@syncraft-labs%2fvue@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":61527},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"3abeddceb46235b57f2ef92bb4352fc592ec3d18","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest watch"},"_npmUser":{"name":"denislistiadi","email":"denislistiadi24@gmail.com"},"repository":{"url":"git+https://github.com/denislistiadi/syncraft-labs.git","type":"git","directory":"packages/vue"},"_npmVersion":"10.8.2","description":"Vue 3 composables for Syncraft Labs — local-first state synchronization.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@syncraft-labs/core":"0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.4.0","jsdom":"^26.1.0","vitest":"^3.2.0","typescript":"^5.8.0","fake-indexeddb":"^6.0.0","@vue/test-utils":"^2.4.0"},"peerDependencies":{"vue":">=3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/vue_0.3.0_1785609491977_0.8753720765436035","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@syncraft-labs/vue","version":"0.4.0","keywords":["syncraft-labs","vue","composable","local-first","offline","sync","shallowRef","composition-api","plugin","state-management","indexeddb","typescript"],"author":{"name":"Denis Listiadi"},"license":"MIT","_id":"@syncraft-labs/vue@0.4.0","maintainers":[{"name":"denislistiadi","email":"denislistiadi24@gmail.com"}],"homepage":"https://syncraft-labs.web.id","bugs":{"url":"https://github.com/denislistiadi/syncraft-labs/issues"},"dist":{"shasum":"ac7bdaaf1858055948f3edf5840c49bfe160739f","tarball":"https://registry.npmjs.org/@syncraft-labs/vue/-/vue-0.4.0.tgz","fileCount":8,"integrity":"sha512-SWw7dwdE3EdVSIbAyD/f2D7xh3bMt97BxffuGjXPM9mcfKSbhiVgh+Phu8kpmpTRigUP0EYD1Xu2rg4o9SkunA==","signatures":[{"sig":"MEUCIQDbBnWGa7DECV9+ul6Sn9RXoh6p7VcA1DbWWwjo7+xreAIgDQkVOxjTQG7RsK4ZAZD0SYAsyWXG0oEUu6b0V3ZZF64=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@syncraft-labs%2fvue@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":64591},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"e8612dcbfcff864aac51a2991fafd8125a5b5caf","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest watch"},"_npmUser":{"name":"denislistiadi","email":"denislistiadi24@gmail.com"},"repository":{"url":"git+https://github.com/denislistiadi/syncraft-labs.git","type":"git","directory":"packages/vue"},"_npmVersion":"10.8.2","description":"Vue 3 composables for Syncraft Labs — local-first state synchronization.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@syncraft-labs/core":"0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.4.0","jsdom":"^26.1.0","vitest":"^3.2.0","typescript":"^5.8.0","fake-indexeddb":"^6.0.0","@vue/test-utils":"^2.4.0"},"peerDependencies":{"vue":">=3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/vue_0.4.0_1787248275843_0.13254134711300414","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@syncraft-labs/vue","version":"0.4.2","keywords":["syncraft-labs","vue","composable","local-first","offline","sync","shallowRef","composition-api","plugin","state-management","indexeddb","typescript"],"author":{"name":"Denis Listiadi"},"license":"MIT","_id":"@syncraft-labs/vue@0.4.2","maintainers":[{"name":"denislistiadi","email":"denislistiadi24@gmail.com"}],"homepage":"https://syncraft-labs.web.id","bugs":{"url":"https://github.com/denislistiadi/syncraft-labs/issues"},"dist":{"shasum":"2a1f8e8d75d6a48904e2f03938fb06a60027e0a8","tarball":"https://registry.npmjs.org/@syncraft-labs/vue/-/vue-0.4.2.tgz","fileCount":8,"integrity":"sha512-3eZwLqcdR8fRSwMThKBb1q+4cbDBIWmMt68gwb7d6rvi4/dfeChaaNLKAe9HV6YTSTiwyP5ssPdGq8efhucj/A==","signatures":[{"sig":"MEUCIFeCnJc0ly90kGaz9Ipi8qd5INkBgFu9eeerLQX8qRu9AiEAhhgNVJ1dzup+IZR9gOioPFW77z/bruEIHwkcs8haOiQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@syncraft-labs%2fvue@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":64591},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"3eaa0c6bd21888026d6620c4dc036f68e08dc475","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest watch"},"_npmUser":{"name":"denislistiadi","email":"denislistiadi24@gmail.com"},"repository":{"url":"git+https://github.com/denislistiadi/syncraft-labs.git","type":"git","directory":"packages/vue"},"_npmVersion":"10.8.2","description":"Vue 3 composables for Syncraft Labs — local-first state synchronization.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@syncraft-labs/core":"0.4.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.4.0","jsdom":"^26.1.0","vitest":"^3.2.0","typescript":"^5.8.0","fake-indexeddb":"^6.0.0","@vue/test-utils":"^2.4.0"},"peerDependencies":{"vue":">=3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/vue_0.4.2_1787416938180_0.5942831846608698","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@syncraft-labs/vue","version":"0.5.0","keywords":["syncraft-labs","vue","composable","local-first","offline","sync","shallowRef","composition-api","plugin","state-management","indexeddb","typescript"],"author":{"name":"Denis Listiadi"},"license":"MIT","_id":"@syncraft-labs/vue@0.5.0","maintainers":[{"name":"denislistiadi","email":"denislistiadi24@gmail.com"}],"homepage":"https://syncraft-labs.web.id","bugs":{"url":"https://github.com/denislistiadi/syncraft-labs/issues"},"dist":{"shasum":"62aaacfc254cb72bd7ceed08dc839d32e3840ec2","tarball":"https://registry.npmjs.org/@syncraft-labs/vue/-/vue-0.5.0.tgz","fileCount":8,"integrity":"sha512-sAhAaVrPEtJxckRvpW7P60mrBWQcu8eUlse+/4p6JPfoTMw6wK1OgvjCG4H/4Tic6nARseHGkWRj4IiuB1Y9Rg==","signatures":[{"sig":"MEUCIHMxdwCL3iLBythAVgEwJvCJlz23t+46lEE7YxCLHP+BAiEA6VoEtLAkeanVXfCPtAllnKMT3otF9ocOLi7ARNhPDn4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@syncraft-labs%2fvue@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":52559},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"gitHead":"a8e1fbd61f5f9a3921f4a17c7230dc0b0fdd0ff3","scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest watch"},"_npmUser":{"name":"denislistiadi","email":"denislistiadi24@gmail.com"},"repository":{"url":"git+https://github.com/denislistiadi/syncraft-labs.git","type":"git","directory":"packages/vue"},"_npmVersion":"10.8.2","description":"Vue 3 composables for Syncraft Labs â€” local-first state synchronization.","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@syncraft-labs/core":"0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.4.0","jsdom":"^26.1.0","vitest":"^3.2.0","typescript":"^5.8.0","fake-indexeddb":"^6.0.0","@vue/test-utils":"^2.4.0"},"peerDependencies":{"vue":">=3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/vue_0.5.0_1788888831699_0.32438099385157804","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@syncraft-labs/vue","version":"0.6.0","description":"Vue 3 composables for Syncraft Labs — local-first state synchronization.","license":"MIT","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"build":"tsup","dev":"tsup --watch","test":"vitest run","test:watch":"vitest watch","clean":"rm -rf dist","typecheck":"tsc --noEmit"},"dependencies":{"@syncraft-labs/core":"0.6.0"},"peerDependencies":{"vue":">=3.3.0"},"devDependencies":{"@vue/test-utils":"^2.4.0","fake-indexeddb":"^6.0.0","jsdom":"^26.1.0","tsup":"^8.4.0","typescript":"^5.8.0","vitest":"^3.2.0","vue":"^3.5.0"},"sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/denislistiadi/syncraft-labs.git","directory":"packages/vue"},"bugs":{"url":"https://github.com/denislistiadi/syncraft-labs/issues"},"homepage":"https://syncraft-labs.web.id","author":{"name":"Denis Listiadi"},"publishConfig":{"access":"public"},"keywords":["syncraft-labs","vue","composable","local-first","offline","sync","shallowRef","composition-api","plugin","state-management","indexeddb","typescript"],"gitHead":"ac8625b2797c1e3d676656120729d678ffea7f8c","_id":"@syncraft-labs/vue@0.6.0","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-p0j67JvGfYnRC3knlEaxPz7ZpbY9pfvagPyEsWTjROr3XIFXyq8aHsVYN8Ww/5tgpIn/qV31ohkn3jQFC8iuaw==","shasum":"6d55df8fe6c4b05fac0f7b0b6f49fd76603bdec8","tarball":"https://registry.npmjs.org/@syncraft-labs/vue/-/vue-0.6.0.tgz","fileCount":8,"unpackedSize":56862,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFqe1nMgLwYaLvFbtDcgFahRC+6E79A6lCFZPUoBnFXDAiEAvguyP12EL/sEWeLXYZCmHMK3FH5k9HewOLb0jQCVy84="}]},"_npmUser":{"name":"denislistiadi","email":"denislistiadi24@gmail.com"},"directories":{},"maintainers":[{"name":"denislistiadi","email":"denislistiadi24@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vue_0.6.0_1789485873063_0.21569108882741395"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-29T07:48:22.528Z","modified":"2026-09-15T15:24:33.410Z","0.1.0":"2026-06-29T07:48:22.823Z","0.1.1":"2026-07-10T12:12:52.930Z","0.2.0":"2026-07-13T07:16:33.910Z","0.2.1":"2026-07-20T16:20:45.117Z","0.3.0":"2026-08-01T18:38:12.134Z","0.4.0":"2026-08-20T17:51:15.988Z","0.4.1":"2026-08-22T10:08:57.014Z","0.4.2":"2026-08-22T16:42:18.378Z","0.5.0":"2026-09-08T17:33:51.826Z","0.6.0":"2026-09-15T15:24:33.184Z"},"bugs":{"url":"https://github.com/denislistiadi/syncraft-labs/issues"},"author":{"name":"Denis Listiadi"},"license":"MIT","homepage":"https://syncraft-labs.web.id","keywords":["syncraft-labs","vue","composable","local-first","offline","sync","shallowRef","composition-api","plugin","state-management","indexeddb","typescript"],"repository":{"type":"git","url":"git+https://github.com/denislistiadi/syncraft-labs.git","directory":"packages/vue"},"description":"Vue 3 composables for Syncraft Labs — local-first state synchronization.","maintainers":[{"name":"denislistiadi","email":"denislistiadi24@gmail.com"}],"readme":"# <p align=\"center\">@syncraft-labs/vue</p>\r\n\r\n**<p align=\"center\">The official Vue 3 bindings for Syncraft Labs — local-first state synchronization.</p>**\r\n\r\n<p align=\"center\">\r\n  <a href=\"https://www.npmjs.com/package/@syncraft-labs/vue\"><img src=\"https://img.shields.io/npm/v/@syncraft-labs/vue?style=flat-square&color=42b883\" alt=\"npm version\"></a>\r\n  <a href=\"https://www.npmjs.com/package/@syncraft-labs/vue\"><img src=\"https://img.shields.io/npm/dt/@syncraft-labs/vue?style=flat-square\" alt=\"total downloads\"></a>\r\n  <a href=\"https://bundlephobia.com/package/@syncraft-labs/vue\"><img src=\"https://img.shields.io/bundlephobia/minzip/@syncraft-labs/vue?style=flat-square\" alt=\"size\"></a>\r\n  <a href=\"https://github.com/denislistiadi/syncraft-labs/blob/main/LICENSE\"><img src=\"https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square\" alt=\"License: MIT\"></a>\r\n  <a href=\"https://www.typescriptlang.org/\"><img src=\"https://img.shields.io/badge/TypeScript-strict-blue.svg?style=flat-square\" alt=\"TypeScript\"></a>\r\n</p>\r\n\r\n---\r\n\r\n## Purpose\r\n\r\n`@syncraft-labs/vue` provides the `useSync` composable for Vue 3. It gives your Vue components instant optimistic writes, durable IndexedDB persistence, automatic background outbox sync, and cross-tab synchronization.\r\n\r\nBuilt with Vue 3's `shallowRef` to safely integrate with proxy draft objects, preventing unnecessary deep reactivity proxying overhead while keeping your UI instantly synced. It relies on `createSyncraft()` plugin registration via `provide`/`inject` for complete store isolation in Nuxt 3 and SSR environments.\r\n\r\n## Installation\r\n\r\n```bash\r\n# npm\r\nnpm install @syncraft-labs/core @syncraft-labs/vue\r\n\r\n# yarn\r\nyarn add @syncraft-labs/core @syncraft-labs/vue\r\n\r\n# pnpm\r\npnpm add @syncraft-labs/core @syncraft-labs/vue\r\n```\r\n*Peer dependencies: Vue ≥ 3.3.0*\r\n\r\n## Documentation\r\n\r\nThe Syncraft Labs documentation is available at **[syncraft-labs.web.id](https://syncraft-labs.web.id)**.\r\n\r\n- [Getting Started with Vue](https://syncraft-labs.web.id/docs/packages/vue)\r\n- [SSR with Nuxt 3](https://syncraft-labs.web.id/docs/guides/ssr-nextjs-nuxt)\r\n- [Production Guides](https://syncraft-labs.web.id/docs/guides/production-checklist)\r\n\r\n## Basic Usage\r\n\r\nMount the `createSyncraft()` plugin in your root application (crucial for Nuxt 3 SSR request isolation), then consume state anywhere using `useSync`.\r\n\r\n```ts\r\n// main.ts - Install plugin for app-level store isolation\r\nimport { createApp } from \"vue\";\r\nimport { createSyncraft } from \"@syncraft-labs/vue\";\r\nimport App from \"./App.vue\";\r\n\r\nconst app = createApp(App);\r\napp.use(createSyncraft());\r\napp.mount(\"#app\");\r\n```\r\n\r\n```vue\r\n<!-- App.vue -->\r\n<script setup lang=\"ts\">\r\nimport { useSync } from \"@syncraft-labs/vue\";\r\n\r\ninterface TodoState {\r\n  todos: Array<{ id: string; text: string; done: boolean }>;\r\n}\r\n\r\nconst { data, update, isHydrating, isOffline, error } = useSync<TodoState>(\r\n  \"todos\",\r\n  { initialState: { todos: [] } }\r\n);\r\n\r\nfunction addTodo() {\r\n  update((draft) => {\r\n    draft.todos.push({\r\n      id: crypto.randomUUID(),\r\n      text: \"New todo\",\r\n      done: false,\r\n    });\r\n  });\r\n}\r\n</script>\r\n\r\n<template>\r\n  <p v-if=\"isHydrating\">Loading from cache…</p>\r\n\r\n  <div v-else>\r\n    <p v-if=\"isOffline\">You're offline — changes saved locally</p>\r\n    <p v-if=\"error\">Error: {{ error.message }}</p>\r\n\r\n    <button @click=\"addTodo\">Add Todo</button>\r\n\r\n    <ul>\r\n      <li v-for=\"t in data?.todos\" :key=\"t.id\">\r\n        {{ t.text }}\r\n      </li>\r\n    </ul>\r\n  </div>\r\n</template>\r\n```\r\n\r\n## Remote Sync (Background Pushing)\r\n\r\nInject your API calls into the `useSync` options. Syncraft automatically queues mutations offline and drains the outbox using exponential backoff when connectivity is available.\r\n\r\n```vue\r\n<script setup lang=\"ts\">\r\nimport { useSync } from \"@syncraft-labs/vue\";\r\n\r\nconst { data, update, refetch, isSyncing } = useSync<TodoState>(\"todos\", {\r\n  initialState: { todos: [] },\r\n\r\n  // Fetch initial data (called once if DB is empty)\r\n  fetcher: () => fetch(\"/api/todos\").then((r) => r.json()),\r\n\r\n  // Push pending mutations to your backend\r\n  pusher: async (entries) => {\r\n    await fetch(\"/api/sync\", {\r\n      method: \"POST\",\r\n      headers: { \"Content-Type\": \"application/json\" },\r\n      body: JSON.stringify(entries),\r\n    });\r\n  },\r\n\r\n  // Polling interval in ms (default: 5000)\r\n  syncInterval: 3000,\r\n});\r\n</script>\r\n\r\n<template>\r\n  <button @click=\"refetch\" :disabled=\"isSyncing\">\r\n    {{ isSyncing ? \"Syncing…\" : \"Refresh\" }}\r\n  </button>\r\n</template>\r\n```\r\n\r\n## API Reference\r\n\r\n| Export | Type | Description |\r\n|--------|------|-------------|\r\n| `createSyncraft()` | Plugin | Vue plugin guaranteeing app-level store registry isolation across SSR requests |\r\n| `useSync<T>(key, options)` | Composable | Primary Vue 3 composable returning reactive `shallowRef` state and updater |\r\n| `destroyStore(key)` | Function | Destroys an active store instance by storage key |\r\n| `UseSyncOptions<T>` | Interface | Configuration options (`initialState?`, `fetcher?`, `pusher?`, `syncInterval?`, `maxOutboxSize?`, `overflowStrategy?`, `onOverflow?`, `storageMode?`, `idField?`) |\r\n| `UseSyncReturn<T>` | Interface | Return values (`data`, `update`, `refetch`, `isHydrating`, `isSyncing`, `isOffline`, `error`) |\r\n\r\n## License\r\n\r\n[MIT](https://github.com/denislistiadi/syncraft-labs/blob/main/LICENSE) © Denis Listiadi\r\n\r\n","readmeFilename":"README.md"}