@contember/engine-server 1.1.1 → 1.2.0-alpha.10
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.
- package/dist/src/MasterContainer.d.ts +27 -25
- package/dist/src/MasterContainer.d.ts.map +1 -1
- package/dist/src/MasterContainer.js +54 -80
- package/dist/src/MasterContainer.js.map +1 -1
- package/dist/src/bootstrap/Initializer.d.ts +3 -3
- package/dist/src/bootstrap/Initializer.d.ts.map +1 -1
- package/dist/src/bootstrap/Initializer.js +15 -8
- package/dist/src/bootstrap/Initializer.js.map +1 -1
- package/dist/src/config/config.d.ts +5 -4
- package/dist/src/config/config.d.ts.map +1 -1
- package/dist/src/config/config.js +2 -2
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/configSchema.d.ts +45 -11
- package/dist/src/config/configSchema.d.ts.map +1 -1
- package/dist/src/config/configSchema.js +20 -18
- package/dist/src/config/configSchema.js.map +1 -1
- package/dist/src/config/configTemplate.d.ts.map +1 -1
- package/dist/src/config/configTemplate.js +23 -0
- package/dist/src/config/configTemplate.js.map +1 -1
- package/dist/src/index.d.ts +9 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +23 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/project/ProjectContainer.js +1 -1
- package/dist/src/project/ProjectContainer.js.map +1 -1
- package/dist/src/project/ProjectContainerResolver.d.ts +6 -3
- package/dist/src/project/ProjectContainerResolver.d.ts.map +1 -1
- package/dist/src/project/ProjectContainerResolver.js +4 -16
- package/dist/src/project/ProjectContainerResolver.js.map +1 -1
- package/dist/src/projectGroup/ProjectGroupContainer.d.ts +2 -1
- package/dist/src/projectGroup/ProjectGroupContainer.d.ts.map +1 -1
- package/dist/src/projectGroup/ProjectGroupContainer.js +8 -4
- package/dist/src/projectGroup/ProjectGroupContainer.js.map +1 -1
- package/dist/src/projectGroup/ProjectGroupResolver.d.ts +7 -0
- package/dist/src/projectGroup/ProjectGroupResolver.d.ts.map +1 -0
- package/dist/src/projectGroup/ProjectGroupResolver.js +13 -0
- package/dist/src/projectGroup/ProjectGroupResolver.js.map +1 -0
- package/dist/src/start.js +15 -112
- package/dist/src/start.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/src/utils/index.d.ts +0 -4
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/index.js +0 -4
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/utils/sentry.d.ts +1 -1
- package/dist/src/utils/sentry.d.ts.map +1 -1
- package/dist/src/utils/sentry.js +1 -1
- package/dist/src/utils/sentry.js.map +1 -1
- package/dist/src/utils/serverStartup.d.ts +31 -0
- package/dist/src/utils/serverStartup.d.ts.map +1 -0
- package/dist/src/utils/serverStartup.js +42 -0
- package/dist/src/utils/serverStartup.js.map +1 -0
- package/dist/src/utils/serverTermination.d.ts +12 -0
- package/dist/src/utils/serverTermination.d.ts.map +1 -0
- package/dist/src/utils/serverTermination.js +26 -0
- package/dist/src/utils/serverTermination.js.map +1 -0
- package/dist/tests/e2e/acl-condition-variable.test.d.ts +2 -0
- package/dist/tests/e2e/acl-condition-variable.test.d.ts.map +1 -0
- package/dist/tests/e2e/acl-condition-variable.test.js +77 -0
- package/dist/tests/e2e/acl-condition-variable.test.js.map +1 -0
- package/dist/tests/e2e/assume-identity.test.d.ts +2 -0
- package/dist/tests/e2e/assume-identity.test.d.ts.map +1 -0
- package/dist/tests/e2e/assume-identity.test.js +109 -0
- package/dist/tests/e2e/assume-identity.test.js.map +1 -0
- package/dist/tests/e2e/assume-membership.test.d.ts +2 -0
- package/dist/tests/e2e/assume-membership.test.d.ts.map +1 -0
- package/dist/tests/e2e/assume-membership.test.js +58 -0
- package/dist/tests/e2e/assume-membership.test.js.map +1 -0
- package/dist/tests/e2e/content-api-basic.test.d.ts +2 -0
- package/dist/tests/e2e/content-api-basic.test.d.ts.map +1 -0
- package/dist/tests/e2e/content-api-basic.test.js +50 -0
- package/dist/tests/e2e/content-api-basic.test.js.map +1 -0
- package/dist/tests/e2e/content-invalid-schema.test.d.ts +2 -0
- package/dist/tests/e2e/content-invalid-schema.test.d.ts.map +1 -0
- package/dist/tests/e2e/content-invalid-schema.test.js +29 -0
- package/dist/tests/e2e/content-invalid-schema.test.js.map +1 -0
- package/dist/tests/e2e/homepage.test.d.ts +2 -0
- package/dist/tests/e2e/homepage.test.d.ts.map +1 -0
- package/dist/tests/e2e/homepage.test.js +15 -0
- package/dist/tests/e2e/homepage.test.js.map +1 -0
- package/dist/tests/e2e/tenant-member-access.test.d.ts +2 -0
- package/dist/tests/e2e/tenant-member-access.test.d.ts.map +1 -0
- package/dist/tests/e2e/tenant-member-access.test.js +43 -0
- package/dist/tests/e2e/tenant-member-access.test.js.map +1 -0
- package/dist/tests/e2e/x-contember-ref.test.d.ts +2 -0
- package/dist/tests/e2e/x-contember-ref.test.d.ts.map +1 -0
- package/dist/tests/e2e/x-contember-ref.test.js +63 -0
- package/dist/tests/e2e/x-contember-ref.test.js.map +1 -0
- package/dist/tests/src/requests.d.ts +5 -0
- package/dist/tests/src/requests.d.ts.map +1 -0
- package/dist/tests/src/requests.js +68 -0
- package/dist/tests/src/requests.js.map +1 -0
- package/dist/tests/src/tester.d.ts +19 -0
- package/dist/tests/src/tester.d.ts.map +1 -0
- package/dist/tests/src/tester.js +99 -0
- package/dist/tests/src/tester.js.map +1 -0
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/esbuild.js +7 -14
- package/package.json +23 -23
- package/src/MasterContainer.ts +94 -110
- package/src/bootstrap/Initializer.ts +16 -8
- package/src/config/config.ts +7 -5
- package/src/config/configSchema.ts +30 -33
- package/src/config/configTemplate.ts +23 -0
- package/src/index.ts +15 -2
- package/src/project/ProjectContainer.ts +1 -1
- package/src/project/ProjectContainerResolver.ts +4 -17
- package/src/projectGroup/ProjectGroupContainer.ts +12 -3
- package/src/projectGroup/ProjectGroupResolver.ts +12 -0
- package/src/start.ts +18 -127
- package/src/utils/index.ts +0 -4
- package/src/utils/sentry.ts +1 -1
- package/src/utils/serverStartup.ts +42 -0
- package/src/utils/serverTermination.ts +20 -0
- package/tests/e2e/acl-condition-variable.test.ts +74 -0
- package/tests/e2e/assume-identity.test.ts +127 -0
- package/tests/e2e/assume-membership.test.ts +64 -0
- package/tests/e2e/content-api-basic.test.ts +51 -0
- package/tests/e2e/content-invalid-schema.test.ts +31 -0
- package/tests/e2e/homepage.test.ts +10 -0
- package/tests/e2e/tenant-member-access.test.ts +51 -0
- package/tests/e2e/x-contember-ref.test.ts +71 -0
- package/tests/src/requests.ts +81 -0
- package/tests/src/tester.ts +118 -0
- package/alpine.dockerfile +0 -30
- package/debian.dockerfile +0 -27
- package/dist/src/http/CollectHttpMetricsMiddelware.d.ts +0 -5
- package/dist/src/http/CollectHttpMetricsMiddelware.d.ts.map +0 -1
- package/dist/src/http/CollectHttpMetricsMiddelware.js +0 -36
- package/dist/src/http/CollectHttpMetricsMiddelware.js.map +0 -1
- package/dist/src/http/ShowMetricsMiddleware.d.ts +0 -4
- package/dist/src/http/ShowMetricsMiddleware.d.ts.map +0 -1
- package/dist/src/http/ShowMetricsMiddleware.js +0 -20
- package/dist/src/http/ShowMetricsMiddleware.js.map +0 -1
- package/dist/src/http/index.d.ts +0 -3
- package/dist/src/http/index.d.ts.map +0 -1
- package/dist/src/http/index.js +0 -19
- package/dist/src/http/index.js.map +0 -1
- package/dist/src/projectGroup/ProjectGroupContainerResolver.d.ts +0 -12
- package/dist/src/projectGroup/ProjectGroupContainerResolver.d.ts.map +0 -1
- package/dist/src/projectGroup/ProjectGroupContainerResolver.js +0 -36
- package/dist/src/projectGroup/ProjectGroupContainerResolver.js.map +0 -1
- package/dist/src/utils/cluster.d.ts +0 -9
- package/dist/src/utils/cluster.d.ts.map +0 -1
- package/dist/src/utils/cluster.js +0 -47
- package/dist/src/utils/cluster.js.map +0 -1
- package/dist/src/utils/dbMetrics.d.ts +0 -16
- package/dist/src/utils/dbMetrics.d.ts.map +0 -1
- package/dist/src/utils/dbMetrics.js +0 -98
- package/dist/src/utils/dbMetrics.js.map +0 -1
- package/dist/src/utils/timeout.d.ts +0 -2
- package/dist/src/utils/timeout.d.ts.map +0 -1
- package/dist/src/utils/timeout.js +0 -8
- package/dist/src/utils/timeout.js.map +0 -1
- package/dist/src/utils/tuple.d.ts +0 -2
- package/dist/src/utils/tuple.d.ts.map +0 -1
- package/dist/src/utils/tuple.js +0 -6
- package/dist/src/utils/tuple.js.map +0 -1
- package/dist/tests/e2e/http.test.d.ts +0 -2
- package/dist/tests/e2e/http.test.d.ts.map +0 -1
- package/dist/tests/e2e/http.test.js +0 -275
- package/dist/tests/e2e/http.test.js.map +0 -1
- package/jasmine.json +0 -7
- package/src/http/CollectHttpMetricsMiddelware.ts +0 -32
- package/src/http/ShowMetricsMiddleware.ts +0 -12
- package/src/http/index.ts +0 -2
- package/src/projectGroup/ProjectGroupContainerResolver.ts +0 -47
- package/src/utils/cluster.ts +0 -40
- package/src/utils/dbMetrics.ts +0 -111
- package/src/utils/timeout.ts +0 -4
- package/src/utils/tuple.ts +0 -1
- package/tests/e2e/http.test.ts +0 -303
- package/tslint.json +0 -14
|
@@ -23,10 +23,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.projectConfigSchema = exports.stageConfig = exports.serverConfigSchema = exports.tenantConfigSchema = exports.
|
|
26
|
+
exports.projectConfigSchema = exports.stageConfig = exports.serverConfigSchema = exports.tenantConfigSchema = exports.dbConfigSchema = void 0;
|
|
27
27
|
const Typesafe = __importStar(require("@contember/typesafe"));
|
|
28
28
|
const utils_1 = require("../utils");
|
|
29
|
-
exports.
|
|
29
|
+
exports.dbConfigSchema = Typesafe.intersection(Typesafe.object({
|
|
30
30
|
host: Typesafe.string,
|
|
31
31
|
port: Typesafe.number,
|
|
32
32
|
user: Typesafe.string,
|
|
@@ -34,9 +34,22 @@ exports.dbCredentialsSchema = Typesafe.intersection(Typesafe.object({
|
|
|
34
34
|
database: Typesafe.string,
|
|
35
35
|
}), Typesafe.partial({
|
|
36
36
|
ssl: Typesafe.boolean,
|
|
37
|
+
queryTimeoutMs: Typesafe.number,
|
|
38
|
+
statementTimeoutMs: Typesafe.number,
|
|
39
|
+
connectionTimeoutMs: Typesafe.number,
|
|
40
|
+
pool: Typesafe.partial({
|
|
41
|
+
maxConnections: Typesafe.number,
|
|
42
|
+
maxConnecting: Typesafe.number,
|
|
43
|
+
maxIdle: Typesafe.number,
|
|
44
|
+
reconnectIntervalMs: Typesafe.number,
|
|
45
|
+
idleTimeoutMs: Typesafe.number,
|
|
46
|
+
acquireTimeoutMs: Typesafe.number,
|
|
47
|
+
maxUses: Typesafe.number,
|
|
48
|
+
maxAgeMs: Typesafe.number,
|
|
49
|
+
}),
|
|
37
50
|
}));
|
|
38
51
|
exports.tenantConfigSchema = Typesafe.intersection(Typesafe.object({
|
|
39
|
-
db: exports.
|
|
52
|
+
db: exports.dbConfigSchema,
|
|
40
53
|
mailer: Typesafe.transform(Typesafe.partial({
|
|
41
54
|
from: Typesafe.string,
|
|
42
55
|
host: Typesafe.string,
|
|
@@ -62,28 +75,17 @@ exports.tenantConfigSchema = Typesafe.intersection(Typesafe.object({
|
|
|
62
75
|
encryptionKey: Typesafe.string,
|
|
63
76
|
}),
|
|
64
77
|
}));
|
|
65
|
-
exports.serverConfigSchema = Typesafe.
|
|
78
|
+
exports.serverConfigSchema = Typesafe.object({
|
|
66
79
|
port: Typesafe.number,
|
|
67
|
-
monitoringPort: Typesafe.number,
|
|
68
80
|
http: Typesafe.partial({
|
|
69
81
|
requestBodySize: Typesafe.string,
|
|
70
82
|
}),
|
|
71
|
-
logging: Typesafe.union(val => Typesafe.valueAt(val, ['sentry', 'dsn']) === undefined ? {} : Typesafe.fail([]), Typesafe.partial({
|
|
83
|
+
logging: Typesafe.union((val) => Typesafe.valueAt(val, ['sentry', 'dsn']) === undefined ? {} : Typesafe.fail([]), Typesafe.partial({
|
|
72
84
|
sentry: Typesafe.object({
|
|
73
85
|
dsn: Typesafe.string,
|
|
74
86
|
}),
|
|
75
87
|
})),
|
|
76
|
-
})
|
|
77
|
-
workerCount: Typesafe.union(Typesafe.number, Typesafe.string),
|
|
78
|
-
projectGroup: (val, path = []) => Typesafe.valueAt(val, ['domainMapping']) === undefined
|
|
79
|
-
? undefined
|
|
80
|
-
: Typesafe.intersection(Typesafe.object({
|
|
81
|
-
domainMapping: Typesafe.string,
|
|
82
|
-
}), Typesafe.partial({
|
|
83
|
-
configHeader: Typesafe.string,
|
|
84
|
-
configEncryptionKey: Typesafe.string,
|
|
85
|
-
}))(val, path),
|
|
86
|
-
}));
|
|
88
|
+
});
|
|
87
89
|
exports.stageConfig = Typesafe.record(Typesafe.string, Typesafe.intersection(Typesafe.object({
|
|
88
90
|
name: Typesafe.union(Typesafe.string, (_, path = []) => (0, utils_1.upperCaseFirst)(String(path[path.length - 2]))),
|
|
89
91
|
slug: (_, path = []) => String(path[path.length - 2]),
|
|
@@ -96,7 +98,7 @@ exports.projectConfigSchema = Typesafe.object({
|
|
|
96
98
|
stages: (input, path = []) => Object.values((0, exports.stageConfig)(input, path)),
|
|
97
99
|
db: Typesafe.intersection(Typesafe.union(Typesafe.object({
|
|
98
100
|
useTenantDb: Typesafe.literal(true),
|
|
99
|
-
}), exports.
|
|
101
|
+
}), exports.dbConfigSchema), Typesafe.partial({
|
|
100
102
|
systemSchema: Typesafe.string,
|
|
101
103
|
})),
|
|
102
104
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../../src/config/configSchema.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8DAA+C;AAE/C,oCAAyC;AAG5B,QAAA,
|
|
1
|
+
{"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../../src/config/configSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configTemplate.d.ts","sourceRoot":"","sources":["../../../src/config/configTemplate.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"configTemplate.d.ts","sourceRoot":"","sources":["../../../src/config/configTemplate.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,EAAE,GAgF5B,CAAA"}
|
|
@@ -10,6 +10,19 @@ exports.configTemplate = {
|
|
|
10
10
|
password: `%tenant.env.DB_PASSWORD%`,
|
|
11
11
|
database: `%tenant.env.DB_NAME%`,
|
|
12
12
|
ssl: `%?tenant.env.DB_SSL::bool%`,
|
|
13
|
+
queryTimeoutMs: '%?tenant.env.DB_QUERY_TIMEOUT_MS::number%',
|
|
14
|
+
statementTimeoutMs: '%?tenant.env.DB_STATEMENT_TIMEOUT_MS::number%',
|
|
15
|
+
connectionTimeoutMs: '%?tenant.env.DB_CONNECTION_TIMEOUT_MS::number%',
|
|
16
|
+
pool: {
|
|
17
|
+
maxConnections: '%?tenant.env.DB_POOL_MAX_CONNECTIONS::number%',
|
|
18
|
+
maxConnecting: '%?tenant.env.DB_POOL_MAX_CONNECTING::number%',
|
|
19
|
+
maxIdle: '%?tenant.env.DB_POOL_MAX_IDLE::number%',
|
|
20
|
+
reconnectIntervalMs: '%?tenant.env.DB_POOL_RECONNECT_INTERVAL_MS::number%',
|
|
21
|
+
idleTimeoutMs: '%?tenant.env.DB_POOL_IDLE_TIMEOUT_MS::number%',
|
|
22
|
+
acquireTimeoutMs: '%?tenant.env.DB_POOL_ACQUIRE_TIMEOUT_MS::number%',
|
|
23
|
+
maxUses: '%?tenant.env.DB_POOL_MAX_USES::number%',
|
|
24
|
+
maxAgeMs: '%?tenant.env.DB_POOL_MAX_AGE_MS::number%',
|
|
25
|
+
},
|
|
13
26
|
},
|
|
14
27
|
mailer: {
|
|
15
28
|
from: '%?tenant.env.MAILER_FROM%',
|
|
@@ -38,6 +51,16 @@ exports.configTemplate = {
|
|
|
38
51
|
password: `%?project.secret.db.password||project.env.DB_PASSWORD%`,
|
|
39
52
|
database: `%?project.env.DB_NAME||project.slug%`,
|
|
40
53
|
ssl: `%?project.env.DB_SSL::bool%`,
|
|
54
|
+
pool: {
|
|
55
|
+
maxConnections: '%?project.env.DB_POOL_MAX_CONNECTIONS%',
|
|
56
|
+
maxConnecting: '%?project.env.DB_POOL_MAX_CONNECTING%',
|
|
57
|
+
maxIdle: '%?project.env.DB_POOL_MAX_IDLE%',
|
|
58
|
+
reconnectIntervalMs: '%?project.env.DB_POOL_RECONNECT_INTERVAL_MS%',
|
|
59
|
+
idleTimeoutMs: '%?project.env.DB_POOL_IDLE_TIMEOUT_MS%',
|
|
60
|
+
acquireTimeoutMs: '%?project.env.DB_POOL_ACQUIRE_TIMEOUT_MS%',
|
|
61
|
+
maxUses: '%?project.env.DB_POOL_MAX_USES%',
|
|
62
|
+
maxAgeMs: '%?project.env.DB_POOL_MAX_AGE_MS%',
|
|
63
|
+
},
|
|
41
64
|
},
|
|
42
65
|
},
|
|
43
66
|
server: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configTemplate.js","sourceRoot":"","sources":["../../../src/config/configTemplate.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAQ;IAClC,MAAM,EAAE;QACP,EAAE,EAAE;YACH,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE,8BAA8B;YACpC,IAAI,EAAE,sBAAsB;YAC5B,QAAQ,EAAE,0BAA0B;YACpC,QAAQ,EAAE,sBAAsB;YAChC,GAAG,EAAE,4BAA4B;
|
|
1
|
+
{"version":3,"file":"configTemplate.js","sourceRoot":"","sources":["../../../src/config/configTemplate.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAQ;IAClC,MAAM,EAAE;QACP,EAAE,EAAE;YACH,IAAI,EAAE,sBAAsB;YAC5B,IAAI,EAAE,8BAA8B;YACpC,IAAI,EAAE,sBAAsB;YAC5B,QAAQ,EAAE,0BAA0B;YACpC,QAAQ,EAAE,sBAAsB;YAChC,GAAG,EAAE,4BAA4B;YACjC,cAAc,EAAE,2CAA2C;YAC3D,kBAAkB,EAAE,+CAA+C;YACnE,mBAAmB,EAAE,gDAAgD;YACrE,IAAI,EAAE;gBACL,cAAc,EAAE,+CAA+C;gBAC/D,aAAa,EAAE,8CAA8C;gBAC7D,OAAO,EAAE,wCAAwC;gBACjD,mBAAmB,EAAE,qDAAqD;gBAC1E,aAAa,EAAE,+CAA+C;gBAC9D,gBAAgB,EAAE,kDAAkD;gBACpE,OAAO,EAAE,wCAAwC;gBACjD,QAAQ,EAAE,0CAA0C;aACpD;SACD;QACD,MAAM,EAAE;YACP,IAAI,EAAE,2BAA2B;YACjC,IAAI,EAAE,mCAAmC;YACzC,IAAI,EAAE,mCAAmC;YACzC,MAAM,EAAE,mCAAmC;YAC3C,IAAI,EAAE,2BAA2B;YACjC,QAAQ,EAAE,+BAA+B;SACzC;QACD,WAAW,EAAE;YACZ,SAAS,EAAE,6BAA6B;YACxC,SAAS,EAAE,6BAA6B;YACxC,aAAa,EAAE,kCAAkC;YACjD,YAAY,EAAE,gCAAgC;YAC9C,UAAU,EAAE,8BAA8B;SAC1C;QACD,OAAO,EAAE;YACR,aAAa,EAAE,iCAAiC;SAChD;KACD;IACD,eAAe,EAAE;QAChB,EAAE,EAAE;YACH,IAAI,EAAE,wBAAwB;YAC9B,IAAI,EAAE,gCAAgC;YACtC,IAAI,EAAE,wBAAwB;YAC9B,QAAQ,EAAE,wDAAwD;YAClE,QAAQ,EAAE,sCAAsC;YAChD,GAAG,EAAE,6BAA6B;YAClC,IAAI,EAAE;gBACL,cAAc,EAAE,wCAAwC;gBACxD,aAAa,EAAE,uCAAuC;gBACtD,OAAO,EAAE,iCAAiC;gBAC1C,mBAAmB,EAAE,8CAA8C;gBACnE,aAAa,EAAE,wCAAwC;gBACvD,gBAAgB,EAAE,2CAA2C;gBAC7D,OAAO,EAAE,iCAAiC;gBAC1C,QAAQ,EAAE,mCAAmC;aAC7C;SACD;KACD;IACD,MAAM,EAAE;QACP,IAAI,EAAE,8BAA8B;QACpC,cAAc,EAAE,yCAAyC;QACzD,WAAW,EAAE,uCAAuC;QACpD,IAAI,EAAE;YACL,eAAe,EAAE,iDAAiD;SAClE;QACD,YAAY,EAAE;YACb,aAAa,EAAE,+CAA+C;YAC9D,YAAY,EAAE,8CAA8C;YAC5D,mBAAmB,EAAE,sDAAsD;SAC3E;QACD,OAAO,EAAE;YACR,MAAM,EAAE;gBACP,GAAG,EAAE,mBAAmB;aACxB;SACD;KACD;CACD,CAAA"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MasterContainerArgs } from './MasterContainer';
|
|
2
2
|
import { ProjectConfig } from '@contember/engine-http';
|
|
3
3
|
import { readConfig } from './config/config';
|
|
4
|
-
import {
|
|
5
|
-
|
|
4
|
+
import { serverConfigSchema } from './config/configSchema';
|
|
5
|
+
import { TenantConfigResolver } from './config/tenantConfigResolver';
|
|
6
|
+
import { ProjectGroupContainerFactory } from './projectGroup/ProjectGroupContainer';
|
|
7
|
+
export * from './utils/serverStartup';
|
|
8
|
+
export * from './utils/serverTermination';
|
|
9
|
+
export * from './utils/sentry';
|
|
10
|
+
export * from './MasterContainer';
|
|
11
|
+
export { ProjectConfig, readConfig, serverConfigSchema, TenantConfigResolver, ProjectGroupContainerFactory, };
|
|
6
12
|
export declare const createContainer: (args: MasterContainerArgs) => import("./MasterContainer").MasterContainer;
|
|
7
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAA;AAEnF,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AAEjC,OAAO,EACN,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,oBAAoB,EACpB,4BAA4B,GAC5B,CAAA;AAED,eAAO,MAAM,eAAe,SAAU,mBAAmB,gDAExD,CAAA"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,12 +1,31 @@
|
|
|
1
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
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createContainer = exports.
|
|
17
|
+
exports.createContainer = exports.ProjectGroupContainerFactory = exports.serverConfigSchema = exports.readConfig = void 0;
|
|
4
18
|
const MasterContainer_1 = require("./MasterContainer");
|
|
5
|
-
Object.defineProperty(exports, "MasterContainerFactory", { enumerable: true, get: function () { return MasterContainer_1.MasterContainerFactory; } });
|
|
6
19
|
const config_1 = require("./config/config");
|
|
7
20
|
Object.defineProperty(exports, "readConfig", { enumerable: true, get: function () { return config_1.readConfig; } });
|
|
8
|
-
const
|
|
9
|
-
Object.defineProperty(exports, "
|
|
21
|
+
const configSchema_1 = require("./config/configSchema");
|
|
22
|
+
Object.defineProperty(exports, "serverConfigSchema", { enumerable: true, get: function () { return configSchema_1.serverConfigSchema; } });
|
|
23
|
+
const ProjectGroupContainer_1 = require("./projectGroup/ProjectGroupContainer");
|
|
24
|
+
Object.defineProperty(exports, "ProjectGroupContainerFactory", { enumerable: true, get: function () { return ProjectGroupContainer_1.ProjectGroupContainerFactory; } });
|
|
25
|
+
__exportStar(require("./utils/serverStartup"), exports);
|
|
26
|
+
__exportStar(require("./utils/serverTermination"), exports);
|
|
27
|
+
__exportStar(require("./utils/sentry"), exports);
|
|
28
|
+
__exportStar(require("./MasterContainer"), exports);
|
|
10
29
|
const createContainer = (args) => {
|
|
11
30
|
return new MasterContainer_1.MasterContainerFactory().create(args);
|
|
12
31
|
};
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,uDAA+E;AAE/E,4CAA4C;AAY3C,2FAZQ,mBAAU,OAYR;AAXX,wDAA0D;AAYzD,mGAZQ,iCAAkB,OAYR;AAVnB,gFAAmF;AAYlF,6GAZQ,oDAA4B,OAYR;AAV7B,wDAAqC;AACrC,4DAAyC;AACzC,iDAA8B;AAC9B,oDAAiC;AAU1B,MAAM,eAAe,GAAG,CAAC,IAAyB,EAAE,EAAE;IAC5D,OAAO,IAAI,wCAAsB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AACjD,CAAC,CAAA;AAFY,QAAA,eAAe,mBAE3B"}
|
|
@@ -34,7 +34,7 @@ class ProjectContainerFactory {
|
|
|
34
34
|
.addService('providers', () => this.providers)
|
|
35
35
|
.addService('schemaVersionBuilder', () => this.schemaVersionBuilder)
|
|
36
36
|
.addService('project', () => project)
|
|
37
|
-
.addService('connection', ({ project }) =>
|
|
37
|
+
.addService('connection', ({ project }) => database_1.Connection.create(project.db))
|
|
38
38
|
.addService('graphQlSchemaBuilderFactory', () => new engine_content_api_1.GraphQlSchemaBuilderFactory())
|
|
39
39
|
.addService('permissionsByIdentityFactory', ({}) => new engine_content_api_1.PermissionsByIdentityFactory())
|
|
40
40
|
.addService('graphQlSchemaFactory', ({ project, permissionsByIdentityFactory, graphQlSchemaBuilderFactory, providers }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectContainer.js","sourceRoot":"","sources":["../../../src/project/ProjectContainer.ts"],"names":[],"mappings":";;;AAAA,wCAAwC;AACxC,kDAAgD;AAChD,oEAA2F;AAC3F,sEAAyG;AAEzG,wDAM+B;AAE/B,MAAa,8BAA8B;IAC1C,YACkB,KAAc,EACd,OAAiB,EACjB,SAAoB;QAFpB,UAAK,GAAL,KAAK,CAAS;QACd,YAAO,GAAP,OAAO,CAAU;QACjB,cAAS,GAAT,SAAS,CAAW;IAEtC,CAAC;IAED,MAAM,CAAC,oBAA0C;QAChD,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IACnG,CAAC;CACD;AAXD,wEAWC;AAMD,MAAa,uBAAuB;IACnC,YACkB,KAAc,EACd,OAAiB,EACjB,oBAA0C,EAC1C,SAAoB;QAHpB,UAAK,GAAL,KAAK,CAAS;QACd,YAAO,GAAP,OAAO,CAAU;QACjB,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,cAAS,GAAT,SAAS,CAAW;IACnC,CAAC;IAEG,eAAe,CAAC,IAAiC;QACvD,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;aAC7B,KAAK,EAAE;aACP,IAAI,CACJ,SAAS,EACT,YAAY,EACZ,8BAA8B,EAC9B,uBAAuB,EACvB,sBAAsB,CACtB,CAAA;IACH,CAAC;IAES,aAAa,CAAC,EAAE,OAAO,EAA+B;QAC/D,OAAO,IAAI,aAAO,CAAC,EAAE,CAAC;aACpB,UAAU,CAAC,WAAW,EAAE,GAAG,EAAE,CAC7B,IAAI,CAAC,SAAS,CAAC;aACf,UAAU,CAAC,sBAAsB,EAAE,GAAG,EAAE,CACxC,IAAI,CAAC,oBAAoB,CAAC;aAC1B,UAAU,CAAC,SAAS,EAAE,GAAG,EAAE,CAC3B,OAAO,CAAC;aACR,UAAU,CAAC,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CACzC,
|
|
1
|
+
{"version":3,"file":"ProjectContainer.js","sourceRoot":"","sources":["../../../src/project/ProjectContainer.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { ProjectContainerFactory } from './ProjectContainer';
|
|
|
2
2
|
import { ProjectContainer } from '@contember/engine-http';
|
|
3
3
|
import { DatabaseContext, ProjectManager, ProjectWithSecrets } from '@contember/engine-tenant-api';
|
|
4
4
|
import { ProjectInitializer as SystemProjectInitializer } from '@contember/engine-system-api';
|
|
5
|
+
import { Logger } from '@contember/engine-common';
|
|
5
6
|
import { ProjectConfigResolver } from '../config/projectConfigResolver';
|
|
6
7
|
import { TenantConfig } from '../config/config';
|
|
7
8
|
export declare class ProjectContainerResolver {
|
|
@@ -14,9 +15,11 @@ export declare class ProjectContainerResolver {
|
|
|
14
15
|
private projectContainers;
|
|
15
16
|
readonly onCreate: ((container: ProjectContainer) => void | (() => void))[];
|
|
16
17
|
constructor(projectContainerFactory: ProjectContainerFactory, projectConfigResolver: ProjectConfigResolver, projectManager: ProjectManager, systemProjectInitializer: SystemProjectInitializer, tenantDatabase: DatabaseContext, tenantConfig: TenantConfig);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
getProjectContainer(slug: string, { alias, logger }?: {
|
|
19
|
+
alias?: boolean;
|
|
20
|
+
logger?: Logger;
|
|
21
|
+
}): Promise<ProjectContainer | undefined>;
|
|
22
|
+
createProjectContainer(project: ProjectWithSecrets, logger?: Logger): Promise<ProjectContainer>;
|
|
20
23
|
destroyContainer(slug: string): Promise<void>;
|
|
21
24
|
}
|
|
22
25
|
//# sourceMappingURL=ProjectContainerResolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectContainerResolver.d.ts","sourceRoot":"","sources":["../../../src/project/ProjectContainerResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAClG,OAAO,EAAE,kBAAkB,IAAI,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"ProjectContainerResolver.d.ts","sourceRoot":"","sources":["../../../src/project/ProjectContainerResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAClG,OAAO,EAAE,kBAAkB,IAAI,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AAE7F,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAE/C,qBAAa,wBAAwB;IAMnC,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,wBAAwB;IACzC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAV9B,OAAO,CAAC,iBAAiB,CAA8B;IAEvD,SAAgB,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAE,gBAAgB,KAAK,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAK;gBAGrE,uBAAuB,EAAE,uBAAuB,EAChD,qBAAqB,EAAE,qBAAqB,EAC5C,cAAc,EAAE,cAAc,EAC9B,wBAAwB,EAAE,wBAAwB,EAClD,cAAc,EAAE,eAAe,EAC/B,YAAY,EAAE,YAAY;IAI/B,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAa,EAAE,MAAM,EAAE,GAAE;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IA4B5I,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoB/F,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAc1D"}
|
|
@@ -14,17 +14,7 @@ class ProjectContainerResolver {
|
|
|
14
14
|
this.projectContainers = new ProjectContainerStore_1.ProjectContainerStore();
|
|
15
15
|
this.onCreate = [];
|
|
16
16
|
}
|
|
17
|
-
async
|
|
18
|
-
const projects = await this.projectManager.getProjects(this.tenantDatabase);
|
|
19
|
-
return await Promise.all(projects.map(async (it) => {
|
|
20
|
-
const container = await this.getProjectContainer(it.slug);
|
|
21
|
-
if (!container) {
|
|
22
|
-
throw new Error('should not happen');
|
|
23
|
-
}
|
|
24
|
-
return container;
|
|
25
|
-
}));
|
|
26
|
-
}
|
|
27
|
-
async getProjectContainer(slug, alias = false) {
|
|
17
|
+
async getProjectContainer(slug, { alias = false, logger } = {}) {
|
|
28
18
|
const realSlug = this.projectContainers.resolveAlias(slug);
|
|
29
19
|
if (realSlug) {
|
|
30
20
|
slug = realSlug;
|
|
@@ -45,21 +35,19 @@ class ProjectContainerResolver {
|
|
|
45
35
|
if (!project) {
|
|
46
36
|
return undefined;
|
|
47
37
|
}
|
|
48
|
-
const container = await this.createProjectContainer(project);
|
|
38
|
+
const container = await this.createProjectContainer(project, logger);
|
|
49
39
|
if (slug !== project.slug) {
|
|
50
40
|
this.projectContainers.setAlias(project.slug, slug);
|
|
51
41
|
}
|
|
52
42
|
return container;
|
|
53
43
|
}
|
|
54
|
-
async createProjectContainer(project) {
|
|
44
|
+
async createProjectContainer(project, logger) {
|
|
55
45
|
const projectConfig = this.projectConfigResolver(project.slug, project.config, project.secrets, this.tenantConfig);
|
|
56
46
|
return (await this.projectContainers.fetchContainer(project.slug, async (slug) => {
|
|
57
47
|
const projectContainer = this.projectContainerFactory.createContainer({
|
|
58
48
|
project: projectConfig,
|
|
59
49
|
});
|
|
60
|
-
await this.systemProjectInitializer.initialize(projectContainer.systemDatabaseContextFactory, projectContainer.project,
|
|
61
|
-
// eslint-disable-next-line no-console
|
|
62
|
-
new engine_common_1.Logger(console.log));
|
|
50
|
+
await this.systemProjectInitializer.initialize(projectContainer.systemDatabaseContextFactory, projectContainer.project, logger !== null && logger !== void 0 ? logger : new engine_common_1.Logger(() => null));
|
|
63
51
|
const cleanups = this.onCreate.map(it => it(projectContainer) || (() => null));
|
|
64
52
|
return {
|
|
65
53
|
container: projectContainer,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectContainerResolver.js","sourceRoot":"","sources":["../../../src/project/ProjectContainerResolver.ts"],"names":[],"mappings":";;;AAIA,mEAA+D;AAC/D,4DAAiD;AAIjD,MAAa,wBAAwB;IAKpC,YACkB,uBAAgD,EAChD,qBAA4C,EAC5C,cAA8B,EAC9B,wBAAkD,EAClD,cAA+B,EAC/B,YAA0B;QAL1B,4BAAuB,GAAvB,uBAAuB,CAAyB;QAChD,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,mBAAc,GAAd,cAAc,CAAgB;QAC9B,6BAAwB,GAAxB,wBAAwB,CAA0B;QAClD,mBAAc,GAAd,cAAc,CAAiB;QAC/B,iBAAY,GAAZ,YAAY,CAAc;QAVpC,sBAAiB,GAAG,IAAI,6CAAqB,EAAE,CAAA;QAEvC,aAAQ,GAA6D,EAAE,CAAA;IASpF,CAAC;
|
|
1
|
+
{"version":3,"file":"ProjectContainerResolver.js","sourceRoot":"","sources":["../../../src/project/ProjectContainerResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ interface ProjectGroupContainerFactoryArgs {
|
|
|
9
9
|
slug: string | undefined;
|
|
10
10
|
}
|
|
11
11
|
export declare class ProjectGroupContainerFactory {
|
|
12
|
+
private readonly debug;
|
|
12
13
|
private readonly providers;
|
|
13
14
|
private readonly systemContainerFactory;
|
|
14
15
|
private readonly tenantContainerFactory;
|
|
@@ -16,7 +17,7 @@ export declare class ProjectGroupContainerFactory {
|
|
|
16
17
|
private readonly projectConfigResolver;
|
|
17
18
|
private readonly tenantGraphQLHandlerFactory;
|
|
18
19
|
private readonly systemGraphQLHandlerFactory;
|
|
19
|
-
constructor(providers: Providers, systemContainerFactory: SystemContainerFactory, tenantContainerFactory: TenantContainerFactory, projectContainerFactoryFactory: ProjectContainerFactoryFactory, projectConfigResolver: ProjectConfigResolver, tenantGraphQLHandlerFactory: TenantGraphQLHandlerFactory, systemGraphQLHandlerFactory: SystemGraphQLHandlerFactory);
|
|
20
|
+
constructor(debug: boolean, providers: Providers, systemContainerFactory: SystemContainerFactory, tenantContainerFactory: TenantContainerFactory, projectContainerFactoryFactory: ProjectContainerFactoryFactory, projectConfigResolver: ProjectConfigResolver, tenantGraphQLHandlerFactory: TenantGraphQLHandlerFactory, systemGraphQLHandlerFactory: SystemGraphQLHandlerFactory);
|
|
20
21
|
create({ config, slug }: ProjectGroupContainerFactoryArgs): ProjectGroupContainer;
|
|
21
22
|
}
|
|
22
23
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectGroupContainer.d.ts","sourceRoot":"","sources":["../../../src/projectGroup/ProjectGroupContainer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAGN,qBAAqB,
|
|
1
|
+
{"version":3,"file":"ProjectGroupContainer.d.ts","sourceRoot":"","sources":["../../../src/projectGroup/ProjectGroupContainer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAGN,qBAAqB,EAGrB,SAAS,EACT,2BAA2B,EAC3B,2BAA2B,EAC3B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACN,8BAA8B,EAM9B,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAGvE,UAAU,gCAAgC;IAEzC,MAAM,EAAE,YAAY,CAAA;IACpB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CACxB;AAED,qBAAa,4BAA4B;IAEvC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,8BAA8B;IAC/C,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,2BAA2B;IAC5C,OAAO,CAAC,QAAQ,CAAC,2BAA2B;gBAP3B,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,SAAS,EACpB,sBAAsB,EAAE,sBAAsB,EAC9C,sBAAsB,EAAE,sBAAsB,EAC9C,8BAA8B,EAAE,8BAA8B,EAC9D,qBAAqB,EAAE,qBAAqB,EAC5C,2BAA2B,EAAE,2BAA2B,EACxD,2BAA2B,EAAE,2BAA2B;IAGnE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,gCAAgC,GAAG,qBAAqB;CAoFxF"}
|
|
@@ -7,7 +7,8 @@ const engine_http_1 = require("@contember/engine-http");
|
|
|
7
7
|
const project_1 = require("../project");
|
|
8
8
|
const crypto_1 = require("crypto");
|
|
9
9
|
class ProjectGroupContainerFactory {
|
|
10
|
-
constructor(providers, systemContainerFactory, tenantContainerFactory, projectContainerFactoryFactory, projectConfigResolver, tenantGraphQLHandlerFactory, systemGraphQLHandlerFactory) {
|
|
10
|
+
constructor(debug, providers, systemContainerFactory, tenantContainerFactory, projectContainerFactoryFactory, projectConfigResolver, tenantGraphQLHandlerFactory, systemGraphQLHandlerFactory) {
|
|
11
|
+
this.debug = debug;
|
|
11
12
|
this.providers = providers;
|
|
12
13
|
this.systemContainerFactory = systemContainerFactory;
|
|
13
14
|
this.tenantContainerFactory = tenantContainerFactory;
|
|
@@ -20,16 +21,18 @@ class ProjectGroupContainerFactory {
|
|
|
20
21
|
return new dic_1.Builder({})
|
|
21
22
|
.addService('slug', () => slug)
|
|
22
23
|
.addService('providers', () => this.providers)
|
|
23
|
-
.addService('
|
|
24
|
+
.addService('tenantDbCredentials', () => config.db)
|
|
25
|
+
.addService('tenantConnection', ({ tenantDbCredentials }) => database_1.Connection.create(tenantDbCredentials))
|
|
24
26
|
.addService('projectSchemaResolver', () => new project_1.ProjectSchemaResolverProxy())
|
|
25
27
|
.addService('projectInitializer', () => new project_1.ProjectInitializerProxy())
|
|
26
|
-
.addService('tenantContainer', ({ tenantConnection, projectSchemaResolver, projectInitializer }) => {
|
|
28
|
+
.addService('tenantContainer', ({ tenantConnection, tenantDbCredentials, projectSchemaResolver, projectInitializer }) => {
|
|
27
29
|
const encryptionKey = config.secrets.encryptionKey
|
|
28
30
|
? (0, crypto_1.createSecretKey)(Buffer.from(config.secrets.encryptionKey, 'hex'))
|
|
29
31
|
: undefined;
|
|
30
32
|
const cryptoWrapper = new engine_http_1.CryptoWrapper(encryptionKey);
|
|
31
33
|
return this.tenantContainerFactory.create({
|
|
32
34
|
connection: tenantConnection,
|
|
35
|
+
dbCredentials: tenantDbCredentials,
|
|
33
36
|
mailOptions: config.mailer,
|
|
34
37
|
tenantCredentials: config.credentials,
|
|
35
38
|
projectInitializer,
|
|
@@ -56,8 +59,9 @@ class ProjectGroupContainerFactory {
|
|
|
56
59
|
.addService('tenantGraphQLHandler', ({ tenantContainer }) => this.tenantGraphQLHandlerFactory.create(tenantContainer.resolvers))
|
|
57
60
|
.addService('systemGraphQLHandler', ({ systemContainer }) => this.systemGraphQLHandlerFactory.create(systemContainer.systemResolversFactory))
|
|
58
61
|
.addService('authenticator', ({ tenantDatabase, tenantContainer }) => new engine_http_1.Authenticator(tenantDatabase, tenantContainer.apiKeyManager))
|
|
62
|
+
.addService('projectMembershipResolver', ({ tenantContainer }) => new engine_http_1.ProjectMembershipResolver(this.debug, new engine_http_1.ProjectMembershipFetcher(tenantContainer.projectMemberManager, tenantContainer.databaseContext)))
|
|
59
63
|
.build()
|
|
60
|
-
.pick('projectContainerResolver', 'projectSchemaResolver', 'projectInitializer', 'systemContainer', 'systemGraphQLHandler', 'tenantContainer', 'tenantDatabase', 'authenticator', 'tenantGraphQLHandler', 'slug');
|
|
64
|
+
.pick('projectContainerResolver', 'projectSchemaResolver', 'projectInitializer', 'systemContainer', 'systemGraphQLHandler', 'tenantContainer', 'tenantDatabase', 'authenticator', 'projectMembershipResolver', 'tenantGraphQLHandler', 'slug');
|
|
61
65
|
}
|
|
62
66
|
}
|
|
63
67
|
exports.ProjectGroupContainerFactory = ProjectGroupContainerFactory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectGroupContainer.js","sourceRoot":"","sources":["../../../src/projectGroup/ProjectGroupContainer.ts"],"names":[],"mappings":";;;AAAA,wCAAwC;AACxC,kDAAgD;AAGhD,
|
|
1
|
+
{"version":3,"file":"ProjectGroupContainer.js","sourceRoot":"","sources":["../../../src/projectGroup/ProjectGroupContainer.ts"],"names":[],"mappings":";;;AAAA,wCAAwC;AACxC,kDAAgD;AAGhD,wDAS+B;AAC/B,wCAOmB;AAGnB,mCAAwC;AAQxC,MAAa,4BAA4B;IACxC,YACkB,KAAc,EACd,SAAoB,EACpB,sBAA8C,EAC9C,sBAA8C,EAC9C,8BAA8D,EAC9D,qBAA4C,EAC5C,2BAAwD,EACxD,2BAAwD;QAPxD,UAAK,GAAL,KAAK,CAAS;QACd,cAAS,GAAT,SAAS,CAAW;QACpB,2BAAsB,GAAtB,sBAAsB,CAAwB;QAC9C,2BAAsB,GAAtB,sBAAsB,CAAwB;QAC9C,mCAA8B,GAA9B,8BAA8B,CAAgC;QAC9D,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,gCAA2B,GAA3B,2BAA2B,CAA6B;QACxD,gCAA2B,GAA3B,2BAA2B,CAA6B;IACvE,CAAC;IAEG,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAoC;QAC/D,OAAO,IAAI,aAAO,CAAC,EAAE,CAAC;aACpB,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,CACxB,IAAI,CAAC;aACL,UAAU,CAAC,WAAW,EAAE,GAAG,EAAE,CAC7B,IAAI,CAAC,SAAS,CAAC;aACf,UAAU,CAAC,qBAAqB,EAAE,GAAG,EAAE,CACvC,MAAM,CAAC,EAAE,CAAC;aACV,UAAU,CAAC,kBAAkB,EAAE,CAAC,EAAE,mBAAmB,EAAE,EAA6B,EAAE,CACtF,qBAAU,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;aACvC,UAAU,CAAC,uBAAuB,EAAE,GAAG,EAAE,CACzC,IAAI,oCAA0B,EAAE,CAAC;aACjC,UAAU,CAAC,oBAAoB,EAAE,GAAG,EAAE,CACtC,IAAI,iCAAuB,EAAE,CAAC;aAC9B,UAAU,CAAC,iBAAiB,EAAE,CAAC,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,EAAE,EAAE;YACvH,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa;gBACjD,CAAC,CAAC,IAAA,wBAAe,EAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;gBACnE,CAAC,CAAC,SAAS,CAAA;YAEZ,MAAM,aAAa,GAAG,IAAI,2BAAa,CAAC,aAAa,CAAC,CAAA;YACtD,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC;gBACzC,UAAU,EAAE,gBAAgB;gBAC5B,aAAa,EAAE,mBAAmB;gBAClC,WAAW,EAAE,MAAM,CAAC,MAAM;gBAC1B,iBAAiB,EAAE,MAAM,CAAC,WAAW;gBACrC,kBAAkB;gBAClB,qBAAqB;gBACrB,eAAe,EAAE;oBAChB,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;oBAClD,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;iBAClD;aACD,CAAC,CAAA;QACH,CAAC,CAAC;aACD,UAAU,CAAC,gBAAgB,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CACrD,eAAe,CAAC,eAAe,CAAC;aAChC,UAAU,CAAC,iBAAiB,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,EAAE,CAC3E,eAAe,CAAC;aAChB,UAAU,CAAC,iBAAiB,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CACtD,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC;aACxD,UAAU,CAAC,sBAAsB,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CAC3D,eAAe,CAAC,oBAAoB,CAAC;aACrC,UAAU,CAAC,yBAAyB,EAAE,CAAC,EAAG,oBAAoB,EAAE,EAAE,EAAE,CACpE,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;aACjE,UAAU,CAAC,sBAAsB,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CAC3D,eAAe,CAAC,cAAc,CAAC;aAC/B,UAAU,CAAC,0BAA0B,EAAE,CAAC,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,eAAe,EAAE,eAAe,EAAE,EAAE,EAAE,CAC/H,IAAI,kCAAwB,CAC3B,uBAAuB,EACvB,IAAI,CAAC,qBAAqB,EAC1B,oBAAoB,EACpB,eAAe,CAAC,kBAAkB,EAClC,eAAe,CAAC,eAAe,EAC/B,MAAM,CACN,CAAC;aAEF,YAAY,CAAC,uBAAuB,EAAE,CAAC,EAAE,EAAE,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,EAAE,EAAE;YACjG,EAAE,CAAC,WAAW,CAAC,IAAI,+BAAqB,CAAC,wBAAwB,EAAE,oBAAoB,CAAC,CAAC,CAAA;QAC1F,CAAC,CAAC;aACD,YAAY,CAAC,oBAAoB,EAAE,CAAC,EAAE,EAAE,EAAE,wBAAwB,EAAE,EAAE,EAAE;YACxE,EAAE,CAAC,cAAc,CAAC,IAAI,4BAAkB,CAAC,wBAAwB,CAAC,CAAC,CAAA;QACpE,CAAC,CAAC;aACD,UAAU,CAAC,sBAAsB,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CAC3D,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;aACnE,UAAU,CAAC,sBAAsB,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CAC3D,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC;aAChF,UAAU,CAAC,eAAe,EAAE,CAAC,EAAE,cAAc,EAAE,eAAe,EAAE,EAAE,EAAE,CACpE,IAAI,2BAAa,CAAC,cAAc,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;aACjE,UAAU,CAAC,2BAA2B,EAAE,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CAChE,IAAI,uCAAyB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,sCAAwB,CAAC,eAAe,CAAC,oBAAoB,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC;aAC/I,KAAK,EAAE;aACP,IAAI,CACJ,0BAA0B,EAC1B,uBAAuB,EACvB,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,2BAA2B,EAC3B,sBAAsB,EACtB,MAAM,CACN,CAAA;IACH,CAAC;CACD;AAhGD,oEAgGC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ProjectGroupContainer, ProjectGroupResolver as ProjectGroupResolverInterface } from '@contember/engine-http';
|
|
2
|
+
export declare class ProjectGroupResolver implements ProjectGroupResolverInterface {
|
|
3
|
+
private readonly projectGroupContainer;
|
|
4
|
+
constructor(projectGroupContainer: ProjectGroupContainer);
|
|
5
|
+
resolveContainer(): Promise<ProjectGroupContainer>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=ProjectGroupResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectGroupResolver.d.ts","sourceRoot":"","sources":["../../../src/projectGroup/ProjectGroupResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,IAAI,6BAA6B,EAAE,MAAM,wBAAwB,CAAA;AAErH,qBAAa,oBAAqB,YAAW,6BAA6B;IAExE,OAAO,CAAC,QAAQ,CAAC,qBAAqB;gBAArB,qBAAqB,EAAE,qBAAqB;IAI9D,gBAAgB,IAAI,OAAO,CAAC,qBAAqB,CAAC;CAGlD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ProjectGroupResolver = void 0;
|
|
4
|
+
class ProjectGroupResolver {
|
|
5
|
+
constructor(projectGroupContainer) {
|
|
6
|
+
this.projectGroupContainer = projectGroupContainer;
|
|
7
|
+
}
|
|
8
|
+
resolveContainer() {
|
|
9
|
+
return Promise.resolve(this.projectGroupContainer);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.ProjectGroupResolver = ProjectGroupResolver;
|
|
13
|
+
//# sourceMappingURL=ProjectGroupResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectGroupResolver.js","sourceRoot":"","sources":["../../../src/projectGroup/ProjectGroupResolver.ts"],"names":[],"mappings":";;;AAEA,MAAa,oBAAoB;IAChC,YACkB,qBAA4C;QAA5C,0BAAqB,GAArB,qBAAqB,CAAuB;IAE9D,CAAC;IAED,gBAAgB;QACf,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;IACnD,CAAC;CACD;AATD,oDASC"}
|
package/dist/src/start.js
CHANGED
|
@@ -29,29 +29,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
30
|
const index_1 = require("./index");
|
|
31
31
|
const loadPlugins_1 = __importDefault(require("./loadPlugins"));
|
|
32
|
-
const path_1 = require("path");
|
|
33
|
-
const os_1 = __importDefault(require("os"));
|
|
34
|
-
const cluster_1 = __importDefault(require("cluster"));
|
|
35
32
|
const utils_1 = require("./utils");
|
|
36
|
-
const
|
|
37
|
-
const signals = [
|
|
38
|
-
['SIGHUP', 1],
|
|
39
|
-
['SIGINT', 2],
|
|
40
|
-
['SIGTERM', 15],
|
|
41
|
-
];
|
|
42
|
-
let servers = [];
|
|
43
|
-
for (const [signal, code] of signals) {
|
|
44
|
-
process.on(signal, async () => {
|
|
45
|
-
// eslint-disable-next-line no-console
|
|
46
|
-
console.log(`process received a ${signal} signal`);
|
|
47
|
-
for (const server of servers) {
|
|
48
|
-
await new Promise(resolve => server.close(() => resolve(null)));
|
|
49
|
-
}
|
|
50
|
-
process.exit(128 + code);
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
return servers;
|
|
54
|
-
};
|
|
33
|
+
const serverStartup_1 = require("./utils/serverStartup");
|
|
55
34
|
(async () => {
|
|
56
35
|
var _a;
|
|
57
36
|
if (process.env.NODE_HEAPDUMP === 'true') {
|
|
@@ -59,106 +38,30 @@ const createServerTerminator = () => {
|
|
|
59
38
|
console.log('Initializing heapdump');
|
|
60
39
|
await Promise.resolve().then(() => __importStar(require('heapdump')));
|
|
61
40
|
}
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
const version =
|
|
66
|
-
|
|
67
|
-
// eslint-disable-next-line no-console
|
|
68
|
-
console.log(`Starting Contember ${version}`);
|
|
69
|
-
// eslint-disable-next-line no-console
|
|
70
|
-
console.log(`NODE_ENV is set to ${process.env.NODE_ENV}`);
|
|
71
|
-
if (isDebug) {
|
|
72
|
-
// eslint-disable-next-line no-console
|
|
73
|
-
console.log('Starting Contember in debug mode');
|
|
74
|
-
// eslint-disable-next-line no-console
|
|
75
|
-
console.log('NEVER USE debug mode in production environment');
|
|
76
|
-
}
|
|
77
|
-
}
|
|
41
|
+
const terminationJobs = [];
|
|
42
|
+
(0, index_1.listenOnProcessTermination)(terminationJobs);
|
|
43
|
+
const isDebug = (0, serverStartup_1.isDebugMode)();
|
|
44
|
+
const version = (0, serverStartup_1.getServerVersion)();
|
|
45
|
+
(0, serverStartup_1.printStartInfo)({ version, isDebug });
|
|
78
46
|
const plugins = await (0, loadPlugins_1.default)();
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
.filter((it) => it !== null);
|
|
82
|
-
const configSources = [];
|
|
83
|
-
for (const configType of ['file', 'yaml', 'json']) {
|
|
84
|
-
const envValue = process.env['CONTEMBER_CONFIG_' + configType.toUpperCase()];
|
|
85
|
-
if (envValue) {
|
|
86
|
-
configSources.push({ type: configType, data: envValue });
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
const { serverConfig, projectConfigResolver, tenantConfigResolver } = await (0, index_1.readConfig)(configSources, configProcessors);
|
|
90
|
-
if (process.argv[2] === 'validate') {
|
|
91
|
-
process.exit(0);
|
|
92
|
-
}
|
|
93
|
-
'sentry' in serverConfig.logging && (0, utils_1.initSentry)((_a = serverConfig.logging.sentry) === null || _a === void 0 ? void 0 : _a.dsn);
|
|
94
|
-
const workerConfig = serverConfig.workerCount || 1;
|
|
95
|
-
const workerCount = workerConfig === 'auto' ? os_1.default.cpus().length : Number(workerConfig);
|
|
96
|
-
const isClusterMode = workerCount > 1;
|
|
97
|
-
const processType = (0, utils_1.getClusterProcessType)(isClusterMode);
|
|
47
|
+
const { serverConfig, projectConfigResolver, tenantConfigResolver } = await (0, serverStartup_1.resolveServerConfig)({ plugins, serverConfigSchema: index_1.serverConfigSchema });
|
|
48
|
+
(0, utils_1.initSentry)((_a = serverConfig.logging.sentry) === null || _a === void 0 ? void 0 : _a.dsn);
|
|
98
49
|
const container = (0, index_1.createContainer)({
|
|
99
50
|
debugMode: isDebug,
|
|
100
51
|
serverConfig,
|
|
101
52
|
projectConfigResolver,
|
|
102
53
|
tenantConfigResolver,
|
|
103
54
|
plugins,
|
|
104
|
-
processType,
|
|
105
55
|
version,
|
|
106
56
|
});
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
const monitoringPort = serverConfig.monitoringPort;
|
|
110
|
-
const terminator = createServerTerminator();
|
|
111
|
-
terminator.push(container.monitoringKoa.listen(monitoringPort, () => {
|
|
112
|
-
// eslint-disable-next-line no-console
|
|
113
|
-
console.log(`Monitoring running on http://localhost:${monitoringPort}`);
|
|
114
|
-
}));
|
|
115
|
-
if (!serverConfig.projectGroup) {
|
|
116
|
-
initializedProjects = await container.initializer.initialize();
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
const port = serverConfig.port;
|
|
120
|
-
const printStarted = () => {
|
|
121
|
-
if (serverConfig.projectGroup) {
|
|
122
|
-
// eslint-disable-next-line no-console
|
|
123
|
-
console.log('Contember Cloud running');
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
// eslint-disable-next-line no-console
|
|
127
|
-
console.log(`Contember API running on http://localhost:${port}`);
|
|
128
|
-
// eslint-disable-next-line no-console
|
|
129
|
-
console.log(initializedProjects.length ? `Initialized projects: ${initializedProjects.join(', ')}` : 'No project initialized');
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
if (isClusterMode && cluster_1.default.isMaster) {
|
|
57
|
+
const initializedProjects = await container.initializer.initialize();
|
|
58
|
+
const httpServer = container.koa.listen(serverConfig.port, () => {
|
|
133
59
|
// eslint-disable-next-line no-console
|
|
134
|
-
console.log(`
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
printStarted();
|
|
140
|
-
cluster_1.default.on('exit', async (worker, code, signal) => {
|
|
141
|
-
// eslint-disable-next-line no-console
|
|
142
|
-
console.log(`Worker ${worker.process.pid} died with signal ${signal}, restarting`);
|
|
143
|
-
await (0, utils_1.timeout)(2000);
|
|
144
|
-
cluster_1.default.fork();
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
if (isClusterMode) {
|
|
149
|
-
// eslint-disable-next-line no-console
|
|
150
|
-
console.log(`Starting worker ${process.pid}`);
|
|
151
|
-
}
|
|
152
|
-
const serverTerminator = createServerTerminator();
|
|
153
|
-
serverTerminator.push(container.koa.listen(port, () => {
|
|
154
|
-
if (!isClusterMode) {
|
|
155
|
-
printStarted();
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
(0, utils_1.notifyWorkerStarted)();
|
|
159
|
-
}
|
|
160
|
-
}));
|
|
161
|
-
}
|
|
60
|
+
console.log(`Contember API running on http://localhost:${(serverConfig.port)}`);
|
|
61
|
+
// eslint-disable-next-line no-console
|
|
62
|
+
console.log(initializedProjects.length ? `Initialized projects: ${initializedProjects.join(', ')}` : 'No project initialized');
|
|
63
|
+
});
|
|
64
|
+
terminationJobs.push(() => new Promise(resolve => httpServer.close(resolve)));
|
|
162
65
|
})().catch(e => {
|
|
163
66
|
// eslint-disable-next-line no-console
|
|
164
67
|
console.log(e);
|