Write declaration file for new lib

This commit is contained in:
mrjvs 2024-01-03 20:29:33 +01:00
parent 97bd63ca39
commit 68c0444771
2 changed files with 28 additions and 25 deletions

21
src/@types/country-language.d.ts vendored Normal file
View File

@ -0,0 +1,21 @@
declare module "@ladjs/country-language" {
export interface LanguageObj {
countries: Array<{
code_2: string;
code_3: string;
numCode: string;
}>;
direction: "RTL" | "LTR";
name: string[];
nativeName: string[];
iso639_1: string;
}
type Callback<T> = (err: null | string, result: null | T) => void;
declare namespace lib {
function getLanguage(locale: string, cb: Callback<LanguageObj>): void;
}
export = lib;
}

View File

@ -1,4 +1,4 @@
import countryLanguages from "@ladjs/country-language"; import countryLanguages, { LanguageObj } from "@ladjs/country-language";
import { getTag } from "@sozialhelden/ietf-language-tags"; import { getTag } from "@sozialhelden/ietf-language-tags";
const languageOrder = ["en", "hi", "fr", "de", "nl", "pt"]; const languageOrder = ["en", "hi", "fr", "de", "nl", "pt"];
@ -48,18 +48,6 @@ export interface LocaleInfo {
isRtl?: boolean; isRtl?: boolean;
} }
interface LanguageObj {
countries: Array<{
code_2: string;
code_3: string;
numCode: string;
}>;
direction: "RTL" | "LTR";
name: string[];
nativeName: string[];
iso639_1: string;
}
const extraLanguages: Record<string, LocaleInfo> = { const extraLanguages: Record<string, LocaleInfo> = {
pirate: { pirate: {
code: "pirate", code: "pirate",
@ -136,12 +124,9 @@ export function getCountryCodeForLocale(locale: string): string | null {
const tag = getTag(locale, true); const tag = getTag(locale, true);
if (!tag?.language?.Subtag) return null; if (!tag?.language?.Subtag) return null;
// this function isnt async, so its garuanteed to work like this // this function isnt async, so its garuanteed to work like this
countryLanguages.getLanguage( countryLanguages.getLanguage(tag.language.Subtag, (_err, lang) => {
tag.language.Subtag, if (lang) output = lang;
(_err: string, lang: LanguageObj) => { });
if (lang) output = lang;
},
);
if (!output) return null; if (!output) return null;
if (output.countries.length === 0) return null; if (output.countries.length === 0) return null;
const priority = countryPriority[output.iso639_1.toLowerCase()]; const priority = countryPriority[output.iso639_1.toLowerCase()];
@ -169,12 +154,9 @@ export function getLocaleInfo(locale: string): LocaleInfo | null {
let output: LanguageObj | null = null as any as LanguageObj; let output: LanguageObj | null = null as any as LanguageObj;
// this function isnt async, so its garuanteed to work like this // this function isnt async, so its garuanteed to work like this
countryLanguages.getLanguage( countryLanguages.getLanguage(tag.language.Subtag, (_err, lang) => {
tag.language.Subtag, if (lang) output = lang;
(_err: string, lang: LanguageObj) => { });
if (lang) output = lang;
},
);
if (!output) return null; if (!output) return null;
return { return {