Skip to content
Snippets Groups Projects
Select Git revision
  • 1a477cde98f427d6fd436c932f46c3e4868634af
  • master default protected
  • gh-pages
  • dependabot/npm_and_yarn/nock-14.0.9
  • dependabot/npm_and_yarn/react-19.1.1
  • dependabot/npm_and_yarn/react-dom-19.1.1
  • server-2025-08-01-57ada99c
  • server-2025-02-01-6100669a
  • server-2024-11-01-87cba042
  • server-2024-10-01-6875b7c8
  • dependabot/npm_and_yarn/path-to-regexp-8.2.0
  • server-2024-09-01-3d52575c
  • daily-tests-gha2
  • daily-tests-gha
  • server-2023-12-01-92d8fb8e
  • server-2023-11-01-a80c93fd
  • server-2023-10-01-31096085
  • coc-v2
  • server-2023-09-01-8edc3810
  • server-2023-08-01-75858a03
  • server-2023-07-01-02183d8d
  • server-2025-08-03
  • server-2025-07-01
  • 5.0.2
  • 5.0.1
  • 5.0.0
  • server-2025-06-01
  • server-2025-05-01
  • server-2025-04-03
  • server-2025-03-02
  • server-2025-03-01
  • server-2025-02-02
  • server-2025-01-01
  • server-2024-12-01
  • server-2024-11-02
  • 4.1.0
  • server-2024-09-25
  • server-2024-09-02
  • server-2024-08-01
  • server-2024-07-01
  • 4.0.0
41 results

tutorial-json-format.html

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;
      }
    }