diff --git a/src/api.ts b/src/api.ts index 9cde40e..b8cee72 100644 --- a/src/api.ts +++ b/src/api.ts @@ -1,5 +1,6 @@ import { dev } from './api/dev'; import { build } from './api/build'; import { exporter } from './api/export'; +import { find_page } from './api/find_page'; -export { dev, build, exporter }; \ No newline at end of file +export { dev, build, exporter, find_page }; \ No newline at end of file diff --git a/src/api/find_page.ts b/src/api/find_page.ts new file mode 100644 index 0000000..2e843bd --- /dev/null +++ b/src/api/find_page.ts @@ -0,0 +1,16 @@ +import * as glob from 'glob'; +import { locations } from '../config'; +import { create_routes } from '../core'; + +export function find_page(pathname: string, files: string[] = glob.sync('**/*.*', { cwd: locations.routes(), dot: true, nodir: true })) { + const routes = create_routes({ files }); + + for (let i = 0; i < routes.length; i += 1) { + const route = routes[i]; + + if (route.pattern.test(pathname)) { + const page = route.handlers.find(handler => handler.type === 'page'); + if (page) return page.file; + } + } +} \ No newline at end of file