@lynx-js/web-core
Version:
This is an internal experimental package, do not use
23 lines • 1.13 kB
JavaScript
// Copyright 2023 The Lynx Authors. All rights reserved.
// Licensed under the Apache License Version 2.0 that can be found in the
// LICENSE file in the root directory of this source tree.
/* LYNX_NAPI_MODULES_IMPORT */
import { dispatchNapiModuleEndpoint, napiModulesCallEndpoint, } from '../../endpoints.js';
export const createNapiLoader = async (rpc, napiModulesMap) => {
const napiModulesCall = rpc.createCall(napiModulesCallEndpoint);
const napiModules = {};
const listeners = new Set();
rpc.registerHandler(dispatchNapiModuleEndpoint, (data) => {
listeners.forEach((listener) => listener(data));
});
await Promise.all(Object.entries(napiModulesMap).map(([moduleName, moduleStr]) => import(/* webpackIgnore: true */ moduleStr).then((module) => (napiModules[moduleName] = module?.default?.(napiModules, (name, data) => napiModulesCall(name, data, moduleName), (func) => {
listeners.add(func);
})))));
/* LYNX_NAPI_MODULES_ADD */
return {
load(moduleName) {
return napiModules[moduleName];
},
};
};
//# sourceMappingURL=createNapiLoader.js.map