tethys.backend/providers/inertia_provider.ts

54 lines
1.7 KiB
TypeScript

import type { ApplicationService } from '@adonisjs/core/types';
import { configProvider } from '@adonisjs/core';
import { RuntimeException } from '@poppinss/utils';
import InertiaMiddleware from '@adonisjs/inertia/inertia_middleware';
import { ResolvedConfig } from '@adonisjs/inertia/types';
export default class InertiaProvider {
constructor(protected app: ApplicationService) {}
/**
* Register bindings to the container
*/
async register() {
this.app.container.singleton(InertiaMiddleware, async () => {
const inertiaConfigProvider = this.app.config.get('inertia');
const config: ResolvedConfig | null = await configProvider.resolve(this.app, inertiaConfigProvider);
// const vite = await this.app.container.make("vite");
if (!config) {
throw new RuntimeException('Invalid "config/inertia.ts" file. Make sure you are using the "defineConfig" method');
}
// return new InertiaMiddleware(config, vite);
return new InertiaMiddleware(config);
});
await this.registerEdgePlugin();
}
/**
* The container bindings have booted
*/
async boot() {}
/**
* The application has been booted
*/
async start() {}
/**
* The process has been started
*/
async ready() {}
/**
* Preparing to shutdown the app
*/
async shutdown() {}
protected async registerEdgePlugin(): Promise<void> {
if (!this.app.usingEdgeJS) return;
const edgeExports = await import('edge.js');
const { edgePluginInertia } = await import('@adonisjs/inertia/plugins/edge');
edgeExports.default.use(edgePluginInertia());
}
}