@contember/engine-server 1.1.0-beta.3 → 1.2.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/dist/src/MasterContainer.d.ts +12 -25
  2. package/dist/src/MasterContainer.d.ts.map +1 -1
  3. package/dist/src/MasterContainer.js +36 -80
  4. package/dist/src/MasterContainer.js.map +1 -1
  5. package/dist/src/bootstrap/Initializer.d.ts +3 -3
  6. package/dist/src/bootstrap/Initializer.d.ts.map +1 -1
  7. package/dist/src/bootstrap/Initializer.js +15 -6
  8. package/dist/src/bootstrap/Initializer.js.map +1 -1
  9. package/dist/src/config/config.d.ts +5 -4
  10. package/dist/src/config/config.d.ts.map +1 -1
  11. package/dist/src/config/config.js +2 -2
  12. package/dist/src/config/config.js.map +1 -1
  13. package/dist/src/config/configSchema.d.ts +45 -11
  14. package/dist/src/config/configSchema.d.ts.map +1 -1
  15. package/dist/src/config/configSchema.js +20 -18
  16. package/dist/src/config/configSchema.js.map +1 -1
  17. package/dist/src/config/configTemplate.d.ts.map +1 -1
  18. package/dist/src/config/configTemplate.js +23 -0
  19. package/dist/src/config/configTemplate.js.map +1 -1
  20. package/dist/src/index.d.ts +9 -3
  21. package/dist/src/index.d.ts.map +1 -1
  22. package/dist/src/index.js +23 -4
  23. package/dist/src/index.js.map +1 -1
  24. package/dist/src/project/ProjectContainer.js +1 -1
  25. package/dist/src/project/ProjectContainer.js.map +1 -1
  26. package/dist/src/project/ProjectContainerResolver.d.ts +6 -3
  27. package/dist/src/project/ProjectContainerResolver.d.ts.map +1 -1
  28. package/dist/src/project/ProjectContainerResolver.js +4 -16
  29. package/dist/src/project/ProjectContainerResolver.js.map +1 -1
  30. package/dist/src/projectGroup/ProjectGroupContainer.d.ts +2 -1
  31. package/dist/src/projectGroup/ProjectGroupContainer.d.ts.map +1 -1
  32. package/dist/src/projectGroup/ProjectGroupContainer.js +8 -4
  33. package/dist/src/projectGroup/ProjectGroupContainer.js.map +1 -1
  34. package/dist/src/projectGroup/ProjectGroupResolver.d.ts +7 -0
  35. package/dist/src/projectGroup/ProjectGroupResolver.d.ts.map +1 -0
  36. package/dist/src/projectGroup/ProjectGroupResolver.js +13 -0
  37. package/dist/src/projectGroup/ProjectGroupResolver.js.map +1 -0
  38. package/dist/src/start.js +15 -112
  39. package/dist/src/start.js.map +1 -1
  40. package/dist/src/tsconfig.tsbuildinfo +1 -1
  41. package/dist/src/utils/index.d.ts +0 -4
  42. package/dist/src/utils/index.d.ts.map +1 -1
  43. package/dist/src/utils/index.js +0 -4
  44. package/dist/src/utils/index.js.map +1 -1
  45. package/dist/src/utils/serverStartup.d.ts +31 -0
  46. package/dist/src/utils/serverStartup.d.ts.map +1 -0
  47. package/dist/src/utils/serverStartup.js +42 -0
  48. package/dist/src/utils/serverStartup.js.map +1 -0
  49. package/dist/src/utils/serverTermination.d.ts +12 -0
  50. package/dist/src/utils/serverTermination.d.ts.map +1 -0
  51. package/dist/src/utils/serverTermination.js +26 -0
  52. package/dist/src/utils/serverTermination.js.map +1 -0
  53. package/dist/tests/e2e/http.test.js +74 -157
  54. package/dist/tests/e2e/http.test.js.map +1 -1
  55. package/dist/tests/e2e/requests.d.ts +4 -0
  56. package/dist/tests/e2e/requests.d.ts.map +1 -0
  57. package/dist/tests/e2e/requests.js +59 -0
  58. package/dist/tests/e2e/requests.js.map +1 -0
  59. package/dist/tests/e2e/tester.d.ts +19 -0
  60. package/dist/tests/e2e/tester.d.ts.map +1 -0
  61. package/dist/tests/e2e/tester.js +99 -0
  62. package/dist/tests/e2e/tester.js.map +1 -0
  63. package/dist/tests/tsconfig.tsbuildinfo +1 -1
  64. package/esbuild.js +7 -14
  65. package/package.json +20 -20
  66. package/src/MasterContainer.ts +58 -110
  67. package/src/bootstrap/Initializer.ts +16 -6
  68. package/src/config/config.ts +7 -5
  69. package/src/config/configSchema.ts +30 -33
  70. package/src/config/configTemplate.ts +23 -0
  71. package/src/index.ts +15 -2
  72. package/src/project/ProjectContainer.ts +1 -1
  73. package/src/project/ProjectContainerResolver.ts +4 -17
  74. package/src/projectGroup/ProjectGroupContainer.ts +12 -3
  75. package/src/projectGroup/ProjectGroupResolver.ts +12 -0
  76. package/src/start.ts +18 -127
  77. package/src/utils/index.ts +0 -4
  78. package/src/utils/serverStartup.ts +42 -0
  79. package/src/utils/serverTermination.ts +20 -0
  80. package/tests/e2e/http.test.ts +84 -150
  81. package/tests/e2e/requests.ts +71 -0
  82. package/tests/e2e/tester.ts +118 -0
  83. package/alpine.dockerfile +0 -30
  84. package/debian.dockerfile +0 -27
  85. package/dist/src/http/CollectHttpMetricsMiddelware.d.ts +0 -5
  86. package/dist/src/http/CollectHttpMetricsMiddelware.d.ts.map +0 -1
  87. package/dist/src/http/CollectHttpMetricsMiddelware.js +0 -36
  88. package/dist/src/http/CollectHttpMetricsMiddelware.js.map +0 -1
  89. package/dist/src/http/ShowMetricsMiddleware.d.ts +0 -4
  90. package/dist/src/http/ShowMetricsMiddleware.d.ts.map +0 -1
  91. package/dist/src/http/ShowMetricsMiddleware.js +0 -20
  92. package/dist/src/http/ShowMetricsMiddleware.js.map +0 -1
  93. package/dist/src/http/index.d.ts +0 -3
  94. package/dist/src/http/index.d.ts.map +0 -1
  95. package/dist/src/http/index.js +0 -19
  96. package/dist/src/http/index.js.map +0 -1
  97. package/dist/src/projectGroup/ProjectGroupContainerResolver.d.ts +0 -12
  98. package/dist/src/projectGroup/ProjectGroupContainerResolver.d.ts.map +0 -1
  99. package/dist/src/projectGroup/ProjectGroupContainerResolver.js +0 -36
  100. package/dist/src/projectGroup/ProjectGroupContainerResolver.js.map +0 -1
  101. package/dist/src/utils/cluster.d.ts +0 -9
  102. package/dist/src/utils/cluster.d.ts.map +0 -1
  103. package/dist/src/utils/cluster.js +0 -47
  104. package/dist/src/utils/cluster.js.map +0 -1
  105. package/dist/src/utils/dbMetrics.d.ts +0 -16
  106. package/dist/src/utils/dbMetrics.d.ts.map +0 -1
  107. package/dist/src/utils/dbMetrics.js +0 -98
  108. package/dist/src/utils/dbMetrics.js.map +0 -1
  109. package/dist/src/utils/timeout.d.ts +0 -2
  110. package/dist/src/utils/timeout.d.ts.map +0 -1
  111. package/dist/src/utils/timeout.js +0 -8
  112. package/dist/src/utils/timeout.js.map +0 -1
  113. package/dist/src/utils/tuple.d.ts +0 -2
  114. package/dist/src/utils/tuple.d.ts.map +0 -1
  115. package/dist/src/utils/tuple.js +0 -6
  116. package/dist/src/utils/tuple.js.map +0 -1
  117. package/jasmine.json +0 -7
  118. package/src/http/CollectHttpMetricsMiddelware.ts +0 -32
  119. package/src/http/ShowMetricsMiddleware.ts +0 -12
  120. package/src/http/index.ts +0 -2
  121. package/src/projectGroup/ProjectGroupContainerResolver.ts +0 -47
  122. package/src/utils/cluster.ts +0 -40
  123. package/src/utils/dbMetrics.ts +0 -111
  124. package/src/utils/timeout.ts +0 -4
  125. package/src/utils/tuple.ts +0 -1
  126. package/tslint.json +0 -14
@@ -1,7 +1,3 @@
1
- export * from './cluster';
2
- export * from './dbMetrics';
3
1
  export * from './sentry';
4
2
  export * from './strings';
5
- export * from './timeout';
6
- export * from './tuple';
7
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA"}
@@ -14,10 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./cluster"), exports);
18
- __exportStar(require("./dbMetrics"), exports);
19
17
  __exportStar(require("./sentry"), exports);
20
18
  __exportStar(require("./strings"), exports);
21
- __exportStar(require("./timeout"), exports);
22
- __exportStar(require("./tuple"), exports);
23
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,8CAA2B;AAC3B,2CAAwB;AACxB,4CAAyB;AACzB,4CAAyB;AACzB,0CAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,4CAAyB"}
@@ -0,0 +1,31 @@
1
+ import { Plugin } from '@contember/engine-plugins';
2
+ import { Type } from '@contember/typesafe';
3
+ export declare const getServerVersion: () => string;
4
+ export declare const isDebugMode: () => boolean;
5
+ export declare const printStartInfo: ({ version, isDebug }: {
6
+ version: string;
7
+ isDebug: boolean;
8
+ }) => void;
9
+ export declare const resolveServerConfig: <T extends {
10
+ readonly port: number;
11
+ readonly http: {
12
+ readonly requestBodySize?: string | undefined;
13
+ };
14
+ readonly logging: {
15
+ sentry?: {
16
+ dsn: string;
17
+ } | undefined;
18
+ } | {
19
+ readonly sentry?: {
20
+ readonly dsn: string;
21
+ } | undefined;
22
+ };
23
+ }>({ plugins, serverConfigSchema }: {
24
+ plugins: Plugin[];
25
+ serverConfigSchema: Type<T>;
26
+ }) => Promise<{
27
+ serverConfig: T;
28
+ projectConfigResolver: import("../config/projectConfigResolver").ProjectConfigResolver;
29
+ tenantConfigResolver: import("..").TenantConfigResolver;
30
+ }>;
31
+ //# sourceMappingURL=serverStartup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverStartup.d.ts","sourceRoot":"","sources":["../../../src/utils/serverStartup.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAEnE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE1C,eAAO,MAAM,gBAAgB,QAAO,MAKnC,CAAA;AAED,eAAO,MAAM,WAAW,QAAO,OAAiD,CAAA;AAEhF,eAAO,MAAM,cAAc;aAAqC,MAAM;aAAW,OAAO;UAWvF,CAAA;AAED,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;aAA8E,MAAM,EAAE;;;;;;EAcrH,CAAA"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveServerConfig = exports.printStartInfo = exports.isDebugMode = exports.getServerVersion = void 0;
4
+ const path_1 = require("path");
5
+ const config_1 = require("../config/config");
6
+ const getServerVersion = () => {
7
+ const packageJsonFile = process.env.CONTEMBER_PACKAGE_JSON || (0, path_1.join)(__dirname, '../../../package.json');
8
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
9
+ const version = require(packageJsonFile).version;
10
+ return version;
11
+ };
12
+ exports.getServerVersion = getServerVersion;
13
+ const isDebugMode = () => process.env.NODE_ENV === 'development';
14
+ exports.isDebugMode = isDebugMode;
15
+ const printStartInfo = ({ version, isDebug }) => {
16
+ // eslint-disable-next-line no-console
17
+ console.log(`Starting Contember ${version}`);
18
+ // eslint-disable-next-line no-console
19
+ console.log(`NODE_ENV is set to ${process.env.NODE_ENV}`);
20
+ if (isDebug) {
21
+ // eslint-disable-next-line no-console
22
+ console.log('Starting Contember in debug mode');
23
+ // eslint-disable-next-line no-console
24
+ console.log('NEVER USE debug mode in production environment');
25
+ }
26
+ };
27
+ exports.printStartInfo = printStartInfo;
28
+ const resolveServerConfig = async ({ plugins, serverConfigSchema }) => {
29
+ const configProcessors = plugins
30
+ .map(it => (it.getConfigProcessor ? it.getConfigProcessor() : null))
31
+ .filter((it) => it !== null);
32
+ const configSources = [];
33
+ for (const configType of ['file', 'yaml', 'json']) {
34
+ const envValue = process.env['CONTEMBER_CONFIG_' + configType.toUpperCase()];
35
+ if (envValue) {
36
+ configSources.push({ type: configType, data: envValue });
37
+ }
38
+ }
39
+ return await (0, config_1.readConfig)(configSources, configProcessors, serverConfigSchema);
40
+ };
41
+ exports.resolveServerConfig = resolveServerConfig;
42
+ //# sourceMappingURL=serverStartup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverStartup.js","sourceRoot":"","sources":["../../../src/utils/serverStartup.ts"],"names":[],"mappings":";;;AAAA,+BAA2B;AAE3B,6CAAyE;AAGlE,MAAM,gBAAgB,GAAG,GAAW,EAAE;IAC5C,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,IAAA,WAAI,EAAC,SAAS,EAAE,uBAAuB,CAAC,CAAA;IACtG,8DAA8D;IAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,OAAO,CAAA;IAChD,OAAO,OAAO,CAAA;AACf,CAAC,CAAA;AALY,QAAA,gBAAgB,oBAK5B;AAEM,MAAM,WAAW,GAAG,GAAY,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAA;AAAnE,QAAA,WAAW,eAAwD;AAEzE,MAAM,cAAc,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAyC,EAAE,EAAE;IAC7F,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAA;IAC5C,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;IACzD,IAAI,OAAO,EAAE;QACZ,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAA;QAC/C,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAA;KAC7D;AACF,CAAC,CAAA;AAXY,QAAA,cAAc,kBAW1B;AAEM,MAAM,mBAAmB,GAAG,KAAK,EAA0B,EAAE,OAAO,EAAE,kBAAkB,EAAsD,EAAE,EAAE;IACxJ,MAAM,gBAAgB,GAAG,OAAO;SAC9B,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACnE,MAAM,CAAC,CAAC,EAAE,EAAyB,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAA;IAEpD,MAAM,aAAa,GAAmB,EAAE,CAAA;IACxC,KAAK,MAAM,UAAU,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAU,EAAE;QAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,CAAA;QAC5E,IAAI,QAAQ,EAAE;YACb,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;SACxD;KACD;IAED,OAAO,MAAM,IAAA,mBAAU,EAAC,aAAa,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,CAAA;AAC7E,CAAC,CAAA;AAdY,QAAA,mBAAmB,uBAc/B"}
@@ -0,0 +1,12 @@
1
+ declare const signals: {
2
+ SIGHUP: number;
3
+ SIGINT: number;
4
+ SIGTERM: number;
5
+ };
6
+ export declare type TerminationJob = (args: {
7
+ signal: keyof typeof signals;
8
+ code: number;
9
+ }) => Promise<void>;
10
+ export declare const listenOnProcessTermination: (jobs: TerminationJob[]) => void;
11
+ export {};
12
+ //# sourceMappingURL=serverTermination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverTermination.d.ts","sourceRoot":"","sources":["../../../src/utils/serverTermination.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,OAAO;;;;CAIZ,CAAA;AACD,oBAAY,cAAc,GAAG,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,OAAO,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AACpG,eAAO,MAAM,0BAA0B,SAAU,cAAc,EAAE,SAWhE,CAAA"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.listenOnProcessTermination = void 0;
7
+ const cluster_1 = __importDefault(require("cluster"));
8
+ const signals = {
9
+ SIGHUP: 1,
10
+ SIGINT: 2,
11
+ SIGTERM: 15,
12
+ };
13
+ const listenOnProcessTermination = (jobs) => {
14
+ for (const [signal, code] of Object.entries(signals)) {
15
+ process.on(signal, async () => {
16
+ // eslint-disable-next-line no-console
17
+ console.log(`Process ${process.pid} received a ${signal} signal, executing ${jobs.length} termination jobs`);
18
+ await Promise.allSettled(jobs.map(it => it({ signal: signal, code })));
19
+ // eslint-disable-next-line no-console
20
+ console.log(cluster_1.default.isMaster ? `All terminated, exiting` : 'All terminated, exiting a worker');
21
+ process.exit(128 + code);
22
+ });
23
+ }
24
+ };
25
+ exports.listenOnProcessTermination = listenOnProcessTermination;
26
+ //# sourceMappingURL=serverTermination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverTermination.js","sourceRoot":"","sources":["../../../src/utils/serverTermination.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA6B;AAE7B,MAAM,OAAO,GAAG;IACf,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,OAAO,EAAE,EAAE;CACX,CAAA;AAEM,MAAM,0BAA0B,GAAG,CAAC,IAAsB,EAAE,EAAE;IACpE,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACrD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;YAC7B,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,CAAC,GAAG,eAAe,MAAM,sBAAsB,IAAI,CAAC,MAAM,mBAAmB,CAAC,CAAA;YAC5G,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAA8B,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YAC9F,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,iBAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAA;YAC9F,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;KACF;AACF,CAAC,CAAA;AAXY,QAAA,0BAA0B,8BAWtC"}
@@ -1,132 +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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
4
  };
28
5
  Object.defineProperty(exports, "__esModule", { value: true });
29
6
  const supertest_1 = __importDefault(require("supertest"));
30
- const nodeAssert = __importStar(require("assert"));
31
7
  const vitest_1 = require("vitest");
32
- const schema_migrations_1 = require("@contember/schema-migrations");
33
- const engine_api_tester_1 = require("@contember/engine-api-tester");
34
- const rootToken = String(process.env.CONTEMBER_ROOT_TOKEN);
35
- const loginToken = String(process.env.CONTEMBER_LOGIN_TOKEN);
36
- const apiUrl = String(process.env.CONTEMBER_API_URL);
37
- let projectSlug = '';
38
- // Used to allow prettier formatting of GraphQL queries
39
- const gql = (strings) => {
40
- nodeAssert.strictEqual(strings.length, 1);
41
- return strings[0];
42
- };
43
- const executeGraphql = (query, options = {}) => {
44
- return (0, supertest_1.default)(apiUrl)
45
- .post(options.path || `/content/${projectSlug}/live`)
46
- .set('Authorization', 'Bearer ' + (options.authorizationToken || rootToken))
47
- .send({
48
- query,
49
- variables: options.variables || {},
50
- });
51
- };
52
- const signIn = async (email, password) => {
53
- const response2 = await executeGraphql(gql `
54
- mutation ($email: String!, $password: String!) {
55
- signIn(email: $email, password: $password) {
56
- ok
57
- result {
58
- token
59
- }
60
- }
61
- }
62
- `, {
63
- variables: { email, password },
64
- authorizationToken: loginToken,
65
- path: '/tenant',
66
- });
67
- return response2.body.data.signIn.result.token;
68
- };
69
- (0, vitest_1.beforeAll)(async () => {
70
- projectSlug = 'test' + Date.now();
71
- const result = await executeGraphql(`
72
- mutation($projectSlug: String!, $config: Json!) {
73
- createProject(projectSlug: $projectSlug, config: $config) {
74
- ok
75
- error { code }
76
- }
77
- }
78
- `, {
79
- path: '/tenant',
80
- variables: {
81
- projectSlug: projectSlug,
82
- config: {},
83
- },
84
- })
85
- .expect(response => {
86
- vitest_1.assert.isOk(response.body);
87
- vitest_1.assert.isOk(response.body.data);
88
- vitest_1.assert.isOk(response.body.data.createProject);
89
- if (!response.body.data.createProject.ok) {
90
- vitest_1.assert.equal(response.body.data.createProject.error.code, 'ALREADY_EXISTS');
91
- }
92
- })
93
- .expect(200);
94
- if (!result.body.data.createProject.ok) {
95
- return;
96
- }
97
- const migrationFilesManager = new schema_migrations_1.MigrationsResolver(schema_migrations_1.MigrationFilesManager.createForProject((0, engine_api_tester_1.getExampleProjectDirectory)(), 'sample'));
98
- const migrations = await migrationFilesManager.getMigrations();
99
- vitest_1.assert.isAtLeast(migrations.length, 2);
100
- await executeGraphql(`
101
- mutation($migrations: [Migration!]!) {
102
- migrate(migrations: $migrations) {
103
- ok
104
- error { code }
105
- }
106
- }
107
- `, {
108
- path: '/system/' + projectSlug,
109
- variables: {
110
- migrations,
111
- },
112
- })
113
- .expect(response => {
114
- vitest_1.assert.deepStrictEqual(response.body.data, {
115
- migrate: {
116
- error: null,
117
- ok: true,
118
- },
119
- });
120
- });
121
- });
8
+ const schema_definition_1 = require("@contember/schema-definition");
9
+ const tester_1 = require("./tester");
10
+ const requests_1 = require("./requests");
122
11
  (0, vitest_1.test)('show homepage', async () => {
123
- await (0, supertest_1.default)(apiUrl)
12
+ await (0, supertest_1.default)(tester_1.apiUrl)
124
13
  .get('/')
125
14
  .expect(200)
126
15
  .expect('App is running');
127
16
  });
17
+ var TagModel;
18
+ (function (TagModel) {
19
+ class Tag {
20
+ constructor() {
21
+ this.label = schema_definition_1.SchemaDefinition.stringColumn();
22
+ }
23
+ }
24
+ TagModel.Tag = Tag;
25
+ })(TagModel || (TagModel = {}));
128
26
  (0, vitest_1.test)('Content API: create & read tag', async () => {
129
- await executeGraphql(gql `
27
+ const tester = await (0, tester_1.createTester)((0, schema_definition_1.createSchema)(TagModel));
28
+ await tester((0, tester_1.gql) `
130
29
  mutation {
131
30
  createTag(data: { label: "graphql" }) {
132
31
  ok
@@ -141,7 +40,7 @@ const signIn = async (email, password) => {
141
40
  });
142
41
  })
143
42
  .expect(200);
144
- await executeGraphql(gql `
43
+ await tester((0, tester_1.gql) `
145
44
  query {
146
45
  listTag(filter: { label: { eq: "graphql" } }) {
147
46
  label
@@ -160,14 +59,15 @@ const signIn = async (email, password) => {
160
59
  .expect(200);
161
60
  });
162
61
  (0, vitest_1.test)('Content API: X-Contember-Ref header', async () => {
163
- await executeGraphql(gql `
62
+ const tester = await (0, tester_1.createTester)((0, schema_definition_1.createSchema)(TagModel));
63
+ await tester((0, tester_1.gql) `
164
64
  mutation {
165
65
  createTag(data: { label: "typescript" }) {
166
66
  ok
167
67
  }
168
68
  }
169
69
  `).expect(200);
170
- const response = await executeGraphql(gql `
70
+ const response = await tester((0, tester_1.gql) `
171
71
  query {
172
72
  listTag(filter: { label: { eq: "typescript" } }) {
173
73
  label
@@ -186,7 +86,7 @@ const signIn = async (email, password) => {
186
86
  })
187
87
  .expect(200);
188
88
  const eventKey = response.get('X-Contember-Ref');
189
- await executeGraphql(gql `
89
+ await tester((0, tester_1.gql) `
190
90
  query {
191
91
  listTag {
192
92
  label
@@ -196,7 +96,7 @@ const signIn = async (email, password) => {
196
96
  .set('X-Contember-Ref', eventKey)
197
97
  .expect(304);
198
98
  // ignored for mutation
199
- await executeGraphql(gql `
99
+ await tester((0, tester_1.gql) `
200
100
  mutation {
201
101
  createTag(data: { label: "typescript" }) {
202
102
  ok
@@ -207,7 +107,8 @@ const signIn = async (email, password) => {
207
107
  .expect(200);
208
108
  });
209
109
  (0, vitest_1.test)('Content API: invalid schema error', async () => {
210
- await executeGraphql(gql `
110
+ const tester = await (0, tester_1.createTester)((0, schema_definition_1.createSchema)(TagModel));
111
+ await tester((0, tester_1.gql) `
211
112
  mutation {
212
113
  createFoo(data: { label: "graphql" }) {
213
114
  ok
@@ -216,31 +117,15 @@ const signIn = async (email, password) => {
216
117
  `)
217
118
  .expect(400)
218
119
  .expect(response => {
219
- vitest_1.assert.deepStrictEqual(response.body.errors[0].message, 'Cannot query field "createFoo" on type "Mutation". Did you mean "createPost" or "createTag"?');
120
+ vitest_1.assert.deepStrictEqual(response.body.errors[0].message, 'Cannot query field "createFoo" on type "Mutation". Did you mean "createTag"?');
220
121
  });
221
122
  });
222
123
  (0, vitest_1.test)('Tenant API: sign up, add to a project and check project access', async () => {
124
+ const tester = await (0, tester_1.createTester)((0, schema_definition_1.createSchema)(TagModel));
223
125
  const email = `john+${Date.now()}@doe.com`;
224
- const signUpResponse = await executeGraphql(gql `
225
- mutation($email: String!) {
226
- signUp(email: $email, password: "123456") {
227
- ok
228
- result {
229
- person {
230
- identity {
231
- id
232
- }
233
- }
234
- }
235
- }
236
- }
237
- `, {
238
- path: '/tenant',
239
- variables: { email },
240
- }).expect(200);
241
- const identityId = signUpResponse.body.data.signUp.result.person.identity.id;
242
- const authKey = await signIn(email, '123456');
243
- await executeGraphql(gql `
126
+ const identityId = await (0, requests_1.signUp)(email);
127
+ const authKey = await (0, requests_1.signIn)(email);
128
+ await tester((0, tester_1.gql) `
244
129
  query {
245
130
  listTag {
246
131
  id
@@ -248,28 +133,60 @@ const signIn = async (email, password) => {
248
133
  }
249
134
  `, { authorizationToken: authKey })
250
135
  .expect(404)
251
- .expect({ errors: [{ message: `Project ${projectSlug} NOT found`, code: 404 }] });
252
- await executeGraphql(gql `
253
- mutation ($identity: String!, $projectSlug: String!) {
254
- addProjectMember(identityId: $identity, projectSlug: $projectSlug, memberships: [{ role: "admin", variables: [] }]) {
255
- ok
136
+ .expect({ errors: [{ message: `Project ${tester.projectSlug} NOT found`, code: 404 }] });
137
+ await (0, requests_1.addProjectMember)(identityId, tester.projectSlug);
138
+ await tester((0, tester_1.gql) `
139
+ query {
140
+ listTag {
141
+ id
256
142
  }
257
143
  }
258
- `, { path: '/tenant', variables: { identity: identityId, projectSlug } })
259
- .expect(200)
144
+ `, { authorizationToken: authKey })
260
145
  .expect(response => {
261
- vitest_1.assert.deepStrictEqual(response.body.data, { addProjectMember: { ok: true } });
262
- });
263
- await executeGraphql(gql `
146
+ vitest_1.assert.deepStrictEqual(response.body.data, { listTag: [] });
147
+ })
148
+ .expect(200);
149
+ });
150
+ (0, vitest_1.test)('Content API: assume membership', async () => {
151
+ const tester = await (0, tester_1.createTester)((0, schema_definition_1.createSchema)(TagModel, schema => {
152
+ return {
153
+ ...schema,
154
+ acl: {
155
+ roles: {
156
+ test: {
157
+ entities: {},
158
+ variables: {},
159
+ content: {
160
+ assumeMembership: {
161
+ admin: {},
162
+ },
163
+ },
164
+ },
165
+ },
166
+ },
167
+ };
168
+ }));
169
+ const email = `john+${Date.now()}@doe.com`;
170
+ const identityId = await (0, requests_1.signUp)(email);
171
+ const authKey = await (0, requests_1.signIn)(email);
172
+ await (0, requests_1.addProjectMember)(identityId, tester.projectSlug, 'test');
173
+ await tester((0, tester_1.gql) `
264
174
  query {
265
- listAuthor {
175
+ listTag {
266
176
  id
267
177
  }
268
178
  }
269
179
  `, { authorizationToken: authKey })
270
- .expect(response => {
271
- vitest_1.assert.deepStrictEqual(response.body.data, { listAuthor: [] });
272
- })
180
+ .expect(400);
181
+ await tester((0, tester_1.gql) `
182
+ query {
183
+ listTag {
184
+ id
185
+ }
186
+ }
187
+ `, { authorizationToken: authKey })
188
+ .set('X-Contember-assume-membership', JSON.stringify({ memberships: [{ role: 'admin', variables: [] }] }))
189
+ .expect({ data: { listTag: [] } })
273
190
  .expect(200);
274
191
  });
275
192
  //# sourceMappingURL=http.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.test.js","sourceRoot":"","sources":["../../../tests/e2e/http.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.test.js","sourceRoot":"","sources":["../../../tests/e2e/http.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare const signIn: (email: string, password?: string) => Promise<string>;
2
+ export declare const signUp: (email: string, password?: string) => Promise<any>;
3
+ export declare const addProjectMember: (identityId: string, projectSlug: string, role?: string) => Promise<void>;
4
+ //# sourceMappingURL=requests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requests.d.ts","sourceRoot":"","sources":["../../../tests/e2e/requests.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM,UAAiB,MAAM,wBAAwB,QAAQ,MAAM,CAoB/E,CAAA;AAGD,eAAO,MAAM,MAAM,UAAiB,MAAM,oCAuBzC,CAAA;AAGD,eAAO,MAAM,gBAAgB,eAAsB,MAAM,eAAe,MAAM,iCAkB7E,CAAA"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addProjectMember = exports.signUp = exports.signIn = void 0;
4
+ const tester_1 = require("./tester");
5
+ const vitest_1 = require("vitest");
6
+ const signIn = async (email, password = '123456') => {
7
+ const response = await (0, tester_1.executeGraphql)('/tenant', (0, tester_1.gql) `
8
+ mutation ($email: String!, $password: String!) {
9
+ signIn(email: $email, password: $password) {
10
+ ok
11
+ result {
12
+ token
13
+ }
14
+ }
15
+ }
16
+ `, {
17
+ variables: { email, password },
18
+ authorizationToken: tester_1.loginToken,
19
+ }).expect(200);
20
+ return response.body.data.signIn.result.token;
21
+ };
22
+ exports.signIn = signIn;
23
+ const signUp = async (email, password = '123456') => {
24
+ const signUpResponse = await (0, tester_1.executeGraphql)('/tenant', (0, tester_1.gql) `
25
+ mutation($email: String!, $password: String!) {
26
+ signUp(email: $email, password: $password) {
27
+ ok
28
+ result {
29
+ person {
30
+ identity {
31
+ id
32
+ }
33
+ }
34
+ }
35
+ }
36
+ }
37
+ `, {
38
+ variables: { email, password },
39
+ }).expect(200);
40
+ return signUpResponse.body.data.signUp.result.person.identity.id;
41
+ };
42
+ exports.signUp = signUp;
43
+ const addProjectMember = async (identityId, projectSlug, role = 'admin') => {
44
+ await (0, tester_1.executeGraphql)('/tenant', (0, tester_1.gql) `
45
+ mutation ($identity: String!, $projectSlug: String!, $role: String!) {
46
+ addProjectMember(identityId: $identity, projectSlug: $projectSlug, memberships: [{ role: $role, variables: [] }]) {
47
+ ok
48
+ }
49
+ }
50
+ `, {
51
+ variables: { identity: identityId, projectSlug, role },
52
+ })
53
+ .expect(200)
54
+ .expect(response => {
55
+ vitest_1.assert.deepStrictEqual(response.body.data, { addProjectMember: { ok: true } });
56
+ });
57
+ };
58
+ exports.addProjectMember = addProjectMember;
59
+ //# sourceMappingURL=requests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requests.js","sourceRoot":"","sources":["../../../tests/e2e/requests.ts"],"names":[],"mappings":";;;AAAA,qCAA0D;AAC1D,mCAA+B;AAExB,MAAM,MAAM,GAAG,KAAK,EAAE,KAAa,EAAE,QAAQ,GAAG,QAAQ,EAAmB,EAAE;IACnF,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAc,EACpC,SAAS,EACT,IAAA,YAAG,EAAA;;;;;;;;;GASF,EACD;QACC,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC9B,kBAAkB,EAAE,mBAAU;KAC9B,CACD,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAEb,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAA;AAC9C,CAAC,CAAA;AApBY,QAAA,MAAM,UAoBlB;AAGM,MAAM,MAAM,GAAG,KAAK,EAAE,KAAa,EAAE,QAAQ,GAAG,QAAQ,EAAE,EAAE;IAClE,MAAM,cAAc,GAAG,MAAM,IAAA,uBAAc,EAC1C,SAAS,EACT,IAAA,YAAG,EAAA;;;;;;;;;;;;;GAaF,EACD;QACC,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;KAC9B,CACD,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAEb,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAA;AACjE,CAAC,CAAA;AAvBY,QAAA,MAAM,UAuBlB;AAGM,MAAM,gBAAgB,GAAG,KAAK,EAAE,UAAkB,EAAE,WAAmB,EAAE,IAAI,GAAG,OAAO,EAAE,EAAE;IACjG,MAAM,IAAA,uBAAc,EACnB,SAAS,EACT,IAAA,YAAG,EAAA;;;;;;GAMF,EACD;QACC,SAAS,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE;KACtD,CACD;SACC,MAAM,CAAC,GAAG,CAAC;SACX,MAAM,CAAC,QAAQ,CAAC,EAAE;QAClB,eAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;IAC/E,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAlBY,QAAA,gBAAgB,oBAkB5B"}
@@ -0,0 +1,19 @@
1
+ import supertest from 'supertest';
2
+ import { Schema } from '@contember/schema';
3
+ export declare const rootToken: string;
4
+ export declare const loginToken: string;
5
+ export declare const apiUrl: string;
6
+ export declare const gql: (strings: TemplateStringsArray) => string;
7
+ export declare const executeGraphql: (path: string, query: string, options: {
8
+ authorizationToken?: string;
9
+ variables?: Record<string, any>;
10
+ }) => supertest.Test;
11
+ export declare const createTester: (schema: Schema) => Promise<{
12
+ (query: string, options?: {
13
+ path?: string;
14
+ authorizationToken?: string;
15
+ variables?: Record<string, any>;
16
+ }): supertest.Test;
17
+ projectSlug: string;
18
+ }>;
19
+ //# sourceMappingURL=tester.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tester.d.ts","sourceRoot":"","sources":["../../../tests/e2e/tester.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAY1C,eAAO,MAAM,SAAS,QAA2C,CAAA;AACjE,eAAO,MAAM,UAAU,QAA4C,CAAA;AACnE,eAAO,MAAM,MAAM,QAAwC,CAAA;AAG3D,eAAO,MAAM,GAAG,YAAa,oBAAoB,WAGhD,CAAA;AAGD,eAAO,MAAM,cAAc,SACpB,MAAM,SACL,MAAM,WACJ;IAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,MAAM,EAAE,GAAG,CAAC,CAAA;CAAE,mBASzE,CAAA;AAmED,eAAO,MAAM,YAAY,WAAkB,MAAM;YAOxC,MAAM,YACJ;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE;;EAKzF,CAAA"}