{"version":3,"file":"ContentQueryExecutor.cjs","sources":["../../../../../packages/engine-http/src/system/ContentQueryExecutor.ts"],"sourcesContent":["import {\n\tContentQueryExecutor,\n\tContentQueryExecutorContext,\n\tContentQueryExecutorQuery,\n\tContentQueryExecutorResult,\n} from '@contember/engine-system-api'\nimport { Authorizator, ExecutionContainerFactory, GraphQlSchemaBuilderFactory } from '@contember/engine-content-api'\nimport { AllowAllPermissionFactory } from '@contember/schema-utils'\nimport { graphql, GraphQLError } from 'graphql'\nimport { ExtendedGraphqlContext } from '../content'\nimport { extractOriginalError } from '../graphql'\nimport { logger } from '@contember/logger'\n\nexport class ContentQueryExecutorImpl implements ContentQueryExecutor {\n\tconstructor(\n\t\tprivate readonly executionContainerFactory: ExecutionContainerFactory,\n\t\tprivate readonly graphqlSchemaBuilderFactory: GraphQlSchemaBuilderFactory,\n\t) {\n\t}\n\n\tpublic async execute({ db, schema, schemaMeta, databaseMetadata, stage, project, identity }: ContentQueryExecutorContext, { query, variables }: ContentQueryExecutorQuery): Promise<ContentQueryExecutorResult> {\n\t\tconst permissions = new AllowAllPermissionFactory().create(schema.model, true)\n\t\tconst authorizator = new Authorizator(permissions, true)\n\t\tconst dataSchemaBuilder = this.graphqlSchemaBuilderFactory.create(schema.model, authorizator)\n\t\tconst dataSchema = dataSchemaBuilder.build()\n\n\t\tconst identityId = identity.id\n\n\t\tconst executionContainer = this.executionContainerFactory.create({\n\t\t\tdb: db.client.forSchema(stage.schema),\n\t\t\tidentityVariables: {},\n\t\t\tidentityId,\n\t\t\tschema,\n\t\t\tschemaMeta,\n\t\t\tschemaDatabaseMetadata: databaseMetadata,\n\t\t\tpermissions,\n\t\t\tsystemSchema: project.systemSchema,\n\t\t\tstage,\n\t\t\tproject: project,\n\t\t})\n\n\t\tconst ctx: ExtendedGraphqlContext = {\n\t\t\tproject,\n\t\t\tdb: db.client.forSchema(stage.schema),\n\t\t\tidentityVariables: {},\n\t\t\tidentityId,\n\t\t\trequestDebug: false,\n\t\t\texecutionContainer,\n\t\t\ttimer: (label, cb) => cb(),\n\t\t}\n\n\t\ttry {\n\t\t\tconst result = await graphql({\n\t\t\t\tschema: dataSchema,\n\t\t\t\tsource: query,\n\t\t\t\tvariableValues: variables,\n\t\t\t\tcontextValue: ctx,\n\t\t\t})\n\t\t\tif (result.errors?.length) {\n\t\t\t\treturn { ok: false, errors: result.errors.map(formatErrorMessage) }\n\t\t\t}\n\t\t\treturn { ok: true, result }\n\t\t} catch (e) {\n\t\t\treturn { ok: false, errors: [formatErrorMessage(e)] }\n\t\t}\n\t}\n}\n\nconst formatErrorMessage = (e: any): string => {\n\tconst originalError = extractOriginalError(e)\n\tif (originalError instanceof GraphQLError) {\n\t\treturn originalError.message\n\t}\n\tconst errorDetails = typeof originalError === 'object'\n\t\t&& originalError !== null\n\t\t&& 'message' in originalError ? `: ${originalError.message}` : ''\n\n\tlogger.error(e)\n\n\treturn `Internal error${errorDetails}`\n}\n"],"names":["AllowAllPermissionFactory","Authorizator","graphql","extractOriginalError","GraphQLError","logger"],"mappings":";;;;;;;;AAaO,MAAM,yBAAyD;AAAA,EACrE,YACkB,2BACA,6BAChB;AAFgB,SAAA,4BAAA;AACA,SAAA,8BAAA;AAAA,EAAA;AAAA,EAIlB,MAAa,QAAQ,EAAE,IAAI,QAAQ,YAAY,kBAAkB,OAAO,SAAS,SAAS,GAAgC,EAAE,OAAO,aAA6E;AAC/M,UAAM,cAAc,IAAIA,wCAA4B,OAAO,OAAO,OAAO,IAAI;AAC7E,UAAM,eAAe,IAAIC,8BAAa,aAAa,IAAI;AACvD,UAAM,oBAAoB,KAAK,4BAA4B,OAAO,OAAO,OAAO,YAAY;AACtF,UAAA,aAAa,kBAAkB,MAAM;AAE3C,UAAM,aAAa,SAAS;AAEtB,UAAA,qBAAqB,KAAK,0BAA0B,OAAO;AAAA,MAChE,IAAI,GAAG,OAAO,UAAU,MAAM,MAAM;AAAA,MACpC,mBAAmB,CAAC;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA,wBAAwB;AAAA,MACxB;AAAA,MACA,cAAc,QAAQ;AAAA,MACtB;AAAA,MACA;AAAA,IAAA,CACA;AAED,UAAM,MAA8B;AAAA,MACnC;AAAA,MACA,IAAI,GAAG,OAAO,UAAU,MAAM,MAAM;AAAA,MACpC,mBAAmB,CAAC;AAAA,MACpB;AAAA,MACA,cAAc;AAAA,MACd;AAAA,MACA,OAAO,CAAC,OAAO,OAAO,GAAG;AAAA,IAC1B;AAEI,QAAA;AACG,YAAA,SAAS,MAAMC,gBAAQ;AAAA,QAC5B,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,gBAAgB;AAAA,QAChB,cAAc;AAAA,MAAA,CACd;AACG,UAAA,OAAO,QAAQ,QAAQ;AACnB,eAAA,EAAE,IAAI,OAAO,QAAQ,OAAO,OAAO,IAAI,kBAAkB,EAAE;AAAA,MAAA;AAE5D,aAAA,EAAE,IAAI,MAAM,OAAO;AAAA,aAClB,GAAG;AACJ,aAAA,EAAE,IAAI,OAAO,QAAQ,CAAC,mBAAmB,CAAC,CAAC,EAAE;AAAA,IAAA;AAAA,EACrD;AAEF;AAEA,MAAM,qBAAqB,CAAC,MAAmB;AACxC,QAAA,gBAAgBC,+BAAqB,CAAC;AAC5C,MAAI,yBAAyBC,QAAAA,cAAc;AAC1C,WAAO,cAAc;AAAA,EAAA;AAEhB,QAAA,eAAe,OAAO,kBAAkB,YAC1C,kBAAkB,QAClB,aAAa,gBAAgB,KAAK,cAAc,OAAO,KAAK;AAEhEC,SAAA,OAAO,MAAM,CAAC;AAEd,SAAO,iBAAiB,YAAY;AACrC;;"}