Skip to main content

ferrijs_std/utils/
module.rs

1// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2// SPDX-License-Identifier: Apache-2.0
3use rquickjs::{
4    module::{Exports, ModuleDef},
5    Ctx, Object, Result, Value,
6};
7
8pub struct ModuleInfo<T: ModuleDef> {
9    pub name: &'static str,
10    pub module: T,
11}
12
13pub fn export_default<'js, F>(ctx: &Ctx<'js>, exports: &Exports<'js>, f: F) -> Result<()>
14where
15    F: FnOnce(&Object<'js>) -> Result<()>,
16{
17    let default = Object::new(ctx.clone())?;
18    f(&default)?;
19
20    for name in default.keys::<String>() {
21        let name = name?;
22        let value: Value = default.get(&name)?;
23        exports.export(name, value)?;
24    }
25
26    exports.export("default", default)?;
27
28    Ok(())
29}