@analogjs/vite-plugin-nitro
Version:
A Vite plugin for adding a nitro API server
27 lines • 1.12 kB
JavaScript
import { resolve } from 'node:path';
import fg from 'fast-glob';
import { normalizePath } from 'vite';
export function getPageHandlers({ workspaceRoot, sourceRoot, rootDir, additionalPagesDirs, hasAPIDir, }) {
const root = normalizePath(resolve(workspaceRoot, rootDir));
const endpointFiles = fg.sync([
`${root}/${sourceRoot}/app/pages/**/*.server.ts`,
...(additionalPagesDirs || []).map((dir) => `${workspaceRoot}${dir}/**/*.server.ts`),
], { dot: true });
const handlers = endpointFiles.map((endpointFile) => {
const route = endpointFile
.replace(/^(.*?)\/pages/, '/pages')
.replace(/\.server\.ts$/, '')
.replace(/\[\.{3}(.+)\]/g, '**:$1')
.replace(/\[\.{3}(\w+)\]/g, '**:$1')
.replace(/\/\((.*?)\)$/, '/-$1-')
.replace(/\[(\w+)\]/g, ':$1')
.replace(/\./g, '/');
return {
handler: endpointFile,
route: `${hasAPIDir ? '/api' : ''}/_analog${route}.json`,
lazy: true,
};
});
return handlers;
}
//# sourceMappingURL=get-page-handlers.js.map