@contember/engine-server 1.1.0-alpha.2 → 1.1.0-alpha.3
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/alpine.dockerfile +3 -1
- package/debian.dockerfile +3 -1
- package/dist/src/MasterContainer.d.ts +104 -8
- package/dist/src/MasterContainer.d.ts.map +1 -1
- package/dist/src/MasterContainer.js +65 -84
- package/dist/src/MasterContainer.js.map +1 -1
- package/dist/src/bootstrap/Initializer.d.ts +3 -12
- package/dist/src/bootstrap/Initializer.d.ts.map +1 -1
- package/dist/src/bootstrap/Initializer.js +8 -24
- package/dist/src/bootstrap/Initializer.js.map +1 -1
- package/dist/src/config/config.d.ts +7 -49
- package/dist/src/config/config.d.ts.map +1 -1
- package/dist/src/config/config.js +11 -188
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/configSchema.d.ts +84 -0
- package/dist/src/config/configSchema.d.ts.map +1 -0
- package/dist/src/config/configSchema.js +80 -0
- package/dist/src/config/configSchema.js.map +1 -0
- package/dist/src/config/configTemplate.d.ts +2 -0
- package/dist/src/config/configTemplate.d.ts.map +1 -0
- package/dist/src/config/configTemplate.js +62 -0
- package/dist/src/config/configTemplate.js.map +1 -0
- package/dist/src/config/projectConfigResolver.d.ts +8 -0
- package/dist/src/config/projectConfigResolver.d.ts.map +1 -0
- package/dist/src/config/projectConfigResolver.js +63 -0
- package/dist/src/config/projectConfigResolver.js.map +1 -0
- package/dist/src/config/tenantConfigResolver.d.ts +8 -0
- package/dist/src/config/tenantConfigResolver.d.ts.map +1 -0
- package/dist/src/config/tenantConfigResolver.js +31 -0
- package/dist/src/config/tenantConfigResolver.js.map +1 -0
- package/dist/src/http/CollectHttpMetricsMiddelware.d.ts +2 -2
- package/dist/src/http/CollectHttpMetricsMiddelware.d.ts.map +1 -1
- package/dist/src/http/CollectHttpMetricsMiddelware.js +6 -5
- package/dist/src/http/CollectHttpMetricsMiddelware.js.map +1 -1
- package/dist/src/project/ProjectContainer.d.ts +14 -16
- package/dist/src/project/ProjectContainer.d.ts.map +1 -1
- package/dist/src/project/ProjectContainer.js +17 -12
- package/dist/src/project/ProjectContainer.js.map +1 -1
- package/dist/src/project/ProjectContainerResolver.d.ts +12 -10
- package/dist/src/project/ProjectContainerResolver.d.ts.map +1 -1
- package/dist/src/project/ProjectContainerResolver.js +26 -33
- package/dist/src/project/ProjectContainerResolver.js.map +1 -1
- package/dist/src/project/{ProjectGroupState.d.ts → ProjectContainerStore.d.ts} +2 -2
- package/dist/src/project/ProjectContainerStore.d.ts.map +1 -0
- package/dist/src/project/{ProjectGroupState.js → ProjectContainerStore.js} +4 -4
- package/dist/src/project/ProjectContainerStore.js.map +1 -0
- package/dist/src/project/ProjectInitializer.d.ts +3 -3
- package/dist/src/project/ProjectInitializer.d.ts.map +1 -1
- package/dist/src/project/ProjectInitializer.js +4 -4
- package/dist/src/project/ProjectInitializer.js.map +1 -1
- package/dist/src/project/ProjectSchemaResolver.d.ts +3 -3
- package/dist/src/project/ProjectSchemaResolver.d.ts.map +1 -1
- package/dist/src/project/ProjectSchemaResolver.js +5 -5
- package/dist/src/project/ProjectSchemaResolver.js.map +1 -1
- package/dist/src/projectGroup/ProjectGroupContainer.d.ts +23 -0
- package/dist/src/projectGroup/ProjectGroupContainer.d.ts.map +1 -0
- package/dist/src/projectGroup/ProjectGroupContainer.js +64 -0
- package/dist/src/projectGroup/ProjectGroupContainer.js.map +1 -0
- package/dist/src/projectGroup/ProjectGroupContainerResolver.d.ts +12 -0
- package/dist/src/projectGroup/ProjectGroupContainerResolver.d.ts.map +1 -0
- package/dist/src/projectGroup/ProjectGroupContainerResolver.js +36 -0
- package/dist/src/projectGroup/ProjectGroupContainerResolver.js.map +1 -0
- package/dist/src/start.js +9 -8
- package/dist/src/start.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/src/utils/dbMetrics.d.ts +6 -2
- package/dist/src/utils/dbMetrics.d.ts.map +1 -1
- package/dist/src/utils/dbMetrics.js +13 -16
- package/dist/src/utils/dbMetrics.js.map +1 -1
- package/dist/tests/cases/http.js +30 -19
- package/dist/tests/cases/http.js.map +1 -1
- package/dist/tests/tsconfig.tsbuildinfo +1 -1
- package/package.json +22 -21
- package/src/MasterContainer.ts +145 -204
- package/src/bootstrap/Initializer.ts +9 -34
- package/src/config/config.ts +23 -234
- package/src/config/configSchema.ts +114 -0
- package/src/config/configTemplate.ts +58 -0
- package/src/config/projectConfigResolver.ts +83 -0
- package/src/config/tenantConfigResolver.ts +41 -0
- package/src/http/CollectHttpMetricsMiddelware.ts +6 -5
- package/src/project/ProjectContainer.ts +25 -18
- package/src/project/ProjectContainerResolver.ts +29 -37
- package/src/project/{ProjectGroupState.ts → ProjectContainerStore.ts} +1 -1
- package/src/project/ProjectInitializer.ts +5 -9
- package/src/project/ProjectSchemaResolver.ts +6 -10
- package/src/projectGroup/ProjectGroupContainer.ts +120 -0
- package/src/projectGroup/ProjectGroupContainerResolver.ts +47 -0
- package/src/start.ts +9 -8
- package/src/utils/dbMetrics.ts +19 -20
- package/tests/cases/http.ts +35 -22
- package/dist/src/project/ProjectGroupState.d.ts.map +0 -1
- package/dist/src/project/ProjectGroupState.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollectHttpMetricsMiddelware.d.ts","sourceRoot":"","sources":["../../../src/http/CollectHttpMetricsMiddelware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,
|
|
1
|
+
{"version":3,"file":"CollectHttpMetricsMiddelware.d.ts","sourceRoot":"","sources":["../../../src/http/CollectHttpMetricsMiddelware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAA;AAC7G,OAAO,IAAI,MAAM,aAAa,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,eAAO,MAAM,mCAAmC,aACrC,KAAK,QAAQ,KACrB,cAAc,QAAQ,0BAA0B,GAAG,yBAAyB,GAAG,eAAe,CAAC,CAyBjG,CAAA"}
|
|
@@ -8,13 +8,13 @@ const prom_client_1 = __importDefault(require("prom-client"));
|
|
|
8
8
|
const createColllectHttpMetricsMiddleware = (registry) => {
|
|
9
9
|
const requestSummary = new prom_client_1.default.Histogram({
|
|
10
10
|
name: 'contember_http_duration_seconds',
|
|
11
|
-
help: 'Incoming HTTP requests statistics by http_method (OPTIONS requests are ignored), http_code, contember_project (or "unknown" for undefined project), contember_module (system, tenant, content, unknown) and graphql_operation (query, mutation, unknown)',
|
|
11
|
+
help: 'Incoming HTTP requests statistics by http_method (OPTIONS requests are ignored), http_code, contember_project (or "unknown" for undefined project), contember_project_group (or "unknown" for undefined project group), contember_module (system, tenant, content, unknown) and graphql_operation (query, mutation, unknown)',
|
|
12
12
|
registers: [registry],
|
|
13
|
-
labelNames: ['http_method', 'http_code', 'contember_project', 'contember_module', 'graphql_operation'],
|
|
13
|
+
labelNames: ['http_method', 'http_code', 'contember_project', 'contember_project_group', 'contember_module', 'graphql_operation'],
|
|
14
14
|
buckets: [0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10],
|
|
15
15
|
});
|
|
16
16
|
return async (ctx, next) => {
|
|
17
|
-
var _a
|
|
17
|
+
var _a;
|
|
18
18
|
const end = ctx.method === 'OPTIONS' ? () => null : requestSummary.startTimer();
|
|
19
19
|
try {
|
|
20
20
|
await next();
|
|
@@ -23,9 +23,10 @@ const createColllectHttpMetricsMiddleware = (registry) => {
|
|
|
23
23
|
const labels = {
|
|
24
24
|
http_method: ctx.method,
|
|
25
25
|
http_code: ctx.status,
|
|
26
|
-
contember_project:
|
|
26
|
+
contember_project: ctx.state.project || 'unknown',
|
|
27
|
+
contember_project_group: ctx.state.projectGroup || 'unknown',
|
|
27
28
|
contember_module: ctx.state.module || 'unknown',
|
|
28
|
-
graphql_operation: ((
|
|
29
|
+
graphql_operation: ((_a = ctx.state.graphql) === null || _a === void 0 ? void 0 : _a.operationName) || 'unknown',
|
|
29
30
|
};
|
|
30
31
|
end(labels);
|
|
31
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CollectHttpMetricsMiddelware.js","sourceRoot":"","sources":["../../../src/http/CollectHttpMetricsMiddelware.ts"],"names":[],"mappings":";;;;;;AACA,8DAA8B;AAGvB,MAAM,mCAAmC,GAAG,CAClD,QAAuB,
|
|
1
|
+
{"version":3,"file":"CollectHttpMetricsMiddelware.js","sourceRoot":"","sources":["../../../src/http/CollectHttpMetricsMiddelware.ts"],"names":[],"mappings":";;;;;;AACA,8DAA8B;AAGvB,MAAM,mCAAmC,GAAG,CAClD,QAAuB,EAC4E,EAAE;IACrG,MAAM,cAAc,GAAG,IAAI,qBAAI,CAAC,SAAS,CAAC;QACzC,IAAI,EAAE,iCAAiC;QACvC,IAAI,EAAE,8TAA8T;QACpU,SAAS,EAAE,CAAC,QAAQ,CAAC;QACrB,UAAU,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,mBAAmB,CAAC;QACjI,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;KAClE,CAAC,CAAA;IAEF,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;;QAC1B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,EAAE,CAAA;QAC/E,IAAI;YACH,MAAM,IAAI,EAAE,CAAA;SACZ;gBAAS;YACT,MAAM,MAAM,GAAG;gBACd,WAAW,EAAE,GAAG,CAAC,MAAM;gBACvB,SAAS,EAAE,GAAG,CAAC,MAAM;gBACrB,iBAAiB,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,SAAS;gBACjD,uBAAuB,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,SAAS;gBAC5D,gBAAgB,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,SAAS;gBAC/C,iBAAiB,EAAE,CAAA,MAAA,GAAG,CAAC,KAAK,CAAC,OAAO,0CAAE,aAAa,KAAI,SAAS;aAChE,CAAA;YACD,GAAG,CAAC,MAAM,CAAC,CAAA;SACX;IACF,CAAC,CAAA;AACF,CAAC,CAAA;AA3BY,QAAA,mCAAmC,uCA2B/C"}
|
|
@@ -1,30 +1,33 @@
|
|
|
1
1
|
import { Builder } from '@contember/dic';
|
|
2
2
|
import { Connection } from '@contember/database';
|
|
3
3
|
import { DatabaseContextFactory, SchemaVersionBuilder } from '@contember/engine-system-api';
|
|
4
|
-
import { ModificationHandlerFactory } from '@contember/schema-migrations';
|
|
5
4
|
import { GraphQlSchemaBuilderFactory, PermissionsByIdentityFactory } from '@contember/engine-content-api';
|
|
6
5
|
import { Plugin } from '@contember/engine-plugins';
|
|
7
|
-
import {
|
|
8
|
-
|
|
6
|
+
import { ContentSchemaResolver, GraphQlSchemaFactory, ProjectConfig, ProjectContainer, Providers } from '@contember/engine-http';
|
|
7
|
+
export declare class ProjectContainerFactoryFactory {
|
|
8
|
+
private readonly debug;
|
|
9
|
+
private readonly plugins;
|
|
10
|
+
private readonly providers;
|
|
11
|
+
constructor(debug: boolean, plugins: Plugin[], providers: Providers);
|
|
12
|
+
create(schemaVersionBuilder: SchemaVersionBuilder): ProjectContainerFactory;
|
|
13
|
+
}
|
|
14
|
+
interface ProjectContainerFactoryArgs {
|
|
15
|
+
project: ProjectConfig;
|
|
16
|
+
}
|
|
9
17
|
export declare class ProjectContainerFactory {
|
|
10
18
|
private readonly debug;
|
|
11
19
|
private readonly plugins;
|
|
12
20
|
private readonly schemaVersionBuilder;
|
|
13
21
|
private readonly providers;
|
|
14
22
|
constructor(debug: boolean, plugins: Plugin[], schemaVersionBuilder: SchemaVersionBuilder, providers: Providers);
|
|
15
|
-
createContainer(
|
|
16
|
-
protected createBuilder(project:
|
|
23
|
+
createContainer(args: ProjectContainerFactoryArgs): ProjectContainer;
|
|
24
|
+
protected createBuilder({ project }: ProjectContainerFactoryArgs): Builder<{
|
|
17
25
|
providers: {
|
|
18
26
|
uuid: () => string;
|
|
19
27
|
now: () => Date;
|
|
20
28
|
bcrypt: (value: string) => Promise<string>;
|
|
21
29
|
bcryptCompare: (data: any, hash: string) => Promise<boolean>;
|
|
22
30
|
randomBytes: (bytes: number) => Promise<Buffer>;
|
|
23
|
-
encrypt: (value: Buffer) => Promise<{
|
|
24
|
-
encrypted: Buffer;
|
|
25
|
-
iv: Buffer;
|
|
26
|
-
}>;
|
|
27
|
-
decrypt: (valueEncrypted: Buffer, iv: Buffer) => Promise<Buffer>;
|
|
28
31
|
hash: (value: import("crypto").BinaryLike, algo: string) => Buffer;
|
|
29
32
|
};
|
|
30
33
|
} & {
|
|
@@ -33,22 +36,17 @@ export declare class ProjectContainerFactory {
|
|
|
33
36
|
project: ProjectConfig;
|
|
34
37
|
} & {
|
|
35
38
|
connection: Connection;
|
|
36
|
-
} & {
|
|
37
|
-
modificationHandlerFactory: ModificationHandlerFactory;
|
|
38
39
|
} & {
|
|
39
40
|
graphQlSchemaBuilderFactory: GraphQlSchemaBuilderFactory;
|
|
40
41
|
} & {
|
|
41
42
|
permissionsByIdentityFactory: PermissionsByIdentityFactory;
|
|
42
43
|
} & {
|
|
43
44
|
graphQlSchemaFactory: GraphQlSchemaFactory;
|
|
44
|
-
} & {
|
|
45
|
-
contentQueryHandlerFactory: ContentQueryHandlerFactory;
|
|
46
45
|
} & {
|
|
47
46
|
contentSchemaResolver: ContentSchemaResolver;
|
|
48
|
-
} & {
|
|
49
|
-
contentQueryHandlerProvider: ContentQueryHandlerProvider;
|
|
50
47
|
} & {
|
|
51
48
|
systemDatabaseContextFactory: DatabaseContextFactory;
|
|
52
49
|
}>;
|
|
53
50
|
}
|
|
51
|
+
export {};
|
|
54
52
|
//# sourceMappingURL=ProjectContainer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectContainer.d.ts","sourceRoot":"","sources":["../../../src/project/ProjectContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"ProjectContainer.d.ts","sourceRoot":"","sources":["../../../src/project/ProjectContainer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAC3F,OAAO,EAAE,2BAA2B,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAA;AACzG,OAAO,EAA4B,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAC5E,OAAO,EACN,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,MAAM,wBAAwB,CAAA;AAE/B,qBAAa,8BAA8B;IAEzC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAFT,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,MAAM,EAAE,EACjB,SAAS,EAAE,SAAS;IAItC,MAAM,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,uBAAuB;CAG3E;AAED,UAAU,2BAA2B;IACpC,OAAO,EAAE,aAAa,CAAA;CACtB;AAED,qBAAa,uBAAuB;IAElC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAHT,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,MAAM,EAAE,EACjB,oBAAoB,EAAE,oBAAoB,EAC1C,SAAS,EAAE,SAAS;IAG/B,eAAe,CAAC,IAAI,EAAE,2BAA2B,GAAG,gBAAgB;IAY3E,SAAS,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;CAyBhE"}
|
|
@@ -1,14 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ProjectContainerFactory = void 0;
|
|
3
|
+
exports.ProjectContainerFactory = exports.ProjectContainerFactoryFactory = void 0;
|
|
4
4
|
const dic_1 = require("@contember/dic");
|
|
5
5
|
const database_1 = require("@contember/database");
|
|
6
6
|
const engine_system_api_1 = require("@contember/engine-system-api");
|
|
7
|
-
const utils_1 = require("../utils");
|
|
8
|
-
const schema_migrations_1 = require("@contember/schema-migrations");
|
|
9
7
|
const engine_content_api_1 = require("@contember/engine-content-api");
|
|
10
8
|
const engine_http_1 = require("@contember/engine-http");
|
|
11
|
-
|
|
9
|
+
class ProjectContainerFactoryFactory {
|
|
10
|
+
constructor(debug, plugins, providers) {
|
|
11
|
+
this.debug = debug;
|
|
12
|
+
this.plugins = plugins;
|
|
13
|
+
this.providers = providers;
|
|
14
|
+
}
|
|
15
|
+
create(schemaVersionBuilder) {
|
|
16
|
+
return new ProjectContainerFactory(this.debug, this.plugins, schemaVersionBuilder, this.providers);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.ProjectContainerFactoryFactory = ProjectContainerFactoryFactory;
|
|
12
20
|
class ProjectContainerFactory {
|
|
13
21
|
constructor(debug, plugins, schemaVersionBuilder, providers) {
|
|
14
22
|
this.debug = debug;
|
|
@@ -16,18 +24,17 @@ class ProjectContainerFactory {
|
|
|
16
24
|
this.schemaVersionBuilder = schemaVersionBuilder;
|
|
17
25
|
this.providers = providers;
|
|
18
26
|
}
|
|
19
|
-
createContainer(
|
|
20
|
-
return this.createBuilder(
|
|
27
|
+
createContainer(args) {
|
|
28
|
+
return this.createBuilder(args)
|
|
21
29
|
.build()
|
|
22
|
-
.pick('project', 'connection', '
|
|
30
|
+
.pick('project', 'connection', 'systemDatabaseContextFactory', 'contentSchemaResolver', 'graphQlSchemaFactory');
|
|
23
31
|
}
|
|
24
|
-
createBuilder(project) {
|
|
32
|
+
createBuilder({ project }) {
|
|
25
33
|
return new dic_1.Builder({})
|
|
26
34
|
.addService('providers', () => this.providers)
|
|
27
35
|
.addService('schemaVersionBuilder', () => this.schemaVersionBuilder)
|
|
28
36
|
.addService('project', () => project)
|
|
29
37
|
.addService('connection', ({ project }) => new database_1.Connection(project.db, { timing: true }))
|
|
30
|
-
.addService('modificationHandlerFactory', () => new schema_migrations_1.ModificationHandlerFactory(schema_migrations_1.ModificationHandlerFactory.defaultFactoryMap))
|
|
31
38
|
.addService('graphQlSchemaBuilderFactory', () => new engine_content_api_1.GraphQlSchemaBuilderFactory())
|
|
32
39
|
.addService('permissionsByIdentityFactory', ({}) => new engine_content_api_1.PermissionsByIdentityFactory())
|
|
33
40
|
.addService('graphQlSchemaFactory', ({ project, permissionsByIdentityFactory, graphQlSchemaBuilderFactory, providers }) => {
|
|
@@ -36,10 +43,8 @@ class ProjectContainerFactory {
|
|
|
36
43
|
.filter((it) => !!it);
|
|
37
44
|
return new engine_http_1.GraphQlSchemaFactory(graphQlSchemaBuilderFactory, permissionsByIdentityFactory, contributors);
|
|
38
45
|
})
|
|
39
|
-
.addService('contentQueryHandlerFactory', () => new engine_http_2.ContentQueryHandlerFactory(project.slug, this.debug, utils_1.logSentryError))
|
|
40
46
|
.addService('contentSchemaResolver', ({ schemaVersionBuilder }) => new engine_http_1.ContentSchemaResolver(schemaVersionBuilder))
|
|
41
|
-
.addService('
|
|
42
|
-
.addService('systemDatabaseContextFactory', ({ connection, providers }) => new engine_system_api_1.DatabaseContextFactory(connection.createClient('system', { module: 'system' }), providers));
|
|
47
|
+
.addService('systemDatabaseContextFactory', ({ connection, providers, project }) => { var _a; return new engine_system_api_1.DatabaseContextFactory(connection.createClient((_a = project.db.systemSchema) !== null && _a !== void 0 ? _a : 'system', { module: 'system' }), providers); });
|
|
43
48
|
}
|
|
44
49
|
}
|
|
45
50
|
exports.ProjectContainerFactory = ProjectContainerFactory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectContainer.js","sourceRoot":"","sources":["../../../src/project/ProjectContainer.ts"],"names":[],"mappings":";;;AAAA,wCAAwC;AACxC,kDAAgD;AAChD,oEAA2F;AAC3F,
|
|
1
|
+
{"version":3,"file":"ProjectContainer.js","sourceRoot":"","sources":["../../../src/project/ProjectContainer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import { ProjectContainerFactory } from './ProjectContainer';
|
|
2
|
-
import {
|
|
3
|
-
import { ProjectManager, ProjectWithSecrets } from '@contember/engine-tenant-api';
|
|
4
|
-
import { ProjectGroup } from '@contember/engine-tenant-api';
|
|
2
|
+
import { ProjectContainer } from '@contember/engine-http';
|
|
3
|
+
import { DatabaseContext, ProjectManager, ProjectWithSecrets } from '@contember/engine-tenant-api';
|
|
5
4
|
import { ProjectInitializer as SystemProjectInitializer } from '@contember/engine-system-api';
|
|
5
|
+
import { ProjectConfigResolver } from '../config/projectConfigResolver';
|
|
6
|
+
import { TenantConfig } from '../config/config';
|
|
6
7
|
export declare class ProjectContainerResolver {
|
|
7
8
|
private readonly projectContainerFactory;
|
|
8
9
|
private readonly projectConfigResolver;
|
|
9
10
|
private readonly projectManager;
|
|
10
11
|
private readonly systemProjectInitializer;
|
|
11
|
-
private
|
|
12
|
+
private readonly tenantDatabase;
|
|
13
|
+
private readonly tenantConfig;
|
|
14
|
+
private projectContainers;
|
|
12
15
|
readonly onCreate: ((container: ProjectContainer) => void | (() => void))[];
|
|
13
|
-
constructor(projectContainerFactory: ProjectContainerFactory, projectConfigResolver: ProjectConfigResolver, projectManager: ProjectManager, systemProjectInitializer: SystemProjectInitializer);
|
|
14
|
-
getAllProjectContainers(
|
|
15
|
-
getProjectContainer(
|
|
16
|
-
createProjectContainer(
|
|
17
|
-
destroyContainer(
|
|
18
|
-
private getProjectGroupState;
|
|
16
|
+
constructor(projectContainerFactory: ProjectContainerFactory, projectConfigResolver: ProjectConfigResolver, projectManager: ProjectManager, systemProjectInitializer: SystemProjectInitializer, tenantDatabase: DatabaseContext, tenantConfig: TenantConfig);
|
|
17
|
+
getAllProjectContainers(): Promise<ProjectContainer[]>;
|
|
18
|
+
getProjectContainer(slug: string, alias?: boolean): Promise<ProjectContainer | undefined>;
|
|
19
|
+
createProjectContainer(project: ProjectWithSecrets): Promise<ProjectContainer>;
|
|
20
|
+
destroyContainer(slug: string): Promise<void>;
|
|
19
21
|
}
|
|
20
22
|
//# 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,
|
|
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;AAG7F,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;IAG/B,uBAAuB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAatD,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IA4BhG,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqB9E,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAc1D"}
|
|
@@ -1,60 +1,62 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ProjectContainerResolver = void 0;
|
|
4
|
-
const
|
|
4
|
+
const ProjectContainerStore_1 = require("./ProjectContainerStore");
|
|
5
5
|
const engine_common_1 = require("@contember/engine-common");
|
|
6
6
|
class ProjectContainerResolver {
|
|
7
|
-
constructor(projectContainerFactory, projectConfigResolver, projectManager, systemProjectInitializer) {
|
|
7
|
+
constructor(projectContainerFactory, projectConfigResolver, projectManager, systemProjectInitializer, tenantDatabase, tenantConfig) {
|
|
8
8
|
this.projectContainerFactory = projectContainerFactory;
|
|
9
9
|
this.projectConfigResolver = projectConfigResolver;
|
|
10
10
|
this.projectManager = projectManager;
|
|
11
11
|
this.systemProjectInitializer = systemProjectInitializer;
|
|
12
|
-
this.
|
|
12
|
+
this.tenantDatabase = tenantDatabase;
|
|
13
|
+
this.tenantConfig = tenantConfig;
|
|
14
|
+
this.projectContainers = new ProjectContainerStore_1.ProjectContainerStore();
|
|
13
15
|
this.onCreate = [];
|
|
14
16
|
}
|
|
15
|
-
async getAllProjectContainers(
|
|
16
|
-
const projects = await this.projectManager.getProjects(
|
|
17
|
+
async getAllProjectContainers() {
|
|
18
|
+
const projects = await this.projectManager.getProjects(this.tenantDatabase);
|
|
17
19
|
return await Promise.all(projects.map(async (it) => {
|
|
18
|
-
const container = await this.getProjectContainer(
|
|
20
|
+
const container = await this.getProjectContainer(it.slug);
|
|
19
21
|
if (!container) {
|
|
20
22
|
throw new Error('should not happen');
|
|
21
23
|
}
|
|
22
24
|
return container;
|
|
23
25
|
}));
|
|
24
26
|
}
|
|
25
|
-
async getProjectContainer(
|
|
26
|
-
|
|
27
|
-
const realSlug = groupState.resolveAlias(slug);
|
|
27
|
+
async getProjectContainer(slug, alias = false) {
|
|
28
|
+
const realSlug = this.projectContainers.resolveAlias(slug);
|
|
28
29
|
if (realSlug) {
|
|
29
30
|
slug = realSlug;
|
|
30
31
|
}
|
|
31
|
-
const existing =
|
|
32
|
+
const existing = this.projectContainers.getContainer(slug);
|
|
32
33
|
if (existing) {
|
|
33
34
|
const existingAwaited = await existing;
|
|
34
|
-
const state = await this.projectManager.getProjectState(
|
|
35
|
+
const state = await this.projectManager.getProjectState(this.tenantDatabase, slug, existingAwaited.timestamp);
|
|
35
36
|
if (state === 'valid') {
|
|
36
37
|
return (await existingAwaited).container;
|
|
37
38
|
}
|
|
38
|
-
await this.destroyContainer(
|
|
39
|
+
await this.destroyContainer(slug);
|
|
39
40
|
if (state === 'not_found') {
|
|
40
41
|
return undefined;
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
|
-
const project = await this.projectManager.getProjectWithSecretsBySlug(
|
|
44
|
+
const project = await this.projectManager.getProjectWithSecretsBySlug(this.tenantDatabase, slug, alias);
|
|
44
45
|
if (!project) {
|
|
45
46
|
return undefined;
|
|
46
47
|
}
|
|
47
|
-
const container = await this.createProjectContainer(
|
|
48
|
+
const container = await this.createProjectContainer(project);
|
|
48
49
|
if (slug !== project.slug) {
|
|
49
|
-
|
|
50
|
+
this.projectContainers.setAlias(project.slug, slug);
|
|
50
51
|
}
|
|
51
52
|
return container;
|
|
52
53
|
}
|
|
53
|
-
async createProjectContainer(
|
|
54
|
-
const projectConfig = this.projectConfigResolver(project.slug, project.config, project.secrets);
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
async createProjectContainer(project) {
|
|
55
|
+
const projectConfig = this.projectConfigResolver(project.slug, project.config, project.secrets, this.tenantConfig);
|
|
56
|
+
return (await this.projectContainers.fetchContainer(project.slug, async (slug) => {
|
|
57
|
+
const projectContainer = this.projectContainerFactory.createContainer({
|
|
58
|
+
project: projectConfig,
|
|
59
|
+
});
|
|
58
60
|
await this.systemProjectInitializer.initialize(projectContainer.systemDatabaseContextFactory, projectContainer.project,
|
|
59
61
|
// eslint-disable-next-line no-console
|
|
60
62
|
new engine_common_1.Logger(console.log));
|
|
@@ -66,15 +68,14 @@ class ProjectContainerResolver {
|
|
|
66
68
|
};
|
|
67
69
|
})).container;
|
|
68
70
|
}
|
|
69
|
-
async destroyContainer(
|
|
71
|
+
async destroyContainer(slug) {
|
|
70
72
|
var _a;
|
|
71
|
-
const
|
|
72
|
-
const existing = groupState.getContainer(slug);
|
|
73
|
+
const existing = this.projectContainers.getContainer(slug);
|
|
73
74
|
if (existing) {
|
|
74
75
|
const existingAwaited = await existing;
|
|
75
76
|
existingAwaited.cleanups.forEach(it => it());
|
|
76
|
-
(_a = existingAwaited.container.project.alias) === null || _a === void 0 ? void 0 : _a.forEach(it =>
|
|
77
|
-
|
|
77
|
+
(_a = existingAwaited.container.project.alias) === null || _a === void 0 ? void 0 : _a.forEach(it => this.projectContainers.removeAlias(it));
|
|
78
|
+
this.projectContainers.removeContainer(slug);
|
|
78
79
|
}
|
|
79
80
|
process.nextTick(() => {
|
|
80
81
|
if (global.gc) {
|
|
@@ -82,14 +83,6 @@ class ProjectContainerResolver {
|
|
|
82
83
|
}
|
|
83
84
|
});
|
|
84
85
|
}
|
|
85
|
-
getProjectGroupState(projectGroup) {
|
|
86
|
-
let groupState = this.projectGroupStates.get(projectGroup);
|
|
87
|
-
if (!groupState) {
|
|
88
|
-
groupState = new ProjectGroupState_1.ProjectGroupState();
|
|
89
|
-
this.projectGroupStates.set(projectGroup, new ProjectGroupState_1.ProjectGroupState());
|
|
90
|
-
}
|
|
91
|
-
return groupState;
|
|
92
|
-
}
|
|
93
86
|
}
|
|
94
87
|
exports.ProjectContainerResolver = ProjectContainerResolver;
|
|
95
88
|
//# sourceMappingURL=ProjectContainerResolver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectContainerResolver.js","sourceRoot":"","sources":["../../../src/project/ProjectContainerResolver.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ProjectContainerResolver.js","sourceRoot":"","sources":["../../../src/project/ProjectContainerResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ declare type ContainerWithMeta = {
|
|
|
4
4
|
cleanups: (() => void)[];
|
|
5
5
|
timestamp: Date;
|
|
6
6
|
};
|
|
7
|
-
export declare class
|
|
7
|
+
export declare class ProjectContainerStore {
|
|
8
8
|
private containers;
|
|
9
9
|
private aliasMapping;
|
|
10
10
|
resolveAlias(slug: string): string | undefined;
|
|
@@ -15,4 +15,4 @@ export declare class ProjectGroupState {
|
|
|
15
15
|
removeContainer(slug: string): void;
|
|
16
16
|
}
|
|
17
17
|
export {};
|
|
18
|
-
//# sourceMappingURL=
|
|
18
|
+
//# sourceMappingURL=ProjectContainerStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectContainerStore.d.ts","sourceRoot":"","sources":["../../../src/project/ProjectContainerStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAGzD,aAAK,iBAAiB,GAAG;IAAE,SAAS,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;IAAC,SAAS,EAAE,IAAI,CAAA;CAAE,CAAA;AAEnG,qBAAa,qBAAqB;IACjC,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,YAAY,CAA4B;IAEzC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI9C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI3C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,GAAG,SAAS;IAI5D,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIrH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAG1C"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.ProjectContainerStore = void 0;
|
|
4
4
|
const engine_common_1 = require("@contember/engine-common");
|
|
5
|
-
class
|
|
5
|
+
class ProjectContainerStore {
|
|
6
6
|
constructor() {
|
|
7
7
|
this.containers = new engine_common_1.PromiseMap();
|
|
8
8
|
this.aliasMapping = new Map();
|
|
@@ -26,5 +26,5 @@ class ProjectGroupState {
|
|
|
26
26
|
this.containers.delete(slug);
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
exports.
|
|
30
|
-
//# sourceMappingURL=
|
|
29
|
+
exports.ProjectContainerStore = ProjectContainerStore;
|
|
30
|
+
//# sourceMappingURL=ProjectContainerStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectContainerStore.js","sourceRoot":"","sources":["../../../src/project/ProjectContainerStore.ts"],"names":[],"mappings":";;;AACA,4DAAqD;AAIrD,MAAa,qBAAqB;IAAlC;QACS,eAAU,GAAG,IAAI,0BAAU,EAA6B,CAAA;QACxD,iBAAY,GAAG,IAAI,GAAG,EAAkB,CAAA;IAyBjD,CAAC;IAvBO,YAAY,CAAC,IAAY;QAC/B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC;IAEM,QAAQ,CAAC,IAAY,EAAE,KAAa;QAC1C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC;IAEM,WAAW,CAAC,KAAa;QAC/B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAChC,CAAC;IAEM,YAAY,CAAC,IAAY;QAC/B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,OAAqD;QAC9F,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC;IAEM,eAAe,CAAC,IAAY;QAClC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC7B,CAAC;CACD;AA3BD,sDA2BC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ProjectInitializer as ProjectInitializerInterface, ProjectWithSecrets } from '@contember/engine-tenant-api';
|
|
2
2
|
import { ProjectContainerResolver } from './ProjectContainerResolver';
|
|
3
3
|
export declare class ProjectInitializer implements ProjectInitializerInterface {
|
|
4
4
|
private readonly projectContainerResolver;
|
|
5
5
|
constructor(projectContainerResolver: ProjectContainerResolver);
|
|
6
|
-
initializeProject(
|
|
6
|
+
initializeProject(project: ProjectWithSecrets): Promise<void>;
|
|
7
7
|
}
|
|
8
8
|
export declare class ProjectInitializerProxy implements ProjectInitializerInterface {
|
|
9
9
|
private initializer;
|
|
10
10
|
setInitializer(initializer: ProjectInitializerInterface): void;
|
|
11
|
-
initializeProject(
|
|
11
|
+
initializeProject(project: ProjectWithSecrets): Promise<void>;
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=ProjectInitializer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectInitializer.d.ts","sourceRoot":"","sources":["../../../src/project/ProjectInitializer.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ProjectInitializer.d.ts","sourceRoot":"","sources":["../../../src/project/ProjectInitializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,IAAI,2BAA2B,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AACpH,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AAErE,qBAAa,kBAAmB,YAAW,2BAA2B;IAEpE,OAAO,CAAC,QAAQ,CAAC,wBAAwB;gBAAxB,wBAAwB,EAAE,wBAAwB;IAG9D,iBAAiB,CAAC,OAAO,EAAE,kBAAkB;CAGnD;AAED,qBAAa,uBAAwB,YAAW,2BAA2B;IAC1E,OAAO,CAAC,WAAW,CAAqD;IAExE,cAAc,CAAC,WAAW,EAAE,2BAA2B,GAAG,IAAI;IAI9D,iBAAiB,CAAC,OAAO,EAAE,kBAAkB;CAM7C"}
|
|
@@ -5,8 +5,8 @@ class ProjectInitializer {
|
|
|
5
5
|
constructor(projectContainerResolver) {
|
|
6
6
|
this.projectContainerResolver = projectContainerResolver;
|
|
7
7
|
}
|
|
8
|
-
async initializeProject(
|
|
9
|
-
await this.projectContainerResolver.createProjectContainer(
|
|
8
|
+
async initializeProject(project) {
|
|
9
|
+
await this.projectContainerResolver.createProjectContainer(project);
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
exports.ProjectInitializer = ProjectInitializer;
|
|
@@ -17,11 +17,11 @@ class ProjectInitializerProxy {
|
|
|
17
17
|
setInitializer(initializer) {
|
|
18
18
|
this.initializer = initializer;
|
|
19
19
|
}
|
|
20
|
-
initializeProject(
|
|
20
|
+
initializeProject(project) {
|
|
21
21
|
if (!this.initializer) {
|
|
22
22
|
throw new Error('Initializer is not set');
|
|
23
23
|
}
|
|
24
|
-
return this.initializer.initializeProject(
|
|
24
|
+
return this.initializer.initializeProject(project);
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
exports.ProjectInitializerProxy = ProjectInitializerProxy;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectInitializer.js","sourceRoot":"","sources":["../../../src/project/ProjectInitializer.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ProjectInitializer.js","sourceRoot":"","sources":["../../../src/project/ProjectInitializer.ts"],"names":[],"mappings":";;;AAGA,MAAa,kBAAkB;IAC9B,YACkB,wBAAkD;QAAlD,6BAAwB,GAAxB,wBAAwB,CAA0B;IACjE,CAAC;IAEJ,KAAK,CAAC,iBAAiB,CAAC,OAA2B;QAClD,MAAM,IAAI,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAA;IACpE,CAAC;CACD;AARD,gDAQC;AAED,MAAa,uBAAuB;IAApC;QACS,gBAAW,GAA4C,SAAS,CAAA;IAYzE,CAAC;IAVA,cAAc,CAAC,WAAwC;QACtD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;IAC/B,CAAC;IAED,iBAAiB,CAAC,OAA2B;QAC5C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACtB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;SACzC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;IACnD,CAAC;CACD;AAbD,0DAaC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ProjectSchemaResolver as ProjectSchemaResolverInterface } from '@contember/engine-tenant-api';
|
|
2
2
|
import { SchemaVersionBuilder } from '@contember/engine-system-api';
|
|
3
3
|
import { ProjectContainerResolver } from '@contember/engine-http';
|
|
4
4
|
import { Schema } from '@contember/schema';
|
|
@@ -6,11 +6,11 @@ export declare class ProjectSchemaResolver implements ProjectSchemaResolverInter
|
|
|
6
6
|
private readonly projectContainerResolver;
|
|
7
7
|
private readonly schemaVersionBuilder;
|
|
8
8
|
constructor(projectContainerResolver: ProjectContainerResolver, schemaVersionBuilder: SchemaVersionBuilder);
|
|
9
|
-
getSchema(
|
|
9
|
+
getSchema(slug: string): Promise<import("@contember/engine-system-api").VersionedSchema | undefined>;
|
|
10
10
|
}
|
|
11
11
|
export declare class ProjectSchemaResolverProxy implements ProjectSchemaResolverInterface {
|
|
12
12
|
private resolver;
|
|
13
13
|
setResolver(resolver: ProjectSchemaResolver): void;
|
|
14
|
-
getSchema(
|
|
14
|
+
getSchema(projectSlug: string): Promise<Schema | undefined>;
|
|
15
15
|
}
|
|
16
16
|
//# sourceMappingURL=ProjectSchemaResolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectSchemaResolver.d.ts","sourceRoot":"","sources":["../../../src/project/ProjectSchemaResolver.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ProjectSchemaResolver.d.ts","sourceRoot":"","sources":["../../../src/project/ProjectSchemaResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,IAAI,8BAA8B,EAAE,MAAM,8BAA8B,CAAA;AACtG,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C,qBAAa,qBAAsB,YAAW,8BAA8B;IAE1E,OAAO,CAAC,QAAQ,CAAC,wBAAwB;IACzC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;gBADpB,wBAAwB,EAAE,wBAAwB,EAClD,oBAAoB,EAAE,oBAAoB;IAGtD,SAAS,CAAC,IAAI,EAAE,MAAM;CAQ5B;AAED,qBAAa,0BAA2B,YAAW,8BAA8B;IAChF,OAAO,CAAC,QAAQ,CAAmC;IAEnD,WAAW,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI;IAIlD,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAM3D"}
|
|
@@ -6,12 +6,12 @@ class ProjectSchemaResolver {
|
|
|
6
6
|
this.projectContainerResolver = projectContainerResolver;
|
|
7
7
|
this.schemaVersionBuilder = schemaVersionBuilder;
|
|
8
8
|
}
|
|
9
|
-
async getSchema(
|
|
10
|
-
const container = await this.projectContainerResolver.getProjectContainer(
|
|
9
|
+
async getSchema(slug) {
|
|
10
|
+
const container = await this.projectContainerResolver.getProjectContainer(slug);
|
|
11
11
|
if (!container) {
|
|
12
12
|
return undefined;
|
|
13
13
|
}
|
|
14
|
-
const db = container.systemDatabaseContextFactory.create(
|
|
14
|
+
const db = container.systemDatabaseContextFactory.create();
|
|
15
15
|
return await this.schemaVersionBuilder.buildSchema(db);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
@@ -20,11 +20,11 @@ class ProjectSchemaResolverProxy {
|
|
|
20
20
|
setResolver(resolver) {
|
|
21
21
|
this.resolver = resolver;
|
|
22
22
|
}
|
|
23
|
-
getSchema(
|
|
23
|
+
getSchema(projectSlug) {
|
|
24
24
|
if (!this.resolver) {
|
|
25
25
|
throw new Error('Resolved is not set');
|
|
26
26
|
}
|
|
27
|
-
return this.resolver.getSchema(
|
|
27
|
+
return this.resolver.getSchema(projectSlug);
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
exports.ProjectSchemaResolverProxy = ProjectSchemaResolverProxy;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectSchemaResolver.js","sourceRoot":"","sources":["../../../src/project/ProjectSchemaResolver.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ProjectSchemaResolver.js","sourceRoot":"","sources":["../../../src/project/ProjectSchemaResolver.ts"],"names":[],"mappings":";;;AAKA,MAAa,qBAAqB;IACjC,YACkB,wBAAkD,EAClD,oBAA0C;QAD1C,6BAAwB,GAAxB,wBAAwB,CAA0B;QAClD,yBAAoB,GAApB,oBAAoB,CAAsB;IACzD,CAAC;IAEJ,KAAK,CAAC,SAAS,CAAC,IAAY;QAC3B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,wBAAwB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAA;QAC/E,IAAI,CAAC,SAAS,EAAE;YACf,OAAO,SAAS,CAAA;SAChB;QACD,MAAM,EAAE,GAAG,SAAS,CAAC,4BAA4B,CAAC,MAAM,EAAE,CAAA;QAC1D,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IACvD,CAAC;CACD;AAdD,sDAcC;AAED,MAAa,0BAA0B;IAGtC,WAAW,CAAC,QAA+B;QAC1C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IACzB,CAAC;IAED,SAAS,CAAC,WAAmB;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACnB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;SACtC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IAC5C,CAAC;CACD;AAbD,gEAaC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { TenantContainerFactory } from '@contember/engine-tenant-api';
|
|
2
|
+
import { TenantConfig } from '../config/config';
|
|
3
|
+
import { ProjectGroupContainer, Providers, SystemGraphQLHandlerFactory, TenantGraphQLHandlerFactory } from '@contember/engine-http';
|
|
4
|
+
import { ProjectContainerFactoryFactory } from '../project';
|
|
5
|
+
import { SystemContainerFactory } from '@contember/engine-system-api';
|
|
6
|
+
import { ProjectConfigResolver } from '../config/projectConfigResolver';
|
|
7
|
+
interface ProjectGroupContainerFactoryArgs {
|
|
8
|
+
config: TenantConfig;
|
|
9
|
+
slug: string | undefined;
|
|
10
|
+
}
|
|
11
|
+
export declare class ProjectGroupContainerFactory {
|
|
12
|
+
private readonly providers;
|
|
13
|
+
private readonly systemContainerFactory;
|
|
14
|
+
private readonly tenantContainerFactory;
|
|
15
|
+
private readonly projectContainerFactoryFactory;
|
|
16
|
+
private readonly projectConfigResolver;
|
|
17
|
+
private readonly tenantGraphQLHandlerFactory;
|
|
18
|
+
private readonly systemGraphQLHandlerFactory;
|
|
19
|
+
constructor(providers: Providers, systemContainerFactory: SystemContainerFactory, tenantContainerFactory: TenantContainerFactory, projectContainerFactoryFactory: ProjectContainerFactoryFactory, projectConfigResolver: ProjectConfigResolver, tenantGraphQLHandlerFactory: TenantGraphQLHandlerFactory, systemGraphQLHandlerFactory: SystemGraphQLHandlerFactory);
|
|
20
|
+
create({ config, slug }: ProjectGroupContainerFactoryArgs): ProjectGroupContainer;
|
|
21
|
+
}
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=ProjectGroupContainer.d.ts.map
|
|
@@ -0,0 +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,EACrB,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,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;gBAN3B,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;CA8ExF"}
|