{"version":3,"file":"ContentGraphQLContextFactory.cjs","sources":["../../../../../packages/engine-http/src/content/ContentGraphQLContextFactory.ts"],"sourcesContent":["import { Context, createAclVariables, ExecutionContainerFactory } from '@contember/engine-content-api'\nimport { Client, DatabaseMetadata } from '@contember/database'\nimport { Acl, Schema } from '@contember/schema'\nimport { AuthResult } from '../common'\nimport { Timer } from '../application'\nimport { Providers } from '../providers'\nimport { ParsedMembership } from '@contember/schema-utils'\nimport { Stage } from '@contember/engine-system-api'\nimport { ProjectConfig } from '../project/config'\n\nexport type ExtendedGraphqlContext = Context & {\n\tidentityId: string\n\trequestDebug: boolean\n\tproject: { slug: string }\n}\n\nexport class ContentGraphQLContextFactory {\n\tconstructor(\n\t\tprivate providers: Providers,\n\t\tprivate executionContainerFactory: ExecutionContainerFactory,\n\t) {\n\t}\n\n\tcreate({ db, schema, schemaMeta, schemaDatabaseMetadata, authResult, memberships, permissions, timer, requestDebug, systemSchema, stage, project }: {\n\t\tdb: Client\n\t\tschema: Schema\n\t\tschemaMeta: { id?: number }\n\t\tschemaDatabaseMetadata: DatabaseMetadata\n\t\tpermissions: Acl.Permissions\n\t\tauthResult: AuthResult\n\t\tmemberships: readonly ParsedMembership[]\n\t\ttimer: Timer\n\t\trequestDebug: boolean\n\t\tsystemSchema: string\n\t\tstage: Stage\n\t\tproject: ProjectConfig\n\t}): ExtendedGraphqlContext {\n\t\tconst identityVariables = createAclVariables(schema.acl, memberships)\n\t\tlet identityId = authResult.identityId\n\t\tif (\n\t\t\tauthResult.assumedIdentityId &&\n\t\t\tmemberships.some(it => schema.acl.roles[it.role].system?.assumeIdentity)\n\t\t) {\n\t\t\tidentityId = authResult.assumedIdentityId\n\t\t}\n\n\t\tconst executionContainer = this.executionContainerFactory.create({\n\t\t\tdb,\n\t\t\tidentityVariables,\n\t\t\tidentityId,\n\t\t\tschema,\n\t\t\tschemaMeta,\n\t\t\tschemaDatabaseMetadata,\n\t\t\tpermissions,\n\t\t\tsystemSchema,\n\t\t\tstage,\n\t\t\tproject,\n\t\t})\n\n\t\treturn {\n\t\t\tdb,\n\t\t\tidentityVariables,\n\t\t\tidentityId,\n\t\t\texecutionContainer,\n\t\t\ttimer,\n\t\t\trequestDebug,\n\t\t\tproject,\n\t\t}\n\t}\n}\n"],"names":["createAclVariables"],"mappings":";;;AAgBO,MAAM,6BAA6B;AAAA,EACzC,YACS,WACA,2BACP;AAFO,SAAA,YAAA;AACA,SAAA,4BAAA;AAAA,EAAA;AAAA,EAIT,OAAO,EAAE,IAAI,QAAQ,YAAY,wBAAwB,YAAY,aAAa,aAAa,OAAO,cAAc,cAAc,OAAO,WAa9G;AAC1B,UAAM,oBAAoBA,iBAAA,mBAAmB,OAAO,KAAK,WAAW;AACpE,QAAI,aAAa,WAAW;AAC5B,QACC,WAAW,qBACX,YAAY,KAAK,CAAM,OAAA,OAAO,IAAI,MAAM,GAAG,IAAI,EAAE,QAAQ,cAAc,GACtE;AACD,mBAAa,WAAW;AAAA,IAAA;AAGnB,UAAA,qBAAqB,KAAK,0BAA0B,OAAO;AAAA,MAChE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,CACA;AAEM,WAAA;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,EAAA;AAEF;;"}