{"version":3,"file":"MasterContainer.cjs","sources":["../../../../packages/engine-http/src/MasterContainer.ts"],"sourcesContent":["import { SystemContainerFactory } from '@contember/engine-system-api'\nimport { TenantContainerFactory } from '@contember/engine-tenant-api'\nimport { Builder } from '@contember/dic'\nimport { ServerConfig } from './config/config'\nimport { ModificationHandlerFactory } from '@contember/schema-migrations'\nimport { Initializer } from './bootstrap'\n\nimport { ProjectContainerFactoryFactory } from './project'\nimport { ProjectConfigResolver } from './config/projectConfigResolver'\nimport { TenantConfigResolver } from './config/tenantConfigResolver'\nimport { ProjectGroupContainerFactory } from './projectGroup/ProjectGroupContainer'\nimport { ProjectGroupResolver } from './projectGroup/ProjectGroupResolver'\nimport { Logger } from '@contember/logger'\nimport { ExecutionContainerFactory, GraphQlSchemaBuilderFactory, PermissionFactory } from '@contember/engine-content-api'\nimport { createProviders, Providers } from './providers'\nimport { TenantApiMiddlewareFactory, TenantGraphQLContextFactory, TenantGraphQLHandlerFactory } from './tenant'\nimport { SystemApiMiddlewareFactory, SystemGraphQLContextFactory, SystemGraphQLHandlerFactory } from './system'\nimport {\n\tContentApiControllerFactory, ContentGraphQLContextFactory, ContentQueryHandlerFactory, GraphQLSchemaContributor, GraphQlSchemaFactory,\n\tGraphQLSchemaFactoryResult, NotModifiedChecker,\n} from './content'\nimport { ProjectContextResolver } from './project-common'\nimport {\n\tContentSchemaTransferMappingFactory,\n\tExportApiControllerFactory,\n\tExportExecutor,\n\tImportApiMiddlewareFactory,\n\tImportExecutor,\n\tSystemSchemaTransferMappingFactory,\n} from './transfer'\nimport { homepageController } from './misc'\nimport { Plugin } from './plugin/Plugin'\nimport { Application } from './application'\nimport { ApplicationWorkerManager } from './workers'\nimport { HttpResponse } from './common'\nimport { ContentQueryExecutorImpl } from './system/ContentQueryExecutor'\nimport { DatabaseMetadataResolver } from '@contember/database'\nimport Koa from 'koa'\nimport { ProjectGroupContainerResolver } from './projectGroup/ProjectGroupContainerResolver'\nimport { PrometheusRegistryFactory } from './prometheus/PrometheusRegistryFactory'\nimport { ProjectGroupContainerMetricsHook } from './prometheus/ProjectGroupContainerMetricsHook'\nimport { createColllectHttpMetricsMiddleware, createShowMetricsMiddleware } from './prometheus'\nimport { createSecretKey } from 'node:crypto'\nimport { CryptoWrapper } from './utils/CryptoWrapper'\nimport { ContentApiSpecificCache } from './content/ContentApiSpecificCache'\nimport { Schema } from '@contember/schema'\n\nexport type ProcessType =\n\t| 'singleNode'\n\t| 'clusterMaster'\n\t| 'clusterWorker'\n\nexport interface MasterContainer {\n\tinitializer: Initializer\n\tapplication: Application\n\tproviders: Providers\n\tapplicationWorkers: ApplicationWorkerManager\n\tmonitoringKoa: Koa\n}\n\nexport interface MasterContainerArgs {\n\tdebugMode: boolean\n\tserverConfig: ServerConfig\n\tprojectConfigResolver: ProjectConfigResolver\n\ttenantConfigResolver: TenantConfigResolver\n\tplugins: Plugin[]\n\tlogger: Logger\n\tversion?: string\n\tprocessType: ProcessType\n}\n\nexport type MasterContainerBuilder = ReturnType<MasterContainerFactory['createBuilderInternal']>\nexport type MasterContainerHook = (builder: MasterContainerBuilder) => MasterContainerBuilder\n\nexport class MasterContainerFactory {\n\n\tcreateBuilder(args: MasterContainerArgs): MasterContainerBuilder {\n\t\tconst builder = this.createBuilderInternal(args)\n\t\tconst hooks = args.plugins\n\t\t\t.map(it => it.getMasterContainerHook?.())\n\t\t\t.filter((it): it is MasterContainerHook => it !== undefined)\n\t\treturn hooks.reduce((acc, cb) => cb(acc), builder)\n\t}\n\n\tcreateBuilderInternal({\n\t\tserverConfig,\n\t\tdebugMode,\n\t\tplugins,\n\t\tprojectConfigResolver,\n\t\ttenantConfigResolver,\n\t\tversion,\n\t\tlogger,\n\t\tprocessType,\n\t}: MasterContainerArgs) {\n\t\treturn new Builder({})\n\t\t\t.addService('serverConfig', () =>\n\t\t\t\tserverConfig)\n\t\t\t.addService('debugMode', () =>\n\t\t\t\tdebugMode)\n\t\t\t.addService('version', () =>\n\t\t\t\tversion)\n\t\t\t.addService('processType', () =>\n\t\t\t\tprocessType)\n\t\t\t.addService('projectConfigResolver', () =>\n\t\t\t\tprojectConfigResolver)\n\t\t\t.addService('tenantConfigResolver', () =>\n\t\t\t\ttenantConfigResolver)\n\t\t\t.addService('plugins', () =>\n\t\t\t\tplugins)\n\t\t\t.addService('providers', () =>\n\t\t\t\tcreateProviders())\n\t\t\t.addService('tenantContainerFactory', ({ providers }) =>\n\t\t\t\tnew TenantContainerFactory(providers))\n\t\t\t.addService('modificationHandlerFactory', () =>\n\t\t\t\tnew ModificationHandlerFactory(ModificationHandlerFactory.defaultFactoryMap))\n\t\t\t.addService('executionContainerFactory', ({ providers, serverConfig }) =>\n\t\t\t\tnew ExecutionContainerFactory(providers, serverConfig.contentApi?.whereOptimizer))\n\t\t\t.addService('graphQlSchemaBuilderFactory', () =>\n\t\t\t\tnew GraphQlSchemaBuilderFactory())\n\t\t\t.addService('contentQueryExecutor', ({ executionContainerFactory, graphQlSchemaBuilderFactory }) =>\n\t\t\t\tnew ContentQueryExecutorImpl(executionContainerFactory, graphQlSchemaBuilderFactory))\n\t\t\t.addService('systemContainerFactory', ({ providers, modificationHandlerFactory, contentQueryExecutor }) =>\n\t\t\t\tnew SystemContainerFactory(providers, modificationHandlerFactory, contentQueryExecutor))\n\t\t\t.addService('contentPermissionFactory', ({}) =>\n\t\t\t\tnew PermissionFactory())\n\t\t\t.addService('databaseMetadataResolver', () =>\n\t\t\t\tnew DatabaseMetadataResolver())\n\t\t\t.addService('graphqlSchemaCache', ({ serverConfig }) =>\n\t\t\t\tnew ContentApiSpecificCache<Schema, GraphQLSchemaFactoryResult>({\n\t\t\t\t\tttlSeconds: serverConfig.contentApi?.schemaCacheTtlSeconds,\n\t\t\t\t}))\n\t\t\t.addService('graphQlSchemaFactory', ({ plugins, providers, graphqlSchemaCache, contentPermissionFactory, graphQlSchemaBuilderFactory }) => {\n\t\t\t\tconst contributors = plugins\n\t\t\t\t\t.map(it => (it.getSchemaContributor ? it.getSchemaContributor({ providers }) : null))\n\t\t\t\t\t.filter((it): it is GraphQLSchemaContributor => !!it)\n\n\t\t\t\treturn new GraphQlSchemaFactory(\n\t\t\t\t\tgraphqlSchemaCache,\n\t\t\t\t\tgraphQlSchemaBuilderFactory,\n\t\t\t\t\tcontentPermissionFactory,\n\t\t\t\t\tcontributors,\n\t\t\t\t)\n\t\t\t})\n\t\t\t.addService('projectContainerFactoryFactory', ({ plugins, providers, databaseMetadataResolver }) =>\n\t\t\t\tnew ProjectContainerFactoryFactory(plugins, providers, databaseMetadataResolver))\n\t\t\t.addService('tenantGraphQLHandlerFactory', () =>\n\t\t\t\tnew TenantGraphQLHandlerFactory())\n\t\t\t.addService('systemGraphQLHandlerFactory', ({ debugMode }) =>\n\t\t\t\tnew SystemGraphQLHandlerFactory(debugMode))\n\t\t\t.addService('logger', () =>\n\t\t\t\tlogger)\n\t\t\t.addService('projectGroupContainerFactory', ({ debugMode, providers, systemContainerFactory, tenantContainerFactory, projectContainerFactoryFactory, projectConfigResolver, tenantGraphQLHandlerFactory, systemGraphQLHandlerFactory, logger }) =>\n\t\t\t\tnew ProjectGroupContainerFactory(debugMode, providers, systemContainerFactory, tenantContainerFactory, projectContainerFactoryFactory, projectConfigResolver, tenantGraphQLHandlerFactory, systemGraphQLHandlerFactory, logger))\n\t\t\t.addService('projectGroupContainerResolver', ({ tenantConfigResolver, projectGroupContainerFactory }) =>\n\t\t\t\tnew ProjectGroupContainerResolver(tenantConfigResolver, projectGroupContainerFactory))\n\t\t\t.addService('promRegistryFactory', ({ processType, version }) =>\n\t\t\t\tnew PrometheusRegistryFactory(processType, { version }))\n\t\t\t.addService('projectGroupContainerMetricsHook', ({ projectGroupContainerResolver }) =>\n\t\t\t\tnew ProjectGroupContainerMetricsHook(projectGroupContainerResolver))\n\t\t\t.addService('promRegistry', ({ promRegistryFactory, projectGroupContainerMetricsHook }) => {\n\t\t\t\tconst registry = promRegistryFactory.create()\n\t\t\t\tprojectGroupContainerMetricsHook.register(registry)\n\t\t\t\treturn registry\n\t\t\t})\n\t\t\t.addService('projectGroupContainer', ({ tenantConfigResolver, projectGroupContainerFactory }) =>\n\t\t\t\tprojectGroupContainerFactory.create({ slug: undefined, config: tenantConfigResolver(undefined, {}) }))\n\t\t\t.addService('projectGroupResolver', ({ serverConfig, projectGroupContainerResolver }): ProjectGroupResolver => {\n\t\t\t\tconst encryptionKey = serverConfig.projectGroup?.configEncryptionKey\n\t\t\t\t\t? createSecretKey(Buffer.from(serverConfig.projectGroup?.configEncryptionKey, 'hex'))\n\t\t\t\t\t: undefined\n\t\t\t\treturn new ProjectGroupResolver(\n\t\t\t\t\tserverConfig.projectGroup?.domainMapping,\n\t\t\t\t\tserverConfig.projectGroup?.configHeader,\n\t\t\t\t\tserverConfig.projectGroup?.configEncryptionKey ? new CryptoWrapper(encryptionKey) : undefined,\n\t\t\t\t\tprojectGroupContainerResolver,\n\t\t\t\t)\n\n\t\t\t})\n\t\t\t.addService('notModifiedChecker', () =>\n\t\t\t\tnew NotModifiedChecker())\n\t\t\t.addService('contentGraphqlContextFactory', ({ providers, executionContainerFactory }) =>\n\t\t\t\tnew ContentGraphQLContextFactory(providers, executionContainerFactory))\n\t\t\t.addService('contentQueryHandlerFactory', ({ debugMode }) =>\n\t\t\t\tnew ContentQueryHandlerFactory(debugMode))\n\t\t\t.addService('projectContextResolver', () =>\n\t\t\t\tnew ProjectContextResolver())\n\t\t\t.addService('contentApiMiddlewareFactory', ({ projectContextResolver, notModifiedChecker, contentGraphqlContextFactory, contentQueryHandlerFactory, graphQlSchemaFactory }) =>\n\t\t\t\tnew ContentApiControllerFactory(notModifiedChecker, contentGraphqlContextFactory, contentQueryHandlerFactory, projectContextResolver, graphQlSchemaFactory))\n\t\t\t.addService('tenantGraphQLContextFactory', () =>\n\t\t\t\tnew TenantGraphQLContextFactory())\n\t\t\t.addService('tenantApiMiddlewareFactory', ({ debugMode, projectGroupResolver, tenantGraphQLContextFactory }) =>\n\t\t\t\tnew TenantApiMiddlewareFactory(debugMode, projectGroupResolver, tenantGraphQLContextFactory))\n\t\t\t.addService('systemGraphQLContextFactory', () =>\n\t\t\t\tnew SystemGraphQLContextFactory())\n\t\t\t.addService('systemApiMiddlewareFactory', ({ debugMode, systemGraphQLContextFactory, projectContextResolver }) =>\n\t\t\t\tnew SystemApiMiddlewareFactory(debugMode, systemGraphQLContextFactory, projectContextResolver))\n\t\t\t.addService('contentSchemaTransferMappingFactory', () =>\n\t\t\t\tnew ContentSchemaTransferMappingFactory())\n\t\t\t.addService('systemSchemaTransferMappingFactory', () =>\n\t\t\t\tnew SystemSchemaTransferMappingFactory())\n\t\t\t.addService('importExecutor', ({ contentSchemaTransferMappingFactory, systemSchemaTransferMappingFactory, databaseMetadataResolver }) =>\n\t\t\t\tnew ImportExecutor(contentSchemaTransferMappingFactory, systemSchemaTransferMappingFactory, databaseMetadataResolver))\n\t\t\t.addService('exportExecutor', ({ contentSchemaTransferMappingFactory, systemSchemaTransferMappingFactory }) =>\n\t\t\t\tnew ExportExecutor(contentSchemaTransferMappingFactory, systemSchemaTransferMappingFactory))\n\t\t\t.addService('importApiMiddlewareFactory', ({ projectGroupResolver, importExecutor }) =>\n\t\t\t\tnew ImportApiMiddlewareFactory(projectGroupResolver, importExecutor))\n\t\t\t.addService('exportApiMiddlewareFactory', ({ projectGroupResolver, exportExecutor }) =>\n\t\t\t\tnew ExportApiControllerFactory(projectGroupResolver, exportExecutor))\n\t\t\t.addService('application', ({ projectGroupResolver, serverConfig, logger, debugMode, version, promRegistry }) => {\n\t\t\t\tconst app = new Application(\n\t\t\t\t\tprojectGroupResolver,\n\t\t\t\t\tserverConfig,\n\t\t\t\t\tdebugMode,\n\t\t\t\t\tversion,\n\t\t\t\t\tlogger,\n\t\t\t\t)\n\t\t\t\tapp.addMiddleware(createColllectHttpMetricsMiddleware(promRegistry))\n\n\t\t\t\treturn app\n\t\t\t})\n\t\t\t.setupService('application', (it, { contentApiMiddlewareFactory, tenantApiMiddlewareFactory, systemApiMiddlewareFactory, importApiMiddlewareFactory, exportApiMiddlewareFactory }) => {\n\t\t\t\tit.addRoute('content', '/content/:projectSlug/:stageSlug', contentApiMiddlewareFactory.create())\n\t\t\t\tit.addRoute('tenant', '/tenant', tenantApiMiddlewareFactory.create())\n\t\t\t\tit.addRoute('system', '/system/:projectSlug', systemApiMiddlewareFactory.create())\n\t\t\t\tit.addRoute('transfer', '/import', importApiMiddlewareFactory.create())\n\t\t\t\tit.addRoute('transfer', '/export', exportApiMiddlewareFactory.create())\n\t\t\t\tit.addRoute('misc', '/', homepageController)\n\n\t\t\t\tit.addInternalRoute('internal', '/health', () => {\n\t\t\t\t\treturn new HttpResponse(200, 'OK')\n\t\t\t\t})\n\t\t\t})\n\t\t\t.addService('initializer', ({ projectGroupContainer }) =>\n\t\t\t\tnew Initializer(projectGroupContainer))\n\t\t\t.addService('applicationWorkers', () =>\n\t\t\t\tnew ApplicationWorkerManager())\n\t\t\t.setupService('executionContainerFactory', (it, { plugins }) => {\n\t\t\t\tfor (const plugin of plugins) {\n\t\t\t\t\tif (plugin.getExecutionContainerHook) {\n\t\t\t\t\t\tit.hooks.push(plugin.getExecutionContainerHook())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\t.addService('monitoringKoa', ({ promRegistry }) => {\n\t\t\t\tconst app = new Koa()\n\t\t\t\tapp.use(createShowMetricsMiddleware(promRegistry))\n\n\t\t\t\treturn app\n\t\t\t})\n\n\t}\n\n\tcreate(args: MasterContainerArgs): MasterContainer {\n\t\tconst container = this.createBuilder(args).build()\n\t\treturn container.pick('initializer', 'application', 'providers', 'applicationWorkers', 'monitoringKoa')\n\t}\n}\n"],"names":["Builder","createProviders","providers","TenantContainerFactory","ModificationHandlerFactory","serverConfig","ExecutionContainerFactory","GraphQlSchemaBuilderFactory","ContentQueryExecutorImpl","SystemContainerFactory","PermissionFactory","DatabaseMetadataResolver","ContentApiSpecificCache","plugins","GraphQlSchemaFactory","ProjectContainerFactoryFactory","TenantGraphQLHandlerFactory","debugMode","SystemGraphQLHandlerFactory","projectConfigResolver","logger","ProjectGroupContainerFactory","tenantConfigResolver","ProjectGroupContainerResolver","processType","version","PrometheusRegistryFactory","ProjectGroupContainerMetricsHook","createSecretKey","ProjectGroupResolver","CryptoWrapper","NotModifiedChecker","ContentGraphQLContextFactory","ContentQueryHandlerFactory","ProjectContextResolver","ContentApiControllerFactory","TenantGraphQLContextFactory","TenantApiMiddlewareFactory","SystemGraphQLContextFactory","SystemApiMiddlewareFactory","ContentSchemaTransferMappingFactory","SystemSchemaTransferMappingFactory","ImportExecutor","ExportExecutor","ImportApiMiddlewareFactory","ExportApiControllerFactory","Application","createColllectHttpMetricsMiddleware","homepageController","HttpResponse","Initializer","ApplicationWorkerManager","createShowMetricsMiddleware"],"mappings":"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"}