Registry / testing / graphql-compose-connection

graphql-compose-connection

JSON →
library8.2.1jsnpmunverified

Plugin for graphql-compose that adds a Relay Cursor Connections Specification resolver to ObjectTypeComposer. Current version 8.2.1 supports graphql-compose ^7.15.0 || ^8.0.0 || ^9.0.0. Provides standard connection arguments (first, last, before, after) plus filter and sort arguments with compound sorting and cursor-based pagination. Ships TypeScript definitions. Release cadence is low (last release 2021). Differentiators: automatic cursor generation from unique index fields, flexible before/after query builders for any ORM/DB driver.

npm install graphql-compose-connection
INSTALL
IMPORT
SIG · GRAPHQL-COMPOSE-CO
G
graphql-compose-connection
testingjavascriptv8.2.1
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

prepareConnectionResolver
import { prepareConnectionResolver } from 'graphql-compose-connection'
const prepareConnectionResolver = require('graphql-compose-connection').prepareConnectionResolver
ESM module; named export. CommonJS users must use default import or destructured require.
default
import gqlcConnection from 'graphql-compose-connection'
import { default as gqlcConn } from 'graphql-compose-connection'
There is no default export; this package only exports named exports. Common mistake: trying to import default.
prepareConnectionResolver
const { prepareConnectionResolver: pcr } = require('graphql-compose-connection')
const pcr = require('graphql-compose-connection')
CommonJS: must destructure or access .prepareConnectionResolver. Direct require returns object with named exports.

Shows how to add a Relay-compliant connection resolver to UserTC with custom sort and cursor queries.

import { prepareConnectionResolver } from 'graphql-compose-connection'; import { UserTC } from './models/User'; import { findManyResolver, countResolver } from './resolvers'; UserTC.addResolver( prepareConnectionResolver(UserTC, { findManyResolver, countResolver, sort: { _ID_ASC: { value: { _id: 1 }, cursorFields: ['_id'], beforeCursorQuery: (rawQuery, cursorData, resolveParams) => { if (!rawQuery._id) rawQuery._id = {}; rawQuery._id.$lt = cursorData._id; }, afterCursorQuery: (rawQuery, cursorData, resolveParams) => { if (!rawQuery._id) rawQuery._id = {}; rawQuery._id.$gt = cursorData._id; }, }, }, }) ); // Use in schema: // const schema = new GraphQLSchema({ query: new GraphQLObjectType({ name: 'Query', fields: { users: UserTC.getResolver('connection').getFieldConfig() } }) });
Debug
Known issues
gotchaprepareConnectionResolver expects findManyResolver and countResolver to return promises that resolve to arrays and numbers respectively.
fix
Ensure your resolvers return the correct types: findManyResolver returns Promise<Object[]> and countResolver returns Promise<number>.
affects: >=8.0.0
gotchaCursor queries (beforeCursorQuery, afterCursorQuery) mutate rawQuery in place; do not reassign rawQuery.
fix
Modify rawQuery properties directly (e.g., rawQuery._id = ...) instead of assigning a new object.
affects: >=8.0.0
deprecatedThe 'sort' configuration key 'cursorFields' must be an array of field names that exist in your database with a unique index.
fix
Provide at least one field from a unique index to ensure cursor uniqueness.
affects: >=7.0.0
gotchaIf graphql-compose version is mismatched, you may see 'Class instance mismatch' errors.
fix
Ensure only one version of graphql-compose is installed, matching the peer dependency range (^7.15.0 || ^8.0.0 || ^9.0.0).
affects: >=8.0.0
Errors
Common errors & fixes
TypeError: prepareConnectionResolver is not a function
Improper import of named export (default import mistake) or wrong require path.
fix
Use destructured import: import { prepareConnectionResolver } from 'graphql-compose-connection'
Cannot find module 'graphql-compose'
graphql-compose is not installed or is not in node_modules.
fix
Install peer dependency: npm install graphql-compose
Expected findManyResolver to return an array but got undefined
findManyResolver returns undefined instead of a promise resolving to an array.
fix
Ensure findManyResolver returns Promise<Object[]> (e.g., using a model's find method).
Upgrade
Version history
8.2.1latest on npm
Audit
Dependencies
graphql-composerequiredpeer dependency: required to use ObjectTypeComposer and resolver patterns
graphqlrequiredpeer dependency: required for schema types and execution
Agent activity
6 hits · last 30 days
node
6
Resources
graphql-compose-connection — npm install graphql-compose-connection · libregistry