{"dist":{"shasum":"ac5b5e706eba228bce717317d4ece86c73c964cc","tarball":"https://registry.npmjs.org/@startupjs/server-aggregate/-/server-aggregate-0.57.0-canary.0.tgz","fileCount":5,"integrity":"sha512-MsRL/NYoIM56zir6YIIcj/aJjktWmw6heQHYM0FVaGBMOhZ1wB4ImVFTrXr/k44/aJ7bd3am8XRuDZkKsg/qKw==","signatures":[{"sig":"MEUCIHTfU6HpmX6ZHtvVSJIni5ra0XaqvkD/MVs2RXEcGBRVAiEA23sGYvMixah4HJm2LPoBGC4c0wukuAEiMosmhQ5MNs4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4740},"main":"server.js","name":"@startupjs/server-aggregate","type":"module","readme":"# @startupjs/server-aggregate\n\nRacer server aggregate plugin. It allows only server-defined aggregate queries.\n\n## Install\n\n```\nyarn add @startupjs/server-aggregate\n```\n\n## Setup\n\nIn the client code:\n\n```js\nrequire('@startupjs/server-aggregate/client')\n```\n\nOn the server:\n\n```js\nconst serverAggregate = require('@startupjs/server-aggregate')\nserverAggregate(backend, customCheck)\n```\n\nwhere:\n* `backend`: your ShareDB backend instance\n* `customCheck (optional)`: your personal check function. It should return an error message if there is an error. **IMPORTANT** The message must be of type `string`.\n\n## How to add aggregation\n\nOn the server side to add aggregation use `backend.addAggregate(collection, queryName, cb)`, where:\n\n* `collection`: collection name\n* `queryName`: query name (alias)\n* `cb(params, shareRequest)`: async function that returns a query object or throw an error\n\n```js\nbackend.addAggregate('items', 'main', async (params, shareRequest) => {\n  // ...\n  // access control or whatever\n  // ...\n\n  return [\n    {$match: {type: 'wooden'}}\n  ]\n})\n```\n\n## Usage\n\n```js\nmodel.query('items', {\n  $aggregationName: 'main',\n  $params: {\n    type: 'global'\n  }\n})\n```\n\nWhen you setup the client side as described in the `Setup` section you can use the `aggregateQuery(collection, queryName, params)` function which is syntactic sugar over the `model.query`, where:\n\n```js\nmodel.aggregateQuery('items', 'main', { type: 'global' })\n```\n\n## MIT License\n\nCopyright (c) 2018 by Artur Zayats\n","gitHead":"0fefd437ff7830800d94d4ed964519a97363ea93","scripts":{"start":"node server.js"},"_npmUser":{"name":"cray0000","email":"cray0000@gmail.com"},"_npmVersion":"lerna/3.22.1/node@v22.1.0+arm64 (darwin)","description":"ShareDB middleware to allow defining aggregations only on the server","directories":{},"maintainers":[{"name":"cray0000","email":"cray0000@gmail.com"},{"name":"yska","email":"pturchik@yandex.ru"},{"name":"zag2art","email":"zag2art@gmail.com"},{"name":"fctsvirus","email":"fctsvirus0k@gmail.com"},{"name":"maestro.sc","email":"maestro.simf@gmail.com"},{"name":"byshock","email":"ivan.lepkin@yandex.ru"}],"_nodeVersion":"22.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/server-aggregate_0.57.0-canary.0_1716650124167_0.7925901021924797","host":"s3://npm-registry-packages"},"_id":"@startupjs/server-aggregate@0.57.0-canary.0","version":"0.57.0-canary.0"}