@contember/client-content 2.1.0-alpha.8 → 2.1.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +52 -0
- package/dist/development/src/ContentClient.cjs +12 -0
- package/dist/development/src/ContentClient.cjs.map +1 -1
- package/dist/development/src/ContentClient.js +12 -0
- package/dist/development/src/ContentClient.js.map +1 -1
- package/dist/development/src/ContentQueryBuilder.cjs +26 -15
- package/dist/development/src/ContentQueryBuilder.cjs.map +1 -1
- package/dist/development/src/ContentQueryBuilder.js +26 -15
- package/dist/development/src/ContentQueryBuilder.js.map +1 -1
- package/dist/development/src/MutationFailedError.cjs +11 -0
- package/dist/development/src/MutationFailedError.cjs.map +1 -0
- package/dist/development/src/MutationFailedError.js +11 -0
- package/dist/development/src/MutationFailedError.js.map +1 -0
- package/dist/development/src/nodes/ContentEntitySelection.cjs +47 -12
- package/dist/development/src/nodes/ContentEntitySelection.cjs.map +1 -1
- package/dist/development/src/nodes/ContentEntitySelection.js +47 -12
- package/dist/development/src/nodes/ContentEntitySelection.js.map +1 -1
- package/dist/development/src/nodes/ContentOperation.cjs.map +1 -1
- package/dist/development/src/nodes/ContentOperation.js.map +1 -1
- package/dist/development/src/utils/ContentOperationSet.cjs.map +1 -1
- package/dist/development/src/utils/ContentOperationSet.js.map +1 -1
- package/dist/development/src/utils/createListArgs.cjs.map +1 -1
- package/dist/development/src/utils/createListArgs.js.map +1 -1
- package/dist/development/src/utils/createMutationOperationSet.cjs +8 -6
- package/dist/development/src/utils/createMutationOperationSet.cjs.map +1 -1
- package/dist/development/src/utils/createMutationOperationSet.js +8 -6
- package/dist/development/src/utils/createMutationOperationSet.js.map +1 -1
- package/dist/development/src/utils/createQueryOperationSet.cjs.map +1 -1
- package/dist/development/src/utils/createQueryOperationSet.js.map +1 -1
- package/dist/development/src/utils/createTypedArgs.cjs.map +1 -1
- package/dist/development/src/utils/createTypedArgs.js.map +1 -1
- package/dist/development/src/utils/mutationFragments.cjs.map +1 -1
- package/dist/development/src/utils/mutationFragments.js.map +1 -1
- package/dist/production/src/ContentClient.cjs +12 -0
- package/dist/production/src/ContentClient.cjs.map +1 -1
- package/dist/production/src/ContentClient.js +12 -0
- package/dist/production/src/ContentClient.js.map +1 -1
- package/dist/production/src/ContentQueryBuilder.cjs +26 -15
- package/dist/production/src/ContentQueryBuilder.cjs.map +1 -1
- package/dist/production/src/ContentQueryBuilder.js +26 -15
- package/dist/production/src/ContentQueryBuilder.js.map +1 -1
- package/dist/production/src/MutationFailedError.cjs +11 -0
- package/dist/production/src/MutationFailedError.cjs.map +1 -0
- package/dist/production/src/MutationFailedError.js +11 -0
- package/dist/production/src/MutationFailedError.js.map +1 -0
- package/dist/production/src/nodes/ContentEntitySelection.cjs +47 -12
- package/dist/production/src/nodes/ContentEntitySelection.cjs.map +1 -1
- package/dist/production/src/nodes/ContentEntitySelection.js +47 -12
- package/dist/production/src/nodes/ContentEntitySelection.js.map +1 -1
- package/dist/production/src/nodes/ContentOperation.cjs.map +1 -1
- package/dist/production/src/nodes/ContentOperation.js.map +1 -1
- package/dist/production/src/utils/ContentOperationSet.cjs.map +1 -1
- package/dist/production/src/utils/ContentOperationSet.js.map +1 -1
- package/dist/production/src/utils/createListArgs.cjs.map +1 -1
- package/dist/production/src/utils/createListArgs.js.map +1 -1
- package/dist/production/src/utils/createMutationOperationSet.cjs +8 -6
- package/dist/production/src/utils/createMutationOperationSet.cjs.map +1 -1
- package/dist/production/src/utils/createMutationOperationSet.js +8 -6
- package/dist/production/src/utils/createMutationOperationSet.js.map +1 -1
- package/dist/production/src/utils/createQueryOperationSet.cjs.map +1 -1
- package/dist/production/src/utils/createQueryOperationSet.js.map +1 -1
- package/dist/production/src/utils/createTypedArgs.cjs.map +1 -1
- package/dist/production/src/utils/createTypedArgs.js.map +1 -1
- package/dist/production/src/utils/mutationFragments.cjs.map +1 -1
- package/dist/production/src/utils/mutationFragments.js.map +1 -1
- package/dist/types/ContentClient.d.ts +10 -0
- package/dist/types/ContentClient.d.ts.map +1 -1
- package/dist/types/ContentQueryBuilder.d.ts.map +1 -1
- package/dist/types/MutationFailedError.d.ts +13 -0
- package/dist/types/MutationFailedError.d.ts.map +1 -0
- package/dist/types/TypedContentQueryBuilder.d.ts.map +1 -1
- package/dist/types/nodes/ContentEntitySelection.d.ts +4 -1
- package/dist/types/nodes/ContentEntitySelection.d.ts.map +1 -1
- package/dist/types/nodes/TypedEntitySelection.d.ts +1 -0
- package/dist/types/nodes/TypedEntitySelection.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dist/types/types/Input.d.ts.map +1 -1
- package/dist/types/types/Result.d.ts +30 -9
- package/dist/types/types/Result.d.ts.map +1 -1
- package/dist/types/utils/createListArgs.d.ts.map +1 -1
- package/dist/types/utils/createMutationOperationSet.d.ts.map +1 -1
- package/dist/types/utils/createQueryOperationSet.d.ts.map +1 -1
- package/package.json +6 -6
- package/src/ContentClient.ts +36 -9
- package/src/ContentQueryBuilder.ts +45 -35
- package/src/MutationFailedError.ts +19 -0
- package/src/TypedContentQueryBuilder.ts +0 -4
- package/src/nodes/ContentEntitySelection.ts +67 -23
- package/src/nodes/TypedEntitySelection.ts +96 -48
- package/src/types/Input.ts +1 -9
- package/src/types/Result.ts +41 -9
- package/src/types/Schema.ts +0 -1
- package/src/utils/createListArgs.ts +5 -1
- package/src/utils/createMutationOperationSet.ts +9 -7
- package/src/utils/createQueryOperationSet.ts +0 -1
- package/tests/cases/unit/__snapshots__/mutation.test.ts.snap +952 -818
- package/tests/cases/unit/__snapshots__/query.test.ts.snap +216 -60
- package/tests/cases/unit/mutation.test.ts +48 -3
- package/tests/cases/unit/query.test.ts +103 -82
- package/tests/cases/unit/types.test.ts +31 -27
- package/tests/client/entities.ts +2 -0
- package/tests/client/enums.ts +5 -0
- package/tests/client/names.ts +129 -117
- package/tests/generate.ts +0 -1
- package/tests/lib.ts +0 -1
- package/tests/schema.ts +1 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentQueryBuilder.cjs","sources":["../../../../packages/client-content/src/ContentQueryBuilder.ts"],"sourcesContent":["import { ContentClientInput, MutationResult, SchemaNames, TransactionResult } from './types'\nimport { ContentEntitySelection, ContentEntitySelectionCallback, ContentEntitySelectionContext, ContentMutation, ContentOperation, ContentQuery } from './nodes'\nimport { createListArgs } from './utils/createListArgs'\nimport { createTypedArgs } from './utils/createTypedArgs'\nimport { Input } from '@contember/schema'\nimport { GraphQlField, GraphQlFieldTypedArgs, GraphQlFragmentSpread, GraphQlSelectionSet } from '@contember/graphql-builder'\nimport { createMutationOperationSet } from './utils/createMutationOperationSet'\n\nexport type EntitySelectionOrCallback =\n\t| ContentEntitySelection\n\t| ContentEntitySelectionCallback\n\nexport type MutationTransactionOptions = {\n\tdeferForeignKeyConstraints?: boolean\n\tdeferUniqueConstraints?: boolean\n}\n\ntype MutationOperation = 'create' | 'update' | 'delete' | 'upsert' | 'transaction'\n\nexport class ContentQueryBuilder {\n\tconstructor(private readonly schema: SchemaNames) {\n\t}\n\n\n\tpublic fragment(name: string, fieldsCallback?: ContentEntitySelectionCallback): ContentEntitySelection {\n\t\tconst context = this.createContext(name)\n\n\t\tconst entitySelection = new ContentEntitySelection(context, [])\n\t\tif (!fieldsCallback) {\n\t\t\treturn entitySelection\n\t\t}\n\t\treturn fieldsCallback(entitySelection)\n\t}\n\n\n\n\tpublic count(name: string, args: Pick<ContentClientInput.AnyListQueryInput, 'filter'>): ContentQuery<number> {\n\t\tconst context = this.createContext(name)\n\t\tconst fieldName = `paginate${name}`\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tfilter: `${context.entity.name}Where`,\n\t\t})\n\t\tconst selectionSet: GraphQlSelectionSet = [\n\t\t\tnew GraphQlField(null, 'pageInfo', {}, [\n\t\t\t\tnew GraphQlField(null, 'totalCount'),\n\t\t\t]),\n\t\t]\n\n\t\treturn new ContentOperation('query', fieldName, typedArgs, selectionSet, it => {\n\t\t\treturn it.pageInfo.totalCount\n\t\t})\n\t}\n\n\n\tpublic list(name: string, args: ContentClientInput.AnyListQueryInput, fields: EntitySelectionOrCallback): ContentQuery<any[]> {\n\t\tconst context = this.createContext(name)\n\t\tconst fieldName = `list${name}`\n\t\tconst typedArgs = createListArgs(context.entity, args)\n\t\tconst selection = this.resolveSelection(fields, context)\n\n\t\treturn new ContentOperation('query', fieldName, typedArgs, selection.selectionSet, it => {\n\t\t\tconst transformFn = selection.transformFn\n\t\t\tif (transformFn) {\n\t\t\t\treturn it.map((el: any) => transformFn(el, {\n\t\t\t\t\trootValue: it,\n\t\t\t\t}))\n\t\t\t}\n\t\t\treturn it\n\t\t})\n\t}\n\n\n\tpublic get(name: string, args: Input.UniqueQueryInput, fields: EntitySelectionOrCallback): ContentQuery<Record<string, unknown> | null> {\n\t\tconst context = this.createContext(name)\n\t\tconst fieldName = `get${name}`\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tby: `${context.entity.name}UniqueWhere!`,\n\t\t\tfilter: `${context.entity.name}Where`,\n\t\t})\n\t\tconst selection = this.resolveSelection(fields, context)\n\n\t\treturn new ContentOperation('query', fieldName, typedArgs, selection.selectionSet, it => {\n\t\t\tif (it && selection.transformFn) {\n\t\t\t\treturn selection.transformFn(it, {\n\t\t\t\t\trootValue: it,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn it\n\t\t})\n\t}\n\n\n\tpublic create(name: string, args: Input.CreateInput, fields?: EntitySelectionOrCallback): ContentMutation<MutationResult> {\n\n\t\tconst entity = this.getEntity(name)\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tdata: `${entity.name}CreateInput!`,\n\t\t})\n\n\t\treturn this.createMutationOperation(name, 'create', typedArgs, fields)\n\t}\n\n\tpublic update(name: string, args: Input.UpdateInput, fields?: EntitySelectionOrCallback): ContentMutation<MutationResult> {\n\n\t\tconst entity = this.getEntity(name)\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tdata: `${entity.name}UpdateInput!`,\n\t\t\tby: `${entity.name}UniqueWhere!`,\n\t\t\tfilter: `${entity.name}Where`,\n\t\t})\n\t\treturn this.createMutationOperation(name, 'update', typedArgs, fields)\n\t}\n\n\n\tpublic upsert(name: string, args: Input.UpsertInput, fields?: EntitySelectionOrCallback): ContentMutation<MutationResult> {\n\n\t\tconst entity = this.getEntity(name)\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tupdate: `${entity.name}UpdateInput!`,\n\t\t\tcreate: `${entity.name}CreateInput!`,\n\t\t\tby: `${entity.name}UniqueWhere!`,\n\t\t\tfilter: `${entity.name}Where`,\n\t\t})\n\t\treturn this.createMutationOperation(name, 'upsert', typedArgs, fields)\n\t}\n\n\n\tpublic delete(name: string, args: Input.UniqueQueryInput, fields?: EntitySelectionOrCallback): ContentMutation<MutationResult> {\n\n\t\tconst entity = this.getEntity(name)\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tby: `${entity.name}UniqueWhere!`,\n\t\t\tfilter: `${entity.name}Where`,\n\t\t})\n\t\treturn this.createMutationOperation(name, 'delete', typedArgs, fields)\n\t}\n\n\n\tprivate createMutationOperation(name: string, operation: MutationOperation, args: GraphQlFieldTypedArgs, fields?: EntitySelectionOrCallback): ContentMutation<MutationResult> {\n\n\t\tconst context = this.createContext(name)\n\t\tconst fieldName = `${operation}${name}`\n\t\tconst nodeSelection = fields ? this.resolveSelection(fields, context) : undefined\n\t\tconst selectionSet = this.createMutationSelection(operation, nodeSelection?.selectionSet)\n\n\t\treturn new ContentOperation('mutation', fieldName, args, selectionSet, it => {\n\t\t\tif (!nodeSelection?.transformFn) {\n\t\t\t\treturn it\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...it,\n\t\t\t\tnode: it.node ? nodeSelection.transformFn(it.node, {\n\t\t\t\t\trootValue: it.node,\n\t\t\t\t}) : null,\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic transaction(\n\t\tinput: Record<string, ContentMutation<any> | ContentQuery<any>> | ContentMutation<any> | ContentMutation<any>[],\n\t\toptions: MutationTransactionOptions = {},\n\t): ContentMutation<TransactionResult<any>> {\n\t\tconst combined = createMutationOperationSet(input)\n\n\t\tconst transactionArgs = createTypedArgs({ options }, {\n\t\t\toptions: 'MutationTransactionOptions',\n\t\t})\n\t\tconst items = [\n\t\t\t...this.createMutationSelection('transaction'),\n\t\t\t...combined.selection,\n\t\t]\n\t\treturn new ContentOperation<TransactionResult<any>, 'mutation'>('mutation', 'transaction', transactionArgs, items, ({ ok, errorMessage, errors, validation, ...data }) => {\n\t\t\treturn {\n\t\t\t\tok,\n\t\t\t\terrorMessage,\n\t\t\t\terrors,\n\t\t\t\tvalidation,\n\t\t\t\tdata: combined.parse(data),\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate createMutationSelection(operation: MutationOperation, selection?: GraphQlSelectionSet): GraphQlSelectionSet {\n\t\tconst items: GraphQlSelectionSet = [\n\t\t\tnew GraphQlField(null, 'ok'),\n\t\t\tnew GraphQlField(null, 'errorMessage'),\n\t\t\tnew GraphQlField(null, 'errors', {}, [\n\t\t\t\tnew GraphQlFragmentSpread('MutationError'),\n\t\t\t]),\n\t\t]\n\t\tif (operation !== 'delete') {\n\t\t\titems.push(new GraphQlField(null, 'validation', {}, [\n\t\t\t\tnew GraphQlFragmentSpread('ValidationResult'),\n\t\t\t]))\n\t\t}\n\t\tif (selection) {\n\t\t\titems.push(new GraphQlField(null, 'node', {}, selection))\n\t\t}\n\t\treturn items\n\t}\n\n\n\tprivate resolveSelection(\n\t\tfields: EntitySelectionOrCallback,\n\t\tcontext: ContentEntitySelectionContext<string>,\n\t) {\n\t\treturn (typeof fields === 'function' ? fields(new ContentEntitySelection(context, [])) : fields)\n\t}\n\n\tprivate createContext(\n\t\tname: string,\n\t): ContentEntitySelectionContext<string> {\n\t\tconst entity = this.getEntity(name)\n\t\treturn {\n\t\t\tentity: entity,\n\t\t\tschema: this.schema,\n\t\t}\n\t}\n\n\tprivate getEntity(name: string) {\n\t\tconst entity = this.schema.entities[name]\n\t\tif (!entity) {\n\t\t\tthrow new Error(`Entity ${name} not found`)\n\t\t}\n\t\treturn entity\n\t}\n}\n"],"names":["ContentEntitySelection","createTypedArgs","GraphQlField","ContentOperation","createListArgs","createMutationOperationSet","GraphQlFragmentSpread"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ContentQueryBuilder.cjs","sources":["../../../../packages/client-content/src/ContentQueryBuilder.ts"],"sourcesContent":["import { ContentClientInput, MutationResult, SchemaNames, TransactionResult } from './types'\nimport {\n\tContentEntitySelection,\n\tContentEntitySelectionCallback,\n\tContentEntitySelectionContext,\n\tContentMutation,\n\tContentOperation,\n\tContentQuery,\n} from './nodes'\nimport { createListArgs } from './utils/createListArgs'\nimport { createTypedArgs } from './utils/createTypedArgs'\nimport { Input } from '@contember/schema'\nimport { GraphQlField, GraphQlFieldTypedArgs, GraphQlFragmentSpread, GraphQlSelectionSet } from '@contember/graphql-builder'\nimport { createMutationOperationSet } from './utils/createMutationOperationSet'\n\nexport type EntitySelectionOrCallback =\n\t| ContentEntitySelection\n\t| ContentEntitySelectionCallback\n\nexport type MutationTransactionOptions = {\n\tdeferForeignKeyConstraints?: boolean\n\tdeferUniqueConstraints?: boolean\n}\n\ntype MutationOperation = 'create' | 'update' | 'delete' | 'upsert' | 'transaction'\n\nexport class ContentQueryBuilder {\n\tconstructor(private readonly schema: SchemaNames) {\n\t}\n\n\tpublic fragment(name: string, fieldsCallback?: ContentEntitySelectionCallback): ContentEntitySelection {\n\t\tconst context = this.createContext(name)\n\n\t\tconst entitySelection = new ContentEntitySelection(context, [])\n\t\tif (!fieldsCallback) {\n\t\t\treturn entitySelection\n\t\t}\n\t\treturn fieldsCallback(entitySelection)\n\t}\n\n\tpublic count(name: string, args: Pick<ContentClientInput.AnyListQueryInput, 'filter'>): ContentQuery<number> {\n\t\tconst context = this.createContext(name)\n\t\tconst fieldName = `paginate${name}`\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tfilter: `${context.entity.name}Where`,\n\t\t})\n\t\tconst selectionSet: GraphQlSelectionSet = [\n\t\t\tnew GraphQlField(null, 'pageInfo', {}, [\n\t\t\t\tnew GraphQlField(null, 'totalCount'),\n\t\t\t]),\n\t\t]\n\n\t\treturn new ContentOperation('query', fieldName, typedArgs, selectionSet, it => {\n\t\t\treturn it.pageInfo.totalCount\n\t\t})\n\t}\n\n\tpublic list(name: string, args: ContentClientInput.AnyListQueryInput, fields: EntitySelectionOrCallback): ContentQuery<any[]> {\n\t\tconst context = this.createContext(name)\n\t\tconst fieldName = `list${name}`\n\t\tconst typedArgs = createListArgs(context.entity, args)\n\t\tconst selection = this.resolveSelection(fields, context)\n\n\t\treturn new ContentOperation('query', fieldName, typedArgs, selection.selectionSet, it => {\n\t\t\tif (!it) return it\n\t\t\tconst transformFn = selection.transformFn\n\t\t\tif (transformFn) {\n\t\t\t\treturn it.map((el: any) =>\n\t\t\t\t\ttransformFn(el, {\n\t\t\t\t\t\trootValue: it,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn it\n\t\t})\n\t}\n\n\tpublic get(name: string, args: Input.UniqueQueryInput, fields: EntitySelectionOrCallback): ContentQuery<Record<string, unknown> | null> {\n\t\tconst context = this.createContext(name)\n\t\tconst fieldName = `get${name}`\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tby: `${context.entity.name}UniqueWhere!`,\n\t\t\tfilter: `${context.entity.name}Where`,\n\t\t})\n\t\tconst selection = this.resolveSelection(fields, context)\n\n\t\treturn new ContentOperation('query', fieldName, typedArgs, selection.selectionSet, it => {\n\t\t\tif (it && selection.transformFn) {\n\t\t\t\treturn selection.transformFn(it, {\n\t\t\t\t\trootValue: it,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn it\n\t\t})\n\t}\n\n\tpublic create(name: string, args: Input.CreateInput, fields?: EntitySelectionOrCallback): ContentMutation<MutationResult> {\n\t\tconst entity = this.getEntity(name)\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tdata: `${entity.name}CreateInput!`,\n\t\t})\n\n\t\treturn this.createMutationOperation(name, 'create', typedArgs, fields)\n\t}\n\n\tpublic update(name: string, args: Input.UpdateInput, fields?: EntitySelectionOrCallback): ContentMutation<MutationResult> {\n\t\tconst entity = this.getEntity(name)\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tdata: `${entity.name}UpdateInput!`,\n\t\t\tby: `${entity.name}UniqueWhere!`,\n\t\t\tfilter: `${entity.name}Where`,\n\t\t})\n\t\treturn this.createMutationOperation(name, 'update', typedArgs, fields)\n\t}\n\n\tpublic upsert(name: string, args: Input.UpsertInput, fields?: EntitySelectionOrCallback): ContentMutation<MutationResult> {\n\t\tconst entity = this.getEntity(name)\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tupdate: `${entity.name}UpdateInput!`,\n\t\t\tcreate: `${entity.name}CreateInput!`,\n\t\t\tby: `${entity.name}UniqueWhere!`,\n\t\t\tfilter: `${entity.name}Where`,\n\t\t})\n\t\treturn this.createMutationOperation(name, 'upsert', typedArgs, fields)\n\t}\n\n\tpublic delete(name: string, args: Input.UniqueQueryInput, fields?: EntitySelectionOrCallback): ContentMutation<MutationResult> {\n\t\tconst entity = this.getEntity(name)\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tby: `${entity.name}UniqueWhere!`,\n\t\t\tfilter: `${entity.name}Where`,\n\t\t})\n\t\treturn this.createMutationOperation(name, 'delete', typedArgs, fields)\n\t}\n\n\tprivate createMutationOperation(\n\t\tname: string,\n\t\toperation: MutationOperation,\n\t\targs: GraphQlFieldTypedArgs,\n\t\tfields?: EntitySelectionOrCallback,\n\t): ContentMutation<MutationResult> {\n\t\tconst context = this.createContext(name)\n\t\tconst fieldName = `${operation}${name}`\n\t\tconst nodeSelection = fields ? this.resolveSelection(fields, context) : undefined\n\t\tconst selectionSet = this.createMutationSelection(operation, nodeSelection?.selectionSet)\n\n\t\treturn new ContentOperation('mutation', fieldName, args, selectionSet, it => {\n\t\t\tif (!nodeSelection?.transformFn) {\n\t\t\t\treturn it\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...it,\n\t\t\t\tnode: it.node\n\t\t\t\t\t? nodeSelection.transformFn(it.node, {\n\t\t\t\t\t\trootValue: it.node,\n\t\t\t\t\t})\n\t\t\t\t\t: null,\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic transaction(\n\t\tinput: Record<string, ContentMutation<any> | ContentQuery<any>> | ContentMutation<any> | ContentMutation<any>[],\n\t\toptions: MutationTransactionOptions = {},\n\t): ContentMutation<TransactionResult<any>> {\n\t\tconst combined = createMutationOperationSet(input)\n\n\t\tconst transactionArgs = createTypedArgs({ options }, {\n\t\t\toptions: 'MutationTransactionOptions',\n\t\t})\n\t\tconst items = [\n\t\t\t...this.createMutationSelection('transaction'),\n\t\t\t...combined.selection,\n\t\t]\n\t\treturn new ContentOperation<TransactionResult<any>, 'mutation'>(\n\t\t\t'mutation',\n\t\t\t'transaction',\n\t\t\ttransactionArgs,\n\t\t\titems,\n\t\t\t({ ok, errorMessage, errors, validation, ...data }) => {\n\t\t\t\treturn {\n\t\t\t\t\tok,\n\t\t\t\t\terrorMessage,\n\t\t\t\t\terrors,\n\t\t\t\t\tvalidation,\n\t\t\t\t\tdata: combined.parse(data),\n\t\t\t\t}\n\t\t\t},\n\t\t)\n\t}\n\n\tprivate createMutationSelection(operation: MutationOperation, selection?: GraphQlSelectionSet): GraphQlSelectionSet {\n\t\tconst items: GraphQlSelectionSet = [\n\t\t\tnew GraphQlField(null, 'ok'),\n\t\t\tnew GraphQlField(null, 'errorMessage'),\n\t\t\tnew GraphQlField(null, 'errors', {}, [\n\t\t\t\tnew GraphQlFragmentSpread('MutationError'),\n\t\t\t]),\n\t\t]\n\t\tif (operation !== 'delete') {\n\t\t\titems.push(\n\t\t\t\tnew GraphQlField(null, 'validation', {}, [\n\t\t\t\t\tnew GraphQlFragmentSpread('ValidationResult'),\n\t\t\t\t]),\n\t\t\t)\n\t\t}\n\t\tif (selection) {\n\t\t\titems.push(new GraphQlField(null, 'node', {}, selection))\n\t\t}\n\t\treturn items\n\t}\n\n\tprivate resolveSelection(\n\t\tfields: EntitySelectionOrCallback,\n\t\tcontext: ContentEntitySelectionContext<string>,\n\t) {\n\t\treturn (typeof fields === 'function' ? fields(new ContentEntitySelection(context, [])) : fields)\n\t}\n\n\tprivate createContext(\n\t\tname: string,\n\t): ContentEntitySelectionContext<string> {\n\t\tconst entity = this.getEntity(name)\n\t\treturn {\n\t\t\tentity: entity,\n\t\t\tschema: this.schema,\n\t\t}\n\t}\n\n\tprivate getEntity(name: string) {\n\t\tconst entity = this.schema.entities[name]\n\t\tif (!entity) {\n\t\t\tthrow new Error(`Entity ${name} not found`)\n\t\t}\n\t\treturn entity\n\t}\n}\n"],"names":["ContentEntitySelection","createTypedArgs","GraphQlField","ContentOperation","createListArgs","createMutationOperationSet","GraphQlFragmentSpread"],"mappings":"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"}
|
|
@@ -37,11 +37,14 @@ class ContentQueryBuilder {
|
|
|
37
37
|
const typedArgs = createListArgs(context.entity, args);
|
|
38
38
|
const selection = this.resolveSelection(fields, context);
|
|
39
39
|
return new ContentOperation("query", fieldName, typedArgs, selection.selectionSet, (it) => {
|
|
40
|
+
if (!it) return it;
|
|
40
41
|
const transformFn = selection.transformFn;
|
|
41
42
|
if (transformFn) {
|
|
42
|
-
return it.map(
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
return it.map(
|
|
44
|
+
(el) => transformFn(el, {
|
|
45
|
+
rootValue: it
|
|
46
|
+
})
|
|
47
|
+
);
|
|
45
48
|
}
|
|
46
49
|
return it;
|
|
47
50
|
});
|
|
@@ -123,15 +126,21 @@ class ContentQueryBuilder {
|
|
|
123
126
|
...this.createMutationSelection("transaction"),
|
|
124
127
|
...combined.selection
|
|
125
128
|
];
|
|
126
|
-
return new ContentOperation(
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
129
|
+
return new ContentOperation(
|
|
130
|
+
"mutation",
|
|
131
|
+
"transaction",
|
|
132
|
+
transactionArgs,
|
|
133
|
+
items,
|
|
134
|
+
({ ok, errorMessage, errors, validation, ...data }) => {
|
|
135
|
+
return {
|
|
136
|
+
ok,
|
|
137
|
+
errorMessage,
|
|
138
|
+
errors,
|
|
139
|
+
validation,
|
|
140
|
+
data: combined.parse(data)
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
);
|
|
135
144
|
}
|
|
136
145
|
createMutationSelection(operation, selection) {
|
|
137
146
|
const items = [
|
|
@@ -142,9 +151,11 @@ class ContentQueryBuilder {
|
|
|
142
151
|
])
|
|
143
152
|
];
|
|
144
153
|
if (operation !== "delete") {
|
|
145
|
-
items.push(
|
|
146
|
-
new
|
|
147
|
-
|
|
154
|
+
items.push(
|
|
155
|
+
new GraphQlField(null, "validation", {}, [
|
|
156
|
+
new GraphQlFragmentSpread("ValidationResult")
|
|
157
|
+
])
|
|
158
|
+
);
|
|
148
159
|
}
|
|
149
160
|
if (selection) {
|
|
150
161
|
items.push(new GraphQlField(null, "node", {}, selection));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentQueryBuilder.js","sources":["../../../../packages/client-content/src/ContentQueryBuilder.ts"],"sourcesContent":["import { ContentClientInput, MutationResult, SchemaNames, TransactionResult } from './types'\nimport { ContentEntitySelection, ContentEntitySelectionCallback, ContentEntitySelectionContext, ContentMutation, ContentOperation, ContentQuery } from './nodes'\nimport { createListArgs } from './utils/createListArgs'\nimport { createTypedArgs } from './utils/createTypedArgs'\nimport { Input } from '@contember/schema'\nimport { GraphQlField, GraphQlFieldTypedArgs, GraphQlFragmentSpread, GraphQlSelectionSet } from '@contember/graphql-builder'\nimport { createMutationOperationSet } from './utils/createMutationOperationSet'\n\nexport type EntitySelectionOrCallback =\n\t| ContentEntitySelection\n\t| ContentEntitySelectionCallback\n\nexport type MutationTransactionOptions = {\n\tdeferForeignKeyConstraints?: boolean\n\tdeferUniqueConstraints?: boolean\n}\n\ntype MutationOperation = 'create' | 'update' | 'delete' | 'upsert' | 'transaction'\n\nexport class ContentQueryBuilder {\n\tconstructor(private readonly schema: SchemaNames) {\n\t}\n\n\n\tpublic fragment(name: string, fieldsCallback?: ContentEntitySelectionCallback): ContentEntitySelection {\n\t\tconst context = this.createContext(name)\n\n\t\tconst entitySelection = new ContentEntitySelection(context, [])\n\t\tif (!fieldsCallback) {\n\t\t\treturn entitySelection\n\t\t}\n\t\treturn fieldsCallback(entitySelection)\n\t}\n\n\n\n\tpublic count(name: string, args: Pick<ContentClientInput.AnyListQueryInput, 'filter'>): ContentQuery<number> {\n\t\tconst context = this.createContext(name)\n\t\tconst fieldName = `paginate${name}`\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tfilter: `${context.entity.name}Where`,\n\t\t})\n\t\tconst selectionSet: GraphQlSelectionSet = [\n\t\t\tnew GraphQlField(null, 'pageInfo', {}, [\n\t\t\t\tnew GraphQlField(null, 'totalCount'),\n\t\t\t]),\n\t\t]\n\n\t\treturn new ContentOperation('query', fieldName, typedArgs, selectionSet, it => {\n\t\t\treturn it.pageInfo.totalCount\n\t\t})\n\t}\n\n\n\tpublic list(name: string, args: ContentClientInput.AnyListQueryInput, fields: EntitySelectionOrCallback): ContentQuery<any[]> {\n\t\tconst context = this.createContext(name)\n\t\tconst fieldName = `list${name}`\n\t\tconst typedArgs = createListArgs(context.entity, args)\n\t\tconst selection = this.resolveSelection(fields, context)\n\n\t\treturn new ContentOperation('query', fieldName, typedArgs, selection.selectionSet, it => {\n\t\t\tconst transformFn = selection.transformFn\n\t\t\tif (transformFn) {\n\t\t\t\treturn it.map((el: any) => transformFn(el, {\n\t\t\t\t\trootValue: it,\n\t\t\t\t}))\n\t\t\t}\n\t\t\treturn it\n\t\t})\n\t}\n\n\n\tpublic get(name: string, args: Input.UniqueQueryInput, fields: EntitySelectionOrCallback): ContentQuery<Record<string, unknown> | null> {\n\t\tconst context = this.createContext(name)\n\t\tconst fieldName = `get${name}`\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tby: `${context.entity.name}UniqueWhere!`,\n\t\t\tfilter: `${context.entity.name}Where`,\n\t\t})\n\t\tconst selection = this.resolveSelection(fields, context)\n\n\t\treturn new ContentOperation('query', fieldName, typedArgs, selection.selectionSet, it => {\n\t\t\tif (it && selection.transformFn) {\n\t\t\t\treturn selection.transformFn(it, {\n\t\t\t\t\trootValue: it,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn it\n\t\t})\n\t}\n\n\n\tpublic create(name: string, args: Input.CreateInput, fields?: EntitySelectionOrCallback): ContentMutation<MutationResult> {\n\n\t\tconst entity = this.getEntity(name)\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tdata: `${entity.name}CreateInput!`,\n\t\t})\n\n\t\treturn this.createMutationOperation(name, 'create', typedArgs, fields)\n\t}\n\n\tpublic update(name: string, args: Input.UpdateInput, fields?: EntitySelectionOrCallback): ContentMutation<MutationResult> {\n\n\t\tconst entity = this.getEntity(name)\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tdata: `${entity.name}UpdateInput!`,\n\t\t\tby: `${entity.name}UniqueWhere!`,\n\t\t\tfilter: `${entity.name}Where`,\n\t\t})\n\t\treturn this.createMutationOperation(name, 'update', typedArgs, fields)\n\t}\n\n\n\tpublic upsert(name: string, args: Input.UpsertInput, fields?: EntitySelectionOrCallback): ContentMutation<MutationResult> {\n\n\t\tconst entity = this.getEntity(name)\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tupdate: `${entity.name}UpdateInput!`,\n\t\t\tcreate: `${entity.name}CreateInput!`,\n\t\t\tby: `${entity.name}UniqueWhere!`,\n\t\t\tfilter: `${entity.name}Where`,\n\t\t})\n\t\treturn this.createMutationOperation(name, 'upsert', typedArgs, fields)\n\t}\n\n\n\tpublic delete(name: string, args: Input.UniqueQueryInput, fields?: EntitySelectionOrCallback): ContentMutation<MutationResult> {\n\n\t\tconst entity = this.getEntity(name)\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tby: `${entity.name}UniqueWhere!`,\n\t\t\tfilter: `${entity.name}Where`,\n\t\t})\n\t\treturn this.createMutationOperation(name, 'delete', typedArgs, fields)\n\t}\n\n\n\tprivate createMutationOperation(name: string, operation: MutationOperation, args: GraphQlFieldTypedArgs, fields?: EntitySelectionOrCallback): ContentMutation<MutationResult> {\n\n\t\tconst context = this.createContext(name)\n\t\tconst fieldName = `${operation}${name}`\n\t\tconst nodeSelection = fields ? this.resolveSelection(fields, context) : undefined\n\t\tconst selectionSet = this.createMutationSelection(operation, nodeSelection?.selectionSet)\n\n\t\treturn new ContentOperation('mutation', fieldName, args, selectionSet, it => {\n\t\t\tif (!nodeSelection?.transformFn) {\n\t\t\t\treturn it\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...it,\n\t\t\t\tnode: it.node ? nodeSelection.transformFn(it.node, {\n\t\t\t\t\trootValue: it.node,\n\t\t\t\t}) : null,\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic transaction(\n\t\tinput: Record<string, ContentMutation<any> | ContentQuery<any>> | ContentMutation<any> | ContentMutation<any>[],\n\t\toptions: MutationTransactionOptions = {},\n\t): ContentMutation<TransactionResult<any>> {\n\t\tconst combined = createMutationOperationSet(input)\n\n\t\tconst transactionArgs = createTypedArgs({ options }, {\n\t\t\toptions: 'MutationTransactionOptions',\n\t\t})\n\t\tconst items = [\n\t\t\t...this.createMutationSelection('transaction'),\n\t\t\t...combined.selection,\n\t\t]\n\t\treturn new ContentOperation<TransactionResult<any>, 'mutation'>('mutation', 'transaction', transactionArgs, items, ({ ok, errorMessage, errors, validation, ...data }) => {\n\t\t\treturn {\n\t\t\t\tok,\n\t\t\t\terrorMessage,\n\t\t\t\terrors,\n\t\t\t\tvalidation,\n\t\t\t\tdata: combined.parse(data),\n\t\t\t}\n\t\t})\n\t}\n\n\tprivate createMutationSelection(operation: MutationOperation, selection?: GraphQlSelectionSet): GraphQlSelectionSet {\n\t\tconst items: GraphQlSelectionSet = [\n\t\t\tnew GraphQlField(null, 'ok'),\n\t\t\tnew GraphQlField(null, 'errorMessage'),\n\t\t\tnew GraphQlField(null, 'errors', {}, [\n\t\t\t\tnew GraphQlFragmentSpread('MutationError'),\n\t\t\t]),\n\t\t]\n\t\tif (operation !== 'delete') {\n\t\t\titems.push(new GraphQlField(null, 'validation', {}, [\n\t\t\t\tnew GraphQlFragmentSpread('ValidationResult'),\n\t\t\t]))\n\t\t}\n\t\tif (selection) {\n\t\t\titems.push(new GraphQlField(null, 'node', {}, selection))\n\t\t}\n\t\treturn items\n\t}\n\n\n\tprivate resolveSelection(\n\t\tfields: EntitySelectionOrCallback,\n\t\tcontext: ContentEntitySelectionContext<string>,\n\t) {\n\t\treturn (typeof fields === 'function' ? fields(new ContentEntitySelection(context, [])) : fields)\n\t}\n\n\tprivate createContext(\n\t\tname: string,\n\t): ContentEntitySelectionContext<string> {\n\t\tconst entity = this.getEntity(name)\n\t\treturn {\n\t\t\tentity: entity,\n\t\t\tschema: this.schema,\n\t\t}\n\t}\n\n\tprivate getEntity(name: string) {\n\t\tconst entity = this.schema.entities[name]\n\t\tif (!entity) {\n\t\t\tthrow new Error(`Entity ${name} not found`)\n\t\t}\n\t\treturn entity\n\t}\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ContentQueryBuilder.js","sources":["../../../../packages/client-content/src/ContentQueryBuilder.ts"],"sourcesContent":["import { ContentClientInput, MutationResult, SchemaNames, TransactionResult } from './types'\nimport {\n\tContentEntitySelection,\n\tContentEntitySelectionCallback,\n\tContentEntitySelectionContext,\n\tContentMutation,\n\tContentOperation,\n\tContentQuery,\n} from './nodes'\nimport { createListArgs } from './utils/createListArgs'\nimport { createTypedArgs } from './utils/createTypedArgs'\nimport { Input } from '@contember/schema'\nimport { GraphQlField, GraphQlFieldTypedArgs, GraphQlFragmentSpread, GraphQlSelectionSet } from '@contember/graphql-builder'\nimport { createMutationOperationSet } from './utils/createMutationOperationSet'\n\nexport type EntitySelectionOrCallback =\n\t| ContentEntitySelection\n\t| ContentEntitySelectionCallback\n\nexport type MutationTransactionOptions = {\n\tdeferForeignKeyConstraints?: boolean\n\tdeferUniqueConstraints?: boolean\n}\n\ntype MutationOperation = 'create' | 'update' | 'delete' | 'upsert' | 'transaction'\n\nexport class ContentQueryBuilder {\n\tconstructor(private readonly schema: SchemaNames) {\n\t}\n\n\tpublic fragment(name: string, fieldsCallback?: ContentEntitySelectionCallback): ContentEntitySelection {\n\t\tconst context = this.createContext(name)\n\n\t\tconst entitySelection = new ContentEntitySelection(context, [])\n\t\tif (!fieldsCallback) {\n\t\t\treturn entitySelection\n\t\t}\n\t\treturn fieldsCallback(entitySelection)\n\t}\n\n\tpublic count(name: string, args: Pick<ContentClientInput.AnyListQueryInput, 'filter'>): ContentQuery<number> {\n\t\tconst context = this.createContext(name)\n\t\tconst fieldName = `paginate${name}`\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tfilter: `${context.entity.name}Where`,\n\t\t})\n\t\tconst selectionSet: GraphQlSelectionSet = [\n\t\t\tnew GraphQlField(null, 'pageInfo', {}, [\n\t\t\t\tnew GraphQlField(null, 'totalCount'),\n\t\t\t]),\n\t\t]\n\n\t\treturn new ContentOperation('query', fieldName, typedArgs, selectionSet, it => {\n\t\t\treturn it.pageInfo.totalCount\n\t\t})\n\t}\n\n\tpublic list(name: string, args: ContentClientInput.AnyListQueryInput, fields: EntitySelectionOrCallback): ContentQuery<any[]> {\n\t\tconst context = this.createContext(name)\n\t\tconst fieldName = `list${name}`\n\t\tconst typedArgs = createListArgs(context.entity, args)\n\t\tconst selection = this.resolveSelection(fields, context)\n\n\t\treturn new ContentOperation('query', fieldName, typedArgs, selection.selectionSet, it => {\n\t\t\tif (!it) return it\n\t\t\tconst transformFn = selection.transformFn\n\t\t\tif (transformFn) {\n\t\t\t\treturn it.map((el: any) =>\n\t\t\t\t\ttransformFn(el, {\n\t\t\t\t\t\trootValue: it,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn it\n\t\t})\n\t}\n\n\tpublic get(name: string, args: Input.UniqueQueryInput, fields: EntitySelectionOrCallback): ContentQuery<Record<string, unknown> | null> {\n\t\tconst context = this.createContext(name)\n\t\tconst fieldName = `get${name}`\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tby: `${context.entity.name}UniqueWhere!`,\n\t\t\tfilter: `${context.entity.name}Where`,\n\t\t})\n\t\tconst selection = this.resolveSelection(fields, context)\n\n\t\treturn new ContentOperation('query', fieldName, typedArgs, selection.selectionSet, it => {\n\t\t\tif (it && selection.transformFn) {\n\t\t\t\treturn selection.transformFn(it, {\n\t\t\t\t\trootValue: it,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn it\n\t\t})\n\t}\n\n\tpublic create(name: string, args: Input.CreateInput, fields?: EntitySelectionOrCallback): ContentMutation<MutationResult> {\n\t\tconst entity = this.getEntity(name)\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tdata: `${entity.name}CreateInput!`,\n\t\t})\n\n\t\treturn this.createMutationOperation(name, 'create', typedArgs, fields)\n\t}\n\n\tpublic update(name: string, args: Input.UpdateInput, fields?: EntitySelectionOrCallback): ContentMutation<MutationResult> {\n\t\tconst entity = this.getEntity(name)\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tdata: `${entity.name}UpdateInput!`,\n\t\t\tby: `${entity.name}UniqueWhere!`,\n\t\t\tfilter: `${entity.name}Where`,\n\t\t})\n\t\treturn this.createMutationOperation(name, 'update', typedArgs, fields)\n\t}\n\n\tpublic upsert(name: string, args: Input.UpsertInput, fields?: EntitySelectionOrCallback): ContentMutation<MutationResult> {\n\t\tconst entity = this.getEntity(name)\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tupdate: `${entity.name}UpdateInput!`,\n\t\t\tcreate: `${entity.name}CreateInput!`,\n\t\t\tby: `${entity.name}UniqueWhere!`,\n\t\t\tfilter: `${entity.name}Where`,\n\t\t})\n\t\treturn this.createMutationOperation(name, 'upsert', typedArgs, fields)\n\t}\n\n\tpublic delete(name: string, args: Input.UniqueQueryInput, fields?: EntitySelectionOrCallback): ContentMutation<MutationResult> {\n\t\tconst entity = this.getEntity(name)\n\t\tconst typedArgs = createTypedArgs(args, {\n\t\t\tby: `${entity.name}UniqueWhere!`,\n\t\t\tfilter: `${entity.name}Where`,\n\t\t})\n\t\treturn this.createMutationOperation(name, 'delete', typedArgs, fields)\n\t}\n\n\tprivate createMutationOperation(\n\t\tname: string,\n\t\toperation: MutationOperation,\n\t\targs: GraphQlFieldTypedArgs,\n\t\tfields?: EntitySelectionOrCallback,\n\t): ContentMutation<MutationResult> {\n\t\tconst context = this.createContext(name)\n\t\tconst fieldName = `${operation}${name}`\n\t\tconst nodeSelection = fields ? this.resolveSelection(fields, context) : undefined\n\t\tconst selectionSet = this.createMutationSelection(operation, nodeSelection?.selectionSet)\n\n\t\treturn new ContentOperation('mutation', fieldName, args, selectionSet, it => {\n\t\t\tif (!nodeSelection?.transformFn) {\n\t\t\t\treturn it\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t...it,\n\t\t\t\tnode: it.node\n\t\t\t\t\t? nodeSelection.transformFn(it.node, {\n\t\t\t\t\t\trootValue: it.node,\n\t\t\t\t\t})\n\t\t\t\t\t: null,\n\t\t\t}\n\t\t})\n\t}\n\n\tpublic transaction(\n\t\tinput: Record<string, ContentMutation<any> | ContentQuery<any>> | ContentMutation<any> | ContentMutation<any>[],\n\t\toptions: MutationTransactionOptions = {},\n\t): ContentMutation<TransactionResult<any>> {\n\t\tconst combined = createMutationOperationSet(input)\n\n\t\tconst transactionArgs = createTypedArgs({ options }, {\n\t\t\toptions: 'MutationTransactionOptions',\n\t\t})\n\t\tconst items = [\n\t\t\t...this.createMutationSelection('transaction'),\n\t\t\t...combined.selection,\n\t\t]\n\t\treturn new ContentOperation<TransactionResult<any>, 'mutation'>(\n\t\t\t'mutation',\n\t\t\t'transaction',\n\t\t\ttransactionArgs,\n\t\t\titems,\n\t\t\t({ ok, errorMessage, errors, validation, ...data }) => {\n\t\t\t\treturn {\n\t\t\t\t\tok,\n\t\t\t\t\terrorMessage,\n\t\t\t\t\terrors,\n\t\t\t\t\tvalidation,\n\t\t\t\t\tdata: combined.parse(data),\n\t\t\t\t}\n\t\t\t},\n\t\t)\n\t}\n\n\tprivate createMutationSelection(operation: MutationOperation, selection?: GraphQlSelectionSet): GraphQlSelectionSet {\n\t\tconst items: GraphQlSelectionSet = [\n\t\t\tnew GraphQlField(null, 'ok'),\n\t\t\tnew GraphQlField(null, 'errorMessage'),\n\t\t\tnew GraphQlField(null, 'errors', {}, [\n\t\t\t\tnew GraphQlFragmentSpread('MutationError'),\n\t\t\t]),\n\t\t]\n\t\tif (operation !== 'delete') {\n\t\t\titems.push(\n\t\t\t\tnew GraphQlField(null, 'validation', {}, [\n\t\t\t\t\tnew GraphQlFragmentSpread('ValidationResult'),\n\t\t\t\t]),\n\t\t\t)\n\t\t}\n\t\tif (selection) {\n\t\t\titems.push(new GraphQlField(null, 'node', {}, selection))\n\t\t}\n\t\treturn items\n\t}\n\n\tprivate resolveSelection(\n\t\tfields: EntitySelectionOrCallback,\n\t\tcontext: ContentEntitySelectionContext<string>,\n\t) {\n\t\treturn (typeof fields === 'function' ? fields(new ContentEntitySelection(context, [])) : fields)\n\t}\n\n\tprivate createContext(\n\t\tname: string,\n\t): ContentEntitySelectionContext<string> {\n\t\tconst entity = this.getEntity(name)\n\t\treturn {\n\t\t\tentity: entity,\n\t\t\tschema: this.schema,\n\t\t}\n\t}\n\n\tprivate getEntity(name: string) {\n\t\tconst entity = this.schema.entities[name]\n\t\tif (!entity) {\n\t\t\tthrow new Error(`Entity ${name} not found`)\n\t\t}\n\t\treturn entity\n\t}\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
class MutationFailedError extends Error {
|
|
4
|
+
constructor(message, request, result) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.request = request;
|
|
7
|
+
this.result = result;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.MutationFailedError = MutationFailedError;
|
|
11
|
+
//# sourceMappingURL=MutationFailedError.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MutationFailedError.cjs","sources":["../../../../packages/client-content/src/MutationFailedError.ts"],"sourcesContent":["import { MutationError, ValidationResult } from './types'\nimport { ContentMutation } from './nodes'\n\nexport class MutationFailedError<\n\tValue extends {\n\t\treadonly ok: false\n\t\treadonly errorMessage: string\n\t\treadonly errors: MutationError[]\n\t\treadonly validation: ValidationResult\n\t},\n> extends Error {\n\tconstructor(\n\t\tmessage: string,\n\t\tpublic readonly request: ContentMutation<Value>,\n\t\tpublic readonly result: Value,\n\t) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":";;AAGO,MAAM,4BAOH,MAAM;AAAA,EACf,YACC,SACgB,SACA,QACf;AACD,UAAM,OAAO;AAHG,SAAA,UAAA;AACA,SAAA,SAAA;AAAA,EAGjB;AACD;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MutationFailedError.js","sources":["../../../../packages/client-content/src/MutationFailedError.ts"],"sourcesContent":["import { MutationError, ValidationResult } from './types'\nimport { ContentMutation } from './nodes'\n\nexport class MutationFailedError<\n\tValue extends {\n\t\treadonly ok: false\n\t\treadonly errorMessage: string\n\t\treadonly errors: MutationError[]\n\t\treadonly validation: ValidationResult\n\t},\n> extends Error {\n\tconstructor(\n\t\tmessage: string,\n\t\tpublic readonly request: ContentMutation<Value>,\n\t\tpublic readonly result: Value,\n\t) {\n\t\tsuper(message)\n\t}\n}\n"],"names":[],"mappings":"AAGO,MAAM,4BAOH,MAAM;AAAA,EACf,YACC,SACgB,SACA,QACf;AACD,UAAM,OAAO;AAHG,SAAA,UAAA;AACA,SAAA,SAAA;AAAA,EAGjB;AACD;"}
|
|
@@ -51,6 +51,18 @@ class ContentEntitySelection {
|
|
|
51
51
|
];
|
|
52
52
|
return new ContentEntitySelection(this.context, nodes);
|
|
53
53
|
}
|
|
54
|
+
omit(...fields) {
|
|
55
|
+
return new ContentEntitySelection(
|
|
56
|
+
this.context,
|
|
57
|
+
this.selectionSet.filter((it) => {
|
|
58
|
+
if (!(it instanceof graphqlBuilder.GraphQlField)) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
const alias = it.alias ?? it.name;
|
|
62
|
+
return !fields.includes(alias);
|
|
63
|
+
})
|
|
64
|
+
);
|
|
65
|
+
}
|
|
54
66
|
meta(field, flags) {
|
|
55
67
|
const metaField = this.selectionSet.find((it) => it instanceof graphqlBuilder.GraphQlField && it.name === "_meta");
|
|
56
68
|
const selectionWithoutMeta = metaField ? this.selectionSet.filter((it) => it !== metaField) : this.selectionSet;
|
|
@@ -67,9 +79,13 @@ class ContentEntitySelection {
|
|
|
67
79
|
]);
|
|
68
80
|
}
|
|
69
81
|
transform(transform) {
|
|
70
|
-
return new ContentEntitySelection(
|
|
71
|
-
|
|
72
|
-
|
|
82
|
+
return new ContentEntitySelection(
|
|
83
|
+
this.context,
|
|
84
|
+
this.selectionSet,
|
|
85
|
+
!this.transformFn ? transform : (value, ctx) => {
|
|
86
|
+
return transform(this.transformFn(value, ctx), ctx);
|
|
87
|
+
}
|
|
88
|
+
);
|
|
73
89
|
}
|
|
74
90
|
_column(name, args = {}) {
|
|
75
91
|
let fieldInfo = this.context.entity.fields[name];
|
|
@@ -98,18 +114,37 @@ class ContentEntitySelection {
|
|
|
98
114
|
schema: this.context.schema
|
|
99
115
|
};
|
|
100
116
|
const entitySelection = typeof fields === "function" ? fields(new ContentEntitySelection(newContext, [])) : fields;
|
|
117
|
+
const paginateFieldName = `paginate${name.charAt(0).toUpperCase()}${name.slice(1)}`;
|
|
118
|
+
const paginateSelectionSet = [
|
|
119
|
+
...args.totalCount ? [
|
|
120
|
+
new graphqlBuilder.GraphQlField(null, "pageInfo", {}, [
|
|
121
|
+
new graphqlBuilder.GraphQlField(null, "totalCount")
|
|
122
|
+
])
|
|
123
|
+
] : [],
|
|
124
|
+
new graphqlBuilder.GraphQlField(null, "edges", {}, [
|
|
125
|
+
new graphqlBuilder.GraphQlField(null, "node", {}, entitySelection.selectionSet)
|
|
126
|
+
])
|
|
127
|
+
];
|
|
101
128
|
const newObjectField = new graphqlBuilder.GraphQlField(
|
|
102
129
|
alias,
|
|
103
|
-
|
|
104
|
-
createListArgs.createListArgs(entity, args),
|
|
105
|
-
|
|
130
|
+
paginateFieldName,
|
|
131
|
+
createListArgs.createListArgs(entity, args, "paginate"),
|
|
132
|
+
paginateSelectionSet
|
|
106
133
|
);
|
|
107
134
|
const selectionWithField = this.withField(newObjectField);
|
|
135
|
+
const includeTotalCount = args.totalCount ?? false;
|
|
108
136
|
const nestedTransform = entitySelection.transformFn;
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
137
|
+
return selectionWithField.withFieldTransform(alias, (connection, ctx) => {
|
|
138
|
+
const items = connection.edges.map((edge) => nestedTransform ? nestedTransform(edge.node, ctx) : edge.node);
|
|
139
|
+
if (includeTotalCount && connection.pageInfo) {
|
|
140
|
+
Object.defineProperty(items, "totalCount", {
|
|
141
|
+
value: connection.pageInfo.totalCount,
|
|
142
|
+
enumerable: false,
|
|
143
|
+
writable: false
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
return items;
|
|
147
|
+
});
|
|
113
148
|
}
|
|
114
149
|
_manyBy(name, args, fields) {
|
|
115
150
|
const alias = args.as ?? name;
|
|
@@ -150,7 +185,7 @@ class ContentEntitySelection {
|
|
|
150
185
|
if (!nestedTransform) {
|
|
151
186
|
return selectionWithField;
|
|
152
187
|
}
|
|
153
|
-
return
|
|
188
|
+
return selectionWithField.withFieldTransform(alias, (it, ctx) => it !== null ? nestedTransform(it, ctx) : null);
|
|
154
189
|
}
|
|
155
190
|
_one(name, args, fields) {
|
|
156
191
|
const alias = args.as ?? name;
|
|
@@ -184,7 +219,7 @@ class ContentEntitySelection {
|
|
|
184
219
|
if (!nestedTransform) {
|
|
185
220
|
return selectionWithField;
|
|
186
221
|
}
|
|
187
|
-
return
|
|
222
|
+
return selectionWithField.withFieldTransform(alias, (it, ctx) => it !== null ? nestedTransform(it, ctx) : null);
|
|
188
223
|
}
|
|
189
224
|
withField(field) {
|
|
190
225
|
return new ContentEntitySelection(this.context, [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentEntitySelection.cjs","sources":["../../../../../packages/client-content/src/nodes/ContentEntitySelection.ts"],"sourcesContent":["import { createListArgs } from '../utils/createListArgs'\nimport { ContentClientInput, SchemaEntityNames, SchemaNames } from '../types'\nimport { Input } from '@contember/schema'\nimport { GraphQlField, GraphQlFieldTypedArgs, GraphQlSelectionSet } from '@contember/graphql-builder'\n\n/**\n * @internal\n */\nexport type ContentEntitySelectionContext<Name extends string> = {\n\tentity: SchemaEntityNames<Name>\n\tschema: SchemaNames\n}\n\nexport type ContentEntitySelectionCallback = (select: ContentEntitySelection) => ContentEntitySelection\n\nexport type EntitySelectionCommonInput<Alias extends string | null = string | null> = { as?: Alias }\nexport type EntitySelectionManyArgs<Alias extends string | null = string | null> = ContentClientInput.AnyListQueryInput & EntitySelectionCommonInput<Alias>\nexport type EntitySelectionManyByArgs<Alias extends string | null = string | null> = { by: Input.UniqueWhere; filter?: Input.Where } & EntitySelectionCommonInput<Alias>\nexport type EntitySelectionOneArgs<Alias extends string | null = string | null> = { filter?: Input.Where } & EntitySelectionCommonInput<Alias>\nexport type EntitySelectionColumnArgs<Alias extends string | null = string | null> = EntitySelectionCommonInput<Alias>\n\nexport type EntitySelectionAnyArgs =\n\t| EntitySelectionColumnArgs\n\t| EntitySelectionManyArgs\n\t| EntitySelectionManyByArgs\n\t| EntitySelectionOneArgs\n\nexport type ContentEntitySelectionOrCallback = ContentEntitySelectionCallback | ContentEntitySelection\n\n\nexport type ContentTransformContext = {\n\trootValue: unknown\n}\n\nexport class ContentEntitySelection {\n\n\t/**\n\t * @internal\n\t */\n\tconstructor(\n\t\t/** @internal */\n\t\tpublic readonly context: ContentEntitySelectionContext<string>,\n\t\t/** @internal */\n\t\tpublic readonly selectionSet: GraphQlSelectionSet,\n\t\t/** @internal */\n\t\tpublic readonly transformFn?: (value: any, ctx: ContentTransformContext) => any,\n\t) {\n\t}\n\n\n\t$(field: string, args?: EntitySelectionColumnArgs): ContentEntitySelection\n\t$(field: string, args: EntitySelectionManyArgs, selection: ContentEntitySelectionOrCallback): ContentEntitySelection\n\t$(field: string, args: EntitySelectionManyByArgs, selection: ContentEntitySelectionOrCallback): ContentEntitySelection\n\t$(field: string, args: EntitySelectionOneArgs, selection: ContentEntitySelectionOrCallback): ContentEntitySelection\n\t$(field: string, selection: ContentEntitySelectionOrCallback): ContentEntitySelection\n\n\t$(field: string, argsOrSelection?: EntitySelectionAnyArgs | ContentEntitySelectionOrCallback, selectionIn?: ContentEntitySelectionOrCallback): ContentEntitySelection {\n\t\tconst [args, selection] = typeof argsOrSelection === 'function' || argsOrSelection instanceof ContentEntitySelection\n\t\t\t? [{}, argsOrSelection]\n\t\t\t: [argsOrSelection ?? {}, selectionIn]\n\t\tif (field === '__typename') {\n\t\t\treturn this.withField(new GraphQlField(args.as ?? null, '__typename'))\n\t\t}\n\t\tconst fieldInfo = this.context.entity.fields[field]\n\t\tif (!fieldInfo) {\n\t\t\tif ('by' in args && field.includes('By')) {\n\t\t\t\tif (!selection) {\n\t\t\t\t\tthrow new Error(`Selection is required for ${this.context.entity.name}.${field}.`)\n\t\t\t\t}\n\t\t\t\treturn this._manyBy(field, args as EntitySelectionManyByArgs, selection)\n\t\t\t}\n\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${field} does not exist.`)\n\t\t}\n\t\tif (fieldInfo.type === 'column') {\n\t\t\treturn this._column(field, args as EntitySelectionColumnArgs)\n\t\t}\n\t\tif (fieldInfo.type === 'many') {\n\t\t\tif (!selection) {\n\t\t\t\tthrow new Error(`Selection is required for ${this.context.entity.name}.${field}.`)\n\t\t\t}\n\t\t\treturn this._many(field, args as EntitySelectionManyArgs, selection)\n\t\t}\n\t\tif (fieldInfo.type === 'one') {\n\t\t\tif (!selection) {\n\t\t\t\tthrow new Error(`Selection is required for ${this.context.entity.name}.${field}.`)\n\t\t\t}\n\t\t\treturn this._one(field, args as EntitySelectionOneArgs, selection)\n\t\t}\n\t\tthrow new Error(`Unknown field type ${fieldInfo.type}.`)\n\t}\n\n\t$$(): ContentEntitySelection {\n\t\tconst columns = this.context.entity.scalars\n\t\tconst nodes = [\n\t\t\t...this.selectionSet,\n\t\t\t...columns.map(col => new GraphQlField(null, col)),\n\t\t]\n\t\treturn new ContentEntitySelection(this.context, nodes)\n\t}\n\n\tmeta(field: string, flags: ('readable' | 'updatable')[]): ContentEntitySelection {\n\t\tconst metaField = this.selectionSet.find((it): it is GraphQlField => it instanceof GraphQlField && it.name === '_meta')\n\t\tconst selectionWithoutMeta = metaField ? this.selectionSet.filter(it => it !== metaField) : this.selectionSet\n\n\t\tconst flagFields: GraphQlField[] = []\n\t\tfor (const flag of flags) {\n\t\t\tflagFields.push(new GraphQlField(null, flag))\n\t\t}\n\n\t\treturn new ContentEntitySelection(this.context, [\n\t\t\t...selectionWithoutMeta,\n\t\t\tnew GraphQlField(null, '_meta', undefined, [\n\t\t\t\t...metaField?.selectionSet ?? [],\n\t\t\t\tnew GraphQlField(null, field, undefined, flagFields),\n\t\t\t]),\n\t\t])\n\t}\n\n\n\ttransform(transform: (value: any, context: ContentTransformContext) => any): ContentEntitySelection {\n\t\treturn new ContentEntitySelection(this.context, this.selectionSet, !this.transformFn ? transform : (value, ctx) => {\n\t\t\treturn transform(this.transformFn!(value, ctx), ctx)\n\t\t})\n\t}\n\n\tprivate _column(\n\t\tname: string,\n\t\targs: EntitySelectionCommonInput = {},\n\t): ContentEntitySelection {\n\t\tlet fieldInfo = this.context.entity.fields[name]\n\t\tif (!fieldInfo) {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} does not exist.`)\n\t\t}\n\t\tif (fieldInfo?.type !== 'column') {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} is not a column.`)\n\t\t}\n\n\t\tconst alias = args.as ?? name\n\n\t\tconst field = new GraphQlField(alias, name, {})\n\t\treturn this.withField(field)\n\t}\n\n\n\tprivate _many(\n\t\tname: string,\n\t\targs: EntitySelectionManyArgs,\n\t\tfields:\n\t\t\t| ContentEntitySelectionCallback\n\t\t\t| ContentEntitySelection,\n\t): ContentEntitySelection{\n\t\tconst alias = args.as ?? name\n\t\tconst fieldInfo = this.context.entity.fields[name]\n\t\tif (!fieldInfo) {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} does not exist.`)\n\t\t}\n\t\tif (fieldInfo?.type !== 'many') {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} is not a has-many relation.`)\n\t\t}\n\t\tconst entity = this.context.schema.entities[fieldInfo.entity]\n\n\t\tconst newContext = {\n\t\t\tentity: entity,\n\t\t\tschema: this.context.schema,\n\t\t}\n\n\t\tconst entitySelection = typeof fields === 'function' ? fields(new ContentEntitySelection(newContext, [])) : fields\n\t\tconst newObjectField = new GraphQlField(\n\t\t\talias,\n\t\t\tname,\n\t\t\tcreateListArgs(entity, args),\n\t\t\tentitySelection.selectionSet,\n\t\t)\n\t\tconst selectionWithField = this.withField(newObjectField)\n\t\tconst nestedTransform = entitySelection.transformFn\n\t\tif (!nestedTransform) {\n\t\t\treturn selectionWithField\n\t\t}\n\t\treturn this.withFieldTransform(alias, it => it.map(nestedTransform))\n\t}\n\n\n\tprivate _manyBy(\n\t\tname: string,\n\t\targs: EntitySelectionManyByArgs,\n\t\tfields:\n\t\t\t| ContentEntitySelectionCallback\n\t\t\t| ContentEntitySelection,\n\t): ContentEntitySelection {\n\t\tconst alias = args.as ?? name\n\t\tconst byField = Object.keys(args.by)[0]\n\t\tconst relationField = name.substring(0, name.length - byField.length - 2)\n\n\t\tconst field = this.context.entity.fields[relationField]\n\t\tif (!field) {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${relationField} does not exist.`)\n\t\t}\n\t\tif (field?.type !== 'many') {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${relationField} is not a has-many relation.`)\n\t\t}\n\t\tconst entity = this.context.schema.entities[field.entity]\n\t\tconst newContext = {\n\t\t\tentity: entity,\n\t\t\tschema: this.context.schema,\n\t\t}\n\t\tconst fieldUpperFirst = name.charAt(0).toUpperCase() + name.slice(1)\n\n\t\tconst argsWithType: GraphQlFieldTypedArgs = {\n\t\t\tfilter: {\n\t\t\t\tgraphQlType: `${entity.name}Where`,\n\t\t\t\tvalue: args.filter,\n\t\t\t},\n\t\t\tby: {\n\t\t\t\tgraphQlType: `${this.context.entity.name}${fieldUpperFirst}UniqueWhere!`,\n\t\t\t\tvalue: args.by,\n\t\t\t},\n\t\t}\n\n\t\tconst entitySelection = typeof fields === 'function' ? fields(new ContentEntitySelection(newContext, []) as any) : fields\n\t\tconst newObjectField = new GraphQlField(\n\t\t\talias,\n\t\t\tname,\n\t\t\targsWithType,\n\t\t\tentitySelection.selectionSet,\n\t\t)\n\t\tconst selectionWithField = this.withField(newObjectField)\n\t\tconst nestedTransform = entitySelection.transformFn\n\t\tif (!nestedTransform) {\n\t\t\treturn selectionWithField\n\t\t}\n\t\treturn this.withFieldTransform(alias, (it, ctx) => it !== null ? nestedTransform(it, ctx) : null)\n\t}\n\n\tprivate _one(\n\t\tname: string,\n\t\targs: EntitySelectionOneArgs,\n\t\tfields:\n\t\t\t| ContentEntitySelectionCallback\n\t\t\t| ContentEntitySelection,\n\t): ContentEntitySelection {\n\t\tconst alias = args.as ?? name\n\t\tconst fieldInfo = this.context.entity.fields[name]\n\t\tif (!fieldInfo) {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} does not exist.`)\n\t\t}\n\t\tif (fieldInfo?.type !== 'one') {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} is not a has-one relation.`)\n\t\t}\n\t\tconst entity = this.context.schema.entities[fieldInfo.entity]\n\n\t\tconst newContext: ContentEntitySelectionContext<(typeof entity)['name']> = {\n\t\t\tentity: entity,\n\t\t\tschema: this.context.schema,\n\t\t}\n\t\tconst argsWithType: GraphQlFieldTypedArgs = {\n\t\t\tfilter: {\n\t\t\t\tgraphQlType: `${entity.name}Where`,\n\t\t\t\tvalue: args.filter,\n\t\t\t},\n\t\t}\n\t\tconst entitySelection = typeof fields === 'function'\n\t\t\t? fields(new ContentEntitySelection(newContext, []) as any)\n\t\t\t: fields\n\t\tconst newObjectField = new GraphQlField(\n\t\t\talias,\n\t\t\tname,\n\t\t\targsWithType,\n\t\t\tentitySelection.selectionSet,\n\t\t)\n\t\tconst selectionWithField = this.withField(newObjectField)\n\t\tconst nestedTransform = entitySelection.transformFn\n\t\tif (!nestedTransform) {\n\t\t\treturn selectionWithField\n\t\t}\n\t\treturn this.withFieldTransform(alias, (it, ctx) => it !== null ? nestedTransform(it, ctx) : null)\n\t}\n\n\n\tprivate withField(field: GraphQlField) {\n\t\treturn new ContentEntitySelection(this.context, [\n\t\t\t...this.selectionSet,\n\t\t\tfield,\n\t\t], this.transformFn)\n\t}\n\n\tprivate withFieldTransform(alias: string, transform: (value: any, ctx: ContentTransformContext) => any) {\n\t\treturn new ContentEntitySelection(this.context, this.selectionSet, (value, ctx) => {\n\t\t\tconst transformedValue = transform(value[alias], ctx)\n\t\t\tconst newValue = {\n\t\t\t\t...value,\n\t\t\t\t[alias]: transformedValue,\n\t\t\t}\n\t\t\treturn this.transformFn ? this.transformFn(newValue, ctx) : newValue\n\t\t})\n\t}\n}\n"],"names":["GraphQlField","createListArgs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ContentEntitySelection.cjs","sources":["../../../../../packages/client-content/src/nodes/ContentEntitySelection.ts"],"sourcesContent":["import { createListArgs } from '../utils/createListArgs'\nimport { ContentClientInput, SchemaEntityNames, SchemaNames } from '../types'\nimport { Input } from '@contember/schema'\nimport { GraphQlField, GraphQlFieldTypedArgs, GraphQlSelectionSet } from '@contember/graphql-builder'\n\n/**\n * @internal\n */\nexport type ContentEntitySelectionContext<Name extends string> = {\n\tentity: SchemaEntityNames<Name>\n\tschema: SchemaNames\n}\n\nexport type ContentEntitySelectionCallback = (select: ContentEntitySelection) => ContentEntitySelection\n\nexport type EntitySelectionCommonInput<Alias extends string | null = string | null> = { as?: Alias }\nexport type EntitySelectionManyArgs<Alias extends string | null = string | null> =\n\t& ContentClientInput.AnyListQueryInput\n\t& EntitySelectionCommonInput<Alias>\n\t& { totalCount?: boolean }\nexport type EntitySelectionManyByArgs<Alias extends string | null = string | null> =\n\t& { by: Input.UniqueWhere; filter?: Input.Where }\n\t& EntitySelectionCommonInput<Alias>\nexport type EntitySelectionOneArgs<Alias extends string | null = string | null> = { filter?: Input.Where } & EntitySelectionCommonInput<Alias>\nexport type EntitySelectionColumnArgs<Alias extends string | null = string | null> = EntitySelectionCommonInput<Alias>\n\nexport type EntitySelectionAnyArgs =\n\t| EntitySelectionColumnArgs\n\t| EntitySelectionManyArgs\n\t| EntitySelectionManyByArgs\n\t| EntitySelectionOneArgs\n\nexport type ContentEntitySelectionOrCallback = ContentEntitySelectionCallback | ContentEntitySelection\n\nexport type ContentTransformContext = {\n\trootValue: unknown\n}\n\nexport class ContentEntitySelection {\n\t/**\n\t * @internal\n\t */\n\tconstructor(\n\t\t/** @internal */\n\t\tpublic readonly context: ContentEntitySelectionContext<string>,\n\t\t/** @internal */\n\t\tpublic readonly selectionSet: GraphQlSelectionSet,\n\t\t/** @internal */\n\t\tpublic readonly transformFn?: (value: any, ctx: ContentTransformContext) => any,\n\t) {\n\t}\n\n\t$(field: string, args?: EntitySelectionColumnArgs): ContentEntitySelection\n\t$(field: string, args: EntitySelectionManyArgs, selection: ContentEntitySelectionOrCallback): ContentEntitySelection\n\t$(field: string, args: EntitySelectionManyByArgs, selection: ContentEntitySelectionOrCallback): ContentEntitySelection\n\t$(field: string, args: EntitySelectionOneArgs, selection: ContentEntitySelectionOrCallback): ContentEntitySelection\n\t$(field: string, selection: ContentEntitySelectionOrCallback): ContentEntitySelection\n\n\t$(\n\t\tfield: string,\n\t\targsOrSelection?: EntitySelectionAnyArgs | ContentEntitySelectionOrCallback,\n\t\tselectionIn?: ContentEntitySelectionOrCallback,\n\t): ContentEntitySelection {\n\t\tconst [args, selection] = typeof argsOrSelection === 'function' || argsOrSelection instanceof ContentEntitySelection\n\t\t\t? [{}, argsOrSelection]\n\t\t\t: [argsOrSelection ?? {}, selectionIn]\n\t\tif (field === '__typename') {\n\t\t\treturn this.withField(new GraphQlField(args.as ?? null, '__typename'))\n\t\t}\n\t\tconst fieldInfo = this.context.entity.fields[field]\n\t\tif (!fieldInfo) {\n\t\t\tif ('by' in args && field.includes('By')) {\n\t\t\t\tif (!selection) {\n\t\t\t\t\tthrow new Error(`Selection is required for ${this.context.entity.name}.${field}.`)\n\t\t\t\t}\n\t\t\t\treturn this._manyBy(field, args as EntitySelectionManyByArgs, selection)\n\t\t\t}\n\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${field} does not exist.`)\n\t\t}\n\t\tif (fieldInfo.type === 'column') {\n\t\t\treturn this._column(field, args as EntitySelectionColumnArgs)\n\t\t}\n\t\tif (fieldInfo.type === 'many') {\n\t\t\tif (!selection) {\n\t\t\t\tthrow new Error(`Selection is required for ${this.context.entity.name}.${field}.`)\n\t\t\t}\n\t\t\treturn this._many(field, args as EntitySelectionManyArgs, selection)\n\t\t}\n\t\tif (fieldInfo.type === 'one') {\n\t\t\tif (!selection) {\n\t\t\t\tthrow new Error(`Selection is required for ${this.context.entity.name}.${field}.`)\n\t\t\t}\n\t\t\treturn this._one(field, args as EntitySelectionOneArgs, selection)\n\t\t}\n\t\tthrow new Error(`Unknown field type ${fieldInfo.type}.`)\n\t}\n\n\t$$(): ContentEntitySelection {\n\t\tconst columns = this.context.entity.scalars\n\t\tconst nodes = [\n\t\t\t...this.selectionSet,\n\t\t\t...columns.map(col => new GraphQlField(null, col)),\n\t\t]\n\t\treturn new ContentEntitySelection(this.context, nodes)\n\t}\n\n\tomit(...fields: string[]): ContentEntitySelection {\n\t\treturn new ContentEntitySelection(\n\t\t\tthis.context,\n\t\t\tthis.selectionSet.filter(it => {\n\t\t\t\tif (!(it instanceof GraphQlField)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tconst alias = it.alias ?? it.name\n\t\t\t\treturn !fields.includes(alias)\n\t\t\t}),\n\t\t)\n\t}\n\n\tmeta(field: string, flags: ('readable' | 'updatable')[]): ContentEntitySelection {\n\t\tconst metaField = this.selectionSet.find((it): it is GraphQlField => it instanceof GraphQlField && it.name === '_meta')\n\t\tconst selectionWithoutMeta = metaField ? this.selectionSet.filter(it => it !== metaField) : this.selectionSet\n\n\t\tconst flagFields: GraphQlField[] = []\n\t\tfor (const flag of flags) {\n\t\t\tflagFields.push(new GraphQlField(null, flag))\n\t\t}\n\n\t\treturn new ContentEntitySelection(this.context, [\n\t\t\t...selectionWithoutMeta,\n\t\t\tnew GraphQlField(null, '_meta', undefined, [\n\t\t\t\t...metaField?.selectionSet ?? [],\n\t\t\t\tnew GraphQlField(null, field, undefined, flagFields),\n\t\t\t]),\n\t\t])\n\t}\n\n\ttransform(transform: (value: any, context: ContentTransformContext) => any): ContentEntitySelection {\n\t\treturn new ContentEntitySelection(\n\t\t\tthis.context,\n\t\t\tthis.selectionSet,\n\t\t\t!this.transformFn ? transform : (value, ctx) => {\n\t\t\t\treturn transform(this.transformFn!(value, ctx), ctx)\n\t\t\t},\n\t\t)\n\t}\n\n\tprivate _column(\n\t\tname: string,\n\t\targs: EntitySelectionCommonInput = {},\n\t): ContentEntitySelection {\n\t\tlet fieldInfo = this.context.entity.fields[name]\n\t\tif (!fieldInfo) {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} does not exist.`)\n\t\t}\n\t\tif (fieldInfo?.type !== 'column') {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} is not a column.`)\n\t\t}\n\n\t\tconst alias = args.as ?? name\n\n\t\tconst field = new GraphQlField(alias, name, {})\n\t\treturn this.withField(field)\n\t}\n\n\tprivate _many(\n\t\tname: string,\n\t\targs: EntitySelectionManyArgs,\n\t\tfields:\n\t\t\t| ContentEntitySelectionCallback\n\t\t\t| ContentEntitySelection,\n\t): ContentEntitySelection {\n\t\tconst alias = args.as ?? name\n\t\tconst fieldInfo = this.context.entity.fields[name]\n\t\tif (!fieldInfo) {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} does not exist.`)\n\t\t}\n\t\tif (fieldInfo?.type !== 'many') {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} is not a has-many relation.`)\n\t\t}\n\t\tconst entity = this.context.schema.entities[fieldInfo.entity]\n\n\t\tconst newContext = {\n\t\t\tentity: entity,\n\t\t\tschema: this.context.schema,\n\t\t}\n\n\t\tconst entitySelection = typeof fields === 'function' ? fields(new ContentEntitySelection(newContext, [])) : fields\n\n\t\t// Always use paginateRelation API (relay-like Connection format)\n\t\tconst paginateFieldName = `paginate${name.charAt(0).toUpperCase()}${name.slice(1)}`\n\t\tconst paginateSelectionSet: GraphQlSelectionSet = [\n\t\t\t...(args.totalCount\n\t\t\t\t? [\n\t\t\t\t\tnew GraphQlField(null, 'pageInfo', {}, [\n\t\t\t\t\t\tnew GraphQlField(null, 'totalCount'),\n\t\t\t\t\t]),\n\t\t\t\t]\n\t\t\t\t: []),\n\t\t\tnew GraphQlField(null, 'edges', {}, [\n\t\t\t\tnew GraphQlField(null, 'node', {}, entitySelection.selectionSet),\n\t\t\t]),\n\t\t]\n\t\tconst newObjectField = new GraphQlField(\n\t\t\talias,\n\t\t\tpaginateFieldName,\n\t\t\tcreateListArgs(entity, args, 'paginate'),\n\t\t\tpaginateSelectionSet,\n\t\t)\n\t\tconst selectionWithField = this.withField(newObjectField)\n\t\tconst includeTotalCount = args.totalCount ?? false\n\t\tconst nestedTransform = entitySelection.transformFn\n\n\t\t// Transform: unwrap Connection → flat array, optionally attach totalCount\n\t\treturn selectionWithField.withFieldTransform(alias, (connection, ctx) => {\n\t\t\tconst items = connection.edges.map((edge: any) => nestedTransform ? nestedTransform(edge.node, ctx) : edge.node)\n\t\t\tif (includeTotalCount && connection.pageInfo) {\n\t\t\t\tObject.defineProperty(items, 'totalCount', {\n\t\t\t\t\tvalue: connection.pageInfo.totalCount,\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\twritable: false,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn items\n\t\t})\n\t}\n\n\tprivate _manyBy(\n\t\tname: string,\n\t\targs: EntitySelectionManyByArgs,\n\t\tfields:\n\t\t\t| ContentEntitySelectionCallback\n\t\t\t| ContentEntitySelection,\n\t): ContentEntitySelection {\n\t\tconst alias = args.as ?? name\n\t\tconst byField = Object.keys(args.by)[0]\n\t\tconst relationField = name.substring(0, name.length - byField.length - 2)\n\n\t\tconst field = this.context.entity.fields[relationField]\n\t\tif (!field) {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${relationField} does not exist.`)\n\t\t}\n\t\tif (field?.type !== 'many') {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${relationField} is not a has-many relation.`)\n\t\t}\n\t\tconst entity = this.context.schema.entities[field.entity]\n\t\tconst newContext = {\n\t\t\tentity: entity,\n\t\t\tschema: this.context.schema,\n\t\t}\n\t\tconst fieldUpperFirst = name.charAt(0).toUpperCase() + name.slice(1)\n\n\t\tconst argsWithType: GraphQlFieldTypedArgs = {\n\t\t\tfilter: {\n\t\t\t\tgraphQlType: `${entity.name}Where`,\n\t\t\t\tvalue: args.filter,\n\t\t\t},\n\t\t\tby: {\n\t\t\t\tgraphQlType: `${this.context.entity.name}${fieldUpperFirst}UniqueWhere!`,\n\t\t\t\tvalue: args.by,\n\t\t\t},\n\t\t}\n\n\t\tconst entitySelection = typeof fields === 'function' ? fields(new ContentEntitySelection(newContext, []) as any) : fields\n\t\tconst newObjectField = new GraphQlField(\n\t\t\talias,\n\t\t\tname,\n\t\t\targsWithType,\n\t\t\tentitySelection.selectionSet,\n\t\t)\n\t\tconst selectionWithField = this.withField(newObjectField)\n\t\tconst nestedTransform = entitySelection.transformFn\n\t\tif (!nestedTransform) {\n\t\t\treturn selectionWithField\n\t\t}\n\t\treturn selectionWithField.withFieldTransform(alias, (it, ctx) => it !== null ? nestedTransform(it, ctx) : null)\n\t}\n\n\tprivate _one(\n\t\tname: string,\n\t\targs: EntitySelectionOneArgs,\n\t\tfields:\n\t\t\t| ContentEntitySelectionCallback\n\t\t\t| ContentEntitySelection,\n\t): ContentEntitySelection {\n\t\tconst alias = args.as ?? name\n\t\tconst fieldInfo = this.context.entity.fields[name]\n\t\tif (!fieldInfo) {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} does not exist.`)\n\t\t}\n\t\tif (fieldInfo?.type !== 'one') {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} is not a has-one relation.`)\n\t\t}\n\t\tconst entity = this.context.schema.entities[fieldInfo.entity]\n\n\t\tconst newContext: ContentEntitySelectionContext<(typeof entity)['name']> = {\n\t\t\tentity: entity,\n\t\t\tschema: this.context.schema,\n\t\t}\n\t\tconst argsWithType: GraphQlFieldTypedArgs = {\n\t\t\tfilter: {\n\t\t\t\tgraphQlType: `${entity.name}Where`,\n\t\t\t\tvalue: args.filter,\n\t\t\t},\n\t\t}\n\t\tconst entitySelection = typeof fields === 'function'\n\t\t\t? fields(new ContentEntitySelection(newContext, []) as any)\n\t\t\t: fields\n\t\tconst newObjectField = new GraphQlField(\n\t\t\talias,\n\t\t\tname,\n\t\t\targsWithType,\n\t\t\tentitySelection.selectionSet,\n\t\t)\n\t\tconst selectionWithField = this.withField(newObjectField)\n\t\tconst nestedTransform = entitySelection.transformFn\n\t\tif (!nestedTransform) {\n\t\t\treturn selectionWithField\n\t\t}\n\t\treturn selectionWithField.withFieldTransform(alias, (it, ctx) => it !== null ? nestedTransform(it, ctx) : null)\n\t}\n\n\tprivate withField(field: GraphQlField) {\n\t\treturn new ContentEntitySelection(this.context, [\n\t\t\t...this.selectionSet,\n\t\t\tfield,\n\t\t], this.transformFn)\n\t}\n\n\tprivate withFieldTransform(alias: string, transform: (value: any, ctx: ContentTransformContext) => any) {\n\t\treturn new ContentEntitySelection(this.context, this.selectionSet, (value, ctx) => {\n\t\t\tconst transformedValue = transform(value[alias], ctx)\n\t\t\tconst newValue = {\n\t\t\t\t...value,\n\t\t\t\t[alias]: transformedValue,\n\t\t\t}\n\t\t\treturn this.transformFn ? this.transformFn(newValue, ctx) : newValue\n\t\t})\n\t}\n}\n"],"names":["GraphQlField","createListArgs"],"mappings":"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"}
|
|
@@ -49,6 +49,18 @@ class ContentEntitySelection {
|
|
|
49
49
|
];
|
|
50
50
|
return new ContentEntitySelection(this.context, nodes);
|
|
51
51
|
}
|
|
52
|
+
omit(...fields) {
|
|
53
|
+
return new ContentEntitySelection(
|
|
54
|
+
this.context,
|
|
55
|
+
this.selectionSet.filter((it) => {
|
|
56
|
+
if (!(it instanceof GraphQlField)) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
const alias = it.alias ?? it.name;
|
|
60
|
+
return !fields.includes(alias);
|
|
61
|
+
})
|
|
62
|
+
);
|
|
63
|
+
}
|
|
52
64
|
meta(field, flags) {
|
|
53
65
|
const metaField = this.selectionSet.find((it) => it instanceof GraphQlField && it.name === "_meta");
|
|
54
66
|
const selectionWithoutMeta = metaField ? this.selectionSet.filter((it) => it !== metaField) : this.selectionSet;
|
|
@@ -65,9 +77,13 @@ class ContentEntitySelection {
|
|
|
65
77
|
]);
|
|
66
78
|
}
|
|
67
79
|
transform(transform) {
|
|
68
|
-
return new ContentEntitySelection(
|
|
69
|
-
|
|
70
|
-
|
|
80
|
+
return new ContentEntitySelection(
|
|
81
|
+
this.context,
|
|
82
|
+
this.selectionSet,
|
|
83
|
+
!this.transformFn ? transform : (value, ctx) => {
|
|
84
|
+
return transform(this.transformFn(value, ctx), ctx);
|
|
85
|
+
}
|
|
86
|
+
);
|
|
71
87
|
}
|
|
72
88
|
_column(name, args = {}) {
|
|
73
89
|
let fieldInfo = this.context.entity.fields[name];
|
|
@@ -96,18 +112,37 @@ class ContentEntitySelection {
|
|
|
96
112
|
schema: this.context.schema
|
|
97
113
|
};
|
|
98
114
|
const entitySelection = typeof fields === "function" ? fields(new ContentEntitySelection(newContext, [])) : fields;
|
|
115
|
+
const paginateFieldName = `paginate${name.charAt(0).toUpperCase()}${name.slice(1)}`;
|
|
116
|
+
const paginateSelectionSet = [
|
|
117
|
+
...args.totalCount ? [
|
|
118
|
+
new GraphQlField(null, "pageInfo", {}, [
|
|
119
|
+
new GraphQlField(null, "totalCount")
|
|
120
|
+
])
|
|
121
|
+
] : [],
|
|
122
|
+
new GraphQlField(null, "edges", {}, [
|
|
123
|
+
new GraphQlField(null, "node", {}, entitySelection.selectionSet)
|
|
124
|
+
])
|
|
125
|
+
];
|
|
99
126
|
const newObjectField = new GraphQlField(
|
|
100
127
|
alias,
|
|
101
|
-
|
|
102
|
-
createListArgs(entity, args),
|
|
103
|
-
|
|
128
|
+
paginateFieldName,
|
|
129
|
+
createListArgs(entity, args, "paginate"),
|
|
130
|
+
paginateSelectionSet
|
|
104
131
|
);
|
|
105
132
|
const selectionWithField = this.withField(newObjectField);
|
|
133
|
+
const includeTotalCount = args.totalCount ?? false;
|
|
106
134
|
const nestedTransform = entitySelection.transformFn;
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
135
|
+
return selectionWithField.withFieldTransform(alias, (connection, ctx) => {
|
|
136
|
+
const items = connection.edges.map((edge) => nestedTransform ? nestedTransform(edge.node, ctx) : edge.node);
|
|
137
|
+
if (includeTotalCount && connection.pageInfo) {
|
|
138
|
+
Object.defineProperty(items, "totalCount", {
|
|
139
|
+
value: connection.pageInfo.totalCount,
|
|
140
|
+
enumerable: false,
|
|
141
|
+
writable: false
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
return items;
|
|
145
|
+
});
|
|
111
146
|
}
|
|
112
147
|
_manyBy(name, args, fields) {
|
|
113
148
|
const alias = args.as ?? name;
|
|
@@ -148,7 +183,7 @@ class ContentEntitySelection {
|
|
|
148
183
|
if (!nestedTransform) {
|
|
149
184
|
return selectionWithField;
|
|
150
185
|
}
|
|
151
|
-
return
|
|
186
|
+
return selectionWithField.withFieldTransform(alias, (it, ctx) => it !== null ? nestedTransform(it, ctx) : null);
|
|
152
187
|
}
|
|
153
188
|
_one(name, args, fields) {
|
|
154
189
|
const alias = args.as ?? name;
|
|
@@ -182,7 +217,7 @@ class ContentEntitySelection {
|
|
|
182
217
|
if (!nestedTransform) {
|
|
183
218
|
return selectionWithField;
|
|
184
219
|
}
|
|
185
|
-
return
|
|
220
|
+
return selectionWithField.withFieldTransform(alias, (it, ctx) => it !== null ? nestedTransform(it, ctx) : null);
|
|
186
221
|
}
|
|
187
222
|
withField(field) {
|
|
188
223
|
return new ContentEntitySelection(this.context, [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentEntitySelection.js","sources":["../../../../../packages/client-content/src/nodes/ContentEntitySelection.ts"],"sourcesContent":["import { createListArgs } from '../utils/createListArgs'\nimport { ContentClientInput, SchemaEntityNames, SchemaNames } from '../types'\nimport { Input } from '@contember/schema'\nimport { GraphQlField, GraphQlFieldTypedArgs, GraphQlSelectionSet } from '@contember/graphql-builder'\n\n/**\n * @internal\n */\nexport type ContentEntitySelectionContext<Name extends string> = {\n\tentity: SchemaEntityNames<Name>\n\tschema: SchemaNames\n}\n\nexport type ContentEntitySelectionCallback = (select: ContentEntitySelection) => ContentEntitySelection\n\nexport type EntitySelectionCommonInput<Alias extends string | null = string | null> = { as?: Alias }\nexport type EntitySelectionManyArgs<Alias extends string | null = string | null> = ContentClientInput.AnyListQueryInput & EntitySelectionCommonInput<Alias>\nexport type EntitySelectionManyByArgs<Alias extends string | null = string | null> = { by: Input.UniqueWhere; filter?: Input.Where } & EntitySelectionCommonInput<Alias>\nexport type EntitySelectionOneArgs<Alias extends string | null = string | null> = { filter?: Input.Where } & EntitySelectionCommonInput<Alias>\nexport type EntitySelectionColumnArgs<Alias extends string | null = string | null> = EntitySelectionCommonInput<Alias>\n\nexport type EntitySelectionAnyArgs =\n\t| EntitySelectionColumnArgs\n\t| EntitySelectionManyArgs\n\t| EntitySelectionManyByArgs\n\t| EntitySelectionOneArgs\n\nexport type ContentEntitySelectionOrCallback = ContentEntitySelectionCallback | ContentEntitySelection\n\n\nexport type ContentTransformContext = {\n\trootValue: unknown\n}\n\nexport class ContentEntitySelection {\n\n\t/**\n\t * @internal\n\t */\n\tconstructor(\n\t\t/** @internal */\n\t\tpublic readonly context: ContentEntitySelectionContext<string>,\n\t\t/** @internal */\n\t\tpublic readonly selectionSet: GraphQlSelectionSet,\n\t\t/** @internal */\n\t\tpublic readonly transformFn?: (value: any, ctx: ContentTransformContext) => any,\n\t) {\n\t}\n\n\n\t$(field: string, args?: EntitySelectionColumnArgs): ContentEntitySelection\n\t$(field: string, args: EntitySelectionManyArgs, selection: ContentEntitySelectionOrCallback): ContentEntitySelection\n\t$(field: string, args: EntitySelectionManyByArgs, selection: ContentEntitySelectionOrCallback): ContentEntitySelection\n\t$(field: string, args: EntitySelectionOneArgs, selection: ContentEntitySelectionOrCallback): ContentEntitySelection\n\t$(field: string, selection: ContentEntitySelectionOrCallback): ContentEntitySelection\n\n\t$(field: string, argsOrSelection?: EntitySelectionAnyArgs | ContentEntitySelectionOrCallback, selectionIn?: ContentEntitySelectionOrCallback): ContentEntitySelection {\n\t\tconst [args, selection] = typeof argsOrSelection === 'function' || argsOrSelection instanceof ContentEntitySelection\n\t\t\t? [{}, argsOrSelection]\n\t\t\t: [argsOrSelection ?? {}, selectionIn]\n\t\tif (field === '__typename') {\n\t\t\treturn this.withField(new GraphQlField(args.as ?? null, '__typename'))\n\t\t}\n\t\tconst fieldInfo = this.context.entity.fields[field]\n\t\tif (!fieldInfo) {\n\t\t\tif ('by' in args && field.includes('By')) {\n\t\t\t\tif (!selection) {\n\t\t\t\t\tthrow new Error(`Selection is required for ${this.context.entity.name}.${field}.`)\n\t\t\t\t}\n\t\t\t\treturn this._manyBy(field, args as EntitySelectionManyByArgs, selection)\n\t\t\t}\n\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${field} does not exist.`)\n\t\t}\n\t\tif (fieldInfo.type === 'column') {\n\t\t\treturn this._column(field, args as EntitySelectionColumnArgs)\n\t\t}\n\t\tif (fieldInfo.type === 'many') {\n\t\t\tif (!selection) {\n\t\t\t\tthrow new Error(`Selection is required for ${this.context.entity.name}.${field}.`)\n\t\t\t}\n\t\t\treturn this._many(field, args as EntitySelectionManyArgs, selection)\n\t\t}\n\t\tif (fieldInfo.type === 'one') {\n\t\t\tif (!selection) {\n\t\t\t\tthrow new Error(`Selection is required for ${this.context.entity.name}.${field}.`)\n\t\t\t}\n\t\t\treturn this._one(field, args as EntitySelectionOneArgs, selection)\n\t\t}\n\t\tthrow new Error(`Unknown field type ${fieldInfo.type}.`)\n\t}\n\n\t$$(): ContentEntitySelection {\n\t\tconst columns = this.context.entity.scalars\n\t\tconst nodes = [\n\t\t\t...this.selectionSet,\n\t\t\t...columns.map(col => new GraphQlField(null, col)),\n\t\t]\n\t\treturn new ContentEntitySelection(this.context, nodes)\n\t}\n\n\tmeta(field: string, flags: ('readable' | 'updatable')[]): ContentEntitySelection {\n\t\tconst metaField = this.selectionSet.find((it): it is GraphQlField => it instanceof GraphQlField && it.name === '_meta')\n\t\tconst selectionWithoutMeta = metaField ? this.selectionSet.filter(it => it !== metaField) : this.selectionSet\n\n\t\tconst flagFields: GraphQlField[] = []\n\t\tfor (const flag of flags) {\n\t\t\tflagFields.push(new GraphQlField(null, flag))\n\t\t}\n\n\t\treturn new ContentEntitySelection(this.context, [\n\t\t\t...selectionWithoutMeta,\n\t\t\tnew GraphQlField(null, '_meta', undefined, [\n\t\t\t\t...metaField?.selectionSet ?? [],\n\t\t\t\tnew GraphQlField(null, field, undefined, flagFields),\n\t\t\t]),\n\t\t])\n\t}\n\n\n\ttransform(transform: (value: any, context: ContentTransformContext) => any): ContentEntitySelection {\n\t\treturn new ContentEntitySelection(this.context, this.selectionSet, !this.transformFn ? transform : (value, ctx) => {\n\t\t\treturn transform(this.transformFn!(value, ctx), ctx)\n\t\t})\n\t}\n\n\tprivate _column(\n\t\tname: string,\n\t\targs: EntitySelectionCommonInput = {},\n\t): ContentEntitySelection {\n\t\tlet fieldInfo = this.context.entity.fields[name]\n\t\tif (!fieldInfo) {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} does not exist.`)\n\t\t}\n\t\tif (fieldInfo?.type !== 'column') {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} is not a column.`)\n\t\t}\n\n\t\tconst alias = args.as ?? name\n\n\t\tconst field = new GraphQlField(alias, name, {})\n\t\treturn this.withField(field)\n\t}\n\n\n\tprivate _many(\n\t\tname: string,\n\t\targs: EntitySelectionManyArgs,\n\t\tfields:\n\t\t\t| ContentEntitySelectionCallback\n\t\t\t| ContentEntitySelection,\n\t): ContentEntitySelection{\n\t\tconst alias = args.as ?? name\n\t\tconst fieldInfo = this.context.entity.fields[name]\n\t\tif (!fieldInfo) {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} does not exist.`)\n\t\t}\n\t\tif (fieldInfo?.type !== 'many') {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} is not a has-many relation.`)\n\t\t}\n\t\tconst entity = this.context.schema.entities[fieldInfo.entity]\n\n\t\tconst newContext = {\n\t\t\tentity: entity,\n\t\t\tschema: this.context.schema,\n\t\t}\n\n\t\tconst entitySelection = typeof fields === 'function' ? fields(new ContentEntitySelection(newContext, [])) : fields\n\t\tconst newObjectField = new GraphQlField(\n\t\t\talias,\n\t\t\tname,\n\t\t\tcreateListArgs(entity, args),\n\t\t\tentitySelection.selectionSet,\n\t\t)\n\t\tconst selectionWithField = this.withField(newObjectField)\n\t\tconst nestedTransform = entitySelection.transformFn\n\t\tif (!nestedTransform) {\n\t\t\treturn selectionWithField\n\t\t}\n\t\treturn this.withFieldTransform(alias, it => it.map(nestedTransform))\n\t}\n\n\n\tprivate _manyBy(\n\t\tname: string,\n\t\targs: EntitySelectionManyByArgs,\n\t\tfields:\n\t\t\t| ContentEntitySelectionCallback\n\t\t\t| ContentEntitySelection,\n\t): ContentEntitySelection {\n\t\tconst alias = args.as ?? name\n\t\tconst byField = Object.keys(args.by)[0]\n\t\tconst relationField = name.substring(0, name.length - byField.length - 2)\n\n\t\tconst field = this.context.entity.fields[relationField]\n\t\tif (!field) {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${relationField} does not exist.`)\n\t\t}\n\t\tif (field?.type !== 'many') {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${relationField} is not a has-many relation.`)\n\t\t}\n\t\tconst entity = this.context.schema.entities[field.entity]\n\t\tconst newContext = {\n\t\t\tentity: entity,\n\t\t\tschema: this.context.schema,\n\t\t}\n\t\tconst fieldUpperFirst = name.charAt(0).toUpperCase() + name.slice(1)\n\n\t\tconst argsWithType: GraphQlFieldTypedArgs = {\n\t\t\tfilter: {\n\t\t\t\tgraphQlType: `${entity.name}Where`,\n\t\t\t\tvalue: args.filter,\n\t\t\t},\n\t\t\tby: {\n\t\t\t\tgraphQlType: `${this.context.entity.name}${fieldUpperFirst}UniqueWhere!`,\n\t\t\t\tvalue: args.by,\n\t\t\t},\n\t\t}\n\n\t\tconst entitySelection = typeof fields === 'function' ? fields(new ContentEntitySelection(newContext, []) as any) : fields\n\t\tconst newObjectField = new GraphQlField(\n\t\t\talias,\n\t\t\tname,\n\t\t\targsWithType,\n\t\t\tentitySelection.selectionSet,\n\t\t)\n\t\tconst selectionWithField = this.withField(newObjectField)\n\t\tconst nestedTransform = entitySelection.transformFn\n\t\tif (!nestedTransform) {\n\t\t\treturn selectionWithField\n\t\t}\n\t\treturn this.withFieldTransform(alias, (it, ctx) => it !== null ? nestedTransform(it, ctx) : null)\n\t}\n\n\tprivate _one(\n\t\tname: string,\n\t\targs: EntitySelectionOneArgs,\n\t\tfields:\n\t\t\t| ContentEntitySelectionCallback\n\t\t\t| ContentEntitySelection,\n\t): ContentEntitySelection {\n\t\tconst alias = args.as ?? name\n\t\tconst fieldInfo = this.context.entity.fields[name]\n\t\tif (!fieldInfo) {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} does not exist.`)\n\t\t}\n\t\tif (fieldInfo?.type !== 'one') {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} is not a has-one relation.`)\n\t\t}\n\t\tconst entity = this.context.schema.entities[fieldInfo.entity]\n\n\t\tconst newContext: ContentEntitySelectionContext<(typeof entity)['name']> = {\n\t\t\tentity: entity,\n\t\t\tschema: this.context.schema,\n\t\t}\n\t\tconst argsWithType: GraphQlFieldTypedArgs = {\n\t\t\tfilter: {\n\t\t\t\tgraphQlType: `${entity.name}Where`,\n\t\t\t\tvalue: args.filter,\n\t\t\t},\n\t\t}\n\t\tconst entitySelection = typeof fields === 'function'\n\t\t\t? fields(new ContentEntitySelection(newContext, []) as any)\n\t\t\t: fields\n\t\tconst newObjectField = new GraphQlField(\n\t\t\talias,\n\t\t\tname,\n\t\t\targsWithType,\n\t\t\tentitySelection.selectionSet,\n\t\t)\n\t\tconst selectionWithField = this.withField(newObjectField)\n\t\tconst nestedTransform = entitySelection.transformFn\n\t\tif (!nestedTransform) {\n\t\t\treturn selectionWithField\n\t\t}\n\t\treturn this.withFieldTransform(alias, (it, ctx) => it !== null ? nestedTransform(it, ctx) : null)\n\t}\n\n\n\tprivate withField(field: GraphQlField) {\n\t\treturn new ContentEntitySelection(this.context, [\n\t\t\t...this.selectionSet,\n\t\t\tfield,\n\t\t], this.transformFn)\n\t}\n\n\tprivate withFieldTransform(alias: string, transform: (value: any, ctx: ContentTransformContext) => any) {\n\t\treturn new ContentEntitySelection(this.context, this.selectionSet, (value, ctx) => {\n\t\t\tconst transformedValue = transform(value[alias], ctx)\n\t\t\tconst newValue = {\n\t\t\t\t...value,\n\t\t\t\t[alias]: transformedValue,\n\t\t\t}\n\t\t\treturn this.transformFn ? this.transformFn(newValue, ctx) : newValue\n\t\t})\n\t}\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ContentEntitySelection.js","sources":["../../../../../packages/client-content/src/nodes/ContentEntitySelection.ts"],"sourcesContent":["import { createListArgs } from '../utils/createListArgs'\nimport { ContentClientInput, SchemaEntityNames, SchemaNames } from '../types'\nimport { Input } from '@contember/schema'\nimport { GraphQlField, GraphQlFieldTypedArgs, GraphQlSelectionSet } from '@contember/graphql-builder'\n\n/**\n * @internal\n */\nexport type ContentEntitySelectionContext<Name extends string> = {\n\tentity: SchemaEntityNames<Name>\n\tschema: SchemaNames\n}\n\nexport type ContentEntitySelectionCallback = (select: ContentEntitySelection) => ContentEntitySelection\n\nexport type EntitySelectionCommonInput<Alias extends string | null = string | null> = { as?: Alias }\nexport type EntitySelectionManyArgs<Alias extends string | null = string | null> =\n\t& ContentClientInput.AnyListQueryInput\n\t& EntitySelectionCommonInput<Alias>\n\t& { totalCount?: boolean }\nexport type EntitySelectionManyByArgs<Alias extends string | null = string | null> =\n\t& { by: Input.UniqueWhere; filter?: Input.Where }\n\t& EntitySelectionCommonInput<Alias>\nexport type EntitySelectionOneArgs<Alias extends string | null = string | null> = { filter?: Input.Where } & EntitySelectionCommonInput<Alias>\nexport type EntitySelectionColumnArgs<Alias extends string | null = string | null> = EntitySelectionCommonInput<Alias>\n\nexport type EntitySelectionAnyArgs =\n\t| EntitySelectionColumnArgs\n\t| EntitySelectionManyArgs\n\t| EntitySelectionManyByArgs\n\t| EntitySelectionOneArgs\n\nexport type ContentEntitySelectionOrCallback = ContentEntitySelectionCallback | ContentEntitySelection\n\nexport type ContentTransformContext = {\n\trootValue: unknown\n}\n\nexport class ContentEntitySelection {\n\t/**\n\t * @internal\n\t */\n\tconstructor(\n\t\t/** @internal */\n\t\tpublic readonly context: ContentEntitySelectionContext<string>,\n\t\t/** @internal */\n\t\tpublic readonly selectionSet: GraphQlSelectionSet,\n\t\t/** @internal */\n\t\tpublic readonly transformFn?: (value: any, ctx: ContentTransformContext) => any,\n\t) {\n\t}\n\n\t$(field: string, args?: EntitySelectionColumnArgs): ContentEntitySelection\n\t$(field: string, args: EntitySelectionManyArgs, selection: ContentEntitySelectionOrCallback): ContentEntitySelection\n\t$(field: string, args: EntitySelectionManyByArgs, selection: ContentEntitySelectionOrCallback): ContentEntitySelection\n\t$(field: string, args: EntitySelectionOneArgs, selection: ContentEntitySelectionOrCallback): ContentEntitySelection\n\t$(field: string, selection: ContentEntitySelectionOrCallback): ContentEntitySelection\n\n\t$(\n\t\tfield: string,\n\t\targsOrSelection?: EntitySelectionAnyArgs | ContentEntitySelectionOrCallback,\n\t\tselectionIn?: ContentEntitySelectionOrCallback,\n\t): ContentEntitySelection {\n\t\tconst [args, selection] = typeof argsOrSelection === 'function' || argsOrSelection instanceof ContentEntitySelection\n\t\t\t? [{}, argsOrSelection]\n\t\t\t: [argsOrSelection ?? {}, selectionIn]\n\t\tif (field === '__typename') {\n\t\t\treturn this.withField(new GraphQlField(args.as ?? null, '__typename'))\n\t\t}\n\t\tconst fieldInfo = this.context.entity.fields[field]\n\t\tif (!fieldInfo) {\n\t\t\tif ('by' in args && field.includes('By')) {\n\t\t\t\tif (!selection) {\n\t\t\t\t\tthrow new Error(`Selection is required for ${this.context.entity.name}.${field}.`)\n\t\t\t\t}\n\t\t\t\treturn this._manyBy(field, args as EntitySelectionManyByArgs, selection)\n\t\t\t}\n\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${field} does not exist.`)\n\t\t}\n\t\tif (fieldInfo.type === 'column') {\n\t\t\treturn this._column(field, args as EntitySelectionColumnArgs)\n\t\t}\n\t\tif (fieldInfo.type === 'many') {\n\t\t\tif (!selection) {\n\t\t\t\tthrow new Error(`Selection is required for ${this.context.entity.name}.${field}.`)\n\t\t\t}\n\t\t\treturn this._many(field, args as EntitySelectionManyArgs, selection)\n\t\t}\n\t\tif (fieldInfo.type === 'one') {\n\t\t\tif (!selection) {\n\t\t\t\tthrow new Error(`Selection is required for ${this.context.entity.name}.${field}.`)\n\t\t\t}\n\t\t\treturn this._one(field, args as EntitySelectionOneArgs, selection)\n\t\t}\n\t\tthrow new Error(`Unknown field type ${fieldInfo.type}.`)\n\t}\n\n\t$$(): ContentEntitySelection {\n\t\tconst columns = this.context.entity.scalars\n\t\tconst nodes = [\n\t\t\t...this.selectionSet,\n\t\t\t...columns.map(col => new GraphQlField(null, col)),\n\t\t]\n\t\treturn new ContentEntitySelection(this.context, nodes)\n\t}\n\n\tomit(...fields: string[]): ContentEntitySelection {\n\t\treturn new ContentEntitySelection(\n\t\t\tthis.context,\n\t\t\tthis.selectionSet.filter(it => {\n\t\t\t\tif (!(it instanceof GraphQlField)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t\tconst alias = it.alias ?? it.name\n\t\t\t\treturn !fields.includes(alias)\n\t\t\t}),\n\t\t)\n\t}\n\n\tmeta(field: string, flags: ('readable' | 'updatable')[]): ContentEntitySelection {\n\t\tconst metaField = this.selectionSet.find((it): it is GraphQlField => it instanceof GraphQlField && it.name === '_meta')\n\t\tconst selectionWithoutMeta = metaField ? this.selectionSet.filter(it => it !== metaField) : this.selectionSet\n\n\t\tconst flagFields: GraphQlField[] = []\n\t\tfor (const flag of flags) {\n\t\t\tflagFields.push(new GraphQlField(null, flag))\n\t\t}\n\n\t\treturn new ContentEntitySelection(this.context, [\n\t\t\t...selectionWithoutMeta,\n\t\t\tnew GraphQlField(null, '_meta', undefined, [\n\t\t\t\t...metaField?.selectionSet ?? [],\n\t\t\t\tnew GraphQlField(null, field, undefined, flagFields),\n\t\t\t]),\n\t\t])\n\t}\n\n\ttransform(transform: (value: any, context: ContentTransformContext) => any): ContentEntitySelection {\n\t\treturn new ContentEntitySelection(\n\t\t\tthis.context,\n\t\t\tthis.selectionSet,\n\t\t\t!this.transformFn ? transform : (value, ctx) => {\n\t\t\t\treturn transform(this.transformFn!(value, ctx), ctx)\n\t\t\t},\n\t\t)\n\t}\n\n\tprivate _column(\n\t\tname: string,\n\t\targs: EntitySelectionCommonInput = {},\n\t): ContentEntitySelection {\n\t\tlet fieldInfo = this.context.entity.fields[name]\n\t\tif (!fieldInfo) {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} does not exist.`)\n\t\t}\n\t\tif (fieldInfo?.type !== 'column') {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} is not a column.`)\n\t\t}\n\n\t\tconst alias = args.as ?? name\n\n\t\tconst field = new GraphQlField(alias, name, {})\n\t\treturn this.withField(field)\n\t}\n\n\tprivate _many(\n\t\tname: string,\n\t\targs: EntitySelectionManyArgs,\n\t\tfields:\n\t\t\t| ContentEntitySelectionCallback\n\t\t\t| ContentEntitySelection,\n\t): ContentEntitySelection {\n\t\tconst alias = args.as ?? name\n\t\tconst fieldInfo = this.context.entity.fields[name]\n\t\tif (!fieldInfo) {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} does not exist.`)\n\t\t}\n\t\tif (fieldInfo?.type !== 'many') {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} is not a has-many relation.`)\n\t\t}\n\t\tconst entity = this.context.schema.entities[fieldInfo.entity]\n\n\t\tconst newContext = {\n\t\t\tentity: entity,\n\t\t\tschema: this.context.schema,\n\t\t}\n\n\t\tconst entitySelection = typeof fields === 'function' ? fields(new ContentEntitySelection(newContext, [])) : fields\n\n\t\t// Always use paginateRelation API (relay-like Connection format)\n\t\tconst paginateFieldName = `paginate${name.charAt(0).toUpperCase()}${name.slice(1)}`\n\t\tconst paginateSelectionSet: GraphQlSelectionSet = [\n\t\t\t...(args.totalCount\n\t\t\t\t? [\n\t\t\t\t\tnew GraphQlField(null, 'pageInfo', {}, [\n\t\t\t\t\t\tnew GraphQlField(null, 'totalCount'),\n\t\t\t\t\t]),\n\t\t\t\t]\n\t\t\t\t: []),\n\t\t\tnew GraphQlField(null, 'edges', {}, [\n\t\t\t\tnew GraphQlField(null, 'node', {}, entitySelection.selectionSet),\n\t\t\t]),\n\t\t]\n\t\tconst newObjectField = new GraphQlField(\n\t\t\talias,\n\t\t\tpaginateFieldName,\n\t\t\tcreateListArgs(entity, args, 'paginate'),\n\t\t\tpaginateSelectionSet,\n\t\t)\n\t\tconst selectionWithField = this.withField(newObjectField)\n\t\tconst includeTotalCount = args.totalCount ?? false\n\t\tconst nestedTransform = entitySelection.transformFn\n\n\t\t// Transform: unwrap Connection → flat array, optionally attach totalCount\n\t\treturn selectionWithField.withFieldTransform(alias, (connection, ctx) => {\n\t\t\tconst items = connection.edges.map((edge: any) => nestedTransform ? nestedTransform(edge.node, ctx) : edge.node)\n\t\t\tif (includeTotalCount && connection.pageInfo) {\n\t\t\t\tObject.defineProperty(items, 'totalCount', {\n\t\t\t\t\tvalue: connection.pageInfo.totalCount,\n\t\t\t\t\tenumerable: false,\n\t\t\t\t\twritable: false,\n\t\t\t\t})\n\t\t\t}\n\t\t\treturn items\n\t\t})\n\t}\n\n\tprivate _manyBy(\n\t\tname: string,\n\t\targs: EntitySelectionManyByArgs,\n\t\tfields:\n\t\t\t| ContentEntitySelectionCallback\n\t\t\t| ContentEntitySelection,\n\t): ContentEntitySelection {\n\t\tconst alias = args.as ?? name\n\t\tconst byField = Object.keys(args.by)[0]\n\t\tconst relationField = name.substring(0, name.length - byField.length - 2)\n\n\t\tconst field = this.context.entity.fields[relationField]\n\t\tif (!field) {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${relationField} does not exist.`)\n\t\t}\n\t\tif (field?.type !== 'many') {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${relationField} is not a has-many relation.`)\n\t\t}\n\t\tconst entity = this.context.schema.entities[field.entity]\n\t\tconst newContext = {\n\t\t\tentity: entity,\n\t\t\tschema: this.context.schema,\n\t\t}\n\t\tconst fieldUpperFirst = name.charAt(0).toUpperCase() + name.slice(1)\n\n\t\tconst argsWithType: GraphQlFieldTypedArgs = {\n\t\t\tfilter: {\n\t\t\t\tgraphQlType: `${entity.name}Where`,\n\t\t\t\tvalue: args.filter,\n\t\t\t},\n\t\t\tby: {\n\t\t\t\tgraphQlType: `${this.context.entity.name}${fieldUpperFirst}UniqueWhere!`,\n\t\t\t\tvalue: args.by,\n\t\t\t},\n\t\t}\n\n\t\tconst entitySelection = typeof fields === 'function' ? fields(new ContentEntitySelection(newContext, []) as any) : fields\n\t\tconst newObjectField = new GraphQlField(\n\t\t\talias,\n\t\t\tname,\n\t\t\targsWithType,\n\t\t\tentitySelection.selectionSet,\n\t\t)\n\t\tconst selectionWithField = this.withField(newObjectField)\n\t\tconst nestedTransform = entitySelection.transformFn\n\t\tif (!nestedTransform) {\n\t\t\treturn selectionWithField\n\t\t}\n\t\treturn selectionWithField.withFieldTransform(alias, (it, ctx) => it !== null ? nestedTransform(it, ctx) : null)\n\t}\n\n\tprivate _one(\n\t\tname: string,\n\t\targs: EntitySelectionOneArgs,\n\t\tfields:\n\t\t\t| ContentEntitySelectionCallback\n\t\t\t| ContentEntitySelection,\n\t): ContentEntitySelection {\n\t\tconst alias = args.as ?? name\n\t\tconst fieldInfo = this.context.entity.fields[name]\n\t\tif (!fieldInfo) {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} does not exist.`)\n\t\t}\n\t\tif (fieldInfo?.type !== 'one') {\n\t\t\tthrow new Error(`Field ${this.context.entity.name}.${name} is not a has-one relation.`)\n\t\t}\n\t\tconst entity = this.context.schema.entities[fieldInfo.entity]\n\n\t\tconst newContext: ContentEntitySelectionContext<(typeof entity)['name']> = {\n\t\t\tentity: entity,\n\t\t\tschema: this.context.schema,\n\t\t}\n\t\tconst argsWithType: GraphQlFieldTypedArgs = {\n\t\t\tfilter: {\n\t\t\t\tgraphQlType: `${entity.name}Where`,\n\t\t\t\tvalue: args.filter,\n\t\t\t},\n\t\t}\n\t\tconst entitySelection = typeof fields === 'function'\n\t\t\t? fields(new ContentEntitySelection(newContext, []) as any)\n\t\t\t: fields\n\t\tconst newObjectField = new GraphQlField(\n\t\t\talias,\n\t\t\tname,\n\t\t\targsWithType,\n\t\t\tentitySelection.selectionSet,\n\t\t)\n\t\tconst selectionWithField = this.withField(newObjectField)\n\t\tconst nestedTransform = entitySelection.transformFn\n\t\tif (!nestedTransform) {\n\t\t\treturn selectionWithField\n\t\t}\n\t\treturn selectionWithField.withFieldTransform(alias, (it, ctx) => it !== null ? nestedTransform(it, ctx) : null)\n\t}\n\n\tprivate withField(field: GraphQlField) {\n\t\treturn new ContentEntitySelection(this.context, [\n\t\t\t...this.selectionSet,\n\t\t\tfield,\n\t\t], this.transformFn)\n\t}\n\n\tprivate withFieldTransform(alias: string, transform: (value: any, ctx: ContentTransformContext) => any) {\n\t\treturn new ContentEntitySelection(this.context, this.selectionSet, (value, ctx) => {\n\t\t\tconst transformedValue = transform(value[alias], ctx)\n\t\t\tconst newValue = {\n\t\t\t\t...value,\n\t\t\t\t[alias]: transformedValue,\n\t\t\t}\n\t\t\treturn this.transformFn ? this.transformFn(newValue, ctx) : newValue\n\t\t})\n\t}\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentOperation.cjs","sources":["../../../../../packages/client-content/src/nodes/ContentOperation.ts"],"sourcesContent":["import { GraphQlFieldTypedArgs, GraphQlSelectionSet } from '@contember/graphql-builder'\n\nexport class ContentOperation<TValue, TType extends 'query' | 'mutation'> {\n\t/**\n\t * @internal\n\t */\n\tconstructor(\n\t\t/** @internal */\n\t\tpublic readonly type: TType,\n\t\t/** @internal */\n\t\tpublic readonly fieldName: string,\n\t\t/** @internal */\n\t\tpublic readonly args: GraphQlFieldTypedArgs = {},\n\t\t/** @internal */\n\t\tpublic readonly selection?: GraphQlSelectionSet,\n\t\t/** @internal */\n\t\tpublic readonly parse: (value: any) => TValue = it => it as TValue,\n\t) {\n\t}\n}\n\nexport type ContentQuery<TValue> = ContentOperation<TValue, 'query'>\nexport type ContentMutation<TValue> = ContentOperation<TValue, 'mutation'>\n"],"names":[],"mappings":";;AAEO,MAAM,iBAA6D;AAAA;AAAA;AAAA;AAAA,EAIzE,YAEiB,MAEA,WAEA,OAA8B,CAAA,GAE9B,WAEA,QAAgC,CAAA,OAAM,IACrD;AATe,SAAA,OAAA;AAEA,SAAA,YAAA;AAEA,SAAA,OAAA;AAEA,SAAA,YAAA;AAEA,SAAA,QAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"ContentOperation.cjs","sources":["../../../../../packages/client-content/src/nodes/ContentOperation.ts"],"sourcesContent":["import { GraphQlFieldTypedArgs, GraphQlSelectionSet } from '@contember/graphql-builder'\n\nexport class ContentOperation<TValue, TType extends 'query' | 'mutation'> {\n\t/**\n\t * @internal\n\t */\n\tconstructor(\n\t\t/** @internal */\n\t\tpublic readonly type: TType,\n\t\t/** @internal */\n\t\tpublic readonly fieldName: string,\n\t\t/** @internal */\n\t\tpublic readonly args: GraphQlFieldTypedArgs = {},\n\t\t/** @internal */\n\t\tpublic readonly selection?: GraphQlSelectionSet,\n\t\t/** @internal */\n\t\tpublic readonly parse: (value: any) => TValue = it => it as TValue,\n\t) {\n\t}\n}\n\nexport type ContentQuery<TValue> = ContentOperation<TValue, 'query'>\nexport type ContentMutation<TValue> = ContentOperation<TValue, 'mutation'>\n"],"names":[],"mappings":";;AAEO,MAAM,iBAA6D;AAAA;AAAA;AAAA;AAAA,EAIzE,YAEiB,MAEA,WAEA,OAA8B,CAAA,GAE9B,WAEA,QAAgC,CAAA,OAAM,IACrD;AATe,SAAA,OAAA;AAEA,SAAA,YAAA;AAEA,SAAA,OAAA;AAEA,SAAA,YAAA;AAEA,SAAA,QAAA;AAAA,EAEjB;AACD;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContentOperation.js","sources":["../../../../../packages/client-content/src/nodes/ContentOperation.ts"],"sourcesContent":["import { GraphQlFieldTypedArgs, GraphQlSelectionSet } from '@contember/graphql-builder'\n\nexport class ContentOperation<TValue, TType extends 'query' | 'mutation'> {\n\t/**\n\t * @internal\n\t */\n\tconstructor(\n\t\t/** @internal */\n\t\tpublic readonly type: TType,\n\t\t/** @internal */\n\t\tpublic readonly fieldName: string,\n\t\t/** @internal */\n\t\tpublic readonly args: GraphQlFieldTypedArgs = {},\n\t\t/** @internal */\n\t\tpublic readonly selection?: GraphQlSelectionSet,\n\t\t/** @internal */\n\t\tpublic readonly parse: (value: any) => TValue = it => it as TValue,\n\t) {\n\t}\n}\n\nexport type ContentQuery<TValue> = ContentOperation<TValue, 'query'>\nexport type ContentMutation<TValue> = ContentOperation<TValue, 'mutation'>\n"],"names":[],"mappings":"AAEO,MAAM,iBAA6D;AAAA;AAAA;AAAA;AAAA,EAIzE,YAEiB,MAEA,WAEA,OAA8B,CAAA,GAE9B,WAEA,QAAgC,CAAA,OAAM,IACrD;AATe,SAAA,OAAA;AAEA,SAAA,YAAA;AAEA,SAAA,OAAA;AAEA,SAAA,YAAA;AAEA,SAAA,QAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"ContentOperation.js","sources":["../../../../../packages/client-content/src/nodes/ContentOperation.ts"],"sourcesContent":["import { GraphQlFieldTypedArgs, GraphQlSelectionSet } from '@contember/graphql-builder'\n\nexport class ContentOperation<TValue, TType extends 'query' | 'mutation'> {\n\t/**\n\t * @internal\n\t */\n\tconstructor(\n\t\t/** @internal */\n\t\tpublic readonly type: TType,\n\t\t/** @internal */\n\t\tpublic readonly fieldName: string,\n\t\t/** @internal */\n\t\tpublic readonly args: GraphQlFieldTypedArgs = {},\n\t\t/** @internal */\n\t\tpublic readonly selection?: GraphQlSelectionSet,\n\t\t/** @internal */\n\t\tpublic readonly parse: (value: any) => TValue = it => it as TValue,\n\t) {\n\t}\n}\n\nexport type ContentQuery<TValue> = ContentOperation<TValue, 'query'>\nexport type ContentMutation<TValue> = ContentOperation<TValue, 'mutation'>\n"],"names":[],"mappings":"AAEO,MAAM,iBAA6D;AAAA;AAAA;AAAA;AAAA,EAIzE,YAEiB,MAEA,WAEA,OAA8B,CAAA,GAE9B,WAEA,QAAgC,CAAA,OAAM,IACrD;AATe,SAAA,OAAA;AAEA,SAAA,YAAA;AAEA,SAAA,OAAA;AAEA,SAAA,YAAA;AAEA,SAAA,QAAA;AAAA,EAEjB;AACD;"}
|