mirror of
https://github.com/denoland/deno.git
synced 2025-09-26 12:19:12 +00:00
fix(bundle): pass requested module type to load (#29683)
Some checks are pending
ci / test debug macos-x86_64 (push) Blocked by required conditions
ci / test release macos-x86_64 (push) Blocked by required conditions
ci / test debug windows-x86_64 (push) Blocked by required conditions
ci / test release windows-x86_64 (push) Blocked by required conditions
ci / pre-build (push) Waiting to run
ci / test debug linux-aarch64 (push) Blocked by required conditions
ci / test release linux-aarch64 (push) Blocked by required conditions
ci / test debug macos-aarch64 (push) Blocked by required conditions
ci / test release macos-aarch64 (push) Blocked by required conditions
ci / bench release linux-x86_64 (push) Blocked by required conditions
ci / lint debug linux-x86_64 (push) Blocked by required conditions
ci / lint debug macos-x86_64 (push) Blocked by required conditions
ci / lint debug windows-x86_64 (push) Blocked by required conditions
ci / test debug linux-x86_64 (push) Blocked by required conditions
ci / test release linux-x86_64 (push) Blocked by required conditions
ci / build wasm32 (push) Blocked by required conditions
ci / publish canary (push) Blocked by required conditions
Some checks are pending
ci / test debug macos-x86_64 (push) Blocked by required conditions
ci / test release macos-x86_64 (push) Blocked by required conditions
ci / test debug windows-x86_64 (push) Blocked by required conditions
ci / test release windows-x86_64 (push) Blocked by required conditions
ci / pre-build (push) Waiting to run
ci / test debug linux-aarch64 (push) Blocked by required conditions
ci / test release linux-aarch64 (push) Blocked by required conditions
ci / test debug macos-aarch64 (push) Blocked by required conditions
ci / test release macos-aarch64 (push) Blocked by required conditions
ci / bench release linux-x86_64 (push) Blocked by required conditions
ci / lint debug linux-x86_64 (push) Blocked by required conditions
ci / lint debug macos-x86_64 (push) Blocked by required conditions
ci / lint debug windows-x86_64 (push) Blocked by required conditions
ci / test debug linux-x86_64 (push) Blocked by required conditions
ci / test release linux-x86_64 (push) Blocked by required conditions
ci / build wasm32 (push) Blocked by required conditions
ci / publish canary (push) Blocked by required conditions
Fixes #29663.
This commit is contained in:
parent
cb810ab664
commit
1f579ba89e
8 changed files with 56 additions and 13 deletions
|
@ -12,6 +12,7 @@ use deno_core::error::AnyError;
|
|||
use deno_core::resolve_url_or_path;
|
||||
use deno_core::url::Url;
|
||||
use deno_core::ModuleLoader;
|
||||
use deno_core::RequestedModuleType;
|
||||
use deno_error::JsError;
|
||||
use deno_graph::Position;
|
||||
use deno_lib::worker::ModuleLoaderFactory;
|
||||
|
@ -347,6 +348,17 @@ enum BundleError {
|
|||
HttpCache,
|
||||
}
|
||||
|
||||
fn requested_type_from_map(
|
||||
map: &IndexMap<String, String>,
|
||||
) -> RequestedModuleType {
|
||||
let type_ = map.get("type").map(|s| s.as_str());
|
||||
match type_ {
|
||||
Some("json") => RequestedModuleType::Json,
|
||||
Some(other) => RequestedModuleType::Other(other.to_string().into()),
|
||||
None => RequestedModuleType::None,
|
||||
}
|
||||
}
|
||||
|
||||
struct DenoPluginHandler {
|
||||
resolver: Arc<CliResolver>,
|
||||
module_load_preparer: Arc<ModuleLoadPreparer>,
|
||||
|
@ -415,7 +427,9 @@ impl esbuild_client::PluginHandler for DenoPluginHandler {
|
|||
&self,
|
||||
args: esbuild_client::OnLoadArgs,
|
||||
) -> Result<Option<esbuild_client::OnLoadResult>, AnyError> {
|
||||
let result = self.bundle_load(&args.path, "").await?;
|
||||
let result = self
|
||||
.bundle_load(&args.path, requested_type_from_map(&args.with))
|
||||
.await?;
|
||||
log::trace!(
|
||||
"{}: {:?}",
|
||||
deno_terminal::colors::magenta("on_load"),
|
||||
|
@ -466,7 +480,6 @@ impl DenoPluginHandler {
|
|||
importer: Option<&str>,
|
||||
resolve_dir: Option<&str>,
|
||||
kind: esbuild_client::protocol::ImportKind,
|
||||
// TODO: use this / store it for later usage when loading
|
||||
with: IndexMap<String, String>,
|
||||
) -> Result<Option<String>, AnyError> {
|
||||
log::debug!(
|
||||
|
@ -562,18 +575,19 @@ impl DenoPluginHandler {
|
|||
async fn bundle_load(
|
||||
&self,
|
||||
specifier: &str,
|
||||
resolve_dir: &str,
|
||||
requested_type: RequestedModuleType,
|
||||
) -> Result<Option<(Vec<u8>, esbuild_client::BuiltinLoader)>, AnyError> {
|
||||
log::debug!(
|
||||
"{}: {:?} {:?}",
|
||||
deno_terminal::colors::magenta("bundle_load"),
|
||||
specifier,
|
||||
resolve_dir
|
||||
requested_type
|
||||
);
|
||||
|
||||
let resolve_dir = Path::new(&resolve_dir);
|
||||
let specifier = deno_core::resolve_url_or_path(specifier, resolve_dir)?;
|
||||
|
||||
let specifier = deno_core::resolve_url_or_path(
|
||||
specifier,
|
||||
Path::new(""), // should be absolute already, feels kind of hacky though
|
||||
)?;
|
||||
let (specifier, loader) = if let Some((specifier, loader)) =
|
||||
self.specifier_and_type_from_graph(&specifier)?
|
||||
{
|
||||
|
@ -601,12 +615,10 @@ impl DenoPluginHandler {
|
|||
}
|
||||
(specifier, media_type_to_loader(media_type))
|
||||
};
|
||||
let loaded = self.module_loader.load(
|
||||
&specifier,
|
||||
None,
|
||||
false,
|
||||
deno_core::RequestedModuleType::None,
|
||||
);
|
||||
let loaded =
|
||||
self
|
||||
.module_loader
|
||||
.load(&specifier, None, false, requested_type);
|
||||
|
||||
match loaded {
|
||||
deno_core::ModuleLoadResponse::Sync(module_source) => {
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"name": "@denotest/imports-json",
|
||||
"version": "1.0.0"
|
||||
}
|
3
tests/registry/jsr/@denotest/imports-json/1.0.0/mod.ts
Normal file
3
tests/registry/jsr/@denotest/imports-json/1.0.0/mod.ts
Normal file
|
@ -0,0 +1,3 @@
|
|||
import config from "./deno.json" with { type: "json" };
|
||||
|
||||
export default config;
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"exports": {
|
||||
".": "mod.ts"
|
||||
}
|
||||
}
|
5
tests/registry/jsr/@denotest/imports-json/meta.json
Normal file
5
tests/registry/jsr/@denotest/imports-json/meta.json
Normal file
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"versions": {
|
||||
"1.0.0": {}
|
||||
}
|
||||
}
|
10
tests/specs/bundle/json_import/__test__.jsonc
Normal file
10
tests/specs/bundle/json_import/__test__.jsonc
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"tempDir": true,
|
||||
"steps": [{
|
||||
"args": "bundle -o=./out.js main.ts",
|
||||
"output": "[WILDCARD]"
|
||||
}, {
|
||||
"args": "run ./out.js",
|
||||
"output": "json.out"
|
||||
}]
|
||||
}
|
1
tests/specs/bundle/json_import/json.out
Normal file
1
tests/specs/bundle/json_import/json.out
Normal file
|
@ -0,0 +1 @@
|
|||
{ name: "@denotest/imports-json", version: "1.0.0" }
|
3
tests/specs/bundle/json_import/main.ts
Normal file
3
tests/specs/bundle/json_import/main.ts
Normal file
|
@ -0,0 +1,3 @@
|
|||
import json from "jsr:@denotest/imports-json";
|
||||
|
||||
console.log(json);
|
Loading…
Add table
Add a link
Reference in a new issue