mirror of
				https://github.com/Mibew/simple-icons.git
				synced 2025-10-31 02:25:59 +03:00 
			
		
		
		
	Avoid raw asset URLs (#11785)
This commit is contained in:
		
							parent
							
								
									b1d67ef6e3
								
							
						
					
					
						commit
						ef1d49b94e
					
				| @ -2796,7 +2796,7 @@ | |||||||
|         { |         { | ||||||
|             "title": "Carrefour", |             "title": "Carrefour", | ||||||
|             "hex": "004E9F", |             "hex": "004E9F", | ||||||
|             "source": "https://upload.wikimedia.org/wikipedia/commons/5/5b/Carrefour_logo.svg" |             "source": "https://en.wikipedia.org/wiki/File:Carrefour_logo_no_tag.svg" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "title": "Carto", |             "title": "Carto", | ||||||
| @ -3276,7 +3276,7 @@ | |||||||
|         { |         { | ||||||
|             "title": "Coca Cola", |             "title": "Coca Cola", | ||||||
|             "hex": "D00013", |             "hex": "D00013", | ||||||
|             "source": "https://upload.wikimedia.org/wikipedia/commons/c/ce/Coca-Cola_logo.svg" |             "source": "https://commons.wikimedia.org/wiki/File:Coca-Cola_logo.svg" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "title": "Cockpit", |             "title": "Cockpit", | ||||||
| @ -3941,12 +3941,12 @@ | |||||||
|         { |         { | ||||||
|             "title": "DaisyUI", |             "title": "DaisyUI", | ||||||
|             "hex": "5A0EF8", |             "hex": "5A0EF8", | ||||||
|             "source": "https://raw.githubusercontent.com/saadeghi/files/main/daisyui/logo-4.svg" |             "source": "https://github.com/saadeghi/files/blob/5c82a1f4428b7c0af6ecfe921a424ebc9d92dc2c/daisyui/logo-4.svg" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "title": "Dapr", |             "title": "Dapr", | ||||||
|             "hex": "0D2192", |             "hex": "0D2192", | ||||||
|             "source": "https://raw.githubusercontent.com/dapr/dapr/18575823c74318c811d6cd6f57ffac76d5debe93/img/dapr_logo.svg" |             "source": "https://github.com/dapr/dapr/blob/18575823c74318c811d6cd6f57ffac76d5debe93/img/dapr_logo.svg" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "title": "Dark Reader", |             "title": "Dark Reader", | ||||||
| @ -5860,7 +5860,7 @@ | |||||||
|         { |         { | ||||||
|             "title": "Game & Watch", |             "title": "Game & Watch", | ||||||
|             "hex": "000000", |             "hex": "000000", | ||||||
|             "source": "https://upload.wikimedia.org/wikipedia/commons/4/41/Game_and_watch_logo.svg" |             "source": "https://commons.wikimedia.org/wiki/File:Game_and_watch_logo.svg" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "title": "Game Developer", |             "title": "Game Developer", | ||||||
| @ -6492,7 +6492,7 @@ | |||||||
|         { |         { | ||||||
|             "title": "Google Maps", |             "title": "Google Maps", | ||||||
|             "hex": "4285F4", |             "hex": "4285F4", | ||||||
|             "source": "https://upload.wikimedia.org/wikipedia/commons/a/a9/Google_Maps_icon.svg" |             "source": "https://commons.wikimedia.org/wiki/File:Google_Maps_icon.svg" | ||||||
|         }, |         }, | ||||||
|         { |         { | ||||||
|             "title": "Google Marketing Platform", |             "title": "Google Marketing Platform", | ||||||
|  | |||||||
| @ -11,6 +11,7 @@ | |||||||
|  * @typedef {IconData[]} IconsData |  * @typedef {IconData[]} IconsData | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
|  | import path from 'node:path'; | ||||||
| import process from 'node:process'; | import process from 'node:process'; | ||||||
| import fakeDiff from 'fake-diff'; | import fakeDiff from 'fake-diff'; | ||||||
| import {collator, getIconsDataString, normalizeNewlines} from '../../sdk.mjs'; | import {collator, getIconsDataString, normalizeNewlines} from '../../sdk.mjs'; | ||||||
| @ -88,13 +89,27 @@ const TESTS = { | |||||||
|   checkUrl(data) { |   checkUrl(data) { | ||||||
|     /** |     /** | ||||||
|      * Check if an URL has a redundant trailing slash. |      * Check if an URL has a redundant trailing slash. | ||||||
|      * @param {string} url URL to check |      * @param {URL} $url URL instance | ||||||
|  |      * @param {string} url Original URL string | ||||||
|      * @returns {boolean} Whether the URL has a redundant trailing slash |      * @returns {boolean} Whether the URL has a redundant trailing slash | ||||||
|      */ |      */ | ||||||
|     const hasRedundantTrailingSlash = (url) => { |     const hasRedundantTrailingSlash = ($url, url) => url === $url.origin + '/'; | ||||||
|       const {origin} = new global.URL(url); | 
 | ||||||
|       return /^\/+$/.test(url.replace(origin, '')); |     /** | ||||||
|     }; |      * Check if an URL is static wikimedia asset URL. | ||||||
|  |      * @param {URL} $url URL instance | ||||||
|  |      * @returns {boolean} Whether the URL is static wikimedia asset URL | ||||||
|  |      */ | ||||||
|  |     const isStaticWikimediaAssetUrl = ($url) => | ||||||
|  |       $url.hostname === 'upload.wikimedia.org'; | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Check if an URL is raw GitHub asset URL. | ||||||
|  |      * @param {string} $url URL instance | ||||||
|  |      * @returns {boolean} Whether the URL is raw GitHub asset URL | ||||||
|  |      */ | ||||||
|  |     const isRawGithubAssetUrl = ($url) => | ||||||
|  |       $url.hostname === 'raw.githubusercontent.com'; | ||||||
| 
 | 
 | ||||||
|     const allUrlFields = [ |     const allUrlFields = [ | ||||||
|       ...new Set( |       ...new Set( | ||||||
| @ -117,14 +132,29 @@ const TESTS = { | |||||||
|       ), |       ), | ||||||
|     ]; |     ]; | ||||||
| 
 | 
 | ||||||
|     const invalidUrls = allUrlFields.filter((url) => |     const invalidUrls = []; | ||||||
|       hasRedundantTrailingSlash(url), |     for (const url of allUrlFields) { | ||||||
|     ); |       const $url = new global.URL(url); | ||||||
|  | 
 | ||||||
|  |       if (hasRedundantTrailingSlash($url, url)) { | ||||||
|  |         invalidUrls.push(fakeDiff(url, $url.origin)); | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |       if (isStaticWikimediaAssetUrl($url)) { | ||||||
|  |         const expectedUrl = `https://commons.wikimedia.org/wiki/File:${path.basename($url.pathname)}`; | ||||||
|  |         invalidUrls.push(fakeDiff(url, expectedUrl)); | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |       if (isRawGithubAssetUrl($url)) { | ||||||
|  |         // https://github.com/LitoMore/simple-icons-cdn/blob/main/media/imgcat-screenshot.webp
 | ||||||
|  |         const [, owner, repo, hash, ...directory] = $url.pathname.split('/'); | ||||||
|  |         const expectedUrl = `https://github.com/${owner}/${repo}/blob/${hash}/${directory.join('/')}`; | ||||||
|  |         invalidUrls.push(fakeDiff(url, expectedUrl)); | ||||||
|  |       } | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     if (invalidUrls.length > 0) { |     if (invalidUrls.length > 0) { | ||||||
|       return `Some URLs have a redundant trailing slash:\n\n${invalidUrls.join( |       return `Invalid URLs:\n\n${invalidUrls.join('\n\n')}`; | ||||||
|         '\n', |  | ||||||
|       )}`;
 |  | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
| }; | }; | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user