2021-01-21 13:11:35 +01:00
|
|
|
import * as npmVersioning from '../../versioning/npm';
|
2022-02-15 11:20:45 +03:00
|
|
|
import { Datasource } from '../datasource';
|
|
|
|
import type { GetReleasesConfig, ReleaseResult } from '../types';
|
2024-06-17 13:03:42 +03:00
|
|
|
import { defaultRegistryUrls as npmDefaultRegistryUrl } from './common';
|
2022-02-15 11:20:45 +03:00
|
|
|
import { getDependency } from './get';
|
2021-01-21 13:11:35 +01:00
|
|
|
|
2022-02-27 11:36:45 +01:00
|
|
|
export { setNpmrc } from './npmrc';
|
2022-02-15 11:20:45 +03:00
|
|
|
|
|
|
|
export class NpmDatasource extends Datasource {
|
2023-04-11 16:41:24 +03:00
|
|
|
static readonly id = 'npm';
|
2022-02-15 11:20:45 +03:00
|
|
|
|
2022-03-14 09:13:21 +01:00
|
|
|
override readonly customRegistrySupport = true;
|
|
|
|
|
|
|
|
override readonly registryStrategy = 'first';
|
2022-02-15 11:20:45 +03:00
|
|
|
|
|
|
|
override readonly defaultVersioning = npmVersioning.id;
|
|
|
|
|
2024-06-17 13:03:42 +03:00
|
|
|
override readonly defaultRegistryUrls = npmDefaultRegistryUrl;
|
|
|
|
|
2024-05-21 12:49:12 +05:45
|
|
|
override readonly releaseTimestampSupport = true;
|
|
|
|
override readonly releaseTimestampNote =
|
|
|
|
'The release timestamp is determined from the `time` field in the results.';
|
|
|
|
override readonly sourceUrlSupport = 'release';
|
|
|
|
override readonly sourceUrlNote =
|
|
|
|
'The source URL is determined from the `repository` field in the results.';
|
|
|
|
|
2022-02-15 11:20:45 +03:00
|
|
|
constructor() {
|
|
|
|
super(NpmDatasource.id);
|
|
|
|
}
|
|
|
|
|
|
|
|
async getReleases({
|
2022-03-03 16:08:43 +01:00
|
|
|
packageName,
|
2022-03-14 09:13:21 +01:00
|
|
|
registryUrl,
|
2022-02-15 11:20:45 +03:00
|
|
|
}: GetReleasesConfig): Promise<ReleaseResult | null> {
|
2025-03-06 18:05:19 +01:00
|
|
|
/* v8 ignore next 3 -- should never happen */
|
2022-04-16 09:38:07 +02:00
|
|
|
if (!registryUrl) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
2022-03-14 09:13:21 +01:00
|
|
|
const res = await getDependency(this.http, registryUrl, packageName);
|
2022-02-15 11:20:45 +03:00
|
|
|
return res;
|
|
|
|
}
|
|
|
|
}
|