diff --git a/lib/datasource/common.ts b/lib/datasource/common.ts index 0f31ca9cb227eeabd92e4cc6b0176eaa33c60e2a..47090ef8768a81ed6f02b9930bd6ad2e9194994a 100644 --- a/lib/datasource/common.ts +++ b/lib/datasource/common.ts @@ -69,7 +69,7 @@ export interface ReleaseResult { registryUrl?: string; } -export interface Datasource { +export interface DatasourceApi { id: string; getDigest?(config: DigestConfig, newValue?: string): Promise<string | null>; getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null>; @@ -78,3 +78,6 @@ export interface Datasource { defaultConfig?: object; registryStrategy?: 'first' | 'hunt' | 'merge'; } + +// TODO: remove, only for compatabillity +export type Datasource = DatasourceApi; diff --git a/lib/datasource/index.spec.ts b/lib/datasource/index.spec.ts index b477d9f4d8d346b9a6eb07308a4fcedc016a3e88..70e3b17251b1ebc0648636e17c1581aefcbdabeb 100644 --- a/lib/datasource/index.spec.ts +++ b/lib/datasource/index.spec.ts @@ -30,7 +30,7 @@ describe('datasource/index', () => { expect(datasource.getDatasources()).toBeDefined(); expect(datasource.getDatasourceList()).toBeDefined(); }); - it('validates dataource', async () => { + it('validates dataource', () => { function validateDatasource( module: datasource.Datasource, name: string @@ -49,13 +49,13 @@ describe('datasource/index', () => { expect(Array.from(dss.keys())).toEqual(Object.keys(loadedDs)); for (const dsName of dss.keys()) { - const ds = await dss.get(dsName); + const ds = dss.get(dsName); expect(validateDatasource(ds, dsName)).toBe(true); } }); - it('returns if digests are supported', async () => { + it('returns if digests are supported', () => { expect( - await datasource.supportsDigests({ datasource: datasourceGithubTags.id }) + datasource.supportsDigests({ datasource: datasourceGithubTags.id }) ).toBe(true); }); it('returns null for no datasource', async () => { diff --git a/lib/datasource/index.ts b/lib/datasource/index.ts index 415557fc1e600ae19bd2435ea46c87c0c462dc09..f52ec82090170dc9f46d868cff66e4cdfae42f40 100644 --- a/lib/datasource/index.ts +++ b/lib/datasource/index.ts @@ -19,13 +19,12 @@ import { addMetaData } from './metadata'; export * from './common'; -export const getDatasources = (): Map<string, Promise<Datasource>> => - datasources; +export const getDatasources = (): Map<string, Datasource> => datasources; export const getDatasourceList = (): string[] => Array.from(datasources.keys()); const cacheNamespace = 'datasource-releases'; -function load(datasource: string): Promise<Datasource> { +function load(datasource: string): Datasource { return datasources.get(datasource); } @@ -170,7 +169,7 @@ async function fetchReleases( logger.warn('Unknown datasource: ' + datasourceName); return null; } - const datasource = await load(datasourceName); + const datasource = load(datasourceName); const registryUrls = resolveRegistryUrls(datasource, config.registryUrls); let dep: ReleaseResult = null; try { @@ -275,15 +274,15 @@ export async function getPkgReleases( return res; } -export async function supportsDigests(config: DigestConfig): Promise<boolean> { - return 'getDigest' in (await load(config.datasource)); +export function supportsDigests(config: DigestConfig): boolean { + return 'getDigest' in load(config.datasource); } export async function getDigest( config: DigestConfig, value?: string ): Promise<string | null> { - const datasource = await load(config.datasource); + const datasource = load(config.datasource); const lookupName = config.lookupName || config.depName; const registryUrls = resolveRegistryUrls(datasource, config.registryUrls); return datasource.getDigest( @@ -292,7 +291,7 @@ export async function getDigest( ); } -export async function getDefaultConfig(datasource: string): Promise<object> { - const loadedDatasource = await load(datasource); - return loadedDatasource?.defaultConfig || {}; +export function getDefaultConfig(datasource: string): Promise<object> { + const loadedDatasource = load(datasource); + return Promise.resolve(loadedDatasource?.defaultConfig || {}); } diff --git a/lib/workers/repository/process/lookup/index.ts b/lib/workers/repository/process/lookup/index.ts index 4a97ca511cded8c426fd6c4859b621c4aa3d3d9c..3a1bdde3da5b779c9e15e00b1eb2abcd1f1540e5 100644 --- a/lib/workers/repository/process/lookup/index.ts +++ b/lib/workers/repository/process/lookup/index.ts @@ -364,7 +364,7 @@ export async function lookupUpdates( } } // Add digests if necessary - if (config.newDigest || (await supportsDigests(config))) { + if (config.newDigest || supportsDigests(config)) { if ( config.currentDigest && config.datasource !== datasourceGitSubmodules.id diff --git a/tools/generate-imports.ts b/tools/generate-imports.ts index b8f5e1cb01d96f014d402dc9ad9f8302479a56d2..530b284894176b0445a00d54c0bcc14ebfb9173f 100644 --- a/tools/generate-imports.ts +++ b/tools/generate-imports.ts @@ -68,16 +68,7 @@ async function generate({ (async () => { try { // datasources - shell.echo('> datasources'); - let code = ` -import { Datasource } from './common'; -const api = new Map<string, Promise<Datasource>>(); -export default api; -`; - for (const ds of findModules('lib/datasource')) { - code += `api.set('${ds}', import('./${ds}'));\n`; - } - await updateFile('lib/datasource/api.generated.ts', code); + await generate({ path: 'datasource', types: ['DatasourceApi'] }); // managers await generate({ path: 'manager', types: ['ManagerApi'] });