diff --git a/commitlint.config.ts b/commitlint.config.ts
index 5f44c75e5..c89743462 100644
--- a/commitlint.config.ts
+++ b/commitlint.config.ts
@@ -7,7 +7,7 @@ const config: UserConfig = {
extends: ['@commitlint/config-conventional'],
rules: {
'type-enum': [2, 'always', [...conventional.rules['type-enum'][2], 'api', 'release']],
- 'scope-enum': [2, 'always', ['connector', 'console', 'core', 'demo-app', 'test', 'phrases', 'schemas', 'shared', 'experience', 'deps', 'deps-dev', 'cli', 'toolkit', 'cloud', 'app-insights']],
+ 'scope-enum': [2, 'always', ['connector', 'console', 'core', 'demo-app', 'test', 'phrases', 'schemas', 'shared', 'experience', 'deps', 'deps-dev', 'cli', 'toolkit', 'cloud', 'app-insights', 'elements']],
// Slightly increase the tolerance to allow the appending PR number
...(isCi && { 'header-max-length': [2, 'always', 110] }),
'body-max-line-length': [2, 'always', 110],
diff --git a/packages/console/src/pages/Profile/index.tsx b/packages/console/src/pages/Profile/index.tsx
index 3560bab4c..aa71c15ac 100644
--- a/packages/console/src/pages/Profile/index.tsx
+++ b/packages/console/src/pages/Profile/index.tsx
@@ -1,4 +1,4 @@
-import { createReactComponents } from '@logto/elements/react';
+import { createReactComponents, initLocalization } from '@logto/elements/react';
import type { ConnectorResponse } from '@logto/schemas';
import React, { useCallback, useState } from 'react';
import { useTranslation } from 'react-i18next';
@@ -32,7 +32,11 @@ import Skeleton from './components/Skeleton';
import DeleteAccountModal from './containers/DeleteAccountModal';
import * as styles from './index.module.scss';
-const { LogtoFormCard, LogtoThemeProvider } = createReactComponents(React);
+if (isDevFeaturesEnabled) {
+ initLocalization();
+}
+
+const { LogtoProfileCard, LogtoThemeProvider } = createReactComponents(React);
function Profile() {
const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' });
@@ -75,11 +79,7 @@ function Profile() {
{showLoadingSkeleton && }
- {isDevFeaturesEnabled && (
-
- 🚧 This section is a dev feature that is still working in progress.
-
- )}
+ {isDevFeaturesEnabled && }
{user && !showLoadingSkeleton && (
diff --git a/packages/elements/.gitignore b/packages/elements/.gitignore
new file mode 100644
index 000000000..d3db8f9b1
--- /dev/null
+++ b/packages/elements/.gitignore
@@ -0,0 +1 @@
+src/generated/
diff --git a/packages/elements/lit-localize.json b/packages/elements/lit-localize.json
new file mode 100644
index 000000000..6df04a74a
--- /dev/null
+++ b/packages/elements/lit-localize.json
@@ -0,0 +1,15 @@
+{
+ "$schema": "https://raw.githubusercontent.com/lit/lit/main/packages/localize-tools/config.schema.json",
+ "sourceLocale": "en",
+ "targetLocales": ["de", "es", "fr", "it", "ja", "ko", "pl-PL", "pt-BR", "pt-PT", "ru", "tr-TR", "zh-CN", "zh-HK", "zh-TW"],
+ "tsConfig": "./tsconfig.json",
+ "output": {
+ "mode": "runtime",
+ "outputDir": "./src/generated/locales",
+ "localeCodesModule": "./src/generated/locale-codes.ts"
+ },
+ "interchange": {
+ "format": "xliff",
+ "xliffDir": "./xliff/"
+ }
+}
diff --git a/packages/elements/package.json b/packages/elements/package.json
index 3ac8d3e2d..b9640c5ec 100644
--- a/packages/elements/package.json
+++ b/packages/elements/package.json
@@ -27,13 +27,15 @@
},
"scripts": {
"precommit": "lint-staged",
- "build": "tsup",
- "dev": "tsup --watch --no-splitting",
+ "build": "lit-localize build && tsup",
+ "dev": "lit-localize build && tsup --watch --no-splitting",
"lint": "eslint --ext .ts src",
"lint:report": "pnpm lint --format json --output-file report.json",
"test": "echo \"No tests yet.\"",
"test:ci": "pnpm run test --silent --coverage",
- "prepack": "pnpm build"
+ "prepack": "pnpm check && pnpm build",
+ "localize": "lit-localize",
+ "check": "lit-localize extract && git add . -N && git diff --exit-code"
},
"engines": {
"node": "^20.9.0"
@@ -48,6 +50,7 @@
"lit": "^3.1.4"
},
"devDependencies": {
+ "@lit/localize-tools": "^0.7.2",
"@silverhand/eslint-config": "6.0.1",
"@silverhand/ts-config": "6.0.0",
"eslint": "^8.56.0",
@@ -57,6 +60,9 @@
},
"eslintConfig": {
"extends": "@silverhand",
+ "ignorePatterns": [
+ "src/generated/"
+ ],
"rules": {
"no-console": "error",
"unicorn/prevent-abbreviations": [
diff --git a/packages/elements/src/components/logto-card-section.ts b/packages/elements/src/components/logto-card-section.ts
new file mode 100644
index 000000000..de4e88be5
--- /dev/null
+++ b/packages/elements/src/components/logto-card-section.ts
@@ -0,0 +1,34 @@
+import { localized, msg } from '@lit/localize';
+import { LitElement, css, html } from 'lit';
+import { customElement, property } from 'lit/decorators.js';
+
+import { unit } from '../utils/css.js';
+import { vars } from '../utils/theme.js';
+
+const tagName = 'logto-card-section';
+
+@customElement(tagName)
+@localized()
+export class LogtoCardSection extends LitElement {
+ static tagName = tagName;
+ static styles = css`
+ header {
+ font: ${vars.fontLabel2};
+ color: ${vars.colorText};
+ margin-bottom: ${unit(1)};
+ }
+ `;
+
+ @property()
+ heading = msg('Not available', {
+ id: 'form-card.fallback-title',
+ desc: 'The fallback title of a form card when the title is not provided.',
+ });
+
+ render() {
+ return html`
+
+
+ `;
+ }
+}
diff --git a/packages/elements/src/components/logto-form-card.ts b/packages/elements/src/components/logto-form-card.ts
index 4b371b980..dc02bbd99 100644
--- a/packages/elements/src/components/logto-form-card.ts
+++ b/packages/elements/src/components/logto-form-card.ts
@@ -1,14 +1,15 @@
+import { localized, msg } from '@lit/localize';
import { cond } from '@silverhand/essentials';
import { LitElement, css, html } from 'lit';
import { customElement, property } from 'lit/decorators.js';
-import { type LocaleKeyOptional, type LocaleKey } from '../locales/index.js';
import { unit } from '../utils/css.js';
import { vars } from '../utils/theme.js';
const tagName = 'logto-form-card';
@customElement(tagName)
+@localized()
export class LogtoFormCard extends LitElement {
static tagName = tagName;
static styles = css`
@@ -35,16 +36,19 @@ export class LogtoFormCard extends LitElement {
`;
@property()
- title: LocaleKey = 'placeholders.not_available';
+ heading = msg('Not available', {
+ id: 'form-card.fallback-title',
+ desc: 'The fallback title of a form card when the title is not provided.',
+ });
@property()
- description: LocaleKeyOptional = '';
+ description = '';
render() {
return html`
- ${this.title}
+ ${this.heading}
${cond(this.description && html`${this.description}
`)}
diff --git a/packages/elements/src/elements/logto-profile-card.ts b/packages/elements/src/elements/logto-profile-card.ts
new file mode 100644
index 000000000..faa12273a
--- /dev/null
+++ b/packages/elements/src/elements/logto-profile-card.ts
@@ -0,0 +1,30 @@
+import { localized, msg } from '@lit/localize';
+import { LitElement, css, html } from 'lit';
+import { customElement } from 'lit/decorators.js';
+
+import { vars } from '../utils/theme.js';
+
+const tagName = 'logto-profile-card';
+
+@customElement(tagName)
+@localized()
+export class LogtoProfileCard extends LitElement {
+ static tagName = tagName;
+ static styles = css`
+ p {
+ color: ${vars.colorTextSecondary};
+ }
+ `;
+
+ render() {
+ return html`
+
+
+ 🚧 This section is a dev feature that is still working in progress.
+
+
+ `;
+ }
+}
diff --git a/packages/elements/src/index.ts b/packages/elements/src/index.ts
index d4cb36992..de8f49832 100644
--- a/packages/elements/src/index.ts
+++ b/packages/elements/src/index.ts
@@ -1,3 +1,6 @@
+export * from './components/logto-card-section.js';
export * from './components/logto-card.js';
export * from './components/logto-form-card.js';
export * from './components/logto-theme-provider.js';
+export * from './elements/logto-profile-card.js';
+export * from './utils/locale.js';
diff --git a/packages/elements/src/locales/en.ts b/packages/elements/src/locales/en.ts
deleted file mode 100644
index f8998af8b..000000000
--- a/packages/elements/src/locales/en.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-export const en = Object.freeze({
- placeholders: {
- not_available: 'Not available',
- },
- sections: {
- profile: 'Profile',
- security: 'Security',
- },
-});
diff --git a/packages/elements/src/locales/index.ts b/packages/elements/src/locales/index.ts
deleted file mode 100644
index bfce23d86..000000000
--- a/packages/elements/src/locales/index.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import { type en } from './en.js';
-
-type KeyPath = T extends Record
- ? {
- [K in keyof T]: K extends string
- ? T[K] extends Record
- ? `${K}.${KeyPath}`
- : `${K}`
- : never;
- }[keyof T]
- : '';
-
-/** The type of a full locale data object. */
-export type LocaleData = typeof en;
-
-/**
- * The type of a locale key. It is a string that represents a path to a value in the locale data
- * object.
- *
- * @example
- * With the following locale data object:
- *
- * ```ts
- * const en = {
- * profile: {
- * title: 'Profile',
- * description: 'Your profile',
- * },
- * };
- * ```
- *
- * The locale key for the title would be `'profile.title'`.
- */
-export type LocaleKey = KeyPath;
-
-/**
- * The type of a locale key that is optional. Note that it uses an empty string to represent the
- * absence of a key since Web Components do not support `undefined` as a property value.
- */
-export type LocaleKeyOptional = LocaleKey | '';
diff --git a/packages/elements/src/react.ts b/packages/elements/src/react.ts
index 1a3df2b52..cacc64ea1 100644
--- a/packages/elements/src/react.ts
+++ b/packages/elements/src/react.ts
@@ -1,6 +1,8 @@
import { createComponent } from '@lit/react';
-import { LogtoThemeProvider, LogtoCard, LogtoFormCard } from './index.js';
+import { LogtoThemeProvider, LogtoCard, LogtoFormCard, LogtoProfileCard } from './index.js';
+
+export * from './utils/locale.js';
export const createReactComponents = (react: Parameters[0]['react']) => {
return {
@@ -9,6 +11,11 @@ export const createReactComponents = (react: Parameters[
elementClass: LogtoFormCard,
react,
}),
+ LogtoProfileCard: createComponent({
+ tagName: LogtoProfileCard.tagName,
+ elementClass: LogtoProfileCard,
+ react,
+ }),
LogtoCard: createComponent({
tagName: LogtoCard.tagName,
elementClass: LogtoCard,
diff --git a/packages/elements/src/utils/locale.ts b/packages/elements/src/utils/locale.ts
new file mode 100644
index 000000000..7b41d4213
--- /dev/null
+++ b/packages/elements/src/utils/locale.ts
@@ -0,0 +1,11 @@
+import { configureLocalization } from '@lit/localize';
+
+// Generated via output.localeCodesModule
+import { sourceLocale, targetLocales } from '../generated/locale-codes.js';
+
+export const initLocalization = () =>
+ configureLocalization({
+ sourceLocale,
+ targetLocales,
+ loadLocale: async (locale) => import(`/locales/${locale}.js`),
+ });
diff --git a/packages/elements/xliff/de.xlf b/packages/elements/xliff/de.xlf
new file mode 100644
index 000000000..29226b9e3
--- /dev/null
+++ b/packages/elements/xliff/de.xlf
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ Nicht verfügbar
+ The fallback title of a form card when the title is not provided.
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/elements/xliff/es.xlf b/packages/elements/xliff/es.xlf
new file mode 100644
index 000000000..27081c5ff
--- /dev/null
+++ b/packages/elements/xliff/es.xlf
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ No disponible
+ The fallback title of a form card when the title is not provided.
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/elements/xliff/fr.xlf b/packages/elements/xliff/fr.xlf
new file mode 100644
index 000000000..d15883afb
--- /dev/null
+++ b/packages/elements/xliff/fr.xlf
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ Non disponible
+ The fallback title of a form card when the title is not provided.
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/elements/xliff/it.xlf b/packages/elements/xliff/it.xlf
new file mode 100644
index 000000000..891dd2a0c
--- /dev/null
+++ b/packages/elements/xliff/it.xlf
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ Non disponibile
+ The fallback title of a form card when the title is not provided.
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/elements/xliff/ja.xlf b/packages/elements/xliff/ja.xlf
new file mode 100644
index 000000000..cd69abf18
--- /dev/null
+++ b/packages/elements/xliff/ja.xlf
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ 利用できません
+ The fallback title of a form card when the title is not provided.
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/elements/xliff/ko.xlf b/packages/elements/xliff/ko.xlf
new file mode 100644
index 000000000..11d955e80
--- /dev/null
+++ b/packages/elements/xliff/ko.xlf
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ 사용할 수 없음
+ The fallback title of a form card when the title is not provided.
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/elements/xliff/pl-PL.xlf b/packages/elements/xliff/pl-PL.xlf
new file mode 100644
index 000000000..6773af30b
--- /dev/null
+++ b/packages/elements/xliff/pl-PL.xlf
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ Niedostępne
+ The fallback title of a form card when the title is not provided.
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/elements/xliff/pt-BR.xlf b/packages/elements/xliff/pt-BR.xlf
new file mode 100644
index 000000000..d13410c2f
--- /dev/null
+++ b/packages/elements/xliff/pt-BR.xlf
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ Não disponível
+ The fallback title of a form card when the title is not provided.
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/elements/xliff/pt-PT.xlf b/packages/elements/xliff/pt-PT.xlf
new file mode 100644
index 000000000..7c4554c56
--- /dev/null
+++ b/packages/elements/xliff/pt-PT.xlf
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ Não disponível
+ The fallback title of a form card when the title is not provided.
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/elements/xliff/ru.xlf b/packages/elements/xliff/ru.xlf
new file mode 100644
index 000000000..04de78375
--- /dev/null
+++ b/packages/elements/xliff/ru.xlf
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ Недоступно
+ The fallback title of a form card when the title is not provided.
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/elements/xliff/tr-TR.xlf b/packages/elements/xliff/tr-TR.xlf
new file mode 100644
index 000000000..2a68b7f21
--- /dev/null
+++ b/packages/elements/xliff/tr-TR.xlf
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ Mevcut değil
+ The fallback title of a form card when the title is not provided.
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/elements/xliff/zh-CN.xlf b/packages/elements/xliff/zh-CN.xlf
new file mode 100644
index 000000000..ddd4d3298
--- /dev/null
+++ b/packages/elements/xliff/zh-CN.xlf
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ 不可用
+ The fallback title of a form card when the title is not provided.
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/elements/xliff/zh-HK.xlf b/packages/elements/xliff/zh-HK.xlf
new file mode 100644
index 000000000..010937564
--- /dev/null
+++ b/packages/elements/xliff/zh-HK.xlf
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ 不可用
+ The fallback title of a form card when the title is not provided.
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/elements/xliff/zh-TW.xlf b/packages/elements/xliff/zh-TW.xlf
new file mode 100644
index 000000000..baff9eed8
--- /dev/null
+++ b/packages/elements/xliff/zh-TW.xlf
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+ 不可用
+ The fallback title of a form card when the title is not provided.
+
+
+
+
+
+
+
+
+
+
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 90e736f82..3cfa8d267 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -3144,7 +3144,7 @@ importers:
version: 2.2.0(react@18.2.0)
ts-node:
specifier: ^10.9.2
- version: 10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.3.3)
+ version: 10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.3.3)
tslib:
specifier: ^2.4.1
version: 2.4.1
@@ -3567,6 +3567,9 @@ importers:
specifier: ^3.1.4
version: 3.1.4
devDependencies:
+ '@lit/localize-tools':
+ specifier: ^0.7.2
+ version: 0.7.2
'@silverhand/eslint-config':
specifier: 6.0.1
version: 6.0.1(eslint@8.57.0)(prettier@3.0.0)(typescript@5.3.3)
@@ -5217,6 +5220,10 @@ packages:
'@lit-labs/ssr-dom-shim@1.2.0':
resolution: {integrity: sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==}
+ '@lit/localize-tools@0.7.2':
+ resolution: {integrity: sha512-d5tehVao3Hz1DlTq6jy7TUYrCeyFi/E4BkzWr8MuAMjIM8aoKCR9s3cUw6m++8ZIiqGm2z7+6aHaPc/p1FGHyA==}
+ hasBin: true
+
'@lit/localize@0.12.1':
resolution: {integrity: sha512-uuF6OO6fjqomCf3jXsJ5cTGf1APYuN88S4Gvo/fjt9YkG4OMaMvpEUqd5oWhyzrJfY+HcenAbLJNi2Cq3H7gdg==}
@@ -5652,6 +5659,9 @@ packages:
peerDependencies:
'@parcel/core': ^2.9.3
+ '@parse5/tools@0.3.0':
+ resolution: {integrity: sha512-zxRyTHkqb7WQMV8kTNBKWb1BeOFUKXBXTBWuxg9H9hfvQB3IwP6Iw2U75Ia5eyRxPNltmY7E8YAlz6zWwUnjKg==}
+
'@peculiar/asn1-android@2.3.10':
resolution: {integrity: sha512-z9Rx9cFJv7UUablZISe7uksNbFJCq13hO0yEAOoIpAymALTLlvUOSLnGiQS7okPaM5dP42oTLhezH6XDXRXjGw==}
@@ -8811,6 +8821,10 @@ packages:
resolution: {integrity: sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==}
engines: {node: '>=0.10.0'}
+ fs-extra@10.1.0:
+ resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
+ engines: {node: '>=12'}
+
fs-extra@7.0.1:
resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
engines: {node: '>=6 <7 || >=8'}
@@ -9948,10 +9962,16 @@ packages:
jsonfile@4.0.0:
resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
+ jsonfile@6.1.0:
+ resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
+
jsonparse@1.3.1:
resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
engines: {'0': node >= 0.2.0}
+ jsonschema@1.4.1:
+ resolution: {integrity: sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==}
+
jsonwebtoken@9.0.2:
resolution: {integrity: sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==}
engines: {node: '>=12', npm: '>=6'}
@@ -12243,6 +12263,9 @@ packages:
source-map-support@0.5.13:
resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==}
+ source-map-support@0.5.21:
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+
source-map@0.6.1:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
@@ -12890,6 +12913,10 @@ packages:
resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
engines: {node: '>= 4.0.0'}
+ universalify@2.0.1:
+ resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
+ engines: {node: '>= 10.0.0'}
+
unpipe@1.0.0:
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
engines: {node: '>= 0.8'}
@@ -14945,6 +14972,20 @@ snapshots:
'@lit-labs/ssr-dom-shim@1.2.0': {}
+ '@lit/localize-tools@0.7.2':
+ dependencies:
+ '@lit/localize': 0.12.1
+ '@parse5/tools': 0.3.0
+ '@xmldom/xmldom': 0.8.7
+ fast-glob: 3.3.2
+ fs-extra: 10.1.0
+ jsonschema: 1.4.1
+ lit: 3.1.4
+ minimist: 1.2.8
+ parse5: 7.1.1
+ source-map-support: 0.5.21
+ typescript: 5.3.3
+
'@lit/localize@0.12.1':
dependencies:
lit: 3.1.4
@@ -15721,6 +15762,10 @@ snapshots:
'@parcel/utils': 2.9.3
nullthrows: 1.1.1
+ '@parse5/tools@0.3.0':
+ dependencies:
+ parse5: 7.1.1
+
'@peculiar/asn1-android@2.3.10':
dependencies:
'@peculiar/asn1-schema': 2.3.8
@@ -16062,10 +16107,10 @@ snapshots:
eslint-config-prettier: 9.1.0(eslint@8.57.0)
eslint-config-xo: 0.44.0(eslint@8.57.0)
eslint-config-xo-typescript: 4.0.0(@typescript-eslint/eslint-plugin@7.7.0(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3))(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0)(typescript@5.3.3)
- eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0)
+ eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0)
eslint-plugin-consistent-default-export-name: 0.0.15
eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0)
- eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0)
+ eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
eslint-plugin-n: 17.2.1(eslint@8.57.0)
eslint-plugin-no-use-extend-native: 0.5.0
eslint-plugin-prettier: 5.1.3(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.0.0)
@@ -18898,13 +18943,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0):
+ eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0):
dependencies:
debug: 4.3.4
enhanced-resolve: 5.16.0
eslint: 8.57.0
- eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0)
- eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0)
+ eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0)
+ eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
fast-glob: 3.3.2
get-tsconfig: 4.7.3
is-core-module: 2.13.1
@@ -18915,14 +18960,14 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
- eslint-module-utils@2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0):
+ eslint-module-utils@2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0):
dependencies:
debug: 3.2.7(supports-color@5.5.0)
optionalDependencies:
'@typescript-eslint/parser': 7.7.0(eslint@8.57.0)(typescript@5.3.3)
eslint: 8.57.0
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0)
+ eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0)
transitivePeerDependencies:
- supports-color
@@ -18944,7 +18989,7 @@ snapshots:
eslint: 8.57.0
ignore: 5.3.1
- eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0):
+ eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0):
dependencies:
array-includes: 3.1.8
array.prototype.findlastindex: 1.2.5
@@ -18954,7 +18999,7 @@ snapshots:
doctrine: 2.1.0
eslint: 8.57.0
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0)
+ eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.3.3))(eslint-plugin-import@2.29.1)(eslint@8.57.0))(eslint@8.57.0)
hasown: 2.0.2
is-core-module: 2.13.1
is-glob: 4.0.3
@@ -19457,6 +19502,12 @@ snapshots:
fs-exists-sync@0.1.0: {}
+ fs-extra@10.1.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 6.1.0
+ universalify: 2.0.1
+
fs-extra@7.0.1:
dependencies:
graceful-fs: 4.2.11
@@ -20528,7 +20579,7 @@ snapshots:
strip-json-comments: 3.1.1
optionalDependencies:
'@types/node': 20.12.7
- ts-node: 10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.3.3)
+ ts-node: 10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.3.3)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
@@ -20987,8 +21038,16 @@ snapshots:
optionalDependencies:
graceful-fs: 4.2.11
+ jsonfile@6.1.0:
+ dependencies:
+ universalify: 2.0.1
+ optionalDependencies:
+ graceful-fs: 4.2.11
+
jsonparse@1.3.1: {}
+ jsonschema@1.4.1: {}
+
jsonwebtoken@9.0.2:
dependencies:
jws: 3.2.2
@@ -22820,7 +22879,7 @@ snapshots:
yaml: 2.4.5
optionalDependencies:
postcss: 8.4.39
- ts-node: 10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.3.3)
+ ts-node: 10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.3.3)
postcss-media-query-parser@0.2.3: {}
@@ -23883,6 +23942,11 @@ snapshots:
buffer-from: 1.1.2
source-map: 0.6.1
+ source-map-support@0.5.21:
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
source-map@0.6.1: {}
source-map@0.7.4: {}
@@ -24399,7 +24463,7 @@ snapshots:
ts-interface-checker@0.1.13: {}
- ts-node@10.9.2(@swc/core@1.3.52)(@types/node@20.12.7)(typescript@5.3.3):
+ ts-node@10.9.2(@swc/core@1.3.52(@swc/helpers@0.5.1))(@types/node@20.12.7)(typescript@5.3.3):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.9
@@ -24609,6 +24673,8 @@ snapshots:
universalify@0.2.0: {}
+ universalify@2.0.1: {}
+
unpipe@1.0.0: {}
update-browserslist-db@1.0.10(browserslist@4.21.4):