@@ -9,22 +9,34 @@ import type { ModuleLoader, GetResolver } from './types';
9
9
10
10
/**
11
11
* create module loader
12
- * @param options options
13
- * @param options.resolver remote module resolver, default to umd resolver
14
- * @param options.container container to append script, default is append to body in client side
15
12
*/
16
13
export function createLoader < Props extends Record < string , any > = any , Context = any > (
17
14
options : {
15
+ /**
16
+ * remote module resolver, default to umd resolver
17
+ */
18
18
resolver ?: GetResolver < Context > ;
19
+ /**
20
+ * container to append script, default is append to body in client side
21
+ */
19
22
container ?: string | ( ( proxy : Context ) => Element ) ;
23
+ /**
24
+ * global variables to expose to remote module
25
+ */
26
+ globals ?: Record < string , any > ;
20
27
} = { } ,
21
28
) {
22
- // Set global VueDemi
23
- if ( window && ! window . VueDemi ) {
24
- window . VueDemi = VueDemi ;
29
+ const _resolver = options . resolver ?.( options . container ) ?? ( getUmdResolver ( options . container as any ) as any ) ;
30
+
31
+ // Set global variables
32
+ const proxy = _resolver . context ;
33
+ if ( ! proxy . VueDemi ) {
34
+ proxy . VueDemi = VueDemi ;
35
+ }
36
+ if ( options . globals ) {
37
+ Object . assign ( proxy , options . globals ) ;
25
38
}
26
39
27
- const _resolver = options . resolver ?.( options . container ) ?? ( getUmdResolver ( options . container as any ) as any ) ;
28
40
const loader : ModuleLoader < Props , Context > = VueDemi . markRaw ( {
29
41
install ( app ) {
30
42
// this allows calling registerSubModules() outside of a component setup after
0 commit comments