Skip to content
Snippets Groups Projects
Select Git revision
  • 00bf898cd77612340655c9729ea66bb1da964012
  • main default protected
  • next
  • renovate/main-lock-file-maintenance
  • renovate/main-lint-staged-16.x
  • renovate/main-redis-5.x
  • chore/update-static-data
  • feat/gnupg
  • fix/36615b-branch-reuse-no-cache
  • chore/punycode
  • refactor/pin-new-value
  • feat/36219--git-x509-signing
  • feat/structured-logger
  • hotfix/39.264.1
  • feat/skip-dangling
  • gh-readonly-queue/next/pr-36034-7a061c4ca1024a19e2c295d773d9642625d1c2be
  • hotfix/39.238.3
  • refactor/gitlab-auto-approve
  • feat/template-strings
  • gh-readonly-queue/next/pr-35654-137d934242c784e0c45d4b957362214f0eade1d7
  • fix/32307-global-extends-merging
  • 41.61.1
  • 41.61.0
  • 41.60.4
  • 41.60.3
  • 41.60.2
  • 41.60.1
  • 41.60.0
  • 41.59.2
  • 41.59.1
  • 41.59.0
  • 41.58.2
  • 41.58.1
  • 41.58.0
  • 41.57.1
  • 41.57.0
  • 41.56.1
  • 41.56.0
  • 41.55.3
  • 41.55.2
  • 41.55.1
41 results

automerge.spec.ts

Blame
  • index.ts 1.72 KiB
    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}`,
        // TODO: types (#7154)
        // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
        key: ({ registryUrl }: GetReleasesConfig) => `${registryUrl}`,
      })
      async getReleases({
        registryUrl,
      }: GetReleasesConfig): Promise<ReleaseResult | null> {
        // istanbul ignore if
        if (!registryUrl) {
          return null;
        }
        const result: ReleaseResult = {
          homepage: 'https://nodejs.org',
          sourceUrl: 'https://github.com/nodejs/node',
          registryUrl,
          releases: [],
        };
        try {
          const resp = (
            await this.http.getJson<NodeRelease[]>(
              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;
      }
    }