@contember/engine-server 1.2.1 → 1.3.0-alpha.13

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.
Files changed (128) hide show
  1. package/dist/src/start.js +16 -15
  2. package/dist/src/start.js.map +1 -1
  3. package/dist/src/tsconfig.tsbuildinfo +1 -1
  4. package/dist/tests/e2e/assume-identity.test.js.map +1 -1
  5. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  6. package/package.json +7 -23
  7. package/src/start.ts +10 -8
  8. package/src/tsconfig.json +4 -45
  9. package/tests/e2e/assume-identity.test.ts +0 -1
  10. package/tests/start-server.sh +0 -0
  11. package/tests/tsconfig.json +2 -6
  12. package/tsconfig.json +2 -6
  13. package/build.sh +0 -9
  14. package/dist/src/MasterContainer.d.ts +0 -125
  15. package/dist/src/MasterContainer.d.ts.map +0 -1
  16. package/dist/src/MasterContainer.js +0 -102
  17. package/dist/src/MasterContainer.js.map +0 -1
  18. package/dist/src/bootstrap/Initializer.d.ts +0 -7
  19. package/dist/src/bootstrap/Initializer.d.ts.map +0 -1
  20. package/dist/src/bootstrap/Initializer.js +0 -27
  21. package/dist/src/bootstrap/Initializer.js.map +0 -1
  22. package/dist/src/bootstrap/index.d.ts +0 -2
  23. package/dist/src/bootstrap/index.d.ts.map +0 -1
  24. package/dist/src/bootstrap/index.js +0 -18
  25. package/dist/src/bootstrap/index.js.map +0 -1
  26. package/dist/src/config/config.d.ts +0 -17
  27. package/dist/src/config/config.d.ts.map +0 -1
  28. package/dist/src/config/config.js +0 -30
  29. package/dist/src/config/config.js.map +0 -1
  30. package/dist/src/config/configSchema.d.ts +0 -201
  31. package/dist/src/config/configSchema.d.ts.map +0 -1
  32. package/dist/src/config/configSchema.js +0 -119
  33. package/dist/src/config/configSchema.js.map +0 -1
  34. package/dist/src/config/configTemplate.d.ts +0 -2
  35. package/dist/src/config/configTemplate.d.ts.map +0 -1
  36. package/dist/src/config/configTemplate.js +0 -90
  37. package/dist/src/config/configTemplate.js.map +0 -1
  38. package/dist/src/config/projectConfigResolver.d.ts +0 -8
  39. package/dist/src/config/projectConfigResolver.d.ts.map +0 -1
  40. package/dist/src/config/projectConfigResolver.js +0 -91
  41. package/dist/src/config/projectConfigResolver.js.map +0 -1
  42. package/dist/src/config/tenantConfigResolver.d.ts +0 -8
  43. package/dist/src/config/tenantConfigResolver.d.ts.map +0 -1
  44. package/dist/src/config/tenantConfigResolver.js +0 -31
  45. package/dist/src/config/tenantConfigResolver.js.map +0 -1
  46. package/dist/src/index.d.ts +0 -13
  47. package/dist/src/index.d.ts.map +0 -1
  48. package/dist/src/index.js +0 -33
  49. package/dist/src/index.js.map +0 -1
  50. package/dist/src/project/ProjectContainer.d.ts +0 -58
  51. package/dist/src/project/ProjectContainer.d.ts.map +0 -1
  52. package/dist/src/project/ProjectContainer.js +0 -66
  53. package/dist/src/project/ProjectContainer.js.map +0 -1
  54. package/dist/src/project/ProjectContainerResolver.d.ts +0 -24
  55. package/dist/src/project/ProjectContainerResolver.d.ts.map +0 -1
  56. package/dist/src/project/ProjectContainerResolver.js +0 -75
  57. package/dist/src/project/ProjectContainerResolver.js.map +0 -1
  58. package/dist/src/project/ProjectContainerStore.d.ts +0 -18
  59. package/dist/src/project/ProjectContainerStore.d.ts.map +0 -1
  60. package/dist/src/project/ProjectContainerStore.js +0 -30
  61. package/dist/src/project/ProjectContainerStore.js.map +0 -1
  62. package/dist/src/project/ProjectInitializer.d.ts +0 -14
  63. package/dist/src/project/ProjectInitializer.d.ts.map +0 -1
  64. package/dist/src/project/ProjectInitializer.js +0 -28
  65. package/dist/src/project/ProjectInitializer.js.map +0 -1
  66. package/dist/src/project/ProjectSchemaResolver.d.ts +0 -14
  67. package/dist/src/project/ProjectSchemaResolver.d.ts.map +0 -1
  68. package/dist/src/project/ProjectSchemaResolver.js +0 -30
  69. package/dist/src/project/ProjectSchemaResolver.js.map +0 -1
  70. package/dist/src/project/index.d.ts +0 -5
  71. package/dist/src/project/index.d.ts.map +0 -1
  72. package/dist/src/project/index.js +0 -21
  73. package/dist/src/project/index.js.map +0 -1
  74. package/dist/src/projectGroup/ProjectGroupContainer.d.ts +0 -26
  75. package/dist/src/projectGroup/ProjectGroupContainer.d.ts.map +0 -1
  76. package/dist/src/projectGroup/ProjectGroupContainer.js +0 -70
  77. package/dist/src/projectGroup/ProjectGroupContainer.js.map +0 -1
  78. package/dist/src/projectGroup/ProjectGroupResolver.d.ts +0 -7
  79. package/dist/src/projectGroup/ProjectGroupResolver.d.ts.map +0 -1
  80. package/dist/src/projectGroup/ProjectGroupResolver.js +0 -13
  81. package/dist/src/projectGroup/ProjectGroupResolver.js.map +0 -1
  82. package/dist/src/utils/index.d.ts +0 -3
  83. package/dist/src/utils/index.d.ts.map +0 -1
  84. package/dist/src/utils/index.js +0 -19
  85. package/dist/src/utils/index.js.map +0 -1
  86. package/dist/src/utils/sentry.d.ts +0 -10
  87. package/dist/src/utils/sentry.d.ts.map +0 -1
  88. package/dist/src/utils/sentry.js +0 -80
  89. package/dist/src/utils/sentry.js.map +0 -1
  90. package/dist/src/utils/serverStartup.d.ts +0 -33
  91. package/dist/src/utils/serverStartup.d.ts.map +0 -1
  92. package/dist/src/utils/serverStartup.js +0 -79
  93. package/dist/src/utils/serverStartup.js.map +0 -1
  94. package/dist/src/utils/serverTermination.d.ts +0 -13
  95. package/dist/src/utils/serverTermination.d.ts.map +0 -1
  96. package/dist/src/utils/serverTermination.js +0 -24
  97. package/dist/src/utils/serverTermination.js.map +0 -1
  98. package/dist/src/utils/strings.d.ts +0 -2
  99. package/dist/src/utils/strings.d.ts.map +0 -1
  100. package/dist/src/utils/strings.js +0 -6
  101. package/dist/src/utils/strings.js.map +0 -1
  102. package/dist/tests/cases/configResolver.test.d.ts +0 -2
  103. package/dist/tests/cases/configResolver.test.d.ts.map +0 -1
  104. package/dist/tests/cases/configResolver.test.js +0 -67
  105. package/dist/tests/cases/configResolver.test.js.map +0 -1
  106. package/src/MasterContainer.ts +0 -206
  107. package/src/bootstrap/Initializer.ts +0 -27
  108. package/src/bootstrap/index.ts +0 -1
  109. package/src/config/config.ts +0 -56
  110. package/src/config/configSchema.ts +0 -135
  111. package/src/config/configTemplate.ts +0 -86
  112. package/src/config/projectConfigResolver.ts +0 -86
  113. package/src/config/tenantConfigResolver.ts +0 -41
  114. package/src/index.ts +0 -23
  115. package/src/project/ProjectContainer.ts +0 -95
  116. package/src/project/ProjectContainerResolver.ts +0 -87
  117. package/src/project/ProjectContainerStore.ts +0 -33
  118. package/src/project/ProjectInitializer.ts +0 -28
  119. package/src/project/ProjectSchemaResolver.ts +0 -33
  120. package/src/project/index.ts +0 -4
  121. package/src/projectGroup/ProjectGroupContainer.ts +0 -134
  122. package/src/projectGroup/ProjectGroupResolver.ts +0 -12
  123. package/src/utils/index.ts +0 -2
  124. package/src/utils/sentry.ts +0 -56
  125. package/src/utils/serverStartup.ts +0 -78
  126. package/src/utils/serverTermination.ts +0 -19
  127. package/src/utils/strings.ts +0 -1
  128. package/tests/cases/configResolver.test.ts +0 -67
@@ -1,19 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./sentry"), exports);
18
- __exportStar(require("./strings"), exports);
19
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,4CAAyB"}
@@ -1,10 +0,0 @@
1
- import { LogEntry, LoggerHandler, LogLevel } from '@contember/logger';
2
- export declare class SentryLoggerHandler implements LoggerHandler {
3
- private readonly logLevel;
4
- constructor(logLevel: LogLevel);
5
- getMinLevel(): number;
6
- handle(entry: LogEntry): void;
7
- close(): void;
8
- }
9
- export declare const createSentryLoggerHandler: (dsn?: string) => null | LoggerHandler;
10
- //# sourceMappingURL=sentry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sentry.d.ts","sourceRoot":"","sources":["../../../src/utils/sentry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAa,MAAM,mBAAmB,CAAA;AAEhF,qBAAa,mBAAoB,YAAW,aAAa;IAEvD,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,QAAQ;IAIpC,WAAW,IAAI,MAAM;IAIrB,MAAM,CAAC,KAAK,EAAE,QAAQ;IA0BtB,KAAK,IAAI,IAAI;CAEb;AAED,eAAO,MAAM,yBAAyB,SAAU,MAAM,KAAG,IAAI,GAAG,aAW/D,CAAA"}
@@ -1,80 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.createSentryLoggerHandler = exports.SentryLoggerHandler = void 0;
27
- const Sentry = __importStar(require("@sentry/node"));
28
- const engine_http_1 = require("@contember/engine-http");
29
- const logger_1 = require("@contember/logger");
30
- class SentryLoggerHandler {
31
- constructor(logLevel) {
32
- this.logLevel = logLevel;
33
- }
34
- getMinLevel() {
35
- return this.logLevel.value;
36
- }
37
- handle(entry) {
38
- if (!entry.error || entry.level.value < this.logLevel.value) {
39
- return;
40
- }
41
- Sentry.captureException(entry.error, scope => {
42
- var _a, _b, _c;
43
- scope.setTag('project', (_a = entry.loggerAttributes.project) !== null && _a !== void 0 ? _a : entry.ownAttributes.project);
44
- scope.setTag('module', (_b = entry.loggerAttributes.module) !== null && _b !== void 0 ? _b : entry.ownAttributes.module);
45
- scope.setLevel('error');
46
- scope.setUser({
47
- id: (_c = entry.loggerAttributes.user) !== null && _c !== void 0 ? _c : entry.ownAttributes.user,
48
- });
49
- scope.setExtra('requestId', entry.loggerAttributes.requestId);
50
- scope.addEventProcessor(event => {
51
- var _a, _b;
52
- return {
53
- ...event,
54
- request: {
55
- url: (_a = entry.loggerAttributes.url) !== null && _a !== void 0 ? _a : entry.ownAttributes.url,
56
- data: (_b = entry.loggerAttributes[engine_http_1.LoggerRequestSymbol]) === null || _b === void 0 ? void 0 : _b.body,
57
- },
58
- };
59
- });
60
- return scope;
61
- });
62
- }
63
- close() {
64
- }
65
- }
66
- exports.SentryLoggerHandler = SentryLoggerHandler;
67
- const createSentryLoggerHandler = (dsn) => {
68
- if (!dsn) {
69
- return null;
70
- }
71
- Sentry.init({
72
- dsn: dsn,
73
- integrations: integrations => {
74
- return integrations.filter(integration => integration.name !== 'Console' && integration.name !== 'Http');
75
- },
76
- });
77
- return new SentryLoggerHandler(logger_1.LogLevels.warn);
78
- };
79
- exports.createSentryLoggerHandler = createSentryLoggerHandler;
80
- //# sourceMappingURL=sentry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sentry.js","sourceRoot":"","sources":["../../../src/utils/sentry.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAsC;AACtC,wDAA4D;AAC5D,8CAAgF;AAEhF,MAAa,mBAAmB;IAC/B,YACkB,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;IAEpC,CAAC;IAED,WAAW;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAA;IAC3B,CAAC;IAED,MAAM,CAAC,KAAe;QACrB,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;YAC5D,OAAM;SACN;QACD,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;;YAC5C,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,MAAA,KAAK,CAAC,gBAAgB,CAAC,OAAO,mCAAI,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;YACtF,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAA,KAAK,CAAC,gBAAgB,CAAC,MAAM,mCAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;YACnF,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YACvB,KAAK,CAAC,OAAO,CAAC;gBACb,EAAE,EAAE,MAAA,KAAK,CAAC,gBAAgB,CAAC,IAAI,mCAAI,KAAK,CAAC,aAAa,CAAC,IAAI;aAC3D,CAAC,CAAA;YACF,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;YAE7D,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;;gBAC/B,OAAO;oBACN,GAAG,KAAK;oBACR,OAAO,EAAE;wBACR,GAAG,EAAE,MAAA,KAAK,CAAC,gBAAgB,CAAC,GAAG,mCAAI,KAAK,CAAC,aAAa,CAAC,GAAG;wBAC1D,IAAI,EAAE,MAAA,KAAK,CAAC,gBAAgB,CAAC,iCAAmB,CAAC,0CAAE,IAAI;qBACvD;iBACD,CAAA;YACF,CAAC,CAAC,CAAA;YACF,OAAO,KAAK,CAAA;QACb,CAAC,CAAC,CAAA;IACH,CAAC;IAED,KAAK;IACL,CAAC;CACD;AAtCD,kDAsCC;AAEM,MAAM,yBAAyB,GAAG,CAAC,GAAY,EAAwB,EAAE;IAC/E,IAAI,CAAC,GAAG,EAAE;QACT,OAAO,IAAI,CAAA;KACX;IACD,MAAM,CAAC,IAAI,CAAC;QACX,GAAG,EAAE,GAAG;QACR,YAAY,EAAE,YAAY,CAAC,EAAE;YAC5B,OAAO,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,SAAS,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;QACzG,CAAC;KACD,CAAC,CAAA;IACF,OAAO,IAAI,mBAAmB,CAAC,kBAAS,CAAC,IAAI,CAAC,CAAA;AAC/C,CAAC,CAAA;AAXY,QAAA,yBAAyB,6BAWrC"}
@@ -1,33 +0,0 @@
1
- import { Plugin } from '@contember/engine-plugins';
2
- import { Type } from '@contember/typesafe';
3
- import { Logger } from '@contember/logger';
4
- export declare const getServerVersion: () => string;
5
- export declare const isDebugMode: () => boolean;
6
- export declare const printStartInfo: ({ version, isDebug }: {
7
- version: string;
8
- isDebug: boolean;
9
- }, logger: Logger) => void;
10
- export declare const resolveServerConfig: <T extends {
11
- readonly port: number;
12
- readonly http: {
13
- readonly requestBodySize?: string | undefined;
14
- };
15
- readonly logging: {
16
- sentry?: {
17
- dsn: string;
18
- } | undefined;
19
- } | {
20
- readonly sentry?: {
21
- readonly dsn: string;
22
- } | undefined;
23
- };
24
- }>({ plugins, serverConfigSchema }: {
25
- plugins: Plugin[];
26
- serverConfigSchema: Type<T>;
27
- }) => Promise<{
28
- serverConfig: T;
29
- projectConfigResolver: import("../config/projectConfigResolver").ProjectConfigResolver;
30
- tenantConfigResolver: import("..").TenantConfigResolver;
31
- }>;
32
- export declare const createDefaultLogger: () => Logger;
33
- //# sourceMappingURL=serverStartup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serverStartup.d.ts","sourceRoot":"","sources":["../../../src/utils/serverStartup.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAEnE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAyC,MAAM,EAAuC,MAAM,mBAAmB,CAAA;AAEtH,eAAO,MAAM,gBAAgB,QAAO,MAKnC,CAAA;AAED,eAAO,MAAM,WAAW,QAAO,OAAiD,CAAA;AAEhF,eAAO,MAAM,cAAc;aAAqC,MAAM;aAAW,OAAO;WAAY,MAAM,SAOzG,CAAA;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;aAA8E,MAAM,EAAE;;;;;;EAcrH,CAAA;AAED,eAAO,MAAM,mBAAmB,QAAO,MAqCtC,CAAA"}
@@ -1,79 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createDefaultLogger = exports.resolveServerConfig = exports.printStartInfo = exports.isDebugMode = exports.getServerVersion = void 0;
4
- const node_path_1 = require("node:path");
5
- const config_1 = require("../config/config");
6
- const logger_1 = require("@contember/logger");
7
- const getServerVersion = () => {
8
- const packageJsonFile = process.env.CONTEMBER_PACKAGE_JSON || (0, node_path_1.join)(__dirname, '../../../package.json');
9
- // eslint-disable-next-line @typescript-eslint/no-var-requires
10
- const version = require(packageJsonFile).version;
11
- return version;
12
- };
13
- exports.getServerVersion = getServerVersion;
14
- const isDebugMode = () => process.env.NODE_ENV === 'development';
15
- exports.isDebugMode = isDebugMode;
16
- const printStartInfo = ({ version, isDebug }, logger) => {
17
- logger.info(`Starting Contember ${version}`);
18
- logger.info(`NODE_ENV is set to ${process.env.NODE_ENV}`);
19
- if (isDebug) {
20
- logger.warn('Starting Contember in debug mode');
21
- logger.warn('NEVER USE debug mode in production environment');
22
- }
23
- };
24
- exports.printStartInfo = printStartInfo;
25
- const resolveServerConfig = async ({ plugins, serverConfigSchema }) => {
26
- const configProcessors = plugins
27
- .map(it => (it.getConfigProcessor ? it.getConfigProcessor() : null))
28
- .filter((it) => it !== null);
29
- const configSources = [];
30
- for (const configType of ['file', 'yaml', 'json']) {
31
- const envValue = process.env['CONTEMBER_CONFIG_' + configType.toUpperCase()];
32
- if (envValue) {
33
- configSources.push({ type: configType, data: envValue });
34
- }
35
- }
36
- return await (0, config_1.readConfig)(configSources, configProcessors, serverConfigSchema);
37
- };
38
- exports.resolveServerConfig = resolveServerConfig;
39
- const createDefaultLogger = () => {
40
- var _a, _b;
41
- const isDebug = (0, exports.isDebugMode)();
42
- const loggerType = (_a = process.env.CONTEMBER_LOGGER_FORMAT) !== null && _a !== void 0 ? _a : (isDebug ? 'pretty' : 'json');
43
- const stream = process.stderr;
44
- const handler = loggerType === 'pretty'
45
- ? new logger_1.PrettyPrintLoggerHandler(stream, {
46
- formatters: {
47
- pid: () => undefined,
48
- loggerId: () => undefined,
49
- uri: ({ attributes, chalk }) => {
50
- const color = attributes.status === undefined
51
- ? chalk.cyan
52
- : attributes.status < 300
53
- ? chalk.green
54
- : chalk.yellowBright;
55
- const timeInfo = attributes.totalTimeMs !== undefined ? ` ${attributes.totalTimeMs}ms` : '';
56
- const statusInfo = attributes.status !== undefined ? ` [${attributes.status}]` : '';
57
- return { line: color(`${attributes.method}${statusInfo} ${attributes.uri}${timeInfo} ${chalk.white.dim('#' + attributes.requestId)}`) };
58
- },
59
- method: () => undefined,
60
- requestId: () => undefined,
61
- timeLabel: () => undefined,
62
- status: () => undefined,
63
- totalTimeMs: () => undefined,
64
- events: ({ formattedValue }) => formattedValue === '[]' ? undefined : formattedValue,
65
- },
66
- })
67
- : new logger_1.JsonStreamLoggerHandler(stream);
68
- const logLevel = (_b = process.env.CONTEMBER_LOGGER_LEVEL) !== null && _b !== void 0 ? _b : 'info';
69
- return (0, logger_1.createLogger)(handler, {
70
- pid: process.pid,
71
- loggerId: Math.random().toString().substring(2),
72
- }, {
73
- fingerCrossedOptions: {
74
- logAlwaysLevel: logger_1.LogLevels[logLevel],
75
- },
76
- });
77
- };
78
- exports.createDefaultLogger = createDefaultLogger;
79
- //# sourceMappingURL=serverStartup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serverStartup.js","sourceRoot":"","sources":["../../../src/utils/serverStartup.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import { Logger } from '@contember/logger';
2
- declare const signals: {
3
- SIGHUP: number;
4
- SIGINT: number;
5
- SIGTERM: number;
6
- };
7
- export declare type TerminationJob = (args: {
8
- signal: keyof typeof signals;
9
- code: number;
10
- }) => Promise<void>;
11
- export declare const listenOnProcessTermination: (jobs: TerminationJob[], logger: Logger) => void;
12
- export {};
13
- //# sourceMappingURL=serverTermination.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serverTermination.d.ts","sourceRoot":"","sources":["../../../src/utils/serverTermination.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C,QAAA,MAAM,OAAO;;;;CAIZ,CAAA;AACD,oBAAY,cAAc,GAAG,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,OAAO,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AACpG,eAAO,MAAM,0BAA0B,SAAU,cAAc,EAAE,UAAU,MAAM,SAShF,CAAA"}
@@ -1,24 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.listenOnProcessTermination = void 0;
7
- const node_cluster_1 = __importDefault(require("node:cluster"));
8
- const signals = {
9
- SIGHUP: 1,
10
- SIGINT: 2,
11
- SIGTERM: 15,
12
- };
13
- const listenOnProcessTermination = (jobs, logger) => {
14
- for (const [signal, code] of Object.entries(signals)) {
15
- process.on(signal, async () => {
16
- logger.info(`Process ${process.pid} received a ${signal} signal, executing ${jobs.length} termination jobs`);
17
- await Promise.allSettled(jobs.map(it => it({ signal: signal, code })));
18
- logger.info(node_cluster_1.default.isMaster ? `All terminated, exiting` : 'All terminated, exiting a worker');
19
- process.exit(128 + code);
20
- });
21
- }
22
- };
23
- exports.listenOnProcessTermination = listenOnProcessTermination;
24
- //# sourceMappingURL=serverTermination.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"serverTermination.js","sourceRoot":"","sources":["../../../src/utils/serverTermination.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAkC;AAGlC,MAAM,OAAO,GAAG;IACf,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,EAAE;CACX,CAAA;AAEM,MAAM,0BAA0B,GAAG,CAAC,IAAsB,EAAE,MAAc,EAAE,EAAE;IACpF,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACrD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;YAC7B,MAAM,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,GAAG,eAAe,MAAM,sBAAsB,IAAI,CAAC,MAAM,mBAAmB,CAAC,CAAA;YAC5G,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAA8B,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAC9F,MAAM,CAAC,IAAI,CAAC,sBAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAA;YAC9F,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;KACF;AACF,CAAC,CAAA;AATY,QAAA,0BAA0B,8BAStC"}
@@ -1,2 +0,0 @@
1
- export declare const upperCaseFirst: (string: string) => string;
2
- //# sourceMappingURL=strings.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../../../src/utils/strings.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,WAAY,MAAM,WAA8D,CAAA"}
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.upperCaseFirst = void 0;
4
- const upperCaseFirst = (string) => `${string.charAt(0).toUpperCase()}${string.substring(1)}`;
5
- exports.upperCaseFirst = upperCaseFirst;
6
- //# sourceMappingURL=strings.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"strings.js","sourceRoot":"","sources":["../../../src/utils/strings.ts"],"names":[],"mappings":";;;AAAO,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;AAA9F,QAAA,cAAc,kBAAgF"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=configResolver.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"configResolver.test.d.ts","sourceRoot":"","sources":["../../../tests/cases/configResolver.test.ts"],"names":[],"mappings":""}
@@ -1,67 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
- const tenantConfigResolver_1 = require("../../src/config/tenantConfigResolver");
5
- const configTemplate_1 = require("../../src/config/configTemplate");
6
- const projectConfigResolver_1 = require("../../src/config/projectConfigResolver");
7
- const env = {
8
- DEFAULT_DB_POOL_IDLE_TIMEOUT_MS: '60000',
9
- DEFAULT_DB_POOL_MAX_CONNECTIONS: '1000',
10
- DEFAULT_DB_POOL_MAX_CONNECTING: '10',
11
- DEFAULT_DB_CONNECTION_TIMEOUT_MS: '5000',
12
- };
13
- const tenantConfig = {
14
- db: {
15
- host: 'c0.cluster-abc.eu-west-1.rds.amazonaws.com',
16
- port: 5432,
17
- user: 'u_test_e',
18
- password: 'PASSWD',
19
- database: 'p_test_e',
20
- read: { host: 'c0.cluster-ro-abc.eu-west-1.rds.amazonaws.com' },
21
- },
22
- };
23
- (0, vitest_1.it)('resolves tenant config config', () => {
24
- const tenantResolver = (0, tenantConfigResolver_1.createTenantConfigResolver)(env, configTemplate_1.configTemplate.tenant);
25
- const resolvedTenantConfig = tenantResolver('test', tenantConfig);
26
- vitest_1.assert.deepEqual(resolvedTenantConfig, {
27
- db: {
28
- host: 'c0.cluster-abc.eu-west-1.rds.amazonaws.com',
29
- port: 5432,
30
- user: 'u_test_e',
31
- password: 'PASSWD',
32
- database: 'p_test_e',
33
- connectionTimeoutMs: 5000,
34
- pool: { maxConnections: 1000, maxConnecting: 10, idleTimeoutMs: 60000 },
35
- read: { host: 'c0.cluster-ro-abc.eu-west-1.rds.amazonaws.com' },
36
- }, mailer: {}, credentials: {}, secrets: {},
37
- });
38
- });
39
- (0, vitest_1.it)('resolves project config config', () => {
40
- const tenantResolver = (0, tenantConfigResolver_1.createTenantConfigResolver)(env, configTemplate_1.configTemplate.tenant);
41
- const resolvedTenantConfig = tenantResolver('test', tenantConfig);
42
- const projectConfigResolver = (0, projectConfigResolver_1.createProjectConfigResolver)(env, configTemplate_1.configTemplate, []);
43
- const resolvedProjectConfig = projectConfigResolver('test-p', {
44
- db: {
45
- useTenantDb: true,
46
- systemSchema: 'system_test_e',
47
- }, s3: { prefix: 'test-e/test-e' }, stages: { live: { schema: 'content_test_e_live' } },
48
- }, {}, resolvedTenantConfig);
49
- vitest_1.assert.deepEqual(resolvedProjectConfig, {
50
- name: 'Test p',
51
- slug: 'test-p',
52
- stages: [{ name: 'Live', slug: 'live', schema: 'content_test_e_live' }],
53
- db: {
54
- host: 'c0.cluster-abc.eu-west-1.rds.amazonaws.com',
55
- port: 5432,
56
- user: 'u_test_e',
57
- password: 'PASSWD',
58
- database: 'p_test_e',
59
- connectionTimeoutMs: 5000,
60
- pool: { maxConnections: 1000, maxConnecting: 10, idleTimeoutMs: 60000 },
61
- read: { host: 'c0.cluster-ro-abc.eu-west-1.rds.amazonaws.com' },
62
- useTenantDb: true,
63
- systemSchema: 'system_test_e',
64
- },
65
- });
66
- });
67
- //# sourceMappingURL=configResolver.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"configResolver.test.js","sourceRoot":"","sources":["../../../tests/cases/configResolver.test.ts"],"names":[],"mappings":";;AAAA,mCAAmC;AACnC,gFAAkF;AAClF,oEAAgE;AAChE,kFAAoF;AAEpF,MAAM,GAAG,GAAG;IACX,+BAA+B,EAAE,OAAO;IACxC,+BAA+B,EAAE,MAAM;IACvC,8BAA8B,EAAE,IAAI;IACpC,gCAAgC,EAAE,MAAM;CACxC,CAAA;AACD,MAAM,YAAY,GAAG;IACpB,EAAE,EAAE;QACH,IAAI,EAAE,4CAA4C;QAClD,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,EAAE,IAAI,EAAE,+CAA+C,EAAE;KAC/D;CACD,CAAA;AACD,IAAA,WAAE,EAAC,+BAA+B,EAAE,GAAG,EAAE;IACxC,MAAM,cAAc,GAAG,IAAA,iDAA0B,EAAC,GAAG,EAAE,+BAAc,CAAC,MAAM,CAAC,CAAA;IAC7E,MAAM,oBAAoB,GAAG,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IACjE,eAAM,CAAC,SAAS,CAAC,oBAAoB,EAAE;QACtC,EAAE,EAAE;YACH,IAAI,EAAE,4CAA4C;YAClD,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,UAAU;YACpB,mBAAmB,EAAE,IAAI;YACzB,IAAI,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;YACvE,IAAI,EAAE,EAAE,IAAI,EAAE,+CAA+C,EAAE;SAC/D,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;KAC3C,CAAC,CAAA;AACH,CAAC,CAAC,CAAA;AACF,IAAA,WAAE,EAAC,gCAAgC,EAAE,GAAG,EAAE;IACzC,MAAM,cAAc,GAAG,IAAA,iDAA0B,EAAC,GAAG,EAAE,+BAAc,CAAC,MAAM,CAAC,CAAA;IAC7E,MAAM,oBAAoB,GAAG,cAAc,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAEjE,MAAM,qBAAqB,GAAG,IAAA,mDAA2B,EAAC,GAAG,EAAE,+BAAc,EAAE,EAAE,CAAC,CAAA;IAClF,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,QAAQ,EAAE;QAC7D,EAAE,EAAE;YACH,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,eAAe;SAC7B,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,EAAE;KACvF,EAAE,EAAE,EAAE,oBAAoB,CAAC,CAAA;IAE5B,eAAM,CAAC,SAAS,CAAC,qBAA4B,EAAE;QAC9C,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;QACvE,EAAE,EAAE;YACH,IAAI,EAAE,4CAA4C;YAClD,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,UAAU;YACpB,mBAAmB,EAAE,IAAI;YACzB,IAAI,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE;YACvE,IAAI,EAAE,EAAE,IAAI,EAAE,+CAA+C,EAAE;YAC/D,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,eAAe;SAC7B;KACD,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -1,206 +0,0 @@
1
- import { SystemContainerFactory } from '@contember/engine-system-api'
2
- import { TenantContainerFactory } from '@contember/engine-tenant-api'
3
- import { Builder } from '@contember/dic'
4
- import { ServerConfig } from './config/config'
5
- import { ModificationHandlerFactory } from '@contember/schema-migrations'
6
- import { Initializer } from './bootstrap'
7
- import { Plugin } from '@contember/engine-plugins'
8
- import {
9
- compose,
10
- ContentApiMiddlewareFactory,
11
- ContentGraphQLContextFactory,
12
- ContentQueryHandlerFactory,
13
- ContentSchemaTransferMappingFactory,
14
- createHomepageMiddleware,
15
- createLoggerMiddleware,
16
- createModuleInfoMiddleware,
17
- createPlaygroundMiddleware,
18
- createPoweredByHeaderMiddleware,
19
- createProviders,
20
- createTimerMiddleware,
21
- ErrorMiddlewareFactory,
22
- ExportApiMiddlewareFactory,
23
- ExportExecutor,
24
- ImportApiMiddlewareFactory,
25
- ImportExecutor,
26
- Koa,
27
- NotModifiedChecker,
28
- ProjectGroupResolver as ProjectGroupResolverInterface,
29
- Providers,
30
- route,
31
- SystemApiMiddlewareFactory,
32
- SystemGraphQLContextFactory,
33
- SystemGraphQLHandlerFactory,
34
- SystemSchemaTransferMappingFactory,
35
- TenantApiMiddlewareFactory,
36
- TenantGraphQLContextFactory,
37
- TenantGraphQLHandlerFactory,
38
- } from '@contember/engine-http'
39
- import { ProjectContainerFactoryFactory } from './project'
40
- import koaCompress from 'koa-compress'
41
- import bodyParser from 'koa-bodyparser'
42
- import { ProjectConfigResolver } from './config/projectConfigResolver'
43
- import { TenantConfigResolver } from './config/tenantConfigResolver'
44
- import { ProjectGroupContainerFactory } from './projectGroup/ProjectGroupContainer'
45
- import corsMiddleware from '@koa/cors'
46
- import { ProjectGroupResolver } from './projectGroup/ProjectGroupResolver'
47
- import { Logger } from '@contember/logger'
48
-
49
- export interface MasterContainer {
50
- initializer: Initializer
51
- koa: Koa
52
- providers: Providers
53
- }
54
-
55
- export interface MasterContainerArgs {
56
- debugMode: boolean
57
- serverConfig: ServerConfig
58
- projectConfigResolver: ProjectConfigResolver
59
- tenantConfigResolver: TenantConfigResolver
60
- plugins: Plugin[]
61
- logger: Logger
62
- version?: string
63
- }
64
-
65
- export class MasterContainerFactory {
66
- createBuilder({
67
- serverConfig,
68
- debugMode,
69
- plugins,
70
- projectConfigResolver,
71
- tenantConfigResolver,
72
- version,
73
- logger,
74
- }: MasterContainerArgs) {
75
- return new Builder({})
76
- .addService('serverConfig', () =>
77
- serverConfig)
78
- .addService('debugMode', () =>
79
- debugMode)
80
- .addService('version', () =>
81
- version)
82
- .addService('projectConfigResolver', () =>
83
- projectConfigResolver)
84
- .addService('tenantConfigResolver', () =>
85
- tenantConfigResolver)
86
- .addService('plugins', () =>
87
- plugins)
88
- .addService('providers', () =>
89
- createProviders())
90
- .addService('tenantContainerFactory', ({ providers }) =>
91
- new TenantContainerFactory(providers))
92
- .addService('modificationHandlerFactory', () =>
93
- new ModificationHandlerFactory(ModificationHandlerFactory.defaultFactoryMap))
94
- .addService('systemContainerFactory', ({ providers, modificationHandlerFactory }) =>
95
- new SystemContainerFactory(providers, modificationHandlerFactory))
96
- .addService('projectContainerFactoryFactory', ({ debugMode, plugins, providers }) =>
97
- new ProjectContainerFactoryFactory(debugMode, plugins, providers))
98
- .addService('tenantGraphQLHandlerFactory', () =>
99
- new TenantGraphQLHandlerFactory())
100
- .addService('systemGraphQLHandlerFactory', ({ debugMode }) =>
101
- new SystemGraphQLHandlerFactory(debugMode))
102
- .addService('logger', () =>
103
- logger)
104
- .addService('projectGroupContainerFactory', ({ debugMode, providers, systemContainerFactory, tenantContainerFactory, projectContainerFactoryFactory, projectConfigResolver, tenantGraphQLHandlerFactory, systemGraphQLHandlerFactory, logger }) =>
105
- new ProjectGroupContainerFactory(debugMode, providers, systemContainerFactory, tenantContainerFactory, projectContainerFactoryFactory, projectConfigResolver, tenantGraphQLHandlerFactory, systemGraphQLHandlerFactory, logger))
106
- .addService('projectGroupContainer', ({ tenantConfigResolver, projectGroupContainerFactory }) =>
107
- projectGroupContainerFactory.create({ slug: undefined, config: tenantConfigResolver(undefined, {}) }))
108
- .addService('httpErrorMiddlewareFactory', ({ debugMode }) =>
109
- new ErrorMiddlewareFactory(debugMode))
110
- .addService('projectGroupResolver', ({ projectGroupContainer }): ProjectGroupResolverInterface =>
111
- new ProjectGroupResolver(projectGroupContainer))
112
- .addService('notModifiedChecker', () =>
113
- new NotModifiedChecker())
114
- .addService('contentGraphqlContextFactory', ({ providers }) =>
115
- new ContentGraphQLContextFactory(providers))
116
- .addService('contentQueryHandlerFactory', ({ debugMode }) =>
117
- new ContentQueryHandlerFactory(debugMode))
118
- .addService('contentApiMiddlewareFactory', ({ projectGroupResolver, notModifiedChecker, contentGraphqlContextFactory, contentQueryHandlerFactory }) =>
119
- new ContentApiMiddlewareFactory(projectGroupResolver, notModifiedChecker, contentGraphqlContextFactory, contentQueryHandlerFactory))
120
- .addService('tenantGraphQLContextFactory', () =>
121
- new TenantGraphQLContextFactory())
122
- .addService('tenantApiMiddlewareFactory', ({ debugMode, projectGroupResolver, tenantGraphQLContextFactory }) =>
123
- new TenantApiMiddlewareFactory(debugMode, projectGroupResolver, tenantGraphQLContextFactory))
124
- .addService('systemGraphQLContextFactory', () =>
125
- new SystemGraphQLContextFactory())
126
- .addService('systemApiMiddlewareFactory', ({ debugMode, projectGroupResolver, systemGraphQLContextFactory }) =>
127
- new SystemApiMiddlewareFactory(debugMode, projectGroupResolver, systemGraphQLContextFactory))
128
- .addService('contentSchemaTransferMappingFactory', () =>
129
- new ContentSchemaTransferMappingFactory())
130
- .addService('systemSchemaTransferMappingFactory', () =>
131
- new SystemSchemaTransferMappingFactory())
132
- .addService('importExecutor', ({ contentSchemaTransferMappingFactory, systemSchemaTransferMappingFactory }) =>
133
- new ImportExecutor(contentSchemaTransferMappingFactory, systemSchemaTransferMappingFactory))
134
- .addService('exportExecutor', ({ contentSchemaTransferMappingFactory, systemSchemaTransferMappingFactory }) =>
135
- new ExportExecutor(contentSchemaTransferMappingFactory, systemSchemaTransferMappingFactory))
136
- .addService('importApiMiddlewareFactory', ({ projectGroupResolver, importExecutor }) =>
137
- new ImportApiMiddlewareFactory(projectGroupResolver, importExecutor))
138
- .addService('exportApiMiddlewareFactory', ({ projectGroupResolver, exportExecutor }) =>
139
- new ExportApiMiddlewareFactory(projectGroupResolver, exportExecutor))
140
- .addService('koaMiddlewares', ({ contentApiMiddlewareFactory, tenantApiMiddlewareFactory, systemApiMiddlewareFactory, importApiMiddlewareFactory, exportApiMiddlewareFactory, httpErrorMiddlewareFactory, debugMode, version, serverConfig, logger }) =>
141
- compose([
142
- koaCompress({
143
- br: false,
144
- }),
145
- bodyParser({
146
- jsonLimit: serverConfig.http.requestBodySize || '1mb',
147
- }),
148
- createPoweredByHeaderMiddleware(debugMode, version ?? 'unknown'),
149
- createLoggerMiddleware(logger),
150
- createTimerMiddleware({ debugMode }),
151
- httpErrorMiddlewareFactory.create(),
152
- route('/playground$', createPlaygroundMiddleware()),
153
- createHomepageMiddleware(),
154
- corsMiddleware(),
155
- route(
156
- '/content/:projectSlug/:stageSlug$',
157
- compose([
158
- createModuleInfoMiddleware('content'),
159
- contentApiMiddlewareFactory.create(),
160
- ]),
161
- ),
162
- route(
163
- '/tenant$',
164
- compose([
165
- createModuleInfoMiddleware('tenant'),
166
- tenantApiMiddlewareFactory.create(),
167
- ]),
168
- ),
169
- route(
170
- '/system/:projectSlug$',
171
- compose([
172
- createModuleInfoMiddleware('system'),
173
- systemApiMiddlewareFactory.create(),
174
- ]),
175
- ),
176
- route(
177
- '/import$',
178
- compose([
179
- createModuleInfoMiddleware('transfer'),
180
- importApiMiddlewareFactory.create(),
181
- ]),
182
- ),
183
- route(
184
- '/export$',
185
- compose([
186
- createModuleInfoMiddleware('transfer'),
187
- exportApiMiddlewareFactory.create(),
188
- ]),
189
- ),
190
- ]))
191
- .addService('koa', ({ koaMiddlewares }) => {
192
- const app = new Koa()
193
- app.use(koaMiddlewares)
194
-
195
- return app
196
- })
197
- .addService('initializer', ({ projectGroupContainer }) =>
198
- new Initializer(projectGroupContainer))
199
-
200
- }
201
-
202
- create(args: MasterContainerArgs): MasterContainer {
203
- const container = this.createBuilder(args).build()
204
- return container.pick('initializer', 'koa', 'providers')
205
- }
206
- }
@@ -1,27 +0,0 @@
1
- import { ProjectGroupContainer } from '@contember/engine-http'
2
-
3
- export class Initializer {
4
- constructor(
5
- private readonly projectGroupContainer: ProjectGroupContainer,
6
- ) {}
7
-
8
- public async initialize(): Promise<string[]> {
9
- const groupContainer = await this.projectGroupContainer
10
- const tenantMigrationsLogger = groupContainer.logger.child()
11
- const tenantContainer = groupContainer.tenantContainer
12
- await tenantContainer.migrationsRunner.run(tenantMigrationsLogger)
13
-
14
- const projects: string[] = []
15
-
16
- const tenantProjects = await tenantContainer.projectManager.getProjects(tenantContainer.databaseContext)
17
- for (const { slug: projectSlug } of tenantProjects) {
18
- const projectContainer = await groupContainer.projectContainerResolver.getProjectContainer(projectSlug, { alias: false })
19
- if (!projectContainer) {
20
- throw new Error()
21
- }
22
- const project = projectContainer.project
23
- projects.push(project.slug)
24
- }
25
- return projects
26
- }
27
- }
@@ -1 +0,0 @@
1
- export * from './Initializer'