Skip to content

Commit

Permalink
fix: import meta glob path failed
Browse files Browse the repository at this point in the history
  • Loading branch information
shulandmimi committed Jan 8, 2025
1 parent 1989a2b commit c0d3009
Show file tree
Hide file tree
Showing 19 changed files with 312 additions and 112 deletions.
5 changes: 5 additions & 0 deletions .changeset/wise-avocados-draw.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@farmfe/core": patch
---

fix import meta glob path
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
!node_modules
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
// @ts-nocheck
console.log(import.meta.glob("bar", import.meta.url));

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
//bar_index_ce66.js:
(function(_){var filename = ((function(){var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;return typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.src || new URL("bar_index_ce66.js", document.baseURI).href})());for(var r in _){_[r].__farm_resource_pot__=filename;window['__farm_default_namespace__'].__farm_module_system__.register(r,_[r])}})({"3b411c90":function (module, exports, farmRequire, farmDynamicRequire) {
console.log({
"../@foo/core/foo.js": ()=>farmDynamicRequire("7546eb2a")
});
}
,});

//foo_482f.js:
(function(_){var filename = ((function(){var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;return typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.src || new URL("foo_482f.js", document.baseURI).href})());for(var r in _){_[r].__farm_resource_pot__=filename;window['__farm_default_namespace__'].__farm_module_system__.register(r,_[r])}})({"7546eb2a":function (module, exports, farmRequire, farmDynamicRequire) {
console.log("@foo/core/foo.js");
}
,});

//index.js:
window['__farm_default_namespace__'] = {__FARM_TARGET_ENV__: 'browser'};function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}function _export_star(from, to) {
Object.keys(from).forEach(function(k) {
if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
Object.defineProperty(to, k, {
enumerable: true,
get: function() {
return from[k];
}
});
}
});
return from;
}function _interop_require_wildcard(obj, nodeInterop) {
if (!nodeInterop && obj && obj.__esModule) return obj;
if (obj === null || typeof obj !== "object" && typeof obj !== "function") return {
default: obj
};
var cache = _getRequireWildcardCache(nodeInterop);
if (cache && cache.has(obj)) return cache.get(obj);
var newObj = {
__proto__: null
};
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
for(var key in obj){
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc);
else newObj[key] = obj[key];
}
}
newObj.default = obj;
if (cache) cache.set(obj, newObj);
return newObj;
}function _getRequireWildcardCache(nodeInterop) {
if (typeof WeakMap !== "function") return null;
var cacheBabelInterop = new WeakMap();
var cacheNodeInterop = new WeakMap();
return (_getRequireWildcardCache = function(nodeInterop) {
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
})(nodeInterop);
}function __commonJs(mod) {
var module;
return () => {
if (module) {
return module.exports;
}
module = {
exports: {},
};
if(typeof mod === "function") {
mod(module, module.exports);
}else {
mod[Object.keys(mod)[0]](module, module.exports);
}
return module.exports;
};
}((function(){var index_js_cjs = __commonJs((module, exports)=>{
"use strict";
console.log('runtime/index.js');
window['__farm_default_namespace__'].__farm_module_system__.setPlugins([]);
});
index_js_cjs();
})());(function(_){var filename = ((function(){var _documentCurrentScript = typeof document !== "undefined" ? document.currentScript : null;return typeof document === "undefined" ? require("url").pathToFileURL(__filename).href : _documentCurrentScript && _documentCurrentScript.src || new URL("index_dcdc.js", document.baseURI).href})());for(var r in _){_[r].__farm_resource_pot__=filename;window['__farm_default_namespace__'].__farm_module_system__.register(r,_[r])}})({"b5d64806":function (module, exports, farmRequire, farmDynamicRequire) {
console.log({
"./node_modules/bar/index.js": ()=>farmDynamicRequire("3b411c90")
});
}
,});window['__farm_default_namespace__'].__farm_module_system__.setInitialLoadedResources([]);window['__farm_default_namespace__'].__farm_module_system__.setDynamicModuleResourcesMap([{ path: 'foo_482f.js', type: 0 },{ path: 'bar_index_ce66.js', type: 0 }],{ '7546eb2a': [0],'3b411c90': [1] });var farmModuleSystem = window['__farm_default_namespace__'].__farm_module_system__;farmModuleSystem.bootstrap();var entry = farmModuleSystem.require("b5d64806");
51 changes: 49 additions & 2 deletions crates/plugin_script/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ use farmfe_core::{
Plugin, PluginAnalyzeDepsHookParam, PluginFinalizeModuleHookParam,
PluginGenerateResourcesHookResult, PluginHookContext, PluginLoadHookParam,
PluginLoadHookResult, PluginParseHookParam, PluginProcessModuleHookParam,
PluginResolveHookParam, ResolveKind,
},
resource::{
resource_pot::{ResourcePot, ResourcePotType},
Expand All @@ -27,7 +28,9 @@ use farmfe_core::{
swc_common::{comments::SingleThreadedComments, Mark, GLOBALS},
swc_ecma_ast::EsVersion,
};
use farmfe_swc_transformer_import_glob::transform_import_meta_glob;
use farmfe_swc_transformer_import_glob::{
transform_import_meta_glob, ImportMetaGlobResolver, ImportMetaGlobResolverParams,
};
use farmfe_toolkit::{
common::{
create_swc_source_map, generate_source_map_resource, load_source_original_source_map, Source,
Expand Down Expand Up @@ -186,7 +189,27 @@ impl Plugin for FarmPluginScript {

transform_url_with_import_meta_url(ast, &comments);

transform_import_meta_glob(ast, context.config.root.clone(), param.module_id, context)?;
let resolved_path = param.module_id.resolved_path(&context.config.root);
let cur_dir = if resolved_path.starts_with(VIRTUAL_MODULE_PREFIX) {
context.config.root.clone()
} else {
Path::new(&resolved_path)
.parent()
.unwrap()
.to_string_lossy()
.to_string()
};

transform_import_meta_glob(
ast,
context.config.root.clone(),
param.module_id,
cur_dir,
&context.config.resolve.alias,
ImportMetaGlobResolverImpl {
context: context.clone(),
},
)?;
script.set_comments(comments.into())
}

Expand Down Expand Up @@ -310,3 +333,27 @@ impl FarmPluginScript {
Self {}
}
}

struct ImportMetaGlobResolverImpl {
context: Arc<CompilationContext>,
}

impl ImportMetaGlobResolver for ImportMetaGlobResolverImpl {
fn resolve(&self, params: ImportMetaGlobResolverParams) -> Option<String> {
self
.context
.plugin_driver
.resolve(
&PluginResolveHookParam {
source: params.source,
importer: Some(params.importer),
kind: ResolveKind::Import,
},
&self.context,
&Default::default(),
)
.ok()
.flatten()
.map(|v| v.resolved_path)
}
}
Loading

0 comments on commit c0d3009

Please sign in to comment.