@@ -12,21 +12,12 @@ import {
1212 */
1313async function fetchReadmeFromJsdelivr (
1414 packageName : string ,
15+ readmeFilenames : string [ ] ,
1516 version ?: string ,
1617) : Promise < string | null > {
17- const filenames = [
18- `README.${ navigator . language } .md` ,
19- 'README.md' ,
20- 'readme.md' ,
21- 'Readme.md' ,
22- 'README' ,
23- 'readme' ,
24- 'README.markdown' ,
25- 'readme.markdown' ,
26- ]
2718 const versionSuffix = version ? `@${ version } ` : ''
2819
29- for ( const filename of filenames ) {
20+ for ( const filename of readmeFilenames ) {
3021 try {
3122 const url = `https://cdn.jsdelivr.net/npm/${ packageName } ${ versionSuffix } /${ filename } `
3223 const response = await fetch ( url )
@@ -80,13 +71,29 @@ export default defineCachedEventHandler(
8071 readmeContent = packageData . readme
8172 }
8273
74+ const standardReadmeFilenames = [
75+ 'README.md' ,
76+ 'readme.md' ,
77+ 'Readme.md' ,
78+ 'README' ,
79+ 'readme' ,
80+ 'README.markdown' ,
81+ 'readme.markdown' ,
82+ ]
83+
8384 // If no README in packument, try fetching from jsdelivr (package tarball)
8485 if (
8586 ! readmeContent ||
8687 readmeContent === NPM_MISSING_README_SENTINEL ||
87- ! readmeFilenameMatchesLocale ( packageData . readmeFilename )
88+ ! isPreferredReadme ( packageData . readmeFilename , standardReadmeFilenames )
8889 ) {
89- readmeContent = ( await fetchReadmeFromJsdelivr ( packageName , version ) ) ?? undefined
90+ const locale = navigator . language
91+ readmeContent =
92+ ( await fetchReadmeFromJsdelivr (
93+ packageName ,
94+ [ `README.${ locale } .md` , ...standardReadmeFilenames ] ,
95+ version ,
96+ ) ) ?? undefined
9097 }
9198
9299 if ( ! readmeContent ) {
@@ -114,20 +121,12 @@ export default defineCachedEventHandler(
114121 } ,
115122)
116123
117- function readmeFilenameMatchesLocale ( filename : string | undefined ) : boolean {
124+ function isPreferredReadme (
125+ filename : string | undefined ,
126+ standardReadmeFilenames : string [ ] ,
127+ ) : boolean {
118128 if ( ! filename ) {
119129 return false
120130 }
121-
122- const filenames = [
123- 'README.md' ,
124- 'readme.md' ,
125- 'Readme.md' ,
126- 'README' ,
127- 'readme' ,
128- 'README.markdown' ,
129- 'readme.markdown' ,
130- ]
131-
132- return filenames . includes ( filename ) || filename . includes ( navigator . language )
131+ return standardReadmeFilenames . includes ( filename ) || filename . includes ( navigator . language )
133132}
0 commit comments