From 8c9167e44246e55d136e9ac987cd393546024fc7 Mon Sep 17 00:00:00 2001
From: Michael Kriese <michael.kriese@visualon.de>
Date: Mon, 29 Jan 2024 15:29:22 +0100
Subject: [PATCH] feat(node): use node-version datasource (#26918)

---
 lib/modules/manager/nodenv/extract.spec.ts    |  9 +++------
 lib/modules/manager/nodenv/extract.ts         |  5 ++---
 lib/modules/manager/nodenv/index.ts           |  4 ++--
 .../extract/__snapshots__/index.spec.ts.snap  | 20 +++++--------------
 .../manager/npm/extract/common/dependency.ts  | 10 +++-------
 lib/modules/manager/npm/extract/index.spec.ts | 15 ++++----------
 lib/modules/manager/npm/index.ts              |  7 ++++++-
 lib/modules/manager/nvm/extract.spec.ts       |  9 +++------
 lib/modules/manager/nvm/extract.ts            |  5 ++---
 lib/modules/manager/nvm/index.ts              |  4 ++--
 .../travis/__snapshots__/extract.spec.ts.snap |  6 ++----
 lib/modules/manager/travis/extract.spec.ts    | 18 ++++++-----------
 lib/modules/manager/travis/extract.ts         | 11 ++++------
 lib/modules/manager/travis/index.ts           |  4 ++--
 14 files changed, 46 insertions(+), 81 deletions(-)

diff --git a/lib/modules/manager/nodenv/extract.spec.ts b/lib/modules/manager/nodenv/extract.spec.ts
index f0b6ded133..d21928d08b 100644
--- a/lib/modules/manager/nodenv/extract.spec.ts
+++ b/lib/modules/manager/nodenv/extract.spec.ts
@@ -7,9 +7,8 @@ describe('modules/manager/nodenv/extract', () => {
       expect(res.deps).toEqual([
         {
           currentValue: '8.4.0',
-          datasource: 'github-tags',
+          datasource: 'node-version',
           depName: 'node',
-          packageName: 'nodejs/node',
         },
       ]);
     });
@@ -19,9 +18,8 @@ describe('modules/manager/nodenv/extract', () => {
       expect(res.deps).toEqual([
         {
           currentValue: '8.4',
-          datasource: 'github-tags',
+          datasource: 'node-version',
           depName: 'node',
-          packageName: 'nodejs/node',
         },
       ]);
     });
@@ -31,9 +29,8 @@ describe('modules/manager/nodenv/extract', () => {
       expect(res.deps).toEqual([
         {
           currentValue: 'latestn',
-          datasource: 'github-tags',
+          datasource: 'node-version',
           depName: 'node',
-          packageName: 'nodejs/node',
         },
       ]);
     });
diff --git a/lib/modules/manager/nodenv/extract.ts b/lib/modules/manager/nodenv/extract.ts
index a5f6a50f91..dcf6e5127a 100644
--- a/lib/modules/manager/nodenv/extract.ts
+++ b/lib/modules/manager/nodenv/extract.ts
@@ -1,12 +1,11 @@
-import { GithubTagsDatasource } from '../../datasource/github-tags';
+import { NodeVersionDatasource } from '../../datasource/node-version';
 import type { PackageDependency, PackageFileContent } from '../types';
 
 export function extractPackageFile(content: string): PackageFileContent {
   const dep: PackageDependency = {
     depName: 'node',
     currentValue: content.trim(),
-    datasource: GithubTagsDatasource.id,
-    packageName: 'nodejs/node',
+    datasource: NodeVersionDatasource.id,
   };
   return { deps: [dep] };
 }
diff --git a/lib/modules/manager/nodenv/index.ts b/lib/modules/manager/nodenv/index.ts
index 7343b6aced..82de3127ad 100644
--- a/lib/modules/manager/nodenv/index.ts
+++ b/lib/modules/manager/nodenv/index.ts
@@ -1,5 +1,5 @@
 import type { Category } from '../../../constants';
-import { GithubTagsDatasource } from '../../datasource/github-tags';
+import { NodeVersionDatasource } from '../../datasource/node-version';
 import * as nodeVersioning from '../../versioning/node';
 
 export { extractPackageFile } from './extract';
@@ -14,4 +14,4 @@ export const defaultConfig = {
 
 export const categories: Category[] = ['js', 'node'];
 
-export const supportedDatasources = [GithubTagsDatasource.id];
+export const supportedDatasources = [NodeVersionDatasource.id];
diff --git a/lib/modules/manager/npm/extract/__snapshots__/index.spec.ts.snap b/lib/modules/manager/npm/extract/__snapshots__/index.spec.ts.snap
index 863cb69ff2..f8151a8d67 100644
--- a/lib/modules/manager/npm/extract/__snapshots__/index.spec.ts.snap
+++ b/lib/modules/manager/npm/extract/__snapshots__/index.spec.ts.snap
@@ -82,12 +82,10 @@ exports[`modules/manager/npm/extract/index .extractPackageFile() extracts engine
     {
       "commitMessageTopic": "Node.js",
       "currentValue": ">= 8.9.2",
-      "datasource": "github-tags",
+      "datasource": "node-version",
       "depName": "node",
       "depType": "engines",
-      "packageName": "nodejs/node",
       "prettyDepType": "engine",
-      "versioning": "node",
     },
     {
       "commitMessageTopic": "npm",
@@ -440,22 +438,18 @@ exports[`modules/manager/npm/extract/index .extractPackageFile() extracts volta
     {
       "commitMessageTopic": "Node.js",
       "currentValue": "8.9.2",
-      "datasource": "github-tags",
+      "datasource": "node-version",
       "depName": "node",
       "depType": "engines",
-      "packageName": "nodejs/node",
       "prettyDepType": "engine",
-      "versioning": "node",
     },
     {
       "commitMessageTopic": "Node.js",
       "currentValue": "8.9.2",
-      "datasource": "github-tags",
+      "datasource": "node-version",
       "depName": "node",
       "depType": "volta",
-      "packageName": "nodejs/node",
       "prettyDepType": "volta",
-      "versioning": "node",
     },
     {
       "commitMessageTopic": "Yarn",
@@ -512,22 +506,18 @@ exports[`modules/manager/npm/extract/index .extractPackageFile() extracts volta
     {
       "commitMessageTopic": "Node.js",
       "currentValue": "8.9.2",
-      "datasource": "github-tags",
+      "datasource": "node-version",
       "depName": "node",
       "depType": "engines",
-      "packageName": "nodejs/node",
       "prettyDepType": "engine",
-      "versioning": "node",
     },
     {
       "commitMessageTopic": "Node.js",
       "currentValue": "8.9.2",
-      "datasource": "github-tags",
+      "datasource": "node-version",
       "depName": "node",
       "depType": "volta",
-      "packageName": "nodejs/node",
       "prettyDepType": "volta",
-      "versioning": "node",
     },
     {
       "commitMessageTopic": "Yarn",
diff --git a/lib/modules/manager/npm/extract/common/dependency.ts b/lib/modules/manager/npm/extract/common/dependency.ts
index 1fc13de840..36caa1efc6 100644
--- a/lib/modules/manager/npm/extract/common/dependency.ts
+++ b/lib/modules/manager/npm/extract/common/dependency.ts
@@ -3,8 +3,8 @@ import validateNpmPackageName from 'validate-npm-package-name';
 import { logger } from '../../../../../logger';
 import { regEx } from '../../../../../util/regex';
 import { GithubTagsDatasource } from '../../../../datasource/github-tags';
+import { NodeVersionDatasource } from '../../../../datasource/node-version';
 import { NpmDatasource } from '../../../../datasource/npm';
-import * as nodeVersioning from '../../../../versioning/node';
 import { api, isValid, isVersion } from '../../../../versioning/npm';
 import type { PackageDependency } from '../../../types';
 
@@ -38,9 +38,7 @@ export function extractDependency(
   dep.currentValue = input.trim();
   if (depType === 'engines' || depType === 'packageManager') {
     if (depName === 'node') {
-      dep.datasource = GithubTagsDatasource.id;
-      dep.packageName = 'nodejs/node';
-      dep.versioning = nodeVersioning.id;
+      dep.datasource = NodeVersionDatasource.id;
     } else if (depName === 'yarn') {
       dep.datasource = NpmDatasource.id;
       dep.commitMessageTopic = 'Yarn';
@@ -70,9 +68,7 @@ export function extractDependency(
   // support for volta
   if (depType === 'volta') {
     if (depName === 'node') {
-      dep.datasource = GithubTagsDatasource.id;
-      dep.packageName = 'nodejs/node';
-      dep.versioning = nodeVersioning.id;
+      dep.datasource = NodeVersionDatasource.id;
     } else if (depName === 'yarn') {
       dep.datasource = NpmDatasource.id;
       dep.commitMessageTopic = 'Yarn';
diff --git a/lib/modules/manager/npm/extract/index.spec.ts b/lib/modules/manager/npm/extract/index.spec.ts
index fbedd8a31f..428ad3c13e 100644
--- a/lib/modules/manager/npm/extract/index.spec.ts
+++ b/lib/modules/manager/npm/extract/index.spec.ts
@@ -366,8 +366,7 @@ describe('modules/manager/npm/extract/index', () => {
           {
             depName: 'node',
             currentValue: '>= 8.9.2',
-            datasource: 'github-tags',
-            versioning: 'node',
+            datasource: 'node-version',
             depType: 'engines',
           },
           {
@@ -462,12 +461,10 @@ describe('modules/manager/npm/extract/index', () => {
           {
             commitMessageTopic: 'Node.js',
             currentValue: '8.9.2',
-            datasource: 'github-tags',
+            datasource: 'node-version',
             depName: 'node',
             depType: 'volta',
-            packageName: 'nodejs/node',
             prettyDepType: 'volta',
-            versioning: 'node',
           },
           {
             commitMessageTopic: 'Yarn',
@@ -506,12 +503,10 @@ describe('modules/manager/npm/extract/index', () => {
           {
             commitMessageTopic: 'Node.js',
             currentValue: '16.0.0',
-            datasource: 'github-tags',
+            datasource: 'node-version',
             depName: 'node',
             depType: 'volta',
-            packageName: 'nodejs/node',
             prettyDepType: 'volta',
-            versioning: 'node',
           },
           {
             commitMessageTopic: 'Yarn',
@@ -683,12 +678,10 @@ describe('modules/manager/npm/extract/index', () => {
           {
             commitMessageTopic: 'Node.js',
             currentValue: '8.9.2',
-            datasource: 'github-tags',
+            datasource: 'node-version',
             depName: 'node',
             depType: 'engines',
-            packageName: 'nodejs/node',
             prettyDepType: 'engine',
-            versioning: 'node',
           },
           {
             commitMessageTopic: 'Yarn',
diff --git a/lib/modules/manager/npm/index.ts b/lib/modules/manager/npm/index.ts
index 26b11772e3..96e3741735 100644
--- a/lib/modules/manager/npm/index.ts
+++ b/lib/modules/manager/npm/index.ts
@@ -1,5 +1,6 @@
 import type { Category } from '../../../constants';
 import { GithubTagsDatasource } from '../../datasource/github-tags';
+import { NodeVersionDatasource } from '../../datasource/node-version';
 import { NpmDatasource } from '../../datasource/npm';
 import * as npmVersioning from '../../versioning/npm';
 
@@ -31,4 +32,8 @@ export const defaultConfig = {
 
 export const categories: Category[] = ['js'];
 
-export const supportedDatasources = [GithubTagsDatasource.id, NpmDatasource.id];
+export const supportedDatasources = [
+  GithubTagsDatasource.id,
+  NpmDatasource.id,
+  NodeVersionDatasource.id,
+];
diff --git a/lib/modules/manager/nvm/extract.spec.ts b/lib/modules/manager/nvm/extract.spec.ts
index 85b94329c2..6bbe9f4d24 100644
--- a/lib/modules/manager/nvm/extract.spec.ts
+++ b/lib/modules/manager/nvm/extract.spec.ts
@@ -7,9 +7,8 @@ describe('modules/manager/nvm/extract', () => {
       expect(res.deps).toEqual([
         {
           currentValue: '8.4.0',
-          datasource: 'github-tags',
+          datasource: 'node-version',
           depName: 'node',
-          packageName: 'nodejs/node',
         },
       ]);
     });
@@ -19,9 +18,8 @@ describe('modules/manager/nvm/extract', () => {
       expect(res.deps).toEqual([
         {
           currentValue: '8.4',
-          datasource: 'github-tags',
+          datasource: 'node-version',
           depName: 'node',
-          packageName: 'nodejs/node',
         },
       ]);
     });
@@ -31,9 +29,8 @@ describe('modules/manager/nvm/extract', () => {
       expect(res.deps).toEqual([
         {
           currentValue: 'latestn',
-          datasource: 'github-tags',
+          datasource: 'node-version',
           depName: 'node',
-          packageName: 'nodejs/node',
         },
       ]);
     });
diff --git a/lib/modules/manager/nvm/extract.ts b/lib/modules/manager/nvm/extract.ts
index a5f6a50f91..dcf6e5127a 100644
--- a/lib/modules/manager/nvm/extract.ts
+++ b/lib/modules/manager/nvm/extract.ts
@@ -1,12 +1,11 @@
-import { GithubTagsDatasource } from '../../datasource/github-tags';
+import { NodeVersionDatasource } from '../../datasource/node-version';
 import type { PackageDependency, PackageFileContent } from '../types';
 
 export function extractPackageFile(content: string): PackageFileContent {
   const dep: PackageDependency = {
     depName: 'node',
     currentValue: content.trim(),
-    datasource: GithubTagsDatasource.id,
-    packageName: 'nodejs/node',
+    datasource: NodeVersionDatasource.id,
   };
   return { deps: [dep] };
 }
diff --git a/lib/modules/manager/nvm/index.ts b/lib/modules/manager/nvm/index.ts
index 0354ac17c1..6ac1f0786a 100644
--- a/lib/modules/manager/nvm/index.ts
+++ b/lib/modules/manager/nvm/index.ts
@@ -1,5 +1,5 @@
 import type { Category } from '../../../constants';
-import { GithubTagsDatasource } from '../../datasource/github-tags';
+import { NodeVersionDatasource } from '../../datasource/node-version';
 import * as nodeVersioning from '../../versioning/node';
 
 export { extractPackageFile } from './extract';
@@ -15,4 +15,4 @@ export const defaultConfig = {
 
 export const categories: Category[] = ['js', 'node'];
 
-export const supportedDatasources = [GithubTagsDatasource.id];
+export const supportedDatasources = [NodeVersionDatasource.id];
diff --git a/lib/modules/manager/travis/__snapshots__/extract.spec.ts.snap b/lib/modules/manager/travis/__snapshots__/extract.spec.ts.snap
index 772c5e4fb7..16c0c57dc0 100644
--- a/lib/modules/manager/travis/__snapshots__/extract.spec.ts.snap
+++ b/lib/modules/manager/travis/__snapshots__/extract.spec.ts.snap
@@ -5,15 +5,13 @@ exports[`modules/manager/travis/extract extractPackageFile() returns results 1`]
   "deps": [
     {
       "currentValue": "6",
-      "datasource": "github-tags",
+      "datasource": "node-version",
       "depName": "node",
-      "packageName": "nodejs/node",
     },
     {
       "currentValue": "8",
-      "datasource": "github-tags",
+      "datasource": "node-version",
       "depName": "node",
-      "packageName": "nodejs/node",
     },
   ],
 }
diff --git a/lib/modules/manager/travis/extract.spec.ts b/lib/modules/manager/travis/extract.spec.ts
index 4445302c5c..0871e4c718 100644
--- a/lib/modules/manager/travis/extract.spec.ts
+++ b/lib/modules/manager/travis/extract.spec.ts
@@ -32,9 +32,8 @@ describe('modules/manager/travis/extract', () => {
         deps: [
           {
             currentValue: '11.10.1',
-            datasource: 'github-tags',
+            datasource: 'node-version',
             depName: 'node',
-            packageName: 'nodejs/node',
           },
         ],
       });
@@ -46,15 +45,13 @@ describe('modules/manager/travis/extract', () => {
         deps: [
           {
             currentValue: '11.10.1',
-            datasource: 'github-tags',
+            datasource: 'node-version',
             depName: 'node',
-            packageName: 'nodejs/node',
           },
           {
             currentValue: '11.10.2',
-            datasource: 'github-tags',
+            datasource: 'node-version',
             depName: 'node',
-            packageName: 'nodejs/node',
           },
         ],
       });
@@ -66,15 +63,13 @@ describe('modules/manager/travis/extract', () => {
         deps: [
           {
             currentValue: '11.10.1',
-            datasource: 'github-tags',
+            datasource: 'node-version',
             depName: 'node',
-            packageName: 'nodejs/node',
           },
           {
             currentValue: '11.10.2',
-            datasource: 'github-tags',
+            datasource: 'node-version',
             depName: 'node',
-            packageName: 'nodejs/node',
           },
         ],
       });
@@ -86,9 +81,8 @@ describe('modules/manager/travis/extract', () => {
         deps: [
           {
             currentValue: '11.10.1',
-            datasource: 'github-tags',
+            datasource: 'node-version',
             depName: 'node',
-            packageName: 'nodejs/node',
           },
         ],
       });
diff --git a/lib/modules/manager/travis/extract.ts b/lib/modules/manager/travis/extract.ts
index 79da049c49..4916a823e5 100644
--- a/lib/modules/manager/travis/extract.ts
+++ b/lib/modules/manager/travis/extract.ts
@@ -1,7 +1,7 @@
 import is from '@sindresorhus/is';
 import { logger } from '../../../logger';
 import { parseSingleYaml } from '../../../util/yaml';
-import { GithubTagsDatasource } from '../../datasource/github-tags';
+import { NodeVersionDatasource } from '../../datasource/node-version';
 import type { PackageDependency, PackageFileContent } from '../types';
 import type { TravisMatrixItem, TravisYaml } from './types';
 
@@ -23,8 +23,7 @@ export function extractPackageFile(
   if (doc && is.array(doc.node_js)) {
     deps = doc.node_js.map((currentValue) => ({
       depName: 'node',
-      datasource: GithubTagsDatasource.id,
-      packageName: 'nodejs/node',
+      datasource: NodeVersionDatasource.id,
       currentValue: currentValue.toString(),
     }));
   }
@@ -47,16 +46,14 @@ export function extractPackageFile(
         item.node_js.forEach((currentValue) => {
           deps.push({
             depName: 'node',
-            datasource: GithubTagsDatasource.id,
-            packageName: 'nodejs/node',
+            datasource: NodeVersionDatasource.id,
             currentValue: currentValue.toString(),
           });
         });
       } else if (is.string(item.node_js)) {
         deps.push({
           depName: 'node',
-          datasource: GithubTagsDatasource.id,
-          packageName: 'nodejs/node',
+          datasource: NodeVersionDatasource.id,
           currentValue: item.node_js.toString(),
         });
       }
diff --git a/lib/modules/manager/travis/index.ts b/lib/modules/manager/travis/index.ts
index 048cc096f2..87a16020b7 100644
--- a/lib/modules/manager/travis/index.ts
+++ b/lib/modules/manager/travis/index.ts
@@ -1,10 +1,10 @@
 import type { Category } from '../../../constants';
-import { GithubTagsDatasource } from '../../datasource/github-tags';
+import { NodeVersionDatasource } from '../../datasource/node-version';
 import * as nodeVersioning from '../../versioning/node';
 
 export { extractPackageFile } from './extract';
 
-export const supportedDatasources = [GithubTagsDatasource.id];
+export const supportedDatasources = [NodeVersionDatasource.id];
 
 export const defaultConfig = {
   fileMatch: ['^\\.travis\\.ya?ml$'],
-- 
GitLab