refactor: use country-emoji library instead of custom helper

This commit is contained in:
WebStreamr 2025-05-12 09:14:23 +00:00
parent 09ee685d22
commit 89e5bb1978
No known key found for this signature in database
7 changed files with 13 additions and 26 deletions

7
package-lock.json generated
View file

@ -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",

View file

@ -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",

View file

@ -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 {

View file

@ -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';

View file

@ -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('?');
});
});

View file

@ -1,9 +0,0 @@
export const iso2ToFlag = (iso2: string): string => {
const iso2Normalized = iso2.toLowerCase();
if (iso2Normalized === 'de') {
return '🇩🇪';
}
return '?';
};

View file

@ -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' }),
});
});