diff --git a/lib/datasource/npm/__snapshots__/index.spec.ts.snap b/lib/datasource/npm/__snapshots__/index.spec.ts.snap index ae5b688b281f1e5eddc03176c78570230af668c9..f19f219d023bf21815d3fe3549a78c674265bcf1 100644 --- a/lib/datasource/npm/__snapshots__/index.spec.ts.snap +++ b/lib/datasource/npm/__snapshots__/index.spec.ts.snap @@ -57,7 +57,7 @@ Array [ exports[`datasource/npm/index should fetch package info from npm 1`] = ` Object { "name": "foobar", - "registryUrl": "https://registry.npmjs.org/", + "registryUrl": "https://registry.npmjs.org", "releases": Array [ Object { "releaseTimestamp": "2018-05-06T05:21:53.000Z", @@ -95,7 +95,7 @@ Array [ exports[`datasource/npm/index should handle foobar 1`] = ` Object { "name": "foobar", - "registryUrl": "https://registry.npmjs.org/", + "registryUrl": "https://registry.npmjs.org", "releases": Array [ Object { "releaseTimestamp": "2018-05-06T05:21:53.000Z", @@ -133,7 +133,7 @@ Array [ exports[`datasource/npm/index should handle no time 1`] = ` Object { "name": "foobar", - "registryUrl": "https://registry.npmjs.org/", + "registryUrl": "https://registry.npmjs.org", "releases": Array [ Object { "releaseTimestamp": "2018-05-06T05:21:53.000Z", @@ -170,7 +170,7 @@ Array [ exports[`datasource/npm/index should not send an authorization header if public package 1`] = ` Object { "name": "foobar", - "registryUrl": "https://registry.npmjs.org/", + "registryUrl": "https://registry.npmjs.org", "releases": Array [ Object { "releaseTimestamp": "2018-05-06T05:21:53.000Z", @@ -208,7 +208,7 @@ Array [ exports[`datasource/npm/index should parse repo url (string) 1`] = ` Object { "name": "foobar", - "registryUrl": "https://registry.npmjs.org/", + "registryUrl": "https://registry.npmjs.org", "releases": Array [ Object { "releaseTimestamp": "2018-05-06T05:21:53.000Z", @@ -241,7 +241,7 @@ Array [ exports[`datasource/npm/index should parse repo url 1`] = ` Object { "name": "foobar", - "registryUrl": "https://registry.npmjs.org/", + "registryUrl": "https://registry.npmjs.org", "releases": Array [ Object { "releaseTimestamp": "2018-05-06T05:21:53.000Z", @@ -274,7 +274,7 @@ Array [ exports[`datasource/npm/index should replace any environment variable in npmrc 1`] = ` Object { "name": "foobar", - "registryUrl": "https://registry.from-env.com/", + "registryUrl": "https://registry.from-env.com", "releases": Array [ Object { "releaseTimestamp": "2018-05-06T05:21:53.000Z", @@ -311,14 +311,14 @@ Array [ exports[`datasource/npm/index should return deprecated 1`] = ` Object { - "deprecationMessage": "On registry \`https://registry.npmjs.org/\`, the \\"latest\\" version of dependency \`foobar\` has the following deprecation notice: + "deprecationMessage": "On registry \`https://registry.npmjs.org\`, the \\"latest\\" version of dependency \`foobar\` has the following deprecation notice: \`This is deprecated\` Marking the latest version of an npm package as deprecated results in the entire package being considered deprecated, so contact the package author you think this is a mistake.", "deprecationSource": "npm", "name": "foobar", - "registryUrl": "https://registry.npmjs.org/", + "registryUrl": "https://registry.npmjs.org", "releases": Array [ Object { "releaseTimestamp": "2018-05-06T05:21:53.000Z", @@ -339,7 +339,7 @@ Marking the latest version of an npm package as deprecated results in the entire `; exports[`datasource/npm/index should return deprecated 2`] = ` -"On registry \`https://registry.npmjs.org/\`, the \\"latest\\" version of dependency \`foobar\` has the following deprecation notice: +"On registry \`https://registry.npmjs.org\`, the \\"latest\\" version of dependency \`foobar\` has the following deprecation notice: \`This is deprecated\` @@ -409,7 +409,7 @@ Array [ exports[`datasource/npm/index should send an authorization header if provided 1`] = ` Object { "name": "@foobar/core", - "registryUrl": "https://registry.npmjs.org/", + "registryUrl": "https://registry.npmjs.org", "releases": Array [ Object { "releaseTimestamp": "2018-05-06T05:21:53.000Z", @@ -523,7 +523,7 @@ Array [ exports[`datasource/npm/index should use default registry if missing from npmrc 1`] = ` Object { "name": "foobar", - "registryUrl": "https://registry.npmjs.org/", + "registryUrl": "https://registry.npmjs.org", "releases": Array [ Object { "releaseTimestamp": "2018-05-06T05:21:53.000Z", diff --git a/lib/datasource/npm/npmrc.ts b/lib/datasource/npm/npmrc.ts index 33d3841b38994bb48048db1870fdc7c3eeb55ed8..3ae20d9d74b7320515f74d806efa149ea9f92725 100644 --- a/lib/datasource/npm/npmrc.ts +++ b/lib/datasource/npm/npmrc.ts @@ -165,7 +165,7 @@ export function setNpmrc(input?: string): void { } } -export function resolvePackage(packageName: string): PackageResolution { +export function resolveRegistryUrl(packageName: string): string { let registryUrl = defaultRegistryUrls[0]; for (const rule of packageRules) { const { matchPackagePrefixes, registryUrls } = rule; @@ -176,9 +176,13 @@ export function resolvePackage(packageName: string): PackageResolution { registryUrl = registryUrls[0]; } } - registryUrl = ensureTrailingSlash(registryUrl); + return registryUrl; +} + +export function resolvePackage(packageName: string): PackageResolution { + const registryUrl = resolveRegistryUrl(packageName); const packageUrl = url.resolve( - registryUrl, + ensureTrailingSlash(registryUrl), encodeURIComponent(packageName).replace(regEx(/^%40/), '@') ); return { packageUrl, registryUrl }; diff --git a/lib/datasource/types.ts b/lib/datasource/types.ts index fe854e784b6273c506b05d8f17cda1e4edf23aa3..9a9073dc0b30c0c01b4867719bf60d66dc1a79bb 100644 --- a/lib/datasource/types.ts +++ b/lib/datasource/types.ts @@ -17,18 +17,16 @@ export interface DigestConfig { currentDigest?: string; } -export interface ReleasesConfigBase { +export interface GetReleasesConfig { npmrc?: string; - defaultRegistryUrls?: string[]; - registryUrls?: string[]; -} - -export interface GetReleasesConfig extends ReleasesConfigBase { lookupName: string; registryUrl?: string; } -export interface GetPkgReleasesConfig extends ReleasesConfigBase { +export interface GetPkgReleasesConfig { + npmrc?: string; + defaultRegistryUrls?: string[]; + registryUrls?: string[]; datasource: string; depName: string; lookupName?: string; diff --git a/lib/workers/repository/process/lookup/__snapshots__/index.spec.ts.snap b/lib/workers/repository/process/lookup/__snapshots__/index.spec.ts.snap index 21be5395b76a717eb5a78e2f7c0bbdd3f647430f..0d0f214b093ba123f65fc29f11e27d9c78e5adae 100644 --- a/lib/workers/repository/process/lookup/__snapshots__/index.spec.ts.snap +++ b/lib/workers/repository/process/lookup/__snapshots__/index.spec.ts.snap @@ -277,7 +277,7 @@ Object { "changelogUrl": undefined, "currentVersion": "1.3.0", "dependencyUrl": undefined, - "deprecationMessage": "On registry \`https://registry.npmjs.org/\`, the \\"latest\\" version of dependency \`q2\` has the following deprecation notice: + "deprecationMessage": "On registry \`https://registry.npmjs.org\`, the \\"latest\\" version of dependency \`q2\` has the following deprecation notice: \`true\`