From 48e86c70255c6624b185d3f2d051c8e1e06f4af2 Mon Sep 17 00:00:00 2001 From: David Sherret Date: Mon, 27 Jan 2025 10:28:33 -0500 Subject: [PATCH] chore: fix deno_resolver non-sync build (#27824) --- .github/workflows/ci.generate.ts | 20 ++++++++++++++++++++ .github/workflows/ci.yml | 27 +++++++++++++++++++++++++++ Cargo.lock | 5 ++--- Cargo.toml | 2 +- resolvers/node/Cargo.toml | 1 - resolvers/node/package_json.rs | 31 ++++++++++++++++++++++++++----- 6 files changed, 76 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.generate.ts b/.github/workflows/ci.generate.ts index f24034d4941983..bae7a591a397b4 100755 --- a/.github/workflows/ci.generate.ts +++ b/.github/workflows/ci.generate.ts @@ -1097,6 +1097,26 @@ const ci = { }, ]), }, + wasm: { + name: "build wasm32", + needs: ["pre_build"], + if: "${{ needs.pre_build.outputs.skip_build != 'true' }}", + "runs-on": ubuntuX86Runner, + "timeout-minutes": 30, + steps: skipJobsIfPrAndMarkedSkip([ + ...cloneRepoStep, + installRustStep, + { + name: "Install wasm target", + run: "rustup target add wasm32-unknown-unknown", + }, + { + name: "Cargo build", + // we want this crate to be wasm compatible + run: "cargo build --target wasm32-unknown-unknown -p deno_resolver", + }, + ]), + }, "publish-canary": { name: "publish canary", "runs-on": ubuntuX86Runner, diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index efbf6f61664425..8555b55539444d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -688,6 +688,33 @@ jobs: !./target/*/*.zip !./target/*/*.tar.gz key: '37-cargo-target-${{ matrix.os }}-${{ matrix.arch }}-${{ matrix.profile }}-${{ matrix.job }}-${{ github.sha }}' + wasm: + name: build wasm32 + needs: + - pre_build + if: '${{ needs.pre_build.outputs.skip_build != ''true'' }}' + runs-on: ubuntu-24.04 + timeout-minutes: 30 + steps: + - name: Configure git + run: |- + git config --global core.symlinks true + git config --global fetch.parallel 32 + if: '!(matrix.skip)' + - name: Clone repository + uses: actions/checkout@v4 + with: + fetch-depth: 5 + submodules: false + if: '!(matrix.skip)' + - uses: dsherret/rust-toolchain-file@v1 + if: '!(matrix.skip)' + - name: Install wasm target + run: rustup target add wasm32-unknown-unknown + if: '!(matrix.skip)' + - name: Cargo build + run: cargo build --target wasm32-unknown-unknown -p deno_resolver + if: '!(matrix.skip)' publish-canary: name: publish canary runs-on: ubuntu-24.04 diff --git a/Cargo.lock b/Cargo.lock index 2738579cd31915..030af392b418b2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2215,9 +2215,9 @@ dependencies = [ [[package]] name = "deno_package_json" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a850e68d99edecd4ff3426dd14a3d44a33a6b2175f54d85db7b42e4a3844ed0b" +checksum = "d07d26dbfcc01e636aef86f9baff7faf5338398e74d283d8fe01e39068f48049" dependencies = [ "boxed_error", "deno_error", @@ -5272,7 +5272,6 @@ dependencies = [ "serde_json", "sys_traits", "thiserror 2.0.3", - "tokio", "url", ] diff --git a/Cargo.toml b/Cargo.toml index 767f1ca79baa19..9014177efa0a7f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -128,7 +128,7 @@ data-encoding = "2.3.3" data-url = "=0.3.1" deno_cache_dir = "=0.17.0" deno_error = "=0.5.5" -deno_package_json = { version = "=0.4.1", default-features = false } +deno_package_json = { version = "=0.4.2", default-features = false } deno_unsync = "0.4.2" dlopen2 = "0.6.1" ecb = "=0.1.2" diff --git a/resolvers/node/Cargo.toml b/resolvers/node/Cargo.toml index 46baa94463d4a8..f6bfcf5fd2d02d 100644 --- a/resolvers/node/Cargo.toml +++ b/resolvers/node/Cargo.toml @@ -32,5 +32,4 @@ serde.workspace = true serde_json.workspace = true sys_traits.workspace = true thiserror.workspace = true -tokio.workspace = true url.workspace = true diff --git a/resolvers/node/package_json.rs b/resolvers/node/package_json.rs index ef50b1699cec70..ec3c8addbfc207 100644 --- a/resolvers/node/package_json.rs +++ b/resolvers/node/package_json.rs @@ -14,12 +14,33 @@ use url::Url; use crate::errors::ClosestPkgJsonError; use crate::errors::PackageJsonLoadError; -#[allow(clippy::disallowed_types)] -pub type PackageJsonCacheRc = crate::sync::MaybeArc< - dyn deno_package_json::PackageJsonCache +pub trait NodePackageJsonCache: + deno_package_json::PackageJsonCache + + std::fmt::Debug + + crate::sync::MaybeSend + + crate::sync::MaybeSync +{ + fn as_deno_package_json_cache( + &self, + ) -> &dyn deno_package_json::PackageJsonCache; +} + +impl NodePackageJsonCache for T +where + T: deno_package_json::PackageJsonCache + + std::fmt::Debug + crate::sync::MaybeSend + crate::sync::MaybeSync, ->; +{ + fn as_deno_package_json_cache( + &self, + ) -> &dyn deno_package_json::PackageJsonCache { + self + } +} + +#[allow(clippy::disallowed_types)] +pub type PackageJsonCacheRc = crate::sync::MaybeArc; thread_local! { static CACHE: RefCell> = RefCell::new(HashMap::new()); @@ -93,7 +114,7 @@ impl PackageJsonResolver { self .loader_cache .as_deref() - .map(|cache| cache as &dyn deno_package_json::PackageJsonCache), + .map(|cache| cache.as_deno_package_json_cache()), path, ); match result {