{"_id":"@convex-localfirst/server","_rev":"5-332ef2ece6148e43ea260064bf378282","name":"@convex-localfirst/server","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@convex-localfirst/server","version":"0.1.0","keywords":["convex","local-first","sync","server","dsl"],"license":"MIT","_id":"@convex-localfirst/server@0.1.0","maintainers":[{"name":"fanzzzd","email":"fanzzzd@outlook.com"}],"dist":{"shasum":"2012fa5f82f647ed085605ee8a92253211c9663b","tarball":"https://registry.npmjs.org/@convex-localfirst/server/-/server-0.1.0.tgz","fileCount":9,"integrity":"sha512-SJBXNumFgpd64pq7YRKd5hL0Dvn6IT468VxNqYCEeMxaUxnbYdHAFDx/y0F6jzB7Kjlbz79yIzrT/cciYMSLMQ==","signatures":[{"sig":"MEYCIQC2jATrZPZNze2o7uJRrG7mbE4jkPZrf7E6oKDqB7IcewIhAK+aeS3wBdjDb1cPxAh+RsgNbZovA4Xy4afHE2G1IbMv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59809},"main":"./dist/index.js","type":"module","_from":"file:convex-localfirst-server-0.1.0.tgz","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json --noEmit false --emitDeclarationOnly false","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"fanzzzd","email":"fanzzzd@outlook.com"},"_resolved":"/private/var/folders/2b/3_lqmflj4qx3nl8cf287333r0000gn/T/13ddafd45a1020309c2008b685f2c736/convex-localfirst-server-0.1.0.tgz","_integrity":"sha512-SJBXNumFgpd64pq7YRKd5hL0Dvn6IT468VxNqYCEeMxaUxnbYdHAFDx/y0F6jzB7Kjlbz79yIzrT/cciYMSLMQ==","_npmVersion":"11.17.0","description":"Convex-side DSL (lf.table) and runtime-agnostic sync engine for local-first tables: scopes, ownership, idempotency.","directories":{},"_nodeVersion":"22.21.1","dependencies":{"@convex-localfirst/core":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0"},"peerDependencies":{"convex":">=1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.0_1782715471857_0.19436299330768225","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved into convex-localfirst (one package). Install convex-localfirst and import convex-localfirst/<subpath> instead."},"0.1.1":{"name":"@convex-localfirst/server","version":"0.1.1","keywords":["convex","local-first","sync","server","dsl"],"author":{"name":"Fanzzzd"},"license":"MIT","_id":"@convex-localfirst/server@0.1.1","maintainers":[{"name":"fanzzzd","email":"fanzzzd@outlook.com"}],"homepage":"https://github.com/Fanzzzd/convex-localfirst#readme","bugs":{"url":"https://github.com/Fanzzzd/convex-localfirst/issues"},"dist":{"shasum":"ca054ba0f410dc5a9a8c7228afc7be49a0f17e86","tarball":"https://registry.npmjs.org/@convex-localfirst/server/-/server-0.1.1.tgz","fileCount":9,"integrity":"sha512-uzVa0Q34abwdTtT+nT4+HjqcsZaRwrN1VjPPQXTvbLApX+Z+FDoKxvvW9rEG/Ha1KqhTgJ7vUmgkwAmhf3nILQ==","signatures":[{"sig":"MEYCIQCY1N+bV4lP4eVbh5TbAB66uoA0tfQZCEAKBE3j2bX6cQIhAIndT0Jh3YJP8TLO3xE5F7jZsuw4bsPO1h36ODF4dau7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@convex-localfirst%2fserver@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":60166},"main":"./dist/index.js","type":"module","_from":"file:convex-localfirst-server-0.1.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json --noEmit false --emitDeclarationOnly false","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"fanzzzd","email":"fanzzzd@outlook.com"},"_resolved":"/tmp/a8af81c9285835db17190fcd2b9d2097/convex-localfirst-server-0.1.1.tgz","_integrity":"sha512-uzVa0Q34abwdTtT+nT4+HjqcsZaRwrN1VjPPQXTvbLApX+Z+FDoKxvvW9rEG/Ha1KqhTgJ7vUmgkwAmhf3nILQ==","repository":{"url":"git+https://github.com/Fanzzzd/convex-localfirst.git","type":"git","directory":"packages/server"},"_npmVersion":"10.8.2","description":"Convex-side DSL (lf.table) and runtime-agnostic sync engine for local-first tables: scopes, ownership, idempotency.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@convex-localfirst/core":"0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0"},"peerDependencies":{"convex":">=1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/server_0.1.1_1782748210505_0.7883687975632305","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved into convex-localfirst (one package). Install convex-localfirst and import convex-localfirst/<subpath> instead."},"0.2.0":{"name":"@convex-localfirst/server","version":"0.2.0","keywords":["convex","local-first","sync","server","dsl"],"author":{"name":"Fanzzzd"},"license":"MIT","_id":"@convex-localfirst/server@0.2.0","maintainers":[{"name":"fanzzzd","email":"fanzzzd@outlook.com"}],"homepage":"https://github.com/Fanzzzd/convex-localfirst#readme","bugs":{"url":"https://github.com/Fanzzzd/convex-localfirst/issues"},"dist":{"shasum":"a312e9a0544ac62795a3f35b55164ea056b1b351","tarball":"https://registry.npmjs.org/@convex-localfirst/server/-/server-0.2.0.tgz","fileCount":9,"integrity":"sha512-x9rVBFKWlVAmkalXAd1eOpMBEqrrYi7EOpWZkGmeE1rex0rCF5S8A+KqTgUq8t/2+LcjU3bfV1aV+NJffZuxpg==","signatures":[{"sig":"MEYCIQDrvc5xyOSDgTz38DjbyYLdEPY9kEl7iqKgOr/MyUnCPwIhAN7IvczGh67nQ/Mrl4NK8IJupQKTNH3+LkRcn58hj7/U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@convex-localfirst%2fserver@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":94208},"main":"./dist/index.js","type":"module","_from":"file:convex-localfirst-server-0.2.0.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json --noEmit false --emitDeclarationOnly false","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"fanzzzd","email":"fanzzzd@outlook.com"},"_resolved":"/tmp/7d8366176b953cbe303a5da6d2229258/convex-localfirst-server-0.2.0.tgz","_integrity":"sha512-x9rVBFKWlVAmkalXAd1eOpMBEqrrYi7EOpWZkGmeE1rex0rCF5S8A+KqTgUq8t/2+LcjU3bfV1aV+NJffZuxpg==","repository":{"url":"git+https://github.com/Fanzzzd/convex-localfirst.git","type":"git","directory":"packages/server"},"_npmVersion":"10.8.2","description":"Convex-side DSL (lf.table) and runtime-agnostic sync engine for local-first tables: scopes, ownership, idempotency.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@convex-localfirst/core":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0"},"peerDependencies":{"convex":">=1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/server_0.2.0_1784389733861_0.06251231215796871","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved into convex-localfirst (one package). Install convex-localfirst and import convex-localfirst/<subpath> instead."},"0.2.1":{"name":"@convex-localfirst/server","version":"0.2.1","keywords":["convex","local-first","sync","server","dsl"],"author":{"name":"Fanzzzd"},"license":"MIT","_id":"@convex-localfirst/server@0.2.1","maintainers":[{"name":"fanzzzd","email":"fanzzzd@outlook.com"}],"homepage":"https://github.com/Fanzzzd/convex-localfirst#readme","bugs":{"url":"https://github.com/Fanzzzd/convex-localfirst/issues"},"dist":{"shasum":"daf0cf68a5297e1ca3d5b21c3f890b38419d047c","tarball":"https://registry.npmjs.org/@convex-localfirst/server/-/server-0.2.1.tgz","fileCount":9,"integrity":"sha512-8F6F71SZsTsBeueKg652JT7N3mPVuYa1HYQJD2f09fTqte/URCB9Xi8/F4p9tC9v1SFeph47Isxo5qHFNQV+Aw==","signatures":[{"sig":"MEQCIBZ6ebxnx3loFQy6SCkCe6FedAdfgVuonx1mTap4C8v4AiAGB93vbIQwGz1jFo7fZgsBUvRwZokuDdnH8/gHb1QFPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@convex-localfirst%2fserver@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":94208},"main":"./dist/index.js","type":"module","_from":"file:convex-localfirst-server-0.2.1.tgz","types":"./dist/index.d.ts","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run --passWithNoTests","build":"tsc -p tsconfig.json --noEmit false --emitDeclarationOnly false","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8dcab48c-eaa0-496b-a241-a905545e7470"}},"_resolved":"/tmp/fab0826c7d2b9aa8590cb223cb185d6b/convex-localfirst-server-0.2.1.tgz","_integrity":"sha512-8F6F71SZsTsBeueKg652JT7N3mPVuYa1HYQJD2f09fTqte/URCB9Xi8/F4p9tC9v1SFeph47Isxo5qHFNQV+Aw==","repository":{"url":"git+https://github.com/Fanzzzd/convex-localfirst.git","type":"git","directory":"packages/server"},"_npmVersion":"11.16.0","description":"Convex-side DSL (lf.table) and runtime-agnostic sync engine for local-first tables: scopes, ownership, idempotency.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@convex-localfirst/core":"0.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.1.0","typescript":"^5.7.0"},"peerDependencies":{"convex":">=1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/server_0.2.1_1784445128259_0.6853356969347295","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Moved into convex-localfirst (one package). Install convex-localfirst and import convex-localfirst/<subpath> instead."}},"time":{"created":"2026-06-29T06:44:31.673Z","modified":"2026-07-19T08:06:09.339Z","0.1.0":"2026-06-29T06:44:31.997Z","0.1.1":"2026-06-29T15:50:10.769Z","0.2.0":"2026-07-18T15:48:54.004Z","0.2.1":"2026-07-19T07:12:08.400Z"},"bugs":{"url":"https://github.com/Fanzzzd/convex-localfirst/issues"},"author":{"name":"Fanzzzd"},"license":"MIT","homepage":"https://github.com/Fanzzzd/convex-localfirst#readme","keywords":["convex","local-first","sync","server","dsl"],"repository":{"url":"git+https://github.com/Fanzzzd/convex-localfirst.git","type":"git","directory":"packages/server"},"description":"Convex-side DSL (lf.table) and runtime-agnostic sync engine for local-first tables: scopes, ownership, idempotency.","maintainers":[{"name":"fanzzzd","email":"fanzzzd@outlook.com"}],"readme":"# @convex-localfirst/server\n\nThe Convex-side DSL for local-first tables. Declare which tables are local-first with\n`lf.table`, and generate the sync `push`/`pull` functions with `createSyncFunctions` — the\nserver enforces scope, ownership, membership, and idempotency. Convex stays authoritative.\n\n```bash\nnpm install @convex-localfirst/server\n```\n\n```ts\nimport { lf } from \"./localfirst\";\nimport { v } from \"convex/values\";\n\nconst todos = lf.table(\"todos\", {\n  shape: { ownerId: v.string(), listId: v.string(), text: v.string(), done: v.boolean() },\n  scope: lf.byUser(\"ownerId\"),\n  timestamps: true,\n  indexes: { byList: [\"ownerId\", \"listId\", \"createdAt\"] }\n});\n\nexport const list = todos.query({\n  args: { listId: v.string() },\n  index: \"byList\",\n  key: ({ auth, args }) => [auth.userId, args.listId],\n  initial: []\n});\nexport const create = todos.insert(); // args derived from the shape\nexport const update = todos.patch();  // { id } + any subset of fields\nexport const remove = todos.remove(); // { id }\n```\n\nPeer dependency: `convex`. MIT\n","readmeFilename":"README.md"}