{"_id":"@affino/datagrid-server-adapters","_rev":"6-de4b61259e10920911a00fdfadc3109a","name":"@affino/datagrid-server-adapters","dist-tags":{"latest":"0.1.6"},"versions":{"0.1.0":{"name":"@affino/datagrid-server-adapters","version":"0.1.0","keywords":["datagrid","server","datasource","adapter"],"author":{"name":"Anton Pavlov","email":"a.pavlov@affino.dev"},"license":"MIT","_id":"@affino/datagrid-server-adapters@0.1.0","maintainers":[{"name":"affino","email":"anton.pavlov.personal@gmail.com"}],"homepage":"https://github.com/affinio/affinio/tree/main/packages/datagrid-server-adapters#readme","bugs":{"url":"https://github.com/affinio/affinio/issues"},"dist":{"shasum":"f60bd00fe47d5497166e207a0da6b7eec46aff5d","tarball":"https://registry.npmjs.org/@affino/datagrid-server-adapters/-/datagrid-server-adapters-0.1.0.tgz","fileCount":7,"integrity":"sha512-A7Xdi3l82VKH/pZDkghmZ+hXNcEtSyrUZ0IiZq16s/LeqF8cGFI215gVbr4o1BMN8M2QbebWFBDDemzg0B0cMg==","signatures":[{"sig":"MEUCIHCSzqlQJvPNC5rxlpWYGFpKa++Tn3RSY9V1JVnWGA4/AiEAju/LaEHlkIAXeyfFWkOMcaNQVaDbzD/DzR/gEuLw8OM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":69371},"main":"dist/src/index.js","type":"module","_from":"file:affino-datagrid-server-adapters-0.1.0.tgz","types":"dist/src/index.d.ts","module":"dist/src/index.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"build":"rm -rf dist && tsc -p tsconfig.public.json","type-check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"affino","email":"anton.pavlov.personal@gmail.com"},"_resolved":"/tmp/859a0590c71c977c56d6981026460c28/affino-datagrid-server-adapters-0.1.0.tgz","_integrity":"sha512-A7Xdi3l82VKH/pZDkghmZ+hXNcEtSyrUZ0IiZq16s/LeqF8cGFI215gVbr4o1BMN8M2QbebWFBDDemzg0B0cMg==","repository":{"url":"git+https://github.com/affinio/affinio.git","type":"git","directory":"packages/datagrid-server-adapters"},"_npmVersion":"10.8.2","description":"Opinionated server datasource adapters for Affino DataGrid","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@affino/datagrid-core":"0.3.23","@affino/datagrid-server-client":"0.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/datagrid-server-adapters_0.1.0_1778141001612_0.8084789270610908","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@affino/datagrid-server-adapters","version":"0.1.1","keywords":["datagrid","server","datasource","adapter"],"author":{"name":"Anton Pavlov","email":"a.pavlov@affino.dev"},"license":"MIT","_id":"@affino/datagrid-server-adapters@0.1.1","maintainers":[{"name":"affino","email":"anton.pavlov.personal@gmail.com"}],"homepage":"https://github.com/affinio/affinio/tree/main/packages/datagrid-server-adapters#readme","bugs":{"url":"https://github.com/affinio/affinio/issues"},"dist":{"shasum":"2a9b1e92482abedf828f4c3326047453cb763c84","tarball":"https://registry.npmjs.org/@affino/datagrid-server-adapters/-/datagrid-server-adapters-0.1.1.tgz","fileCount":7,"integrity":"sha512-YGlH8Xhhb/UKjoQQYWGn82Qgl0ElTbNqCeiLqmprKDq5+SBGy1qE7CjeKKanCNCUR/LYgS9QTBZOZRPR0WSXmQ==","signatures":[{"sig":"MEUCIQC2WtIs8yh0arezUoN6C/RJ1Ch7fWnxA9+bCznC2/hN7AIgfzbOCEIO9BVSwQW4WrLdy5Z+0jjI6FijIoFkYNrBkM4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89405},"main":"dist/src/index.js","type":"module","_from":"file:affino-datagrid-server-adapters-0.1.1.tgz","types":"dist/src/index.d.ts","module":"dist/src/index.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"build":"rm -rf dist && tsc -p tsconfig.public.json","type-check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"affino","email":"anton.pavlov.personal@gmail.com"},"_resolved":"/tmp/11efee6416d0eaad1f3b40afc8d29706/affino-datagrid-server-adapters-0.1.1.tgz","_integrity":"sha512-YGlH8Xhhb/UKjoQQYWGn82Qgl0ElTbNqCeiLqmprKDq5+SBGy1qE7CjeKKanCNCUR/LYgS9QTBZOZRPR0WSXmQ==","repository":{"url":"git+https://github.com/affinio/affinio.git","type":"git","directory":"packages/datagrid-server-adapters"},"_npmVersion":"10.8.2","description":"Opinionated server datasource adapters for Affino DataGrid","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@affino/datagrid-core":"0.3.25","@affino/datagrid-server-client":"0.1.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/datagrid-server-adapters_0.1.1_1778346801036_0.7642355204823525","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@affino/datagrid-server-adapters","version":"0.1.2","keywords":["datagrid","server","datasource","adapter"],"author":{"name":"Anton Pavlov","email":"a.pavlov@affino.dev"},"license":"MIT","_id":"@affino/datagrid-server-adapters@0.1.2","maintainers":[{"name":"affino","email":"anton.pavlov.personal@gmail.com"}],"homepage":"https://github.com/affinio/affinio/tree/main/packages/datagrid-server-adapters#readme","bugs":{"url":"https://github.com/affinio/affinio/issues"},"dist":{"shasum":"a824d33196c936559e2ed93ee4cd68a1ffda05e6","tarball":"https://registry.npmjs.org/@affino/datagrid-server-adapters/-/datagrid-server-adapters-0.1.2.tgz","fileCount":7,"integrity":"sha512-+kps8Wjo/SBEQ755N4QD8XeddLo1lUv4VX1A38EPVS6iaD68l8QfYBf5kfwsBuzxm+J1ylVvcvDTZAMA8u/bXw==","signatures":[{"sig":"MEUCIQC+/ejCwlb4vsTvp+rKkwxzPTQ2YgJ4/gzwL40zZCJNXAIgGUMuyD4BFg9LTORObCRJQR/weSnZ9R4XuWrotvCbiG8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89984},"main":"dist/src/index.js","type":"module","_from":"file:affino-datagrid-server-adapters-0.1.2.tgz","types":"dist/src/index.d.ts","module":"dist/src/index.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"build":"rm -rf dist && tsc -p tsconfig.public.json","type-check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"affino","email":"anton.pavlov.personal@gmail.com"},"_resolved":"/tmp/4186c63a8a1c002ff2a671c46268e2ef/affino-datagrid-server-adapters-0.1.2.tgz","_integrity":"sha512-+kps8Wjo/SBEQ755N4QD8XeddLo1lUv4VX1A38EPVS6iaD68l8QfYBf5kfwsBuzxm+J1ylVvcvDTZAMA8u/bXw==","repository":{"url":"git+https://github.com/affinio/affinio.git","type":"git","directory":"packages/datagrid-server-adapters"},"_npmVersion":"10.8.2","description":"Opinionated server datasource adapters for Affino DataGrid","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@affino/datagrid-core":"0.3.25","@affino/datagrid-server-client":"0.1.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/datagrid-server-adapters_0.1.2_1778358211183_0.0026288718074485296","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@affino/datagrid-server-adapters","version":"0.1.4","keywords":["datagrid","server","datasource","adapter"],"author":{"name":"Anton Pavlov","email":"a.pavlov@affino.dev"},"license":"MIT","_id":"@affino/datagrid-server-adapters@0.1.4","maintainers":[{"name":"affino","email":"anton.pavlov.personal@gmail.com"}],"homepage":"https://github.com/affinio/affinio/tree/main/packages/datagrid-server-adapters#readme","bugs":{"url":"https://github.com/affinio/affinio/issues"},"dist":{"shasum":"39b14c908c54cf38bdd7585fcc8b0ee148713742","tarball":"https://registry.npmjs.org/@affino/datagrid-server-adapters/-/datagrid-server-adapters-0.1.4.tgz","fileCount":7,"integrity":"sha512-9SR3tgpJ55kKkqOwAQNBGuIqQuV8AcMYVEjmtfKp1CAX9/CWgeDSbh/fz5+xJaeU/Dg6H2tYhY9sg0s+E4VuIg==","signatures":[{"sig":"MEUCIAwkKFAEzc/RhurLEd8visHAFp3VYRbnv1nEwZqOUAJfAiEAy0dizsVEgknu939KBvGDhzTYenU/W8NvfbySxlmGtYc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":96979},"main":"dist/src/index.js","type":"module","_from":"file:affino-datagrid-server-adapters-0.1.4.tgz","types":"dist/src/index.d.ts","module":"dist/src/index.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"build":"rm -rf dist && tsc -p tsconfig.public.json","type-check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"affino","email":"anton.pavlov.personal@gmail.com"},"_resolved":"/tmp/f264059990c0dcf1cf3fa7e5e915a11e/affino-datagrid-server-adapters-0.1.4.tgz","_integrity":"sha512-9SR3tgpJ55kKkqOwAQNBGuIqQuV8AcMYVEjmtfKp1CAX9/CWgeDSbh/fz5+xJaeU/Dg6H2tYhY9sg0s+E4VuIg==","repository":{"url":"git+https://github.com/affinio/affinio.git","type":"git","directory":"packages/datagrid-server-adapters"},"_npmVersion":"10.8.2","description":"Opinionated server datasource adapters for Affino DataGrid","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@affino/datagrid-core":"0.3.30","@affino/datagrid-server-client":"0.1.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/datagrid-server-adapters_0.1.4_1778769498264_0.7069654620413455","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@affino/datagrid-server-adapters","version":"0.1.5","keywords":["datagrid","server","datasource","adapter"],"author":{"name":"Anton Pavlov","email":"a.pavlov@affino.dev"},"license":"MIT","_id":"@affino/datagrid-server-adapters@0.1.5","maintainers":[{"name":"affino","email":"anton.pavlov.personal@gmail.com"}],"homepage":"https://github.com/affinio/affinio/tree/main/packages/datagrid-server-adapters#readme","bugs":{"url":"https://github.com/affinio/affinio/issues"},"dist":{"shasum":"cb02a786e2975b35920d7c48e684c351769b31ad","tarball":"https://registry.npmjs.org/@affino/datagrid-server-adapters/-/datagrid-server-adapters-0.1.5.tgz","fileCount":7,"integrity":"sha512-oUqf7a1jdgbndk3imKk6s8PKNh0B3wCIEG6I0lnpzyS4JVjjNPM0J0J0Roh4uQNeUQVe+3EDweQ5oS00aGOG+g==","signatures":[{"sig":"MEQCIDvxK5p73GO/e2lee7Uw3Zv/CSNAVuZmu8tprRp0eKI/AiBkT4l6knGeNQcso/LzwwyNTiXmnXEYoy6VGJ9IonAFYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97844},"main":"dist/src/index.js","type":"module","_from":"file:affino-datagrid-server-adapters-0.1.5.tgz","types":"dist/src/index.d.ts","module":"dist/src/index.js","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"scripts":{"build":"rm -rf dist && tsc -p tsconfig.public.json","type-check":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"affino","email":"anton.pavlov.personal@gmail.com"},"_resolved":"/tmp/8d411ede3a2a662913b19722ff3c1ddb/affino-datagrid-server-adapters-0.1.5.tgz","_integrity":"sha512-oUqf7a1jdgbndk3imKk6s8PKNh0B3wCIEG6I0lnpzyS4JVjjNPM0J0J0Roh4uQNeUQVe+3EDweQ5oS00aGOG+g==","repository":{"url":"git+https://github.com/affinio/affinio.git","type":"git","directory":"packages/datagrid-server-adapters"},"_npmVersion":"10.8.2","description":"Opinionated server datasource adapters for Affino DataGrid","directories":{},"sideEffects":false,"_nodeVersion":"20.20.2","dependencies":{"@affino/datagrid-core":"0.3.33","@affino/datagrid-server-client":"0.1.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/datagrid-server-adapters_0.1.5_1779187207360_0.7759872353914437","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@affino/datagrid-server-adapters","version":"0.1.6","author":{"name":"Anton Pavlov","email":"a.pavlov@affino.dev"},"type":"module","description":"Opinionated server datasource adapters for Affino DataGrid","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"main":"dist/src/index.js","types":"dist/src/index.d.ts","module":"dist/src/index.js","sideEffects":false,"repository":{"type":"git","url":"git+https://github.com/affinio/datagrid.git","directory":"packages/datagrid-server-adapters"},"homepage":"https://github.com/affinio/datagrid/tree/main/packages/datagrid-server-adapters#readme","license":"MIT","keywords":["datagrid","server","datasource","adapter"],"bugs":{"url":"https://github.com/affinio/datagrid/issues"},"dependencies":{"@affino/datagrid-core":"0.4.0","@affino/datagrid-server-client":"0.1.4"},"scripts":{"build":"rm -rf dist && tsc -p tsconfig.public.json","type-check":"tsc -p tsconfig.json --noEmit"},"_id":"@affino/datagrid-server-adapters@0.1.6","_integrity":"sha512-zq5veg4dMZUXvhAiwh6u1oJggfXh4oN81Qnlz+wrfClcXRfKIdl+k2rGm5dJx9F4u/I7h9s1TkAquzjdnVgtNQ==","_resolved":"/tmp/28cefb5ff232ccb4f71c45cb161c3cbd/affino-datagrid-server-adapters-0.1.6.tgz","_from":"file:affino-datagrid-server-adapters-0.1.6.tgz","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-zq5veg4dMZUXvhAiwh6u1oJggfXh4oN81Qnlz+wrfClcXRfKIdl+k2rGm5dJx9F4u/I7h9s1TkAquzjdnVgtNQ==","shasum":"345a3072f62ac6c1cc1eff30add4d1df244fcd27","tarball":"https://registry.npmjs.org/@affino/datagrid-server-adapters/-/datagrid-server-adapters-0.1.6.tgz","fileCount":7,"unpackedSize":103409,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDJA/wCyOHwnLK+8HmoFG0MjtGBTiMm/svY1vEhLiqboAiEA7j3pVZpJmEznlP6waNnjDazT0w94IC/6pMUHINaIV9k="}]},"_npmUser":{"name":"affino","email":"anton.pavlov.personal@gmail.com"},"directories":{},"maintainers":[{"name":"affino","email":"anton.pavlov.personal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/datagrid-server-adapters_0.1.6_1779375708483_0.5150678709627343"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-07T08:03:21.568Z","modified":"2026-05-21T15:01:48.759Z","0.1.0":"2026-05-07T08:03:21.745Z","0.1.1":"2026-05-09T17:13:21.166Z","0.1.2":"2026-05-09T20:23:31.350Z","0.1.4":"2026-05-14T14:38:18.525Z","0.1.5":"2026-05-19T10:40:07.502Z","0.1.6":"2026-05-21T15:01:48.646Z"},"bugs":{"url":"https://github.com/affinio/datagrid/issues"},"author":{"name":"Anton Pavlov","email":"a.pavlov@affino.dev"},"license":"MIT","homepage":"https://github.com/affinio/datagrid/tree/main/packages/datagrid-server-adapters#readme","keywords":["datagrid","server","datasource","adapter"],"repository":{"type":"git","url":"git+https://github.com/affinio/datagrid.git","directory":"packages/datagrid-server-adapters"},"description":"Opinionated server datasource adapters for Affino DataGrid","maintainers":[{"name":"affino","email":"anton.pavlov.personal@gmail.com"}],"readme":"# @affino/datagrid-server-adapters\n\nOpinionated server datasource adapters for Affino DataGrid.\n\nUse this package when you want the simplest path from a backend-owned table to a working grid datasource.\n\n## When To Use\n\n- use this package for the primary frontend integration path\n- use `@affino/datagrid-server-client` only when you need low-level transport or change-feed helpers\n- keep sandbox-specific adapter code in the sandbox package, not here\n\n## Install\n\n```bash\npnpm add @affino/datagrid-server-adapters\n```\n\n## Minimal Example\n\n```ts\nimport { createAffinoDatasource } from \"@affino/datagrid-server-adapters\"\n\ntype AuctionRow = {\n  id: string\n  index: number\n  title: string\n  status: string\n}\n\nconst datasource = createAffinoDatasource<AuctionRow>({\n  baseUrl: \"http://localhost:8000\",\n  tableId: \"auctions\",\n})\n```\n\n`createAffinoDatasource()` returns a `DataGridDataSource<T>`-compatible facade with the additional change-feed and history helpers surfaced on the typed return value.\n\n## Optional Options\n\n- `headers` forwards request headers on adapter-owned requests\n- `historyScope` forwards `workspace_id`, `user_id`, and `session_id` into edit, fill, and history bodies\n- `histogram.ignoreSelfFilter` sets the default histogram behavior for requests that should ignore the active column filter\n- `queryCodec` configures the default pull request codec, including `columnIdMap`, `quickFilterModeFallback`\n- `mapQuery` receives the normalized backend DTO and can adapt it to a backend-specific request body\n- `mapPullRequest` receives the raw `DataGridDataSourcePullRequest` and bypasses the package codec entirely\n\n## Server Query Codec\n\nPull requests are normalized into a stable backend DTO by default. The codec is a boundary helper: it converts DataGrid request state into JSON-safe transport data, but it is not a SQL compiler, ORM adapter, permissions layer, or backend execution engine.\n\n```ts\nimport { normalizeDataGridServerQuery } from \"@affino/datagrid-server-adapters\"\n\nconst query = normalizeDataGridServerQuery(request, {\n  columnIdMap: {\n    updatedAt: \"updated_at\",\n  },\n  quickFilterModeFallback: \"contains\",\n})\n```\n\nThe normalized shape keeps request concerns explicit:\n\n```ts\n{\n  range: { startRow: 0, endRow: 50 },\n  sortModel: [{ colId: \"updated_at\", sort: \"desc\" }],\n  filterModel: {\n    columnFilters: {\n      status: { kind: \"valueSet\", tokens: [\"string:active\"] },\n    },\n    quickFilter: {\n      query: \"platform\",\n      columns: [\"name\", \"status\"],\n      mode: \"tokens\",\n    },\n  },\n  pagination: { pageSize: 50, currentPage: 0 },\n}\n```\n\n`quickFilter` stays inside `filterModel`. The codec trims the query, dedupes columns, defaults invalid modes to `\"contains\"` unless configured otherwise, and never creates a top-level `search` field.\n\nPivot is an explicit enterprise backend boundary. The default codec does not serialize `request.pivot`; backends that implement server pivot projection should use `mapPullRequest` to forward the raw `DataGridDataSourcePullRequest` or map `request.pivot` into their own approved API shape.\n\n## Request Mapping\n\nUse the default normalized DTO when your backend accepts the package request shape:\n\n```ts\nconst datasource = createAffinoDatasource<AuctionRow>({\n  baseUrl: \"http://localhost:8000\",\n  tableId: \"auctions\",\n  queryCodec: {\n    columnIdMap: {\n      updatedAt: \"updated_at\",\n    },\n  },\n})\n```\n\nUse `mapQuery` when the backend needs small shape changes while still relying on the package codec:\n\n```ts\nconst datasource = createAffinoDatasource<AuctionRow>({\n  baseUrl: \"http://localhost:8000\",\n  tableId: \"auctions\",\n  mapQuery: query => ({\n    rows: query.range,\n    order: query.sortModel ?? [],\n    filters: query.filterModel,\n  }),\n})\n```\n\nUse `mapPullRequest` only when the backend expects the raw DataGrid protocol or a fully custom body:\n\n```ts\nconst datasource = createAffinoDatasource<AuctionRow>({\n  baseUrl: \"http://localhost:8000\",\n  tableId: \"auctions\",\n  mapPullRequest: request => ({\n    range: request.range,\n    sortModel: request.sortModel,\n    filterModel: request.filterModel,\n    groupBy: request.groupBy,\n    groupExpansion: request.groupExpansion,\n    treeData: request.treeData,\n    pivot: request.pivot,\n    pagination: request.pagination,\n  }),\n})\n```\n\n## Backend Capabilities\n\nThe adapter works best when the backend supports:\n\n- histograms for `POST /api/{tableId}/histogram`\n- edits for `POST /api/{tableId}/edits`\n- fill for `POST /api/{tableId}/fill-boundary` and `POST /api/{tableId}/fill/commit`\n- history for `POST /api/history/undo`, `POST /api/history/redo`, and `POST /api/history/status`\n\nIf a backend omits one of these endpoints, keep the feature disabled at the host-app layer.\n\n## Docs\n\n- [Server datasource quick start](../../docs/server-datasource/quick-start.md)\n- [Server datasource UX contract](../../docs/server-datasource/ux-contract.md)\n- [Frontend adapter reference](../../docs/server-datasource/frontend-adapter.md)\n- [Server client package](../datagrid-server-client/README.md)\n","readmeFilename":"README.md"}