rquickjs_extension/loader/
resolver.rs

1use std::collections::HashSet;
2
3use rquickjs::{
4    loader::{BuiltinResolver, Resolver},
5    Ctx, Result,
6};
7
8/// Rquickjs [`Resolver`](rquickjs::loader::Resolver) for modules
9/// defined using [`Extension`](crate::Extension).
10pub struct ModuleResolver {
11    inner: BuiltinResolver,
12}
13
14impl ModuleResolver {
15    pub(crate) fn new(names: HashSet<&'static str>) -> Self {
16        let mut resolver = BuiltinResolver::default();
17        for name in names {
18            resolver.add_module(name);
19        }
20
21        Self { inner: resolver }
22    }
23}
24
25impl Resolver for ModuleResolver {
26    fn resolve(&mut self, ctx: &Ctx<'_>, base: &str, name: &str) -> Result<String> {
27        self.inner.resolve(ctx, base, name)
28    }
29}