'use strict' const { Initializer, api } = require('actionhero') const next = require('next') module.exports = class NextInitializer extends Initializer { constructor () { super() this.name = 'next' } async initialize () { api.next = { render: async connection => { if (connection.type !== 'web') { throw new Error('Connections for NEXT apps must be of type "web"') } const req = connection.rawConnection.req const res = connection.rawConnection.res return api.next.handle(req, res) } } api.next.dev = api.env === 'development' if (api.next.dev) { api.log('Running next in development mode...') } api.next.app = next({ dev: api.next.dev }) api.next.handle = api.next.app.getRequestHandler() await api.next.app.prepare() } async stop () { await api.next.app.close() } }