diff --git a/.github/workflows/deno-test.yml b/.github/workflows/deno-test.yml index 803abf8e3a..e3fa92b6ec 100644 --- a/.github/workflows/deno-test.yml +++ b/.github/workflows/deno-test.yml @@ -8,11 +8,24 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + + - name: 'Install Node' + uses: actions/setup-node@v4 + with: + node-version: '18.x' + cache: 'npm' + cache-dependency-path: '**/package-lock.json' + - name: Setup Deno uses: denoland/setup-deno@v1 with: - deno-version: v1.x.x + deno-version: v2.2.4 + + - name: 'Install dependencies' + run: npm ci + - name: Vendor Deno modules - run: deno vendor edge-runtime/vendor.ts --output=edge-runtime/vendor --force + run: deno --allow-import --vendor edge-runtime/vendor.ts + - name: Test run: deno test -A edge-runtime/ diff --git a/.github/workflows/pre-release.yml b/.github/workflows/pre-release.yml index c523c269c4..aa70fbf540 100644 --- a/.github/workflows/pre-release.yml +++ b/.github/workflows/pre-release.yml @@ -24,7 +24,7 @@ jobs: uses: denoland/setup-deno@v1 with: # Should match the `DENO_VERSION_RANGE` from https://github.com/netlify/build/blob/main/packages/edge-bundler/node/bridge.ts#L20 - deno-version: v1.46.3 + deno-version: v2.2.4 - name: Extract tag and version id: extract run: |- diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 16f08ab457..403968e214 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -32,7 +32,7 @@ jobs: uses: denoland/setup-deno@v1 with: # Should match the `DENO_VERSION_RANGE` from https://github.com/netlify/build/blob/main/packages/edge-bundler/node/bridge.ts#L20 - deno-version: v1.46.3 + deno-version: v2.2.4 - name: Build run: npm run build if: ${{ steps.release.outputs.release_created }} diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 96bce88839..9c70539529 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -68,7 +68,7 @@ jobs: uses: denoland/setup-deno@v1 with: # Should match the `DENO_VERSION_RANGE` from https://github.com/netlify/build/blob/main/packages/edge-bundler/node/bridge.ts#L20 - deno-version: v1.46.3 + deno-version: v2.2.4 - name: 'Install dependencies' run: npm ci - name: 'Prepare Netlify CLI' @@ -151,7 +151,7 @@ jobs: uses: denoland/setup-deno@v1 with: # Should match the `DENO_VERSION_RANGE` from https://github.com/netlify/edge-bundler/blob/e55f825bd985d3c92e21d1b765d71e70d5628fba/node/bridge.ts#L17 - deno-version: v1.46.3 + deno-version: v2.2.4 - name: 'Install dependencies' run: npm ci - name: 'Build' @@ -218,7 +218,7 @@ jobs: uses: denoland/setup-deno@v1 with: # Should match the `DENO_VERSION_RANGE` from https://github.com/netlify/build/blob/main/packages/edge-bundler/node/bridge.ts#L20 - deno-version: v1.46.3 + deno-version: v2.2.4 - name: 'Install dependencies' run: npm ci - name: 'Build' diff --git a/.github/workflows/size-check.yml b/.github/workflows/size-check.yml index 7a61c3308c..480775fe8c 100644 --- a/.github/workflows/size-check.yml +++ b/.github/workflows/size-check.yml @@ -20,12 +20,15 @@ jobs: node-version: '18.x' cache: 'npm' cache-dependency-path: '**/package-lock.json' + - name: Install Deno uses: denoland/setup-deno@v1 with: # Should match the `DENO_VERSION_RANGE` from https://github.com/netlify/build/blob/main/packages/edge-bundler/node/bridge.ts#L20 - deno-version: v1.46.3 - - run: npm ci + deno-version: v2.2.4 + + - name: 'Install dependencies' + run: npm ci - name: Package size report uses: pkg-size/action@v1 diff --git a/.github/workflows/test-e2e.yml b/.github/workflows/test-e2e.yml index 1e9d847535..7375ee69c6 100644 --- a/.github/workflows/test-e2e.yml +++ b/.github/workflows/test-e2e.yml @@ -165,7 +165,7 @@ jobs: uses: denoland/setup-deno@v1 with: # Should match the `DENO_VERSION_RANGE` from https://github.com/netlify/build/blob/main/packages/edge-bundler/node/bridge.ts#L20 - deno-version: v1.46.3 + deno-version: v2.2.4 - name: install runtime run: npm install --ignore-scripts diff --git a/deno.json b/edge-runtime/deno.json similarity index 74% rename from deno.json rename to edge-runtime/deno.json index 561c910ed5..28e8ea6c3c 100644 --- a/deno.json +++ b/edge-runtime/deno.json @@ -6,6 +6,5 @@ }, "imports": { "@netlify/edge-functions": "https://edge.netlify.com/v1/index.ts" - }, - "importMap": "./edge-runtime/vendor/import_map.json" + } } diff --git a/edge-runtime/vendor.ts b/edge-runtime/vendor.ts index d49037792f..3618996263 100644 --- a/edge-runtime/vendor.ts +++ b/edge-runtime/vendor.ts @@ -14,3 +14,11 @@ import 'https://deno.land/x/path_to_regexp@v6.2.1/index.ts' import 'https://deno.land/x/htmlrewriter@v1.0.0/src/index.ts' import 'https://v1-7-0--edge-utils.netlify.app/logger/mod.ts' + +// Types +import 'https://deno.land/std@0.175.0/node/_global.d.ts' +import 'https://deno.land/std@0.175.0/node/_events.d.ts' +import 'https://deno.land/std@0.175.0/node/_stream.d.ts' +import 'https://deno.land/std@0.175.0/node/internal/buffer.d.ts' +import 'https://deno.land/std@0.175.0/types.d.ts' +import 'https://deno.land/x/htmlrewriter@v1.0.0/src/types.d.ts' diff --git a/tools/build-helpers.js b/tools/build-helpers.js index 0d2feb0f06..f1563b353e 100644 --- a/tools/build-helpers.js +++ b/tools/build-helpers.js @@ -38,8 +38,7 @@ export async function vendorDeno({ } console.log(`📦 Vendoring Deno modules for '${vendorSource}' into '${vendorDest}'...`) - // --output=${vendorDest} - await execaCommand(`deno vendor ${vendorSource} --force`, { + await execaCommand(`deno --allow-import --vendor ${vendorSource}`, { cwd, }) @@ -50,7 +49,7 @@ export async function vendorDeno({ // see https://github.com/denoland/deno/issues/14123 // to workaround this we copy the wasm files manually // (note Deno 2 allows to vendor wasm files, but it also require modules to import them and not fetch and instantiate them - // se being able to drop downloading is dependent on implementation of wasm handling in external modules as well) + // so being able to drop downloading is dependent on implementation of wasm handling in external modules as well) await Promise.all( wasmFilesToDownload.map(async (urlString) => { const url = new URL(urlString)