{"dist":{"shasum":"c4f006d16a818b40289fbed7a20da1de7d8689cf","tarball":"https://registry.npmjs.org/@startupjs/server-aggregate/-/server-aggregate-0.56.0-alpha.0.tgz","fileCount":6,"integrity":"sha512-AyHEBqDSDbqd79by46gY6CE/PRsn0iHSSqa1ziFnZfvEFaAhZ3pDU8CMPWJKMTk9Sj1rSqE/Pg45QN9nG5O50w==","signatures":[{"sig":"MEUCIQC7kY5Nwb6Gfbt8CFOf6GutsKu1J4U27x2eZMClScWW7gIgLdtEw6cCSZ25tMMtb6x6Pjkg83pRa6W0Ktv5Gg9KD6A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4599},"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":"076772b216a09281ed38b32866b576024562f099","scripts":{"start":"node server.js"},"_npmUser":{"name":"cray0000","email":"cray0000@gmail.com"},"_npmVersion":"lerna/3.22.1/node@v21.1.0+arm64 (darwin)","description":"Module for describing aggregations 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":"21.1.0","dependencies":{"racer":"1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/server-aggregate_0.56.0-alpha.0_1705330959402_0.7366581001508046","host":"s3://npm-registry-packages"},"_id":"@startupjs/server-aggregate@0.56.0-alpha.0","version":"0.56.0-alpha.0"}