@contember/engine-server 1.4.0-rc.8 → 2.0.0-alpha.8

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 (110) hide show
  1. package/dist/development/src/cluster.cjs +87 -0
  2. package/dist/development/src/cluster.cjs.map +1 -0
  3. package/dist/development/src/cluster.js +87 -0
  4. package/dist/development/src/cluster.js.map +1 -0
  5. package/dist/development/src/loadPlugins.cjs +9 -0
  6. package/dist/development/src/loadPlugins.cjs.map +1 -0
  7. package/dist/development/src/loadPlugins.js +10 -0
  8. package/dist/development/src/loadPlugins.js.map +1 -0
  9. package/dist/development/src/utils.cjs +7 -0
  10. package/dist/development/src/utils.cjs.map +1 -0
  11. package/dist/development/src/utils.js +7 -0
  12. package/dist/development/src/utils.js.map +1 -0
  13. package/dist/development/start.cjs +152 -0
  14. package/dist/development/start.cjs.map +1 -0
  15. package/dist/development/start.js +134 -0
  16. package/dist/development/start.js.map +1 -0
  17. package/dist/production/src/cluster.cjs +87 -0
  18. package/dist/production/src/cluster.cjs.map +1 -0
  19. package/dist/production/src/cluster.js +87 -0
  20. package/dist/production/src/cluster.js.map +1 -0
  21. package/dist/production/src/loadPlugins.cjs +9 -0
  22. package/dist/production/src/loadPlugins.cjs.map +1 -0
  23. package/dist/production/src/loadPlugins.js +10 -0
  24. package/dist/production/src/loadPlugins.js.map +1 -0
  25. package/dist/production/src/utils.cjs +7 -0
  26. package/dist/production/src/utils.cjs.map +1 -0
  27. package/dist/production/src/utils.js +7 -0
  28. package/dist/production/src/utils.js.map +1 -0
  29. package/dist/production/start.cjs +152 -0
  30. package/dist/production/start.cjs.map +1 -0
  31. package/dist/production/start.js +134 -0
  32. package/dist/production/start.js.map +1 -0
  33. package/dist/types/cluster.d.ts +16 -0
  34. package/dist/types/cluster.d.ts.map +1 -0
  35. package/dist/{src → types}/loadPlugins.d.ts.map +1 -1
  36. package/dist/types/tsconfig.tsbuildinfo +1 -0
  37. package/dist/types/utils.d.ts +2 -0
  38. package/dist/types/utils.d.ts.map +1 -0
  39. package/esbuild.cjs +42 -0
  40. package/package.json +28 -14
  41. package/src/cluster.ts +95 -0
  42. package/src/loadPlugins.ts +2 -1
  43. package/src/start.ts +128 -17
  44. package/src/tsconfig.json +2 -1
  45. package/src/utils.ts +4 -0
  46. package/tsconfig.json +0 -1
  47. package/types/prom-client/index.d.ts +17 -0
  48. package/dist/src/loadPlugins.js +0 -12
  49. package/dist/src/loadPlugins.js.map +0 -1
  50. package/dist/src/start.js +0 -47
  51. package/dist/src/start.js.map +0 -1
  52. package/dist/src/tsconfig.tsbuildinfo +0 -1
  53. package/dist/tests/e2e/acl-condition-variable.test.d.ts +0 -2
  54. package/dist/tests/e2e/acl-condition-variable.test.d.ts.map +0 -1
  55. package/dist/tests/e2e/acl-condition-variable.test.js +0 -77
  56. package/dist/tests/e2e/acl-condition-variable.test.js.map +0 -1
  57. package/dist/tests/e2e/assume-identity.test.d.ts +0 -2
  58. package/dist/tests/e2e/assume-identity.test.d.ts.map +0 -1
  59. package/dist/tests/e2e/assume-identity.test.js +0 -109
  60. package/dist/tests/e2e/assume-identity.test.js.map +0 -1
  61. package/dist/tests/e2e/assume-membership.test.d.ts +0 -2
  62. package/dist/tests/e2e/assume-membership.test.d.ts.map +0 -1
  63. package/dist/tests/e2e/assume-membership.test.js +0 -58
  64. package/dist/tests/e2e/assume-membership.test.js.map +0 -1
  65. package/dist/tests/e2e/content-api-basic.test.d.ts +0 -2
  66. package/dist/tests/e2e/content-api-basic.test.d.ts.map +0 -1
  67. package/dist/tests/e2e/content-api-basic.test.js +0 -50
  68. package/dist/tests/e2e/content-api-basic.test.js.map +0 -1
  69. package/dist/tests/e2e/content-invalid-schema.test.d.ts +0 -2
  70. package/dist/tests/e2e/content-invalid-schema.test.d.ts.map +0 -1
  71. package/dist/tests/e2e/content-invalid-schema.test.js +0 -29
  72. package/dist/tests/e2e/content-invalid-schema.test.js.map +0 -1
  73. package/dist/tests/e2e/homepage.test.d.ts +0 -2
  74. package/dist/tests/e2e/homepage.test.d.ts.map +0 -1
  75. package/dist/tests/e2e/homepage.test.js +0 -15
  76. package/dist/tests/e2e/homepage.test.js.map +0 -1
  77. package/dist/tests/e2e/tenant-member-access.test.d.ts +0 -2
  78. package/dist/tests/e2e/tenant-member-access.test.d.ts.map +0 -1
  79. package/dist/tests/e2e/tenant-member-access.test.js +0 -43
  80. package/dist/tests/e2e/tenant-member-access.test.js.map +0 -1
  81. package/dist/tests/e2e/x-contember-ref.test.d.ts +0 -2
  82. package/dist/tests/e2e/x-contember-ref.test.d.ts.map +0 -1
  83. package/dist/tests/e2e/x-contember-ref.test.js +0 -63
  84. package/dist/tests/e2e/x-contember-ref.test.js.map +0 -1
  85. package/dist/tests/src/requests.d.ts +0 -5
  86. package/dist/tests/src/requests.d.ts.map +0 -1
  87. package/dist/tests/src/requests.js +0 -68
  88. package/dist/tests/src/requests.js.map +0 -1
  89. package/dist/tests/src/tester.d.ts +0 -19
  90. package/dist/tests/src/tester.d.ts.map +0 -1
  91. package/dist/tests/src/tester.js +0 -99
  92. package/dist/tests/src/tester.js.map +0 -1
  93. package/dist/tests/tsconfig.tsbuildinfo +0 -1
  94. package/esbuild.js +0 -7
  95. package/tests/e2e/acl-condition-variable.test.ts +0 -74
  96. package/tests/e2e/assume-identity.test.ts +0 -126
  97. package/tests/e2e/assume-membership.test.ts +0 -64
  98. package/tests/e2e/content-api-basic.test.ts +0 -51
  99. package/tests/e2e/content-invalid-schema.test.ts +0 -31
  100. package/tests/e2e/homepage.test.ts +0 -10
  101. package/tests/e2e/tenant-member-access.test.ts +0 -51
  102. package/tests/e2e/x-contember-ref.test.ts +0 -71
  103. package/tests/src/requests.ts +0 -81
  104. package/tests/src/tester.ts +0 -118
  105. package/tests/start-server.sh +0 -16
  106. package/tests/tsconfig.json +0 -11
  107. package/vite.config.js +0 -3
  108. /package/dist/{src → types}/loadPlugins.d.ts +0 -0
  109. /package/dist/{src → types}/start.d.ts +0 -0
  110. /package/dist/{src → types}/start.d.ts.map +0 -0
package/esbuild.cjs ADDED
@@ -0,0 +1,42 @@
1
+ const path = require('path')
2
+ const esbuild = require('esbuild')
3
+ const {nodeExternalsPlugin} = require('esbuild-node-externals');
4
+ const glob = require('fast-glob')
5
+
6
+ const root = path.dirname(path.dirname(__dirname))
7
+
8
+ ;(async () => {
9
+ const packageJsonFiles = await glob('packages/*/package.json')
10
+ const buildServer = entrypoint => esbuild.build({
11
+ entryPoints: [entrypoint],
12
+ bundle: true,
13
+ platform: 'node',
14
+ format: 'esm',
15
+ sourcemap: 'external',
16
+ outfile: './server/server.js',
17
+ plugins: [
18
+ nodeExternalsPlugin({
19
+ packagePath: packageJsonFiles,
20
+ allowList: it => it.startsWith('@contember/')
21
+ }),
22
+ {
23
+ name: 'resolve contember',
24
+ setup(build) {
25
+ build.onResolve({filter: /^@contember\/.+$/}, args => {
26
+ const pkg = args.path.match(/@contember\/(.+)/)[1]
27
+ return {path: path.join(root, 'packages', pkg, pkg.includes('/') ? 'index.ts' : 'src/index.ts')}
28
+ })
29
+ },
30
+ },
31
+ ],
32
+ })
33
+
34
+ await buildServer('./packages/engine-server/src/start.ts')
35
+
36
+ })()
37
+ .catch(e => {
38
+ console.error(e)
39
+ process.exit(1)
40
+ })
41
+
42
+
package/package.json CHANGED
@@ -1,26 +1,40 @@
1
1
  {
2
2
  "name": "@contember/engine-server",
3
- "version": "1.4.0-rc.8",
3
+ "version": "2.0.0-alpha.8",
4
4
  "license": "Apache-2.0",
5
- "main": "dist/src/index.js",
6
- "typings": "dist/src/index.d.ts",
7
- "scripts": {
8
- "test-e2e": "vitest --dir ./tests/e2e --no-threads"
5
+ "main": "./dist/production/index.js",
6
+ "typings": "./dist/types/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "import": {
10
+ "types": "./dist/types/index.d.ts",
11
+ "development": "./dist/development/index.js",
12
+ "production": "./dist/production/index.js",
13
+ "typescript": "./src/index.ts",
14
+ "default": "./dist/production/index.js"
15
+ },
16
+ "require": {
17
+ "types": "./dist/types/index.d.ts",
18
+ "development": "./dist/development/index.cjs",
19
+ "production": "./dist/production/index.cjs",
20
+ "typescript": "./src/index.ts",
21
+ "default": "./dist/production/index.cjs"
22
+ }
23
+ }
9
24
  },
10
25
  "dependencies": {
11
- "@contember/engine-http": "1.4.0-rc.8",
12
- "@contember/engine-plugins": "1.4.0-rc.8",
13
- "@contember/engine-s3-plugin": "1.4.0-rc.8",
14
- "@contember/engine-vimeo-plugin": "1.4.0-rc.8",
26
+ "@contember/engine-actions": "2.0.0-alpha.8",
27
+ "@contember/engine-http": "2.0.0-alpha.8",
28
+ "@contember/engine-plugins": "2.0.0-alpha.8",
29
+ "@contember/engine-s3-plugin": "2.0.0-alpha.8",
30
+ "@contember/engine-vimeo-plugin": "2.0.0-alpha.8",
15
31
  "graphql": "^16.8.1",
16
32
  "pg": "^8.11.3",
17
33
  "uuid": "^9.0.1"
18
34
  },
19
35
  "devDependencies": {
20
- "@contember/engine-api-tester": "1.4.0-rc.8",
21
36
  "@types/koa-compress": "^4.0.6",
22
- "@types/node": "^20.9.0",
23
- "@types/supertest": "^2.0.16",
24
- "supertest": "^6.3.3"
25
- }
37
+ "@types/node": "^20.9.0"
38
+ },
39
+ "type": "module"
26
40
  }
package/src/cluster.ts ADDED
@@ -0,0 +1,95 @@
1
+ import cluster, { Worker } from 'node:cluster'
2
+ import { timeout } from './utils'
3
+
4
+ export const getClusterProcessType = (isClusterMode: boolean): ProcessType =>
5
+ !isClusterMode ? 'singleNode' : cluster.isMaster ? 'clusterMaster' : 'clusterWorker'
6
+
7
+ export type ProcessType =
8
+ | 'singleNode'
9
+ | 'clusterMaster'
10
+ | 'clusterWorker'
11
+
12
+ const MSG_WORKER_STARTED = 'msg_worker_started'
13
+
14
+ export const waitForWorker = (worker: Worker, timeoutMs: number) => {
15
+ let ok = false
16
+ return Promise.race([
17
+ new Promise(async resolve => {
18
+ const listener = (message: any) => {
19
+ if ('type' in message && message.type === MSG_WORKER_STARTED) {
20
+ ok = true
21
+ resolve(null)
22
+ worker.removeListener('message', listener)
23
+ }
24
+ }
25
+ await worker.on('message', listener)
26
+ }),
27
+ timeout(timeoutMs).then(() => {
28
+ if (!ok) {
29
+ throw new Error('Worker start timed out')
30
+ }
31
+ return true
32
+ }),
33
+ ])
34
+ }
35
+
36
+ export const notifyWorkerStarted = () =>
37
+ process.send?.({
38
+ type: MSG_WORKER_STARTED,
39
+ })
40
+
41
+ export class WorkerManager {
42
+
43
+ private isTerminating = false
44
+
45
+ private workers: Set<Worker> = new Set()
46
+
47
+ public async start({ workerCount, env }: { workerCount: number; env?: any }): Promise<void> {
48
+ if (this.isTerminating) {
49
+ throw new Error(`Worker manager is terminating`)
50
+ }
51
+ for (let i = 0; i < workerCount; i++) {
52
+ await this.startWorker(env)
53
+ if (this.isTerminating) {
54
+ return
55
+ }
56
+ }
57
+ }
58
+
59
+ private async startWorker(env?: any) {
60
+ const worker = cluster.fork(env)
61
+ worker.on('exit', async (code, signal) => {
62
+ this.workers.delete(worker)
63
+ if (!this.isTerminating) {
64
+ // eslint-disable-next-line no-console
65
+ console.log(`Worker ${worker.process.pid} died with signal ${signal}, restarting`)
66
+ await timeout(2000)
67
+ await this.startWorker(env)
68
+ }
69
+ })
70
+ this.workers.add(worker)
71
+ await waitForWorker(worker, 15000)
72
+ }
73
+
74
+ public async terminate(signal: NodeJS.Signals): Promise<void> {
75
+ if (this.isTerminating) {
76
+ throw new Error(`Worker manager is terminating`)
77
+ }
78
+ this.isTerminating = true
79
+ await Promise.allSettled(Array.from(this.workers).map(async it => {
80
+ if (!it) {
81
+ return
82
+ }
83
+ // eslint-disable-next-line no-console
84
+ console.log(`Terminating worker ${it.process.pid}`)
85
+ const disconnectPromise = new Promise(resolve => it.once('disconnect', resolve))
86
+ it.disconnect()
87
+ await disconnectPromise
88
+ const killPromise = new Promise(resolve => it.once('exit', resolve))
89
+ it.kill(signal)
90
+ await killPromise
91
+ // eslint-disable-next-line no-console
92
+ console.log(`Worker ${it.process.pid} terminated`)
93
+ }))
94
+ }
95
+ }
@@ -1,7 +1,8 @@
1
+ import ActionsPlugin from '@contember/engine-actions'
1
2
  import { Plugin } from '@contember/engine-plugins'
2
3
  import S3Plugin from '@contember/engine-s3-plugin'
3
4
  import VimeoPlugin from '@contember/engine-vimeo-plugin'
4
5
 
5
6
  export default function loadPlugins(): Promise<Plugin[]> {
6
- return Promise.resolve([new S3Plugin(), new VimeoPlugin()])
7
+ return Promise.resolve([new S3Plugin(), new VimeoPlugin(), new ActionsPlugin()])
7
8
  }
package/src/start.ts CHANGED
@@ -2,13 +2,21 @@
2
2
 
3
3
  import {
4
4
  createContainer,
5
- createDefaultLogger, createSentryLoggerHandler,
5
+ createDefaultLogger,
6
+ createSentryLoggerHandler,
7
+ getServerVersion,
8
+ isDebugMode,
6
9
  listenOnProcessTermination,
10
+ printStartInfo,
11
+ resolveServerConfig,
7
12
  serverConfigSchema,
8
13
  TerminationJob,
9
- getServerVersion, isDebugMode, printStartInfo, resolveServerConfig,
10
14
  } from '@contember/engine-http'
11
15
  import loadPlugins from './loadPlugins'
16
+ import cluster from 'node:cluster'
17
+ import * as os from 'node:os'
18
+ import { timeout } from './utils'
19
+ import { getClusterProcessType, notifyWorkerStarted, WorkerManager } from './cluster'
12
20
 
13
21
  const logger = createDefaultLogger()
14
22
  process.on('warning', message => {
@@ -16,38 +24,141 @@ process.on('warning', message => {
16
24
  })
17
25
  ;(async () => {
18
26
  const isDebug = isDebugMode()
19
- const terminationJobs: TerminationJob[] = []
20
- listenOnProcessTermination(terminationJobs, logger)
21
27
 
22
- const version = getServerVersion()
28
+ const version = await getServerVersion()
23
29
  printStartInfo({ version, isDebug }, logger)
24
30
  const plugins = await loadPlugins()
25
- const { serverConfig, projectConfigResolver, tenantConfigResolver } = await resolveServerConfig({
26
- plugins,
27
- serverConfigSchema,
28
- })
31
+ const { serverConfig, projectConfigResolver, tenantConfigResolver } = await resolveServerConfig({ plugins, serverConfigSchema })
29
32
 
30
- const sentryTransport = createSentryLoggerHandler(serverConfig.logging.sentry?.dsn)
31
- if (sentryTransport !== null) {
32
- logger.addHandler(sentryTransport)
33
+ if (process.argv[2] === 'validate') {
34
+ process.exit(0)
33
35
  }
34
36
 
37
+ const sentryhandler = createSentryLoggerHandler(serverConfig.logging?.sentry?.dsn)
38
+ if (sentryhandler !== null) {
39
+ logger.addHandler(sentryhandler)
40
+ }
41
+
42
+ const workerConfig = serverConfig.workerCount || 1
43
+
44
+ const workerCount = workerConfig === 'auto' ? os.cpus().length : Number(workerConfig)
45
+ const isClusterMode = serverConfig.workerCount !== undefined
46
+
47
+ const processType = getClusterProcessType(isClusterMode)
48
+
35
49
  const container = createContainer({
36
50
  debugMode: isDebug,
37
51
  serverConfig,
38
52
  projectConfigResolver,
39
53
  tenantConfigResolver,
40
54
  plugins,
55
+ processType,
41
56
  version,
42
57
  logger,
43
58
  })
44
59
 
45
- const initializedProjects: string[] = await container.initializer.initialize()
60
+ let initializedProjects: string[] = []
61
+ const terminationJobs: TerminationJob[] = []
62
+ listenOnProcessTermination(terminationJobs, logger)
63
+
64
+ if (cluster.isMaster) {
65
+ const monitoringPort = serverConfig.monitoringPort
66
+ const monitoringServer = container.monitoringKoa.listen(monitoringPort, () => {
67
+ logger.info(`Monitoring running on http://localhost:${monitoringPort}`)
68
+ })
69
+ terminationJobs.push(async () => {
70
+ await new Promise<any>(resolve => monitoringServer.close(resolve))
71
+ logger.info('Monitoring server terminated')
72
+ })
73
+ if (!serverConfig.projectGroup) {
74
+ initializedProjects = await container.initializer.initialize()
75
+ }
76
+ }
77
+
78
+ const port = serverConfig.port
79
+ const printStarted = () => {
80
+ if (serverConfig.projectGroup) {
81
+ logger.info('Contember Cloud running')
82
+ } else {
83
+ logger.info(`Contember API running on http://localhost:${port}`)
84
+ }
85
+ if (initializedProjects.length) {
86
+ logger.info(`Initialized projects: ${initializedProjects.join(', ')}`)
87
+ }
88
+ }
89
+
90
+ const startApplication = async () => {
91
+ const httpServerPromise = container.application.listen()
92
+ terminationJobs.push(async () => {
93
+ await (await httpServerPromise).close()
94
+ logger.info('API server terminated')
95
+ })
96
+ await httpServerPromise
97
+ }
98
+
99
+ const startWorker = async (workerName: string) => {
100
+ const worker = container.applicationWorkers.getWorker(workerName)
101
+ const runningWorker = worker.run({
102
+ logger,
103
+ onError: e => {
104
+ logger.crit(e)
105
+ process.exit(1)
106
+ },
107
+ })
108
+ terminationJobs.push(async () => {
109
+ (await runningWorker).end()
110
+ })
111
+ await runningWorker
112
+ logger.info(`Contember Worker ${workerName} started.`)
113
+
114
+ }
115
+
116
+ const applicationWorker = serverConfig.applicationWorker
117
+ if (applicationWorker && applicationWorker !== 'all') {
118
+ await startWorker(applicationWorker)
119
+ if (isClusterMode) {
120
+ notifyWorkerStarted()
121
+ }
122
+ } else if (isClusterMode) {
123
+ if (cluster.isMaster) {
124
+ logger.info(`Master ${process.pid} is running`)
125
+ const workerManager = new WorkerManager()
126
+ terminationJobs.push(async ({ signal }) => {
127
+ await workerManager.terminate(signal)
128
+ logger.info('Workers terminated')
129
+ })
130
+
131
+ await workerManager.start({ workerCount })
132
+
133
+ if (applicationWorker === 'all') {
134
+ for (const workerName of container.applicationWorkers.getWorkerNames()) {
135
+ await workerManager.start({
136
+ workerCount, env: {
137
+ CONTEMBER_APPLICATION_WORKER: workerName,
138
+ },
139
+ })
140
+ }
141
+ }
142
+ printStarted()
143
+ } else {
144
+ logger.info(`Starting worker ${process.pid}`)
145
+
146
+ // this line somehow ensures, that worker waits for termination of all jobs
147
+ process.on('disconnect', () => timeout(0))
148
+
149
+ await startApplication()
150
+ notifyWorkerStarted()
151
+ }
152
+ } else {
153
+ await startApplication()
154
+ if (applicationWorker === 'all') {
155
+ for (const workerName of container.applicationWorkers.getWorkerNames()) {
156
+ await startWorker(workerName)
157
+ }
158
+ }
159
+ printStarted()
160
+ }
46
161
 
47
- const httpServerPromise = container.application.listen()
48
- terminationJobs.push(async () => await (await httpServerPromise).close())
49
- logger.info(`Contember API running on http://localhost:${(serverConfig.port)}`)
50
- logger.info(initializedProjects.length ? `Initialized projects: ${initializedProjects.join(', ')}` : 'No project initialized')
51
162
  })().catch(e => {
52
163
  logger.crit(e)
53
164
  process.exit(1)
package/src/tsconfig.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "extends": "../tsconfig.settings.json",
3
3
  "compilerOptions": {
4
- "outDir": "../dist/src"
4
+ "outDir": "../dist/types"
5
5
  },
6
6
  "references": [
7
+ { "path": "../../engine-actions/src" },
7
8
  { "path": "../../engine-http/src" },
8
9
  { "path": "../../engine-plugins/src" },
9
10
  { "path": "../../engine-s3-plugin/src" },
package/src/utils.ts ADDED
@@ -0,0 +1,4 @@
1
+ export const timeout = (ms: number) =>
2
+ new Promise(resolve => {
3
+ setTimeout(resolve, ms)
4
+ })
package/tsconfig.json CHANGED
@@ -3,6 +3,5 @@
3
3
  "include": [],
4
4
  "references": [
5
5
  { "path": "./src" },
6
- { "path": "./tests" }
7
6
  ]
8
7
  }
@@ -0,0 +1,17 @@
1
+ import * as promClient from 'prom-client'
2
+
3
+ declare module 'prom-client' {
4
+ export type Collector = () => void
5
+
6
+ interface Registry {
7
+ /**
8
+ * Add metric collector, which is invoked on scrape
9
+ */
10
+ registerCollector(collectorFn: Collector): void
11
+
12
+ /**
13
+ * Get all registered collector functions
14
+ */
15
+ collectors(): Collector[]
16
+ }
17
+ }
@@ -1,12 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const engine_s3_plugin_1 = __importDefault(require("@contember/engine-s3-plugin"));
7
- const engine_vimeo_plugin_1 = __importDefault(require("@contember/engine-vimeo-plugin"));
8
- function loadPlugins() {
9
- return Promise.resolve([new engine_s3_plugin_1.default(), new engine_vimeo_plugin_1.default()]);
10
- }
11
- exports.default = loadPlugins;
12
- //# sourceMappingURL=loadPlugins.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loadPlugins.js","sourceRoot":"","sources":["../../src/loadPlugins.ts"],"names":[],"mappings":";;;;;AACA,mFAAkD;AAClD,yFAAwD;AAExD,SAAwB,WAAW;IAClC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,0BAAQ,EAAE,EAAE,IAAI,6BAAW,EAAE,CAAC,CAAC,CAAA;AAC5D,CAAC;AAFD,8BAEC"}
package/dist/src/start.js DELETED
@@ -1,47 +0,0 @@
1
- #!/usr/bin/env node
2
- "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- const engine_http_1 = require("@contember/engine-http");
8
- const loadPlugins_1 = __importDefault(require("./loadPlugins"));
9
- const logger = (0, engine_http_1.createDefaultLogger)();
10
- process.on('warning', message => {
11
- logger.warn(message);
12
- });
13
- (async () => {
14
- var _a;
15
- const isDebug = (0, engine_http_1.isDebugMode)();
16
- const terminationJobs = [];
17
- (0, engine_http_1.listenOnProcessTermination)(terminationJobs, logger);
18
- const version = (0, engine_http_1.getServerVersion)();
19
- (0, engine_http_1.printStartInfo)({ version, isDebug }, logger);
20
- const plugins = await (0, loadPlugins_1.default)();
21
- const { serverConfig, projectConfigResolver, tenantConfigResolver } = await (0, engine_http_1.resolveServerConfig)({
22
- plugins,
23
- serverConfigSchema: engine_http_1.serverConfigSchema,
24
- });
25
- const sentryTransport = (0, engine_http_1.createSentryLoggerHandler)((_a = serverConfig.logging.sentry) === null || _a === void 0 ? void 0 : _a.dsn);
26
- if (sentryTransport !== null) {
27
- logger.addHandler(sentryTransport);
28
- }
29
- const container = (0, engine_http_1.createContainer)({
30
- debugMode: isDebug,
31
- serverConfig,
32
- projectConfigResolver,
33
- tenantConfigResolver,
34
- plugins,
35
- version,
36
- logger,
37
- });
38
- const initializedProjects = await container.initializer.initialize();
39
- const httpServerPromise = container.application.listen();
40
- terminationJobs.push(async () => await (await httpServerPromise).close());
41
- logger.info(`Contember API running on http://localhost:${(serverConfig.port)}`);
42
- logger.info(initializedProjects.length ? `Initialized projects: ${initializedProjects.join(', ')}` : 'No project initialized');
43
- })().catch(e => {
44
- logger.crit(e);
45
- process.exit(1);
46
- });
47
- //# sourceMappingURL=start.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/start.ts"],"names":[],"mappings":";;;;;;AAEA,wDAO+B;AAC/B,gEAAuC;AAEvC,MAAM,MAAM,GAAG,IAAA,iCAAmB,GAAE,CAAA;AACpC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE;IAC/B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACrB,CAAC,CAAC,CACD;AAAA,CAAC,KAAK,IAAI,EAAE;;IACZ,MAAM,OAAO,GAAG,IAAA,yBAAW,GAAE,CAAA;IAC7B,MAAM,eAAe,GAAqB,EAAE,CAAA;IAC5C,IAAA,wCAA0B,EAAC,eAAe,EAAE,MAAM,CAAC,CAAA;IAEnD,MAAM,OAAO,GAAG,IAAA,8BAAgB,GAAE,CAAA;IAClC,IAAA,4BAAc,EAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,CAAA;IAC5C,MAAM,OAAO,GAAG,MAAM,IAAA,qBAAW,GAAE,CAAA;IACnC,MAAM,EAAE,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,GAAG,MAAM,IAAA,iCAAmB,EAAC;QAC/F,OAAO;QACP,kBAAkB,EAAlB,gCAAkB;KAClB,CAAC,CAAA;IAEF,MAAM,eAAe,GAAG,IAAA,uCAAyB,EAAC,MAAA,YAAY,CAAC,OAAO,CAAC,MAAM,0CAAE,GAAG,CAAC,CAAA;IACnF,IAAI,eAAe,KAAK,IAAI,EAAE;QAC7B,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAA;KAClC;IAED,MAAM,SAAS,GAAG,IAAA,6BAAe,EAAC;QACjC,SAAS,EAAE,OAAO;QAClB,YAAY;QACZ,qBAAqB;QACrB,oBAAoB;QACpB,OAAO;QACP,OAAO;QACP,MAAM;KACN,CAAC,CAAA;IAEF,MAAM,mBAAmB,GAAa,MAAM,SAAS,CAAC,WAAW,CAAC,UAAU,EAAE,CAAA;IAE9E,MAAM,iBAAiB,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,CAAA;IACxD,eAAe,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,iBAAiB,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;IACzE,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC/E,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,yBAAyB,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAA;AAC/H,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACd,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAChB,CAAC,CAAC,CAAA"}