Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@contember/bindx-client

Package Overview
Dependencies
Maintainers
4
Versions
33
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@contember/bindx-client - npm Package Compare versions

Comparing version
0.1.30
to
0.1.31
+1
-1
dist/graphql/index.d.ts
export { querySpecToGraphQl, unwrapPaginateResult, type QuerySpecContext } from './querySpecToGraphQl.js';
export { buildTypedArgs, buildListArgs, buildGetArgs, buildCreateArgs, buildUpdateArgs, buildUpsertArgs, buildDeleteArgs } from './buildTypedArgs.js';
export { mutationFragments, buildMutationSelection } from './mutationFragments.js';
export { mutationFragments, buildMutationSelection, buildNodeSelectionFromMutationData } from './mutationFragments.js';
//# sourceMappingURL=index.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graphql/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AACzG,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrJ,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/graphql/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AACzG,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrJ,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,kCAAkC,EAAE,MAAM,wBAAwB,CAAA"}

@@ -1,6 +0,2 @@

import { GraphQlFragment } from '@contember/graphql-builder';
/**
* Standard GraphQL fragments for Contember mutation responses.
* These are fixed parts of the Contember Content API schema.
*/
import { GraphQlFragment, type GraphQlSelectionSet } from '@contember/graphql-builder';
export declare const mutationFragments: Record<string, GraphQlFragment>;

@@ -11,3 +7,10 @@ /**

*/
export declare function buildMutationSelection(operation: 'create' | 'update' | 'upsert' | 'delete', nodeSelection?: import('@contember/graphql-builder').GraphQlSelectionSet): import('@contember/graphql-builder').GraphQlSelectionSet;
export declare function buildMutationSelection(operation: 'create' | 'update' | 'upsert' | 'delete', nodeSelection?: GraphQlSelectionSet): GraphQlSelectionSet;
/**
* Builds a GraphQL node selection set from mutation data.
* Recursively traverses create/update operations to request `id` and scalar
* fields at each nesting level. Scalar fields are needed for content-based
* matching of nested entity IDs after persist.
*/
export declare function buildNodeSelectionFromMutationData(data: Record<string, unknown>): GraphQlSelectionSet;
//# sourceMappingURL=mutationFragments.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"mutationFragments.d.ts","sourceRoot":"","sources":["../../src/graphql/mutationFragments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,eAAe,EAAgD,MAAM,4BAA4B,CAAA;AAExH;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CA+B7D,CAAA;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EACpD,aAAa,CAAC,EAAE,OAAO,4BAA4B,EAAE,mBAAmB,GACtE,OAAO,4BAA4B,EAAE,mBAAmB,CAmB1D"}
{"version":3,"file":"mutationFragments.d.ts","sourceRoot":"","sources":["../../src/graphql/mutationFragments.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,eAAe,EAGf,KAAK,mBAAmB,EACxB,MAAM,4BAA4B,CAAA;AAEnC,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CA+B7D,CAAA;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EACpD,aAAa,CAAC,EAAE,mBAAmB,GACjC,mBAAmB,CAmBrB;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CACjD,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,mBAAmB,CAkBrB"}

@@ -32,3 +32,3 @@ /**

export { buildTypedArgs, buildListArgs, buildGetArgs, buildCreateArgs, buildUpdateArgs, buildUpsertArgs, buildDeleteArgs } from './graphql/index.js';
export { mutationFragments, buildMutationSelection } from './graphql/index.js';
export { mutationFragments, buildMutationSelection, buildNodeSelectionFromMutationData } from './graphql/index.js';
//# sourceMappingURL=index.d.ts.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
{
"name": "@contember/bindx-client",
"version": "0.1.30",
"version": "0.1.31",
"description": "Type-safe content client for Contember — schema, selection builder, query builder, and GraphQL execution",

@@ -5,0 +5,0 @@ "type": "module",

export { querySpecToGraphQl, unwrapPaginateResult, type QuerySpecContext } from './querySpecToGraphQl.js'
export { buildTypedArgs, buildListArgs, buildGetArgs, buildCreateArgs, buildUpdateArgs, buildUpsertArgs, buildDeleteArgs } from './buildTypedArgs.js'
export { mutationFragments, buildMutationSelection } from './mutationFragments.js'
export { mutationFragments, buildMutationSelection, buildNodeSelectionFromMutationData } from './mutationFragments.js'

@@ -1,7 +0,9 @@

import { GraphQlField, GraphQlFragment, GraphQlFragmentSpread, GraphQlInlineFragment } from '@contember/graphql-builder'
import {
GraphQlField,
GraphQlFragment,
GraphQlFragmentSpread,
GraphQlInlineFragment,
type GraphQlSelectionSet,
} from '@contember/graphql-builder'
/**
* Standard GraphQL fragments for Contember mutation responses.
* These are fixed parts of the Contember Content API schema.
*/
export const mutationFragments: Record<string, GraphQlFragment> = {

@@ -46,5 +48,5 @@ MutationError: new GraphQlFragment('MutationError', '_MutationError', [

operation: 'create' | 'update' | 'upsert' | 'delete',
nodeSelection?: import('@contember/graphql-builder').GraphQlSelectionSet,
): import('@contember/graphql-builder').GraphQlSelectionSet {
const items: import('@contember/graphql-builder').GraphQlSelectionSet = [
nodeSelection?: GraphQlSelectionSet,
): GraphQlSelectionSet {
const items: GraphQlSelectionSet = [
new GraphQlField(null, 'ok'),

@@ -68,1 +70,100 @@ new GraphQlField(null, 'errorMessage'),

}
/**
* Builds a GraphQL node selection set from mutation data.
* Recursively traverses create/update operations to request `id` and scalar
* fields at each nesting level. Scalar fields are needed for content-based
* matching of nested entity IDs after persist.
*/
export function buildNodeSelectionFromMutationData(
data: Record<string, unknown>,
): GraphQlSelectionSet {
const fields: GraphQlSelectionSet = [new GraphQlField(null, 'id')]
for (const [fieldName, value] of Object.entries(data)) {
if (value === null || value === undefined) continue
if (Array.isArray(value)) {
const nested = buildSelectionFromOps(value)
if (nested) fields.push(new GraphQlField(null, fieldName, {}, nested))
} else if (typeof value === 'object') {
const nested = buildSelectionFromCreateOrUpdate(value as Record<string, unknown>)
if (nested) fields.push(new GraphQlField(null, fieldName, {}, nested))
} else {
fields.push(new GraphQlField(null, fieldName))
}
}
return fields
}
/**
* Extracts the inner data from a create or update operation and recurses.
*/
function buildSelectionFromCreateOrUpdate(
op: Record<string, unknown>,
): GraphQlSelectionSet | undefined {
if ('create' in op && typeof op['create'] === 'object' && op['create'] !== null) {
return buildNodeSelectionFromMutationData(op['create'] as Record<string, unknown>)
}
if ('update' in op && typeof op['update'] === 'object' && op['update'] !== null) {
const update = op['update'] as Record<string, unknown>
const data = ('data' in update ? update['data'] : update) as Record<string, unknown>
return buildNodeSelectionFromMutationData(data)
}
return undefined
}
/**
* Merges selections from all create/update operations in a hasMany array.
* Collects the union of scalar + relation fields across all operations.
*/
function buildSelectionFromOps(ops: unknown[]): GraphQlSelectionSet | undefined {
const scalarFields = new Set<string>()
const nestedFields = new Map<string, Record<string, unknown>>()
let hasOps = false
for (const item of ops) {
if (typeof item !== 'object' || item === null) continue
const op = item as Record<string, unknown>
const innerData =
('create' in op && typeof op['create'] === 'object' && op['create'] !== null)
? op['create'] as Record<string, unknown>
: ('update' in op && typeof op['update'] === 'object' && op['update'] !== null)
? (() => { const u = op['update'] as Record<string, unknown>; return ('data' in u ? u['data'] : u) as Record<string, unknown> })()
: null
if (!innerData) continue
hasOps = true
for (const [key, value] of Object.entries(innerData)) {
if (value === null || value === undefined) continue
if (typeof value === 'object') {
nestedFields.set(key, value as Record<string, unknown>)
} else {
scalarFields.add(key)
}
}
}
if (!hasOps) return undefined
const fields: GraphQlSelectionSet = [new GraphQlField(null, 'id')]
for (const fieldName of scalarFields) {
fields.push(new GraphQlField(null, fieldName))
}
for (const [fieldName, value] of nestedFields) {
if (Array.isArray(value)) {
const nested = buildSelectionFromOps(value)
if (nested) fields.push(new GraphQlField(null, fieldName, {}, nested))
} else {
const nested = buildSelectionFromCreateOrUpdate(value as Record<string, unknown>)
if (nested) fields.push(new GraphQlField(null, fieldName, {}, nested))
}
}
return fields
}

@@ -134,2 +134,2 @@ /**

export { buildTypedArgs, buildListArgs, buildGetArgs, buildCreateArgs, buildUpdateArgs, buildUpsertArgs, buildDeleteArgs } from './graphql/index.js'
export { mutationFragments, buildMutationSelection } from './graphql/index.js'
export { mutationFragments, buildMutationSelection, buildNodeSelectionFromMutationData } from './graphql/index.js'