2018-11-07 13:19:46 +00:00
# Datasources
Datasources are used in Renovate primarily to fetch released versions of packages.
2021-08-03 20:09:19 +00:00
## Follow the class-based programming style
New datasources _must_ follow the class-based programming style.
2023-02-13 07:54:20 +00:00
Use the `java-version` datasource as a reference.
2021-08-03 20:09:19 +00:00
2022-03-16 13:54:45 +00:00
Add the datasource to the API in [`api.ts` ](api.ts ) so that the new datasource is usable. If you find `Pending mocks!` errors in the Jest tests and your mocked URLs are correct, ensure the datasource is correctly registered.
2022-02-17 12:56:25 +00:00
2021-03-09 22:21:38 +00:00
## getReleases
2018-11-07 13:19:46 +00:00
2020-04-04 06:53:52 +00:00
The minimum exported interface for a datasource is a function called `getReleases` that takes a lookup config as input.
2018-11-07 13:19:46 +00:00
2022-03-16 13:50:20 +00:00
The config has:
2018-11-07 13:19:46 +00:00
2022-03-03 15:08:43 +00:00
- `packageName` : the package's full name including scope if present (e.g. `@foo/bar` )
2019-02-04 08:41:22 +00:00
- `registryUrls` : an array of registry Urls to try
2018-11-07 13:19:46 +00:00
2022-03-16 13:50:20 +00:00
`getReleases` should return an object having:
2018-11-07 13:19:46 +00:00
- `releases` : an array of strings of matched versions. This is the only mandatory field.
- `deprecationMessage` : a string description of the package's deprecation notice, if applicable
2018-12-10 04:59:28 +00:00
- `sourceUrl` : a HTTP URL pointing to the source code (e.g. on GitHub)
- `homepage` : a HTTP URL for the package's homepage. Ideally should be empty if the homepage and sourceUrl are the same
2021-06-21 17:49:20 +00:00
- `changelogUrl` : a URL pointing to the package's Changelog (could be a Markdown file, for example). If not present then Renovate will search the `sourceUrl` for a changelog file.
2018-11-07 13:19:46 +00:00
- `tags` : an object mapping tag -> version, e.g. `tags: { latest: '3.0.0' }` . This is only used by the `followTags` function.
2021-03-09 22:21:38 +00:00
## getDigest
2018-11-07 13:19:46 +00:00
2021-03-18 13:06:56 +00:00
Datasources that support the concept of digests (e.g. Docker digests and Git commit hashes) also can export a `getDigest` function.
2018-11-07 13:19:46 +00:00
The `getDigest` function has two inputs:
2022-03-16 13:50:20 +00:00
- `config` : the Renovate config for the package being updated, has the same fields as `getReleases`
2018-11-07 13:19:46 +00:00
- `newValue` : the version or value to retrieve the digest for
The `getDigest` function returns a string output representing the digest value. If none is found then a return value of `null` should be returned.