mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-24 17:56:46 +00:00
Bump lokalize deps + support object format for args (#9155)
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
This commit is contained in:
parent
6a62f05657
commit
2ad2a4b198
@ -34,8 +34,9 @@
|
||||
"@codemirror/stream-parser": "^0.18.0",
|
||||
"@codemirror/text": "^0.18.0",
|
||||
"@codemirror/view": "^0.18.0",
|
||||
"@formatjs/intl-getcanonicallocales": "^1.4.6",
|
||||
"@formatjs/intl-pluralrules": "^3.4.10",
|
||||
"@formatjs/intl-getcanonicallocales": "^1.5.10",
|
||||
"@formatjs/intl-locale": "^2.4.24",
|
||||
"@formatjs/intl-pluralrules": "^4.0.18",
|
||||
"@fullcalendar/common": "5.1.0",
|
||||
"@fullcalendar/core": "5.1.0",
|
||||
"@fullcalendar/daygrid": "5.1.0",
|
||||
@ -111,7 +112,7 @@
|
||||
"hls.js": "^1.0.3",
|
||||
"home-assistant-js-websocket": "^5.10.0",
|
||||
"idb-keyval": "^3.2.0",
|
||||
"intl-messageformat": "^8.3.9",
|
||||
"intl-messageformat": "^9.6.13",
|
||||
"js-yaml": "^3.13.1",
|
||||
"leaflet": "^1.7.1",
|
||||
"leaflet-draw": "^1.0.4",
|
||||
|
@ -3,7 +3,6 @@ import IntlMessageFormat from "intl-messageformat";
|
||||
import { Resources } from "../../types";
|
||||
|
||||
export type LocalizeFunc = (key: string, ...args: any[]) => string;
|
||||
|
||||
interface FormatType {
|
||||
[format: string]: any;
|
||||
}
|
||||
@ -13,12 +12,17 @@ export interface FormatsType {
|
||||
time: FormatType;
|
||||
}
|
||||
|
||||
let loadedPolyfillLocale: Set<string> | undefined;
|
||||
|
||||
let polyfillLoaded = !shouldPolyfill();
|
||||
const polyfillProm = polyfillLoaded
|
||||
? undefined
|
||||
: import("@formatjs/intl-pluralrules/polyfill-locales").then(() => {
|
||||
polyfillLoaded = true;
|
||||
});
|
||||
: import("@formatjs/intl-locale/polyfill")
|
||||
.then(() => import("@formatjs/intl-pluralrules/polyfill"))
|
||||
.then(() => {
|
||||
loadedPolyfillLocale = new Set();
|
||||
polyfillLoaded = true;
|
||||
});
|
||||
|
||||
/**
|
||||
* Adapted from Polymer app-localize-behavior.
|
||||
@ -51,6 +55,15 @@ export const computeLocalize = async (
|
||||
await polyfillProm;
|
||||
}
|
||||
|
||||
if (loadedPolyfillLocale && !loadedPolyfillLocale.has(language)) {
|
||||
try {
|
||||
loadedPolyfillLocale.add(language);
|
||||
await import("@formatjs/intl-pluralrules/locale-data/en");
|
||||
} catch (_e) {
|
||||
// Ignore
|
||||
}
|
||||
}
|
||||
|
||||
// Everytime any of the parameters change, invalidate the strings cache.
|
||||
cache._localizationCache = {};
|
||||
|
||||
@ -68,7 +81,9 @@ export const computeLocalize = async (
|
||||
}
|
||||
|
||||
const messageKey = key + translatedValue;
|
||||
let translatedMessage = cache._localizationCache[messageKey];
|
||||
let translatedMessage = cache._localizationCache[messageKey] as
|
||||
| IntlMessageFormat
|
||||
| undefined;
|
||||
|
||||
if (!translatedMessage) {
|
||||
translatedMessage = new IntlMessageFormat(
|
||||
@ -79,37 +94,19 @@ export const computeLocalize = async (
|
||||
cache._localizationCache[messageKey] = translatedMessage;
|
||||
}
|
||||
|
||||
const argObject = {};
|
||||
for (let i = 0; i < args.length; i += 2) {
|
||||
argObject[args[i]] = args[i + 1];
|
||||
let argObject = {};
|
||||
if (args.length === 1 && typeof args[0] === "object") {
|
||||
argObject = args[0];
|
||||
} else {
|
||||
for (let i = 0; i < args.length; i += 2) {
|
||||
argObject[args[i]] = args[i + 1];
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
return translatedMessage.format(argObject);
|
||||
return translatedMessage.format<string>(argObject) as string;
|
||||
} catch (err) {
|
||||
return "Translation " + err;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* Silly helper function that converts an object of placeholders to array so we
|
||||
* can convert it back to an object again inside the localize func.
|
||||
* @param localize
|
||||
* @param key
|
||||
* @param placeholders
|
||||
*/
|
||||
export const localizeKey = (
|
||||
localize: LocalizeFunc,
|
||||
key: string,
|
||||
placeholders?: Record<string, string>
|
||||
) => {
|
||||
const args: [string, ...string[]] = [key];
|
||||
if (placeholders) {
|
||||
Object.keys(placeholders).forEach((placeholderKey) => {
|
||||
args.push(placeholderKey);
|
||||
args.push(placeholders[placeholderKey]);
|
||||
});
|
||||
}
|
||||
return localize(...args);
|
||||
};
|
||||
|
@ -1,6 +1,5 @@
|
||||
import { html } from "lit-element";
|
||||
import { caseInsensitiveCompare } from "../../common/string/compare";
|
||||
import { localizeKey } from "../../common/translations/localize";
|
||||
import {
|
||||
createConfigFlow,
|
||||
deleteConfigFlow,
|
||||
@ -52,8 +51,7 @@ export const showConfigFlowDialog = (
|
||||
deleteFlow: deleteConfigFlow,
|
||||
|
||||
renderAbortDescription(hass, step) {
|
||||
const description = localizeKey(
|
||||
hass.localize,
|
||||
const description = hass.localize(
|
||||
`component.${step.handler}.config.abort.${step.reason}`,
|
||||
step.description_placeholders
|
||||
);
|
||||
@ -74,8 +72,7 @@ export const showConfigFlowDialog = (
|
||||
},
|
||||
|
||||
renderShowFormStepDescription(hass, step) {
|
||||
const description = localizeKey(
|
||||
hass.localize,
|
||||
const description = hass.localize(
|
||||
`component.${step.handler}.config.step.${step.step_id}.description`,
|
||||
step.description_placeholders
|
||||
);
|
||||
@ -108,8 +105,7 @@ export const showConfigFlowDialog = (
|
||||
},
|
||||
|
||||
renderExternalStepDescription(hass, step) {
|
||||
const description = localizeKey(
|
||||
hass.localize,
|
||||
const description = hass.localize(
|
||||
`component.${step.handler}.config.${step.step_id}.description`,
|
||||
step.description_placeholders
|
||||
);
|
||||
@ -133,8 +129,7 @@ export const showConfigFlowDialog = (
|
||||
},
|
||||
|
||||
renderCreateEntryDescription(hass, step) {
|
||||
const description = localizeKey(
|
||||
hass.localize,
|
||||
const description = hass.localize(
|
||||
`component.${step.handler}.config.create_entry.${
|
||||
step.description || "default"
|
||||
}`,
|
||||
@ -170,8 +165,7 @@ export const showConfigFlowDialog = (
|
||||
},
|
||||
|
||||
renderShowFormProgressDescription(hass, step) {
|
||||
const description = localizeKey(
|
||||
hass.localize,
|
||||
const description = hass.localize(
|
||||
`component.${step.handler}.config.progress.${step.progress_action}`,
|
||||
step.description_placeholders
|
||||
);
|
||||
|
@ -1,5 +1,4 @@
|
||||
import { html } from "lit-element";
|
||||
import { localizeKey } from "../../common/translations/localize";
|
||||
import { ConfigEntry } from "../../data/config_entries";
|
||||
import {
|
||||
createOptionsFlow,
|
||||
@ -43,8 +42,7 @@ export const showOptionsFlowDialog = (
|
||||
deleteFlow: deleteOptionsFlow,
|
||||
|
||||
renderAbortDescription(hass, step) {
|
||||
const description = localizeKey(
|
||||
hass.localize,
|
||||
const description = hass.localize(
|
||||
`component.${configEntry.domain}.options.abort.${step.reason}`,
|
||||
step.description_placeholders
|
||||
);
|
||||
@ -69,8 +67,7 @@ export const showOptionsFlowDialog = (
|
||||
},
|
||||
|
||||
renderShowFormStepDescription(hass, step) {
|
||||
const description = localizeKey(
|
||||
hass.localize,
|
||||
const description = hass.localize(
|
||||
`component.${configEntry.domain}.options.step.${step.step_id}.description`,
|
||||
step.description_placeholders
|
||||
);
|
||||
|
@ -346,8 +346,7 @@ class HaConfigIntegrations extends SubscribeMixin(LitElement) {
|
||||
? html`<div class="active-filters">
|
||||
${this.hass.localize(
|
||||
"ui.panel.config.integrations.disable.disabled_integrations",
|
||||
"number",
|
||||
disabledConfigEntries.size
|
||||
{ number: disabledConfigEntries.size }
|
||||
)}
|
||||
<mwc-button
|
||||
@click=${this._toggleShowDisabled}
|
||||
@ -606,11 +605,9 @@ class HaConfigIntegrations extends SubscribeMixin(LitElement) {
|
||||
const localize = await localizePromise;
|
||||
if (
|
||||
!(await showConfirmationDialog(this, {
|
||||
title: localize(
|
||||
"ui.panel.config.integrations.confirm_new",
|
||||
"integration",
|
||||
domainToName(localize, domain)
|
||||
),
|
||||
title: localize("ui.panel.config.integrations.confirm_new", {
|
||||
integration: domainToName(localize, domain),
|
||||
}),
|
||||
}))
|
||||
) {
|
||||
return;
|
||||
|
@ -8,7 +8,6 @@ import {
|
||||
property,
|
||||
} from "lit-element";
|
||||
import { html, TemplateResult } from "lit-html";
|
||||
import { localizeKey } from "../../common/translations/localize";
|
||||
import "../../components/ha-circular-progress";
|
||||
import "../../components/ha-form/ha-form";
|
||||
import "../../components/ha-markdown";
|
||||
@ -112,8 +111,7 @@ class HaMfaModuleSetupFlow extends LitElement {
|
||||
? html` <ha-markdown
|
||||
allowsvg
|
||||
breaks
|
||||
.content=${localizeKey(
|
||||
this.hass.localize,
|
||||
.content=${this.hass.localize(
|
||||
`component.auth.mfa_setup.${this._step!.handler}.step.${
|
||||
(this._step! as DataEntryFlowStepForm).step_id
|
||||
}.description`,
|
||||
|
@ -87,11 +87,9 @@ class HaPanelProfile extends LitElement {
|
||||
<div class="content">
|
||||
<ha-card .header=${this.hass.user!.name}>
|
||||
<div class="card-content">
|
||||
${this.hass.localize(
|
||||
"ui.panel.profile.current_user",
|
||||
"fullName",
|
||||
this.hass.user!.name
|
||||
)}
|
||||
${this.hass.localize("ui.panel.profile.current_user", {
|
||||
fullName: this.hass.user!.name,
|
||||
})}
|
||||
${this.hass.user!.is_owner
|
||||
? this.hass.localize("ui.panel.profile.is_owner")
|
||||
: ""}
|
||||
|
@ -62,28 +62,31 @@ class HaRefreshTokens extends LitElement {
|
||||
<span slot="heading"
|
||||
>${this.hass.localize(
|
||||
"ui.panel.profile.refresh_tokens.token_title",
|
||||
"clientId",
|
||||
token.client_id
|
||||
{ clientId: token.client_id }
|
||||
)}
|
||||
</span>
|
||||
<div slot="description">
|
||||
${this.hass.localize(
|
||||
"ui.panel.profile.refresh_tokens.created_at",
|
||||
"date",
|
||||
relativeTime(new Date(token.created_at), this.hass.localize)
|
||||
{
|
||||
date: relativeTime(
|
||||
new Date(token.created_at),
|
||||
this.hass.localize
|
||||
),
|
||||
}
|
||||
)}
|
||||
</div>
|
||||
<div slot="description">
|
||||
${token.last_used_at
|
||||
? this.hass.localize(
|
||||
"ui.panel.profile.refresh_tokens.last_used",
|
||||
"date",
|
||||
relativeTime(
|
||||
new Date(token.last_used_at),
|
||||
this.hass.localize
|
||||
),
|
||||
"location",
|
||||
token.last_used_ip
|
||||
{
|
||||
date: relativeTime(
|
||||
new Date(token.last_used_at),
|
||||
this.hass.localize
|
||||
),
|
||||
location: token.last_used_ip,
|
||||
}
|
||||
)
|
||||
: this.hass.localize(
|
||||
"ui.panel.profile.refresh_tokens.not_used"
|
||||
@ -119,8 +122,7 @@ class HaRefreshTokens extends LitElement {
|
||||
!(await showConfirmationDialog(this, {
|
||||
text: this.hass.localize(
|
||||
"ui.panel.profile.refresh_tokens.confirm_delete",
|
||||
"name",
|
||||
token.client_name || token.client_id
|
||||
{ name: token.client_name || token.client_id }
|
||||
),
|
||||
}))
|
||||
) {
|
||||
|
118
yarn.lock
118
yarn.lock
@ -1101,40 +1101,60 @@
|
||||
minimatch "^3.0.4"
|
||||
strip-json-comments "^3.1.1"
|
||||
|
||||
"@formatjs/ecma402-abstract@^1.2.5":
|
||||
version "1.2.5"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.2.5.tgz#5a61ac1990ff2df8d1348ab12e186c1ca2a2bd71"
|
||||
integrity sha512-k0fqS3LBNOHueAoMdgig8Ni6TchsH+zbzWBzX2gTFm50X9mxHwnuXdCk0XLlCIbvgVVlzcO254Men/mHAheMbg==
|
||||
"@formatjs/ecma402-abstract@1.7.1":
|
||||
version "1.7.1"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.7.1.tgz#1459a9dad654d5d5ec34765965b8e4f22ad6ff81"
|
||||
integrity sha512-FjewVLB2DVEVCvvC7IMffzXVhysvi442i6ed0H7qcrT6xtUpO4vr0oZgpOmsv6D9I4Io0GVebIuySwteS/k3gg==
|
||||
dependencies:
|
||||
tslib "^2.0.1"
|
||||
tslib "^2.1.0"
|
||||
|
||||
"@formatjs/intl-getcanonicallocales@^1.4.6":
|
||||
version "1.4.6"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-getcanonicallocales/-/intl-getcanonicallocales-1.4.6.tgz#348a0b8dd87f2b0513a4942a6273c937dd91ead0"
|
||||
integrity sha512-V54a+Ks02vke2CSmuGJ4GCvrdWfN105GSH7oZRoW5QSiwuac+fmxb5Qpu4002HetuRu0rrRTm+NMUTfZ1VB2xw==
|
||||
"@formatjs/fast-memoize@1.1.1":
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-1.1.1.tgz#3006b58aca1e39a98aca213356b42da5d173f26b"
|
||||
integrity sha512-mIqBr5uigIlx13eZTOPSEh2buDiy3BCdMYUtewICREQjbb4xarDiVWoXSnrERM7NanZ+0TAHNXSqDe6HpEFQUg==
|
||||
|
||||
"@formatjs/icu-messageformat-parser@2.0.1":
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.0.1.tgz#a3b542542b92958f1cdd090f1cb475cb7cb4e21a"
|
||||
integrity sha512-GXHsATo6/9OMgrfAuyX86fYPMLeQXDN93TOKXQeW7A7ULCy9eEOp3beNwhrVFxaGIjVy/haLLqHMT36iyhwvCA==
|
||||
dependencies:
|
||||
cldr-core "36.0.0"
|
||||
tslib "^2.0.1"
|
||||
"@formatjs/ecma402-abstract" "1.7.1"
|
||||
"@formatjs/icu-skeleton-parser" "1.2.2"
|
||||
tslib "^2.1.0"
|
||||
|
||||
"@formatjs/intl-pluralrules@^3.4.10":
|
||||
version "3.4.10"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-pluralrules/-/intl-pluralrules-3.4.10.tgz#7ed3b03190971f21d482cb0e46791d90783a74d3"
|
||||
integrity sha512-KcZZv38bu0pho9+9pMUOsCAi9/Kayh4+V5QZ/I9ps5OFSQlQaFMP5sX/zHBp41SsT6HxTfrPw5CHWpGrS75NQQ==
|
||||
"@formatjs/icu-skeleton-parser@1.2.2":
|
||||
version "1.2.2"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.2.2.tgz#6e9a6eff16e3c7b69d67d40b292d4b499e37228e"
|
||||
integrity sha512-peBBPIiNzJdPsvEzFGCicD7ARvlcaUYOVZ5dljvzzcHqc5OHlH58OrUNWwYgxFS6Dnb3Ncy4qFwlTdPGTTvw1g==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "^1.2.5"
|
||||
tslib "^2.0.1"
|
||||
"@formatjs/ecma402-abstract" "1.7.1"
|
||||
tslib "^2.1.0"
|
||||
|
||||
"@formatjs/intl-unified-numberformat@^3.3.5":
|
||||
version "3.3.5"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-unified-numberformat/-/intl-unified-numberformat-3.3.5.tgz#b150c25eb56c1b09a03bf24fb5d1e394b945a27c"
|
||||
integrity sha512-LdRs9OoqG8Ah6wKKAcaq9wfeZ0w+Icway63thbbOam5DLY9G3u44NReFYWAmVSU+MXOQ+VPATMB9RUXGZxBdig==
|
||||
"@formatjs/intl-getcanonicallocales@1.5.10", "@formatjs/intl-getcanonicallocales@^1.5.10":
|
||||
version "1.5.10"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-getcanonicallocales/-/intl-getcanonicallocales-1.5.10.tgz#f57f12f19fd28a241767986b081331f8b26fb18b"
|
||||
integrity sha512-tFqGxZ9HkAzphupybyCKdWHzL1ge/sY8TtzEK57Hs3RCxrv/y+VxIPrE+Izw2oCFowQBz76cyi0zT6PjHuWArA==
|
||||
dependencies:
|
||||
"@formatjs/intl-utils" "^2.2.4"
|
||||
cldr-core "38"
|
||||
tslib "^2.1.0"
|
||||
|
||||
"@formatjs/intl-utils@^2.2.4":
|
||||
version "2.2.4"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-utils/-/intl-utils-2.2.4.tgz#fe62a96799d1f7dbe621fd38a4bd2e5a6a16cb0e"
|
||||
integrity sha512-83fsJywew0o9wQsW3VuEp33HRiFd0qbQDyFFnwZCwk59eLZ33CtKyJ5ofKMrU2KK6hk1zaIdzisrZeoNfmI3Tw==
|
||||
"@formatjs/intl-locale@^2.4.24":
|
||||
version "2.4.24"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-locale/-/intl-locale-2.4.24.tgz#c3f9dba15653b79ac7b377bb048a35aeedfc234d"
|
||||
integrity sha512-+JOwvBRFS/GFuJlWiWbfAzBng0A+ANoGV1LRseXK+4uzp4Sn35GD8M/dfgU1lp2R2dTWpYie2yyoHe4k4aHF6w==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "1.7.1"
|
||||
"@formatjs/intl-getcanonicallocales" "1.5.10"
|
||||
cldr-core "38"
|
||||
tslib "^2.1.0"
|
||||
|
||||
"@formatjs/intl-pluralrules@^4.0.18":
|
||||
version "4.0.18"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-pluralrules/-/intl-pluralrules-4.0.18.tgz#da4bda058cce5217691836c4f46ba3e9f25b0eeb"
|
||||
integrity sha512-qRFITPsNoeXfsiGc97pp8mVgqcC7aQNuXsiJjY9LpXVTkYNfjUP4ZpbYXflM4xoWCXMJNz3ilsrQhZWXy9td5g==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "1.7.1"
|
||||
tslib "^2.1.0"
|
||||
|
||||
"@fullcalendar/common@5.1.0", "@fullcalendar/common@~5.1.0":
|
||||
version "5.1.0"
|
||||
@ -2568,11 +2588,6 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.7.tgz#1b8e33b61a8c09cbe1f85133071baa0dbf9fa71a"
|
||||
integrity sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA==
|
||||
|
||||
"@types/chai@^4.2.11":
|
||||
version "4.2.11"
|
||||
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.11.tgz#d3614d6c5f500142358e6ed24e1bf16657536c50"
|
||||
integrity sha512-t7uW6eFafjO+qJ3BIV2gGUyZs27egcNRkUdalkud+Qa3+kg//f129iuOFivHDXQ+vnU3fDXuwgv0cqMCbcE8sw==
|
||||
|
||||
"@types/chrome@*":
|
||||
version "0.0.119"
|
||||
resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.119.tgz#12a2af96886d0c7210590928729ebf622eb67a58"
|
||||
@ -4779,10 +4794,10 @@ class-utils@^0.3.5:
|
||||
isobject "^3.0.0"
|
||||
static-extend "^0.1.1"
|
||||
|
||||
cldr-core@36.0.0:
|
||||
version "36.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cldr-core/-/cldr-core-36.0.0.tgz#1d2148ed6802411845baeeb21432d7bbfde7d4f7"
|
||||
integrity sha512-QLnAjt20rZe38c8h8OJ9jPND+O4o5O8Nw0TK/P3KpNn1cmOhMu0rk6Kc3ap96c5OStQ9gAngs9+Be2sum26NOw==
|
||||
cldr-core@38:
|
||||
version "38.1.0"
|
||||
resolved "https://registry.yarnpkg.com/cldr-core/-/cldr-core-38.1.0.tgz#3c400436b89110e2c0584469d51b7479ef0fa70c"
|
||||
integrity sha512-Da9xKjDp4qGGIX0VDsBqTan09iR5nuYD2a/KkfEaUyqKhu6wFVNRiCpPDXeRbpVwPBY6PgemV8WiHatMhcpy4A==
|
||||
|
||||
clean-css@^4.2.1:
|
||||
version "4.2.3"
|
||||
@ -7773,28 +7788,14 @@ interpret@^2.2.0:
|
||||
resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9"
|
||||
integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==
|
||||
|
||||
intl-format-cache@^4.2.26:
|
||||
version "4.2.26"
|
||||
resolved "https://registry.yarnpkg.com/intl-format-cache/-/intl-format-cache-4.2.26.tgz#ba5e2ee6cec25217f688b68ecdd58eec3703a827"
|
||||
integrity sha512-RalEzK89R3rJrOo7vcGY8h1WLypF1ZRQQldIsrQM6FTEPixvHb+pAEhd2QkdUk972hFjAEBJR02GdHhaEw9v2g==
|
||||
intl-messageformat@^9.6.13:
|
||||
version "9.6.13"
|
||||
resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-9.6.13.tgz#7c4ace385b3b8cc5010bfd774451ed0c50a73a9b"
|
||||
integrity sha512-F8OHdgdZYdY3O7TSkQtIGY1qBL7ttbbfIb6g9sgjLw1SQ9SlN3rlaUa1tv9RK3sX0qVkqNLqlPVuOfHlhXpm2Q==
|
||||
dependencies:
|
||||
"@types/chai" "^4.2.11"
|
||||
chai "^4.2.0"
|
||||
|
||||
intl-messageformat-parser@^5.0.2:
|
||||
version "5.0.2"
|
||||
resolved "https://registry.yarnpkg.com/intl-messageformat-parser/-/intl-messageformat-parser-5.0.2.tgz#878c0d66459b366f4135a812007a873789875b95"
|
||||
integrity sha512-7logOIMKQX4cWTAGdMSPdlzlGG2aGcpdTr/Laroi3/LTgXvYqMQ8fbC7DolygSEWUxbYrzDIuQsoQGJO6Kp8Gg==
|
||||
dependencies:
|
||||
"@formatjs/intl-unified-numberformat" "^3.3.5"
|
||||
|
||||
intl-messageformat@^8.3.9:
|
||||
version "8.3.9"
|
||||
resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-8.3.9.tgz#fa57e6f5abdd4b5ad03dd767c965435bd38cbd78"
|
||||
integrity sha512-WHIopaMiZ14UJ76d14FfqbeNE3knGJT7pJg6eJVxh1G5ziL656BqfQk6dYxPZ2VvoaY7wnT3dLlIXy1MTE0blw==
|
||||
dependencies:
|
||||
intl-format-cache "^4.2.26"
|
||||
intl-messageformat-parser "^5.0.2"
|
||||
"@formatjs/fast-memoize" "1.1.1"
|
||||
"@formatjs/icu-messageformat-parser" "2.0.1"
|
||||
tslib "^2.1.0"
|
||||
|
||||
into-stream@^4.0.0:
|
||||
version "4.0.0"
|
||||
@ -12532,6 +12533,11 @@ tslib@^2.0.1:
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c"
|
||||
integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==
|
||||
|
||||
tslib@^2.1.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c"
|
||||
integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==
|
||||
|
||||
tsparticles@^1.19.2:
|
||||
version "1.19.2"
|
||||
resolved "https://registry.yarnpkg.com/tsparticles/-/tsparticles-1.19.2.tgz#056d26149e67155e99efbfb1ea8f521fcc66520c"
|
||||
|
Loading…
x
Reference in New Issue
Block a user