Skip to content

Commit 6ee2e5f

Browse files
authored
Gracefully handle inaccessible private package (#1528)
Co-authored-by: Björn Ahrens <[email protected]>
1 parent c481c61 commit 6ee2e5f

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

src/lib/queryVersions.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ async function queryVersions(packageMap: Index<VersionSpec>, options: Options =
8686
// allow downgrading when explicit tag is used
8787
pre: options.pre != null ? options.pre : targetString.startsWith('@') || isPre(version),
8888
retry: options.retry ?? 2,
89+
}).catch(reason => {
90+
// This might happen if a (private) package cannot be accessed due to a missing or invalid token.
91+
return { error: reason?.body?.error || reason.toString() }
8992
})
9093

9194
versionResult.version =

test/queryVersions.test.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,22 @@ describe('queryVersions', function () {
2525
result.should.deep.equal({})
2626
})
2727

28+
it('error while querying version should be handled', async () => {
29+
const stub = stubVersions(() => {
30+
throw new Error(`Package inaccessible`)
31+
})
32+
33+
const result = await queryVersions({ async: '1.5.1' }, { loglevel: 'silent' })
34+
result.should.deep.equal({
35+
async: {
36+
error: 'Error: Package inaccessible',
37+
version: null,
38+
},
39+
})
40+
41+
stub.restore()
42+
})
43+
2844
it('local file urls should be ignored', async () => {
2945
const result = await queryVersions(
3046
{ 'eslint-plugin-internal': 'file:devtools/eslint-rules' },

0 commit comments

Comments
 (0)