#!/usr/bin/env -S node --import=tsx /** * HTTP server entrypoint * * Entrypoint for starting the AdonisJS HTTP server. */ import { Ignitor, prettyPrintError } from "@adonisjs/core" import "reflect-metadata" /** * URL to the application root. AdonisJS need it to resolve paths to file and directories for scaffolding commands. */ const APP_ROOT = new URL("../", import.meta.url) /** * The importer is used to import files in context of the application. */ const IMPORTER = async (filePath: string): Promise => { if (filePath.startsWith("./") || filePath.startsWith("../")) { return await import(new URL(filePath, APP_ROOT).href) } return await import(filePath) } const ignitor = new Ignitor(APP_ROOT, { importer: IMPORTER }) try { await ignitor .tap((app) => { app.booting(async () => { await import("#start/env.js") }) app.listen("SIGTERM", async () => { return await app.terminate() }) app.listenIf(app.managedByPm2, "SIGINT", async () => { return await app.terminate() }) }) .httpServer() .start() } catch (error) { process.exitCode = 1 await prettyPrintError(error) }