diff --git a/lib/datasource/api.ts b/lib/datasource/api.ts index 356af4bc8a106f..342bb6f2202e94 100644 --- a/lib/datasource/api.ts +++ b/lib/datasource/api.ts @@ -19,6 +19,7 @@ import { HelmDatasource } from './helm'; import { HexDatasource } from './hex'; import * as jenkinsPlugins from './jenkins-plugins'; import * as maven from './maven'; +import { NodeDatasource } from './node'; import * as npm from './npm'; import * as nuget from './nuget'; import { OrbDatasource } from './orb'; @@ -59,6 +60,7 @@ api.set('hex', new HexDatasource()); api.set('jenkins-plugins', jenkinsPlugins); api.set('maven', maven); api.set('npm', npm); +api.set(NodeDatasource.id, new NodeDatasource()); api.set('nuget', nuget); api.set('orb', new OrbDatasource()); api.set('packagist', packagist); diff --git a/lib/datasource/node/__fixtures__/index.json b/lib/datasource/node/__fixtures__/index.json new file mode 100644 index 00000000000000..3b620b7385b76c --- /dev/null +++ b/lib/datasource/node/__fixtures__/index.json @@ -0,0 +1,66 @@ +[ + {"version":"v16.9.0","date":"2021-09-07","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-arm64-tar","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.21.1","v8":"9.3.345.16","uv":"1.42.0","zlib":"1.2.11","openssl":"1.1.1l+quic","modules":"93","lts":false,"security":false}, + {"version":"v16.8.0","date":"2021-08-25","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-arm64-tar","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.21.0","v8":"9.2.230.21","uv":"1.42.0","zlib":"1.2.11","openssl":"1.1.1k+quic","modules":"93","lts":false,"security":false}, + {"version":"v16.7.0","date":"2021-08-18","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-arm64-tar","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.20.3","v8":"9.2.230.21","uv":"1.42.0","zlib":"1.2.11","openssl":"1.1.1k+quic","modules":"93","lts":false,"security":false}, + {"version":"v16.6.2","date":"2021-08-11","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-arm64-tar","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.20.3","v8":"9.2.230.21","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1k+quic","modules":"93","lts":false,"security":true}, + {"version":"v16.6.1","date":"2021-08-03","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-arm64-tar","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.20.3","v8":"9.2.230.21","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1k+quic","modules":"93","lts":false,"security":false}, + {"version":"v16.6.0","date":"2021-07-29","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-arm64-tar","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.19.1","v8":"9.2.230.21","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1k+quic","modules":"93","lts":false,"security":true}, + {"version":"v16.5.0","date":"2021-07-14","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-arm64-tar","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.19.1","v8":"9.1.269.38","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1k+quic","modules":"93","lts":false,"security":false}, + {"version":"v16.4.2","date":"2021-07-05","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-arm64-tar","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.18.1","v8":"9.1.269.36","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1k+quic","modules":"93","lts":false,"security":false}, + {"version":"v16.4.1","date":"2021-07-01","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-arm64-tar","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.18.1","v8":"9.1.269.36","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1k+quic","modules":"93","lts":false,"security":true}, + {"version":"v16.4.0","date":"2021-06-23","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-arm64-tar","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.18.1","v8":"9.1.269.36","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1k+quic","modules":"93","lts":false,"security":false}, + {"version":"v16.3.0","date":"2021-06-03","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-arm64-tar","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.15.1","v8":"9.0.257.25","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1k+quic","modules":"93","lts":false,"security":false}, + {"version":"v16.2.0","date":"2021-05-19","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-arm64-tar","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.13.0","v8":"9.0.257.25","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1k+quic","modules":"93","lts":false,"security":false}, + {"version":"v16.1.0","date":"2021-05-04","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-arm64-tar","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.11.2","v8":"9.0.257.24","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1k+quic","modules":"93","lts":false,"security":false}, + {"version":"v16.0.0","date":"2021-04-20","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-arm64-tar","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.10.0","v8":"9.0.257.17","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1k+quic","modules":"93","lts":false,"security":false}, + {"version":"v15.14.0","date":"2021-04-06","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.7.6","v8":"8.6.395.17","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1k+quic","modules":"88","lts":false,"security":false}, + {"version":"v15.13.0","date":"2021-03-31","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.7.6","v8":"8.6.395.17","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1j+quic","modules":"88","lts":false,"security":false}, + {"version":"v15.12.0","date":"2021-03-17","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.6.3","v8":"8.6.395.17","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1j+quic","modules":"88","lts":false,"security":false}, + {"version":"v15.11.0","date":"2021-03-03","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.6.0","v8":"8.6.395.17","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1j","modules":"88","lts":false,"security":false}, + {"version":"v15.10.0","date":"2021-02-23","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.5.3","v8":"8.6.395.17","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1j","modules":"88","lts":false,"security":true}, + {"version":"v15.9.0","date":"2021-02-18","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.5.3","v8":"8.6.395.17","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1i","modules":"88","lts":false,"security":false}, + {"version":"v15.8.0","date":"2021-02-02","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.5.1","v8":"8.6.395.17","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1i","modules":"88","lts":false,"security":false}, + {"version":"v15.7.0","date":"2021-01-25","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.4.3","v8":"8.6.395.17","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1i","modules":"88","lts":false,"security":false}, + {"version":"v15.6.0","date":"2021-01-14","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.4.0","v8":"8.6.395.17","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1i","modules":"88","lts":false,"security":false}, + {"version":"v15.5.1","date":"2021-01-04","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.3.0","v8":"8.6.395.17","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1i","modules":"88","lts":false,"security":true}, + {"version":"v15.5.0","date":"2020-12-22","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.3.0","v8":"8.6.395.17","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1i","modules":"88","lts":false,"security":false}, + {"version":"v15.4.0","date":"2020-12-09","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.0.15","v8":"8.6.395.17","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"88","lts":false,"security":false}, + {"version":"v15.3.0","date":"2020-11-24","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.0.14","v8":"8.6.395.17","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"88","lts":false,"security":false}, + {"version":"v15.2.1","date":"2020-11-16","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.0.8","v8":"8.6.395.17","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"88","lts":false,"security":true}, + {"version":"v15.2.0","date":"2020-11-10","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.0.8","v8":"8.6.395.17","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"88","lts":false,"security":false}, + {"version":"v15.1.0","date":"2020-11-04","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.0.8","v8":"8.6.395.17","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"88","lts":false,"security":false}, + {"version":"v15.0.1","date":"2020-10-21","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.0.3","v8":"8.6.395.17","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"88","lts":false,"security":false}, + {"version":"v15.0.0","date":"2020-10-20","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"7.0.2","v8":"8.6.395.16","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"88","lts":false,"security":false}, + {"version":"v14.17.6","date":"2021-08-30","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.15","v8":"8.4.371.23","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1l","modules":"83","lts":"Fermium","security":true}, + {"version":"v14.17.5","date":"2021-08-11","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.14","v8":"8.4.371.23","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1k","modules":"83","lts":"Fermium","security":true}, + {"version":"v14.17.4","date":"2021-07-29","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.14","v8":"8.4.371.23","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1k","modules":"83","lts":"Fermium","security":true}, + {"version":"v14.17.3","date":"2021-07-05","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.13","v8":"8.4.371.23","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1k","modules":"83","lts":"Fermium","security":true}, + {"version":"v14.17.2","date":"2021-07-01","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.13","v8":"8.4.371.23","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1k","modules":"83","lts":"Fermium","security":true}, + {"version":"v14.17.1","date":"2021-06-15","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.13","v8":"8.4.371.23","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1k","modules":"83","lts":"Fermium","security":false}, + {"version":"v14.17.0","date":"2021-05-11","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.13","v8":"8.4.371.23","uv":"1.41.0","zlib":"1.2.11","openssl":"1.1.1k","modules":"83","lts":"Fermium","security":false}, + {"version":"v14.16.1","date":"2021-04-06","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.12","v8":"8.4.371.19","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1k","modules":"83","lts":"Fermium","security":true}, + {"version":"v14.16.0","date":"2021-02-23","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.11","v8":"8.4.371.19","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1j","modules":"83","lts":"Fermium","security":true}, + {"version":"v14.15.5","date":"2021-02-09","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.11","v8":"8.4.371.19","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1i","modules":"83","lts":"Fermium","security":false}, + {"version":"v14.15.4","date":"2021-01-04","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.10","v8":"8.4.371.19","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1i","modules":"83","lts":"Fermium","security":true}, + {"version":"v14.15.3","date":"2020-12-17","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.9","v8":"8.4.371.19","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"83","lts":"Fermium","security":false}, + {"version":"v14.15.2","date":"2020-12-15","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.9","v8":"8.4.371.19","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"83","lts":"Fermium","security":false}, + {"version":"v14.15.1","date":"2020-11-16","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.8","v8":"8.4.371.19","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"83","lts":"Fermium","security":true}, + {"version":"v14.15.0","date":"2020-10-27","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.8","v8":"8.4.371.19","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"83","lts":"Fermium","security":false}, + {"version":"v14.14.0","date":"2020-10-15","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.8","v8":"8.4.371.19","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"83","lts":false,"security":false}, + {"version":"v14.13.1","date":"2020-10-07","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.8","v8":"8.4.371.19","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"83","lts":false,"security":false}, + {"version":"v14.13.0","date":"2020-09-29","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.8","v8":"8.4.371.19","uv":"1.40.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"83","lts":false,"security":false}, + {"version":"v14.12.0","date":"2020-09-22","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.8","v8":"8.4.371.19","uv":"1.39.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"83","lts":false,"security":false}, + {"version":"v14.11.0","date":"2020-09-15","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.8","v8":"8.4.371.19","uv":"1.39.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"83","lts":false,"security":true}, + {"version":"v14.10.1","date":"2020-09-10","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.8","v8":"8.4.371.19","uv":"1.39.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"83","lts":false,"security":false}, + {"version":"v14.10.0","date":"2020-09-08","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.8","v8":"8.4.371.19","uv":"1.39.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"83","lts":false,"security":false}, + {"version":"v14.9.0","date":"2020-08-27","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.8","v8":"8.4.371.19","uv":"1.39.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"83","lts":false,"security":false}, + {"version":"v14.8.0","date":"2020-08-11","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.7","v8":"8.4.371.19","uv":"1.38.1","zlib":"1.2.11","openssl":"1.1.1g","modules":"83","lts":false,"security":false}, + {"version":"v14.7.0","date":"2020-07-29","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.7","v8":"8.4.371.19","uv":"1.38.1","zlib":"1.2.11","openssl":"1.1.1g","modules":"83","lts":false,"security":false}, + {"version":"v14.6.0","date":"2020-07-20","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.6","v8":"8.4.371.19","uv":"1.38.1","zlib":"1.2.11","openssl":"1.1.1g","modules":"83","lts":false,"security":false}, + {"version":"v14.5.0","date":"2020-06-30","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.5","v8":"8.3.110.9","uv":"1.38.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"83","lts":false,"security":false}, + {"version":"v14.4.0","date":"2020-06-02","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.5","v8":"8.1.307.31","uv":"1.37.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"83","lts":false,"security":true}, + {"version":"v14.3.0","date":"2020-05-19","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.5","v8":"8.1.307.31","uv":"1.37.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"83","lts":false,"security":false}, + {"version":"v14.2.0","date":"2020-05-05","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.4","v8":"8.1.307.31","uv":"1.37.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"83","lts":false,"security":false}, + {"version":"v14.1.0","date":"2020-04-29","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.4","v8":"8.1.307.31","uv":"1.37.0","zlib":"1.2.11","openssl":"1.1.1g","modules":"83","lts":false,"security":false}, + {"version":"v14.0.0","date":"2020-04-21","files":["aix-ppc64","headers","linux-arm64","linux-armv7l","linux-ppc64le","linux-s390x","linux-x64","osx-x64-pkg","osx-x64-tar","src","win-x64-7z","win-x64-exe","win-x64-msi","win-x64-zip","win-x86-7z","win-x86-exe","win-x86-msi","win-x86-zip"],"npm":"6.14.4","v8":"8.1.307.30","uv":"1.37.0","zlib":"1.2.11","openssl":"1.1.1f","modules":"83","lts":false,"security":false} + ] diff --git a/lib/datasource/node/__snapshots__/index.spec.ts.snap b/lib/datasource/node/__snapshots__/index.spec.ts.snap new file mode 100644 index 00000000000000..64380f4b0b1720 --- /dev/null +++ b/lib/datasource/node/__snapshots__/index.spec.ts.snap @@ -0,0 +1,331 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`datasource/node/index getReleases processes real data 1`] = ` +Object { + "homepage": "https://nodejs.org", + "registryUrl": "https://nodejs.org/dist", + "releases": Array [ + Object { + "isStable": false, + "releaseTimestamp": "2020-04-21T00:00:00.000Z", + "version": "v14.0.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-04-29T00:00:00.000Z", + "version": "v14.1.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-05-05T00:00:00.000Z", + "version": "v14.2.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-05-19T00:00:00.000Z", + "version": "v14.3.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-06-02T00:00:00.000Z", + "version": "v14.4.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-06-30T00:00:00.000Z", + "version": "v14.5.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-07-20T00:00:00.000Z", + "version": "v14.6.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-07-29T00:00:00.000Z", + "version": "v14.7.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-08-11T00:00:00.000Z", + "version": "v14.8.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-08-27T00:00:00.000Z", + "version": "v14.9.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-09-08T00:00:00.000Z", + "version": "v14.10.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-09-10T00:00:00.000Z", + "version": "v14.10.1", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-09-15T00:00:00.000Z", + "version": "v14.11.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-09-22T00:00:00.000Z", + "version": "v14.12.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-09-29T00:00:00.000Z", + "version": "v14.13.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-10-07T00:00:00.000Z", + "version": "v14.13.1", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-10-15T00:00:00.000Z", + "version": "v14.14.0", + }, + Object { + "isStable": true, + "releaseTimestamp": "2020-10-27T00:00:00.000Z", + "version": "v14.15.0", + }, + Object { + "isStable": true, + "releaseTimestamp": "2020-11-16T00:00:00.000Z", + "version": "v14.15.1", + }, + Object { + "isStable": true, + "releaseTimestamp": "2020-12-15T00:00:00.000Z", + "version": "v14.15.2", + }, + Object { + "isStable": true, + "releaseTimestamp": "2020-12-17T00:00:00.000Z", + "version": "v14.15.3", + }, + Object { + "isStable": true, + "releaseTimestamp": "2021-01-04T00:00:00.000Z", + "version": "v14.15.4", + }, + Object { + "isStable": true, + "releaseTimestamp": "2021-02-09T00:00:00.000Z", + "version": "v14.15.5", + }, + Object { + "isStable": true, + "releaseTimestamp": "2021-02-23T00:00:00.000Z", + "version": "v14.16.0", + }, + Object { + "isStable": true, + "releaseTimestamp": "2021-04-06T00:00:00.000Z", + "version": "v14.16.1", + }, + Object { + "isStable": true, + "releaseTimestamp": "2021-05-11T00:00:00.000Z", + "version": "v14.17.0", + }, + Object { + "isStable": true, + "releaseTimestamp": "2021-06-15T00:00:00.000Z", + "version": "v14.17.1", + }, + Object { + "isStable": true, + "releaseTimestamp": "2021-07-01T00:00:00.000Z", + "version": "v14.17.2", + }, + Object { + "isStable": true, + "releaseTimestamp": "2021-07-05T00:00:00.000Z", + "version": "v14.17.3", + }, + Object { + "isStable": true, + "releaseTimestamp": "2021-07-29T00:00:00.000Z", + "version": "v14.17.4", + }, + Object { + "isStable": true, + "releaseTimestamp": "2021-08-11T00:00:00.000Z", + "version": "v14.17.5", + }, + Object { + "isStable": true, + "releaseTimestamp": "2021-08-30T00:00:00.000Z", + "version": "v14.17.6", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-10-20T00:00:00.000Z", + "version": "v15.0.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-10-21T00:00:00.000Z", + "version": "v15.0.1", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-11-04T00:00:00.000Z", + "version": "v15.1.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-11-10T00:00:00.000Z", + "version": "v15.2.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-11-16T00:00:00.000Z", + "version": "v15.2.1", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-11-24T00:00:00.000Z", + "version": "v15.3.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-12-09T00:00:00.000Z", + "version": "v15.4.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2020-12-22T00:00:00.000Z", + "version": "v15.5.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-01-04T00:00:00.000Z", + "version": "v15.5.1", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-01-14T00:00:00.000Z", + "version": "v15.6.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-01-25T00:00:00.000Z", + "version": "v15.7.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-02-02T00:00:00.000Z", + "version": "v15.8.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-02-18T00:00:00.000Z", + "version": "v15.9.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-02-23T00:00:00.000Z", + "version": "v15.10.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-03-03T00:00:00.000Z", + "version": "v15.11.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-03-17T00:00:00.000Z", + "version": "v15.12.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-03-31T00:00:00.000Z", + "version": "v15.13.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-04-06T00:00:00.000Z", + "version": "v15.14.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-04-20T00:00:00.000Z", + "version": "v16.0.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-05-04T00:00:00.000Z", + "version": "v16.1.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-05-19T00:00:00.000Z", + "version": "v16.2.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-06-03T00:00:00.000Z", + "version": "v16.3.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-06-23T00:00:00.000Z", + "version": "v16.4.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-07-01T00:00:00.000Z", + "version": "v16.4.1", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-07-05T00:00:00.000Z", + "version": "v16.4.2", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-07-14T00:00:00.000Z", + "version": "v16.5.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-07-29T00:00:00.000Z", + "version": "v16.6.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-08-03T00:00:00.000Z", + "version": "v16.6.1", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-08-11T00:00:00.000Z", + "version": "v16.6.2", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-08-18T00:00:00.000Z", + "version": "v16.7.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-08-25T00:00:00.000Z", + "version": "v16.8.0", + }, + Object { + "isStable": false, + "releaseTimestamp": "2021-09-07T00:00:00.000Z", + "version": "v16.9.0", + }, + ], + "sourceUrl": "https://github.com/nodejs/node", +} +`; diff --git a/lib/datasource/node/common.ts b/lib/datasource/node/common.ts new file mode 100644 index 00000000000000..9a88f37c5cb889 --- /dev/null +++ b/lib/datasource/node/common.ts @@ -0,0 +1,3 @@ +export const defaultRegistryUrl = 'https://nodejs.org/dist'; + +export const datasource = 'node'; diff --git a/lib/datasource/node/index.spec.ts b/lib/datasource/node/index.spec.ts new file mode 100644 index 00000000000000..43a9e8b417ba89 --- /dev/null +++ b/lib/datasource/node/index.spec.ts @@ -0,0 +1,54 @@ +import { getPkgReleases } from '..'; +import * as httpMock from '../../../test/http-mock'; +import { loadFixture } from '../../../test/util'; +import { EXTERNAL_HOST_ERROR } from '../../constants/error-messages'; +import { datasource, defaultRegistryUrl } from './common'; + +const res1 = loadFixture('index.json'); + +describe('datasource/node/index', () => { + describe('getReleases', () => { + it('throws for 500', async () => { + httpMock.scope(defaultRegistryUrl).get('/index.json').reply(500); + await expect( + getPkgReleases({ + datasource, + depName: 'node', + }) + ).rejects.toThrow(EXTERNAL_HOST_ERROR); + }); + + it('returns null for error', async () => { + httpMock + .scope(defaultRegistryUrl) + .get('/index.json') + .replyWithError('error'); + expect( + await getPkgReleases({ + datasource, + depName: 'node', + }) + ).toBeNull(); + }); + + it('returns null for empty 200 OK', async () => { + httpMock.scope(defaultRegistryUrl).get('/index.json').reply(200, []); + expect( + await getPkgReleases({ + datasource, + depName: 'node', + }) + ).toBeNull(); + }); + + it('processes real data', async () => { + httpMock.scope(defaultRegistryUrl).get('/index.json').reply(200, res1); + const res = await getPkgReleases({ + datasource, + depName: 'node', + }); + expect(res).toMatchSnapshot(); + expect(res.releases).toHaveLength(64); + }); + }); +}); diff --git a/lib/datasource/node/index.ts b/lib/datasource/node/index.ts new file mode 100644 index 00000000000000..62daa1bd8928c6 --- /dev/null +++ b/lib/datasource/node/index.ts @@ -0,0 +1,56 @@ +import { cache } from '../../util/cache/package/decorator'; +import { joinUrlParts } from '../../util/url'; +import { id as versioning } from '../../versioning/node'; +import { Datasource } from '../datasource'; +import type { GetReleasesConfig, ReleaseResult } from '../types'; +import { datasource, defaultRegistryUrl } from './common'; +import type { NodeRelease } from './types'; + +export class NodeDatasource extends Datasource { + static readonly id = datasource; + + constructor() { + super(datasource); + } + + override readonly customRegistrySupport = false; + + override readonly defaultRegistryUrls = [defaultRegistryUrl]; + + override readonly defaultVersioning = versioning; + + override readonly caching = true; + + @cache({ + namespace: `datasource-${datasource}`, + key: ({ registryUrl }: GetReleasesConfig) => `${registryUrl}`, + }) + async getReleases({ + registryUrl, + }: GetReleasesConfig): Promise { + const result: ReleaseResult = { + homepage: 'https://nodejs.org', + sourceUrl: 'https://github.com/nodejs/node', + registryUrl, + releases: [], + }; + try { + const resp = ( + await this.http.getJson( + joinUrlParts(registryUrl, 'index.json') + ) + ).body; + result.releases.push( + ...resp.map(({ version, date, lts }) => ({ + version, + releaseTimestamp: date, + isStable: lts !== false, + })) + ); + } catch (err) { + this.handleGenericErrors(err); + } + + return result.releases.length ? result : null; + } +} diff --git a/lib/datasource/node/readme.md b/lib/datasource/node/readme.md new file mode 100644 index 00000000000000..9d8c8b67265ef1 --- /dev/null +++ b/lib/datasource/node/readme.md @@ -0,0 +1 @@ +This datasource returns NodeJS releases from [nodejs.org](https://nodejs.org/dist/index.json) API. diff --git a/lib/datasource/node/types.ts b/lib/datasource/node/types.ts new file mode 100644 index 00000000000000..8d221233603bc2 --- /dev/null +++ b/lib/datasource/node/types.ts @@ -0,0 +1,19 @@ +export interface NodeRelease { + /** release date */ + date: string; + + /** Is LTS release */ + lts: false | string; + + /** included files */ + files: string[]; + + /** npm version */ + npm: string; + + /** Is security release */ + security: boolean; + + /** node version */ + version: string; +}