{"version":3,"file":"serverStartup.cjs","sources":["../../../../../packages/engine-http/src/utils/serverStartup.ts"],"sourcesContent":["import { join } from 'node:path'\nimport { ConfigSource, readConfig, ServerConfig } from '../config/config'\nimport { Type } from '@contember/typesafe'\nimport { createLogger, JsonStreamLoggerHandler, Logger, LogLevels, PrettyPrintLoggerHandler } from '@contember/logger'\nimport { ConfigProcessor } from '../config/ConfigProcessor'\nimport { Plugin } from '../plugin/Plugin'\nimport { readFile } from 'node:fs/promises'\n\nexport const getServerVersion = async (): Promise<string> => {\n\tconst packageJsonFile = process.env.CONTEMBER_PACKAGE_JSON || join(process.cwd(), 'package.json')\n\tconst version = JSON.parse(await readFile(packageJsonFile, 'utf-8')).version\n\treturn version\n}\n\nexport const isDebugMode = (): boolean => process.env.NODE_ENV === 'development'\n\nexport const printStartInfo = ({ version, isDebug }: { version: string; isDebug: boolean }, logger: Logger) => {\n\tlogger.info(`Starting Contember ${version}`)\n\tlogger.info(`NODE_ENV is set to ${process.env.NODE_ENV}`)\n\tif (isDebug) {\n\t\tlogger.warn('Starting Contember in debug mode')\n\t\tlogger.warn('NEVER USE debug mode in production environment')\n\t}\n}\n\nexport const resolveServerConfig = async <T extends ServerConfig>({ plugins, serverConfigSchema }: { plugins: Plugin[]; serverConfigSchema: Type<T> }) => {\n\tconst configProcessors = plugins\n\t\t.map(it => (it.getConfigProcessor ? it.getConfigProcessor() : null))\n\t\t.filter((it): it is ConfigProcessor<any> => it !== null)\n\n\tconst configSources: ConfigSource[] = []\n\tfor (const configType of ['file', 'yaml', 'json'] as const) {\n\t\tconst envValue = process.env['CONTEMBER_CONFIG_' + configType.toUpperCase()]\n\t\tif (envValue) {\n\t\t\tconfigSources.push({ type: configType, data: envValue })\n\t\t}\n\t}\n\n\treturn await readConfig(configSources, configProcessors, serverConfigSchema)\n}\n\nexport const createDefaultLogger = (): Logger => {\n\tconst isDebug = isDebugMode()\n\tconst loggerType = process.env.CONTEMBER_LOGGER_FORMAT ?? (isDebug ? 'pretty' : 'json')\n\tconst stream = process.stderr\n\tconst handler = loggerType === 'pretty'\n\t\t? new PrettyPrintLoggerHandler(stream, {\n\t\t\tformatters: {\n\t\t\t\tpid: () => undefined,\n\t\t\t\tloggerId: () => undefined,\n\t\t\t\turi: ({ attributes, chalk }) => {\n\t\t\t\t\tconst color = attributes.status === undefined\n\t\t\t\t\t\t? chalk.cyan\n\t\t\t\t\t\t: attributes.status < 300\n\t\t\t\t\t\t\t? chalk.green\n\t\t\t\t\t\t\t: chalk.yellowBright\n\t\t\t\t\tconst timeInfo = attributes.totalTimeMs !== undefined ? ` ${attributes.totalTimeMs}ms` : ''\n\t\t\t\t\tconst statusInfo = attributes.status !== undefined ? ` [${attributes.status}]` : ''\n\t\t\t\t\treturn { line: color(`${attributes.method}${statusInfo} ${attributes.uri}${timeInfo} ${chalk.white.dim('#' + attributes.requestId)}`) }\n\t\t\t\t},\n\t\t\t\tmethod: () => undefined,\n\t\t\t\trequestId: () => undefined,\n\t\t\t\ttimeLabel: () => undefined,\n\t\t\t\tstatus: () => undefined,\n\t\t\t\ttotalTimeMs: () => undefined,\n\t\t\t\tevents: ({ formattedValue }) => formattedValue === '[]' ? undefined : formattedValue,\n\t\t\t},\n\t\t})\n\t\t: new JsonStreamLoggerHandler(stream)\n\tconst logLevel = (process.env.CONTEMBER_LOGGER_LEVEL as keyof typeof LogLevels) ?? 'info'\n\treturn createLogger(handler, {\n\t\tpid: process.pid,\n\t\tloggerId: Math.random().toString().substring(2),\n\t}, {\n\t\tfingerCrossedOptions: {\n\t\t\tlogAlwaysLevel: LogLevels[logLevel],\n\t\t},\n\t})\n}\n"],"names":["join","readFile","logger","readConfig","PrettyPrintLoggerHandler","JsonStreamLoggerHandler","createLogger","LogLevels"],"mappings":";;;;;;AAQO,MAAM,mBAAmB,YAA6B;AACtD,QAAA,kBAAkB,QAAQ,IAAI,0BAA0BA,UAAAA,KAAK,QAAQ,OAAO,cAAc;AAC1F,QAAA,UAAU,KAAK,MAAM,MAAMC,YAAS,iBAAiB,OAAO,CAAC,EAAE;AAC9D,SAAA;AACR;AAEO,MAAM,cAAc,MAAe,QAAQ,IAAI,aAAa;AAE5D,MAAM,iBAAiB,CAAC,EAAE,SAAS,QAAA,GAAkDC,YAAmB;AACvG,EAAAA,QAAA,KAAK,sBAAsB,OAAO,EAAE;AAC3C,EAAAA,QAAO,KAAK,sBAAsB,QAAQ,IAAI,QAAQ,EAAE;AACxD,MAAI,SAAS;AACZ,IAAAA,QAAO,KAAK,kCAAkC;AAC9C,IAAAA,QAAO,KAAK,gDAAgD;AAAA,EAAA;AAE9D;AAEO,MAAM,sBAAsB,OAA+B,EAAE,SAAS,yBAA6E;AACzJ,QAAM,mBAAmB,QACvB,IAAI,CAAA,OAAO,GAAG,qBAAqB,GAAG,mBAAmB,IAAI,IAAK,EAClE,OAAO,CAAC,OAAmC,OAAO,IAAI;AAExD,QAAM,gBAAgC,CAAC;AACvC,aAAW,cAAc,CAAC,QAAQ,QAAQ,MAAM,GAAY;AAC3D,UAAM,WAAW,QAAQ,IAAI,sBAAsB,WAAW,aAAa;AAC3E,QAAI,UAAU;AACb,oBAAc,KAAK,EAAE,MAAM,YAAY,MAAM,UAAU;AAAA,IAAA;AAAA,EACxD;AAGD,SAAO,MAAMC,OAAA,WAAW,eAAe,kBAAkB,kBAAkB;AAC5E;AAEO,MAAM,sBAAsB,MAAc;AAChD,QAAM,UAAU,YAAY;AAC5B,QAAM,aAAa,QAAQ,IAAI,4BAA4B,UAAU,WAAW;AAChF,QAAM,SAAS,QAAQ;AACvB,QAAM,UAAU,eAAe,WAC5B,IAAIC,OAAAA,yBAAyB,QAAQ;AAAA,IACtC,YAAY;AAAA,MACX,KAAK,MAAM;AAAA,MACX,UAAU,MAAM;AAAA,MAChB,KAAK,CAAC,EAAE,YAAY,YAAY;AACzB,cAAA,QAAQ,WAAW,WAAW,SACjC,MAAM,OACN,WAAW,SAAS,MACnB,MAAM,QACN,MAAM;AACV,cAAM,WAAW,WAAW,gBAAgB,SAAY,IAAI,WAAW,WAAW,OAAO;AACzF,cAAM,aAAa,WAAW,WAAW,SAAY,KAAK,WAAW,MAAM,MAAM;AAC1E,eAAA,EAAE,MAAM,MAAM,GAAG,WAAW,MAAM,GAAG,UAAU,IAAI,WAAW,GAAG,GAAG,QAAQ,IAAI,MAAM,MAAM,IAAI,MAAM,WAAW,SAAS,CAAC,EAAE,EAAE;AAAA,MACvI;AAAA,MACA,QAAQ,MAAM;AAAA,MACd,WAAW,MAAM;AAAA,MACjB,WAAW,MAAM;AAAA,MACjB,QAAQ,MAAM;AAAA,MACd,aAAa,MAAM;AAAA,MACnB,QAAQ,CAAC,EAAE,qBAAqB,mBAAmB,OAAO,SAAY;AAAA,IAAA;AAAA,EACvE,CACA,IACC,IAAIC,OAAA,wBAAwB,MAAM;AAC/B,QAAA,WAAY,QAAQ,IAAI,0BAAqD;AACnF,SAAOC,OAAAA,aAAa,SAAS;AAAA,IAC5B,KAAK,QAAQ;AAAA,IACb,UAAU,KAAK,OAAA,EAAS,SAAS,EAAE,UAAU,CAAC;AAAA,EAAA,GAC5C;AAAA,IACF,sBAAsB;AAAA,MACrB,gBAAgBC,iBAAU,QAAQ;AAAA,IAAA;AAAA,EACnC,CACA;AACF;;;;;;"}