{"_id":"fugue","_rev":"137-e25d11d6ccfaf5ba75ab18590b0782cb","name":"fugue","dist-tags":{"latest":"3.0.0"},"versions":{"0.0.1-alpha":{"name":"fugue","version":"0.0.1-alpha","keywords":["CRDT","real-time","sync"],"author":"","license":"ISC","_id":"fugue@0.0.1-alpha","maintainers":[{"name":"0xcadams","email":"me@0xcadams.com"}],"dist":{"shasum":"0fddcf7b414bdd2df7320bc764c53f927804865b","tarball":"https://registry.npmjs.org/fugue/-/fugue-0.0.1-alpha.tgz","fileCount":3,"integrity":"sha512-Zp0gemCeJPwwjId2GcdI61mV155a6PwcDMoTwssQiN/qUuaJcfY8H03P2DOEX8r5UkiO5wx3Ys+P6RcsKNoh/Q==","signatures":[{"sig":"MEUCIQDJzEgcVSSeN9mIBi1kjxfF2M7v20WphIjuYPfF9xyGQwIgZkFtjkL3P2SW0XqZxntmzVn+kQtbxlFrRX+6FOamq28=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":635},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"0xcadams","email":"me@0xcadams.com"},"_npmVersion":"10.2.3","description":"CRDT-inspired data structures for real-time sync.","directories":{},"_nodeVersion":"18.19.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/fugue_0.0.1-alpha_1718816954620_0.07329202962691195","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"fugue","version":"0.0.2","keywords":["fractional indexing","sync","local-first","fugue","database","typescript","ts"],"author":{"name":"BriefHQ"},"license":"MIT","_id":"fugue@0.0.2","maintainers":[{"name":"0xcadams","email":"me@0xcadams.com"}],"homepage":"https://github.com/BriefHQ/fugue","bugs":{"url":"https://github.com/BriefHQ/fugue/issues"},"dist":{"shasum":"bf99a0f6cb0bb2a709965299ec9d5deb1dd68039","tarball":"https://registry.npmjs.org/fugue/-/fugue-0.0.2.tgz","fileCount":12,"integrity":"sha512-1oV4N+Exg8ndqaclM+EZA0lkvs9It/nsj9QtZmnP5o3/NfVClP71WVX5XWLv6wS37GCkQaxLvIK/ddD084nyIA==","signatures":[{"sig":"MEQCIE/kpHg/fd9tSUCbkWeLAkraWZ1j0osj3RKsOLgYpEdNAiAD+JULUI4K0VK9zWodFZKPeSrFN9sen7djOp9yFd52+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66433},"main":"dist/index.cjs","type":"module","_from":"file:fugue-0.0.2.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"test":"vitest run --typecheck --coverage","build":"tsup src/index.ts --format cjs,esm --dts --sourcemap","clean":"rm -rf dist node_modules coverage","release":"pnpm run build && pnpm publish","test:ui":"vitest --ui","test:bench":"vitest bench","test:types":"cd tests && tsc --noEmit"},"_npmUser":{"name":"0xcadams","email":"me@0xcadams.com"},"_resolved":"/private/var/folders/1p/byzq05qd42zg5rg6__h69_7c0000gn/T/7b532ff2c22524f55c584ecd950c629f/fugue-0.0.2.tgz","_integrity":"sha512-1oV4N+Exg8ndqaclM+EZA0lkvs9It/nsj9QtZmnP5o3/NfVClP71WVX5XWLv6wS37GCkQaxLvIK/ddD084nyIA==","repository":{"url":"git+https://github.com/BriefHQ/fugue.git","type":"git"},"_npmVersion":"10.2.3","description":"Fractional indexing without conflicts.","directories":{},"_nodeVersion":"18.19.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.6","jsdom":"^26.0.0","vitest":"^3.0.6","esbuild":"^0.25.0","prettier":"^3.5.1","@vitest/ui":"^3.0.6","typescript":"^5.7.3","@types/node":"^22.13.4","@vitest/coverage-v8":"3.0.6","fractional-indexing":"^3.2.0","vite-tsconfig-paths":"^5.1.4"},"_npmOperationalInternal":{"tmp":"tmp/fugue_0.0.2_1740334391151_0.5546212233014944","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"fugue","version":"0.0.3","keywords":["fractional indexing","sync","local-first","fugue","database","typescript","ts"],"author":{"name":"BriefHQ"},"license":"MIT","_id":"fugue@0.0.3","maintainers":[{"name":"0xcadams","email":"me@0xcadams.com"}],"homepage":"https://github.com/BriefHQ/fugue","bugs":{"url":"https://github.com/BriefHQ/fugue/issues"},"dist":{"shasum":"81e7d0511dfc3e9d6220995bdca8b8ac754e1ee7","tarball":"https://registry.npmjs.org/fugue/-/fugue-0.0.3.tgz","fileCount":10,"integrity":"sha512-uuaULSdmMrYl/c8a9gZl11xIssxBPystHjXaVRcnQC7SKtLuVHsm/k1vvFhcVLyopg5kHjSrUmAIGTsAxKjqhQ==","signatures":[{"sig":"MEYCIQCG9tTU92qJnt/pxTaQqhQlN2bE6e79ASjbsVgKcpy7LAIhAIsQrwUPhKdcGdl9OUw1OdGgGLHtBeGEGroFL83j9HGY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38786},"main":"dist/index.cjs","type":"module","_from":"file:fugue-0.0.3.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"size-limit","test":"vitest run --typecheck --coverage","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist node_modules coverage","release":"pnpm run build && pnpm publish","test:ui":"vitest --ui","test:bench":"vitest bench","test:types":"cd tests && tsc --noEmit"},"_npmUser":{"name":"0xcadams","email":"me@0xcadams.com"},"_resolved":"/private/var/folders/1p/byzq05qd42zg5rg6__h69_7c0000gn/T/09d08d5c634feb7a1a20a889da59bb04/fugue-0.0.3.tgz","_integrity":"sha512-uuaULSdmMrYl/c8a9gZl11xIssxBPystHjXaVRcnQC7SKtLuVHsm/k1vvFhcVLyopg5kHjSrUmAIGTsAxKjqhQ==","repository":{"url":"git+https://github.com/BriefHQ/fugue.git","type":"git"},"size-limit":[{"path":"dist/index.js"}],"_npmVersion":"10.2.3","description":"Fractional indexing without conflicts.","directories":{},"_nodeVersion":"18.19.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.6","jsdom":"^26.0.0","vitest":"^3.0.6","esbuild":"^0.25.0","prettier":"^3.5.1","@vitest/ui":"^3.0.6","size-limit":"^11.2.0","typescript":"^5.7.3","@types/node":"^22.13.4","@vitest/coverage-v8":"3.0.6","fractional-indexing":"^3.2.0","vite-tsconfig-paths":"^5.1.4","@size-limit/preset-small-lib":"^11.2.0"},"_npmOperationalInternal":{"tmp":"tmp/fugue_0.0.3_1740336593502_0.9763192406697132","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"fugue","version":"1.0.0","keywords":["fractional indexing","sync","local-first","fugue","database","typescript","ts"],"author":{"name":"BriefHQ"},"license":"MIT","_id":"fugue@1.0.0","maintainers":[{"name":"0xcadams","email":"me@0xcadams.com"}],"homepage":"https://github.com/BriefHQ/fugue","bugs":{"url":"https://github.com/BriefHQ/fugue/issues"},"dist":{"shasum":"b1ea1b29c7a55dbf6df05361c8d6ecf6d18e0151","tarball":"https://registry.npmjs.org/fugue/-/fugue-1.0.0.tgz","fileCount":10,"integrity":"sha512-7Uc6GenjMFA4mkteiZtB1fHNfhytZcr/THJbR1q9uFISyxDzGLM4RdePaHXXFKrNJvSOc1gZxTu36OQcSnHB9g==","signatures":[{"sig":"MEUCIQDqUejE9jnuOMlADyqf3sx4zHJEIPPBe/24i12hxpAjjwIgNko/N/GlVnmwDlErENqJOEZQe9TwV2kT5Tq7hphE1Oc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38954},"main":"dist/index.cjs","type":"module","_from":"file:fugue-1.0.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"size-limit","test":"vitest run --typecheck --coverage","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist node_modules coverage","release":"pnpm run build && pnpm publish","test:ui":"vitest --ui","test:bench":"vitest bench","test:types":"cd tests && tsc --noEmit"},"_npmUser":{"name":"0xcadams","email":"me@0xcadams.com"},"_resolved":"/private/var/folders/1p/byzq05qd42zg5rg6__h69_7c0000gn/T/fcdb1b126d176d662dfd27468902b734/fugue-1.0.0.tgz","_integrity":"sha512-7Uc6GenjMFA4mkteiZtB1fHNfhytZcr/THJbR1q9uFISyxDzGLM4RdePaHXXFKrNJvSOc1gZxTu36OQcSnHB9g==","repository":{"url":"git+https://github.com/BriefHQ/fugue.git","type":"git"},"size-limit":[{"path":"dist/index.js"}],"_npmVersion":"10.2.3","description":"Fractional indexing without conflicts.","directories":{},"_nodeVersion":"18.19.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.6","jsdom":"^26.0.0","vitest":"^3.0.6","esbuild":"^0.25.0","prettier":"^3.5.1","@vitest/ui":"^3.0.6","size-limit":"^11.2.0","typescript":"^5.7.3","@types/node":"^22.13.4","@vitest/coverage-v8":"3.0.6","fractional-indexing":"^3.2.0","vite-tsconfig-paths":"^5.1.4","@size-limit/preset-small-lib":"^11.2.0"},"_npmOperationalInternal":{"tmp":"tmp/fugue_1.0.0_1740337463582_0.6495416911742287","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"fugue","version":"1.0.1","keywords":["fractional indexing","sync","local-first","fugue","database","typescript","ts"],"author":{"name":"BriefHQ"},"license":"MIT","_id":"fugue@1.0.1","maintainers":[{"name":"0xcadams","email":"me@0xcadams.com"}],"homepage":"https://github.com/BriefHQ/fugue","bugs":{"url":"https://github.com/BriefHQ/fugue/issues"},"dist":{"shasum":"b3ee18ac57e36181f1925f2b30b1e8cbcd999b7c","tarball":"https://registry.npmjs.org/fugue/-/fugue-1.0.1.tgz","fileCount":10,"integrity":"sha512-fdCXPUlzpnYygksDe6CSdiriphqYkwG5n8vQYCfz5LrIZjH/MxCj9MrR2YH/JTO/U63aw16kcM7LQE431W8UCw==","signatures":[{"sig":"MEYCIQDcP7OX6m16uJCYD/F7qj7dqeXOXHAegKuZlpt/B0n7tQIhAKRsFSoOVWpghYZzaq52cc7Lx8Dst6hDZgJxLxLj/TTo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41907},"main":"dist/index.cjs","type":"module","_from":"file:fugue-1.0.1.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"size-limit","test":"vitest run --typecheck --coverage","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist node_modules coverage","release":"pnpm run build && pnpm publish","test:ui":"vitest --ui","test:bench":"vitest bench","test:types":"cd tests && tsc --noEmit"},"_npmUser":{"name":"0xcadams","email":"me@0xcadams.com"},"_resolved":"/private/var/folders/1p/byzq05qd42zg5rg6__h69_7c0000gn/T/6897381eac453e84fb4c84022b8ee927/fugue-1.0.1.tgz","_integrity":"sha512-fdCXPUlzpnYygksDe6CSdiriphqYkwG5n8vQYCfz5LrIZjH/MxCj9MrR2YH/JTO/U63aw16kcM7LQE431W8UCw==","repository":{"url":"git+https://github.com/BriefHQ/fugue.git","type":"git"},"size-limit":[{"path":"dist/index.js"}],"_npmVersion":"10.2.3","description":"Fractional indexing without conflicts.","directories":{},"_nodeVersion":"18.19.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.6","jsdom":"^26.0.0","vitest":"^3.0.6","esbuild":"^0.25.0","prettier":"^3.5.1","@vitest/ui":"^3.0.6","size-limit":"^11.2.0","typescript":"^5.7.3","@types/node":"^22.13.4","@vitest/coverage-v8":"3.0.6","fractional-indexing":"^3.2.0","vite-tsconfig-paths":"^5.1.4","@size-limit/preset-small-lib":"^11.2.0"},"_npmOperationalInternal":{"tmp":"tmp/fugue_1.0.1_1740502443105_0.18193105901078033","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"fugue","version":"2.0.0","keywords":["fractional indexing","sync","local-first","fugue","database","typescript","ts"],"author":{"name":"BriefHQ"},"license":"MIT","_id":"fugue@2.0.0","maintainers":[{"name":"0xcadams","email":"me@0xcadams.com"}],"homepage":"https://github.com/BriefHQ/fugue","bugs":{"url":"https://github.com/BriefHQ/fugue/issues"},"dist":{"shasum":"f2783a1cd3c933c262462d7817fcad8dac7b17ef","tarball":"https://registry.npmjs.org/fugue/-/fugue-2.0.0.tgz","fileCount":10,"integrity":"sha512-m8uMlzzBrG9BgbAO+IBjLpO2NtH7lIbLQEcYiV6qCNAy1v9Eewh5VSvg42tVTb5u3snYUZj067y6FyBCNUMByA==","signatures":[{"sig":"MEQCIHzFWqYccvFDvw7J36ce/eJRVosWWKlTEj/PuCrl8xMyAiAM9caI4BDHM2LZd+3t2sc61TnwTveI1ezhBEQqpd0ofw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53696},"main":"dist/index.cjs","type":"module","_from":"file:fugue-2.0.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"size-limit","test":"vitest run --typecheck --coverage","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist node_modules coverage","release":"pnpm run build && pnpm publish","test:ui":"vitest --ui","test:bench":"vitest bench","test:types":"cd tests && tsc --noEmit"},"_npmUser":{"name":"0xcadams","email":"me@0xcadams.com"},"_resolved":"/private/var/folders/1p/byzq05qd42zg5rg6__h69_7c0000gn/T/0489d94df19c9d33466c2958e91a40b2/fugue-2.0.0.tgz","_integrity":"sha512-m8uMlzzBrG9BgbAO+IBjLpO2NtH7lIbLQEcYiV6qCNAy1v9Eewh5VSvg42tVTb5u3snYUZj067y6FyBCNUMByA==","repository":{"url":"git+https://github.com/BriefHQ/fugue.git","type":"git"},"size-limit":[{"path":"dist/index.js"}],"_npmVersion":"10.2.3","description":"Fractional indexing without conflicts.","directories":{},"_nodeVersion":"18.19.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^26.0.0","vitest":"^3.1.1","esbuild":"^0.25.2","prettier":"^3.5.3","@vitest/ui":"^3.1.1","size-limit":"^11.2.0","typescript":"^5.8.3","@types/node":"^22.14.0","@vitest/coverage-v8":"3.1.1","fractional-indexing":"^3.2.0","vite-tsconfig-paths":"^5.1.4","@size-limit/preset-small-lib":"^11.2.0"},"_npmOperationalInternal":{"tmp":"tmp/fugue_2.0.0_1744147046745_0.03236052683880275","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"fugue","version":"2.0.1","keywords":["fractional indexing","sync","local-first","fugue","database","typescript","ts"],"author":{"name":"BriefHQ"},"license":"MIT","_id":"fugue@2.0.1","maintainers":[{"name":"0xcadams","email":"me@0xcadams.com"}],"homepage":"https://github.com/BriefHQ/fugue","bugs":{"url":"https://github.com/BriefHQ/fugue/issues"},"dist":{"shasum":"964c818ba8ae0222265f1b357e0e2814f59f4b15","tarball":"https://registry.npmjs.org/fugue/-/fugue-2.0.1.tgz","fileCount":10,"integrity":"sha512-ZCxwkxeZ7gkC81dV/2Wm8X81e0GUJExFTuZtTUE5wU0fNbeplS8zITl+1WrrecBzoSJgffEmfXX+YAgwjsZ/CQ==","signatures":[{"sig":"MEYCIQCFX8CbmaK+t7ZWcfWst9qHsmEWugMeTcFm4vTFDj5nkwIhAJCtvDE5kAMsyhTuThCHt877Q2Uw62Z65+WGMIpp1JXL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53697},"main":"dist/index.cjs","type":"module","_from":"file:fugue-2.0.1.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"size-limit","test":"vitest run --typecheck --coverage","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist node_modules coverage","release":"pnpm run build && pnpm publish","test:ui":"vitest --ui","test:bench":"vitest bench","test:types":"cd tests && tsc --noEmit"},"_npmUser":{"name":"0xcadams","email":"me@0xcadams.com"},"_resolved":"/private/var/folders/1p/byzq05qd42zg5rg6__h69_7c0000gn/T/b5f91a47808871fbcf7daf27e42989f6/fugue-2.0.1.tgz","_integrity":"sha512-ZCxwkxeZ7gkC81dV/2Wm8X81e0GUJExFTuZtTUE5wU0fNbeplS8zITl+1WrrecBzoSJgffEmfXX+YAgwjsZ/CQ==","repository":{"url":"git+https://github.com/BriefHQ/fugue.git","type":"git"},"size-limit":[{"path":"dist/index.js"}],"_npmVersion":"10.2.3","description":"Fractional indexing without conflicts.","directories":{},"_nodeVersion":"18.19.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^26.1.0","vitest":"^3.1.3","esbuild":"^0.25.4","prettier":"^3.5.3","@vitest/ui":"^3.1.3","size-limit":"^11.2.0","typescript":"^5.8.3","@types/node":"^22.15.14","@vitest/coverage-v8":"3.1.3","fractional-indexing":"^3.2.0","vite-tsconfig-paths":"^5.1.4","@size-limit/preset-small-lib":"^11.2.0"},"_npmOperationalInternal":{"tmp":"tmp/fugue_2.0.1_1746573278016_0.6274186932583306","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"fugue","version":"2.0.2","keywords":["fractional indexing","sync","local-first","fugue","database","typescript","ts"],"author":{"name":"0xcadams"},"license":"MIT","_id":"fugue@2.0.2","maintainers":[{"name":"0xcadams","email":"me@0xcadams.com"}],"homepage":"https://github.com/0xcadams/fugue","bugs":{"url":"https://github.com/0xcadams/fugue/issues"},"dist":{"shasum":"fac69708b9e80ba1932bb53160aeaca6dd9b6aab","tarball":"https://registry.npmjs.org/fugue/-/fugue-2.0.2.tgz","fileCount":10,"integrity":"sha512-Dm9tlr+8LTUioPPBf2XW70m0wdXqiOzPcsG/BMjUujF9NrJ8r14kv8jcvS/O80Vx7XDbabLCBqQ0GKGv+KqhNA==","signatures":[{"sig":"MEUCIG7xA/cs3YJL2diStDPOJ3V+W3Pzw9hB9onQPsSnKUBEAiEAptTBFxsjFd/XhHAG17Rkq/Z79DJVtY79BkHLVZonSng=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53701},"main":"dist/index.cjs","type":"module","_from":"file:fugue-2.0.2.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"size-limit","test":"vitest run --typecheck --coverage","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist node_modules coverage","release":"pnpm run build && pnpm publish","test:ui":"vitest --ui","test:bench":"vitest bench","test:types":"cd tests && tsc --noEmit"},"_npmUser":{"name":"0xcadams","email":"me@0xcadams.com"},"_resolved":"/private/var/folders/1p/byzq05qd42zg5rg6__h69_7c0000gn/T/2040ae67e6e573461ae640cd2993c98d/fugue-2.0.2.tgz","_integrity":"sha512-Dm9tlr+8LTUioPPBf2XW70m0wdXqiOzPcsG/BMjUujF9NrJ8r14kv8jcvS/O80Vx7XDbabLCBqQ0GKGv+KqhNA==","repository":{"url":"git+https://github.com/0xcadams/fugue.git","type":"git"},"size-limit":[{"path":"dist/index.js"}],"_npmVersion":"10.2.3","description":"Fractional indexing without conflicts.","directories":{},"_nodeVersion":"18.19.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","jsdom":"^26.1.0","vitest":"^3.1.3","esbuild":"^0.25.4","prettier":"^3.5.3","@vitest/ui":"^3.1.3","size-limit":"^11.2.0","typescript":"^5.8.3","@types/node":"^22.15.14","@vitest/coverage-v8":"3.1.3","fractional-indexing":"^3.2.0","vite-tsconfig-paths":"^5.1.4","@size-limit/preset-small-lib":"^11.2.0"},"_npmOperationalInternal":{"tmp":"tmp/fugue_2.0.2_1749668940320_0.4123754275892584","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"name":"fugue","version":"2.0.3","keywords":["fractional indexing","sync","local-first","fugue","database","typescript","ts"],"author":{"name":"0xcadams"},"license":"MIT","_id":"fugue@2.0.3","maintainers":[{"name":"0xcadams","email":"me@0xcadams.com"}],"homepage":"https://github.com/0xcadams/fugue","bugs":{"url":"https://github.com/0xcadams/fugue/issues"},"dist":{"shasum":"fb8003fa11daa75dafa8db36f5c100ca3f736920","tarball":"https://registry.npmjs.org/fugue/-/fugue-2.0.3.tgz","fileCount":10,"integrity":"sha512-DLw++gVvNnxYSDohGsE49vTnkwUED+kBZcDMirThhO6TXsncq3WWG2DsdFBc8RBTuG+xLCoCPJJnb6Q9mbKbmA==","signatures":[{"sig":"MEUCIQCCNDIn1lrzXAEPhsUob5NcVvHmUv34ByXOVwJfCD5grQIgbOSLiYIyD8bMo4AqZuH/fL7H0R12JQrSWRTjAA+lBy8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53699},"main":"dist/index.cjs","type":"module","_from":"file:fugue-2.0.3.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"size-limit","test":"vitest run --typecheck --coverage","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist node_modules coverage","release":"pnpm run build && pnpm publish","test:ui":"vitest --ui","test:bench":"vitest bench","test:types":"cd tests && tsc --noEmit"},"_npmUser":{"name":"0xcadams","actor":{"name":"0xcadams","type":"user","email":"me@0xcadams.com"},"email":"me@0xcadams.com"},"_resolved":"/private/var/folders/1p/byzq05qd42zg5rg6__h69_7c0000gn/T/141ca5111b1aaa9ed1a830154a467d67/fugue-2.0.3.tgz","_integrity":"sha512-DLw++gVvNnxYSDohGsE49vTnkwUED+kBZcDMirThhO6TXsncq3WWG2DsdFBc8RBTuG+xLCoCPJJnb6Q9mbKbmA==","repository":{"url":"git+https://github.com/0xcadams/fugue.git","type":"git"},"size-limit":[{"path":"dist/index.js"}],"_npmVersion":"10.9.2","description":"Fractional indexing without conflicts.","directories":{},"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.5","prettier":"^3.6.2","@vitest/ui":"^3.2.4","size-limit":"^11.2.0","typescript":"^5.8.3","@types/node":"^24.0.6","@vitest/coverage-v8":"3.2.4","fractional-indexing":"^3.2.0","vite-tsconfig-paths":"^5.1.4","@size-limit/preset-small-lib":"^11.2.0"},"_npmOperationalInternal":{"tmp":"tmp/fugue_2.0.3_1751065580478_0.8013882648917297","host":"s3://npm-registry-packages-npm-production"}},"2.0.4":{"name":"fugue","version":"2.0.4","keywords":["fractional indexing","sync","local-first","fugue","database","typescript","ts"],"author":{"name":"0xcadams"},"license":"MIT","_id":"fugue@2.0.4","maintainers":[{"name":"0xcadams","email":"me@0xcadams.com"}],"homepage":"https://github.com/0xcadams/fugue","bugs":{"url":"https://github.com/0xcadams/fugue/issues"},"dist":{"shasum":"fed443e5c9097fb38ae04a66079f4bcdac0fb62b","tarball":"https://registry.npmjs.org/fugue/-/fugue-2.0.4.tgz","fileCount":10,"integrity":"sha512-8k4LMYqnBBlsdYCUSMKlVJpNNHmnLqNdEkDJV6RtXJ+ACw3Vv29gypnmHbBVX2MOiE4NXR5PFSrk4rOJ/kfg6Q==","signatures":[{"sig":"MEYCIQCZC724h8tG1zEZygGlAky4Ht9/O340OxNPKIuhQ/+zaQIhAM9vuFKM9sYuNIvXAcs/Xc71A/ADBUK+Wka97hSbsyZC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":55025},"main":"dist/index.cjs","type":"module","_from":"file:fugue-2.0.4.tgz","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"size":"size-limit","test":"vitest run --typecheck --coverage","build":"tsup src/index.ts --format cjs,esm --dts","clean":"rm -rf dist node_modules coverage","release":"pnpm run build && pnpm publish","test:ui":"vitest --ui","test:bench":"vitest bench","test:types":"cd tests && tsc --noEmit"},"_npmUser":{"name":"0xcadams","email":"me@0xcadams.com"},"_resolved":"/private/var/folders/1p/byzq05qd42zg5rg6__h69_7c0000gn/T/b08bba6fe4b94afa94398a8ae3c7043f/fugue-2.0.4.tgz","_integrity":"sha512-8k4LMYqnBBlsdYCUSMKlVJpNNHmnLqNdEkDJV6RtXJ+ACw3Vv29gypnmHbBVX2MOiE4NXR5PFSrk4rOJ/kfg6Q==","repository":{"url":"git+https://github.com/0xcadams/fugue.git","type":"git"},"size-limit":[{"path":"dist/index.js"}],"_npmVersion":"10.9.3","description":"Fractional indexing without conflicts.","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","jsdom":"^26.1.0","vitest":"^3.2.4","esbuild":"^0.25.10","prettier":"^3.6.2","@vitest/ui":"^3.2.4","size-limit":"^11.2.0","typescript":"^5.9.2","@types/node":"^24.5.2","@vitest/coverage-v8":"3.2.4","fractional-indexing":"^3.2.0","vite-tsconfig-paths":"^5.1.4","@size-limit/preset-small-lib":"^11.2.0"},"_npmOperationalInternal":{"tmp":"tmp/fugue_2.0.4_1758922381834_0.8207996527879611","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"fugue","version":"3.0.0","description":"Burst-oriented recursive lexicographic ordering keys.","type":"module","scripts":{"build":"tsup src/index.ts --format cjs,esm --dts","prepack":"bun run build","release":"bun publish","test":"vitest run --typecheck --coverage","test:types":"cd tests && tsc --noEmit","test:bench":"vitest bench","test:ui":"vitest --ui","size":"size-limit"},"main":"dist/index.cjs","module":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"repository":{"type":"git","url":"git+https://github.com/0xcadams/fugue.git","directory":"fugue"},"keywords":["fractional indexing","ordering keys","crdt","sync","local-first","fugue","database","typescript","ts"],"author":{"name":"0xcadams"},"license":"Unlicense","homepage":"https://github.com/0xcadams/fugue","bugs":{"url":"https://github.com/0xcadams/fugue/issues"},"devDependencies":{"@size-limit/preset-small-lib":"^11.2.0","@types/node":"^24.5.2","@vitest/coverage-v8":"3.2.4","@vitest/ui":"^3.2.4","esbuild":"^0.25.10","jsdom":"^26.1.0","size-limit":"^11.2.0","tsup":"^8.5.0","typescript":"^5.9.2","vite-tsconfig-paths":"^5.1.4","vitest":"^3.2.4"},"size-limit":[{"path":"dist/index.js"}],"gitHead":"bef67a9a29ae2cb9cd0948c56d662370fc00a3d0","_id":"fugue@3.0.0","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-Gc1Hjq2rWuwtvvnP8+l2etSUw7WC4DE2AHNE3hQFwsO7JeV74qkCt6RMNKujjZW1ZS1cUjPmbwce8pFxdUpjXw==","shasum":"15e18a103518e658d2c86f8611fc633345961fea","tarball":"https://registry.npmjs.org/fugue/-/fugue-3.0.0.tgz","fileCount":7,"unpackedSize":77334,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/fugue@3.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDxyZ8r8YpDqsK8e15YxsjFOz10u60tBGFbWk574R5R5gIhANNsXjXz3jzmRZBWUhovscIewnzZf5utxVuocHbN44br"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:818246c4-d5f6-4010-b8d3-0190d7d80296"}},"directories":{},"maintainers":[{"name":"0xcadams","email":"me@0xcadams.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fugue_3.0.0_1777437015409_0.2259583930907927"},"_hasShrinkwrap":false}},"time":{"created":"2010-12-22T19:50:31.033Z","modified":"2026-04-29T04:30:15.811Z","0.0.30":"2011-12-07T15:27:12.803Z","0.0.21":"2011-12-07T15:27:12.803Z","0.0.19":"2011-12-07T15:27:12.803Z","0.1.2":"2011-12-07T15:27:12.803Z","0.0.29":"2011-12-07T15:27:12.803Z","0.0.11":"2011-12-07T15:27:12.803Z","0.0.6":"2011-12-07T15:27:12.803Z","0.0.7":"2011-12-07T15:27:12.803Z","0.0.32":"2011-12-07T15:27:12.803Z","0.0.36":"2011-12-07T15:27:12.803Z","0.0.24":"2011-12-07T15:27:12.803Z","0.0.28":"2011-12-07T15:27:12.803Z","0.0.35":"2011-12-07T15:27:12.803Z","0.0.31":"2011-12-07T15:27:12.803Z","0.0.25":"2011-12-07T15:27:12.803Z","0.0.20":"2011-12-07T15:27:12.803Z","0.0.4":"2011-12-07T15:27:12.803Z","0.0.15":"2011-12-07T15:27:12.803Z","0.1.0":"2011-12-07T15:27:12.803Z","0.0.14":"2011-12-07T15:27:12.803Z","0.0.12":"2011-12-07T15:27:12.803Z","0.0.10":"2011-12-07T15:27:12.803Z","0.0.27":"2011-12-07T15:27:12.803Z","0.1.1":"2011-12-07T15:27:12.803Z","0.0.34":"2011-12-07T15:27:12.803Z","0.0.9":"2011-12-07T15:27:12.803Z","0.0.37":"2011-12-07T15:27:12.803Z","0.0.8":"2011-12-07T15:27:12.803Z","0.0.5":"2011-12-07T15:27:12.803Z","0.0.33":"2011-12-07T15:27:12.803Z","0.0.38":"2011-12-07T15:27:12.803Z","0.0.26":"2011-12-07T15:27:12.803Z","0.0.22":"2011-12-07T15:27:12.803Z","0.0.13":"2011-12-07T15:27:12.803Z","0.1.3":"2011-12-07T15:27:12.803Z","0.0.1":"2011-12-07T15:27:12.803Z","0.0.1-alpha":"2024-06-19T17:09:14.753Z","0.0.2":"2025-02-23T18:13:11.353Z","0.0.3":"2025-02-23T18:49:53.707Z","1.0.0":"2025-02-23T19:04:23.781Z","1.0.1":"2025-02-25T16:54:03.309Z","2.0.0":"2025-04-08T21:17:26.959Z","2.0.1":"2025-05-06T23:14:38.198Z","2.0.2":"2025-06-11T19:09:00.477Z","2.0.3":"2025-06-27T23:06:20.687Z","2.0.4":"2025-09-26T21:33:02.029Z","3.0.0":"2026-04-29T04:30:15.544Z"},"bugs":{"url":"https://github.com/0xcadams/fugue/issues"},"author":{"name":"0xcadams"},"license":"Unlicense","homepage":"https://github.com/0xcadams/fugue","keywords":["fractional indexing","ordering keys","crdt","sync","local-first","fugue","database","typescript","ts"],"repository":{"type":"git","url":"git+https://github.com/0xcadams/fugue.git","directory":"fugue"},"description":"Burst-oriented recursive lexicographic ordering keys.","maintainers":[{"name":"0xcadams","email":"me@0xcadams.com"}],"readme":"# fugue\n\nClient-generated position keys for local-first lists and collaborative text.\n\n`fugue` creates opaque string positions that you can store anywhere and sort with ordinary string comparison. It is built for sync systems where clients need to create positions locally, insert into the same gaps concurrently, and never rewrite older keys.\n\n- generate positions on the client\n- store them as plain strings\n- sort them with normal binary/code-point string comparison\n- insert anywhere without reindexing existing items\n- keep typing, paste, and duplicate bursts contiguous under concurrent edits\n\n## Installation\n\n```bash\nnpm install fugue\n# or\npnpm add fugue\n# or\nyarn add fugue\n# or\nbun add fugue\n```\n\n## Quick start\n\n```ts\nimport { Fugue, type FuguePosition } from \"fugue\";\n\ntype Card = {\n  id: string;\n  title: string;\n  position: FuguePosition;\n};\n\nconst fugue = new Fugue();\nlet nextId = 1;\n\nconst compareByPosition = (a: Card, b: Card) =>\n  a.position < b.position ? -1 : a.position > b.position ? 1 : 0;\n\nfunction insertCard(cards: Card[], index: number, title: string): Card {\n  const left = index === 0 ? null : cards[index - 1]!.position;\n  const right = index === cards.length ? null : cards[index]!.position;\n\n  const card: Card = {\n    id: String(nextId++),\n    title,\n    position: fugue.between(left, right),\n  };\n\n  cards.splice(index, 0, card);\n  return card;\n}\n\nconst todo: Card[] = [];\n\ninsertCard(todo, 0, \"Ship multiplayer\");\ninsertCard(todo, 1, \"Write docs\");\ninsertCard(todo, 1, \"Record demo\");\n\ntodo.sort(compareByPosition);\n```\n\n## Validation\n\n```ts\nimport { Fugue, isFuguePosition } from \"fugue\";\n\nconst fugue = new Fugue();\n\nif (isFuguePosition(maybePosition)) {\n  fugue.after(maybePosition);\n}\n```\n\n## Learn more\n\n- Full repo README: https://github.com/0xcadams/fugue#readme\n- Algorithm notes: https://github.com/0xcadams/fugue/blob/main/algorithm.md\n- Benchmarks: https://github.com/0xcadams/fugue/blob/main/benchmarks/README.md\n- Benchmark comparisons: https://github.com/0xcadams/fugue/blob/main/comparisons.md\n\n## License\n\n[Unlicense](https://github.com/0xcadams/fugue/blob/main/LICENSE)\n","readmeFilename":"README.md"}