diff --git a/build/lib/policies.js b/build/lib/policies.js index 3e2a10df350..dbddfa9d106 100644 --- a/build/lib/policies.js +++ b/build/lib/policies.js @@ -452,8 +452,12 @@ async function getTranslations() { } const version = await getLatestStableVersion(updateUrl); const languageIds = Object.keys(Languages); - return await Promise.all(languageIds.map(languageId => getNLS(resourceUrlTemplate, languageId, version) + const result = await Promise.allSettled(languageIds.map(languageId => getNLS(resourceUrlTemplate, languageId, version) + .catch(err => { console.warn(`Missing translation: ${languageId}@${version}`); return Promise.reject(err); }) .then(languageTranslations => ({ languageId, languageTranslations })))); + return result + .filter((r) => r.status === 'fulfilled') + .map(r => r.value); } async function main() { const [policies, translations] = await Promise.all([parsePolicies(), getTranslations()]); diff --git a/build/lib/policies.ts b/build/lib/policies.ts index 62ea4d561e5..f56aec1a6a9 100644 --- a/build/lib/policies.ts +++ b/build/lib/policies.ts @@ -585,7 +585,8 @@ const Languages = { }; type LanguageTranslations = { [moduleName: string]: { [nlsKey: string]: string } }; -type Translations = { languageId: string; languageTranslations: LanguageTranslations }[]; +type Translation = { languageId: string; languageTranslations: LanguageTranslations }; +type Translations = Translation[]; async function getLatestStableVersion(updateUrl: string) { const res = await fetch(`${updateUrl}/api/update/darwin/stable/latest`); @@ -643,10 +644,15 @@ async function getTranslations(): Promise { const version = await getLatestStableVersion(updateUrl); const languageIds = Object.keys(Languages); - return await Promise.all(languageIds.map( + const result = await Promise.allSettled(languageIds.map( languageId => getNLS(resourceUrlTemplate, languageId, version) + .catch(err => { console.warn(`Missing translation: ${languageId}@${version}`); return Promise.reject(err); }) .then(languageTranslations => ({ languageId, languageTranslations })) )); + + return result + .filter((r): r is PromiseFulfilledResult => r.status === 'fulfilled') + .map(r => r.value); } async function main() {