From 89e5bb1978e1aec00aba4a25a8245f809cbb5033 Mon Sep 17 00:00:00 2001 From: WebStreamr <210764791+webstreamr@users.noreply.github.com> Date: Mon, 12 May 2025 09:14:23 +0000 Subject: [PATCH] refactor: use country-emoji library instead of custom helper --- package-lock.json | 7 +++++++ package.json | 1 + src/index.ts | 5 +++-- src/utils/index.ts | 1 - src/utils/language.test.ts | 12 ------------ src/utils/language.ts | 9 --------- src/utils/manifest.ts | 4 ++-- 7 files changed, 13 insertions(+), 26 deletions(-) delete mode 100644 src/utils/language.test.ts delete mode 100644 src/utils/language.ts diff --git a/package-lock.json b/package-lock.json index 5fb2693..f85ab83 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "@isaacs/ttlcache": "^1.4.1", "bytes": "^3.1.2", "cheerio": "^1.0.0", + "country-emoji": "^1.5.6", "express": "^5.1.0", "make-fetch-happen": "^14.0.3", "slugify": "^1.6.6", @@ -2852,6 +2853,12 @@ "node": ">= 0.10" } }, + "node_modules/country-emoji": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/country-emoji/-/country-emoji-1.5.6.tgz", + "integrity": "sha512-pSB8OOROfimFc2bcN+H41DuzXYIod/JQ6SgF4pYXkRCm9f8uF1JAJ0vXPhenug6xkpt3Gv33mdypMXB49CJWRA==", + "license": "MIT" + }, "node_modules/create-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", diff --git a/package.json b/package.json index 15a85a3..e9c17f1 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "@isaacs/ttlcache": "^1.4.1", "bytes": "^3.1.2", "cheerio": "^1.0.0", + "country-emoji": "^1.5.6", "express": "^5.1.0", "make-fetch-happen": "^14.0.3", "slugify": "^1.6.6", diff --git a/src/index.ts b/src/index.ts index 12a1555..58f14a0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,9 +1,10 @@ import express, { NextFunction, Request, Response } from 'express'; import makeFetchHappen from 'make-fetch-happen'; +import { flag } from 'country-emoji'; import { landingTemplate } from './landingTemplate'; import { Handler, KinoKiste, MeineCloud } from './handler'; import { Dropload, EmbedExtractors, SuperVideo } from './embed-extractor'; -import { buildManifest, Fetcher, fulfillAllPromises, iso2ToFlag, logInfo } from './utils'; +import { buildManifest, Fetcher, fulfillAllPromises, logInfo } from './utils'; import { Config, UrlResult } from './types'; import fs from 'node:fs'; import * as os from 'node:os'; @@ -132,7 +133,7 @@ addon.get('/:config/stream/:type/:id.json', async function (req: Request, res: R title += ` | 💾 ${bytes.format(urlResult.bytes, { unitSeparator: ' ' })}`; } if (urlResult.language) { - title += ` | ${iso2ToFlag(urlResult.language)}`; + title += ` | ${flag(urlResult.language)}`; } return { diff --git a/src/utils/index.ts b/src/utils/index.ts index a4b4c2e..0783fab 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,7 +1,6 @@ export * from './Fetcher'; export * from './embed'; export * from './imdb'; -export * from './language'; export * from './log'; export * from './manifest'; export * from './promise'; diff --git a/src/utils/language.test.ts b/src/utils/language.test.ts deleted file mode 100644 index 1e48036..0000000 --- a/src/utils/language.test.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { iso2ToFlag } from './language'; - -describe('iso2ToFlag', () => { - test('returns flag for known language', () => { - expect(iso2ToFlag('DE')).toBe('🇩🇪'); - expect(iso2ToFlag('de')).toBe('🇩🇪'); - }); - - test('returns "?" for unknown language', () => { - expect(iso2ToFlag('XX')).toBe('?'); - }); -}); diff --git a/src/utils/language.ts b/src/utils/language.ts deleted file mode 100644 index 9dc53d1..0000000 --- a/src/utils/language.ts +++ /dev/null @@ -1,9 +0,0 @@ -export const iso2ToFlag = (iso2: string): string => { - const iso2Normalized = iso2.toLowerCase(); - - if (iso2Normalized === 'de') { - return '🇩🇪'; - } - - return '?'; -}; diff --git a/src/utils/manifest.ts b/src/utils/manifest.ts index bbb8609..6e914b2 100644 --- a/src/utils/manifest.ts +++ b/src/utils/manifest.ts @@ -1,4 +1,4 @@ -import { iso2ToFlag } from './language'; +import { flag } from 'country-emoji'; import { Handler } from '../handler'; import { Config, ManifestWithConfig } from '../types'; @@ -29,7 +29,7 @@ export const buildManifest = (handlers: Handler[], config: Config): ManifestWith manifest.config.push({ key: handler.id, type: 'checkbox', - title: `${handler.languages.map(language => iso2ToFlag(language) + ' ' + language.toUpperCase()).join(', ')} | ${handler.label}`, + title: `${handler.languages.map(language => flag(language) + ' ' + language.toUpperCase()).join(', ')} | ${handler.label}`, ...(handler.id in config && { default: 'checked' }), }); });