ci: update Node.js versions in tests (#1686)

* ci: update Node.js versions in tests

Use maintenance and current Node.js versions in CI workflows.

* chore: add define to skip experimental warning

Define NODE_API_EXPERIMENTAL_NO_WARNING in tests when NAPI_EXPERIMENTAL
is set.
diff --git a/.github/workflows/ci-win.yml b/.github/workflows/ci-win.yml
index 5ad0fff..a0fdf43 100644
--- a/.github/workflows/ci-win.yml
+++ b/.github/workflows/ci-win.yml
@@ -18,13 +18,21 @@
           - standard
           - experimental
         node-version:
-          - 18.x
           - 20.x
           - 22.x
+          - 24.x
+          - 25.x
         architecture: [x64, x86]
         os:
           - windows-2022
           - windows-2025
+        exclude:
+          # Skip when node 24.x or 25.x AND architecture is x86 since there is
+          # no published Node.js x86 build for those versions.
+          - node-version: 24.x
+            architecture: x86
+          - node-version: 25.x
+            architecture: x86
     runs-on: ${{ matrix.os }}
     steps:
     - name: Harden Runner
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 5198b3c..3e4ef23 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -18,9 +18,10 @@
           - standard
           - experimental
         node-version:
-          - 18.x
           - 20.x
           - 22.x
+          - 24.x
+          - 25.x
         os:
           - macos-latest
           - ubuntu-latest
diff --git a/common.gypi b/common.gypi
index e594f14..5fda7e7 100644
--- a/common.gypi
+++ b/common.gypi
@@ -5,7 +5,7 @@
   },
   'conditions': [
     ['NAPI_VERSION!=""', { 'defines': ['NAPI_VERSION=<@(NAPI_VERSION)'] } ],
-    ['NAPI_VERSION==2147483647', { 'defines': ['NAPI_EXPERIMENTAL'] } ],
+    ['NAPI_VERSION==2147483647', { 'defines': ['NAPI_EXPERIMENTAL', 'NODE_API_EXPERIMENTAL_NO_WARNING'] } ],
     ['disable_deprecated=="true"', {
       'defines': ['NODE_ADDON_API_DISABLE_DEPRECATED']
     }],