ci/woodpecker/pr/cli Pipeline was successful
ci/woodpecker/pr/core Pipeline was successful
ci/woodpecker/pr/lsp Pipeline was successful
ci/woodpecker/pr/web-config Pipeline was successful
ci/woodpecker/pr/web-db Pipeline was successful
ci/woodpecker/pr/web-jobs Pipeline was successful
ci/woodpecker/pr/web-lsp Pipeline was successful
ci/woodpecker/pr/web-pieces Pipeline was successful
ci/woodpecker/pr/web-theme Pipeline was successful
ci/woodpecker/pr/web-worker Pipeline was successful
ci/woodpecker/pr/web Pipeline was successful
32 lines
1.0 KiB
JavaScript
32 lines
1.0 KiB
JavaScript
import { loadConfig } from '@luzzle/web.templates/config'
|
|
import path from 'node:path'
|
|
import { pathToFileURL } from 'node:url'
|
|
import {
|
|
createServerEnvironment,
|
|
installRequestOrigin,
|
|
resolveAppOrigin
|
|
} from './runtime-environment.js'
|
|
|
|
/** @param {NodeJS.ProcessEnv} environment */
|
|
function applyServerEnvironment(environment) {
|
|
for (const key of ['HOST', 'ORIGIN', 'PROTOCOL_HEADER', 'HOST_HEADER', 'PORT_HEADER']) {
|
|
const value = environment[key]
|
|
if (value === undefined) delete process.env[key]
|
|
else process.env[key] = value
|
|
}
|
|
}
|
|
|
|
/** @param {string} entry */
|
|
export async function startServer(entry = path.resolve('build/index.js')) {
|
|
const config = loadConfig(path.resolve('config.yaml'))
|
|
const origin = resolveAppOrigin(config.url.app)
|
|
applyServerEnvironment(createServerEnvironment(config))
|
|
const { server } = await import(pathToFileURL(entry).href)
|
|
installRequestOrigin(server, origin)
|
|
return server
|
|
}
|
|
|
|
if (process.argv[1] && pathToFileURL(path.resolve(process.argv[1])).href === import.meta.url) {
|
|
await startServer()
|
|
}
|