mirror of
https://github.com/Crosstalk-Solutions/project-nomad.git
synced 2026-03-28 11:39:26 +01:00
55 lines
1.7 KiB
TypeScript
55 lines
1.7 KiB
TypeScript
/*
|
|
|--------------------------------------------------------------------------
|
|
| HTTP server entrypoint
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| The "server.ts" file is the entrypoint for starting the AdonisJS HTTP
|
|
| server. Either you can run this file directly or use the "serve"
|
|
| command to run this file and monitor file changes
|
|
|
|
|
*/
|
|
|
|
import 'reflect-metadata'
|
|
import { Ignitor, prettyPrintError } from '@adonisjs/core'
|
|
|
|
/**
|
|
* 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 = (filePath: string) => {
|
|
if (filePath.startsWith('./') || filePath.startsWith('../')) {
|
|
return import(new URL(filePath, APP_ROOT).href)
|
|
}
|
|
return import(filePath)
|
|
}
|
|
|
|
new Ignitor(APP_ROOT, { importer: IMPORTER })
|
|
.tap((app) => {
|
|
app.booting(async () => {
|
|
await import('#start/env')
|
|
})
|
|
app.listen('SIGTERM', () => app.terminate())
|
|
app.listenIf(app.managedByPm2, 'SIGINT', () => app.terminate())
|
|
app.ready(async () => {
|
|
try {
|
|
const collectionManifestService = new (await import('#services/collection_manifest_service')).CollectionManifestService()
|
|
await collectionManifestService.reconcileFromFilesystem()
|
|
} catch (error) {
|
|
// Catch and log any errors during reconciliation to prevent the server from crashing
|
|
console.error('Error during collection manifest reconciliation:', error)
|
|
}
|
|
})
|
|
})
|
|
.httpServer()
|
|
.start()
|
|
.catch((error) => {
|
|
process.exitCode = 1
|
|
prettyPrintError(error)
|
|
})
|