{"dist":{"shasum":"03d55460bcb0eb3bf8484a3c9642e3a1b13f498c","tarball":"https://registry.npmjs.org/@startupjs/server-aggregate/-/server-aggregate-0.55.0-alpha.1.tgz","fileCount":6,"integrity":"sha512-QqR4oWkB37VCiKsUMmhn+/eJ8wk8VyXX81hswDM2BnvOV49rGaFZNVif4YG6cdEuAcBqN68a2QFkZgFPoakY0A==","signatures":[{"sig":"MEYCIQDTj9cWJyu35hdcpJ0clBBIVRsmeo2SiqNzb8dIrgJoJwIhAI6rmkyADsrxCaof+BUaABmsSbwpepjjUPcGJyr6S020","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4932},"main":"server.js","name":"@startupjs/server-aggregate","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":"f9f14627172890e54490aa3717e21f19614a958b","license":"MIT","scripts":{"start":"node server.js"},"_npmUser":{"name":"fctsvirus","email":"fctsvirus0k@gmail.com"},"_npmVersion":"lerna/3.22.1/node@v18.18.2+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":"18.18.2","dependencies":{"racer":"1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/server-aggregate_0.55.0-alpha.1_1699456010090_0.9351579809311457","host":"s3://npm-registry-packages"},"_id":"@startupjs/server-aggregate@0.55.0-alpha.1","version":"0.55.0-alpha.1"}