UNPKG

@lynx-js/web-core

Version:

This is an internal experimental package, do not use

23 lines 1.13 kB
// 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