Files
eleith 18761d597d
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
[web] integrate SvelteKit 3 with runtime configuration
2026-10-31 06:39:44 -07:00

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()
}