1- import type { PreparserExtensionLoader , SlideInfo , SlidevData , SlidevMarkdown , SlidevPreparserExtension , SourceSlideInfo } from '@slidev/types'
1+ import type {
2+ PreparserExtensionLoader ,
3+ SlideInfo ,
4+ SlidevData ,
5+ SlidevMarkdown ,
6+ SlidevPreparserExtension ,
7+ SourceSlideInfo ,
8+ } from '@slidev/types'
29import { existsSync } from 'node:fs'
310import { readFile , writeFile } from 'node:fs/promises'
411import { dirname , resolve } from 'node:path'
@@ -19,14 +26,19 @@ export function injectPreparserExtensionLoader(fn: PreparserExtensionLoader) {
1926 preparserExtensionLoader = fn
2027}
2128
29+ export interface LoadRootsInfo {
30+ roots : string [ ]
31+ userRoot : string
32+ }
33+
2234/**
2335 * Slidev data without config and themeMeta,
2436 * because config and themeMeta depends on the theme to be loaded.
2537 */
2638export type LoadedSlidevData = Omit < SlidevData , 'config' | 'themeMeta' >
2739
2840export async function load (
29- userRoot : string ,
41+ options : LoadRootsInfo ,
3042 filepath : string ,
3143 sources : Record < string , string > | ( ( path : string ) => Promise < string > ) = { } ,
3244 mode ?: string ,
@@ -49,7 +61,7 @@ export async function load(
4961 hm = lines . slice ( 1 , hEnd ) . join ( '\n' )
5062 }
5163 const o = YAML . parse ( hm ) as Record < string , unknown > ?? { }
52- extensions = await preparserExtensionLoader ( o , filepath , mode )
64+ extensions = await preparserExtensionLoader ( options . roots , o , filepath , mode )
5365 }
5466
5567 const markdownFiles : Record < string , SlidevMarkdown > = { }
@@ -93,7 +105,7 @@ export async function load(
93105 const [ rawPath , rangeRaw ] = slide . frontmatter . src . split ( '#' )
94106 const path = slash (
95107 rawPath . startsWith ( '/' )
96- ? resolve ( userRoot , rawPath . substring ( 1 ) )
108+ ? resolve ( options . userRoot , rawPath . substring ( 1 ) )
97109 : resolve ( dirname ( slide . filepath ) , rawPath ) ,
98110 )
99111
0 commit comments