rquickjs_extension/loader/
global.rs

1use rquickjs::{Ctx, Result};
2
3use super::GlobalLoadFn;
4
5/// Global initializer that MUST be called before any user code is run.
6pub struct GlobalInitializer {
7    globals: Vec<GlobalLoadFn>,
8}
9
10impl GlobalInitializer {
11    pub(crate) fn new(globals: Vec<GlobalLoadFn>) -> Self {
12        Self { globals }
13    }
14
15    pub fn init(self, ctx: &Ctx) -> Result<()> {
16        let globals_obj = ctx.globals();
17        for globals_fn in self.globals {
18            globals_fn(ctx, &globals_obj)?;
19        }
20        Ok(())
21    }
22}