UNPKG

@jsenv/plugin-transpilation

Version:
41 lines (38 loc) 1.63 kB
import { jsenvPluginImportMetaResolve } from "./jsenv_plugin_import_meta_resolve.js"; import { jsenvPluginJsModuleConversion } from "./jsenv_plugin_js_module_conversion.js"; import { jsenvPluginJsModuleFallbackInsideHtml } from "./jsenv_plugin_js_module_fallback_inside_html.js"; import { jsenvPluginJsModuleFallbackOnWorkers } from "./jsenv_plugin_js_module_fallback_on_workers.js"; import { jsenvPluginTopLevelAwait } from "./jsenv_plugin_top_level_await.js"; export const jsenvPluginJsModuleFallback = ({ remapImportSpecifier } = {}) => { const needJsModuleFallback = (context) => { if (Object.keys(context.clientRuntimeCompat).includes("node")) { return false; } if ( context.versioning && context.versioningViaImportmap && !context.isSupportedOnCurrentClients("importmap") ) { return true; } if ( !context.isSupportedOnCurrentClients("script_type_module") || !context.isSupportedOnCurrentClients("import_dynamic") || !context.isSupportedOnCurrentClients("import_meta") ) { return true; } return false; }; return [ jsenvPluginJsModuleFallbackInsideHtml({ needJsModuleFallback }), jsenvPluginJsModuleFallbackOnWorkers(), jsenvPluginJsModuleConversion({ remapImportSpecifier }), // must come after jsModuleFallback because it's related to the module format // so we want to want to know the module format before transforming things // - top level await // - import.meta.resolve() jsenvPluginImportMetaResolve({ needJsModuleFallback }), jsenvPluginTopLevelAwait({ needJsModuleFallback }), ]; };