@loutrejs/node
v0.10.1
Published
Loutre ApplicationをNode.jsで起動するRuntime Adapterです。HTTP serverへの接続と、HTTPを持たないworkerのApplication lifecycleを管理します。
Readme
@loutrejs/node
Loutre ApplicationをNode.jsで起動するRuntime Adapterです。HTTP serverへの接続と、HTTPを持たないworkerのApplication lifecycleを管理します。
Node.js 22以上を対象にしています。
Install
npm install @loutrejs/loutre @loutrejs/nodeUsage
import { nodeRuntime } from '@loutrejs/node'
import application from './app.js'
const app = await nodeRuntime.create({ application })
const server = await app.serve({ port: 3000 })
console.log(server.port)
await app.close()create()はApplicationをinitializeしてRuntime Application Contextを返します。SIGINT / SIGTERMのshutdown hookを標準で登録します。app.serve()がHTTP listenerを開始し、app.close()がlistenerとApplication lifecycleをまとめて終了します。
HTTPを持たないworker
TaskやQueueを持つApplicationもnodeRuntime.create({ application })で起動できます。serve()を呼ぶ必要はありません。
SIGINT / SIGTERMを受けるとapp.close(signal)を実行し、Task・Queueの停止と終了lifecycleへsignalを渡します。手動のclose()でもsignal handlerを解除します。終了失敗はApplicationのLoggerへerrorとsignalを記録し、手動のclose()では例外として返します。終了を開始したApplicationは、close()が失敗してもserve()で再開できません。lifecycle失敗後もlistenerとDevtools transportを回収し、エラーを集約します。drainが安全なcleanup境界に到達できない場合は、受付を停止したまま既存executionを保持し、完了後にclose()を再試行できます。
Runtimeはprocess.exit()を呼ばないため、利用側で作成したtimerや外部resourceは終了lifecycleで解放してください。
埋め込み用途やテストではnodeRuntime.create({ application, shutdownHooks: false })で無効にできます。既存のserve({ shutdownHooks })は指定時に設定を上書きし、省略時はcreate()の設定を維持します。
Port selection
portを明示した場合は、そのportでlistenできなければerrorになります。
const app = await nodeRuntime.create({ application })
await app.serve({ port: 8080 })portを省略した場合は3000から利用可能なportを探します。
const app = await nodeRuntime.create({ application })
const server = await app.serve()
console.log(server.port)Options
| Option | Description |
| ---------------------- | ------------------------------------------- |
| create.application | Loutre Application |
| create.environment | Applicationへ渡すEnvironment source |
| create.shutdownHooks | SIGINT / SIGTERM hookの有効化。標準はtrue |
| create.arguments | Applicationへ渡すArguments |
| serve.port | listenするport。省略時は3000から探索 |
| serve.hostname | listenするhostname |
| serve.shutdownHooks | shutdown hook設定の上書き。省略時は維持 |
