{"_id":"@convex-dev/aggregate","_rev":"59-2278310aadf2f97dad63050a538c09d1","name":"@convex-dev/aggregate","dist-tags":{"alpha":"0.3.2-alpha.0","latest":"0.3.4"},"versions":{"0.1.1":{"name":"@convex-dev/aggregate","version":"0.1.1","keywords":["convex","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.1","maintainers":[{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"pashabitz","email":"pavelbitz@gmail.com"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"arnoldtrakh","email":"arnold@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"cowling","email":"james@convex.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"9a92c69776f1423367db04eaceb37df5e484c2f2","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.1.tgz","fileCount":134,"integrity":"sha512-SEZAAZGSxU138+yrMNuHN9irHYOaZl1c1MzHxD9YmXq3amwjJqUjTzALfFCdu13AO4XsDJXEknkQ30LXpKqJWw==","signatures":[{"sig":"MEUCIQCXcRtYRPj6y/gFqVZj09zt3jBvo4V9b3W+JQaF3xo9fwIgfJWLKMP2Y8DWyqoR+4lVOvgI+JZ/hUKxFTI5nv9Zp10=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":427676},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config.js":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"149f5a494a7f498b523f30c02a8dbb7d5ae7afbe","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepack":"node node10stubs.mjs","prepare":"npm run build","postpack":"node node10stubs.mjs --cleanup","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/esm/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ldanilek","email":"iwork96+npm@gmail.com"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"9.8.1","description":"[![npm version](https://badge.fury.io/js/@convex-dev%2Faggregate.svg)](https://badge.fury.io/js/@convex-dev%2Faggregate)","directories":{},"_nodeVersion":"18.18.0","dependencies":{"convex":"^1.16.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"file:../convex-test/convex-test-0.0.29.tgz","typescript-eslint":"^8.4.0","@vitest/coverage-v8":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.1_1726873312962_0.49237176986547904","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"@convex-dev/aggregate","version":"0.1.2","keywords":["convex","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.2","maintainers":[{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"pashabitz","email":"pavelbitz@gmail.com"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"arnoldtrakh","email":"arnold@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"cowling","email":"james@convex.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"4c61a5b687b2225cad15aac823097bdca3711df0","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.2.tgz","fileCount":90,"integrity":"sha512-DpaqkmDFYZPJ+w2lm3ycysHRwuWKhEYEqlgjmkqATGDpRkhwADeESu3K3ixta092kmh9UFBQLGWrjwofA+d7Ag==","signatures":[{"sig":"MEQCIEulPQ6eMwPWbWD2167s4DHUw/1sTN7BbN4MPOA+d7YTAiA7YB3bQRTxg3PeysmH0lafyywAZ3Ks7LoYTDy1852C6Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":302777},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config.js":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"53e3177464c675d0f3a5d9abc780a5fbdab2aaec","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepack":"node node10stubs.mjs","prepare":"npm run build","postpack":"node node10stubs.mjs --cleanup","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/esm/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ldanilek","email":"iwork96+npm@gmail.com"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"9.8.1","description":"[![npm version](https://badge.fury.io/js/@convex-dev%2Faggregate.svg)](https://badge.fury.io/js/@convex-dev%2Faggregate)","directories":{},"_nodeVersion":"18.18.0","dependencies":{"convex":"^1.16.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"^0.0.30","typescript-eslint":"^8.4.0","@vitest/coverage-v8":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.2_1726875145939_0.47956625060947844","host":"s3://npm-registry-packages"}},"0.1.4":{"name":"@convex-dev/aggregate","version":"0.1.4","keywords":["convex","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.4","maintainers":[{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"pashabitz","email":"pavelbitz@gmail.com"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"arnoldtrakh","email":"arnold@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"cowling","email":"james@convex.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"4eb5683f3198e1a7295f7aadc056e07d5a8f5c22","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.4.tgz","fileCount":108,"integrity":"sha512-o67HNBhqwJh3eDabx/KsxfrocuC1SOEvpC9e3hPQLUlpXH4h5woEXDOeAmEmU2Wm3Jp/Okhg/x/oETl9oW11Zg==","signatures":[{"sig":"MEUCIQD6hSD+rSO8Twu1dcFmmYuE/MvKBuYCnkYVxRP+anA8qQIgV605WaDN8QBhRkcvezeWChBJ6BDGVu0/cSvyvQzBNx8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":343240},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config.js":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"ad724c2b8db74f5adfc07bffd71ca96330077c7b","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepack":"node node10stubs.mjs","prepare":"npm run build","postpack":"node node10stubs.mjs --cleanup","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/esm/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ldanilek","email":"iwork96+npm@gmail.com"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"9.8.1","description":"[![npm version](https://badge.fury.io/js/@convex-dev%2Faggregate.svg?)](https://badge.fury.io/js/@convex-dev%2Faggregate)","directories":{},"_nodeVersion":"18.18.0","dependencies":{"convex":"^1.16.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"^0.0.30","typescript-eslint":"^8.4.0","@vitest/coverage-v8":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.4_1727141288757_0.025068846607858797","host":"s3://npm-registry-packages"}},"0.1.5":{"name":"@convex-dev/aggregate","version":"0.1.5","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.5","maintainers":[{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"pashabitz","email":"pavelbitz@gmail.com"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"arnoldtrakh","email":"arnold@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"cowling","email":"james@convex.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"c0438c814455e523bda8ccb88f0c65f5edadb4b9","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.5.tgz","fileCount":108,"integrity":"sha512-0N1aFrTeEFydF24us/K/k7OQ9gix7sYJtfi73XXBVPFum8P1MSl4/qPjpX8iSnBgNUwm/T8cvt350R+HWpo2pA==","signatures":[{"sig":"MEUCIQC8LWdwHJmlNq6reOqv12+ZsC0D6vNIb7Bb3E5L2B0xOwIgZ5akpyA3C70hkGjoeuPuEAJECVEEu2CB2ppTHsTKsqQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":343908},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config.js":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"31c5bf64b6cc397a0c496ad5ed1e3bf307a7bea4","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepack":"node node10stubs.mjs","prepare":"npm run build","postpack":"node node10stubs.mjs --cleanup","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/esm/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ldanilek","email":"iwork96+npm@gmail.com"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"9.8.1","description":"[![npm version](https://badge.fury.io/js/@convex-dev%2Faggregate.svg?)](https://badge.fury.io/js/@convex-dev%2Faggregate)","directories":{},"_nodeVersion":"18.18.0","dependencies":{"convex":"^1.16.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"^0.0.30","typescript-eslint":"^8.4.0","@vitest/coverage-v8":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.5_1727148259101_0.6361461767850349","host":"s3://npm-registry-packages"}},"0.1.6":{"name":"@convex-dev/aggregate","version":"0.1.6","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.6","maintainers":[{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"pashabitz","email":"pavelbitz@gmail.com"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"arnoldtrakh","email":"arnold@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"cowling","email":"james@convex.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"2e579f9498fd680381eb2638a2323f0675c59dfd","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.6.tgz","fileCount":108,"integrity":"sha512-iE+lHquqD392IWpIV8Wnb/G5ubtqohRRzkEmjQidqK++RMmUyMwDcHoqDvR0rWfjXl+0FKKdwiyIiERrafUqAg==","signatures":[{"sig":"MEQCIDCpe0W5z4o1AGFNwvSaQoLOOKMtisU1JcBJS4nzvX1pAiAwiJifjvIbwCQC1PUV2Xfq/A3gCNhosf3LC57eZTxOhg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":343873},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config.js":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"a2e3257d6c4c0621e8f3bfb2ff9dd51ad4f5eda0","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepack":"node node10stubs.mjs","prepare":"npm run build","postpack":"node node10stubs.mjs --cleanup","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/esm/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ldanilek","email":"iwork96+npm@gmail.com"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"9.8.1","description":"[![npm version](https://badge.fury.io/js/@convex-dev%2Faggregate.svg?)](https://badge.fury.io/js/@convex-dev%2Faggregate)","directories":{},"_nodeVersion":"18.18.0","dependencies":{"convex":"^1.16.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"^0.0.30","typescript-eslint":"^8.4.0","@vitest/coverage-v8":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.6_1727149720172_0.8068630489343644","host":"s3://npm-registry-packages"}},"0.1.7":{"name":"@convex-dev/aggregate","version":"0.1.7","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.7","maintainers":[{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"pashabitz","email":"pavelbitz@gmail.com"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"arnoldtrakh","email":"arnold@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"cowling","email":"james@convex.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"4efd70bcbdb876f0a97bf53597ffcd8c6dfe142b","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.7.tgz","fileCount":118,"integrity":"sha512-Ol3fctE3Q8Wdp50NIYT1v1dGHTWFJC7I90WFhLoFt9TRS8ezqqBgRt9PLoTkrDvrUrCLp79V8ADKuUE2gc3aXw==","signatures":[{"sig":"MEQCIHaQ65xjn4UBQbIoAc6cbrhqE9Y+FCD4JQHtpd4VeTCnAiAgfT6FzitQ0H0K2olhLUv4CBI/VZbm4tvKfv/7IJMwMw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":399362},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config.js":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"cd49ce79e48fcd6f425134ffcc05ce9816e6cc33","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepack":"node node10stubs.mjs","prepare":"npm run build","postpack":"node node10stubs.mjs --cleanup","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ldanilek","email":"iwork96+npm@gmail.com"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"9.8.1","description":"[![npm version](https://badge.fury.io/js/@convex-dev%2Faggregate.svg?)](https://badge.fury.io/js/@convex-dev%2Faggregate)","directories":{},"_nodeVersion":"18.18.0","dependencies":{"convex":"^1.16.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"^0.0.30","typescript-eslint":"^8.4.0","@fast-check/vitest":"^0.1.3","@vitest/coverage-v8":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.7_1727376180493_0.27744038217457967","host":"s3://npm-registry-packages"}},"0.1.8":{"name":"@convex-dev/aggregate","version":"0.1.8","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.8","maintainers":[{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"pashabitz","email":"pavelbitz@gmail.com"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"arnoldtrakh","email":"arnold@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"cowling","email":"james@convex.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"6a90fb3e158c0cbe8c39f0673b3a09e0353ac081","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.8.tgz","fileCount":118,"integrity":"sha512-D65IUtXGHymQAIXsA+IEiGthjMDoPgpR4hFl8SiiCQtySYWZPwGO5hK0O/VoSQwaFst7W9csvDeZo+O3F3K3zQ==","signatures":[{"sig":"MEYCIQDHIH9Utwy95ZIGcfFpRorQYVG9DhC+byB2T47SznGUKAIhAJuNF6y5Am88G9OSK8s+6kIIyZbtYIZ2cMmmS40VDTjS","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":416700},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config.js":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"f13c9ea4ca3e7802015e84cef810f7143f2a6c19","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepack":"node node10stubs.mjs","prepare":"npm run build","postpack":"node node10stubs.mjs --cleanup","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ldanilek","email":"iwork96+npm@gmail.com"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"9.8.1","description":"[![npm version](https://badge.fury.io/js/@convex-dev%2Faggregate.svg?)](https://badge.fury.io/js/@convex-dev%2Faggregate)","directories":{},"_nodeVersion":"18.18.0","dependencies":{"convex":"^1.16.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"^0.0.30","typescript-eslint":"^8.4.0","@fast-check/vitest":"^0.1.3","@vitest/coverage-v8":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.8_1727490965374_0.5676717510427218","host":"s3://npm-registry-packages"}},"0.1.9":{"name":"@convex-dev/aggregate","version":"0.1.9","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.9","maintainers":[{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"pashabitz","email":"pavelbitz@gmail.com"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"arnoldtrakh","email":"arnold@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"cowling","email":"james@convex.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"b4d2ea4fbf5a20cb5a73a51f995fd4e6a05747bf","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.9.tgz","fileCount":118,"integrity":"sha512-AvVQbTbHGSf+vC51vKsLeAukBOEYrmnG/uGAdQOzh74bKamSFTxgIXMKmV15kmY4BWaz642qlZ76AP89SBTYdw==","signatures":[{"sig":"MEUCIQCevSh363YcAIbXb3/1SeBzuYXWtL5lNWdzfFNMz0rXYAIgSU75Qr3jwRlrPfQ9PiLGcQl74fVkx9UCB7fYKT7dSCQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":417665},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config.js":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"2c01a3ca586cabf8d837a312c3b93f506a1e207d","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepack":"node node10stubs.mjs","prepare":"npm run build","postpack":"node node10stubs.mjs --cleanup","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ldanilek","email":"iwork96+npm@gmail.com"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"9.8.1","description":"[![npm version](https://img.shields.io/npm/v/@convex-dev/aggregate.svg)](https://www.npmjs.com/package/@convex-dev/aggregate)","directories":{},"_nodeVersion":"18.18.0","dependencies":{"convex":"^1.16.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"^0.0.30","typescript-eslint":"^8.4.0","@fast-check/vitest":"^0.1.3","@vitest/coverage-v8":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.9_1727497299769_0.20865962846327157","host":"s3://npm-registry-packages"}},"0.1.10":{"name":"@convex-dev/aggregate","version":"0.1.10","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.10","maintainers":[{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"pashabitz","email":"pavelbitz@gmail.com"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"arnoldtrakh","email":"arnold@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"cowling","email":"james@convex.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"77e1178f3101521570b4afbee2f3143df0d19d0e","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.10.tgz","fileCount":118,"integrity":"sha512-pUCAkxGcZtRcIwXQeI+9qt2F/okFdnk9KN7+9ifvy6knh6E5c8YVyWC4hrgSx8TlP5E+9EYD9pCLlc+NSO8c0Q==","signatures":[{"sig":"MEUCIHPs73+hO+qh850vKaX9IiMhxAkQeeeeskRVKvVhMA9vAiEA5kdZSdiZFGcbrKe2NPN6SNHXOuxri2bROfB2iTtgm+o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":417666},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config.js":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"147d47e9a8a7a03fb856de1378d158308587b85a","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepack":"node node10stubs.mjs","prepare":"npm run build","postpack":"node node10stubs.mjs --cleanup","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ldanilek","email":"iwork96+npm@gmail.com"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"9.8.1","description":"[![npm version](https://img.shields.io/npm/v/@convex-dev/aggregate.svg)](https://www.npmjs.com/package/@convex-dev/aggregate)","directories":{},"_nodeVersion":"18.18.0","dependencies":{"convex":"^1.16.1"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"^0.0.30","typescript-eslint":"^8.4.0","@fast-check/vitest":"^0.1.3","@vitest/coverage-v8":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.10_1727541732907_0.6954462000026282","host":"s3://npm-registry-packages"}},"0.1.11":{"name":"@convex-dev/aggregate","version":"0.1.11","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.11","maintainers":[{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"pashabitz","email":"pavelbitz@gmail.com"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"arnoldtrakh","email":"arnold@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"cowling","email":"james@convex.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"7e20fb48b17e87951fd01bd6736dcda6f3515bb4","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.11.tgz","fileCount":118,"integrity":"sha512-JPq4OdKgi8FoDCFT2Ywu3cfS4DUTrO/dtf3DkIHUOUjPOmxpVBaXMszywaUkSzT9iwCKZfRU48ESSunCIJVuSQ==","signatures":[{"sig":"MEQCIHa7zqD7mciPUlmRtG3psnJCfUUuGnsauity3760oGVbAiBl2o56P+c06d00yB9R1rFB6QoHR8CamGElygeCiXvNRg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":450586},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config.js":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"2ca8d85d19f105b7f379e6c27abe3eca7635db74","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepack":"node node10stubs.mjs","prepare":"npm run build","postpack":"node node10stubs.mjs --cleanup","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ldanilek","email":"iwork96+npm@gmail.com"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"9.8.1","description":"[![npm version](https://img.shields.io/npm/v/@convex-dev/aggregate.svg)](https://www.npmjs.com/package/@convex-dev/aggregate)","directories":{},"_nodeVersion":"18.18.0","dependencies":{"convex":"^1.16.3"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"^0.0.31","typescript-eslint":"^8.4.0","@fast-check/vitest":"^0.1.3","@vitest/coverage-v8":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.11_1727964472431_0.8165324908431526","host":"s3://npm-registry-packages"}},"0.1.12":{"name":"@convex-dev/aggregate","version":"0.1.12","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.12","maintainers":[{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"pashabitz","email":"pavelbitz@gmail.com"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"arnoldtrakh","email":"arnold@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"cowling","email":"james@convex.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"6195a03adc46c6900e8a17b083311cf0f5631488","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.12.tgz","fileCount":118,"integrity":"sha512-ofZUXL7s7hL6mCdN0xwPjY9rwG8SYYkcwlMwdIscFdz5LKUDlRbI2LbukhIJZ2fzIGpz847rfKQkNWb8QtSSOw==","signatures":[{"sig":"MEQCIBYUHhHpI7FKfio1e5YOROLQKM9/E43KSVdVakYiAoHUAiAkyWG/tkkkxvfBup6PxrdSHxjXSowuYCMOEuhva3fG4g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":452654},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config.js":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"d3da47f00e79d71d83fe854d9f70d19119176421","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepack":"node node10stubs.mjs","prepare":"npm run build","postpack":"node node10stubs.mjs --cleanup","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ldanilek","email":"iwork96+npm@gmail.com"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"9.8.1","description":"[![npm version](https://img.shields.io/npm/v/@convex-dev/aggregate.svg)](https://www.npmjs.com/package/@convex-dev/aggregate)","directories":{},"_nodeVersion":"18.18.0","dependencies":{"convex":"^1.16.3"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"^0.0.31","typescript-eslint":"^8.4.0","@fast-check/vitest":"^0.1.3","@vitest/coverage-v8":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.12_1728325123389_0.6123812752527236","host":"s3://npm-registry-packages"}},"0.1.13":{"name":"@convex-dev/aggregate","version":"0.1.13","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.13","maintainers":[{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"pashabitz","email":"pavelbitz@gmail.com"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"arnoldtrakh","email":"arnold@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"cowling","email":"james@convex.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"280cf406c38b012d762d76d3eadb4c1de0afa724","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.13.tgz","fileCount":118,"integrity":"sha512-Ek2ZMfna7e56ffPVbNUCWLv22p73zGJ2UvkKn96i/U4ViQinSZk0do5qI3mdu5/RxeW7KemY8jJkSt6HJ8UPew==","signatures":[{"sig":"MEUCIQDFufm64P+6WDE/h3ohJPGYQnwMJ0r8qhb7XEyvBmsTIwIgP3uzd1rglKzsacVdacM1DSzCCOg2E0sb4aV+4bln+8M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":452652},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config.js":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"dac499e4e5b2b7413de39fa6904f69227c74f6da","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepack":"node node10stubs.mjs","prepare":"npm run build","postpack":"node node10stubs.mjs --cleanup","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ldanilek","email":"iwork96+npm@gmail.com"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"9.8.1","description":"[![npm version](https://img.shields.io/npm/v/@convex-dev/aggregate.svg)](https://www.npmjs.com/package/@convex-dev/aggregate)","directories":{},"_nodeVersion":"18.18.0","dependencies":{"convex":"^1.16.3"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"^0.0.31","typescript-eslint":"^8.4.0","@fast-check/vitest":"^0.1.3","@vitest/coverage-v8":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.13_1728325397196_0.8662742342608454","host":"s3://npm-registry-packages"}},"0.1.14":{"name":"@convex-dev/aggregate","version":"0.1.14","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.14","maintainers":[{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"pashabitz","email":"pavelbitz@gmail.com"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"arnoldtrakh","email":"arnold@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"cowling","email":"james@convex.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"88c17914c663f3d5243318a1eb7a734b65cf3140","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.14.tgz","fileCount":118,"integrity":"sha512-hk0pcz6IvUkxgsDgb2lJOrufKUVaPoyHy7HYgUacZQCzsAFTXkJz7atEh4HotJEmthYshqa+bdp2q32mmq5sNQ==","signatures":[{"sig":"MEUCIQDWCWCMdHC17y4EQLysylp9DcJ2HQ6zFCgkfF0szK+qxwIgIiSgn1MxKxsggYatUWCX/cD3UXt11TXGwF7/mz2vAxE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":454199},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config.js":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"bf1ec12b64eb0b6b6326b6a44a1aa5226256ffd2","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepack":"node node10stubs.mjs","prepare":"npm run build","postpack":"node node10stubs.mjs --cleanup","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ldanilek","email":"iwork96+npm@gmail.com"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"9.8.1","description":"[![npm version](https://img.shields.io/npm/v/@convex-dev/aggregate.svg)](https://www.npmjs.com/package/@convex-dev/aggregate)","directories":{},"_nodeVersion":"18.18.0","dependencies":{"convex":"^1.16.3"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"^0.0.31","typescript-eslint":"^8.4.0","@fast-check/vitest":"^0.1.3","@vitest/coverage-v8":"^2.1.1"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.14_1728855933296_0.37885487148290875","host":"s3://npm-registry-packages"}},"0.1.15":{"name":"@convex-dev/aggregate","version":"0.1.15","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.15","maintainers":[{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"pashabitz","email":"pavelbitz@gmail.com"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"arnoldtrakh","email":"arnold@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"cowling","email":"james@convex.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"5a421fad9f42d7003319000f7cf85308adae84ad","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.15.tgz","fileCount":118,"integrity":"sha512-ZHBRXbszYq6khxUeLyBwEhlFQZjpvjOcOF9FYO2PWgq//3isoDZdtF3VoCPktZjriBPKRjWH6RG/NQDjkM0EZQ==","signatures":[{"sig":"MEUCIQCUlVfkNgOkqLmxVpFnrvcCZeBx9NnmleRlOYrGo4661wIgYdFTgNsl+oKuU61vjHKeo7OaeHwdqWx3CYB5TWGZevE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":456591},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"508e76f8fffa4f4b056ede2f5a9efc9a5441fbbf","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepare":"npm run build","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"sujayakar","email":"sujayakar@convex.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"9.8.1","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"^0.0.31","typescript-eslint":"^8.4.0","@fast-check/vitest":"^0.1.3","@vitest/coverage-v8":"^2.1.1"},"peerDependencies":{"convex":"~1.16.5 || ~1.17.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.15_1729191807085_0.2364157427674043","host":"s3://npm-registry-packages"}},"0.1.16-alpha.0":{"name":"@convex-dev/aggregate","version":"0.1.16-alpha.0","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.16-alpha.0","maintainers":[{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"pashabitz","email":"pavelbitz@gmail.com"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"cowling","email":"james@convex.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"546daae21675d10f392a89e7332970088da0db82","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.16-alpha.0.tgz","fileCount":118,"integrity":"sha512-WtEp31hCLUNsWK8IuY6ylLQnV2XkpqQrvTX3j7eSM0jtJjSjdnRoYljJnuWW1nhXjVbUkTrErEzwLb0F+oAnIg==","signatures":[{"sig":"MEYCIQDoX+IX0zQyr/+R+e7YPC3/A0k0Puz8zrSFNg9IGAXfMAIhAIjlpi/+ugxzSE8qRbx6OGi8INlxImoKF980S9IllhjY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":459492},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"01f2e45cb3bfe50234694adb25b113ff06689eb3","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepare":"npm run build","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ianatconvex","email":"ian@convex.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"9.9.3","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"^0.0.33","typescript-eslint":"^8.4.0","@fast-check/vitest":"^0.1.3","@vitest/coverage-v8":"^2.1.1"},"peerDependencies":{"convex":"~1.16.5 || ~1.17.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.16-alpha.0_1730703990329_0.008859988025148757","host":"s3://npm-registry-packages"}},"0.1.16-alpha.1":{"name":"@convex-dev/aggregate","version":"0.1.16-alpha.1","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.16-alpha.1","maintainers":[{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"pashabitz","email":"pavelbitz@gmail.com"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"cowling","email":"james@convex.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"0f84e0e0fb44079913504a4730e8620c350a805c","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.16-alpha.1.tgz","fileCount":118,"integrity":"sha512-tOx0y7Vn2s+0Xnh1czM9JiDHie2T2PzjSAcattAU2wOYKjYi9rV14kOrzZxZYoi8odaIPPwG8pRXV+kKJ5ZhRQ==","signatures":[{"sig":"MEUCIQDKK1hOcYYxFGySNcjl45KqvCU8ti7mqmqn5XTrJEI15gIgel2F8P48LSjgVU6QbagSBvZSq1lw3PTksU7C9tHbTaI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":462616},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"98b1a08cc09590f5e05d9cd9440c4bcb4c755e94","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepare":"npm run build","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ianatconvex","email":"ian@convex.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"9.9.3","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"^0.0.33","typescript-eslint":"^8.4.0","@fast-check/vitest":"^0.1.3","@vitest/coverage-v8":"^2.1.1"},"peerDependencies":{"convex":"~1.16.5 || ~1.17.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.16-alpha.1_1730705149763_0.4587554579369284","host":"s3://npm-registry-packages"}},"0.1.16":{"name":"@convex-dev/aggregate","version":"0.1.16","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.16","maintainers":[{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"pashabitz","email":"pavelbitz@gmail.com"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"cowling","email":"james@convex.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"23a28ab3d8cc3d7b9d7e95d7ab20c5c8e85d980e","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.16.tgz","fileCount":118,"integrity":"sha512-Uqx+rmjpMwFHrNf6H6dX+DG922Pxlk8vSp/ciF6At/QYlDY2C7++65GROtI5ySmpZZhNI9zvh8nGTg1kEQpOJw==","signatures":[{"sig":"MEYCIQCMaQSxA300PGhtx6lbVDM/4HPDaB6t3+BueRFf3yKP/AIhAPudkf/yxHFaVu906pWUSSomRo8rjYxzYGs9cq3rv2C6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":462608},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"9a4d82586d9cee884c585fa143a1f25daf31a2e5","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepare":"npm run build","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ianatconvex","email":"ian@convex.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"9.9.3","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"^0.0.33","typescript-eslint":"^8.4.0","@fast-check/vitest":"^0.1.3","@vitest/coverage-v8":"^2.1.1"},"peerDependencies":{"convex":"~1.16.5 || ~1.17.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.16_1730705251636_0.9937363787063369","host":"s3://npm-registry-packages"}},"0.1.17":{"name":"@convex-dev/aggregate","version":"0.1.17","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.17","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"pashabitz","email":"pavelbitz@gmail.com"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"ca12e8cea6b6c4c94dcab157fd7c19f4ecb6c2d7","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.17.tgz","fileCount":118,"integrity":"sha512-Zg1FKJjBu6LYf/X3ZMTGekiR2TjNfKaYrlfuGoT28BDMVe0tL1pT4o06ZxPmJrP9GabRtEtKxghb5yWEZFezvQ==","signatures":[{"sig":"MEYCIQDaBPO6P44+O7Cg8WKf7Qdn/r1v5FSK8GDizjhIADOFnQIhAMjXeAnXCEZKmIBM9YcKQOcDElO0D+9lKUJM9GGCrr/D","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":509707},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"fe55f705e1f1749eee36a1360fde74c1c16f6a97","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepare":"npm run build","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ldanilek","email":"iwork96+npm@gmail.com"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"8.19.4","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"^0.0.34","typescript-eslint":"^8.4.0","@fast-check/vitest":"^0.1.3","@vitest/coverage-v8":"^2.1.1"},"peerDependencies":{"convex":"~1.16.5 || ~1.17.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.17_1732576028404_0.6070683468708409","host":"s3://npm-registry-packages"}},"0.1.18":{"name":"@convex-dev/aggregate","version":"0.1.18","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.18","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"pashabitz","email":"pavelbitz@gmail.com"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"26538ab121aa945431aa8959e589ac6f4d4cdb5b","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.18.tgz","fileCount":118,"integrity":"sha512-S7yJf96+AqL82S0JKItRZx0KbonkYI3IYEIcRF/rgw48uzQhOmAV0AA4RR0Bkir00Sdtj7dcHTLZQnQF75HR+g==","signatures":[{"sig":"MEUCIB1Em/1PREByNA875NpqniCPZkUKmcizeoAmDggWVpxiAiEAtmlNN9yfF52xqbyr91155aVupej7H5+mbQBlSAgMgaA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":512390},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"f980e46eb345c6e6f606801980dca19e4bd1758a","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepare":"npm run build","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ianatconvex","email":"ian@convex.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"9.9.3","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"^0.0.34","typescript-eslint":"^8.4.0","@fast-check/vitest":"^0.1.3","@vitest/coverage-v8":"^2.1.1"},"peerDependencies":{"convex":"~1.16.5 || ~1.17.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.18_1733120861710_0.8915420415888593","host":"s3://npm-registry-packages"}},"0.1.19":{"name":"@convex-dev/aggregate","version":"0.1.19","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.19","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"40309f759739767abff77aae863fd376fd73eaf0","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.19.tgz","fileCount":118,"integrity":"sha512-QzldtDKhj5tR5DrDnN7MFJnkcxVPwVnfQydfv7Msg2Ux3ElYL55dYvE080OfEzBsOHmTf0tf83TjZSqZZ1Wc4g==","signatures":[{"sig":"MEUCIDt0xiDaX7oP1JtuTRwAo9LR0iZ+XnayQKJyT+7OD6nwAiEAuWiiNj9bbK2PIvqHoZb0L3GK87RaFppSML9BWc0Y9bU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":512350},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"3e8062a528003d45b29b3e1572bb39b61009d88b","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepare":"npm run build","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ballingt","email":"thomasballinger@gmail.com"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"8.19.4","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"^0.0.34","typescript-eslint":"^8.4.0","@fast-check/vitest":"^0.1.3","@vitest/coverage-v8":"^2.1.1"},"peerDependencies":{"convex":"~1.16.5 || ~1.17.0 || ~18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.19_1736876870926_0.0032837312258016116","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"@convex-dev/aggregate","version":"0.1.20","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.20","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"cba501fd2fc1bda38832798ceb674761239db531","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.20.tgz","fileCount":118,"integrity":"sha512-9Y39K9U3pSR8QoskaQrUknz4Iln9Oh53o/MMM+sbsNeTMu8Oqc1c7lFlp9Gxj/aJoyGe0UuT37RdpG9fm6Wn9w==","signatures":[{"sig":"MEUCIQC3ANqXyRtuh5WePMnbT4YekIZR0Jt4aoJ32MkfGCN0FgIgIDDNB9WcIm+hv2Bv9rJ07MOj1oEhGBoZxjLiW1YNNB8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":512348},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"41e443347dbe1c084f112da7311ffb402509e9da","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepare":"npm run build","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ballingt","email":"thomasballinger@gmail.com"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"8.19.4","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"^0.0.34","typescript-eslint":"^8.4.0","@fast-check/vitest":"^0.1.3","@vitest/coverage-v8":"^2.1.1"},"peerDependencies":{"convex":"~1.16.5 || >=1.17.0 <1.25.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.20_1738787348825_0.4544472960657153","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"@convex-dev/aggregate","version":"0.1.21","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.21","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"sujayakar","email":"sujayakar@convex.dev"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"ldanilek","email":"iwork96+npm@gmail.com"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"},{"name":"jamwt","email":"jamwt@convex.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"a5b9eb0cf82a3138e6936a8bd16c70097699c5f1","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.21.tgz","fileCount":118,"integrity":"sha512-R14Ztj96H6waUqzyGBjDiw6Bj/hVwu28g4ootQlJB+pQd7mBMt6RGoDjDtQ9JLh3964xul5KqSEyj99n5Xd+0g==","signatures":[{"sig":"MEQCIDp84VvJK3kZQ//u6x4lrL0UmPV8+J9BPJEbx34xF3KVAiBoZU54jQHP7Swjyexcfcd/HCAhCzIjuA1onnkrpn15aA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":513145},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"c4e9c3dc7995ded76c29d60bfeaff3056aaffe06","scripts":{"test":"vitest run","build":"npm run build:esm && npm run build:cjs","prepare":"npm run build","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ballingt","email":"thomasballinger@gmail.com"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"8.19.4","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"18.18.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.9.1","vitest":"^2.1.1","globals":"^15.9.0","prettier":"3.2.5","@eslint/js":"^9.9.1","typescript":"~5.0.3","@types/node":"^18.17.0","convex-test":"^0.0.34","typescript-eslint":"^8.4.0","@fast-check/vitest":"^0.1.3","@vitest/coverage-v8":"^2.1.1"},"peerDependencies":{"convex":"~1.16.5 || >=1.17.0 <1.35.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.21_1748647578711_0.7456899914902173","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"@convex-dev/aggregate","version":"0.1.22","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.22","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"},{"name":"jamwt","email":"jamwt@convex.dev"},{"name":"nicolapps","email":"nicolas@ettlin.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"2fe1f700100beba03509800e5950656b77bca9cf","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.22.tgz","fileCount":129,"integrity":"sha512-UOB0pWvKxcaMAEZURHoi4zgRUTSOTyotw6NOeg3b9FATihL6LZDUw5227Z6K7Q6hJ2Lolh1rnm1/EfqmA3jGrw==","signatures":[{"sig":"MEUCIQDBwmI10U2h3UjvAJzYhDTbrRm2Q7Ras3E53wnJl4f+SAIgBjC8mJ2fQ73GJ0WL5GCWtgqzKe3BZk2kFNuGtcupiCM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":535123},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"70165fecb12f9c17a6a87a1292d66f04c34d802e","scripts":{"all":"run-p -r 'example' 'build:watch' 'test:watch'","dev":"run-p -r 'example' 'build:watch'","lint":"eslint src","test":"vitest run","alpha":"npm run clean && npm run build && run-p test lint typecheck && npm version prerelease --preid alpha && npm publish --tag alpha && git push --tags","build":"npm run build:esm && npm run build:cjs","clean":"rm -rf dist tsconfig.build.tsbuildinfo","setup":"npm i && npm run build && cd example && npm i && npx convex dev --once","example":"cd example && npm run dev","prepare":"npm run build","release":"npm run clean && npm run build && run-p test lint typecheck && npm version patch && npm publish && git push --tags && git push","version":"pbcopy <<<$npm_package_version; vim CHANGELOG.md && git add CHANGELOG.md","build:cjs":"tsc --project ./commonjs.json && echo '{\\n  \"type\": \"commonjs\"\\n}' > dist/commonjs/package.json","build:esm":"tsc --project ./esm.json && echo '{\\n  \"type\": \"module\"\\n}' > dist/esm/package.json","dashboard":"cd example && npx convex dashboard","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:watch":"vitest","build:watch":"cd src && npx chokidar -d 1000 '../tsconfig.json' '**/*.ts' -c 'npm run build' --initial","test:coverage":"vitest run --coverage --coverage.reporter=text","typecheck:watch":"tsc --watch --noEmit"},"_npmUser":{"name":"ianatconvex","email":"ian@convex.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"10.9.2","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"20.19.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","eslint":"9.32.0","vitest":"3.2.4","globals":"16.3.0","prettier":"3.6.2","@eslint/js":"9.32.0","pkg-pr-new":"0.0.54","typescript":"5.8.3","@types/node":"20.19.9","convex-test":"^0.0.34","chokidar-cli":"3.0.0","npm-run-all2":"^8.0.4","@edge-runtime/vm":"5.0.0","@eslint/eslintrc":"3.3.1","typescript-eslint":"8.38.0","@fast-check/vitest":"^0.1.3","@vitest/coverage-v8":"^3.2.4","@typescript-eslint/parser":"8.38.0","@typescript-eslint/eslint-plugin":"8.38.0"},"peerDependencies":{"convex":"~1.16.5 || >=1.17.0 <1.35.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.22_1754371443842_0.9864572689260978","host":"s3://npm-registry-packages-npm-production"}},"0.1.23-alpha.0":{"name":"@convex-dev/aggregate","version":"0.1.23-alpha.0","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.23-alpha.0","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"},{"name":"jamwt","email":"jamwt@convex.dev"},{"name":"nicolapps","email":"nicolas@ettlin.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"ce0b2d5d242d9b5ed60cddb0aaa90e76ccded8ed","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.23-alpha.0.tgz","fileCount":129,"integrity":"sha512-iLga3MBm6ngUZvm0DIy9J38rHXmLPtzFunVLQycZeiThMMDxnZLuN07VLZr8Tkg0qKOcLoFdk1F9E6RTDx2lQA==","signatures":[{"sig":"MEUCIQDrWUC0SaQSkSR8pfkJOFtoL4FSdGwzTfdiK2MoTifv8gIgBM5crV4zseajwRojrpw23rGtw0GnMq9RQbyIB1xftDI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":549774},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"7ea180b3fb5a53974baf5bdfde0acdcbcdd11b1a","scripts":{"all":"run-p -r 'example' 'build:watch' 'test:watch'","dev":"run-p -r 'example' 'build:watch'","lint":"eslint src","test":"vitest run","alpha":"npm run clean && npm run build && run-p test lint typecheck && npm version prerelease --preid alpha && npm publish --tag alpha && git push --tags","build":"npm run build:esm && npm run build:cjs","clean":"rm -rf dist tsconfig.build.tsbuildinfo","setup":"npm i && npm run build && cd example && npm i && npx convex dev --once","example":"cd example && npm run dev","prepare":"npm run build","release":"npm run clean && npm run build && run-p test lint typecheck && npm version patch && npm publish && git push --tags && git push","version":"pbcopy <<<$npm_package_version; vim CHANGELOG.md && git add CHANGELOG.md","build:cjs":"tsc --project ./commonjs.json && node -e \"require('fs').writeFileSync('dist/commonjs/package.json', JSON.stringify({type:'commonjs'}))\"","build:esm":"tsc --project ./esm.json && node -e \"require('fs').writeFileSync('dist/esm/package.json', JSON.stringify({type:'module'}))\"","dashboard":"cd example && npx convex dashboard","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:watch":"vitest","build:watch":"cd src && npx chokidar -d 1000 '../tsconfig.json' '**/*.ts' -c 'npm run build' --initial","test:coverage":"vitest run --coverage --coverage.reporter=text","typecheck:watch":"tsc --watch --noEmit"},"_npmUser":{"name":"ianatconvex","email":"ian@convex.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"11.5.2","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"20.19.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^7.1.0","eslint":"9.33.0","vitest":"3.2.4","globals":"16.3.0","prettier":"3.6.2","@eslint/js":"9.33.0","pkg-pr-new":"0.0.55","typescript":"5.9.2","@types/node":"20.19.11","convex-test":"^0.0.38","chokidar-cli":"3.0.0","npm-run-all2":"^8.0.4","@edge-runtime/vm":"5.0.0","@eslint/eslintrc":"3.3.1","typescript-eslint":"8.40.0","@fast-check/vitest":"^0.2.0","@vitest/coverage-v8":"^3.2.4","@typescript-eslint/parser":"8.40.0","@typescript-eslint/eslint-plugin":"8.40.0"},"peerDependencies":{"convex":"~1.16.5 || >=1.17.0 <1.35.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.23-alpha.0_1755564951049_0.6838416522471866","host":"s3://npm-registry-packages-npm-production"}},"0.1.23":{"name":"@convex-dev/aggregate","version":"0.1.23","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.23","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"},{"name":"jamwt","email":"jamwt@convex.dev"},{"name":"nicolapps","email":"nicolas@ettlin.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"ca980596e33d702008aa96b5290b848d848c318d","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.23.tgz","fileCount":129,"integrity":"sha512-/Ga05atNulE+1LYXmRz0e+QBpEycmg0qeM9U6LN0Bj2wmC0swZgnfIwiaVUG+VhvqMcZUecmmN6lfe6ph3e+Kw==","signatures":[{"sig":"MEYCIQC7swMoKnNNrfx1c+U83jfncMKjHi/6OD/EcMMWgNiBkAIhAMO40eYqSbPWeqWW4PBVjf8/y3Wx+kOSUyy/w+CEjZUd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":549734},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"bfe1a7408e88e48de367aeca2886fb84b146f567","scripts":{"all":"run-p -r 'example' 'build:watch' 'test:watch'","dev":"run-p -r 'example' 'build:watch'","lint":"eslint src","test":"vitest run","alpha":"npm run clean && npm run build && run-p test lint typecheck && npm version prerelease --preid alpha && npm publish --tag alpha && git push --tags","build":"npm run build:esm && npm run build:cjs","clean":"rm -rf dist tsconfig.build.tsbuildinfo","setup":"npm i && npm run build && cd example && npm i && npx convex dev --once","example":"cd example && npm run dev","prepare":"npm run build","release":"npm run clean && npm run build && run-p test lint typecheck && npm version patch && npm publish && git push --tags && git push","version":"pbcopy <<<$npm_package_version; vim CHANGELOG.md && git add CHANGELOG.md","build:cjs":"tsc --project ./commonjs.json && node -e \"require('fs').writeFileSync('dist/commonjs/package.json', JSON.stringify({type:'commonjs'}))\"","build:esm":"tsc --project ./esm.json && node -e \"require('fs').writeFileSync('dist/esm/package.json', JSON.stringify({type:'module'}))\"","dashboard":"cd example && npx convex dashboard","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:watch":"vitest","build:watch":"cd src && npx chokidar -d 1000 '../tsconfig.json' '**/*.ts' -c 'npm run build' --initial","test:coverage":"vitest run --coverage --coverage.reporter=text","typecheck:watch":"tsc --watch --noEmit"},"_npmUser":{"name":"ianatconvex","email":"ian@convex.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"11.5.2","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"20.19.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.0","eslint":"9.33.0","vitest":"3.2.4","globals":"16.3.0","prettier":"3.6.2","@eslint/js":"9.33.0","pkg-pr-new":"0.0.55","typescript":"5.9.2","@types/node":"20.19.11","convex-test":"^0.0.38","chokidar-cli":"3.0.0","npm-run-all2":"^8.0.4","@edge-runtime/vm":"5.0.0","@eslint/eslintrc":"3.3.1","typescript-eslint":"8.40.0","@fast-check/vitest":"^0.2.0","@vitest/coverage-v8":"^3.2.4","@typescript-eslint/parser":"8.40.0","@typescript-eslint/eslint-plugin":"8.40.0"},"peerDependencies":{"convex":"~1.16.5 || >=1.17.0 <1.35.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.23_1755651559405_0.29771880181865984","host":"s3://npm-registry-packages-npm-production"}},"0.1.24-alpha.0":{"name":"@convex-dev/aggregate","version":"0.1.24-alpha.0","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.24-alpha.0","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"},{"name":"jamwt","email":"jamwt@convex.dev"},{"name":"nicolapps","email":"nicolas@ettlin.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"8b4c1b08e9d2985e07975bd1915462092033e780","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.24-alpha.0.tgz","fileCount":129,"integrity":"sha512-5NVAztstKlfiJujMqtcETqUWtjslmTPdLJnrBRyGQW0Gap7vldRC7NvbD5YzxNvW1kh0BvVRuyYFseoBhCnDNw==","signatures":[{"sig":"MEQCIH98ISHnzW09V3hes8v6vj2knIT0lq4nK0gmCFlBDxxcAiA2/kY3r1btbfXj7x+GiurNEbV8Px92o9GZb3+lZLD4JQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":577224},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"8327e30f84c10f6ddde093baca4d7668e103d6f7","scripts":{"all":"run-p -r 'example' 'build:watch' 'test:watch'","dev":"run-p -r 'example' 'build:watch'","lint":"eslint src","test":"vitest run","alpha":"npm run clean && npm run build && run-p test lint typecheck && npm version prerelease --preid alpha && npm publish --tag alpha && git push --tags","build":"npm run build:esm && npm run build:cjs","clean":"rm -rf dist tsconfig.build.tsbuildinfo","setup":"npm i && npm run build && cd example && npm i && npx convex dev --once","example":"cd example && npm run dev","prepare":"npm run build","release":"npm run clean && npm run build && run-p test lint typecheck && npm version patch && npm publish && git push --tags && git push","version":"pbcopy <<<$npm_package_version; vim CHANGELOG.md && git add CHANGELOG.md","build:cjs":"tsc --project ./commonjs.json && node -e \"require('fs').writeFileSync('dist/commonjs/package.json', JSON.stringify({type:'commonjs'}))\"","build:esm":"tsc --project ./esm.json && node -e \"require('fs').writeFileSync('dist/esm/package.json', JSON.stringify({type:'module'}))\"","dashboard":"cd example && npx convex dashboard","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:watch":"vitest","build:watch":"cd src && npx chokidar -d 1000 '../tsconfig.json' '**/*.ts' -c 'npm run build' --initial","test:coverage":"vitest run --coverage --coverage.reporter=text","typecheck:watch":"tsc --watch --noEmit"},"_npmUser":{"name":"ianatconvex","email":"ian@convex.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"11.5.2","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"20.19.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^7.1.0","eslint":"9.34.0","vitest":"3.2.4","globals":"16.3.0","prettier":"3.6.2","@eslint/js":"9.34.0","pkg-pr-new":"0.0.59","typescript":"5.9.2","@types/node":"20.19.12","convex-test":"^0.0.38","chokidar-cli":"3.0.0","npm-run-all2":"^8.0.4","@edge-runtime/vm":"5.0.0","@eslint/eslintrc":"3.3.1","typescript-eslint":"8.42.0","@fast-check/vitest":"^0.2.0","@vitest/coverage-v8":"^3.2.4","@typescript-eslint/parser":"8.42.0","@typescript-eslint/eslint-plugin":"8.42.0"},"peerDependencies":{"convex":"~1.16.5 || >=1.17.0 <1.35.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.24-alpha.0_1756930340751_0.904090631570776","host":"s3://npm-registry-packages-npm-production"}},"0.1.24":{"name":"@convex-dev/aggregate","version":"0.1.24","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.24","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"},{"name":"jamwt","email":"jamwt@convex.dev"},{"name":"nicolapps","email":"nicolas@ettlin.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"bc9c6c79bfc0014674a184a91338a050832b280d","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.24.tgz","fileCount":129,"integrity":"sha512-7u7kUAvo5IXR1eY/QUpgihV1VZUeM69ZesKZ9D5hqmNzD2LrTUfwWtVXnns3Kzef3CycNaG9NWMO9auU+g5GGg==","signatures":[{"sig":"MEYCIQCTzRko4TSNSYDLlaCHGvwhZfZMBCZZcoFIyaMSYInmdAIhAOmLap77/7fdNGCWmJOvpcyAq2JoYD0kUgzmEL07Th4Y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":577017},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"25f6e6b1287a1fd155086502897b87c8fa62ee25","scripts":{"all":"run-p -r 'example' 'build:watch' 'test:watch'","dev":"run-p -r 'example' 'build:watch'","lint":"eslint src","test":"vitest run","alpha":"npm run clean && npm run build && run-p test lint typecheck && npm version prerelease --preid alpha && npm publish --tag alpha && git push --tags","build":"npm run build:esm && npm run build:cjs","clean":"rm -rf dist tsconfig.build.tsbuildinfo","setup":"npm i && npm run build && cd example && npm i && npx convex dev --once","example":"cd example && npm run dev","prepare":"npm run build","release":"npm run clean && npm run build && run-p test lint typecheck && npm version patch && npm publish && git push --tags && git push","version":"pbcopy <<<$npm_package_version; vim CHANGELOG.md && git add CHANGELOG.md","build:cjs":"tsc --project ./commonjs.json && node -e \"require('fs').writeFileSync('dist/commonjs/package.json', JSON.stringify({type:'commonjs'}))\"","build:esm":"tsc --project ./esm.json && node -e \"require('fs').writeFileSync('dist/esm/package.json', JSON.stringify({type:'module'}))\"","dashboard":"cd example && npx convex dashboard","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:watch":"vitest","build:watch":"cd src && npx chokidar -d 1000 '../tsconfig.json' '**/*.ts' -c 'npm run build' --initial","test:coverage":"vitest run --coverage --coverage.reporter=text","typecheck:watch":"tsc --watch --noEmit"},"_npmUser":{"name":"ianatconvex","email":"ian@convex.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"8.19.4","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"20.19.5","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.0","eslint":"9.35.0","vitest":"3.2.4","globals":"16.4.0","prettier":"3.6.2","@eslint/js":"9.35.0","pkg-pr-new":"0.0.60","typescript":"5.9.2","@types/node":"20.19.15","convex-test":"^0.0.38","chokidar-cli":"3.0.0","npm-run-all2":"^8.0.4","@edge-runtime/vm":"5.0.0","@eslint/eslintrc":"3.3.1","typescript-eslint":"8.43.0","@fast-check/vitest":"^0.2.0","@vitest/coverage-v8":"^3.2.4","@typescript-eslint/parser":"8.43.0","@typescript-eslint/eslint-plugin":"8.43.0"},"peerDependencies":{"convex":"~1.16.5 || >=1.17.0 <1.35.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.24_1758058803230_0.5602434538002243","host":"s3://npm-registry-packages-npm-production"}},"0.1.25":{"name":"@convex-dev/aggregate","version":"0.1.25","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.1.25","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"ikhare","email":"ikhare@convex.dev"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"sshader","email":"sarah@convex.dev"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"},{"name":"jamwt","email":"jamwt@convex.dev"},{"name":"nicolapps","email":"nicolas@ettlin.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"9ca3b42789b2afa735f5da3d076f9300bb75fb98","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.1.25.tgz","fileCount":129,"integrity":"sha512-HNO4Ft/mNvVnnXT4W+CLCcD5LH0r8x8bY77w0CmdVx9GRmU3SaLICP87GQzonnHHalgTelq8HQB04RzdmygzqQ==","signatures":[{"sig":"MEYCIQDkFXqW26auwHye4osr7M6qGzFOwvIHqjAtonLU3szWjAIhALKMNtnhrpEXMMLjvk7SRdmD/VMWGiydDDup3ylX03KX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":583598},"main":"./dist/commonjs/client/index.js","type":"module","types":"./dist/commonjs/client/index.d.ts","module":"./dist/esm/client/index.js","exports":{".":{"import":{"types":"./dist/esm/client/index.d.ts","default":"./dist/esm/client/index.js","@convex-dev/component-source":"./src/client/index.ts"},"require":{"types":"./dist/commonjs/client/index.d.ts","default":"./dist/commonjs/client/index.js","@convex-dev/component-source":"./src/client/index.ts"}},"./package.json":"./package.json","./convex.config":{"import":{"types":"./dist/esm/component/convex.config.d.ts","default":"./dist/esm/component/convex.config.js","@convex-dev/component-source":"./src/component/convex.config.ts"}}},"gitHead":"f2a2075f02cb92148b07f80863a2966fde0ae16b","scripts":{"all":"run-p -r 'example' 'build:watch' 'test:watch'","dev":"run-p -r 'example' 'build:watch'","lint":"eslint src","test":"vitest run","alpha":"npm run clean && npm run build && run-p test lint typecheck && npm version prerelease --preid alpha && npm publish --tag alpha && git push --tags","build":"npm run build:esm && npm run build:cjs","clean":"rm -rf dist tsconfig.build.tsbuildinfo","setup":"npm i && npm run build && cd example && npm i && npx convex dev --once","example":"cd example && npm run dev","prepare":"npm run build","release":"npm run clean && npm run build && run-p test lint typecheck && npm version patch && npm publish && git push --tags && git push","version":"pbcopy <<<$npm_package_version; vim CHANGELOG.md && git add CHANGELOG.md","build:cjs":"tsc --project ./commonjs.json && node -e \"require('fs').writeFileSync('dist/commonjs/package.json', JSON.stringify({type:'commonjs'}))\"","build:esm":"tsc --project ./esm.json && node -e \"require('fs').writeFileSync('dist/esm/package.json', JSON.stringify({type:'module'}))\"","dashboard":"cd example && npx convex dashboard","typecheck":"tsc --noEmit","test:debug":"vitest --inspect-brk --no-file-parallelism","test:watch":"vitest","build:watch":"cd src && npx chokidar -d 1000 '../tsconfig.json' '**/*.ts' -c 'npm run build' --initial","test:coverage":"vitest run --coverage --coverage.reporter=text","typecheck:watch":"tsc --watch --noEmit"},"_npmUser":{"name":"ianatconvex","email":"ian@convex.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"10.8.2","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"20.19.5","_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.8","eslint":"9.37.0","vitest":"3.2.4","globals":"16.4.0","prettier":"3.6.2","@eslint/js":"9.37.0","pkg-pr-new":"0.0.60","typescript":"5.9.3","@types/node":"20.19.19","convex-test":"^0.0.38","chokidar-cli":"3.0.0","npm-run-all2":"^8.0.4","@edge-runtime/vm":"5.0.0","@eslint/eslintrc":"3.3.1","typescript-eslint":"8.45.0","@fast-check/vitest":"^0.2.0","@vitest/coverage-v8":"^3.2.4","@typescript-eslint/parser":"8.45.0","@typescript-eslint/eslint-plugin":"8.45.0"},"peerDependencies":{"convex":"~1.16.5 || >=1.17.0 <1.35.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.1.25_1759771820537_0.17184653867358946","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@convex-dev/aggregate","version":"0.2.0","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.2.0","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"},{"name":"jamwt","email":"jamwt@convex.dev"},{"name":"nicolapps","email":"nicolas@ettlin.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"2eef7a753fd441b0b2915fdefa2f3d8966873b2c","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.2.0.tgz","fileCount":78,"integrity":"sha512-AKHa6SilQ9w1gnqBghCbQj77sdE2SJSZ8n3FHH/0PX/MSHsvmDT6Z+ZzIVK6EnmqItwxyRAIfA2E+znnHQVvOQ==","signatures":[{"sig":"MEUCIQCr+//IVctI8xAWlGxSuOicEl0iT//WkL5KqOvgZMv4bAIgXeenwqoY4CtPCkRKErR3sJtJpCBxQ6yIak6EDs7d6A0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":402763},"type":"module","types":"./dist/client/index.d.ts","module":"./dist/client/index.js","exports":{".":{"types":"./dist/client/index.d.ts","default":"./dist/client/index.js"},"./test":"./src/test.ts","./package.json":"./package.json","./convex.config":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./convex.config.js":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./_generated/component.js":{"types":"./dist/component/_generated/component.d.ts"}},"gitHead":"dd47cb8844eb5a67414cfaf2b7a9ee56bbd5a975","scripts":{"all":"run-p -r 'dev:*' 'test:watch'","dev":"run-p -r 'dev:*'","lint":"eslint .","test":"vitest run --typecheck","alpha":"npm run clean && npm ci && run-p test lint typecheck && npm version prerelease --preid alpha && npm publish --tag alpha && git push --tags","build":"tsc --project ./tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","predev":"npm run dev:backend -- --until-success","prepare":"npm run build","release":"npm run clean && npm ci && run-p test lint typecheck && npm version patch && npm publish && git push --tags","version":"pbcopy <<<$npm_package_version; vim CHANGELOG.md && prettier -w CHANGELOG.md && git add CHANGELOG.md","dev:build":"chokidar 'tsconfig*.json' 'src/**/*.ts' -i '**/*.test.ts' -c 'convex codegen --component-dir ./src/component && npm run build' --initial","typecheck":"tsc --noEmit && tsc -p example && tsc -p example/convex","test:debug":"vitest --inspect-brk --no-file-parallelism","test:watch":"vitest --typecheck --clearScreen false","dev:backend":"convex dev --typecheck-components","dev:frontend":"cd example && vite --clearScreen false","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ianatconvex","email":"ian@convex.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"11.6.2","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"20.19.5","_hasShrinkwrap":false,"devDependencies":{"vite":"7.2.2","react":"19.2.0","convex":"1.29.0","eslint":"9.39.1","vitest":"3.2.4","globals":"16.5.0","prettier":"3.6.2","rand-seed":"3.0.0","react-dom":"19.2.0","@eslint/js":"9.39.1","pkg-pr-new":"0.0.60","type-route":"1.1.0","typescript":"5.9.3","@types/node":"20.19.24","convex-test":"0.0.38","@types/react":"19.2.2","chokidar-cli":"3.0.0","npm-run-all2":"8.0.4","@mantine/core":"8.3.6","@xyflow/react":"12.9.2","@emotion/react":"11.14.0","@mantine/hooks":"8.3.6","convex-helpers":"0.1.104","@emotion/styled":"11.14.1","@edge-runtime/vm":"5.0.0","@eslint/eslintrc":"3.3.1","@mantine/emotion":"8.3.6","@types/react-dom":"19.2.2","typescript-eslint":"8.46.4","@fast-check/vitest":"0.2.3","@tabler/icons-react":"3.35.0","@vitest/coverage-v8":"3.2.4","@vitejs/plugin-react":"5.1.0","@convex-dev/migrations":"0.3.0","@mantine/notifications":"8.3.6","@typescript-eslint/parser":"8.46.4","eslint-plugin-react-hooks":"7.0.1","eslint-plugin-react-refresh":"0.4.24","@typescript-eslint/eslint-plugin":"8.46.4"},"peerDependencies":{"convex":"^1.24.8"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.2.0_1763003736327_0.18022822157209561","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@convex-dev/aggregate","version":"0.2.1","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.2.1","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"reece-convex","email":"reece@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"},{"name":"sethconvex","email":"seth@convex.dev"},{"name":"jamwt","email":"jamwt@convex.dev"},{"name":"nicolapps","email":"nicolas@ettlin.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"674e65cd7ee0ff304a7cb44bd734e4b3c16a31c4","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.2.1.tgz","fileCount":78,"integrity":"sha512-z8GeUC+cIZEgtMXecX6WTBQHNW4E2ioRsc5IkO8BWnCjgDOru/Mw8zXe9JPe35JkqDjlSVKuwxiQHKs/jaYAyA==","signatures":[{"sig":"MEYCIQDnMKVuHweApim3vdAYLEXOry3bJ+hNGEdBEXkSDkBHYgIhANg7p6vXXXx/Y2NsHQIBFDVUxWxT9dzZBWcpX+IOVBKX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":414801},"type":"module","types":"./dist/client/index.d.ts","module":"./dist/client/index.js","exports":{".":{"types":"./dist/client/index.d.ts","default":"./dist/client/index.js"},"./test":"./src/test.ts","./package.json":"./package.json","./convex.config":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./convex.config.js":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./_generated/component.js":{"types":"./dist/component/_generated/component.d.ts"}},"gitHead":"0f9dfd3bfcac5fb00a244fb78f93b92e604f0cfc","scripts":{"all":"run-p -r 'dev:*' 'test:watch'","dev":"run-p -r 'dev:*'","lint":"eslint .","test":"vitest run --typecheck","alpha":"npm run clean && npm ci && run-p test lint typecheck && npm version prerelease --preid alpha && npm publish --tag alpha && git push --tags","build":"tsc --project ./tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","predev":"path-exists .env.local || (npm run build && npx convex dev --once)","prepare":"npm run build","release":"npm run clean && npm ci && run-p test lint typecheck && npm version patch && npm publish && git push --tags","version":"pbcopy <<<$npm_package_version; vim CHANGELOG.md && prettier -w CHANGELOG.md && git add CHANGELOG.md","dev:build":"chokidar 'tsconfig*.json' 'src/**/*.ts' -i '**/*.test.ts' -c 'npx convex codegen --component-dir ./src/component && npm run build' --initial","typecheck":"tsc --noEmit && tsc -p example && tsc -p example/convex","test:debug":"vitest --inspect-brk --no-file-parallelism","test:watch":"vitest --typecheck --clearScreen false","dev:backend":"convex dev --typecheck-components","dev:frontend":"cd example && vite --clearScreen false","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ianatconvex","email":"ian@convex.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"10.9.4","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"22.21.1","_hasShrinkwrap":false,"devDependencies":{"vite":"7.2.6","react":"19.2.3","convex":"1.30.0","eslint":"9.39.1","vitest":"3.2.4","globals":"16.5.0","prettier":"3.7.4","rand-seed":"3.0.0","react-dom":"19.2.3","@eslint/js":"9.39.1","pkg-pr-new":"0.0.62","type-route":"1.1.0","typescript":"5.9.3","@types/node":"20.19.25","convex-test":"0.0.41","@types/react":"19.2.7","chokidar-cli":"3.0.0","npm-run-all2":"8.0.4","@mantine/core":"8.3.9","@xyflow/react":"12.10.0","@emotion/react":"11.14.0","@mantine/hooks":"8.3.9","convex-helpers":"0.1.106","@emotion/styled":"11.14.1","path-exists-cli":"2.0.0","@edge-runtime/vm":"5.0.0","@eslint/eslintrc":"3.3.3","@mantine/emotion":"8.3.9","@types/react-dom":"19.2.3","typescript-eslint":"8.48.1","@fast-check/vitest":"0.2.3","@tabler/icons-react":"3.35.0","@vitest/coverage-v8":"3.2.4","@vitejs/plugin-react":"5.1.1","@convex-dev/migrations":"0.3.1","@mantine/notifications":"8.3.9","@typescript-eslint/parser":"8.48.1","eslint-plugin-react-hooks":"7.0.1","eslint-plugin-react-refresh":"0.4.24","@typescript-eslint/eslint-plugin":"8.48.1"},"peerDependencies":{"convex":"^1.24.8"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.2.1_1767925901820_0.17407428557805393","host":"s3://npm-registry-packages-npm-production"}},"0.2.2-alpha.0":{"name":"@convex-dev/aggregate","version":"0.2.2-alpha.0","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.2.2-alpha.0","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"ballingt","email":"thomasballinger@gmail.com"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"reece-convex","email":"reece@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"},{"name":"sethconvex","email":"seth@convex.dev"},{"name":"jamwt","email":"jamwt@convex.dev"},{"name":"nicolapps","email":"nicolas@ettlin.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"5839dee37df443881f5a1c5a49bfeeee5a20f50c","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.2.2-alpha.0.tgz","fileCount":79,"integrity":"sha512-JS/YDi9gktfbe8kV47OzWgvRz1oDxfZDoIEoCjM/BJHLO+8BwX/ePGxbYBpVx5LqCNam5gsdS+mDC/LOnCTGEw==","signatures":[{"sig":"MEUCIAK3KlkY1yVzWwUTSG2EjCCKbFux76J0GtAoMiMUtduQAiEAmwxySD1VEgg/WGSaY9uhDzSPUrwTA8Gr9F5ibHHXRUw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":448739},"type":"module","types":"./dist/client/index.d.ts","module":"./dist/client/index.js","exports":{".":{"types":"./dist/client/index.d.ts","default":"./dist/client/index.js"},"./test":"./src/test.ts","./package.json":"./package.json","./convex.config":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./convex.config.js":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./_generated/component.js":{"types":"./dist/component/_generated/component.d.ts"}},"gitHead":"3efa4bccf46a2602831c0c5f48bb599b1396d9ab","scripts":{"all":"run-p -r 'dev:*' 'test:watch'","dev":"run-p -r 'dev:*'","lint":"eslint .","test":"vitest run --typecheck","alpha":"npm run clean && npm ci && run-p test lint typecheck && npm version prerelease --preid alpha && npm publish --tag alpha && git push --tags","build":"tsc --project ./tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","predev":"path-exists .env.local || (npm run build && npx convex dev --once)","prepare":"npm run build","release":"npm run clean && npm ci && run-p test lint typecheck && npm version patch && npm publish && git push --tags","version":"pbcopy <<<$npm_package_version; vim CHANGELOG.md && prettier -w CHANGELOG.md && git add CHANGELOG.md","dev:build":"chokidar 'tsconfig*.json' 'src/**/*.ts' -i '**/*.test.ts' -c 'npx convex codegen --component-dir ./src/component && npm run build' --initial","typecheck":"tsc --noEmit && tsc -p example && tsc -p example/convex","test:debug":"vitest --inspect-brk --no-file-parallelism","test:watch":"vitest --typecheck --clearScreen false","dev:backend":"convex dev --typecheck-components","dev:frontend":"cd example && vite --clearScreen false","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ianatconvex","email":"ian@convex.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"10.9.4","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"22.21.1","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"7.2.6","react":"19.2.3","convex":"1.30.0","eslint":"9.39.1","vitest":"3.2.4","globals":"16.5.0","prettier":"3.7.4","rand-seed":"3.0.0","react-dom":"19.2.3","@eslint/js":"9.39.1","pkg-pr-new":"0.0.62","type-route":"1.1.0","typescript":"5.9.3","@types/node":"20.19.25","convex-test":"0.0.41","@types/react":"19.2.7","chokidar-cli":"3.0.0","npm-run-all2":"8.0.4","@mantine/core":"8.3.9","@xyflow/react":"12.10.0","@emotion/react":"11.14.0","@mantine/hooks":"8.3.9","convex-helpers":"0.1.106","@emotion/styled":"11.14.1","path-exists-cli":"2.0.0","@edge-runtime/vm":"5.0.0","@eslint/eslintrc":"3.3.3","@mantine/emotion":"8.3.9","@types/react-dom":"19.2.3","typescript-eslint":"8.48.1","@fast-check/vitest":"0.2.3","@tabler/icons-react":"3.35.0","@vitest/coverage-v8":"3.2.4","@vitejs/plugin-react":"5.1.1","@convex-dev/migrations":"0.3.1","@mantine/notifications":"8.3.9","@typescript-eslint/parser":"8.48.1","eslint-plugin-react-hooks":"7.0.1","eslint-plugin-react-refresh":"0.4.24","@typescript-eslint/eslint-plugin":"8.48.1"},"peerDependencies":{"convex":"^1.24.8"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.2.2-alpha.0_1767929388783_0.8922737064532362","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@convex-dev/aggregate","version":"0.2.2","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.2.2","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"dowski-convex","email":"christian@convex.dev"},{"name":"reece-convex","email":"reece@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"},{"name":"sethconvex","email":"seth@convex.dev"},{"name":"jamwt","email":"jamwt@convex.dev"},{"name":"nicolapps","email":"nicolas@ettlin.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"fd956d8c1d979d0ddb54d37e6ab1c35766fd064c","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.2.2.tgz","fileCount":78,"integrity":"sha512-9sskfPZdiH0mdc33Obcf2+gQSPDpyHqUDkYmXDsUqhqe5lLwGKYbrxw7LgxHmYm9c1YLbaXqxKiM1CgucfKAAw==","signatures":[{"sig":"MEUCIH+iSBV0uuWTlTnGB0cgRd+Z55fFJwV/VxNuBbM+37qgAiEAhmcXY3RuzgWi6CDaWUUMhgfC1KhnLFNFEMtinYTnbKw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":418652},"type":"module","types":"./dist/client/index.d.ts","module":"./dist/client/index.js","exports":{".":{"types":"./dist/client/index.d.ts","default":"./dist/client/index.js"},"./test":"./src/test.ts","./package.json":"./package.json","./convex.config":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./convex.config.js":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./_generated/component.js":{"types":"./dist/component/_generated/component.d.ts"}},"gitHead":"ef00fb8afe9e419f6013ae7d8e8c0478c2960752","scripts":{"dev":"convex dev --start 'npm run dev:build'","lint":"eslint .","test":"vitest run --typecheck","alpha":"npm version prerelease --preid alpha && npm publish --tag alpha && git push --follow-tags","build":"tsc --project ./tsconfig.build.json","predev":"convex init && npm run build:codegen","release":"npm version patch && npm publish && git push --follow-tags","version":"(npm whoami || npm login) && vim -c 'normal o' -c 'normal o## '$npm_package_version CHANGELOG.md && prettier -w CHANGELOG.md && git add CHANGELOG.md","dev:build":"chokidar 'tsconfig*.json' 'src/**/*.ts' -i '**/*.test.ts' -c 'npm run build:codegen' --initial","typecheck":"tsc --noEmit && tsc -p example && tsc -p example/convex","preversion":"npm ci && npm run build:clean && npm run test && npm run lint && npm run typecheck","test:debug":"vitest --inspect-brk --no-file-parallelism","test:watch":"vitest --typecheck --clearScreen false","build:clean":"rm -rf dist *.tsbuildinfo && npm run build:codegen","dev:frontend":"cd example && vite --clearScreen false","build:codegen":"npx convex codegen --component-dir ./src/component && npm run build","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ianatconvex","email":"ian@convex.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"11.11.0","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"22.22.2","_hasShrinkwrap":false,"devDependencies":{"vite":"8.0.16","react":"19.2.6","convex":"1.39.1","eslint":"9.39.4","vitest":"4.1.7","globals":"17.6.0","prettier":"3.8.3","rand-seed":"3.0.0","react-dom":"19.2.6","@eslint/js":"9.39.4","pkg-pr-new":"0.0.75","type-route":"1.1.0","typescript":"6.0.3","@types/node":"20.19.41","convex-test":"0.0.53","@types/react":"19.2.15","chokidar-cli":"3.0.0","@mantine/core":"9.2.2","@xyflow/react":"12.10.2","@emotion/react":"11.14.0","@mantine/hooks":"9.2.2","convex-helpers":"0.1.118","@emotion/styled":"11.14.1","@edge-runtime/vm":"5.0.0","@eslint/eslintrc":"3.3.5","@mantine/emotion":"9.2.2","@types/react-dom":"19.2.3","typescript-eslint":"8.60.0","@fast-check/vitest":"0.4.1","@tabler/icons-react":"3.44.0","@vitest/coverage-v8":"4.1.7","@vitejs/plugin-react":"6.0.2","@convex-dev/migrations":"0.3.5","@mantine/notifications":"9.2.2","@convex-dev/eslint-plugin":"2.0.0","@typescript-eslint/parser":"8.60.0","eslint-plugin-react-hooks":"7.1.1","eslint-plugin-react-refresh":"0.5.2","@typescript-eslint/eslint-plugin":"8.60.0"},"peerDependencies":{"convex":"^1.24.8"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.2.2_1782346216420_0.8158021297128812","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-alpha.0":{"name":"@convex-dev/aggregate","version":"0.3.0-alpha.0","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.3.0-alpha.0","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"dowski-convex","email":"christian@convex.dev"},{"name":"reece-convex","email":"reece@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"},{"name":"sethconvex","email":"seth@convex.dev"},{"name":"andycai-convex","email":"andy@convex.dev"},{"name":"mikewheaton","email":"mike@wheaton.dev"},{"name":"jamwt","email":"jamwt@convex.dev"},{"name":"nicolapps","email":"nicolas@ettlin.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"dcb54a79f3362a3d0419db557206e25ea4f0371e","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.3.0-alpha.0.tgz","fileCount":84,"integrity":"sha512-y6pfILOlyFV7gyn401FiCOq1P+0tH/RE7aa775nZXRl4Qj9SF3rMTxXR7QOoHJthnfKL3ewiVKzuVQDCI2OZlQ==","signatures":[{"sig":"MEUCIQDESeujsWAYIbwurJXSplfpVscwA87/6Vm7zkgem1eVOgIgfeJKiPKRLpPqngFLO/vuxtlNMBkbK6dx4ehU26PihT0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":536735},"type":"module","types":"./dist/client/index.d.ts","module":"./dist/client/index.js","exports":{".":{"types":"./dist/client/index.d.ts","default":"./dist/client/index.js"},"./test":"./src/test.ts","./package.json":"./package.json","./convex.config":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./convex.config.js":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./_generated/component.js":{"types":"./dist/component/_generated/component.d.ts"}},"gitHead":"32fcedbc4c9977243f71caf33117506ee01ee439","scripts":{"dev":"convex dev --start 'npm run dev:build'","lint":"eslint .","test":"vitest run --typecheck","alpha":"npm version prerelease --preid alpha && npm publish --tag alpha && git push --follow-tags","build":"tsc --project ./tsconfig.build.json","predev":"convex init && npm run build:codegen","release":"npm version patch && npm publish && git push --follow-tags","version":"(npm whoami || npm login) && vim -c 'normal o' -c 'normal o## '$npm_package_version CHANGELOG.md && prettier -w CHANGELOG.md && git add CHANGELOG.md","dev:build":"chokidar 'tsconfig*.json' 'src/**/*.ts' -i '**/*.test.ts' -c 'npm run build:codegen' --initial","typecheck":"tsc --noEmit && tsc -p example && tsc -p example/convex","preversion":"npm ci && npm run build:clean && npm run test && npm run lint && npm run typecheck","test:debug":"vitest --inspect-brk --no-file-parallelism","test:watch":"vitest --typecheck --clearScreen false","build:clean":"rm -rf dist *.tsbuildinfo && npm run build:codegen","dev:frontend":"cd example && vite --clearScreen false","build:codegen":"npx convex codegen --component-dir ./src/component && npm run build","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"reece-convex","email":"reece@convex.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"11.11.0","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@convex-dev/batch-worker":"0.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"8.1.5","react":"19.2.8","convex":"1.43.0","eslint":"9.39.5","vitest":"4.1.10","globals":"17.8.0","prettier":"3.9.6","rand-seed":"3.0.0","react-dom":"19.2.8","@eslint/js":"9.39.5","pkg-pr-new":"0.0.82","type-route":"1.1.0","typescript":"6.0.3","@types/node":"20.19.43","convex-test":"0.0.55","@types/react":"19.2.17","chokidar-cli":"3.0.0","@mantine/core":"9.5.0","@xyflow/react":"12.11.2","@emotion/react":"11.14.0","@mantine/hooks":"9.5.0","convex-helpers":"0.1.122","@emotion/styled":"11.14.1","@edge-runtime/vm":"5.0.0","@eslint/eslintrc":"3.3.6","@mantine/emotion":"9.5.0","@types/react-dom":"19.2.3","typescript-eslint":"8.65.0","@fast-check/vitest":"0.4.1","@tabler/icons-react":"3.46.0","@vitest/coverage-v8":"4.1.10","@vitejs/plugin-react":"6.0.4","@convex-dev/migrations":"0.3.6","@mantine/notifications":"9.5.0","@convex-dev/eslint-plugin":"2.0.0","@typescript-eslint/parser":"8.65.0","eslint-plugin-react-hooks":"7.1.1","eslint-plugin-react-refresh":"0.5.3","@typescript-eslint/eslint-plugin":"8.65.0"},"peerDependencies":{"convex":"^1.43.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.3.0-alpha.0_1787090024056_0.44385657950595836","host":"s3://npm-registry-packages-npm-production"}},"0.3.0-alpha.1":{"name":"@convex-dev/aggregate","version":"0.3.0-alpha.1","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.3.0-alpha.1","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"dowski-convex","email":"christian@convex.dev"},{"name":"reece-convex","email":"reece@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"},{"name":"sethconvex","email":"seth@convex.dev"},{"name":"andycai-convex","email":"andy@convex.dev"},{"name":"mikewheaton","email":"mike@wheaton.dev"},{"name":"jamwt","email":"jamwt@convex.dev"},{"name":"nicolapps","email":"nicolas@ettlin.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"c066cf5e2fe3e5d2e48eea3e6878a8deee4a0bb5","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.3.0-alpha.1.tgz","fileCount":90,"integrity":"sha512-nbNlwB6VWZ26P1DBMlClZUbp+5EhTKCMU0EW/Lhgh4r1SbB93eKTlXVBwW1cTC4B0UfqzOFNLuEZZ76ZoEercg==","signatures":[{"sig":"MEUCIECQ2/pG/FSDonx3SWdZB1nPFCo0x1VKRurI6zfPznH/AiEA2A+WHpOA5nhW2AQ/MqgR7nQMQ+i0Ousn39sPHOq6IYs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":597399},"type":"module","types":"./dist/client/index.d.ts","module":"./dist/client/index.js","exports":{".":{"types":"./dist/client/index.d.ts","default":"./dist/client/index.js"},"./test":"./src/test.ts","./package.json":"./package.json","./convex.config":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./convex.config.js":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./_generated/component.js":{"types":"./dist/component/_generated/component.d.ts"}},"gitHead":"5e8e1dcfbcab19bf08b2611f2005bf69d46ecb45","scripts":{"dev":"convex dev --start 'npm run dev:build'","lint":"eslint . && prettier --check .","test":"vitest run --typecheck","alpha":"npm version prerelease --preid alpha && npm publish --tag alpha && git push --follow-tags","build":"tsc --project ./tsconfig.build.json","format":"prettier --write .","predev":"convex init && npm run build:codegen","release":"npm version patch && npm publish && git push --follow-tags","version":"(npm whoami || npm login) && vim -c 'normal o' -c 'normal o## '$npm_package_version CHANGELOG.md && prettier -w CHANGELOG.md && git add CHANGELOG.md","dev:build":"chokidar 'tsconfig*.json' 'src/**/*.ts' -i '**/*.test.ts' -c 'npm run build:codegen' --initial","typecheck":"tsc --noEmit && tsc -p example && tsc -p example/convex","preversion":"npm ci && npm run build:clean && npm run test && npm run lint && npm run typecheck","test:debug":"vitest --inspect-brk --no-file-parallelism","test:watch":"vitest --typecheck --clearScreen false","build:clean":"rm -rf dist *.tsbuildinfo && npm run build:codegen","dev:frontend":"cd example && vite --clearScreen false","build:codegen":"npx convex codegen --component-dir ./src/component && npm run build","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"reece-convex","email":"reece@convex.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"11.11.0","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"convex-helpers":"0.1.122","@convex-dev/batch-worker":"0.3.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"8.1.5","react":"19.2.8","convex":"1.43.0","eslint":"9.39.5","vitest":"4.1.10","globals":"17.8.0","prettier":"3.9.6","rand-seed":"3.0.0","react-dom":"19.2.8","@eslint/js":"9.39.5","pkg-pr-new":"0.0.82","type-route":"1.1.0","typescript":"6.0.3","@types/node":"20.19.43","convex-test":"0.0.55","@types/react":"19.2.17","chokidar-cli":"3.0.0","@mantine/core":"9.5.0","@xyflow/react":"12.11.2","@emotion/react":"11.14.0","@mantine/hooks":"9.5.0","@emotion/styled":"11.14.1","@edge-runtime/vm":"5.0.0","@eslint/eslintrc":"3.3.6","@mantine/emotion":"9.5.0","@types/react-dom":"19.2.3","typescript-eslint":"8.65.0","@fast-check/vitest":"0.4.1","@tabler/icons-react":"3.46.0","@vitest/coverage-v8":"4.1.10","@vitejs/plugin-react":"6.0.4","@convex-dev/migrations":"0.3.6","@mantine/notifications":"9.5.0","@convex-dev/eslint-plugin":"4.0.0","@typescript-eslint/parser":"8.65.0","eslint-plugin-react-hooks":"7.1.1","eslint-plugin-react-refresh":"0.5.3","@typescript-eslint/eslint-plugin":"8.65.0"},"peerDependencies":{"convex":"^1.43.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.3.0-alpha.1_1787775275180_0.31486360798427815","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@convex-dev/aggregate","version":"0.3.0","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.3.0","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"dowski-convex","email":"christian@convex.dev"},{"name":"reece-convex","email":"reece@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"},{"name":"sethconvex","email":"seth@convex.dev"},{"name":"andycai-convex","email":"andy@convex.dev"},{"name":"mikewheaton","email":"mike@wheaton.dev"},{"name":"jamwt","email":"jamwt@convex.dev"},{"name":"nicolapps","email":"nicolas@ettlin.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"9d22a66c07d2d2b7229ba59a6b1c82d422becca9","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.3.0.tgz","fileCount":90,"integrity":"sha512-WXLOOkcQ3nUjfXZy3/yYrBcVJz2yFA0rYrcyizbqrp2nC7NdRKDaP24+pm3fyh7JwkaCRo+nJTBTsjE89vyLZQ==","signatures":[{"sig":"MEUCIH9v+lrs7aakUs3WhGjkTRanUvIWUJ0r7bVjREp7HCvtAiEAn0na5qQ6ltvChgIexrpJsts9JQkkj6vhmdKzYlaAtA8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":597391},"type":"module","types":"./dist/client/index.d.ts","module":"./dist/client/index.js","exports":{".":{"types":"./dist/client/index.d.ts","default":"./dist/client/index.js"},"./test":"./src/test.ts","./package.json":"./package.json","./convex.config":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./convex.config.js":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./_generated/component.js":{"types":"./dist/component/_generated/component.d.ts"}},"gitHead":"f9f774828ff19186c13bd345f8b5b9aadda4affa","scripts":{"dev":"convex dev --start 'npm run dev:build'","lint":"eslint . && prettier --check .","test":"vitest run --typecheck","alpha":"npm version prerelease --preid alpha && npm publish --tag alpha && git push --follow-tags","build":"tsc --project ./tsconfig.build.json","format":"prettier --write .","predev":"convex init && npm run build:codegen","release":"npm version patch && npm publish && git push --follow-tags","version":"(npm whoami || npm login) && vim -c 'normal o' -c 'normal o## '$npm_package_version CHANGELOG.md && prettier -w CHANGELOG.md && git add CHANGELOG.md","dev:build":"chokidar 'tsconfig*.json' 'src/**/*.ts' -i '**/*.test.ts' -c 'npm run build:codegen' --initial","typecheck":"tsc --noEmit && tsc -p example && tsc -p example/convex","preversion":"npm ci && npm run build:clean && npm run test && npm run lint && npm run typecheck","test:debug":"vitest --inspect-brk --no-file-parallelism","test:watch":"vitest --typecheck --clearScreen false","build:clean":"rm -rf dist *.tsbuildinfo && npm run build:codegen","dev:frontend":"cd example && vite --clearScreen false","build:codegen":"npx convex codegen --component-dir ./src/component && npm run build","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"reece-convex","email":"reece@convex.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"11.11.0","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"convex-helpers":"0.1.122","@convex-dev/batch-worker":"0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.1.5","react":"19.2.8","convex":"1.43.0","eslint":"9.39.5","vitest":"4.1.10","globals":"17.8.0","prettier":"3.9.6","rand-seed":"3.0.0","react-dom":"19.2.8","@eslint/js":"9.39.5","pkg-pr-new":"0.0.82","type-route":"1.1.0","typescript":"6.0.3","@types/node":"20.19.43","convex-test":"0.0.55","@types/react":"19.2.17","chokidar-cli":"3.0.0","@mantine/core":"9.5.0","@xyflow/react":"12.11.2","@emotion/react":"11.14.0","@mantine/hooks":"9.5.0","@emotion/styled":"11.14.1","@edge-runtime/vm":"5.0.0","@eslint/eslintrc":"3.3.6","@mantine/emotion":"9.5.0","@types/react-dom":"19.2.3","typescript-eslint":"8.65.0","@fast-check/vitest":"0.4.1","@tabler/icons-react":"3.46.0","@vitest/coverage-v8":"4.1.10","@vitejs/plugin-react":"6.0.4","@convex-dev/migrations":"0.3.6","@mantine/notifications":"9.5.0","@convex-dev/eslint-plugin":"4.0.0","@typescript-eslint/parser":"8.65.0","eslint-plugin-react-hooks":"7.1.1","eslint-plugin-react-refresh":"0.5.3","@typescript-eslint/eslint-plugin":"8.65.0"},"peerDependencies":{"convex":"^1.43.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.3.0_1787865045677_0.8921336391325714","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@convex-dev/aggregate","version":"0.3.1","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.3.1","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"dowski-convex","email":"christian@convex.dev"},{"name":"reece-convex","email":"reece@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"},{"name":"sethconvex","email":"seth@convex.dev"},{"name":"andycai-convex","email":"andy@convex.dev"},{"name":"mikewheaton","email":"mike@wheaton.dev"},{"name":"jamwt","email":"jamwt@convex.dev"},{"name":"nicolapps","email":"nicolas@ettlin.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"c6741c5857a38aefbf798c487364aede96f6222e","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.3.1.tgz","fileCount":90,"integrity":"sha512-BYjgZjsAm+rHc3OxyZwUn+A4cl/dRbMSsHSNsdTZuwP4EXd6NV3AAIKa+tI9C4LD++I8N4fXscmiTz+manFnQA==","signatures":[{"sig":"MEYCIQC/F9tDnrOK3yF4/0n5qWuauwO3UJQtZGQQyNzPeQkg1AIhAKC45UW1RjzNy/1to8StEEo3Vi/Cgr1m9hlYfVFt0xl8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":597391},"type":"module","types":"./dist/client/index.d.ts","module":"./dist/client/index.js","exports":{".":{"types":"./dist/client/index.d.ts","default":"./dist/client/index.js"},"./test":"./src/test.ts","./package.json":"./package.json","./convex.config":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./convex.config.js":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./_generated/component.js":{"types":"./dist/component/_generated/component.d.ts"}},"gitHead":"beaa05d73e54dc259e0c0dda985f6f6b4bec2a8e","scripts":{"dev":"convex dev --start 'npm run dev:build'","lint":"eslint . && prettier --check .","test":"vitest run --typecheck","alpha":"npm version prerelease --preid alpha && npm publish --tag alpha && git push --follow-tags","build":"tsc --project ./tsconfig.build.json","format":"prettier --write .","predev":"convex init && npm run build:codegen","release":"npm version patch && npm publish && git push --follow-tags","version":"(npm whoami || npm login) && vim -c 'normal o' -c 'normal o## '$npm_package_version CHANGELOG.md && prettier -w CHANGELOG.md && git add CHANGELOG.md","dev:build":"chokidar 'tsconfig*.json' 'src/**/*.ts' -i '**/*.test.ts' -c 'npm run build:codegen' --initial","typecheck":"tsc --noEmit && tsc -p example && tsc -p example/convex","preversion":"npm ci && npm run build:clean && npm run test && npm run lint && npm run typecheck","test:debug":"vitest --inspect-brk --no-file-parallelism","test:watch":"vitest --typecheck --clearScreen false","build:clean":"rm -rf dist *.tsbuildinfo && npm run build:codegen","dev:frontend":"cd example && vite --clearScreen false","build:codegen":"npx convex codegen --component-dir ./src/component && npm run build","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"reece-convex","email":"reece@convex.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"11.11.0","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"convex-helpers":"0.1.122","@convex-dev/batch-worker":"0.3.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.1.5","react":"19.2.8","convex":"1.43.0","eslint":"9.39.5","vitest":"4.1.10","globals":"17.8.0","prettier":"3.9.6","rand-seed":"3.0.0","react-dom":"19.2.8","@eslint/js":"9.39.5","pkg-pr-new":"0.0.82","type-route":"1.1.0","typescript":"6.0.3","@types/node":"20.19.43","convex-test":"0.0.55","@types/react":"19.2.17","chokidar-cli":"3.0.0","@mantine/core":"9.5.0","@xyflow/react":"12.11.2","@emotion/react":"11.14.0","@mantine/hooks":"9.5.0","@emotion/styled":"11.14.1","@edge-runtime/vm":"5.0.0","@eslint/eslintrc":"3.3.6","@mantine/emotion":"9.5.0","@types/react-dom":"19.2.3","typescript-eslint":"8.65.0","@fast-check/vitest":"0.4.1","@tabler/icons-react":"3.46.0","@vitest/coverage-v8":"4.1.10","@vitejs/plugin-react":"6.0.4","@convex-dev/migrations":"0.3.6","@mantine/notifications":"9.5.0","@convex-dev/eslint-plugin":"4.0.0","@typescript-eslint/parser":"8.65.0","eslint-plugin-react-hooks":"7.1.1","eslint-plugin-react-refresh":"0.5.3","@typescript-eslint/eslint-plugin":"8.65.0"},"peerDependencies":{"convex":"^1.43.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.3.1_1788472054915_0.29784121210835024","host":"s3://npm-registry-packages-npm-production"}},"0.3.2-alpha.0":{"name":"@convex-dev/aggregate","version":"0.3.2-alpha.0","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.3.2-alpha.0","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"emmaling27","email":"emma@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"dowski-convex","email":"christian@convex.dev"},{"name":"reece-convex","email":"reece@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"},{"name":"sethconvex","email":"seth@convex.dev"},{"name":"andycai-convex","email":"andy@convex.dev"},{"name":"mikewheaton","email":"mike@wheaton.dev"},{"name":"jamwt","email":"jamwt@convex.dev"},{"name":"nicolapps","email":"nicolas@ettlin.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"8cd37a8e65204ee9b012ad7c6544aa320f19ecf2","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.3.2-alpha.0.tgz","fileCount":90,"integrity":"sha512-2o44qMUFLN+1Aqiu5j+gqp750aiXdMES4DOzAsWCAzOSw10OnTT010GHmP/FUD2Hags1FTufGT3E9ISgxPH/qQ==","signatures":[{"sig":"MEUCIHNiXmU2HiBiy8+LjRxIu3FWKB9/UhO8QgT69OaCvAY4AiEA9Sg3ur1PaM97typAXSFCgoVP4QCKEQ/a3yhdbM1Z+ko=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":610301},"type":"module","types":"./dist/client/index.d.ts","module":"./dist/client/index.js","exports":{".":{"types":"./dist/client/index.d.ts","default":"./dist/client/index.js"},"./test":"./src/test.ts","./package.json":"./package.json","./convex.config":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./convex.config.js":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./_generated/component.js":{"types":"./dist/component/_generated/component.d.ts"}},"gitHead":"f89efafd3d2a499707ca8d75166af8a075902343","scripts":{"dev":"convex dev --start 'npm run dev:build'","lint":"eslint . && prettier --check .","test":"vitest run --typecheck","alpha":"npm version prerelease --preid alpha && npm publish --tag alpha && git push --follow-tags","build":"tsc --project ./tsconfig.build.json","format":"prettier --write .","predev":"convex init && npm run build:codegen","release":"npm version patch && npm publish && git push --follow-tags","version":"(npm whoami || npm login) && vim -c 'normal o' -c 'normal o## '$npm_package_version CHANGELOG.md && prettier -w CHANGELOG.md && git add CHANGELOG.md","dev:build":"chokidar 'tsconfig*.json' 'src/**/*.ts' -i '**/*.test.ts' -c 'npm run build:codegen' --initial","typecheck":"tsc --noEmit && tsc -p example && tsc -p example/convex","preversion":"npm ci && npm run build:clean && npm run test && npm run lint && npm run typecheck","test:debug":"vitest --inspect-brk --no-file-parallelism","test:watch":"vitest --typecheck --clearScreen false","build:clean":"rm -rf dist *.tsbuildinfo && npm run build:codegen","dev:frontend":"cd example && vite --clearScreen false","build:codegen":"npx convex codegen --component-dir ./src/component && npm run build","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"reece-convex","email":"reece@convex.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"11.11.0","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"convex-helpers":"0.1.122","@convex-dev/batch-worker":"0.3.3"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"8.1.5","react":"19.2.8","convex":"1.43.0","eslint":"9.39.5","vitest":"4.1.10","globals":"17.8.0","prettier":"3.9.6","rand-seed":"3.0.0","react-dom":"19.2.8","@eslint/js":"9.39.5","pkg-pr-new":"0.0.82","type-route":"1.1.0","typescript":"6.0.3","@types/node":"20.19.43","convex-test":"0.0.55","@types/react":"19.2.17","chokidar-cli":"3.0.0","@mantine/core":"9.5.0","@xyflow/react":"12.11.2","@emotion/react":"11.14.0","@mantine/hooks":"9.5.0","@emotion/styled":"11.14.1","@edge-runtime/vm":"5.0.0","@eslint/eslintrc":"3.3.6","@mantine/emotion":"9.5.0","@types/react-dom":"19.2.3","typescript-eslint":"8.65.0","@fast-check/vitest":"0.4.1","@tabler/icons-react":"3.46.0","@vitest/coverage-v8":"4.1.10","@vitejs/plugin-react":"6.0.4","@convex-dev/migrations":"0.3.6","@mantine/notifications":"9.5.0","@convex-dev/eslint-plugin":"4.0.0","@typescript-eslint/parser":"8.65.0","eslint-plugin-react-hooks":"7.1.1","eslint-plugin-react-refresh":"0.5.3","@typescript-eslint/eslint-plugin":"8.65.0"},"peerDependencies":{"convex":"^1.43.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.3.2-alpha.0_1788906831058_0.7962577509548794","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@convex-dev/aggregate","version":"0.3.2","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.3.2","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"dowski-convex","email":"christian@convex.dev"},{"name":"reece-convex","email":"reece@convex.dev"},{"name":"timdoug-convex","email":"timdoug@convex.dev"},{"name":"ayushdewanconvex","email":"ayush@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"},{"name":"sethconvex","email":"seth@convex.dev"},{"name":"andycai-convex","email":"andy@convex.dev"},{"name":"jamwt","email":"jamwt@convex.dev"},{"name":"nicolapps","email":"nicolas@ettlin.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"9ee53729f14ca635b36ac26126621be7d01b4576","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.3.2.tgz","fileCount":90,"integrity":"sha512-bGsUgfvHzTnoCcrxaoPw4llx/0891O/rrBs0w/91UlKasbGh0BCrjfIN6OhjkP9orKk2jfXbpRMHlKizlQXeWA==","signatures":[{"sig":"MEQCIAuwKZGiiZxt6h2KVmkwIcMRnOVl4AEBIuNAaCkbKyv7AiB/H13E7NGjyMzxD+qdL+a5SrWR144kT+fuZWHQ/Rpo9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEmOTfH5z/5J1F/BwM9jm7EveSQEeBwN5QWTlfoW/sq3AiAuuR8qU8rqi9G0UGUAxDUugFMlDjanSB/ofGO9jqnjwQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":599138},"type":"module","types":"./dist/client/index.d.ts","module":"./dist/client/index.js","exports":{".":{"types":"./dist/client/index.d.ts","default":"./dist/client/index.js"},"./test":"./src/test.ts","./package.json":"./package.json","./convex.config":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./convex.config.js":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./_generated/component.js":{"types":"./dist/component/_generated/component.d.ts"}},"gitHead":"da878bc71f8bc55bdb82cdad796c15d3fbc6f0b3","scripts":{"dev":"convex dev --start 'npm run dev:build'","lint":"eslint . && prettier --check .","test":"vitest run --typecheck","alpha":"npm version prerelease --preid alpha && npm publish --tag alpha && git push --follow-tags","build":"tsc --project ./tsconfig.build.json","format":"prettier --write .","predev":"convex init && npm run build:codegen","release":"npm version patch && npm publish && git push --follow-tags","version":"(npm whoami || npm login) && vim -c 'normal o' -c 'normal o## '$npm_package_version CHANGELOG.md && prettier -w CHANGELOG.md && git add CHANGELOG.md","dev:build":"chokidar 'tsconfig*.json' 'src/**/*.ts' -i '**/*.test.ts' -c 'npm run build:codegen' --initial","typecheck":"tsc --noEmit && tsc -p example && tsc -p example/convex","preversion":"npm ci && npm run build:clean && npm run test && npm run lint && npm run typecheck","test:debug":"vitest --inspect-brk --no-file-parallelism","test:watch":"vitest --typecheck --clearScreen false","build:clean":"rm -rf dist *.tsbuildinfo && npm run build:codegen","dev:frontend":"cd example && vite --clearScreen false","build:codegen":"npx convex codegen --component-dir ./src/component && npm run build","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"ianatconvex","email":"ian@convex.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"11.11.0","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"convex-helpers":"0.1.122","@convex-dev/batch-worker":"0.3.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.1.5","react":"19.2.8","convex":"1.43.0","eslint":"9.39.5","vitest":"4.1.10","globals":"17.8.0","prettier":"3.9.6","rand-seed":"3.0.0","react-dom":"19.2.8","@eslint/js":"9.39.5","pkg-pr-new":"0.0.82","type-route":"1.1.0","typescript":"6.0.3","@types/node":"22.20.1","convex-test":"0.0.55","@types/react":"19.2.17","chokidar-cli":"3.0.0","@mantine/core":"9.5.0","@xyflow/react":"12.11.2","@emotion/react":"11.14.0","@mantine/hooks":"9.5.0","@emotion/styled":"11.14.1","@edge-runtime/vm":"5.0.0","@eslint/eslintrc":"3.3.6","@mantine/emotion":"9.5.0","@types/react-dom":"19.2.3","typescript-eslint":"8.65.0","@fast-check/vitest":"0.4.1","@tabler/icons-react":"3.46.0","@vitest/coverage-v8":"4.1.10","@vitejs/plugin-react":"6.0.4","@convex-dev/migrations":"0.3.6","@mantine/notifications":"9.5.0","@convex-dev/eslint-plugin":"5.0.0","@typescript-eslint/parser":"8.65.0","eslint-plugin-react-hooks":"7.1.1","eslint-plugin-react-refresh":"0.5.3","@typescript-eslint/eslint-plugin":"8.65.0"},"peerDependencies":{"convex":"^1.43.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.3.2_1791593207741_0.49881394855497185","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@convex-dev/aggregate","version":"0.3.3","keywords":["convex","component","aggregate","count","sum"],"license":"Apache-2.0","_id":"@convex-dev/aggregate@0.3.3","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"dowski-convex","email":"christian@convex.dev"},{"name":"reece-convex","email":"reece@convex.dev"},{"name":"timdoug-convex","email":"timdoug@convex.dev"},{"name":"ayushdewanconvex","email":"ayush@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"},{"name":"sethconvex","email":"seth@convex.dev"},{"name":"andycai-convex","email":"andy@convex.dev"},{"name":"jamwt","email":"jamwt@convex.dev"},{"name":"nicolapps","email":"nicolas@ettlin.dev"}],"homepage":"https://github.com/get-convex/aggregate","bugs":{"url":"https://github.com/get-convex/aggregate/issues"},"dist":{"shasum":"4a89acfa38a10fa919ae2e75641cb179c6cdd0ab","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.3.3.tgz","fileCount":90,"integrity":"sha512-jY5nrgX/pAp4XeC5uNgwejq4XBWL1P5m5rJvkgRny9fZcpKhAe4mWUICPjBNBcsFwXlfICjMJrr1GJjn3iNJWw==","signatures":[{"sig":"MEUCIQDC8eu6j3VYC0LQ12oCrHgrVjq4jcZUf44p3leMU0FiUgIgPF1QHbDTft7744TT7flVhEoi2RPoU2D132xpocr1RV0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCGc4BMqaJL8O4eoCUlOD8/zFBJYGXE7nbCw8oL85hzeQIhAL1XJr2GpEJsPa4R4fFJJgkIk/CX4JtGiMXVY7mdUC+7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":599926},"type":"module","types":"./dist/client/index.d.ts","module":"./dist/client/index.js","exports":{".":{"types":"./dist/client/index.d.ts","default":"./dist/client/index.js"},"./test":"./src/test.ts","./package.json":"./package.json","./convex.config":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./convex.config.js":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./_generated/component.js":{"types":"./dist/component/_generated/component.d.ts"}},"gitHead":"5a72b010210abd3053eb373e8b4077d894115347","scripts":{"dev":"convex dev --start 'npm run dev:build'","lint":"eslint . && prettier --check .","test":"vitest run --typecheck","alpha":"npm version prerelease --preid alpha && npm publish --tag alpha && git push --follow-tags","build":"tsc --project ./tsconfig.build.json","format":"prettier --write .","predev":"convex init && npm run build:codegen","release":"npm version patch && npm publish && git push --follow-tags","version":"(npm whoami || npm login) && vim -c 'normal o' -c 'normal o## '$npm_package_version CHANGELOG.md && prettier -w CHANGELOG.md && git add CHANGELOG.md","dev:build":"chokidar 'tsconfig*.json' 'src/**/*.ts' -i '**/*.test.ts' -c 'npm run build:codegen' --initial","typecheck":"tsc --noEmit && tsc -p example && tsc -p example/convex","preversion":"npm ci && npm run build:clean && npm run test && npm run lint && npm run typecheck","test:debug":"vitest --inspect-brk --no-file-parallelism","test:watch":"vitest --typecheck --clearScreen false","build:clean":"rm -rf dist *.tsbuildinfo && npm run build:codegen","dev:frontend":"cd example && vite --clearScreen false","build:codegen":"npx convex codegen --component-dir ./src/component && npm run build","test:coverage":"vitest run --coverage --coverage.reporter=text"},"_npmUser":{"name":"nicolapps","email":"nicolas@ettlin.dev"},"repository":{"url":"git+https://github.com/get-convex/aggregate.git","type":"git"},"_npmVersion":"11.11.0","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"convex-helpers":"0.1.128","@convex-dev/batch-worker":"0.3.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.1.5","react":"19.2.8","convex":"1.46.0","eslint":"9.39.5","vitest":"4.1.10","globals":"17.8.0","prettier":"3.9.6","rand-seed":"3.0.0","react-dom":"19.2.8","@eslint/js":"9.39.5","pkg-pr-new":"0.0.82","type-route":"1.1.0","typescript":"6.0.3","@types/node":"22.20.1","convex-test":"0.0.62","@types/react":"19.2.17","chokidar-cli":"3.0.0","@mantine/core":"9.5.0","@xyflow/react":"12.11.2","@emotion/react":"11.14.0","@mantine/hooks":"9.5.0","@emotion/styled":"11.14.1","@edge-runtime/vm":"5.0.0","@eslint/eslintrc":"3.3.6","@mantine/emotion":"9.5.0","@types/react-dom":"19.2.3","typescript-eslint":"8.65.0","@fast-check/vitest":"0.4.1","@tabler/icons-react":"3.46.0","@vitest/coverage-v8":"4.1.10","@vitejs/plugin-react":"6.0.4","@convex-dev/migrations":"0.3.6","@mantine/notifications":"9.5.0","@convex-dev/eslint-plugin":"5.0.0","@typescript-eslint/parser":"8.65.0","eslint-plugin-react-hooks":"7.1.1","eslint-plugin-react-refresh":"0.5.3","@typescript-eslint/eslint-plugin":"8.65.0"},"peerDependencies":{"convex":"^1.43.0"},"_npmOperationalInternal":{"tmp":"tmp/aggregate_0.3.3_1792107684071_0.05235912638372442","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"_id":"@convex-dev/aggregate@0.3.4","bugs":{"url":"https://github.com/convex/aggregate/issues"},"dist":{"shasum":"4c65ca07f2879b69273e1093a32b24f28320ef91","tarball":"https://registry.npmjs.org/@convex-dev/aggregate/-/aggregate-0.3.4.tgz","fileCount":90,"integrity":"sha512-w60E4fLuysza8sBIQsLlYFxnzMB7ed8yqYpu/JfDhkUYvnnvW3CzLEf74zCwb/RfLrR6u5a/0pfvVtIp4XNIoA==","signatures":[{"sig":"MEYCIQCcDwzz/dR+RPeC8zMTV2QP7gagBzYQyzplMtgfr2J4aQIhAN4r2A+OhFfq8h/YEiEMtfurVFuW+2XLvPwCQ0Op878i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBYIxjqE1fO2Eu+n3ypdzTc4Bvrb+gHB1Zf98dZi8Oa/AiEAuDTexI1DMAnJD+FMKBxekNYFKjG/k+hvKnJmyB7kFhw="}],"unpackedSize":610771},"name":"@convex-dev/aggregate","type":"module","types":"./dist/client/index.d.ts","module":"./dist/client/index.js","exports":{".":{"types":"./dist/client/index.d.ts","default":"./dist/client/index.js"},"./test":"./src/test.ts","./package.json":"./package.json","./convex.config":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./convex.config.js":{"types":"./dist/component/convex.config.d.ts","default":"./dist/component/convex.config.js"},"./_generated/component.js":{"types":"./dist/component/_generated/component.d.ts"}},"gitHead":"93874650281ad758b842e76d3f0c7e0a54a3c1f3","license":"Apache-2.0","scripts":{"dev":"convex dev --start 'npm run dev:build'","lint":"eslint . && prettier --check .","test":"vitest run --typecheck","alpha":"npm version prerelease --preid alpha && npm publish --tag alpha && git push --follow-tags","build":"tsc --project ./tsconfig.build.json","format":"prettier --write .","predev":"convex init && npm run build:codegen","release":"npm version patch && npm publish && git push --follow-tags","version":"(npm whoami || npm login) && vim -c 'normal o' -c 'normal o## '$npm_package_version CHANGELOG.md && prettier -w CHANGELOG.md && git add CHANGELOG.md","dev:build":"chokidar 'tsconfig*.json' 'src/**/*.ts' -i '**/*.test.ts' -c 'npm run build:codegen' --initial","typecheck":"tsc --noEmit && tsc -p example && tsc -p example/convex","preversion":"npm ci && npm run build:clean && npm run test && npm run lint && npm run typecheck","test:debug":"vitest --inspect-brk --no-file-parallelism","test:watch":"vitest --typecheck --clearScreen false","build:clean":"rm -rf dist *.tsbuildinfo && npm run build:codegen","dev:frontend":"cd example && vite --clearScreen false","build:codegen":"npx convex codegen --component-dir ./src/component && npm run build","test:coverage":"vitest run --coverage --coverage.reporter=text"},"version":"0.3.4","_npmUser":{"name":"reece-convex","email":"reece@convex.dev"},"homepage":"https://github.com/convex/aggregate","keywords":["convex","component","aggregate","count","sum"],"repository":{"url":"git+https://github.com/convex/aggregate.git","type":"git"},"_npmVersion":"11.11.0","description":"Convex component to calculate counts and sums of values for efficient aggregation.","directories":{},"maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"dowski-convex","email":"christian@convex.dev"},{"name":"reece-convex","email":"reece@convex.dev"},{"name":"timdoug-convex","email":"timdoug@convex.dev"},{"name":"ayushdewanconvex","email":"ayush@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"},{"name":"sethconvex","email":"seth@convex.dev"},{"name":"andycai-convex","email":"andy@convex.dev"},{"name":"jamwt","email":"jamwt@convex.dev"},{"name":"nicolapps","email":"nicolas@ettlin.dev"}],"_nodeVersion":"22.22.2","dependencies":{"convex-helpers":"0.1.128","@convex-dev/batch-worker":"0.3.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"8.1.5","react":"19.2.8","convex":"1.46.0","eslint":"9.39.5","vitest":"4.1.10","globals":"17.8.0","prettier":"3.9.6","rand-seed":"3.0.0","react-dom":"19.2.8","@eslint/js":"9.39.5","pkg-pr-new":"0.0.82","type-route":"1.1.0","typescript":"6.0.3","@types/node":"22.20.1","convex-test":"0.0.62","@types/react":"19.2.17","chokidar-cli":"3.0.0","@mantine/core":"9.5.0","@xyflow/react":"12.11.2","@emotion/react":"11.14.0","@mantine/hooks":"9.5.0","@emotion/styled":"11.14.1","@edge-runtime/vm":"5.0.0","@eslint/eslintrc":"3.3.6","@mantine/emotion":"9.5.0","@types/react-dom":"19.2.3","typescript-eslint":"8.65.0","@fast-check/vitest":"0.4.1","@tabler/icons-react":"3.46.0","@vitest/coverage-v8":"4.1.10","@vitejs/plugin-react":"6.0.4","@convex-dev/migrations":"0.3.6","@mantine/notifications":"9.5.0","@convex-dev/eslint-plugin":"5.0.0","@typescript-eslint/parser":"8.65.0","eslint-plugin-react-hooks":"7.1.1","eslint-plugin-react-refresh":"0.5.3","@typescript-eslint/eslint-plugin":"8.65.0"},"peerDependencies":{"convex":"^1.43.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/aggregate_0.3.4_1792621417866_0.04079198539142315"}}},"time":{"created":"2024-09-20T23:01:52.961Z","modified":"2026-10-21T22:23:39.001Z","0.1.1":"2024-09-20T23:01:53.162Z","0.1.2":"2024-09-20T23:32:26.231Z","0.1.4":"2024-09-24T01:28:09.077Z","0.1.5":"2024-09-24T03:24:19.353Z","0.1.6":"2024-09-24T03:48:40.418Z","0.1.7":"2024-09-26T18:43:00.699Z","0.1.8":"2024-09-28T02:36:05.666Z","0.1.9":"2024-09-28T04:21:39.975Z","0.1.10":"2024-09-28T16:42:13.183Z","0.1.11":"2024-10-03T14:07:52.654Z","0.1.12":"2024-10-07T18:18:43.749Z","0.1.13":"2024-10-07T18:23:17.386Z","0.1.14":"2024-10-13T21:45:33.502Z","0.1.15":"2024-10-17T19:03:27.410Z","0.1.16-alpha.0":"2024-11-04T07:06:30.515Z","0.1.16-alpha.1":"2024-11-04T07:25:49.958Z","0.1.16":"2024-11-04T07:27:31.826Z","0.1.17":"2024-11-25T23:07:08.587Z","0.1.18":"2024-12-02T06:27:41.875Z","0.1.19":"2025-01-14T17:47:51.109Z","0.1.20":"2025-02-05T20:29:09.024Z","0.1.21":"2025-05-30T23:26:18.915Z","0.1.22":"2025-08-05T05:24:04.026Z","0.1.23-alpha.0":"2025-08-19T00:55:51.268Z","0.1.23":"2025-08-20T00:59:19.627Z","0.1.24-alpha.0":"2025-09-03T20:12:21.010Z","0.1.24":"2025-09-16T21:40:03.474Z","0.1.25":"2025-10-06T17:30:20.760Z","0.2.0":"2025-11-13T03:15:36.516Z","0.2.1":"2026-01-09T02:31:42.152Z","0.2.2-alpha.0":"2026-01-09T03:29:48.944Z","0.2.2":"2026-06-25T00:10:16.549Z","0.3.0-alpha.0":"2026-08-18T21:53:44.255Z","0.3.0-alpha.1":"2026-08-26T20:14:35.343Z","0.3.0":"2026-08-27T21:10:45.827Z","0.3.1":"2026-09-03T21:47:35.056Z","0.3.2-alpha.0":"2026-09-08T22:33:51.248Z","0.3.2":"2026-10-10T00:46:47.832Z","0.3.3":"2026-10-15T23:41:24.177Z","0.3.4":"2026-10-21T22:23:38.003Z"},"bugs":{"url":"https://github.com/convex/aggregate/issues"},"license":"Apache-2.0","homepage":"https://github.com/convex/aggregate","keywords":["convex","component","aggregate","count","sum"],"repository":{"url":"git+https://github.com/convex/aggregate.git","type":"git"},"description":"Convex component to calculate counts and sums of values for efficient aggregation.","maintainers":[{"name":"cowling","email":"james@convex.dev"},{"name":"jordanhunt","email":"jordan@convex.dev"},{"name":"gautamg795","email":"gautam@convex.dev"},{"name":"nipunn","email":"nipunn1313@gmail.com"},{"name":"aritrakh","email":"aritrakh@gmail.com"},{"name":"ianatconvex","email":"ian@convex.dev"},{"name":"dowski-convex","email":"christian@convex.dev"},{"name":"reece-convex","email":"reece@convex.dev"},{"name":"timdoug-convex","email":"timdoug@convex.dev"},{"name":"ayushdewanconvex","email":"ayush@convex.dev"},{"name":"erquhart","email":"shawn@erquh.art"},{"name":"sethconvex","email":"seth@convex.dev"},{"name":"andycai-convex","email":"andy@convex.dev"},{"name":"jamwt","email":"jamwt@convex.dev"},{"name":"nicolapps","email":"nicolas@ettlin.dev"}],"readme":"# Convex Component: Aggregate\n\n[![npm version](https://img.shields.io/npm/v/@convex-dev/aggregate.svg)](https://www.npmjs.com/package/@convex-dev/aggregate)\n\n<!-- START: Include on https://convex.dev/components -->\n\nThis Convex component calculates count and sums of values for efficient\naggregation.\n\n[![Efficient COUNT, SUM, MAX with the Aggregate Component](https://thumbs.video-to-markdown.com/9c06ce06.jpg)](https://youtu.be/YD3nW_PtHWA)\n\nSuppose you have a leaderboard of game scores. These are some operations that\nthe Aggregate component makes easy and efficient:\n\n1. Count the total number of scores: `aggregate.count(ctx)`\n2. Count the number of scores greater than 65:\n   `aggregate.count(ctx, { bounds: { lower: { key: 65, inclusive: false } } })`\n3. Find the p95 score:\n   `aggregate.at(ctx, Math.floor(aggregate.count(ctx) * 0.95))`\n4. Find the overall average score: `aggregate.sum(ctx) / aggregate.count(ctx)`\n5. Find the ranking for a score of 65 in the leaderboard:\n   `aggregate.indexOf(ctx, 65)`\n6. Find the average score for an individual user. You can define another\n   aggregate grouped by user and aggregate within each:\n\n```ts\n// aggregateScoreByUser is the leaderboard scores grouped by username.\nconst bounds = { prefix: [username] };\nconst highScoreForUser = await aggregateScoreByUser.max(ctx, { bounds });\nconst avgScoreForUser =\n  (await aggregateScoreByUser.sum(ctx, { bounds })) /\n  (await aggregateScoreByUser.count(ctx, { bounds }));\n// It still enables adding or averaging all scores across all usernames.\nconst globalAverageScore =\n  (await aggregateScoreByUser.sum(ctx)) /\n  (await aggregateScoreByUser.count(ctx));\n```\n\n7. Alternatively, you can define an aggregate with separate namespaces, and do\n   the same query. This method increases throughput because a user's data won't\n   interfere with other users. However, you lose the ability to aggregate over\n   all users.\n\n```ts\nconst forUser = { namespace: username };\nconst highScoreForUser = await aggregateScoreByUser.max(ctx, forUser);\nconst avgScoreForUser =\n  (await aggregateScoreByUser.sum(ctx, forUser)) /\n  (await aggregateScoreByUser.count(ctx, forUser));\n```\n\nThe Aggregate component provides `O(log(n))`-time lookups, instead of the `O(n)`\nthat would result from naive usage of `.collect()` in Convex or `COUNT(*)` in\nMySQL or Postgres.\n\n## Examples\n\n## What are Aggregates for?\n\nWith plain Convex indexes, you can insert new documents and you can paginate\nthrough all documents. But sometimes you want big-picture data that encompases\nmany of your individual data points, without having to fetch them all. That's\nwhere aggregates come in.\n\nThe Aggregates component keeps a data structure with denormalized counts and\nsums. It's effectively a key-value store which is sorted by the key, and where\nyou can count values and number of keys that lie between two keys.\n\nThe keys may be arbitrary Convex values, so you can choose to sort your data by:\n\n1. A number, like a leaderboard score\n2. A string, like user ids -- so you can count the data owned by each user\n3. An [index key](https://stack.convex.dev/pagination#whats-an-index-key)\n4. Nothing, use `key=null` for everything if you just want\n   [a total count, such as for random access](#total-count-and-randomization).\n\n### Grouping\n\nYou can use sorting to group your data set.\n\nIf you want to keep track of multiple games with scores for each user, use a\ntuple of `[game, username, score]` as the key. Then you can bound your queries\nwith a prefix of the key:\n\n1. `aggregateByGame.count(ctx, { prefix: [game] })` counts how many times a\n   given game has been played\n2. `aggregateByGame.count(ctx, { prefix: [game, username] })` counts how many\n   times a given user has played a given game.\n3. `aggregateByGame.max(ctx, { prefix: [game, username] })` returns the high\n   score for a given user in a given game.\n\nPay attention to the sort order when aggregating. While\n`aggregateByGame.max(ctx, { prefix: [game] })` looks like it might give the\nhighest score for a game, it actually gives the user with the highest username\nwho has played that game (like \"Zach\"). To get the highest score for a game, you\nwould need to aggregate with key `[game, score]`.\n\nTo support different sorting and partitioning keys, you can define multiple\ninstances. See [below](#defining-multiple-aggregates) for details.\n\nIf you separate your data via the `sortKey` and `prefix` bounds, you can look at\nyour data from any altitude. You can do a global `count` to see how many total\ndata points there are, or you can zero in on an individual group of the data.\n\nHowever, there's a tradeoff: nearby data points can interfere with each other in\nthe internal data structure, reducing throughput. See\n[below](#read-dependencies-and-writes) for more details. To avoid interference,\nyou can use Namespaces.\n\n### Namespacing\n\nIf your data is separated into distinct partitions, and you don't need to\naggregate between partitions, then you can put each partition into its own\nnamespace. Each namespace gets its own internal data structure.\n\nIf your app has multiple games, it's not useful to aggregate scores across\ndifferent games. The scoring system for chess isn't related to the scoring\nsystem for football. So we can namespace our scores based on the game.\n\nWhenever we aggregate scores, we _must_ specify the namespace. On the other\nhand, the internal aggregation data structure can keep the scores separate and\nkeep throughput high.\n\nHere's how you would create the aggregate we just described:\n\n```ts\nconst leaderboardByGame = new TableAggregate<{\n  Namespace: Id<\"games\">;\n  Key: number;\n  DataModel: DataModel;\n  TableName: \"scores\";\n}>(components.leaderboardByGame, {\n  namespace: (doc) => doc.gameId,\n  sortKey: (doc) => doc.score,\n});\n```\n\nAnd whenever you use this aggregate, you specify the namespace.\n\n```ts\nconst footballHighScore = await leaderboardByGame.max(ctx, {\n  namespace: footballId,\n});\n```\n\nSee an example of a namespaced aggregate in\n[example/convex/photos.ts](./example/convex/photos.ts).\n\n### More examples\n\nThe Aggregate component can efficiently calculate all of these:\n\n- In a messaging app, how many messages have been sent within the past month?\n- [Offset-based pagination](#offset-based-pagination): view the 14th page of\n  photos, where each page has 50 photos.\n- [Random access](#total-count-and-randomization): Look up a random song in a\n  playlist, as the next song to play.\n\nTry it out: https://aggregate-component-example.netlify.app/\n\n## Pre-requisite: Convex\n\nYou'll need an existing Convex project to use the component. Convex is a hosted\nbackend platform, including a database, serverless functions, and a ton more you\ncan learn about [here](https://docs.convex.dev/get-started).\n\nRun `npm create convex` or follow any of the\n[quickstarts](https://docs.convex.dev/home) to set one up.\n\n## Installation\n\nSee [`example/`](./example/convex/) for a working demo.\n\n1. Install the Aggregate component:\n\n```bash\nnpm install @convex-dev/aggregate\n```\n\n2. Create a [`convex.config.ts`](./example/convex/convex.config.ts) file in your\n   app's `convex/` folder and install the component by calling `use`:\n\n```ts\n// convex/convex.config.ts\nimport { defineApp } from \"convex/server\";\nimport aggregate from \"@convex-dev/aggregate/convex.config.js\";\n\nconst app = defineApp();\napp.use(aggregate);\nexport default app;\n```\n\n### Defining multiple aggregates\n\nYou can aggregate multiple tables, multiple sort keys, or multiple values, but\nyou need to make an instance of the aggregate component for each.\n\nYou do this by using the `aggregate` component multiple times, giving each usage\nits own name.\n\n```ts\napp.use(aggregate, { name: \"aggregateScores\" });\napp.use(aggregate, { name: \"aggregateByGame\" });\n```\n\nYou then use the named aggregate when initializing the `TableAggregate` as we'll\nsee below, using `components.aggregateScores` instead of `components.aggregate`.\n\n## Usage\n\n### Write to the aggregate data structure\n\nUsually you want to aggregate data in a Convex table. If you're aggregating data\nthat's not in a table, you can use the\n[lower-level API](#aggregate-without-a-table).\n\nFor table-based data, you can use the `TableAggregate` to define how table data\nwill be sorted and summed in the aggregate component.\n\n```ts\nimport { components } from \"./_generated/api\";\nimport { DataModel } from \"./_generated/dataModel\";\nimport { mutation as rawMutation } from \"./_generated/server\";\nimport { TableAggregate } from \"@convex-dev/aggregate\";\n\nconst aggregate = new TableAggregate<{\n  Key: number;\n  DataModel: DataModel;\n  TableName: \"mytable\";\n}>(components.aggregate, {\n  sortKey: (doc) => doc._creationTime, // Allows querying across time ranges.\n  sumValue: (doc) => doc.value, // The value to be used in `.sum` calculations.\n});\n```\n\nPick your key as described [above](#what-are-aggregates-for). For example,\nhere's how you might define `aggregateByGame`, as an aggregate on the \"scores\"\ntable:\n\n```ts\nconst aggregateByGame = new TableAggregate<{\n  Namespace: Id<\"games\">;\n  Key: [string, number];\n  DataModel: DataModel;\n  TableName: \"leaderboard\";\n}>(components.aggregateByGame, {\n  namespace: (doc) => doc.gameId,\n  sortKey: (doc) => [doc.username, doc.score],\n});\n```\n\nWhen the table changes, you should update the aggregate as well, in the same\nmutation.\n\n```ts\n// When you insert into the table, call `aggregate.insert`\nconst id = await ctx.db.insert(\"mytable\", { foo, bar });\nconst doc = await ctx.db.get(id);\nawait aggregate.insert(ctx, doc!);\n\n// If you update a document, use `aggregate.replace`\nconst oldDoc = await ctx.db.get(id);\nawait ctx.db.patch(id, { foo });\nconst newDoc = await ctx.db.get(id);\nawait aggregate.replace(ctx, oldDoc!, newDoc!);\n\n// And if you delete a document, use `aggregate.delete`\nconst oldDoc = await ctx.db.get(id);\nawait ctx.db.delete(id);\nawait aggregate.delete(ctx, oldDoc!);\n```\n\nIt's important that _every_ modification to the table also updates the\nassociated aggregate. See\n[tips](#automatically-update-aggregate-when-table-changes) below.\n\nNote that\n[Convex mutations are atomic](https://docs.convex.dev/functions/mutation-functions#transactions),\nso you don't need to worry about race conditions where the document is written\nbut the aggregate isn't, and you don't need to worry about a query reading a\ndocument that isn't in the aggregate yet.\n\nIf the table already has data before attaching the aggregate,\n[run a migration to backfill](#attach-aggregate-to-an-existing-table).\n\n### Calculate aggregates\n\nNow that your Aggregate component has all of the data from your table, you can\ncall any of the methods on your instance to aggregate data.\n\n```ts\n// convex/myfunctions.ts\n// then in your queries and mutations you can do\nconst tableCount = await aggregateByGame.count(ctx);\n// or any of the other examples listed above.\n```\n\nSee more examples in\n[`example/convex/leaderboard.ts`](example/convex/leaderboard.ts), and see the\ndocstrings on [the Aggregate class](src/client/index.ts).\n\n## Example use-cases\n\nTo run the examples:\n\n1. Clone this repo.\n2. `npm i && cd aggregate/example && npm i`\n3. `npm run dev` and create a new project\n4. The dashboard should open and you can run functions like\n   `leaderboard:addScore` and `leaderboard:userAverageScore`.\n\nOr play with them online at: https://aggregate-component-example.netlify.app/\n\n### Total Count and Randomization\n\nIf you don't need the ordering, partitioning, or summing behavior of\n`TableAggregate`, you can set `namespace: undefined` and `sortKey: null`.\n\n```ts\nconst randomize = new TableAggregate<{\n  Key: null;\n  DataModel: DataModel;\n  TableName: \"mytable\";\n}>(components.aggregate, { sortKey: (doc) => null });\n```\n\nWithout sorting, all documents are ordered by their `_id` which is generally\nrandom. And you can look up the document at any index to find one at random or\nshuffle the whole table.\n\nSee more examples in [`example/convex/shuffle.ts`](example/convex/shuffle.ts),\nincluding a paginated random shuffle of some music.\n\n### Offset-based pagination\n\nConvex supports infinite-scroll pagination which is\n[reactive](https://stack.convex.dev/fully-reactive-pagination) so you never have\nto worry about items going missing from your list. But sometimes you want to\ndisplay separate pages of results on separate pages of your app.\n\nFor this example, imagine you have a table of photo albums.\n\n```ts\n// convex/schema.ts\ndefineSchema({\n  photos: defineTable({ album: v.string(), url: v.string() }).index(\n    \"by_album_creation_time\",\n    [\"album\"],\n  ),\n});\n```\n\nAnd an aggregate defined with key as `_creationTime` and namespace as `album`.\n\n```ts\n// convex/convex.config.ts\napp.use(aggregate, { name: \"photos\" });\n\n// convex/photos.ts\nconst photos = new TableAggregate<{\n  Namespace: string; // album name\n  Key: number; // creation time\n  DataModel: DataModel;\n  TableName: \"photos\";\n}>(components.photos, {\n  namespace: (doc) => doc.album,\n  sortKey: (doc) => doc._creationTime,\n});\n```\n\nYou can pick a page size and jump to any page once you have `TableAggregate` to\nmap from offset to an index key.\n\nIn this example, if `offset` is 100 and `numItems` is 10, we get the hundredth\n`_creationTime` (in ascending order) and starting there we get the next ten\ndocuments. In this way we can paginate through the whole photo album.\n\n```ts\nexport const pageOfPhotos({\n  args: { offset: v.number(), numItems: v.number(), album: v.string() },\n  handler: async (ctx, { offset, numItems, album }) => {\n    const { key } = await photos.at(ctx, offset, { namespace: album });\n    return await ctx.db.query(\"photos\")\n      .withIndex(\"by_album_creation_time\", q=>q.eq(\"album\", album).gte(\"_creationTime\", key))\n      .take(numItems);\n  },\n});\n```\n\nSee the full example in [`example/convex/photos.ts`](example/convex/photos.ts).\n\n### Aggregate without a table\n\nOften you're aggregating over a table of data, but sometimes you want to\naggregate data that isn't stored anywhere else. For that, you can use the\n`DirectAggregate` interface, which is like `TableAggregate` except you handle\ninsert, delete, and replace operations yourself.\n\n```ts\nimport { components } from \"./_generated/api\";\nimport { DataModel } from \"./_generated/dataModel\";\nimport { DirectAggregate } from \"@convex-dev/aggregate\";\n// Note the `id` should be unique to be a tie-breaker in case two data points\n// have the same key.\nconst aggregate = new DirectAggregate<{ Key: number; Id: string }>(\n  components.aggregate,\n);\n\n// within a mutation, add values to be aggregated\nawait aggregate.insert(ctx, { key, id });\n// if you want to use `.sum` to aggregate sums of values, insert with a sumValue\nawait aggregate.insert(ctx, { key, id, sumValue });\n// or delete values that were previously added\nawait aggregate.delete(ctx, { key, id });\n// or update values\nawait aggregate.replace(ctx, { key: oldKey, id }, { key: newKey });\n```\n\nSee [`example/convex/stats.ts`](example/convex/stats.ts) for an example.\n\n## Operations\n\nYou've set up your aggregate. Now let's see how to backfill it to account for\nexisting data, keep the data in sync with mutations, or repair it when the data\ngets out of sync.\n\n### Attach Aggregate to an existing table\n\nAdding aggregation to an existing table requires a\n[migration](https://stack.convex.dev/intro-to-migrations). There are several\nways to perform migrations, but here's an overview of one way:\n\n1. Use `insertIfDoesNotExist`/`replaceOrInsert`/`deleteIfExists` in place of\n   `insert`/`replace`/`delete` (or `idempotentTrigger` in place of `trigger`) to\n   update items in the aggregate. These methods act the same, except they work\n   even if the aggregate component isn't in sync with the table.\n2. Deploy this code change, so the live path writing documents also write to the\n   aggregate component.\n3. Use a paginated background\n   [migration](https://www.npmjs.com/package/@convex-dev/migrations) to walk all\n   existing data and call `insertIfDoesNotExist`. In the example, you would run\n   `runAggregateBackfill` in [leaderboard.ts](example/convex/leaderboard.ts).\n4. Now all of the data is represented in the `Aggregate`, you can start calling\n   read methods like `aggregate.count(ctx)` and you can change the write methods\n   back (`insertIfDoesNotExist` -> `insert` etc.).\n\n### Automatically update aggregate when table changes\n\nIt's important that _every_ modification to the table also updates the\nassociated aggregate. If they get out of sync then computed aggregates might be\nincorrect. Then you might have to [fix them](#repair-incorrect-aggregates).\n\nThere are three ways to go about keeping data in sync:\n\n1. Be careful to always update the `aggregate` in any mutation that updates the\n   source-of-truth table.\n2. \\[Recommended\\] Place all writes to a table in separate TypeScript functions,\n   and always call these functions from mutations instead of writing to the db\n   directly. This method is recommended, because it encapsulates the logic for\n   updating a table, while still keeping all operations explicit. For example,\n\n```ts\n// Example of a mutation that calls `insertScore`.\nexport const playAGame = mutation(async (ctx) => {\n  ...\n  await insertScore(ctx, gameId, user1, user1Score);\n  await insertScore(ctx, gameId, user2, user2Score);\n});\n\n// All inserts to the \"scores\" table go through this function.\nasync function insertScore(ctx, gameId, username, score) {\n  const id = await ctx.db.insert(\"scores\", { gameId, username, score });\n  await doc = await ctx.db.get(id);\n  await aggregateByGame.insert(ctx, doc!);\n}\n```\n\n3. Register a\n   [`Trigger`](https://github.com/convex/convex-helpers/blob/main/packages/convex-helpers/README.md#triggers),\n   which automatically runs code when a mutation changes the data in a table.\n\n```ts\n// Triggers hook up writes to the table to the TableAggregate.\nconst triggers = new Triggers<DataModel>();\ntriggers.register(\"mytable\", aggregate.trigger());\nexport const mutation = customMutation(rawMutation, customCtx(triggers.wrapDB));\n```\n\nThe [`example/convex/photos.ts`](example/convex/photos.ts) example uses a\ntrigger.\n\n### Repair incorrect aggregates\n\nIf some mutation or direct write in the Dashboard updated the source of truth\ndata without writing to the aggregate, they can get out of sync and the returned\naggregates may be incorrect.\n\nThe simplest way to fix is to start over. Either call\n`await aggregate.clear(ctx)` or rename the component like\n`app.use(aggregate, { name: \"newName\" })` which will reset it to be empty. Then\nfollow the instructions from [above](#attach-aggregate-to-an-existing-table).\n\nThere is an alternative which doesn't clear the aggregates: compare the source\nof truth to the aggregate table. You can use `db.query(\"mytable\").paginate()` on\nyour Convex table and `aggregate.paginate()` on the aggregate. Update the\naggregates based on the diff of these two paginated data streams.\n\n## Performance Optimizations\n\n### Batch Operations\n\nFor improved performance when making multiple similar queries, the Aggregate\ncomponent provides batch versions of common operations:\n\n- `countBatch()` - Count items for multiple bounds in a single call\n- `sumBatch()` - Sum items for multiple bounds in a single call\n- `atBatch()` - Return items at multiple offsets in a single call\n\nThese batch functions are significantly more efficient than making individual\ncalls because they:\n\n1. Reduce function call overhead: Instead of multiple separate function\n   invocations, batch operations make a single call that processes multiple\n   queries internally.\n2. Optimize database access: Batch operations can leverage internal\n   optimizations and reduce the number of database round trips.\n3. Improve transaction efficiency: When used in mutations, batch operations\n   reduce the transaction scope and potential for conflicts.\n\n```ts\n// Instead of multiple individual calls:\nconst counts = await Promise.all([\n  aggregate.count(ctx, { bounds: bounds1 }),\n  aggregate.count(ctx, { bounds: bounds2 }),\n  aggregate.count(ctx, { bounds: bounds3 }),\n]);\n\n// Use the batch equivalent for better performance:\nconst counts = await aggregate.countBatch(ctx, [\n  { bounds: bounds1 },\n  { bounds: bounds2 },\n  { bounds: bounds3 },\n]);\n```\n\nThe batch functions accept arrays of query parameters and return arrays of\nresults in the same order, making them drop-in replacements for multiple\nindividual calls while providing better performance characteristics.\n\n## Reactivity and Atomicity\n\nLike all Convex queries, aggregates are\n[reactive](https://docs.convex.dev/tutorial/reactor#realtime-is-all-the-time),\nand updating them is transactional.\n\nIf aggregated data updates infrequently, everything runs smoothly. However, if\naggregated data updates frequently, the reactivity and atomicity can cause\nissues: reactive queries can rerun often, and mutations can slow down.\n\n### Reactivity\n\nReactivity means if you query an aggregate, like a count, sum, rank,\noffset-based page, etc. your UI will automatically update to reflect updates.\n\nIf someone gets a new high score, everyone else's leaderboard will show them\nmoving down, and the total count of scores will increase. If I add a new song,\nit will automatically get shuffled into the music album.\n\nDon't worry about polling to get new results. Don't worry about data needing a\nfew seconds to propagate through the system. And you don't need to refresh your\nbrowser. As soon as the data is updated, the aggregates are updated everywhere,\nincluding the user's UI.\n\n### Transactions\n\nTransactionality means if you do multiple writes in the same mutation, like\nadding data to a table and inserting it into an aggregate, those operations are\nperformed together. No query or mutation can observe a race condition where the\ndata exists in the table but not in the aggregate. And if two mutations insert\ndata into an aggregate, the count will go up by two, even if the mutations are\nrunning in parallel.\n\nThere's a special transactional property of components that is even better than\nthe Convex guarantees you're used to. If you were to keep a denormalized count\nwith a normal Convex mutation, you'll notice that the TypeScript can run with\nvarious orderings, messing up the final result.\n\n```ts\n// You might try to do this before experiencing the wonders of the Aggregate component.\nasync function increment(ctx: MutationCtx) {\n  const doc = (await ctx.query(\"count\").unique())!;\n  await ctx.db.patch(doc._id, { value: doc.value + 1 });\n}\nexport const addTwo = mutation({\n  handler: async (ctx) => {\n    await Promise.all([increment(ctx), increment(ctx)]);\n  },\n});\n```\n\nWhen you call the `addTwo` mutation, the count will increase by... one. That's\nbecause TypeScript runs both `db.query`s before running the `db.patch`s. But\nwith the Aggregate component, the count goes up by two as intended. That's\nbecause component operations are atomic.\n\n```ts\nexport const addTwo = mutation({\n  handler: async (ctx) => {\n    await Promise.all([\n      aggregate.insert(ctx, \"some key\", \"a\"),\n      aggregate.insert(ctx, \"other key\", \"b\"),\n    ]);\n  },\n});\n```\n\nYou may have noticed that `Aggregate` methods can be called from actions, unlike\n`ctx.db`. This was an accident, but it works, so let's call it a feature! In\nparticular, each `Aggregate` method called from any context, including from an\naction, will be atomic within itself. However, we recommend calling the methods\nfrom a mutation or query so they can be transactional with other database reads\nand writes.\n\nReactivity and transactionality can be amazing for user experience, but if you\nobserve issues with queries rerunning often or mutations slowing down or\nthrowing errors, you may need to learn about the internals of the aggregate\ncomponent. Specifically, how reads and writes intersect.\n\n### Read dependencies and writes\n\nWhen a query calls `await aggregate.count(ctx)`, this depends on the entire\naggregate data structure. When any mutation changes the data structure, i.e.\n`insert`, `delete`, or `replace`, the query reruns and sends new results to the\nfrontend. This is necessary to keep the frontend looking snappy, but it can\ncause large function call and bandwidth usage on Convex.\n\nWhen a _mutation_ calls `await aggregate.count(ctx)`, then this mutation needs\nto [run transactionally](https://docs.convex.dev/database/advanced/occ) relative\nto other mutations. Another mutation that does an `insert`, `delete`, or\n`replace` can cause an [OCC conflict](https://docs.convex.dev/error#1).\n\nIn order to calculate in `O(log(n))` time, the aggregate component stores\ndenormalized counts in an internal data structure. Data points with nearby keys\nmay have their counts accumulated in one place.\n\nImagine the leaderboard aggregate defined with `Key: [username, score]`. Users\n\"Laura\" and \"Lauren\" have adjacent keys, so there is a node internal to the\nAggregate component that includes the counts of Laura and Lauren combined. If\nLaura is looking at her own high score, this involves reading from the internal\nnode shared with Lauren. So when Lauren gets a new high score, Laura's query\nreruns (but its result doesn't change). And when Laura and Lauren both get new\nscores at the same time, their mutations will run slower to make the change to\nthe internal node transactional.\n\nCorollary: if a table's aggregate uses a key on `_creationTime`, each new data\npoint will be added to the same part of the data structure (the end), because\n`_creationTime` keeps increasing. Therefore all inserts will wait for each other\nand no mutations can run in parallel.\n\nOn the other hand, each namespace has its own data structure and there's no\noverlap in internal nodes between namespaces. So if you use\n`Namespace: username` and `Key: score`, which has similar capabilities to an\naggregate with `Key: [username, score]`, then you never have a problem with\n\"Laura\" and \"Lauren\" having contention.\n\n### Put bounds on aggregated data\n\nTo reduce the read dependency footprint of your query, you can partition your\naggregate space and make sure you're using `bounds` whenever possible. Examples:\n\n```ts\n// This query only reads scores between 95 and 100, so in a query it only reruns\n// when a score in that range changes, and in a mutation it only conflicts with\n// mutations that modify a score in that range.\nawait aggregateByScore.count(ctx, {\n  lower: { key: 95, inclusive: false },\n  upper: { key: 100, inclusive: true },\n});\n\n// This query only reads data from a specific user, so it will only rerun or\n// conflict when a mutation modifies that user.\nawait aggregateScoreByUser.count(ctx, { prefix: [username] });\n```\n\n### Lazy aggregation\n\nThe aggregate data structure internally denormalizes counts so they can be\ncalculated efficiently by only reading a few documents instead of every document\nin your table.\n\nHowever, this isn't always required: we can trade off speed and database\nbandwidth for reduced impact of writes.\n\nBy default, the root aggregation document is lazy; it doesn't store a count.\nThis means `aggregate.count(ctx)` has to look at several documents instead of\njust one, but it also means that an insert at a very small key won't intersect\nwith a write or read on a very large key.\n\nIf you want to maximize query speed without worrying about conflicts, e.g.\nbecause the data changes infrequently but queries are frequent, you can turn off\nthe default behavior by starting over with `aggregate.clear(ctx, 16, false)`\nwhich set `rootLazy` to `false`.\n\nAnother way to optimize lazy aggregation is to increase the `maxNodeSize` of the\naggregate data structure. e.g. if the root is lazy and `maxNodeSize` is the\ndefault of 16, that means each write updates some document that accumulates\n1/16th of the entire data structure. So each write will intersect with 1/16th of\nall other writes, and reads may spuriously rerun 1/16th of the time. To increase\n`maxNodeSize`, run `aggregate.clear(ctx, maxNodeSize)` and start over.\n\n### Queued writes\n\nIf your use-case can tolerate eventual consistency (slightly stale reads), you\ncan use the **queued** mode of the aggregate. Instead of modifying your\naggregate synchronously in the same transaction, you can set an optional `async`\nflag on writes to the aggregate to queue the update to run asynchronously. For\nreading the aggregate, setting the `stale` flag allows you to read from a stale\nsnapshot of the aggregate, avoiding database conflicts.\n\n```ts\n// Enqueue instead of applying synchronously.\nawait aggregate.insert(ctx, { key, id, sumValue }, { async: true });\n\n// Read from a stale snapshot of the aggregate.\nconst count = await aggregate.count(ctx, { stale: true });\n```\n\nTo queue several writes with a single call into the component, use\n`enqueueBatch`. The operations are applied in the order they are given, and each\none takes the same arguments as the corresponding write method.\n\n```ts\nawait directAggregate.enqueueBatch(ctx, [\n  { type: \"insert\", key: 1, id: \"a\", sumValue: 10 },\n  { type: \"delete\", key: 2, id: \"b\" },\n  {\n    type: \"replace\",\n    currentItem: { key: 3, id: \"c\" },\n    newItem: { key: 4, sumValue: 40 },\n  },\n]);\n\nawait tableAggregate.enqueueBatch(ctx, [\n  { type: \"insert\", doc },\n  { type: \"replace\", oldDoc, newDoc },\n]);\n```\n\nIn the queued mode, writes stop contending on shared B-tree nodes as a\n[Batch Worker](https://github.com/convex/batch-worker) serializes updates to the\naggregate. This should significantly improve performance for workloads with many\nconcurrent writers. The trade-off is that you will not be able to read your\nqueued writes to the aggregate in the same transaction. Queries that use stale\nreads are still reactive to changes to the aggregate as the Batch Worker\nprocesses the queued writes.\n\nNote that you cannot mix the queued mode with the non-queued mode. If there are\nany writes queued, a non-stale read or non-async write will throw an error.\n\n#### Dead-lettered writes\n\nIf a queued write can't be applied (for example, a `delete` for a key that isn't\nin the aggregate), the Batch Worker places it in a dead letter queue.\n\nYou can query the dead letter queue to recover failed operations. After handling\na failed operation, you can delete it from the queue.\n\n```ts\n// List entries in the dead letter queue\nconst { page, continueCursor, isDone } = await ctx.runQuery(\n  components.aggregate.deadLetter.list,\n  { paginationOpts: { numItems: 100, cursor: null } },\n);\n\n// Fetch a specific entry by id. A missing entry comes back as `null`.\nconst entry = await ctx.runQuery(components.aggregate.deadLetter.get, { id });\n\n// Delete an entry from the dead letter queue.\nawait ctx.runMutation(components.aggregate.deadLetter.delete_, { id });\n```\n\nYou can also quickly view the dead letter queue by checking the\n`deadLetterOperations` table under your aggregate component in the Convex\ndashboard.\n\nFound a bug? Feature request?\n[File it here](https://github.com/convex/aggregate/issues).\n\n<!-- END: Include on https://convex.dev/components -->\n","readmeFilename":"README.md"}