fix(install): cache json exports of JSR packages (#26552)

Fixes https://github.com/denoland/deno/issues/26509.

Ended up being a `deno_graph` bug causing the error to surface. This PR
updates `deno_graph` to pick up the fix and reverts the temporary
workaround that skipped JSON exports.
This commit is contained in:
Nathan Whitaker 2024-10-25 13:19:03 -07:00 committed by GitHub
parent a01edb394d
commit ec968aa5ae
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 39 additions and 15 deletions

4
Cargo.lock generated
View File

@ -1606,9 +1606,9 @@ dependencies = [
[[package]]
name = "deno_graph"
version = "0.83.3"
version = "0.83.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77163c46755676d8f793fc19e365537ba660a8db173cd1e02d21eb010c0b3cef"
checksum = "5bd20bc0780071989c622cbfd5d4fb2e4fd05a247ccd7f791f13c8d2c3792228"
dependencies = [
"anyhow",
"async-trait",

View File

@ -73,7 +73,7 @@ deno_cache_dir = { workspace = true }
deno_config = { version = "=0.37.2", features = ["workspace", "sync"] }
deno_core = { workspace = true, features = ["include_js_files_for_snapshotting"] }
deno_doc = { version = "0.154.0", default-features = false, features = ["rust", "html", "syntect"] }
deno_graph = { version = "=0.83.3" }
deno_graph = { version = "=0.83.4" }
deno_lint = { version = "=0.67.0", features = ["docs"] }
deno_lockfile.workspace = true
deno_npm.workspace = true

View File

@ -90,13 +90,8 @@ pub async fn cache_top_level_deps(
while let Some(info_future) = info_futures.next().await {
if let Some((specifier, info)) = info_future {
let exports = info.exports();
for (k, v) in exports {
for (k, _) in exports {
if let Ok(spec) = specifier.join(k) {
if v.ends_with(".json") {
// TODO(nathanwhit): this should work, there's a bug with
// json roots in deno_graph. skip it for now
continue;
}
roots.push(spec);
}
}

View File

@ -0,0 +1 @@
export * from "jsr:@denotest/add@1";

View File

@ -0,0 +1,3 @@
{
"a": 1
}

View File

@ -0,0 +1 @@
export * from "jsr:@denotest/subtract@1";

View File

@ -0,0 +1,7 @@
{
"exports": {
"./add": "./add.ts",
"./subtract": "./subtract.ts",
"./data-json": "./data.json"
}
}

View File

@ -0,0 +1,5 @@
{
"versions": {
"1.0.0": {}
}
}

View File

@ -1,6 +1,7 @@
{
"tempDir": true,
"steps": [
{ "args": "install", "output": "install.out" }
{ "args": "install", "output": "install.out" },
{ "args": "run --cached-only main.ts", "output": "main.out" }
]
}

View File

@ -1,5 +1,5 @@
{
"imports": {
"@denotest/different-deps-per-export": "jsr:@denotest/different-deps-per-export@^1.0.0"
"@denotest/multiple-exports": "jsr:@denotest/multiple-exports@^1.0.0"
}
}

View File

@ -1,8 +1,9 @@
[UNORDERED_START]
Download http://127.0.0.1:4250/@denotest/different-deps-per-export/meta.json
Download http://127.0.0.1:4250/@denotest/different-deps-per-export/1.0.0_meta.json
Download http://127.0.0.1:4250/@denotest/different-deps-per-export/1.0.0/add.ts
Download http://127.0.0.1:4250/@denotest/different-deps-per-export/1.0.0/subtract.ts
Download http://127.0.0.1:4250/@denotest/multiple-exports/meta.json
Download http://127.0.0.1:4250/@denotest/multiple-exports/1.0.0_meta.json
Download http://127.0.0.1:4250/@denotest/multiple-exports/1.0.0/add.ts
Download http://127.0.0.1:4250/@denotest/multiple-exports/1.0.0/subtract.ts
Download http://127.0.0.1:4250/@denotest/multiple-exports/1.0.0/data.json
Download http://127.0.0.1:4250/@denotest/add/meta.json
Download http://127.0.0.1:4250/@denotest/subtract/meta.json
Download http://127.0.0.1:4250/@denotest/add/1.0.0_meta.json

View File

@ -0,0 +1,3 @@
3
-1
{ a: 1 }

View File

@ -0,0 +1,7 @@
import { add } from "@denotest/multiple-exports/add";
import { subtract } from "@denotest/multiple-exports/subtract";
import data from "@denotest/multiple-exports/data-json" with { type: "json" };
console.log(add(1, 2));
console.log(subtract(1, 2));
console.log(data);