From c08f521cf69a0b7c0a69b68541a6ac58d6a5cd45 Mon Sep 17 00:00:00 2001 From: Nicolas Meienberger <47644445+meienberger@users.noreply.github.com> Date: Sun, 9 Jun 2024 11:30:21 +0200 Subject: [PATCH] release: 3.4.1 (#1471) * Release/3.3.1 (#1439) * chore: bump version to 3.3.1 * ci: run e2e when build-images is skipped * feat: view app logs in dashboard (#1445) * socket events for docker logs * auto-scroll with ref * add log terminal with auto scroll * remove console.logs * increase initial lines to 25 * remove more console logs * useSocketEmit * emit on disconect & hide tab if not running * change tab when not running & logs options * logs max lines * logs emit * remove console logs * refactor(logs-socket): consolidate & reduce state usage * useTranslations in logs tab * remove wrapLines from useEffect Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * order file & add spanish translations * chore: fix tsc issues --------- Co-authored-by: Jorge Montejo Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * autoforward ports in codespaces (#1447) * chore(deps-dev): bump @typescript-eslint/parser from 6.21.0 to 7.11.0 (#1443) Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.21.0 to 7.11.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.11.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix: sentry config (#1448) * chore(deps): bump the minor-patch group across 1 directory with 17 updates (#1451) * chore(deps): bump the minor-patch group across 1 directory with 17 updates Bumps the minor-patch group with 17 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) | `8.4.0` | `8.7.0` | | [@tabler/icons-react](https://github.com/tabler/tabler-icons/tree/HEAD/packages/icons-react) | `3.4.0` | `3.5.0` | | [argon2](https://github.com/ranisalt/node-argon2) | `0.40.1` | `0.40.3` | | [bullmq](https://github.com/taskforcesh/bullmq) | `5.7.12` | `5.7.14` | | [react-hook-form](https://github.com/react-hook-form/react-hook-form) | `7.51.4` | `7.51.5` | | [sass](https://github.com/sass/dart-sass) | `1.77.2` | `1.77.3` | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `20.12.12` | `20.12.13` | | [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `7.10.0` | `7.11.0` | | [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) | `4.2.1` | `4.3.0` | | [eslint-plugin-jsonc](https://github.com/ota-meshi/eslint-plugin-jsonc) | `2.15.1` | `2.16.0` | | [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) | `7.34.1` | `7.34.2` | | [jsdom](https://github.com/jsdom/jsdom) | `24.0.0` | `24.1.0` | | [knip](https://github.com/webpro-nl/knip/tree/HEAD/packages/knip) | `5.16.0` | `5.17.3` | | [@sentry/types](https://github.com/getsentry/sentry-javascript) | `8.4.0` | `8.7.0` | | [@sentry/node](https://github.com/getsentry/sentry-javascript) | `8.4.0` | `8.7.0` | | [hono](https://github.com/honojs/hono) | `4.3.11` | `4.4.0` | | [nodemon](https://github.com/remy/nodemon) | `3.1.0` | `3.1.2` | Updates `@sentry/nextjs` from 8.4.0 to 8.7.0 - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/8.4.0...8.7.0) Updates `@tabler/icons-react` from 3.4.0 to 3.5.0 - [Release notes](https://github.com/tabler/tabler-icons/releases) - [Commits](https://github.com/tabler/tabler-icons/commits/v3.5.0/packages/icons-react) Updates `argon2` from 0.40.1 to 0.40.3 - [Release notes](https://github.com/ranisalt/node-argon2/releases) - [Commits](https://github.com/ranisalt/node-argon2/commits) Updates `bullmq` from 5.7.12 to 5.7.14 - [Release notes](https://github.com/taskforcesh/bullmq/releases) - [Commits](https://github.com/taskforcesh/bullmq/compare/v5.7.12...v5.7.14) Updates `react-hook-form` from 7.51.4 to 7.51.5 - [Release notes](https://github.com/react-hook-form/react-hook-form/releases) - [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md) - [Commits](https://github.com/react-hook-form/react-hook-form/compare/v7.51.4...v7.51.5) Updates `sass` from 1.77.2 to 1.77.3 - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.77.2...1.77.3) Updates `@types/node` from 20.12.12 to 20.12.13 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Updates `@typescript-eslint/eslint-plugin` from 7.10.0 to 7.11.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.11.0/packages/eslint-plugin) Updates `@vitejs/plugin-react` from 4.2.1 to 4.3.0 - [Release notes](https://github.com/vitejs/vite-plugin-react/releases) - [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite-plugin-react/commits/v4.3.0/packages/plugin-react) Updates `eslint-plugin-jsonc` from 2.15.1 to 2.16.0 - [Release notes](https://github.com/ota-meshi/eslint-plugin-jsonc/releases) - [Changelog](https://github.com/ota-meshi/eslint-plugin-jsonc/blob/master/CHANGELOG.md) - [Commits](https://github.com/ota-meshi/eslint-plugin-jsonc/compare/v2.15.1...v2.16.0) Updates `eslint-plugin-react` from 7.34.1 to 7.34.2 - [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases) - [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md) - [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.34.1...v7.34.2) Updates `jsdom` from 24.0.0 to 24.1.0 - [Release notes](https://github.com/jsdom/jsdom/releases) - [Changelog](https://github.com/jsdom/jsdom/blob/main/Changelog.md) - [Commits](https://github.com/jsdom/jsdom/compare/24.0.0...24.1.0) Updates `knip` from 5.16.0 to 5.17.3 - [Release notes](https://github.com/webpro-nl/knip/releases) - [Changelog](https://github.com/webpro-nl/knip/blob/main/packages/knip/.release-it.json) - [Commits](https://github.com/webpro-nl/knip/commits/5.17.3/packages/knip) Updates `@sentry/types` from 8.4.0 to 8.7.0 - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/8.4.0...8.7.0) Updates `@sentry/node` from 8.4.0 to 8.7.0 - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/8.4.0...8.7.0) Updates `hono` from 4.3.11 to 4.4.0 - [Release notes](https://github.com/honojs/hono/releases) - [Commits](https://github.com/honojs/hono/compare/v4.3.11...v4.4.0) Updates `nodemon` from 3.1.0 to 3.1.2 - [Release notes](https://github.com/remy/nodemon/releases) - [Commits](https://github.com/remy/nodemon/compare/v3.1.0...v3.1.2) --- updated-dependencies: - dependency-name: "@sentry/nextjs" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: "@tabler/icons-react" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: argon2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: bullmq dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: react-hook-form dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: sass dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: "@vitejs/plugin-react" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: eslint-plugin-jsonc dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: eslint-plugin-react dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: jsdom dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: knip dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: "@sentry/types" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: "@sentry/node" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: hono dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: nodemon dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-patch ... Signed-off-by: dependabot[bot] * chore: fix vite plugin typings --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicolas Meienberger * Feat/tipi logs terminal (#1450) * refactor: extract logs terminal ui in its own component * feat: runtipi logs settings * fix: runtipi dashboard logs project name * ci: use nightly version for e2e * feat(docker-tamplate): include addPorts and readOnly in volumes (#1456) * chore(deps): bump the minor-patch group with 6 updates (#1454) * fix(logs): maxlines not updated in closure * chore: add missing websecure options in docker-compose.dev * chore(deps): bump the minor-patch group across 1 directory with 13 updates (#1466) * chore(deps): bump the minor-patch group across 1 directory with 13 updates Bumps the minor-patch group with 13 updates in the / directory: | Package | From | To | | --- | --- | --- | | [drizzle-orm](https://github.com/drizzle-team/drizzle-orm) | `0.31.0` | `0.31.1` | | [pg](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg) | `8.11.5` | `8.12.0` | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `20.13.0` | `20.14.1` | | [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `7.11.0` | `7.12.0` | | [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `7.11.0` | `7.12.0` | | [knip](https://github.com/webpro-nl/knip/tree/HEAD/packages/knip) | `5.17.3` | `5.17.4` | | [msw](https://github.com/mswjs/msw) | `2.3.0` | `2.3.1` | | [prettier](https://github.com/prettier/prettier) | `3.2.5` | `3.3.0` | | [hono](https://github.com/honojs/hono) | `4.4.2` | `4.4.3` | | [yaml](https://github.com/eemeli/yaml) | `2.4.2` | `2.4.3` | | [@sentry/esbuild-plugin](https://github.com/getsentry/sentry-javascript-bundler-plugins) | `2.17.0` | `2.18.0` | | [nodemon](https://github.com/remy/nodemon) | `3.1.2` | `3.1.3` | | [tsx](https://github.com/privatenumber/tsx) | `4.11.0` | `4.11.2` | Updates `drizzle-orm` from 0.31.0 to 0.31.1 - [Release notes](https://github.com/drizzle-team/drizzle-orm/releases) - [Commits](https://github.com/drizzle-team/drizzle-orm/compare/0.31.0...0.31.1) Updates `pg` from 8.11.5 to 8.12.0 - [Changelog](https://github.com/brianc/node-postgres/blob/master/CHANGELOG.md) - [Commits](https://github.com/brianc/node-postgres/commits/pg@8.12.0/packages/pg) Updates `@types/node` from 20.13.0 to 20.14.1 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Updates `@typescript-eslint/eslint-plugin` from 7.11.0 to 7.12.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.12.0/packages/eslint-plugin) Updates `@typescript-eslint/parser` from 7.11.0 to 7.12.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v7.12.0/packages/parser) Updates `knip` from 5.17.3 to 5.17.4 - [Release notes](https://github.com/webpro-nl/knip/releases) - [Changelog](https://github.com/webpro-nl/knip/blob/main/packages/knip/.release-it.json) - [Commits](https://github.com/webpro-nl/knip/commits/5.17.4/packages/knip) Updates `msw` from 2.3.0 to 2.3.1 - [Release notes](https://github.com/mswjs/msw/releases) - [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md) - [Commits](https://github.com/mswjs/msw/compare/v2.3.0...v2.3.1) Updates `prettier` from 3.2.5 to 3.3.0 - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/3.2.5...3.3.0) Updates `hono` from 4.4.2 to 4.4.3 - [Release notes](https://github.com/honojs/hono/releases) - [Commits](https://github.com/honojs/hono/compare/v4.4.2...v4.4.3) Updates `yaml` from 2.4.2 to 2.4.3 - [Release notes](https://github.com/eemeli/yaml/releases) - [Commits](https://github.com/eemeli/yaml/compare/v2.4.2...v2.4.3) Updates `@sentry/esbuild-plugin` from 2.17.0 to 2.18.0 - [Release notes](https://github.com/getsentry/sentry-javascript-bundler-plugins/releases) - [Changelog](https://github.com/getsentry/sentry-javascript-bundler-plugins/blob/main/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript-bundler-plugins/compare/2.17.0...2.18.0) Updates `nodemon` from 3.1.2 to 3.1.3 - [Release notes](https://github.com/remy/nodemon/releases) - [Commits](https://github.com/remy/nodemon/compare/v3.1.2...v3.1.3) Updates `tsx` from 4.11.0 to 4.11.2 - [Release notes](https://github.com/privatenumber/tsx/releases) - [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs) - [Commits](https://github.com/privatenumber/tsx/compare/v4.11.0...v4.11.2) --- updated-dependencies: - dependency-name: drizzle-orm dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: pg dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: knip dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: msw dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: prettier dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: hono dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: yaml dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: "@sentry/esbuild-plugin" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: nodemon dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: tsx dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-patch ... Signed-off-by: dependabot[bot] * chore: fix linting issue --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicolas Meienberger * docs: add gabrielfariasnunes as a contributor for translation (#1461) * docs: update README.md [skip ci] * docs: update .all-contributorsrc [skip ci] --------- Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> * feat: add portuguese language * chore(deps-dev): bump @testing-library/react from 15.0.7 to 16.0.0 (#1464) Bumps [@testing-library/react](https://github.com/testing-library/react-testing-library) from 15.0.7 to 16.0.0. - [Release notes](https://github.com/testing-library/react-testing-library/releases) - [Changelog](https://github.com/testing-library/react-testing-library/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/react-testing-library/compare/v15.0.7...v16.0.0) --- updated-dependencies: - dependency-name: "@testing-library/react" dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump the minor-patch group with 5 updates (#1468) Bumps the minor-patch group with 5 updates: | Package | From | To | | --- | --- | --- | | [@hookform/resolvers](https://github.com/react-hook-form/resolvers) | `3.4.2` | `3.5.0` | | [bullmq](https://github.com/taskforcesh/bullmq) | `5.7.14` | `5.7.15` | | [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) | `7.24.6` | `7.24.7` | | [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `20.14.1` | `20.14.2` | | [prettier](https://github.com/prettier/prettier) | `3.3.0` | `3.3.1` | Updates `@hookform/resolvers` from 3.4.2 to 3.5.0 - [Release notes](https://github.com/react-hook-form/resolvers/releases) - [Commits](https://github.com/react-hook-form/resolvers/compare/v3.4.2...v3.5.0) Updates `bullmq` from 5.7.14 to 5.7.15 - [Release notes](https://github.com/taskforcesh/bullmq/releases) - [Commits](https://github.com/taskforcesh/bullmq/compare/v5.7.14...v5.7.15) Updates `@babel/core` from 7.24.6 to 7.24.7 - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.24.7/packages/babel-core) Updates `@types/node` from 20.14.1 to 20.14.2 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) Updates `prettier` from 3.3.0 to 3.3.1 - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/3.3.0...3.3.1) --- updated-dependencies: - dependency-name: "@hookform/resolvers" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: bullmq dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: "@babel/core" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: prettier dependency-type: direct:development update-type: version-update:semver-patch dependency-group: minor-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * New Crowdin updates (#1467) * New translations en.json (French) * New translations en.json (Romanian) * New translations en.json (Spanish) * New translations en.json (Afrikaans) * New translations en.json (Turkish) * New translations en.json (Arabic) * New translations en.json (Catalan) * New translations en.json (Czech) * New translations en.json (Danish) * New translations en.json (German) * New translations en.json (Greek) * New translations en.json (Finnish) * New translations en.json (Hebrew) * New translations en.json (Hungarian) * New translations en.json (Italian) * New translations en.json (Japanese) * New translations en.json (Korean) * New translations en.json (Dutch) * New translations en.json (Norwegian) * New translations en.json (Polish) * New translations en.json (Portuguese) * New translations en.json (Russian) * New translations en.json (Serbian (Cyrillic)) * New translations en.json (Swedish) * New translations en.json (Ukrainian) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Traditional) * New translations en.json (English) * New translations en.json (Vietnamese) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Spanish) * New translations en.json (Russian) * New translations en.json (French) * New translations en.json (French) * New translations en.json (Turkish) * New translations en.json (Romanian) * New translations en.json (Spanish) * New translations en.json (Afrikaans) * New translations en.json (Arabic) * New translations en.json (Catalan) * New translations en.json (Czech) * New translations en.json (Danish) * New translations en.json (German) * New translations en.json (Greek) * New translations en.json (Finnish) * New translations en.json (Hebrew) * New translations en.json (Hungarian) * New translations en.json (Italian) * New translations en.json (Japanese) * New translations en.json (Korean) * New translations en.json (Dutch) * New translations en.json (Norwegian) * New translations en.json (Polish) * New translations en.json (Portuguese) * New translations en.json (Russian) * New translations en.json (Serbian (Cyrillic)) * New translations en.json (Swedish) * New translations en.json (Ukrainian) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Traditional) * New translations en.json (English) * New translations en.json (Vietnamese) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Spanish) * New translations en.json (Russian) * New translations en.json (Vietnamese) * New translations en.json (Vietnamese) * New translations en.json (German) * New translations en.json (German) * New translations en.json (German) * New translations en.json (German) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Swedish) * New translations en.json (Swedish) * New translations en.json (French) * New translations en.json (Turkish) * New translations en.json (Romanian) * New translations en.json (Spanish) * New translations en.json (Afrikaans) * New translations en.json (Arabic) * New translations en.json (Catalan) * New translations en.json (Czech) * New translations en.json (Danish) * New translations en.json (German) * New translations en.json (Greek) * New translations en.json (Finnish) * New translations en.json (Hebrew) * New translations en.json (Hungarian) * New translations en.json (Italian) * New translations en.json (Japanese) * New translations en.json (Korean) * New translations en.json (Dutch) * New translations en.json (Norwegian) * New translations en.json (Polish) * New translations en.json (Portuguese) * New translations en.json (Russian) * New translations en.json (Serbian (Cyrillic)) * New translations en.json (Swedish) * New translations en.json (Ukrainian) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Traditional) * New translations en.json (English) * New translations en.json (Vietnamese) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Russian) * New translations en.json (French) * New translations en.json (Turkish) * New translations en.json (Romanian) * New translations en.json (Spanish) * New translations en.json (Afrikaans) * New translations en.json (Arabic) * New translations en.json (Catalan) * New translations en.json (Czech) * New translations en.json (Danish) * New translations en.json (German) * New translations en.json (Greek) * New translations en.json (Finnish) * New translations en.json (Hebrew) * New translations en.json (Hungarian) * New translations en.json (Italian) * New translations en.json (Japanese) * New translations en.json (Korean) * New translations en.json (Dutch) * New translations en.json (Norwegian) * New translations en.json (Polish) * New translations en.json (Portuguese) * New translations en.json (Russian) * New translations en.json (Serbian (Cyrillic)) * New translations en.json (Swedish) * New translations en.json (Ukrainian) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Traditional) * New translations en.json (English) * New translations en.json (Vietnamese) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Russian) * New translations en.json (Spanish) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Portuguese, Brazilian) * chore(deps): bump the minor-patch group across 1 directory with 9 updates (#1470) Bumps the minor-patch group with 9 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@hookform/resolvers](https://github.com/react-hook-form/resolvers) | `3.5.0` | `3.6.0` | | [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) | `8.7.0` | `8.8.0` | | [drizzle-orm](https://github.com/drizzle-team/drizzle-orm) | `0.31.1` | `0.31.2` | | [eslint-plugin-jest](https://github.com/jest-community/eslint-plugin-jest) | `28.5.0` | `28.6.0` | | [knip](https://github.com/webpro-nl/knip/tree/HEAD/packages/knip) | `5.17.4` | `5.18.0` | | [@sentry/types](https://github.com/getsentry/sentry-javascript) | `8.7.0` | `8.8.0` | | [@sentry/node](https://github.com/getsentry/sentry-javascript) | `8.7.0` | `8.8.0` | | [hono](https://github.com/honojs/hono) | `4.4.3` | `4.4.4` | | [tsx](https://github.com/privatenumber/tsx) | `4.11.2` | `4.13.2` | Updates `@hookform/resolvers` from 3.5.0 to 3.6.0 - [Release notes](https://github.com/react-hook-form/resolvers/releases) - [Commits](https://github.com/react-hook-form/resolvers/compare/v3.5.0...v3.6.0) Updates `@sentry/nextjs` from 8.7.0 to 8.8.0 - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/8.7.0...8.8.0) Updates `drizzle-orm` from 0.31.1 to 0.31.2 - [Release notes](https://github.com/drizzle-team/drizzle-orm/releases) - [Commits](https://github.com/drizzle-team/drizzle-orm/compare/0.31.1...0.31.2) Updates `eslint-plugin-jest` from 28.5.0 to 28.6.0 - [Release notes](https://github.com/jest-community/eslint-plugin-jest/releases) - [Changelog](https://github.com/jest-community/eslint-plugin-jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/jest-community/eslint-plugin-jest/compare/v28.5.0...v28.6.0) Updates `knip` from 5.17.4 to 5.18.0 - [Release notes](https://github.com/webpro-nl/knip/releases) - [Changelog](https://github.com/webpro-nl/knip/blob/main/packages/knip/.release-it.json) - [Commits](https://github.com/webpro-nl/knip/commits/5.18.0/packages/knip) Updates `@sentry/types` from 8.7.0 to 8.8.0 - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/8.7.0...8.8.0) Updates `@sentry/node` from 8.7.0 to 8.8.0 - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-javascript/compare/8.7.0...8.8.0) Updates `hono` from 4.4.3 to 4.4.4 - [Release notes](https://github.com/honojs/hono/releases) - [Commits](https://github.com/honojs/hono/compare/v4.4.3...v4.4.4) Updates `tsx` from 4.11.2 to 4.13.2 - [Release notes](https://github.com/privatenumber/tsx/releases) - [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs) - [Commits](https://github.com/privatenumber/tsx/compare/v4.11.2...v4.13.2) --- updated-dependencies: - dependency-name: "@hookform/resolvers" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: "@sentry/nextjs" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: drizzle-orm dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: eslint-plugin-jest dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: knip dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: "@sentry/types" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: "@sentry/node" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor-patch - dependency-name: hono dependency-type: direct:production update-type: version-update:semver-patch dependency-group: minor-patch - dependency-name: tsx dependency-type: direct:development update-type: version-update:semver-minor dependency-group: minor-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore: bump version to 3.4.1 * feat(logs): keep tabs in url and settings in local storage * fix(logs): run only on the client --------- Signed-off-by: dependabot[bot] Co-authored-by: Jorge Montejo Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Stavros Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> --- .all-contributorsrc | 9 + README.md | 3 +- docker-compose.dev.yml | 26 + package.json | 31 +- packages/shared/package.json | 8 +- packages/worker/package.json | 24 +- .../worker/src/lib/docker/docker-helpers.ts | 1 - pnpm-lock.yaml | 1923 ++++++++--------- public/mockServiceWorker.js | 2 +- .../AppDetailsTabs/AppDetailsTabTriggers.tsx | 33 + .../AppDetailsTabs/AppDetailsTabs.tsx | 16 +- .../components/AppDetailsTabs/AppLogs.tsx | 19 +- .../LogsContainer/LogsContainer.tsx | 19 +- .../components/LogsTerminal/LogsTerminal.tsx | 7 +- .../components/ClientOnly/ClientOnly.tsx | 18 + src/client/messages/af-ZA.json | 10 +- src/client/messages/ar-SA.json | 10 +- src/client/messages/ca-ES.json | 10 +- src/client/messages/cs-CZ.json | 10 +- src/client/messages/da-DK.json | 10 +- src/client/messages/de-DE.json | 172 +- src/client/messages/el-GR.json | 10 +- src/client/messages/en-US.json | 10 +- src/client/messages/es-ES.json | 8 +- src/client/messages/fi-FI.json | 10 +- src/client/messages/fr-FR.json | 10 +- src/client/messages/he-IL.json | 10 +- src/client/messages/hu-HU.json | 10 +- src/client/messages/it-IT.json | 10 +- src/client/messages/ja-JP.json | 10 +- src/client/messages/ko-KR.json | 10 +- src/client/messages/nl-NL.json | 10 +- src/client/messages/no-NO.json | 10 +- src/client/messages/pl-PL.json | 10 +- src/client/messages/pt-BR.json | 54 +- src/client/messages/pt-PT.json | 10 +- src/client/messages/ro-RO.json | 10 +- src/client/messages/ru-RU.json | 10 +- src/client/messages/sr-SP.json | 10 +- src/client/messages/sv-SE.json | 16 +- src/client/messages/tr-TR.json | 10 +- src/client/messages/uk-UA.json | 10 +- src/client/messages/vi-VN.json | 128 +- src/client/messages/zh-CN.json | 10 +- src/client/messages/zh-TW.json | 10 +- src/shared/internationalization/locales.ts | 3 + 46 files changed, 1492 insertions(+), 1278 deletions(-) create mode 100644 src/app/(dashboard)/app-store/[id]/components/AppDetailsTabs/AppDetailsTabTriggers.tsx create mode 100644 src/client/components/ClientOnly/ClientOnly.tsx diff --git a/.all-contributorsrc b/.all-contributorsrc index d45b897b..c968c819 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -475,6 +475,15 @@ "contributions": [ "code" ] + }, + { + "login": "gabrielfariasnunes", + "name": "Gabriel Farias Nunes", + "avatar_url": "https://avatars.githubusercontent.com/u/21142663?v=4", + "profile": "http://www.bielfarias.com", + "contributions": [ + "translation" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index 5642add4..1b2cc4d9 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Tipi — A personal homeserver for everyone -[![All Contributors](https://img.shields.io/badge/all_contributors-50-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-51-orange.svg?style=flat-square)](#contributors-) [![License](https://img.shields.io/github/license/runtipi/runtipi)](https://github.com/runtipi/runtipi/blob/master/LICENSE) @@ -140,6 +140,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d hex-developer
hex-developer

💻 + Gabriel Farias Nunes
Gabriel Farias Nunes

🌍 diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 4e01ad09..7ae004e2 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -107,6 +107,15 @@ services: traefik.http.routers.dashboard.rule: PathPrefix("/") traefik.http.routers.dashboard.service: dashboard traefik.http.routers.dashboard.entrypoints: web + # Websecure + traefik.http.routers.dashboard-insecure.rule: Host(`${DOMAIN}`) && PathPrefix(`/`) + traefik.http.routers.dashboard-insecure.service: dashboard + traefik.http.routers.dashboard-insecure.entrypoints: web + traefik.http.routers.dashboard-insecure.middlewares: redirect-to-https + traefik.http.routers.dashboard-secure.rule: Host(`${DOMAIN}`) && PathPrefix(`/`) + traefik.http.routers.dashboard-secure.service: dashboard + traefik.http.routers.dashboard-secure.entrypoints: websecure + traefik.http.routers.dashboard-secure.tls.certresolver: myresolver # Local domain traefik.http.routers.dashboard-local-insecure.rule: Host(`${LOCAL_DOMAIN}`) traefik.http.routers.dashboard-local-insecure.entrypoints: web @@ -128,6 +137,23 @@ services: traefik.http.routers.worker-api.rule: PathPrefix("/worker-api") traefik.http.routers.worker-api.service: worker-api traefik.http.routers.worker-api.entrypoints: web + # Websecure + traefik.http.routers.worker-insecure.rule: Host(`${DOMAIN}`) && PathPrefix(`/worker`) + traefik.http.routers.worker-insecure.service: worker + traefik.http.routers.worker-insecure.entrypoints: web + traefik.http.routers.worker-insecure.middlewares: redirect-to-https + traefik.http.routers.worker-secure.rule: Host(`${DOMAIN}`) && PathPrefix(`/worker`) + traefik.http.routers.worker-secure.service: worker + traefik.http.routers.worker-secure.entrypoints: websecure + traefik.http.routers.worker-secure.tls.certresolver: myresolver + traefik.http.routers.worker-api-insecure.rule: Host(`${DOMAIN}`) && PathPrefix(`/worker-api`) + traefik.http.routers.worker-api-insecure.service: worker-api + traefik.http.routers.worker-api-insecure.entrypoints: web + traefik.http.routers.worker-api-insecure.middlewares: redirect-to-https + traefik.http.routers.worker-api-secure.rule: Host(`${DOMAIN}`) && PathPrefix(`/worker-api`) + traefik.http.routers.worker-api-secure.service: worker-api + traefik.http.routers.worker-api-secure.entrypoints: websecure + traefik.http.routers.worker-api-secure.tls.certresolver: myresolver # Local domain traefik.http.routers.worker-local-insecure.rule: Host(`${LOCAL_DOMAIN}`) && PathPrefix("/worker") traefik.http.routers.worker-local-insecure.entrypoints: web diff --git a/package.json b/package.json index 5eb3e588..6374d402 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "runtipi", - "version": "3.4.0", + "version": "3.4.1", "description": "A homeserver for everyone", "scripts": { "clean-containers": "docker rm -f $(docker ps -a -q)", @@ -25,7 +25,7 @@ "postinstall": "./scripts/postinstall.sh" }, "dependencies": { - "@hookform/resolvers": "^3.4.2", + "@hookform/resolvers": "^3.6.0", "@otplib/core": "^12.0.1", "@otplib/plugin-crypto": "^12.0.1", "@otplib/plugin-thirty-two": "^12.0.1", @@ -38,13 +38,14 @@ "@radix-ui/react-tabs": "^1.0.4", "@runtipi/postgres-migrations": "^5.3.0", "@runtipi/shared": "workspace:^", - "@sentry/nextjs": "^8.7.0", + "@sentry/nextjs": "^8.8.0", "@tabler/core": "1.0.0-beta20", "@tabler/icons-react": "^3.5.0", + "@uidotdev/usehooks": "^2.4.1", "argon2": "^0.40.3", - "bullmq": "^5.7.14", + "bullmq": "^5.7.15", "clsx": "^2.1.0", - "drizzle-orm": "^0.31.0", + "drizzle-orm": "^0.31.2", "fs-extra": "^11.2.0", "geist": "^1.3.0", "ipaddr.js": "^2.2.0", @@ -56,7 +57,7 @@ "next-client-cookies": "^1.1.1", "next-intl": "^3.14.1", "next-safe-action": "^6.2.0", - "pg": "^8.11.5", + "pg": "^8.12.0", "qrcode.react": "^3.1.0", "react": "18.3.1", "react-dom": "18.3.1", @@ -81,12 +82,12 @@ "zustand": "^4.5.2" }, "devDependencies": { - "@babel/core": "^7.24.6", + "@babel/core": "^7.24.7", "@faker-js/faker": "^8.4.1", "@playwright/test": "^1.44.1", "@testing-library/dom": "^10.1.0", "@testing-library/jest-dom": "^6.4.5", - "@testing-library/react": "^15.0.7", + "@testing-library/react": "^16.0.0", "@testing-library/user-event": "^14.5.2", "@total-typescript/shoehorn": "^0.1.2", "@total-typescript/ts-reset": "^0.5.1", @@ -94,15 +95,15 @@ "@types/fs-extra": "^11.0.4", "@types/jsonwebtoken": "^9.0.6", "@types/lodash.merge": "^4.6.9", - "@types/node": "20.13.0", + "@types/node": "20.14.2", "@types/pg": "^8.11.6", "@types/react": "18.3.3", "@types/react-dom": "18.3.0", "@types/semver": "^7.5.8", "@types/uuid": "^9.0.8", "@types/validator": "^13.11.10", - "@typescript-eslint/eslint-plugin": "^7.11.0", - "@typescript-eslint/parser": "^7.11.0", + "@typescript-eslint/eslint-plugin": "^7.12.0", + "@typescript-eslint/parser": "^7.12.0", "@vitejs/plugin-react": "^4.3.0", "@vitest/coverage-v8": "^1.5.0", "@vitest/ui": "^1.6.0", @@ -111,7 +112,7 @@ "eslint-config-next": "14.2.3", "eslint-config-prettier": "^9.1.0", "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jest": "^28.5.0", + "eslint-plugin-jest": "^28.6.0", "eslint-plugin-jest-dom": "^5.4.0", "eslint-plugin-jsonc": "^2.16.0", "eslint-plugin-jsx-a11y": "^6.8.0", @@ -121,11 +122,11 @@ "jest": "^29.7.0", "jsdom": "^24.1.0", "jsonc-eslint-parser": "^2.4.0", - "knip": "^5.17.3", + "knip": "^5.18.0", "memfs": "^4.8.2", - "msw": "^2.3.0", + "msw": "^2.3.1", "next-router-mock": "^0.9.13", - "prettier": "^3.2.5", + "prettier": "^3.3.1", "typescript": "5.4.5", "vite-tsconfig-paths": "^4.3.2", "vitest": "^1.6.0", diff --git a/packages/shared/package.json b/packages/shared/package.json index 60055d78..a8264e6f 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -38,12 +38,12 @@ "zod": "^3.23.8" }, "devDependencies": { - "@sentry/types": "^8.7.0", + "@sentry/types": "^8.8.0", "@types/lodash.clonedeep": "^4.5.9", - "@typescript-eslint/eslint-plugin": "^7.11.0", - "@typescript-eslint/parser": "^7.11.0", + "@typescript-eslint/eslint-plugin": "^7.12.0", + "@typescript-eslint/parser": "^7.12.0", "eslint": "8.57.0", "eslint-plugin-import": "^2.29.1", - "prettier": "^3.2.5" + "prettier": "^3.3.1" } } diff --git a/packages/worker/package.json b/packages/worker/package.json index 2f08ee8c..65427649 100644 --- a/packages/worker/package.json +++ b/packages/worker/package.json @@ -18,19 +18,19 @@ "license": "ISC", "devDependencies": { "@faker-js/faker": "^8.4.1", - "@sentry/esbuild-plugin": "^2.17.0", + "@sentry/esbuild-plugin": "^2.18.0", "@types/web-push": "^3.6.3", - "@typescript-eslint/eslint-plugin": "^7.11.0", - "@typescript-eslint/parser": "^7.11.0", + "@typescript-eslint/eslint-plugin": "^7.12.0", + "@typescript-eslint/parser": "^7.12.0", "dotenv-cli": "^7.4.2", "esbuild": "^0.19.4", "eslint": "8.57.0", "eslint-plugin-import": "^2.29.1", - "knip": "^5.17.3", + "knip": "^5.18.0", "memfs": "^4.8.2", - "nodemon": "^3.1.2", - "prettier": "^3.2.5", - "tsx": "^4.10.2", + "nodemon": "^3.1.3", + "prettier": "^3.3.1", + "tsx": "^4.13.2", "typescript": "^5.4.5", "vite-tsconfig-paths": "^4.3.2", "vitest": "^1.6.0" @@ -40,16 +40,16 @@ "@runtipi/postgres-migrations": "^5.3.0", "@runtipi/shared": "workspace:^", "@sentry/integrations": "^7.114.0", - "@sentry/node": "^8.7.0", - "bullmq": "^5.7.14", + "@sentry/node": "^8.8.0", + "bullmq": "^5.7.15", "dotenv": "^16.4.5", - "hono": "^4.4.2", + "hono": "^4.4.4", "ioredis": "^5.4.1", - "pg": "^8.11.5", + "pg": "^8.12.0", "socket.io": "^4.7.5", "systeminformation": "^5.22.10", "web-push": "^3.6.7", - "yaml": "^2.4.1", + "yaml": "^2.4.3", "zod": "^3.23.8" } } diff --git a/packages/worker/src/lib/docker/docker-helpers.ts b/packages/worker/src/lib/docker/docker-helpers.ts index fa2e3a45..0f712667 100644 --- a/packages/worker/src/lib/docker/docker-helpers.ts +++ b/packages/worker/src/lib/docker/docker-helpers.ts @@ -166,7 +166,6 @@ export const handleViewAppLogsEvent = async (socket: Socket, event: SocketEvent) socket.on('app-logs', (data) => { if (data.event === 'stopLogs') { - console.log('Stopping logs'); logs.kill('SIGINT'); } }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7f04f5bf..533257e3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@hookform/resolvers': - specifier: ^3.4.2 - version: 3.4.2(react-hook-form@7.51.5) + specifier: ^3.6.0 + version: 3.6.0(react-hook-form@7.51.5) '@otplib/core': specifier: ^12.0.1 version: 12.0.1 @@ -48,26 +48,29 @@ importers: specifier: workspace:^ version: link:packages/shared '@sentry/nextjs': - specifier: ^8.7.0 - version: 8.7.0(@opentelemetry/api@1.8.0)(@opentelemetry/core@1.24.1)(@opentelemetry/instrumentation@0.51.1)(@opentelemetry/sdk-trace-base@1.24.1)(@opentelemetry/semantic-conventions@1.24.1)(next@14.2.3)(react@18.3.1)(webpack@5.91.0) + specifier: ^8.8.0 + version: 8.8.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.0)(@opentelemetry/instrumentation@0.52.0)(@opentelemetry/sdk-trace-base@1.25.0)(@opentelemetry/semantic-conventions@1.25.0)(next@14.2.3)(react@18.3.1)(webpack@5.91.0) '@tabler/core': specifier: 1.0.0-beta20 version: 1.0.0-beta20 '@tabler/icons-react': specifier: ^3.5.0 version: 3.5.0(react@18.3.1) + '@uidotdev/usehooks': + specifier: ^2.4.1 + version: 2.4.1(react-dom@18.3.1)(react@18.3.1) argon2: specifier: ^0.40.3 version: 0.40.3 bullmq: - specifier: ^5.7.14 - version: 5.7.14 + specifier: ^5.7.15 + version: 5.7.15 clsx: specifier: ^2.1.0 version: 2.1.1 drizzle-orm: - specifier: ^0.31.0 - version: 0.31.0(@opentelemetry/api@1.8.0)(@types/pg@8.11.6)(@types/react@18.3.3)(pg@8.11.5)(react@18.3.1) + specifier: ^0.31.2 + version: 0.31.2(@opentelemetry/api@1.9.0)(@types/pg@8.11.6)(@types/react@18.3.3)(pg@8.12.0)(react@18.3.1) fs-extra: specifier: ^11.2.0 version: 11.2.0 @@ -91,7 +94,7 @@ importers: version: 6.3.0 next: specifier: 14.2.3 - version: 14.2.3(@babel/core@7.24.6)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(react-dom@18.3.1)(react@18.3.1)(sass@1.77.4) + version: 14.2.3(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.44.1)(react-dom@18.3.1)(react@18.3.1)(sass@1.77.4) next-client-cookies: specifier: ^1.1.1 version: 1.1.1(next@14.2.3)(react@18.3.1) @@ -100,10 +103,10 @@ importers: version: 3.14.1(next@14.2.3)(react@18.3.1) next-safe-action: specifier: ^6.2.0 - version: 6.2.0(ajv@6.12.6)(next@14.2.3)(react@18.3.1)(vite@5.2.12) + version: 6.2.0(ajv@6.12.6)(next@14.2.3)(react@18.3.1)(vite@5.2.13) pg: - specifier: ^8.11.5 - version: 8.11.5 + specifier: ^8.12.0 + version: 8.12.0 qrcode.react: specifier: ^3.1.0 version: 3.1.0(react@18.3.1) @@ -172,8 +175,8 @@ importers: version: 4.5.2(@types/react@18.3.3)(react@18.3.1) devDependencies: '@babel/core': - specifier: ^7.24.6 - version: 7.24.6 + specifier: ^7.24.7 + version: 7.24.7 '@faker-js/faker': specifier: ^8.4.1 version: 8.4.1 @@ -187,8 +190,8 @@ importers: specifier: ^6.4.5 version: 6.4.5(jest@29.7.0)(vitest@1.6.0) '@testing-library/react': - specifier: ^15.0.7 - version: 15.0.7(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) + specifier: ^16.0.0 + version: 16.0.0(@testing-library/dom@10.1.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1) '@testing-library/user-event': specifier: ^14.5.2 version: 14.5.2(@testing-library/dom@10.1.0) @@ -211,8 +214,8 @@ importers: specifier: ^4.6.9 version: 4.6.9 '@types/node': - specifier: 20.13.0 - version: 20.13.0 + specifier: 20.14.2 + version: 20.14.2 '@types/pg': specifier: ^8.11.6 version: 8.11.6 @@ -232,14 +235,14 @@ importers: specifier: ^13.11.10 version: 13.11.10 '@typescript-eslint/eslint-plugin': - specifier: ^7.11.0 - version: 7.11.0(@typescript-eslint/parser@7.11.0)(eslint@8.57.0)(typescript@5.4.5) + specifier: ^7.12.0 + version: 7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': - specifier: ^7.11.0 - version: 7.11.0(eslint@8.57.0)(typescript@5.4.5) + specifier: ^7.12.0 + version: 7.12.0(eslint@8.57.0)(typescript@5.4.5) '@vitejs/plugin-react': specifier: ^4.3.0 - version: 4.3.0(vite@5.2.12) + version: 4.3.0(vite@5.2.13) '@vitest/coverage-v8': specifier: ^1.5.0 version: 1.6.0(vitest@1.6.0) @@ -260,10 +263,10 @@ importers: version: 9.1.0(eslint@8.57.0) eslint-plugin-import: specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.11.0)(eslint@8.57.0) + version: 2.29.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0) eslint-plugin-jest: - specifier: ^28.5.0 - version: 28.5.0(@typescript-eslint/eslint-plugin@7.11.0)(eslint@8.57.0)(jest@29.7.0)(typescript@5.4.5) + specifier: ^28.6.0 + version: 28.6.0(@typescript-eslint/eslint-plugin@7.12.0)(eslint@8.57.0)(jest@29.7.0)(typescript@5.4.5) eslint-plugin-jest-dom: specifier: ^5.4.0 version: 5.4.0(@testing-library/dom@10.1.0)(eslint@8.57.0) @@ -284,7 +287,7 @@ importers: version: 6.2.2(eslint@8.57.0)(typescript@5.4.5) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.13.0) + version: 29.7.0(@types/node@20.14.2) jsdom: specifier: ^24.1.0 version: 24.1.0 @@ -292,29 +295,29 @@ importers: specifier: ^2.4.0 version: 2.4.0 knip: - specifier: ^5.17.3 - version: 5.17.3(@types/node@20.13.0)(typescript@5.4.5) + specifier: ^5.18.0 + version: 5.18.0(@types/node@20.14.2)(typescript@5.4.5) memfs: specifier: ^4.8.2 version: 4.9.2 msw: - specifier: ^2.3.0 - version: 2.3.0(typescript@5.4.5) + specifier: ^2.3.1 + version: 2.3.1(typescript@5.4.5) next-router-mock: specifier: ^0.9.13 version: 0.9.13(next@14.2.3)(react@18.3.1) prettier: - specifier: ^3.2.5 - version: 3.2.5 + specifier: ^3.3.1 + version: 3.3.1 typescript: specifier: 5.4.5 version: 5.4.5 vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.4.5)(vite@5.2.12) + version: 4.3.2(typescript@5.4.5)(vite@5.2.13) vitest: specifier: ^1.6.0 - version: 1.6.0(@types/node@20.13.0)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.4) + version: 1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.4) wait-for-expect: specifier: ^3.0.2 version: 3.0.2 @@ -335,26 +338,26 @@ importers: version: 3.23.8 devDependencies: '@sentry/types': - specifier: ^8.7.0 - version: 8.7.0 + specifier: ^8.8.0 + version: 8.8.0 '@types/lodash.clonedeep': specifier: ^4.5.9 version: 4.5.9 '@typescript-eslint/eslint-plugin': - specifier: ^7.11.0 - version: 7.11.0(@typescript-eslint/parser@7.11.0)(eslint@8.57.0)(typescript@5.4.5) + specifier: ^7.12.0 + version: 7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': - specifier: ^7.11.0 - version: 7.11.0(eslint@8.57.0)(typescript@5.4.5) + specifier: ^7.12.0 + version: 7.12.0(eslint@8.57.0)(typescript@5.4.5) eslint: specifier: 8.57.0 version: 8.57.0 eslint-plugin-import: specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.11.0)(eslint@8.57.0) + version: 2.29.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0) prettier: - specifier: ^3.2.5 - version: 3.2.5 + specifier: ^3.3.1 + version: 3.3.1 packages/shared/node: {} @@ -373,23 +376,23 @@ importers: specifier: ^7.114.0 version: 7.114.0 '@sentry/node': - specifier: ^8.7.0 - version: 8.7.0 + specifier: ^8.8.0 + version: 8.8.0 bullmq: - specifier: ^5.7.14 - version: 5.7.14 + specifier: ^5.7.15 + version: 5.7.15 dotenv: specifier: ^16.4.5 version: 16.4.5 hono: - specifier: ^4.4.2 - version: 4.4.2 + specifier: ^4.4.4 + version: 4.4.4 ioredis: specifier: ^5.4.1 version: 5.4.1 pg: - specifier: ^8.11.5 - version: 8.11.5 + specifier: ^8.12.0 + version: 8.12.0 socket.io: specifier: ^4.7.5 version: 4.7.5 @@ -400,8 +403,8 @@ importers: specifier: ^3.6.7 version: 3.6.7 yaml: - specifier: ^2.4.1 - version: 2.4.2 + specifier: ^2.4.3 + version: 2.4.3 zod: specifier: ^3.23.8 version: 3.23.8 @@ -410,17 +413,17 @@ importers: specifier: ^8.4.1 version: 8.4.1 '@sentry/esbuild-plugin': - specifier: ^2.17.0 - version: 2.17.0 + specifier: ^2.18.0 + version: 2.18.0 '@types/web-push': specifier: ^3.6.3 version: 3.6.3 '@typescript-eslint/eslint-plugin': - specifier: ^7.11.0 - version: 7.11.0(@typescript-eslint/parser@7.11.0)(eslint@8.57.0)(typescript@5.4.5) + specifier: ^7.12.0 + version: 7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': - specifier: ^7.11.0 - version: 7.11.0(eslint@8.57.0)(typescript@5.4.5) + specifier: ^7.12.0 + version: 7.12.0(eslint@8.57.0)(typescript@5.4.5) dotenv-cli: specifier: ^7.4.2 version: 7.4.2 @@ -432,31 +435,31 @@ importers: version: 8.57.0 eslint-plugin-import: specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.11.0)(eslint@8.57.0) + version: 2.29.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0) knip: - specifier: ^5.17.3 - version: 5.17.3(@types/node@20.13.0)(typescript@5.4.5) + specifier: ^5.18.0 + version: 5.18.0(@types/node@20.14.2)(typescript@5.4.5) memfs: specifier: ^4.8.2 version: 4.9.2 nodemon: - specifier: ^3.1.2 - version: 3.1.2 + specifier: ^3.1.3 + version: 3.1.3 prettier: - specifier: ^3.2.5 - version: 3.2.5 + specifier: ^3.3.1 + version: 3.3.1 tsx: - specifier: ^4.10.2 - version: 4.11.0 + specifier: ^4.13.2 + version: 4.13.2 typescript: specifier: ^5.4.5 version: 5.4.5 vite-tsconfig-paths: specifier: ^4.3.2 - version: 4.3.2(typescript@5.4.5)(vite@5.2.12) + version: 4.3.2(typescript@5.4.5)(vite@5.2.13) vitest: specifier: ^1.6.0 - version: 1.6.0(@types/node@20.13.0)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.4) + version: 1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.4) packages: @@ -475,334 +478,316 @@ packages: resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.24.5 + '@babel/highlight': 7.24.6 picocolors: 1.0.1 dev: true - /@babel/code-frame@7.24.6: - resolution: {integrity: sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==} + /@babel/code-frame@7.24.7: + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.24.6 + '@babel/highlight': 7.24.7 picocolors: 1.0.1 - /@babel/compat-data@7.24.6: - resolution: {integrity: sha512-aC2DGhBq5eEdyXWqrDInSqQjO0k8xtPRf5YylULqx8MCd6jBtzqfta/3ETMRpuKIc5hyswfO80ObyA1MvkCcUQ==} + /@babel/compat-data@7.24.7: + resolution: {integrity: sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==} engines: {node: '>=6.9.0'} - /@babel/core@7.24.6: - resolution: {integrity: sha512-qAHSfAdVyFmIvl0VHELib8xar7ONuSHrE2hLnsaWkYNTI68dmi1x8GYDhJjMI/e7XWal9QBlZkwbOnkcw7Z8gQ==} + /@babel/core@7.24.7: + resolution: {integrity: sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.6 - '@babel/generator': 7.24.6 - '@babel/helper-compilation-targets': 7.24.6 - '@babel/helper-module-transforms': 7.24.6(@babel/core@7.24.6) - '@babel/helpers': 7.24.6 - '@babel/parser': 7.24.6 - '@babel/template': 7.24.6 - '@babel/traverse': 7.24.6 - '@babel/types': 7.24.6 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-compilation-targets': 7.24.7 + '@babel/helper-module-transforms': 7.24.7(@babel/core@7.24.7) + '@babel/helpers': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/template': 7.24.7 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - /@babel/generator@7.24.5: - resolution: {integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==} + /@babel/generator@7.24.7: + resolution: {integrity: sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.6 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - dev: true - - /@babel/generator@7.24.6: - resolution: {integrity: sha512-S7m4eNa6YAPJRHmKsLHIDJhNAGNKoWNiWefz1MBbpnt8g9lvMDl1hir4P9bo/57bQEmuwEhnRU/AMWsD0G/Fbg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.24.6 + '@babel/types': 7.24.7 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 - /@babel/helper-compilation-targets@7.24.6: - resolution: {integrity: sha512-VZQ57UsDGlX/5fFA7GkVPplZhHsVc+vuErWgdOiysI9Ksnw0Pbbd6pnPiR/mmJyKHgyIW0c7KT32gmhiF+cirg==} + /@babel/helper-compilation-targets@7.24.7: + resolution: {integrity: sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.24.6 - '@babel/helper-validator-option': 7.24.6 + '@babel/compat-data': 7.24.7 + '@babel/helper-validator-option': 7.24.7 browserslist: 4.23.0 lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-environment-visitor@7.24.6: - resolution: {integrity: sha512-Y50Cg3k0LKLMjxdPjIl40SdJgMB85iXn27Vk/qbHZCFx/o5XO3PSnpi675h1KEmmDb6OFArfd5SCQEQ5Q4H88g==} - engines: {node: '>=6.9.0'} - - /@babel/helper-function-name@7.24.6: - resolution: {integrity: sha512-xpeLqeeRkbxhnYimfr2PC+iA0Q7ljX/d1eZ9/inYbmfG2jpl8Lu3DyXvpOAnrS5kxkfOWJjioIMQsaMBXFI05w==} + /@babel/helper-environment-visitor@7.24.7: + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.24.6 - '@babel/types': 7.24.6 + '@babel/types': 7.24.7 - /@babel/helper-hoist-variables@7.24.6: - resolution: {integrity: sha512-SF/EMrC3OD7dSta1bLJIlrsVxwtd0UpjRJqLno6125epQMJ/kyFmpTT4pbvPbdQHzCHg+biQ7Syo8lnDtbR+uA==} + /@babel/helper-function-name@7.24.7: + resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.6 + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 - /@babel/helper-module-imports@7.24.6: - resolution: {integrity: sha512-a26dmxFJBF62rRO9mmpgrfTLsAuyHk4e1hKTUkD/fcMfynt8gvEKwQPQDVxWhca8dHoDck+55DFt42zV0QMw5g==} + /@babel/helper-hoist-variables@7.24.7: + resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.6 + '@babel/types': 7.24.7 - /@babel/helper-module-transforms@7.24.6(@babel/core@7.24.6): - resolution: {integrity: sha512-Y/YMPm83mV2HJTbX1Qh2sjgjqcacvOlhbzdCCsSlblOKjSYmQqEbO6rUniWQyRo9ncyfjT8hnUjlG06RXDEmcA==} + /@babel/helper-module-imports@7.24.7: + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color + + /@babel/helper-module-transforms@7.24.7(@babel/core@7.24.7): + resolution: {integrity: sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.6 - '@babel/helper-environment-visitor': 7.24.6 - '@babel/helper-module-imports': 7.24.6 - '@babel/helper-simple-access': 7.24.6 - '@babel/helper-split-export-declaration': 7.24.6 - '@babel/helper-validator-identifier': 7.24.6 + '@babel/core': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + transitivePeerDependencies: + - supports-color /@babel/helper-plugin-utils@7.24.6: resolution: {integrity: sha512-MZG/JcWfxybKwsA9N9PmtF2lOSFSEMVCpIRrbxccZFLJPrJciJdG/UhSh5W96GEteJI2ARqm5UAHxISwRDLSNg==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-simple-access@7.24.6: - resolution: {integrity: sha512-nZzcMMD4ZhmB35MOOzQuiGO5RzL6tJbsT37Zx8M5L/i9KSrukGXWTjLe1knIbb/RmxoJE9GON9soq0c0VEMM5g==} + /@babel/helper-simple-access@7.24.7: + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.6 + '@babel/traverse': 7.24.7 + '@babel/types': 7.24.7 + transitivePeerDependencies: + - supports-color - /@babel/helper-split-export-declaration@7.24.6: - resolution: {integrity: sha512-CvLSkwXGWnYlF9+J3iZUvwgAxKiYzK3BWuo+mLzD/MDGOZDj7Gq8+hqaOkMxmJwmlv0iu86uH5fdADd9Hxkymw==} + /@babel/helper-split-export-declaration@7.24.7: + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.24.6 + '@babel/types': 7.24.7 - /@babel/helper-string-parser@7.24.1: - resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-string-parser@7.24.6: - resolution: {integrity: sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==} + /@babel/helper-string-parser@7.24.7: + resolution: {integrity: sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.24.5: - resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-identifier@7.24.6: - resolution: {integrity: sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==} + /@babel/helper-validator-identifier@7.24.7: + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.24.6: - resolution: {integrity: sha512-Jktc8KkF3zIkePb48QO+IapbXlSapOW9S+ogZZkcO6bABgYAxtZcjZ/O005111YLf+j4M84uEgwYoidDkXbCkQ==} + /@babel/helper-validator-option@7.24.7: + resolution: {integrity: sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==} engines: {node: '>=6.9.0'} - /@babel/helpers@7.24.6: - resolution: {integrity: sha512-V2PI+NqnyFu1i0GyTd/O/cTpxzQCYioSkUIRmgo7gFEHKKCg5w46+r/A6WeUR1+P3TeQ49dspGPNd/E3n9AnnA==} + /@babel/helpers@7.24.7: + resolution: {integrity: sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.24.6 - '@babel/types': 7.24.6 - - /@babel/highlight@7.24.5: - resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.24.5 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.1 - dev: true + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 /@babel/highlight@7.24.6: resolution: {integrity: sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.24.6 + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.0.1 + dev: true + + /@babel/highlight@7.24.7: + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.0.1 - /@babel/parser@7.24.5: - resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} + /@babel/parser@7.24.7: + resolution: {integrity: sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.24.5 - dev: true + '@babel/types': 7.24.7 - /@babel/parser@7.24.6: - resolution: {integrity: sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.24.6 - - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.6): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.7): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.6 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.6 dev: true - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.6): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.7): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.6 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.6 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.6): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.7): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.6 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.6 dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.6): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.7): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.6 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.6 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.6): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.7): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.6 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.6 dev: true - /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.6): + /@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.6 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.6 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.6): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.7): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.6 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.6 dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.6): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.7): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.6 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.6 dev: true - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.6): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.7): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.6 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.6 dev: true - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.6): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.7): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.6 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.6 dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.6): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.7): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.6 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.6 dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.6): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.7): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.6 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.6 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.6): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.7): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.6 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.6 dev: true - /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.6): + /@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.7): resolution: {integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.6 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.6 dev: true - /@babel/plugin-transform-react-jsx-self@7.24.6(@babel/core@7.24.6): + /@babel/plugin-transform-react-jsx-self@7.24.6(@babel/core@7.24.7): resolution: {integrity: sha512-FfZfHXtQ5jYPQsCRyLpOv2GeLIIJhs8aydpNh39vRDjhD411XcfWDni5i7OjP/Rs8GAtTn7sWFFELJSHqkIxYg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.6 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.6 dev: true - /@babel/plugin-transform-react-jsx-source@7.24.6(@babel/core@7.24.6): + /@babel/plugin-transform-react-jsx-source@7.24.6(@babel/core@7.24.7): resolution: {integrity: sha512-BQTBCXmFRreU3oTUXcGKuPOfXAGb1liNY4AvvFKsOBAJ89RKcTsIrSsnMYkj59fNa66OFKnSa4AJZfy5Y4B9WA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.24.6 + '@babel/core': 7.24.7 '@babel/helper-plugin-utils': 7.24.6 dev: true @@ -812,55 +797,37 @@ packages: dependencies: regenerator-runtime: 0.14.1 - /@babel/template@7.24.0: - resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + /@babel/template@7.24.7: + resolution: {integrity: sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.6 - '@babel/types': 7.24.6 - dev: true + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 - /@babel/template@7.24.6: - resolution: {integrity: sha512-3vgazJlLwNXi9jhrR1ef8qiB65L1RK90+lEQwv4OxveHnqC3BfmnHdgySwRLzf6akhlOYenT+b7AfWq+a//AHw==} + /@babel/traverse@7.24.7: + resolution: {integrity: sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.24.6 - '@babel/parser': 7.24.6 - '@babel/types': 7.24.6 - - /@babel/traverse@7.24.6: - resolution: {integrity: sha512-OsNjaJwT9Zn8ozxcfoBc+RaHdj3gFmCmYoQLUII1o6ZrUwku0BMg80FoOTPx+Gi6XhcQxAYE4xyjPTo4SxEQqw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.24.6 - '@babel/generator': 7.24.6 - '@babel/helper-environment-visitor': 7.24.6 - '@babel/helper-function-name': 7.24.6 - '@babel/helper-hoist-variables': 7.24.6 - '@babel/helper-split-export-declaration': 7.24.6 - '@babel/parser': 7.24.6 - '@babel/types': 7.24.6 - debug: 4.3.4(supports-color@5.5.0) + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 + debug: 4.3.5(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/types@7.24.5: - resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==} + /@babel/types@7.24.7: + resolution: {integrity: sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.24.1 - '@babel/helper-validator-identifier': 7.24.5 - to-fast-properties: 2.0.0 - dev: true - - /@babel/types@7.24.6: - resolution: {integrity: sha512-WaMsgi6Q8zMgMth93GvWPXkhAIEobfsIkLTacoVZoK1J0CevIPGYY2Vo5YvJGqyHqXM6P4ppOYGsIRU8MM9pFQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.24.6 - '@babel/helper-validator-identifier': 7.24.6 + '@babel/helper-string-parser': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 /@bcoe/v8-coverage@0.2.3: @@ -892,7 +859,7 @@ packages: kuler: 2.0.0 dev: false - /@decs/typeschema@0.12.2(ajv@6.12.6)(vite@5.2.12)(zod@3.23.8): + /@decs/typeschema@0.12.2(ajv@6.12.6)(vite@5.2.13)(zod@3.23.8): resolution: {integrity: sha512-PA8uAH/Xfsa5X2UNNSnb5i6vB8qWZywp4+d2U8kNMCO7qwirYRPbFCHwIfWBJyURh4rULn3Ey+VBADLcK2xxaQ==} deprecated: TypeSchema has been restructured. Install @typeschema/main or @typeschema/all instead. peerDependencies: @@ -947,7 +914,7 @@ packages: optional: true dependencies: ajv: 6.12.6 - vite: 5.2.12(@types/node@20.13.0)(sass@1.77.4) + vite: 5.2.13(@types/node@20.14.2)(sass@1.77.4) zod: 3.23.8 dev: false @@ -955,7 +922,7 @@ packages: resolution: {integrity: sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==} requiresBuild: true dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: false optional: true @@ -1390,12 +1357,17 @@ packages: engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true + /@eslint-community/regexpp@4.10.1: + resolution: {integrity: sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + /@eslint/eslintrc@2.1.4: resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) espree: 9.6.1 globals: 13.24.0 ignore: 5.3.1 @@ -1449,13 +1421,13 @@ packages: resolution: {integrity: sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==} dependencies: '@formatjs/intl-localematcher': 0.5.4 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@formatjs/fast-memoize@2.2.0: resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@formatjs/icu-messageformat-parser@2.7.6: @@ -1463,26 +1435,26 @@ packages: dependencies: '@formatjs/ecma402-abstract': 1.18.2 '@formatjs/icu-skeleton-parser': 1.8.0 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@formatjs/icu-skeleton-parser@1.8.0: resolution: {integrity: sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==} dependencies: '@formatjs/ecma402-abstract': 1.18.2 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@formatjs/intl-localematcher@0.2.32: resolution: {integrity: sha512-k/MEBstff4sttohyEpXxCmC3MqbUn9VvHGlZ8fauLzkbwXmVrEeyzS+4uhrvAk9DWU9/7otYWxyDox4nT/KVLQ==} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@formatjs/intl-localematcher@0.5.4: resolution: {integrity: sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: false /@hono/node-server@1.11.2: @@ -1490,8 +1462,8 @@ packages: engines: {node: '>=18.14.1'} dev: false - /@hookform/resolvers@3.4.2(react-hook-form@7.51.5): - resolution: {integrity: sha512-1m9uAVIO8wVf7VCDAGsuGA0t6Z3m6jVGAN50HkV9vYLl0yixKK/Z1lr01vaRvYCkIKGoy1noVRxMzQYb4y/j1Q==} + /@hookform/resolvers@3.6.0(react-hook-form@7.51.5): + resolution: {integrity: sha512-UBcpyOX3+RR+dNnqBd0lchXpoL8p4xC21XP8H6Meb8uve5Br1GCnmg0PcBoKKqPKgGu9GHQ/oygcmPrQhetwqw==} peerDependencies: react-hook-form: ^7.0.0 dependencies: @@ -1503,7 +1475,7 @@ packages: engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -1706,22 +1678,22 @@ packages: dev: false optional: true - /@inquirer/confirm@3.1.7: - resolution: {integrity: sha512-BZjjj19W8gnh5UGFTdP5ZxpgMNRjy03Dzq3k28sB2MDlEUFrcyTkMEoGgvBmGpUw0vNBoCJkTcbHZ3e9tb+d+w==} + /@inquirer/confirm@3.1.9: + resolution: {integrity: sha512-UF09aejxCi4Xqm6N/jJAiFXArXfi9al52AFaSD+2uIHnhZGtd1d6lIGTRMPouVSJxbGEi+HkOWSYaiEY/+szUw==} engines: {node: '>=18'} dependencies: - '@inquirer/core': 8.2.0 - '@inquirer/type': 1.3.1 + '@inquirer/core': 8.2.2 + '@inquirer/type': 1.3.3 dev: true - /@inquirer/core@8.2.0: - resolution: {integrity: sha512-pexNF9j2orvMMTgoQ/uKOw8V6/R7x/sIDwRwXRhl4i0pPSh6paRzFehpFKpfMbqix1/+gzCekhYTmVbQpWkVjQ==} + /@inquirer/core@8.2.2: + resolution: {integrity: sha512-K8SuNX45jEFlX3EBJpu9B+S2TISzMPGXZIuJ9ME924SqbdW6Pt6fIkKvXg7mOEOKJ4WxpQsxj0UTfcL/A434Ww==} engines: {node: '>=18'} dependencies: - '@inquirer/figures': 1.0.1 - '@inquirer/type': 1.3.1 + '@inquirer/figures': 1.0.3 + '@inquirer/type': 1.3.3 '@types/mute-stream': 0.0.4 - '@types/node': 20.13.0 + '@types/node': 20.14.2 '@types/wrap-ansi': 3.0.0 ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -1733,13 +1705,13 @@ packages: wrap-ansi: 6.2.0 dev: true - /@inquirer/figures@1.0.1: - resolution: {integrity: sha512-mtup3wVKia3ZwULPHcbs4Mor8Voi+iIXEWD7wCNbIO6lYR62oPCTQyrddi5OMYVXHzeCSoneZwJuS8sBvlEwDw==} + /@inquirer/figures@1.0.3: + resolution: {integrity: sha512-ErXXzENMH5pJt5/ssXV0DfWUZqly8nGzf0UcBV9xTnP+KyffE2mqyxIMBrZ8ijQck2nU0TQm40EQB53YreyWHw==} engines: {node: '>=18'} dev: true - /@inquirer/type@1.3.1: - resolution: {integrity: sha512-Pe3PFccjPVJV1vtlfVvm9OnlbxqdnP5QcscFEFEnK5quChf1ufZtM0r8mR5ToWHMxZOh0s8o/qp9ANGRTo/DAw==} + /@inquirer/type@1.3.3: + resolution: {integrity: sha512-xTUt0NulylX27/zMx04ZYar/kr1raaiFTVvQ5feljQsiAgdm0WPj4S73/ye0fbslh+15QrIuDvfCXTek7pMY5A==} engines: {node: '>=18'} dev: true @@ -1780,7 +1752,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.13.0 + '@types/node': 20.14.2 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -1801,14 +1773,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.13.0 + '@types/node': 20.14.2 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.13.0) + jest-config: 29.7.0(@types/node@20.14.2) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -1836,7 +1808,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.13.0 + '@types/node': 20.14.2 jest-mock: 29.7.0 dev: true @@ -1863,7 +1835,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.13.0 + '@types/node': 20.14.2 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -1896,7 +1868,7 @@ packages: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 20.13.0 + '@types/node': 20.14.2 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -1958,7 +1930,7 @@ packages: resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.24.6 + '@babel/core': 7.24.7 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 babel-plugin-istanbul: 6.1.1 @@ -1984,7 +1956,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.13.0 + '@types/node': 20.14.2 '@types/yargs': 17.0.32 chalk: 4.1.2 dev: true @@ -2259,239 +2231,246 @@ packages: resolution: {integrity: sha512-E3skn949Pk1z2XtXu/lxf6QAZpawuTM/IUEXcAzpiUkTd73Hmvw26FiN3cJuTmkpM5hZzHwkomVdtrh/n/zzwA==} engines: {node: '>=14'} dependencies: - '@opentelemetry/api': 1.8.0 + '@opentelemetry/api': 1.9.0 dev: false - /@opentelemetry/api@1.8.0: - resolution: {integrity: sha512-I/s6F7yKUDdtMsoBWXJe8Qz40Tui5vsuKCWJEWVL+5q9sSWRzzx6v2KeNsOBEwd94j0eWkpWCH4yB6rZg9Mf0w==} + /@opentelemetry/api-logs@0.52.0: + resolution: {integrity: sha512-HxjD7xH9iAE4OyhNaaSec65i1H6QZYBWSwWkowFfsc5YAcDvJG30/J1sRKXEQqdmUcKTXEAnA66UciqZha/4+Q==} + engines: {node: '>=14'} + dependencies: + '@opentelemetry/api': 1.9.0 + dev: false + + /@opentelemetry/api@1.9.0: + resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} - /@opentelemetry/context-async-hooks@1.24.1(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-R5r6DO4kgEOVBxFXhXjwospLQkv+sYxwCfjvoZBe7Zm6KKXAV9kDSJhi/D1BweowdZmO+sdbENLs374gER8hpQ==} + /@opentelemetry/context-async-hooks@1.25.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-sBW313mnMyFg0cp/40BRzrZBWG+581s2j5gIsa5fgGadswyILk4mNFATsqrCOpAx945RDuZ2B7ThQLgor9OpfA==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.9.0' + '@opentelemetry/api': '>=1.0.0 <1.10.0' dependencies: - '@opentelemetry/api': 1.8.0 + '@opentelemetry/api': 1.9.0 dev: false - /@opentelemetry/core@1.24.1(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-wMSGfsdmibI88K9wB498zXY04yThPexo8jvwNNlm542HZB7XrrMRBbAyKJqG8qDRJwIBdBrPMi4V9ZPW/sqrcg==} + /@opentelemetry/core@1.25.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-n0B3s8rrqGrasTgNkXLKXzN0fXo+6IYP7M5b7AMsrZM33f/y6DS6kJ0Btd7SespASWq8bgL3taLo0oe0vB52IQ==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.9.0' + '@opentelemetry/api': '>=1.0.0 <1.10.0' dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/semantic-conventions': 1.24.1 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/semantic-conventions': 1.25.0 dev: false - /@opentelemetry/instrumentation-connect@0.36.1(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-xI5Q/CMmzBmHshPnzzjD19ptFaYO/rQWzokpNio4QixZYWhJsa35QgRvN9FhPkwgtuJIbt/CWWAufJ3egJNHEA==} + /@opentelemetry/instrumentation-connect@0.37.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-SeQktDIH5rNzjiEiazWiJAIXkmnLOnNV7wwHpahrqE0Ph+Z3heqMfxRtoMtbdJSIYLfcNZYO51AjxZ00IXufdw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.24.1 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.0 '@types/connect': 3.4.36 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-express@0.39.0(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-AG8U7z7D0JcBu/7dDcwb47UMEzj9/FMiJV2iQZqrsZnxR3FjB9J9oIH2iszJYci2eUdp2WbdvtpD9RV/zmME5A==} + /@opentelemetry/instrumentation-express@0.40.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-ahITgz2cFaMvqGDvxOdgxjgQyGmFccGMIoiwYpZQ+MJQt5qxvRZhau794/McdvtUp4LrK5OfvK1hQp4YsW2VGA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.24.1 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.0 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-fastify@0.36.1(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-3Nfm43PI0I+3EX+1YbSy6xbDu276R1Dh1tqAk68yd4yirnIh52Kd5B+nJ8CgHA7o3UKakpBjj6vSzi5vNCzJIA==} + /@opentelemetry/instrumentation-fastify@0.37.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-WRjwzNZgupSzbEYvo9s+QuHJRqZJjVdNxSEpGBwWK8RKLlHGwGVAu0gcc2gPamJWUJsGqPGvahAPWM18ZkWj6A==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.24.1 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.0 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-graphql@0.40.0(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-LVRdEHWACWOczv2imD+mhUrLMxsEjPPi32vIZJT57zygR5aUiA4em8X3aiGOCycgbMWkIu8xOSGSxdx3JmzN+w==} + /@opentelemetry/instrumentation-graphql@0.41.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-R/gXeljgIhaRDKquVkKYT5QHPnFouM8ooyePZEP0kqyaVAedtR1V7NfAUJbxfTG5fBQa5wdmLjvu63+tzRXZCA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.0(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-hapi@0.38.0(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-ZcOqEuwuutTDYIjhDIStix22ECblG/i9pHje23QGs4Q4YS4RMaZ5hKCoQJxW88Z4K7T53rQkdISmoXFKDV8xMg==} + /@opentelemetry/instrumentation-hapi@0.39.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-ik2nA9Yj2s2ay+aNY+tJsKCsEx6Tsc2g/MK0iWBW5tibwrWKTy1pdVt5sB3kd5Gkimqj23UV5+FH2JFcQLeKug==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.24.1 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.0 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-http@0.51.1(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-6b3nZnFFEz/3xZ6w8bVxctPUWIPWiXuPQ725530JgxnN1cvYFd8CJ75PrHZNjynmzSSnqBkN3ef4R9N+RpMh8Q==} + /@opentelemetry/instrumentation-http@0.52.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-E6ywZuxTa4LnVXZGwL1oj3e2Eog1yIaNqa8KjKXoGkDNKte9/SjQnePXOmhQYI0A9nf0UyFbP9aKd+yHrkJXUA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.24.1 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.0 semver: 7.6.2 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-ioredis@0.40.0(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-Jv/fH7KhpWe4KBirsiqeUJIYrsdR2iu2l4nWhfOlRvaZ+zYIiLEzTQR6QhBbyRoAbU4OuYJzjWusOmmpGBnwng==} + /@opentelemetry/instrumentation-ioredis@0.41.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-rxiLloU8VyeJGm5j2fZS8ShVdB82n7VNP8wTwfUQqDwRfHCnkzGr+buKoxuhGD91gtwJ91RHkjHA1Eg6RqsUTg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.0(@opentelemetry/api@1.9.0) '@opentelemetry/redis-common': 0.36.2 - '@opentelemetry/semantic-conventions': 1.24.1 + '@opentelemetry/semantic-conventions': 1.25.0 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-koa@0.40.0(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-dJc3H/bKMcgUYcQpLF+1IbmUKus0e5Fnn/+ru/3voIRHwMADT3rFSUcGLWSczkg68BCgz0vFWGDTvPtcWIFr7A==} + /@opentelemetry/instrumentation-koa@0.41.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-mbPnDt7ELvpM2S0vixYUsde7122lgegLOJQxx8iJQbB8YHal/xnTh9v7IfArSVzIDo+E+080hxZyUZD4boOWkw==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.24.1 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.0 '@types/koa': 2.14.0 '@types/koa__router': 12.0.3 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-mongodb@0.43.0(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-bMKej7Y76QVUD3l55Q9YqizXybHUzF3pujsBFjqbZrRn2WYqtsDtTUlbCK7fvXNPwFInqZ2KhnTqd0gwo8MzaQ==} + /@opentelemetry/instrumentation-mongodb@0.44.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-VPnmN5LZN8gWQ1znRz7mdZBly4h4G8Fsp8NJYqgM1CEoglX+O/Dj36zesZVSi1InPyDX2hGDTt6Qp3DFYjl7WA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/sdk-metrics': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.24.1 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-metrics': 1.25.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.0 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-mongoose@0.38.1(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-zaeiasdnRjXe6VhYCBMdkmAVh1S5MmXC/0spet+yqoaViGnYst/DOxPvhwg3yT4Yag5crZNWsVXnA538UjP6Ow==} + /@opentelemetry/instrumentation-mongoose@0.39.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-J1r66A7zJklPPhMtrFOO7/Ud2p0Pv5u8+r23Cd1JUH6fYPmftNJVsLp2urAt6PHK4jVqpP/YegN8wzjJ2mZNPQ==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.24.1 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.0 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-mysql2@0.38.1(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-qkpHMgWSDTYVB1vlZ9sspf7l2wdS5DDq/rbIepDwX5BA0N0068JTQqh0CgAh34tdFqSCnWXIhcyOXC2TtRb0sg==} + /@opentelemetry/instrumentation-mysql2@0.39.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-Iypuq2z6TCfriAXCIZjRq8GTFCKhQv5SpXbmI+e60rYdXw8NHtMH4NXcGF0eKTuoCsC59IYSTUvDQYDKReaszA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.24.1 - '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.8.0) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.0 + '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-mysql@0.38.1(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-+iBAawUaTfX/HAlvySwozx0C2B6LBfNPXX1W8Z2On1Uva33AGkw2UjL9XgIg1Pj4eLZ9R4EoJ/aFz+Xj4E/7Fw==} + /@opentelemetry/instrumentation-mysql@0.39.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-8snHPh83rhrDf31v9Kq0Nf+ts8hdr7NguuszRqZomZBHgE0+UyXZSkXHAAFZoBPPRMGyM68uaFE5hVtFl+wOcA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.24.1 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.0 '@types/mysql': 2.15.22 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-nestjs-core@0.37.1(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-ebYQjHZEmGHWEALwwDGhSQVLBaurFnuLIkZD5igPXrt7ohfF4lc5/4al1LO+vKc0NHk8SJWStuRueT86ISA8Vg==} + /@opentelemetry/instrumentation-nestjs-core@0.38.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-M381Df1dM8aqihZz2yK+ugvMFK5vlHG/835dc67Sx2hH4pQEQYDA2PpFPTgc9AYYOydQaj7ClFQunESimjXDgg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.24.1 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.0 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation-pg@0.41.0(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-BSlhpivzBD77meQNZY9fS4aKgydA8AJBzv2dqvxXFy/Hq64b7HURgw/ztbmwFeYwdF5raZZUifiiNSMLpOJoSA==} + /@opentelemetry/instrumentation-pg@0.42.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-sjgcM8CswYy8zxHgXv4RAZ09DlYhQ+9TdlourUs63Df/ek5RrB1ZbjznqW7PB6c3TyJJmX6AVtPTjAsROovEjA==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.24.1 - '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.8.0) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.0 + '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) '@types/pg': 8.6.1 '@types/pg-pool': 2.0.4 transitivePeerDependencies: - supports-color dev: false - /@opentelemetry/instrumentation@0.43.0(@opentelemetry/api@1.8.0): + /@opentelemetry/instrumentation@0.43.0(@opentelemetry/api@1.9.0): resolution: {integrity: sha512-S1uHE+sxaepgp+t8lvIDuRgyjJWisAb733198kwQTUc9ZtYQ2V2gmyCtR1x21ePGVLoMiX/NWY7WA290hwkjJQ==} engines: {node: '>=14'} requiresBuild: true peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.8.0 + '@opentelemetry/api': 1.9.0 '@types/shimmer': 1.0.5 import-in-the-middle: 1.4.2 require-in-the-middle: 7.3.0 @@ -2502,13 +2481,13 @@ packages: dev: false optional: true - /@opentelemetry/instrumentation@0.51.1(@opentelemetry/api@1.8.0): + /@opentelemetry/instrumentation@0.51.1(@opentelemetry/api@1.9.0): resolution: {integrity: sha512-JIrvhpgqY6437QIqToyozrUG1h5UhwHkaGK/WAX+fkrpyPtc+RO5FkRtUd9BH0MibabHHvqsnBGKfKVijbmp8w==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.3.0 dependencies: - '@opentelemetry/api': 1.8.0 + '@opentelemetry/api': 1.9.0 '@opentelemetry/api-logs': 0.51.1 '@types/shimmer': 1.0.5 import-in-the-middle: 1.7.4 @@ -2519,59 +2498,76 @@ packages: - supports-color dev: false + /@opentelemetry/instrumentation@0.52.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-LPwSIrw+60cheWaXsfGL8stBap/AppKQJFE+qqRvzYrgttXFH2ofoIMxWadeqPTq4BYOXM/C7Bdh/T+B60xnlQ==} + engines: {node: '>=14'} + peerDependencies: + '@opentelemetry/api': ^1.3.0 + dependencies: + '@opentelemetry/api': 1.9.0 + '@opentelemetry/api-logs': 0.52.0 + '@types/shimmer': 1.0.5 + import-in-the-middle: 1.8.0 + require-in-the-middle: 7.3.0 + semver: 7.6.2 + shimmer: 1.2.1 + transitivePeerDependencies: + - supports-color + dev: false + /@opentelemetry/redis-common@0.36.2: resolution: {integrity: sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==} engines: {node: '>=14'} dev: false - /@opentelemetry/resources@1.24.1(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-cyv0MwAaPF7O86x5hk3NNgenMObeejZFLJJDVuSeSMIsknlsj3oOZzRv3qSzlwYomXsICfBeFFlxwHQte5mGXQ==} + /@opentelemetry/resources@1.25.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-iHjydPMYJ+Li1auveJCq2rp5U2h6Mhq8BidiyE0jfVlDTFyR1ny8AfJHfmFzJ/RAM8vT8L7T21kcmGybxZC7lQ==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.9.0' + '@opentelemetry/api': '>=1.0.0 <1.10.0' dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.24.1 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.0 dev: false - /@opentelemetry/sdk-metrics@1.24.1(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-FrAqCbbGao9iKI+Mgh+OsC9+U2YMoXnlDHe06yH7dvavCKzE3S892dGtX54+WhSFVxHR/TMRVJiK/CV93GR0TQ==} + /@opentelemetry/sdk-metrics@1.25.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-IF+Sv4VHgBr/BPMKabl+GouJIhEqAOexCHgXVTISdz3q9P9H/uA8ScCF+22gitQ69aFtESbdYOV+Fen5+avQng==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.9.0' + '@opentelemetry/api': '>=1.3.0 <1.10.0' dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.25.0(@opentelemetry/api@1.9.0) lodash.merge: 4.6.2 dev: false - /@opentelemetry/sdk-trace-base@1.24.1(@opentelemetry/api@1.8.0): - resolution: {integrity: sha512-zz+N423IcySgjihl2NfjBf0qw1RWe11XIAWVrTNOSSI6dtSPJiVom2zipFB2AEEtJWpv0Iz6DY6+TjnyTV5pWg==} + /@opentelemetry/sdk-trace-base@1.25.0(@opentelemetry/api@1.9.0): + resolution: {integrity: sha512-6+g2fiRQUG39guCsKVeY8ToeuUf3YUnPkN6DXRA1qDmFLprlLvZm9cS6+chgbW70cZJ406FTtSCDnJwxDC5sGQ==} engines: {node: '>=14'} peerDependencies: - '@opentelemetry/api': '>=1.0.0 <1.9.0' + '@opentelemetry/api': '>=1.0.0 <1.10.0' dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.24.1 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.25.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.0 dev: false - /@opentelemetry/semantic-conventions@1.24.1: - resolution: {integrity: sha512-VkliWlS4/+GHLLW7J/rVBA00uXus1SWvwFvcUDxDwmFxYfg/2VI6ekwdXS28cjI8Qz2ky2BzG8OUHo+WeYIWqw==} + /@opentelemetry/semantic-conventions@1.25.0: + resolution: {integrity: sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ==} engines: {node: '>=14'} dev: false - /@opentelemetry/sql-common@0.40.1(@opentelemetry/api@1.8.0): + /@opentelemetry/sql-common@0.40.1(@opentelemetry/api@1.9.0): resolution: {integrity: sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==} engines: {node: '>=14'} peerDependencies: '@opentelemetry/api': ^1.1.0 dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0) dev: false /@otplib/core@12.0.1: @@ -2618,12 +2614,12 @@ packages: resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} dev: false - /@prisma/instrumentation@5.14.0: - resolution: {integrity: sha512-DeybWvIZzu/mUsOYP9MVd6AyBj+MP7xIMrcuIn25MX8FiQX39QBnET5KhszTAip/ToctUuDwSJ46QkIoyo3RFA==} + /@prisma/instrumentation@5.15.0: + resolution: {integrity: sha512-fCWOOOajTKOUEp43gRmBqwt6oN9bPJcLiloi2OG/2ED0N5z62Cuza6FDrlm3SJHQAXYlXqLE0HLdEE5WcUkOzg==} dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/sdk-trace-base': 1.24.1(@opentelemetry/api@1.8.0) + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.25.0(@opentelemetry/api@1.9.0) transitivePeerDependencies: - supports-color dev: false @@ -3520,7 +3516,7 @@ packages: engines: {node: '>10.17.0'} hasBin: true dependencies: - pg: 8.11.5 + pg: 8.12.0 sql-template-strings: 2.2.2 transitivePeerDependencies: - pg-native @@ -3530,124 +3526,82 @@ packages: resolution: {integrity: sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==} dev: true - /@sentry-internal/browser-utils@8.7.0: - resolution: {integrity: sha512-RFBK1sYBwV5qGMEwWF0rjOTqQpp4/SvE+qHkOJNRUTVYmfjM+Y9lcxwn4B6lu3aboxePpBw/i1PlP6XwX4UnGA==} + /@sentry-internal/browser-utils@8.8.0: + resolution: {integrity: sha512-yE4khknnGpAxy3TeAD9TU1eUqa0GUJ2xluIAsHKkL+RXg3AgEssMO3DBDUbpHp+QANIjzKmZIXtbdTV+1P26aQ==} engines: {node: '>=14.18'} dependencies: - '@sentry/core': 8.7.0 - '@sentry/types': 8.7.0 - '@sentry/utils': 8.7.0 + '@sentry/core': 8.8.0 + '@sentry/types': 8.8.0 + '@sentry/utils': 8.8.0 dev: false - /@sentry-internal/feedback@8.7.0: - resolution: {integrity: sha512-qcGtWCtRB4eP7NVQoxW936oPkU4qu9otMLYELPGmOJPnuAG0lujlJXW7BucaM7ADyJgJTE75hG849bHecfnbmQ==} + /@sentry-internal/feedback@8.8.0: + resolution: {integrity: sha512-mybzWx99DuCJxYCVPx12NHVSVbSDF1goEo+rhDGYY8kqyn+snoVBLQtsSdDXYwZyssS1G7Gh6WhX+JVDKcQO9A==} engines: {node: '>=14.18'} dependencies: - '@sentry/core': 8.7.0 - '@sentry/types': 8.7.0 - '@sentry/utils': 8.7.0 + '@sentry/core': 8.8.0 + '@sentry/types': 8.8.0 + '@sentry/utils': 8.8.0 dev: false - /@sentry-internal/replay-canvas@8.7.0: - resolution: {integrity: sha512-FOnvBPbq6MJVHPduc0hcsdE3PeeovQ2z5WJnZDGhvp/Obehxqe+XgX7K/595vRIknv4EokRn/3Kw0mFwG8E+ZQ==} + /@sentry-internal/replay-canvas@8.8.0: + resolution: {integrity: sha512-LUoPi38Y8VRnxorIMmKLpfpf+jguhOsovMsZ3ZLc+FvMER62IIvSt4GKK4ARmUBX7+v3r61fdUWqxFs1j3uUTg==} engines: {node: '>=14.18'} dependencies: - '@sentry-internal/replay': 8.7.0 - '@sentry/core': 8.7.0 - '@sentry/types': 8.7.0 - '@sentry/utils': 8.7.0 + '@sentry-internal/replay': 8.8.0 + '@sentry/core': 8.8.0 + '@sentry/types': 8.8.0 + '@sentry/utils': 8.8.0 dev: false - /@sentry-internal/replay@8.7.0: - resolution: {integrity: sha512-bQzOkWplaWTe3u+aDBhxWY3Qy0aT7ss2A3VR8iC6N8ZIEP9PxqyJwTNoouhinfgmlnCguI7RDOO4f3r3e2M80Q==} + /@sentry-internal/replay@8.8.0: + resolution: {integrity: sha512-gMRWcjpiLJl03JB4rTMN2I4HOOJ6z611kdhUBYc+RRAue13A6uCSIPElgvlCMREkVmr/8eUKrCcIrpqj9PDJ4w==} engines: {node: '>=14.18'} dependencies: - '@sentry-internal/browser-utils': 8.7.0 - '@sentry/core': 8.7.0 - '@sentry/types': 8.7.0 - '@sentry/utils': 8.7.0 + '@sentry-internal/browser-utils': 8.8.0 + '@sentry/core': 8.8.0 + '@sentry/types': 8.8.0 + '@sentry/utils': 8.8.0 dev: false - /@sentry/babel-plugin-component-annotate@2.16.0: - resolution: {integrity: sha512-+uy1qPkA5MSNgJ0L9ur/vNTydfdHwHnBX2RQ+0thsvkqf90fU788YjkkXwUiBBNuqNyI69JiOW6frixAWy7oUg==} + /@sentry/babel-plugin-component-annotate@2.18.0: + resolution: {integrity: sha512-9L4RbhS3WNtc/SokIhc0dwgcvs78YSQPakZejsrIgnzLzCi8mS6PeT+BY0+QCtsXxjd1egM8hqcJeB0lukBkXA==} engines: {node: '>= 14'} - dev: false - /@sentry/babel-plugin-component-annotate@2.17.0: - resolution: {integrity: sha512-njBWwVVFEb5SuGqk1KYiIcuKU3dEPuiaDN42hY72mfuQgeMR/RUZtibAQ5yu2Ii7yok6kewLe4OvztP2oP/IVQ==} - engines: {node: '>= 14'} - dev: true - - /@sentry/browser@8.7.0: - resolution: {integrity: sha512-4EEp+PlcktsMN0p+MdCPl/lghTkq7eOtZjQG9NGhWzfyWrJ3tuL1nsDr2SSivJ1V277F01KtKYo6BFwP2NtBZA==} + /@sentry/browser@8.8.0: + resolution: {integrity: sha512-TkmbjV9pGpQ+OfUtIE8DaU467w73NqPTX/w/+241VlKpE9HbfranMG0N8Bibgt59GwoNIiC0NhmKaMTZg79elQ==} engines: {node: '>=14.18'} dependencies: - '@sentry-internal/browser-utils': 8.7.0 - '@sentry-internal/feedback': 8.7.0 - '@sentry-internal/replay': 8.7.0 - '@sentry-internal/replay-canvas': 8.7.0 - '@sentry/core': 8.7.0 - '@sentry/types': 8.7.0 - '@sentry/utils': 8.7.0 + '@sentry-internal/browser-utils': 8.8.0 + '@sentry-internal/feedback': 8.8.0 + '@sentry-internal/replay': 8.8.0 + '@sentry-internal/replay-canvas': 8.8.0 + '@sentry/core': 8.8.0 + '@sentry/types': 8.8.0 + '@sentry/utils': 8.8.0 dev: false - /@sentry/bundler-plugin-core@2.16.0: - resolution: {integrity: sha512-dhgIZsIR3L9KnE2OO5JJm6hPtStAjEPYKQsZzxRr69uVhd9xAvfXeXr0afKVNVEcIDksas6yMgHqwQ2wOXFIAg==} + /@sentry/bundler-plugin-core@2.18.0: + resolution: {integrity: sha512-JvxVgsMFmDsU0Dgcx1CeFUC1scxOVSAOzOcE06qKAVm9BZzxHpI53iNfeMOXwVTUolD8LZVIfgOjkiXfwN/UPQ==} engines: {node: '>= 14'} dependencies: - '@babel/core': 7.24.6 - '@sentry/babel-plugin-component-annotate': 2.16.0 + '@babel/core': 7.24.7 + '@sentry/babel-plugin-component-annotate': 2.18.0 '@sentry/cli': 2.32.1 dotenv: 16.4.5 find-up: 5.0.0 glob: 9.3.5 - magic-string: 0.27.0 - unplugin: 1.0.1 - transitivePeerDependencies: - - encoding - - supports-color - dev: false - - /@sentry/bundler-plugin-core@2.17.0: - resolution: {integrity: sha512-aIjCexNsB6DXtl/IngJcUxN7OalsyP5tS/4rqxj6pvqZbeg/7JMlMgy2nOOWsNhy+chX8swThS39dY8pCcEYLQ==} - engines: {node: '>= 14'} - dependencies: - '@babel/core': 7.24.6 - '@sentry/babel-plugin-component-annotate': 2.17.0 - '@sentry/cli': 2.31.2 - dotenv: 16.4.5 - find-up: 5.0.0 - glob: 9.3.5 magic-string: 0.30.8 unplugin: 1.0.1 transitivePeerDependencies: - encoding - supports-color - dev: true - - /@sentry/cli-darwin@2.31.2: - resolution: {integrity: sha512-BHA/JJXj1dlnoZQdK4efRCtHRnbBfzbIZUKAze7oRR1RfNqERI84BVUQeKateD3jWSJXQfEuclIShc61KOpbKw==} - engines: {node: '>=10'} - os: [darwin] - requiresBuild: true - dev: true - optional: true /@sentry/cli-darwin@2.32.1: resolution: {integrity: sha512-z/lEwANTYPCzbWTZ2+eeeNYxRLllC8knd0h+vtAKlhmGw/fyc/N39cznIFyFu+dLJ6tTdjOWOeikHtKuS/7onw==} engines: {node: '>=10'} os: [darwin] requiresBuild: true - dev: false - optional: true - - /@sentry/cli-linux-arm64@2.31.2: - resolution: {integrity: sha512-FLVKkJ/rWvPy/ka7OrUdRW63a/z8HYI1Gt8Pr6rWs50hb7YJja8lM8IO10tYmcFE/tODICsnHO9HTeUg2g2d1w==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux, freebsd] - requiresBuild: true - dev: true optional: true /@sentry/cli-linux-arm64@2.32.1: @@ -3656,16 +3610,6 @@ packages: cpu: [arm64] os: [linux, freebsd] requiresBuild: true - dev: false - optional: true - - /@sentry/cli-linux-arm@2.31.2: - resolution: {integrity: sha512-W8k5mGYYZz/I/OxZH65YAK7dCkQAl+wbuoASGOQjUy5VDgqH0QJ8kGJufXvFPM+f3ZQGcKAnVsZ6tFqZXETBAw==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux, freebsd] - requiresBuild: true - dev: true optional: true /@sentry/cli-linux-arm@2.32.1: @@ -3674,16 +3618,6 @@ packages: cpu: [arm] os: [linux, freebsd] requiresBuild: true - dev: false - optional: true - - /@sentry/cli-linux-i686@2.31.2: - resolution: {integrity: sha512-A64QtzaPi3MYFpZ+Fwmi0mrSyXgeLJ0cWr4jdeTGrzNpeowSteKgd6tRKU+LVq0k5shKE7wdnHk+jXnoajulMA==} - engines: {node: '>=10'} - cpu: [x86, ia32] - os: [linux, freebsd] - requiresBuild: true - dev: true optional: true /@sentry/cli-linux-i686@2.32.1: @@ -3692,16 +3626,6 @@ packages: cpu: [x86, ia32] os: [linux, freebsd] requiresBuild: true - dev: false - optional: true - - /@sentry/cli-linux-x64@2.31.2: - resolution: {integrity: sha512-YL/r+15R4mOEiU3mzn7iFQOeFEUB6KxeKGTTrtpeOGynVUGIdq4nV5rHow5JDbIzOuBS3SpOmcIMluvo1NCh0g==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux, freebsd] - requiresBuild: true - dev: true optional: true /@sentry/cli-linux-x64@2.32.1: @@ -3710,16 +3634,6 @@ packages: cpu: [x64] os: [linux, freebsd] requiresBuild: true - dev: false - optional: true - - /@sentry/cli-win32-i686@2.31.2: - resolution: {integrity: sha512-Az/2bmW+TFI059RE0mSBIxTBcoShIclz7BDebmIoCkZ+retrwAzpmBnBCDAHow+Yi43utOow+3/4idGa2OxcLw==} - engines: {node: '>=10'} - cpu: [x86, ia32] - os: [win32] - requiresBuild: true - dev: true optional: true /@sentry/cli-win32-i686@2.32.1: @@ -3728,16 +3642,6 @@ packages: cpu: [x86, ia32] os: [win32] requiresBuild: true - dev: false - optional: true - - /@sentry/cli-win32-x64@2.31.2: - resolution: {integrity: sha512-XIzyRnJu539NhpFa+JYkotzVwv3NrZ/4GfHB/JWA2zReRvsk39jJG8D5HOmm0B9JA63QQT7Dt39RW8g3lkmb6w==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true optional: true /@sentry/cli-win32-x64@2.32.1: @@ -3746,33 +3650,8 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: false optional: true - /@sentry/cli@2.31.2: - resolution: {integrity: sha512-2aKyUx6La2P+pplL8+2vO67qJ+c1C79KYWAyQBE0JIT5kvKK9JpwtdNoK1F0/2mRpwhhYPADCz3sVIRqmL8cQQ==} - engines: {node: '>= 10'} - hasBin: true - requiresBuild: true - dependencies: - https-proxy-agent: 5.0.1 - node-fetch: 2.7.0 - progress: 2.0.3 - proxy-from-env: 1.1.0 - which: 2.0.2 - optionalDependencies: - '@sentry/cli-darwin': 2.31.2 - '@sentry/cli-linux-arm': 2.31.2 - '@sentry/cli-linux-arm64': 2.31.2 - '@sentry/cli-linux-i686': 2.31.2 - '@sentry/cli-linux-x64': 2.31.2 - '@sentry/cli-win32-i686': 2.31.2 - '@sentry/cli-win32-x64': 2.31.2 - transitivePeerDependencies: - - encoding - - supports-color - dev: true - /@sentry/cli@2.32.1: resolution: {integrity: sha512-MWkbkzZfnlE7s2pPbg4VozRSAeMlIObfZlTIou9ye6XnPt6ZmmxCLOuOgSKMv4sXg6aeqKNzMNiadThxCWyvPg==} engines: {node: '>= 10'} @@ -3795,7 +3674,6 @@ packages: transitivePeerDependencies: - encoding - supports-color - dev: false /@sentry/core@7.114.0: resolution: {integrity: sha512-YnanVlmulkjgZiVZ9BfY9k6I082n+C+LbZo52MTvx3FY6RE5iyiPMpaOh67oXEZRWcYQEGm+bKruRxLVP6RlbA==} @@ -3805,19 +3683,19 @@ packages: '@sentry/utils': 7.114.0 dev: false - /@sentry/core@8.7.0: - resolution: {integrity: sha512-Sq/46B+5nWmgnCD6dEMZ6HTkKbV/KAdgaSvT8oXDb9OWoPy1jJ/gbLrhLs62KbjuDQk4/vWnOgHiKQbcslSzMw==} + /@sentry/core@8.8.0: + resolution: {integrity: sha512-SnQ42rOuUO03WvhS+2aogKhEzCW9cxpnpPzs2obxnS04KoAz7VL3oYyIwiACrRTlKpwdb9y6vuO89fDvgqPQbA==} engines: {node: '>=14.18'} dependencies: - '@sentry/types': 8.7.0 - '@sentry/utils': 8.7.0 + '@sentry/types': 8.8.0 + '@sentry/utils': 8.8.0 dev: false - /@sentry/esbuild-plugin@2.17.0: - resolution: {integrity: sha512-lyuiwo21wovStBMNM2CLihSN7l6N60N/p+7pJWrJ3N/mH0vLMTlngZXHxXbPIh73XPSjm10ZpkdQkScwObsvbQ==} + /@sentry/esbuild-plugin@2.18.0: + resolution: {integrity: sha512-F34+xPQTwFYnlBCd83wuFGT8O/PrwgGclh9XEeDLrqljlCUc9jCkbFIIFaV9mJo2xoSjfJey2RWghoaycWM6Lg==} engines: {node: '>= 14'} dependencies: - '@sentry/bundler-plugin-core': 2.17.0 + '@sentry/bundler-plugin-core': 2.18.0 unplugin: 1.0.1 uuid: 9.0.1 transitivePeerDependencies: @@ -3835,8 +3713,8 @@ packages: localforage: 1.10.0 dev: false - /@sentry/nextjs@8.7.0(@opentelemetry/api@1.8.0)(@opentelemetry/core@1.24.1)(@opentelemetry/instrumentation@0.51.1)(@opentelemetry/sdk-trace-base@1.24.1)(@opentelemetry/semantic-conventions@1.24.1)(next@14.2.3)(react@18.3.1)(webpack@5.91.0): - resolution: {integrity: sha512-aD+iDPUy5eC1XqPiFfRU09mlK3iCwxSGMg3y/z3GXrUlR9DLI7lMz90l6qaDGFFnjsCT75JrG37dYWVqILAx3g==} + /@sentry/nextjs@8.8.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.0)(@opentelemetry/instrumentation@0.52.0)(@opentelemetry/sdk-trace-base@1.25.0)(@opentelemetry/semantic-conventions@1.25.0)(next@14.2.3)(react@18.3.1)(webpack@5.91.0): + resolution: {integrity: sha512-B8bim9QYS6M5tNwhJNo9O02yWOFgIOp1wTma09RocvauHQ23tlaNmsmceMtzym9wFeNPbnuNYy+PkZrJ4epFTw==} engines: {node: '>=14.18'} peerDependencies: next: ^13.2.0 || ^14.0 @@ -3846,18 +3724,18 @@ packages: webpack: optional: true dependencies: - '@opentelemetry/instrumentation-http': 0.51.1(@opentelemetry/api@1.8.0) + '@opentelemetry/instrumentation-http': 0.52.0(@opentelemetry/api@1.9.0) '@rollup/plugin-commonjs': 24.0.0(rollup@3.29.4) - '@sentry/core': 8.7.0 - '@sentry/node': 8.7.0 - '@sentry/opentelemetry': 8.7.0(@opentelemetry/api@1.8.0)(@opentelemetry/core@1.24.1)(@opentelemetry/instrumentation@0.51.1)(@opentelemetry/sdk-trace-base@1.24.1)(@opentelemetry/semantic-conventions@1.24.1) - '@sentry/react': 8.7.0(react@18.3.1) - '@sentry/types': 8.7.0 - '@sentry/utils': 8.7.0 - '@sentry/vercel-edge': 8.7.0 - '@sentry/webpack-plugin': 2.16.0(webpack@5.91.0) + '@sentry/core': 8.8.0 + '@sentry/node': 8.8.0 + '@sentry/opentelemetry': 8.8.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.0)(@opentelemetry/instrumentation@0.52.0)(@opentelemetry/sdk-trace-base@1.25.0)(@opentelemetry/semantic-conventions@1.25.0) + '@sentry/react': 8.8.0(react@18.3.1) + '@sentry/types': 8.8.0 + '@sentry/utils': 8.8.0 + '@sentry/vercel-edge': 8.8.0 + '@sentry/webpack-plugin': 2.18.0(webpack@5.91.0) chalk: 3.0.0 - next: 14.2.3(@babel/core@7.24.6)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(react-dom@18.3.1)(react@18.3.1)(sass@1.77.4) + next: 14.2.3(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.44.1)(react-dom@18.3.1)(react@18.3.1)(sass@1.77.4) react: 18.3.1 resolve: 1.22.8 rollup: 3.29.4 @@ -3873,72 +3751,72 @@ packages: - supports-color dev: false - /@sentry/node@8.7.0: - resolution: {integrity: sha512-El1LmXGVe8Ahi5oUdlrE5s3Or23/iGnnntNvaYymXk4BmL4dJtv7ttlQ94ZrI9QWs8VnfM7eHqCd+OPjTh0XJQ==} + /@sentry/node@8.8.0: + resolution: {integrity: sha512-o8lQruMN/6nncquoML0Fjj7icx1GVCvghrXtWeJA0HPcX6ehFoZCi9Oxv4mXViF9ho0CnNrMcBhipOqbDb0Ibw==} engines: {node: '>=14.18'} dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/context-async-hooks': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation-connect': 0.36.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation-express': 0.39.0(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation-fastify': 0.36.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation-graphql': 0.40.0(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation-hapi': 0.38.0(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation-http': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation-ioredis': 0.40.0(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation-koa': 0.40.0(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation-mongodb': 0.43.0(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation-mongoose': 0.38.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation-mysql': 0.38.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation-mysql2': 0.38.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation-nestjs-core': 0.37.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation-pg': 0.41.0(@opentelemetry/api@1.8.0) - '@opentelemetry/resources': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/sdk-trace-base': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.24.1 - '@prisma/instrumentation': 5.14.0 - '@sentry/core': 8.7.0 - '@sentry/opentelemetry': 8.7.0(@opentelemetry/api@1.8.0)(@opentelemetry/core@1.24.1)(@opentelemetry/instrumentation@0.51.1)(@opentelemetry/sdk-trace-base@1.24.1)(@opentelemetry/semantic-conventions@1.24.1) - '@sentry/types': 8.7.0 - '@sentry/utils': 8.7.0 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/context-async-hooks': 1.25.0(@opentelemetry/api@1.9.0) + '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-connect': 0.37.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-express': 0.40.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-fastify': 0.37.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-graphql': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-hapi': 0.39.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-http': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-ioredis': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-koa': 0.41.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongodb': 0.44.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mongoose': 0.39.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql': 0.39.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-mysql2': 0.39.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-nestjs-core': 0.38.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation-pg': 0.42.0(@opentelemetry/api@1.9.0) + '@opentelemetry/resources': 1.25.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.25.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.0 + '@prisma/instrumentation': 5.15.0 + '@sentry/core': 8.8.0 + '@sentry/opentelemetry': 8.8.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.0)(@opentelemetry/instrumentation@0.52.0)(@opentelemetry/sdk-trace-base@1.25.0)(@opentelemetry/semantic-conventions@1.25.0) + '@sentry/types': 8.8.0 + '@sentry/utils': 8.8.0 optionalDependencies: opentelemetry-instrumentation-fetch-node: 1.2.0 transitivePeerDependencies: - supports-color dev: false - /@sentry/opentelemetry@8.7.0(@opentelemetry/api@1.8.0)(@opentelemetry/core@1.24.1)(@opentelemetry/instrumentation@0.51.1)(@opentelemetry/sdk-trace-base@1.24.1)(@opentelemetry/semantic-conventions@1.24.1): - resolution: {integrity: sha512-I9JEXnqXDBPr5MtgEYRvmcolmpugSgH1QV+SFnfOPc40Mu/npNsJq7oqbGzhlCe4H45XD6LJzFlc7BfoCzwAsQ==} + /@sentry/opentelemetry@8.8.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.25.0)(@opentelemetry/instrumentation@0.52.0)(@opentelemetry/sdk-trace-base@1.25.0)(@opentelemetry/semantic-conventions@1.25.0): + resolution: {integrity: sha512-azxWHx+y3O9LHwyCCWWHX7tfBVBRT+HUTjhCRt/IPB+4h5TpRYE7okgrAhA3mdpvI9RoUBeYV6nboRH3LhR5+w==} engines: {node: '>=14.18'} peerDependencies: - '@opentelemetry/api': ^1.8.0 - '@opentelemetry/core': ^1.24.1 - '@opentelemetry/instrumentation': ^0.51.1 - '@opentelemetry/sdk-trace-base': ^1.23.0 - '@opentelemetry/semantic-conventions': ^1.23.0 + '@opentelemetry/api': ^1.9.0 + '@opentelemetry/core': ^1.25.0 + '@opentelemetry/instrumentation': ^0.52.0 + '@opentelemetry/sdk-trace-base': ^1.25.0 + '@opentelemetry/semantic-conventions': ^1.25.0 dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/core': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/instrumentation': 0.51.1(@opentelemetry/api@1.8.0) - '@opentelemetry/sdk-trace-base': 1.24.1(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.24.1 - '@sentry/core': 8.7.0 - '@sentry/types': 8.7.0 - '@sentry/utils': 8.7.0 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/core': 1.25.0(@opentelemetry/api@1.9.0) + '@opentelemetry/instrumentation': 0.52.0(@opentelemetry/api@1.9.0) + '@opentelemetry/sdk-trace-base': 1.25.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.0 + '@sentry/core': 8.8.0 + '@sentry/types': 8.8.0 + '@sentry/utils': 8.8.0 dev: false - /@sentry/react@8.7.0(react@18.3.1): - resolution: {integrity: sha512-JFo8QW8JB4eaFC8RdkOBO96JvlGgstywmyMZ39qWfFbD735vGl8PnOa0AnrC/5Auc86dZ98/I4OEPboqUE9q1w==} + /@sentry/react@8.8.0(react@18.3.1): + resolution: {integrity: sha512-7BZyYQFJCRpWz5dn5SZxrhMU8hHH7eBC7BqNMhtsbctP/ObK6BEt3YJUDjTslkXZMOCXfN9ZdBgYEAGc7EPhFQ==} engines: {node: '>=14.18'} peerDependencies: react: ^16.14.0 || 17.x || 18.x || 19.x dependencies: - '@sentry/browser': 8.7.0 - '@sentry/core': 8.7.0 - '@sentry/types': 8.7.0 - '@sentry/utils': 8.7.0 + '@sentry/browser': 8.8.0 + '@sentry/core': 8.8.0 + '@sentry/types': 8.8.0 + '@sentry/utils': 8.8.0 hoist-non-react-statics: 3.3.2 react: 18.3.1 dev: false @@ -3948,8 +3826,8 @@ packages: engines: {node: '>=8'} dev: false - /@sentry/types@8.7.0: - resolution: {integrity: sha512-11KLOKumP6akugVGLvSoEig+JlP0ZEzW3nN9P+ppgdIx9HAxMIh6UvumbieG4/DWjAh2kh6NPNfUw3gk2Gfq1A==} + /@sentry/types@8.8.0: + resolution: {integrity: sha512-2EOkyHoSOJyCRCsK/O6iA3wyELkRApfY7jNxsC/Amgb5ftuGl/rGO6B4dNKjMJNLNvlkEqZIANoUKOcClBH6yw==} engines: {node: '>=14.18'} /@sentry/utils@7.114.0: @@ -3959,29 +3837,29 @@ packages: '@sentry/types': 7.114.0 dev: false - /@sentry/utils@8.7.0: - resolution: {integrity: sha512-aWmcbSoOmrbzll/FkNQFJcCtLAuJLvTYbRKiCSkV3FScA7UaA742HkTZAPFiioALFIESWk/fcGZqtN0s4I281Q==} + /@sentry/utils@8.8.0: + resolution: {integrity: sha512-agLqo9KlXacj7NOcdYZUYqTKlFcPXdTzCnC2u9J1LxDjru9cogbiw6yyDtxBg3kpgYZubfOPz/7F2z9wCjK1cw==} engines: {node: '>=14.18'} dependencies: - '@sentry/types': 8.7.0 + '@sentry/types': 8.8.0 dev: false - /@sentry/vercel-edge@8.7.0: - resolution: {integrity: sha512-Ggx/en7Agzi4PHsgT91nbEXuv1LIHT2BVSY2ggkD6Uy0xBkwRy2zfSlMaK98BEmVf+pPEGZTEuoYFuBtUsShHw==} + /@sentry/vercel-edge@8.8.0: + resolution: {integrity: sha512-4cnpgrDIDRdjw8Pq0Q9jxWNNkF8CecNbU4w3sJ+X0zbphGoPGa7TdgU1LKHZJPMJYFNRIz2pVOGBNWnPuBzLZg==} engines: {node: '>=14.18'} dependencies: - '@sentry/core': 8.7.0 - '@sentry/types': 8.7.0 - '@sentry/utils': 8.7.0 + '@sentry/core': 8.8.0 + '@sentry/types': 8.8.0 + '@sentry/utils': 8.8.0 dev: false - /@sentry/webpack-plugin@2.16.0(webpack@5.91.0): - resolution: {integrity: sha512-BeKLmtK4OD9V3j92fm/lm6yp+++s2U5Uf17HwNFGt39PEOq+wUDISsx0dhXA5Qls2Bg3WhguDK71blCaVefMeg==} + /@sentry/webpack-plugin@2.18.0(webpack@5.91.0): + resolution: {integrity: sha512-iQ5OCvuoaIanbq4GRqj4Azay86mVpa64pP9Oi3EJpaURGZNLqwE7bWq9tkr1Dr7zBPBZN7QBmLD3OOeOSzbHuA==} engines: {node: '>= 14'} peerDependencies: webpack: '>=4.40.0' dependencies: - '@sentry/bundler-plugin-core': 2.16.0 + '@sentry/bundler-plugin-core': 2.18.0 unplugin: 1.0.1 uuid: 9.0.1 webpack: 5.91.0 @@ -4027,7 +3905,7 @@ packages: resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} dependencies: '@swc/counter': 0.1.3 - tslib: 2.6.2 + tslib: 2.6.3 /@tabler/core@1.0.0-beta20: resolution: {integrity: sha512-OzKpur+Ug7e+HMbNJrMcSuWZGUsJTvu7HYboBNRE8qyo1RKIWqvwL5YewKBJ+odW5pDOqBPzbsS4je3EBQQxHw==} @@ -4149,22 +4027,26 @@ packages: chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 - jest: 29.7.0(@types/node@20.13.0) + jest: 29.7.0(@types/node@20.14.2) lodash: 4.17.21 redent: 3.0.0 - vitest: 1.6.0(@types/node@20.13.0)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.4) + vitest: 1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.4) dev: true - /@testing-library/react@15.0.7(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): - resolution: {integrity: sha512-cg0RvEdD1TIhhkm1IeYMQxrzy0MtUNfa3minv4MjbgcYzJAZ7yD0i0lwoPOTPr+INtiXFezt2o8xMSnyHhEn2Q==} + /@testing-library/react@16.0.0(@testing-library/dom@10.1.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-guuxUKRWQ+FgNX0h0NS0FIq3Q3uLtWVpBzcLOggmfMoUpgBnzBzvLLd4fbm6yS8ydJd94cIfY4yP9qUQjM2KwQ==} engines: {node: '>=18'} peerDependencies: + '@testing-library/dom': ^10.0.0 '@types/react': ^18.0.0 + '@types/react-dom': ^18.0.0 react: ^18.0.0 react-dom: ^18.0.0 peerDependenciesMeta: '@types/react': optional: true + '@types/react-dom': + optional: true dependencies: '@babel/runtime': 7.24.5 '@testing-library/dom': 10.1.0 @@ -4194,7 +4076,7 @@ packages: /@types/accepts@1.3.7: resolution: {integrity: sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==} dependencies: - '@types/node': 20.13.0 + '@types/node': 20.14.2 dev: false /@types/aria-query@5.0.4: @@ -4204,8 +4086,8 @@ packages: /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: - '@babel/parser': 7.24.6 - '@babel/types': 7.24.6 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.6 @@ -4214,39 +4096,39 @@ packages: /@types/babel__generator@7.6.8: resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} dependencies: - '@babel/types': 7.24.6 + '@babel/types': 7.24.7 dev: true /@types/babel__template@7.4.4: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/parser': 7.24.6 - '@babel/types': 7.24.6 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 dev: true /@types/babel__traverse@7.20.6: resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} dependencies: - '@babel/types': 7.24.6 + '@babel/types': 7.24.7 dev: true /@types/body-parser@1.19.5: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 20.13.0 + '@types/node': 20.14.2 dev: false /@types/connect@3.4.36: resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} dependencies: - '@types/node': 20.13.0 + '@types/node': 20.14.2 dev: false /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.13.0 + '@types/node': 20.14.2 dev: false /@types/content-disposition@0.5.8: @@ -4267,13 +4149,13 @@ packages: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 20.13.0 + '@types/node': 20.14.2 dev: false /@types/cors@2.8.17: resolution: {integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==} dependencies: - '@types/node': 20.13.0 + '@types/node': 20.14.2 dev: false /@types/debug@4.1.12: @@ -4307,7 +4189,7 @@ packages: /@types/express-serve-static-core@4.19.2: resolution: {integrity: sha512-dPSEQElyVJ97BuGduAqQjpBocZWAs0GR94z+ptL7JXQJeJdHw2WBG3EWdFrK36b8Q6j8P4cXOMhgUoi0IIfIsg==} dependencies: - '@types/node': 20.13.0 + '@types/node': 20.14.2 '@types/qs': 6.9.15 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -4326,13 +4208,13 @@ packages: resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==} dependencies: '@types/jsonfile': 6.1.4 - '@types/node': 20.13.0 + '@types/node': 20.14.2 dev: true /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 20.13.0 + '@types/node': 20.14.2 dev: true /@types/hast@3.0.4: @@ -4375,13 +4257,13 @@ packages: /@types/jsonfile@6.1.4: resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==} dependencies: - '@types/node': 20.13.0 + '@types/node': 20.14.2 dev: true /@types/jsonwebtoken@9.0.6: resolution: {integrity: sha512-/5hndP5dCjloafCXns6SZyESp3Ldq7YjH3zwzwczYnjxIT0Fqzk5ROSYVGfFyczIue7IUEj8hkvLbPoLQ18vQw==} dependencies: - '@types/node': 20.13.0 + '@types/node': 20.14.2 dev: true /@types/keygrip@1.0.6: @@ -4404,7 +4286,7 @@ packages: '@types/http-errors': 2.0.4 '@types/keygrip': 1.0.6 '@types/koa-compose': 3.2.8 - '@types/node': 20.13.0 + '@types/node': 20.14.2 dev: false /@types/koa__router@12.0.3: @@ -4446,17 +4328,17 @@ packages: /@types/mute-stream@0.0.4: resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} dependencies: - '@types/node': 20.13.0 + '@types/node': 20.14.2 dev: true /@types/mysql@2.15.22: resolution: {integrity: sha512-wK1pzsJVVAjYCSZWQoWHziQZbNggXFDUEIGf54g4ZM/ERuP86uGdWeKZWMYlqTPMZfHJJvLPyogXGvCOg87yLQ==} dependencies: - '@types/node': 20.13.0 + '@types/node': 20.14.2 dev: false - /@types/node@20.13.0: - resolution: {integrity: sha512-FM6AOb3khNkNIXPnHFDYaHerSv8uN22C91z098AnGccVu+Pcdhi+pNUFDi0iLmPIsVE0JBD0KVS7mzUYt4nRzQ==} + /@types/node@20.14.2: + resolution: {integrity: sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==} dependencies: undici-types: 5.26.5 @@ -4469,14 +4351,14 @@ packages: /@types/pg@8.11.6: resolution: {integrity: sha512-/2WmmBXHLsfRqzfHW7BNZ8SbYzE8OSk7i3WjFYvfgRHj7S1xj+16Je5fUKv3lVdVzk/zn9TXOqf+avFCFIE0yQ==} dependencies: - '@types/node': 20.13.0 + '@types/node': 20.14.2 pg-protocol: 1.6.1 pg-types: 4.0.2 /@types/pg@8.6.1: resolution: {integrity: sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==} dependencies: - '@types/node': 20.13.0 + '@types/node': 20.14.2 pg-protocol: 1.6.1 pg-types: 2.2.0 dev: false @@ -4511,14 +4393,14 @@ packages: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 20.13.0 + '@types/node': 20.14.2 dev: false /@types/serve-static@1.15.7: resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} dependencies: '@types/http-errors': 2.0.4 - '@types/node': 20.13.0 + '@types/node': 20.14.2 '@types/send': 0.17.4 dev: false @@ -4557,7 +4439,7 @@ packages: /@types/web-push@3.6.3: resolution: {integrity: sha512-v3oT4mMJsHeJ/rraliZ+7TbZtr5bQQuxcgD7C3/1q/zkAj29c8RE0F9lVZVu3hiQe5Z9fYcBreV7TLnfKR+4mg==} dependencies: - '@types/node': 20.13.0 + '@types/node': 20.14.2 dev: true /@types/wrap-ansi@3.0.0: @@ -4574,8 +4456,8 @@ packages: '@types/yargs-parser': 21.0.3 dev: true - /@typescript-eslint/eslint-plugin@7.11.0(@typescript-eslint/parser@7.11.0)(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-P+qEahbgeHW4JQ/87FuItjBj8O3MYv5gELDzr8QaQ7fsll1gSMTYb6j87MYyxwf3DtD7uGFB9ShwgmCJB5KmaQ==} + /@typescript-eslint/eslint-plugin@7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-7F91fcbuDf/d3S8o21+r3ZncGIke/+eWk0EpO21LXhDfLahriZF9CGj4fbAetEjlaBdjdSm9a6VeXbpbT6Z40Q==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -4585,12 +4467,12 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.11.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.11.0 - '@typescript-eslint/type-utils': 7.11.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.11.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.11.0 + '@eslint-community/regexpp': 4.10.1 + '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.12.0 + '@typescript-eslint/type-utils': 7.12.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.12.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.12.0 eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.1 @@ -4601,29 +4483,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} - engines: {node: ^16.0.0 || >=18.0.0} - peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4(supports-color@5.5.0) - eslint: 8.57.0 - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/parser@7.11.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-yimw99teuaXVWsBcPO1Ais02kwJ1jmNA1KxE7ng0aT7ndr1pT1wqj0OJnsYVGKKlc4QJai86l/025L6z8CljOg==} + /@typescript-eslint/parser@7.12.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -4632,11 +4493,32 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.11.0 - '@typescript-eslint/types': 7.11.0 - '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.11.0 - debug: 4.3.4(supports-color@5.5.0) + '@typescript-eslint/scope-manager': 7.12.0 + '@typescript-eslint/types': 7.12.0 + '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.12.0 + debug: 4.3.5(supports-color@5.5.0) + eslint: 8.57.0 + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 7.2.0 + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.2.0 + debug: 4.3.5(supports-color@5.5.0) eslint: 8.57.0 typescript: 5.4.5 transitivePeerDependencies: @@ -4651,32 +4533,24 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@6.21.0: - resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} + /@typescript-eslint/scope-manager@7.12.0: + resolution: {integrity: sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.12.0 + '@typescript-eslint/visitor-keys': 7.12.0 + dev: true + + /@typescript-eslint/scope-manager@7.2.0: + resolution: {integrity: sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/visitor-keys': 7.2.0 dev: true - /@typescript-eslint/scope-manager@7.11.0: - resolution: {integrity: sha512-27tGdVEiutD4POirLZX4YzT180vevUURJl4wJGmm6TrQoiYwuxTIY98PBp6L2oN+JQxzE0URvYlzJaBHIekXAw==} - engines: {node: ^18.18.0 || >=20.0.0} - dependencies: - '@typescript-eslint/types': 7.11.0 - '@typescript-eslint/visitor-keys': 7.11.0 - dev: true - - /@typescript-eslint/scope-manager@7.9.0: - resolution: {integrity: sha512-ZwPK4DeCDxr3GJltRz5iZejPFAAr4Wk3+2WIBaj1L5PYK5RgxExu/Y68FFVclN0y6GGwH8q+KgKRCvaTmFBbgQ==} - engines: {node: ^18.18.0 || >=20.0.0} - dependencies: - '@typescript-eslint/types': 7.9.0 - '@typescript-eslint/visitor-keys': 7.9.0 - dev: true - - /@typescript-eslint/type-utils@7.11.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-WmppUEgYy+y1NTseNMJ6mCFxt03/7jTOy08bcg7bxJJdsM4nuhnchyBbE8vryveaJUf62noH7LodPSo5Z0WUCg==} + /@typescript-eslint/type-utils@7.12.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-lib96tyRtMhLxwauDWUp/uW3FMhLA6D0rJ8T7HmH7x23Gk1Gwwu8UZ94NMXBvOELn6flSPiBrCKlehkiXyaqwA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -4685,9 +4559,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.11.0(eslint@8.57.0)(typescript@5.4.5) - debug: 4.3.4(supports-color@5.5.0) + '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.12.0(eslint@8.57.0)(typescript@5.4.5) + debug: 4.3.5(supports-color@5.5.0) eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.4.5) typescript: 5.4.5 @@ -4700,21 +4574,16 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@6.21.0: - resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} + /@typescript-eslint/types@7.12.0: + resolution: {integrity: sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg==} + engines: {node: ^18.18.0 || >=20.0.0} + dev: true + + /@typescript-eslint/types@7.2.0: + resolution: {integrity: sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/types@7.11.0: - resolution: {integrity: sha512-MPEsDRZTyCiXkD4vd3zywDCifi7tatc4K37KqTprCvaXptP7Xlpdw0NR2hRJTetG5TxbWDB79Ys4kLmHliEo/w==} - engines: {node: ^18.18.0 || >=20.0.0} - dev: true - - /@typescript-eslint/types@7.9.0: - resolution: {integrity: sha512-oZQD9HEWQanl9UfsbGVcZ2cGaR0YT5476xfWE0oE5kQa2sNK2frxOlkeacLOTh9po4AlUT5rtkGyYM5kew0z5w==} - engines: {node: ^18.18.0 || >=20.0.0} - dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.5): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4726,7 +4595,7 @@ packages: dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.2 @@ -4736,8 +4605,30 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.21.0(typescript@5.4.5): - resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} + /@typescript-eslint/typescript-estree@7.12.0(typescript@5.4.5): + resolution: {integrity: sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 7.12.0 + '@typescript-eslint/visitor-keys': 7.12.0 + debug: 4.3.5(supports-color@5.5.0) + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.4 + semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@7.2.0(typescript@5.4.5): + resolution: {integrity: sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -4745,9 +4636,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4(supports-color@5.5.0) + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/visitor-keys': 7.2.0 + debug: 4.3.5(supports-color@5.5.0) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 @@ -4758,50 +4649,6 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@7.11.0(typescript@5.4.5): - resolution: {integrity: sha512-cxkhZ2C/iyi3/6U9EPc5y+a6csqHItndvN/CzbNXTNrsC3/ASoYQZEt9uMaEp+xFNjasqQyszp5TumAVKKvJeQ==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 7.11.0 - '@typescript-eslint/visitor-keys': 7.11.0 - debug: 4.3.4(supports-color@5.5.0) - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.4.5) - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - dev: true - - /@typescript-eslint/typescript-estree@7.9.0(typescript@5.4.5): - resolution: {integrity: sha512-zBCMCkrb2YjpKV3LA0ZJubtKCDxLttxfdGmwZvTqqWevUPN0FZvSI26FalGFFUZU/9YQK/A4xcQF9o/VVaCKAg==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@typescript-eslint/types': 7.9.0 - '@typescript-eslint/visitor-keys': 7.9.0 - debug: 4.3.4(supports-color@5.5.0) - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.4.5) - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.4.5): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4822,32 +4669,16 @@ packages: - typescript dev: true - /@typescript-eslint/utils@7.11.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-xlAWwPleNRHwF37AhrZurOxA1wyXowW4PqVXZVUNCLjB48CqdPJoJWkrpH2nij9Q3Lb7rtWindtoXwxjxlKKCA==} + /@typescript-eslint/utils@7.12.0(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 7.11.0 - '@typescript-eslint/types': 7.11.0 - '@typescript-eslint/typescript-estree': 7.11.0(typescript@5.4.5) - eslint: 8.57.0 - transitivePeerDependencies: - - supports-color - - typescript - dev: true - - /@typescript-eslint/utils@7.9.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-5KVRQCzZajmT4Ep+NEgjXCvjuypVvYHUW7RHlXzNPuak2oWpVoD1jf5xCP0dPAuNIchjC7uQyvbdaSTFaLqSdA==} - engines: {node: ^18.18.0 || >=20.0.0} - peerDependencies: - eslint: ^8.56.0 - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 7.9.0 - '@typescript-eslint/types': 7.9.0 - '@typescript-eslint/typescript-estree': 7.9.0(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.12.0 + '@typescript-eslint/types': 7.12.0 + '@typescript-eslint/typescript-estree': 7.12.0(typescript@5.4.5) eslint: 8.57.0 transitivePeerDependencies: - supports-color @@ -4862,45 +4693,48 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@6.21.0: - resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} + /@typescript-eslint/visitor-keys@7.12.0: + resolution: {integrity: sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ==} + engines: {node: ^18.18.0 || >=20.0.0} + dependencies: + '@typescript-eslint/types': 7.12.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@typescript-eslint/visitor-keys@7.2.0: + resolution: {integrity: sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/types': 7.2.0 eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@7.11.0: - resolution: {integrity: sha512-7syYk4MzjxTEk0g/w3iqtgxnFQspDJfn6QKD36xMuuhTzjcxY7F8EmBLnALjVyaOF1/bVocu3bS/2/F7rXrveQ==} - engines: {node: ^18.18.0 || >=20.0.0} + /@uidotdev/usehooks@2.4.1(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-1I+RwWyS+kdv3Mv0Vmc+p0dPYH0DTRAo04HLyXReYBL9AeseDWUJyi4THuksBJcu9F0Pih69Ak150VDnqbVnXg==} + engines: {node: '>=16'} + peerDependencies: + react: '>=18.0.0' + react-dom: '>=18.0.0' dependencies: - '@typescript-eslint/types': 7.11.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@typescript-eslint/visitor-keys@7.9.0: - resolution: {integrity: sha512-iESPx2TNLDNGQLyjKhUvIKprlP49XNEK+MvIf9nIO7ZZaZdbnfWKHnXAgufpxqfA0YryH8XToi4+CjBgVnFTSQ==} - engines: {node: ^18.18.0 || >=20.0.0} - dependencies: - '@typescript-eslint/types': 7.9.0 - eslint-visitor-keys: 3.4.3 - dev: true + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + dev: false /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - /@vitejs/plugin-react@4.3.0(vite@5.2.12): + /@vitejs/plugin-react@4.3.0(vite@5.2.13): resolution: {integrity: sha512-KcEbMsn4Dpk+LIbHMj7gDPRKaTMStxxWRkRmxsg/jVdFdJCZWt1SchZcf0M4t8lIKdwwMsEyzhrcOXRrDPtOBw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 dependencies: - '@babel/core': 7.24.6 - '@babel/plugin-transform-react-jsx-self': 7.24.6(@babel/core@7.24.6) - '@babel/plugin-transform-react-jsx-source': 7.24.6(@babel/core@7.24.6) + '@babel/core': 7.24.7 + '@babel/plugin-transform-react-jsx-self': 7.24.6(@babel/core@7.24.7) + '@babel/plugin-transform-react-jsx-source': 7.24.6(@babel/core@7.24.7) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.2.12(@types/node@20.13.0)(sass@1.77.4) + vite: 5.2.13(@types/node@20.14.2)(sass@1.77.4) transitivePeerDependencies: - supports-color dev: true @@ -4912,7 +4746,7 @@ packages: dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.4 @@ -4923,7 +4757,7 @@ packages: std-env: 3.7.0 strip-literal: 2.1.0 test-exclude: 6.0.0 - vitest: 1.6.0(@types/node@20.13.0)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.4) + vitest: 1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.4) transitivePeerDependencies: - supports-color dev: true @@ -4970,7 +4804,7 @@ packages: pathe: 1.1.2 picocolors: 1.0.1 sirv: 2.0.4 - vitest: 1.6.0(@types/node@20.13.0)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.4) + vitest: 1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.4) dev: true /@vitest/utils@1.6.0: @@ -5142,7 +4976,7 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -5150,7 +4984,7 @@ packages: resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} engines: {node: '>= 14'} dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -5248,7 +5082,7 @@ packages: resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} engines: {node: '>=10'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: false /aria-query@5.3.0: @@ -5413,17 +5247,17 @@ packages: dequal: 2.0.3 dev: true - /babel-jest@29.7.0(@babel/core@7.24.6): + /babel-jest@29.7.0(@babel/core@7.24.7): resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.24.6 + '@babel/core': 7.24.7 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.24.6) + babel-preset-jest: 29.6.3(@babel/core@7.24.7) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -5448,41 +5282,41 @@ packages: resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.6 + '@babel/template': 7.24.7 + '@babel/types': 7.24.7 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.6 dev: true - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.6): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.7): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.6 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.6) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.6) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.6) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.6) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.6) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.6) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.6) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.6) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.6) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.6) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.6) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.6) + '@babel/core': 7.24.7 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.7) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.7) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.7) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.7) dev: true - /babel-preset-jest@29.6.3(@babel/core@7.24.6): + /babel-preset-jest@29.6.3(@babel/core@7.24.7): resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.24.6 + '@babel/core': 7.24.7 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.6) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.7) dev: true /babylon@6.18.0: @@ -5558,8 +5392,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001620 - electron-to-chromium: 1.4.773 + caniuse-lite: 1.0.30001628 + electron-to-chromium: 1.4.790 node-releases: 2.0.14 update-browserslist-db: 1.0.16(browserslist@4.23.0) @@ -5576,15 +5410,15 @@ packages: /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - /bullmq@5.7.14: - resolution: {integrity: sha512-ESAQlJGU1W+qp5xTgx5XR+4svqCqGGZNlwkn83K0A0c2FL0x+d9mpX9KmENyb9pt5G6fplFWq8RFebajUYRH4g==} + /bullmq@5.7.15: + resolution: {integrity: sha512-XR5sTA8BPUY67sS37sMKGCDvSLaVpMq7aaQG8FGSKOUnPoJMRf17n1TibVWP3+yK0xKLdK5Y7PY9D874Fpeqpg==} dependencies: cron-parser: 4.9.0 ioredis: 5.4.1 msgpackr: 1.10.2 node-abort-controller: 3.1.1 semver: 7.6.2 - tslib: 2.6.2 + tslib: 2.6.3 uuid: 9.0.1 transitivePeerDependencies: - supports-color @@ -5630,6 +5464,9 @@ packages: /caniuse-lite@1.0.30001620: resolution: {integrity: sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==} + /caniuse-lite@1.0.30001628: + resolution: {integrity: sha512-S3BnR4Kh26TBxbi5t5kpbcUlLJb9lhtDXISDPwOfI+JoC+ik0QksvkZtUVyikw3hjnkgkMPSJ8oIM9yMm9vflA==} + /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} dev: false @@ -5885,7 +5722,7 @@ packages: vary: 1.1.2 dev: false - /create-jest@29.7.0(@types/node@20.13.0): + /create-jest@29.7.0(@types/node@20.14.2): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -5894,7 +5731,7 @@ packages: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.13.0) + jest-config: 29.7.0(@types/node@20.14.2) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -5984,7 +5821,7 @@ packages: ms: 2.1.3 dev: true - /debug@4.3.4(supports-color@5.5.0): + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -5994,6 +5831,17 @@ packages: optional: true dependencies: ms: 2.1.2 + + /debug@4.3.5(supports-color@5.5.0): + resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 supports-color: 5.5.0 /decimal.js@10.4.3: @@ -6152,8 +6000,8 @@ packages: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} - /drizzle-orm@0.31.0(@opentelemetry/api@1.8.0)(@types/pg@8.11.6)(@types/react@18.3.3)(pg@8.11.5)(react@18.3.1): - resolution: {integrity: sha512-Uf5a3sGOqoyC+ZpQ4NCPR373q0pHOHezIJwdumMix+3rzLdtKgRhdaOabYeqNHBB48gF3Q9rrndkNc4ddE3AWA==} + /drizzle-orm@0.31.2(@opentelemetry/api@1.9.0)(@types/pg@8.11.6)(@types/react@18.3.3)(pg@8.12.0)(react@18.3.1): + resolution: {integrity: sha512-QnenevbnnAzmbNzQwbhklvIYrDE8YER8K7kSrAWQSV1YvFCdSQPzj+jzqRdTSsV2cDqSpQ0NXGyL1G9I43LDLg==} peerDependencies: '@aws-sdk/client-rds-data': '>=3' '@cloudflare/workers-types': '>=3' @@ -6163,6 +6011,7 @@ packages: '@op-engineering/op-sqlite': '>=2' '@opentelemetry/api': ^1.4.1 '@planetscale/database': '>=1' + '@tidbcloud/serverless': '*' '@types/better-sqlite3': '*' '@types/pg': '*' '@types/react': '>=18' @@ -6197,6 +6046,8 @@ packages: optional: true '@planetscale/database': optional: true + '@tidbcloud/serverless': + optional: true '@types/better-sqlite3': optional: true '@types/pg': @@ -6232,10 +6083,10 @@ packages: sqlite3: optional: true dependencies: - '@opentelemetry/api': 1.8.0 + '@opentelemetry/api': 1.9.0 '@types/pg': 8.11.6 '@types/react': 18.3.3 - pg: 8.11.5 + pg: 8.12.0 react: 18.3.1 dev: false @@ -6257,8 +6108,8 @@ packages: safe-buffer: 5.2.1 dev: false - /electron-to-chromium@1.4.773: - resolution: {integrity: sha512-87eHF+h3PlCRwbxVEAw9KtK3v7lWfc/sUDr0W76955AdYTG4bV/k0zrl585Qnj/skRMH2qOSiE+kqMeOQ+LOpw==} + /electron-to-chromium@1.4.790: + resolution: {integrity: sha512-eVGeQxpaBYbomDBa/Mehrs28MdvCXfJmEFzaMFsv8jH/MJDLIylJN81eTJ5kvx7B7p18OiPK0BkC06lydEy63A==} /emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -6281,7 +6132,7 @@ packages: resolution: {integrity: sha512-9Z0qLB0NIisTRt1DZ/8U2k12RJn8yls/nXMZLn+/N8hANT3TcYjKFKcwbw5zFQiN4NTde3TSY9zb79e1ij6j9Q==} dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) engine.io-parser: 5.2.2 ws: 8.11.0 xmlhttprequest-ssl: 2.0.0 @@ -6302,12 +6153,12 @@ packages: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 20.13.0 + '@types/node': 20.14.2 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.4.2 cors: 2.8.5 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) engine.io-parser: 5.2.2 ws: 8.11.0 transitivePeerDependencies: @@ -6322,6 +6173,15 @@ packages: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 + dev: true + + /enhanced-resolve@5.17.0: + resolution: {integrity: sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==} + engines: {node: '>=10.13.0'} + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: false /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} @@ -6557,11 +6417,11 @@ packages: dependencies: '@next/eslint-plugin-next': 14.2.3 '@rushstack/eslint-patch': 1.10.3 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.4.5) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) eslint-plugin-react: 7.34.2(eslint@8.57.0) eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) @@ -6590,18 +6450,18 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) enhanced-resolve: 5.16.1 eslint: 8.57.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.5 is-core-module: 2.13.1 @@ -6613,7 +6473,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.12.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} engines: {node: '>=4'} peerDependencies: @@ -6634,16 +6494,15 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.4.5) debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.11.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} engines: {node: '>=4'} peerDependencies: @@ -6664,15 +6523,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 7.11.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.4.5) debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.12.0)(eslint@8.57.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -6682,7 +6542,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.12.0(eslint@8.57.0)(typescript@5.4.5) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 @@ -6691,7 +6551,7 @@ packages: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.12.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -6707,7 +6567,7 @@ packages: - supports-color dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.11.0)(eslint@8.57.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -6717,7 +6577,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 7.11.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.4.5) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 @@ -6726,7 +6586,7 @@ packages: 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.11.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -6758,8 +6618,8 @@ packages: requireindex: 1.2.0 dev: true - /eslint-plugin-jest@28.5.0(@typescript-eslint/eslint-plugin@7.11.0)(eslint@8.57.0)(jest@29.7.0)(typescript@5.4.5): - resolution: {integrity: sha512-6np6DGdmNq/eBbA7HOUNV8fkfL86PYwBfwyb8n23FXgJNTR8+ot3smRHjza9LGsBBZRypK3qyF79vMjohIL8eQ==} + /eslint-plugin-jest@28.6.0(@typescript-eslint/eslint-plugin@7.12.0)(eslint@8.57.0)(jest@29.7.0)(typescript@5.4.5): + resolution: {integrity: sha512-YG28E1/MIKwnz+e2H7VwYPzHUYU4aMa19w0yGcwXnnmJH6EfgHahTJ2un3IyraUxNfnz/KUhJAFXNNwWPo12tg==} engines: {node: ^16.10.0 || ^18.12.0 || >=20.0.0} peerDependencies: '@typescript-eslint/eslint-plugin': ^6.0.0 || ^7.0.0 @@ -6771,10 +6631,10 @@ packages: jest: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 7.11.0(@typescript-eslint/parser@7.11.0)(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.9.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 7.12.0(@typescript-eslint/parser@7.12.0)(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.12.0(eslint@8.57.0)(typescript@5.4.5) eslint: 8.57.0 - jest: 29.7.0(@types/node@20.13.0) + jest: 29.7.0(@types/node@20.14.2) transitivePeerDependencies: - supports-color - typescript @@ -6906,7 +6766,7 @@ packages: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -7228,7 +7088,7 @@ packages: peerDependencies: next: '>=13.2.0 <15.0.0-0' dependencies: - next: 14.2.3(@babel/core@7.24.6)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(react-dom@18.3.1)(react@18.3.1)(sass@1.77.4) + next: 14.2.3(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.44.1)(react-dom@18.3.1)(react@18.3.1)(sass@1.77.4) dev: false /generic-pool@3.9.0: @@ -7326,6 +7186,7 @@ packages: /glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -7558,8 +7419,8 @@ packages: react-is: 16.13.1 dev: false - /hono@4.4.2: - resolution: {integrity: sha512-bRhZ+BM9r04lRN2i9wiZ18yQNbZxHsmmRIItoAb43nRkHnIDsFhFh4mJ0seEs06FvenibpAgSVNHQ8ZzcDQx2A==} + /hono@4.4.4: + resolution: {integrity: sha512-zO5+4K8yf1iuKhBZhwmpZ/0LzPMr8Zt1RugEGM1xvOqgh9DyLb7tslOtoBks4bmm5bIcLtzLCXUpYpXOkwpABA==} engines: {node: '>=16.0.0'} dev: false @@ -7587,7 +7448,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.1 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: true @@ -7602,7 +7463,7 @@ packages: engines: {node: '>= 6'} dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -7611,7 +7472,7 @@ packages: engines: {node: '>= 14'} dependencies: agent-base: 7.1.1 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) transitivePeerDependencies: - supports-color @@ -7685,6 +7546,15 @@ packages: module-details-from-path: 1.0.3 dev: false + /import-in-the-middle@1.8.0: + resolution: {integrity: sha512-/xQjze8szLNnJ5rvHSzn+dcVXqCAU6Plbk4P24U/jwPmg1wy7IIp9OjKIO5tYue8GSPhDpPDiApQjvBUmWwhsQ==} + dependencies: + acorn: 8.11.3 + acorn-import-attributes: 1.9.5(acorn@8.11.3) + cjs-module-lexer: 1.3.1 + module-details-from-path: 1.0.3 + dev: false + /import-local@3.1.0: resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} engines: {node: '>=8'} @@ -7706,6 +7576,7 @@ packages: /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. dependencies: once: 1.4.0 wrappy: 1.0.2 @@ -7732,7 +7603,7 @@ packages: '@formatjs/ecma402-abstract': 1.18.2 '@formatjs/fast-memoize': 2.2.0 '@formatjs/icu-messageformat-parser': 2.7.6 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /invariant@2.2.4: @@ -7747,7 +7618,7 @@ packages: dependencies: '@ioredis/commands': 1.2.0 cluster-key-slot: 1.1.2 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) denque: 2.1.0 lodash.defaults: 4.2.0 lodash.isarguments: 3.1.0 @@ -8022,8 +7893,8 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.24.6 - '@babel/parser': 7.24.6 + '@babel/core': 7.24.7 + '@babel/parser': 7.24.7 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -8035,8 +7906,8 @@ packages: resolution: {integrity: sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.24.6 - '@babel/parser': 7.24.6 + '@babel/core': 7.24.7 + '@babel/parser': 7.24.7 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.6.2 @@ -8057,7 +7928,7 @@ packages: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: @@ -8069,7 +7940,7 @@ packages: engines: {node: '>=10'} dependencies: '@jridgewell/trace-mapping': 0.3.25 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -8124,7 +7995,7 @@ packages: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.13.0 + '@types/node': 20.14.2 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.3 @@ -8145,7 +8016,7 @@ packages: - supports-color dev: true - /jest-cli@29.7.0(@types/node@20.13.0): + /jest-cli@29.7.0(@types/node@20.14.2): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -8159,10 +8030,10 @@ packages: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.13.0) + create-jest: 29.7.0(@types/node@20.14.2) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.13.0) + jest-config: 29.7.0(@types/node@20.14.2) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -8173,7 +8044,7 @@ packages: - ts-node dev: true - /jest-config@29.7.0(@types/node@20.13.0): + /jest-config@29.7.0(@types/node@20.14.2): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -8185,11 +8056,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.24.6 + '@babel/core': 7.24.7 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.13.0 - babel-jest: 29.7.0(@babel/core@7.24.6) + '@types/node': 20.14.2 + babel-jest: 29.7.0(@babel/core@7.24.7) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -8248,7 +8119,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.13.0 + '@types/node': 20.14.2 jest-mock: 29.7.0 jest-util: 29.7.0 dev: true @@ -8264,7 +8135,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 20.13.0 + '@types/node': 20.14.2 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -8299,7 +8170,7 @@ packages: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.24.7 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -8315,7 +8186,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.13.0 + '@types/node': 20.14.2 jest-util: 29.7.0 dev: true @@ -8370,7 +8241,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.13.0 + '@types/node': 20.14.2 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -8401,7 +8272,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.13.0 + '@types/node': 20.14.2 chalk: 4.1.2 cjs-module-lexer: 1.3.1 collect-v8-coverage: 1.0.2 @@ -8424,15 +8295,15 @@ packages: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.24.6 - '@babel/generator': 7.24.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.6) - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.6) - '@babel/types': 7.24.6 + '@babel/core': 7.24.7 + '@babel/generator': 7.24.7 + '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.7) + '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.7) + '@babel/types': 7.24.7 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.6) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.7) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -8453,7 +8324,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.13.0 + '@types/node': 20.14.2 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -8478,7 +8349,7 @@ packages: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.13.0 + '@types/node': 20.14.2 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -8490,7 +8361,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.13.0 + '@types/node': 20.14.2 merge-stream: 2.0.0 supports-color: 8.1.1 dev: false @@ -8499,13 +8370,13 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.13.0 + '@types/node': 20.14.2 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest@29.7.0(@types/node@20.13.0): + /jest@29.7.0(@types/node@20.14.2): resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -8518,7 +8389,7 @@ packages: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.13.0) + jest-cli: 29.7.0(@types/node@20.14.2) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -8714,8 +8585,8 @@ packages: engines: {node: '>=6'} dev: true - /knip@5.17.3(@types/node@20.13.0)(typescript@5.4.5): - resolution: {integrity: sha512-x2paKB0BOzFjnetYolGwg9Dwa8ZIYwBuVP2V4bWRFfTeLs7BymARb7I00R3OCbr09gKKr8TPLQVx2GQ6RF9llQ==} + /knip@5.18.0(@types/node@20.14.2)(typescript@5.4.5): + resolution: {integrity: sha512-V+iJz2490zJQ11J0XCf7FggbiqY4L9HpmwSWS3BvwrH7W+bep9drx+Wj2dCU+8uSUijvwPB2unLbQKFCTuvT5g==} engines: {node: '>=18.6.0'} hasBin: true peerDependencies: @@ -8725,7 +8596,7 @@ packages: '@ericcornelissen/bash-parser': 0.5.2 '@nodelib/fs.walk': 2.0.0 '@snyk/github-codeowners': 1.1.0 - '@types/node': 20.13.0 + '@types/node': 20.14.2 easy-table: 1.2.0 fast-glob: 3.3.2 file-entry-cache: 8.0.0 @@ -8940,13 +8811,12 @@ packages: engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - dev: true /magicast@0.3.4: resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} dependencies: - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 + '@babel/parser': 7.24.7 + '@babel/types': 7.24.7 source-map-js: 1.2.0 dev: true @@ -9414,7 +9284,7 @@ packages: resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} dependencies: '@types/debug': 4.1.12 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.1 @@ -9517,6 +9387,11 @@ packages: /minipass@7.1.1: resolution: {integrity: sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==} engines: {node: '>=16 || 14 >=14.17'} + dev: true + + /minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} /minisearch@6.3.0: resolution: {integrity: sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==} @@ -9568,8 +9443,8 @@ packages: msgpackr-extract: 3.0.2 dev: false - /msw@2.3.0(typescript@5.4.5): - resolution: {integrity: sha512-cDr1q/QTMzaWhY8n9lpGhceY209k29UZtdTgJ3P8Bzne3TSMchX2EM/ldvn4ATLOktpCefCU2gcEgzHc31GTPw==} + /msw@2.3.1(typescript@5.4.5): + resolution: {integrity: sha512-ocgvBCLn/5l3jpl1lssIb3cniuACJLoOfZu01e3n5dbJrpA5PeeWn28jCLgQDNt6d7QT8tF2fYRzm9JoEHtiig==} engines: {node: '>=18'} hasBin: true requiresBuild: true @@ -9581,7 +9456,7 @@ packages: dependencies: '@bundled-es-modules/cookie': 2.0.0 '@bundled-es-modules/statuses': 1.0.1 - '@inquirer/confirm': 3.1.7 + '@inquirer/confirm': 3.1.9 '@mswjs/cookies': 1.1.0 '@mswjs/interceptors': 0.29.1 '@open-draft/until': 2.1.0 @@ -9594,7 +9469,7 @@ packages: outvariant: 1.4.2 path-to-regexp: 6.2.2 strict-event-emitter: 0.5.1 - type-fest: 4.18.2 + type-fest: 4.19.0 typescript: 5.4.5 yargs: 17.7.2 dev: true @@ -9635,7 +9510,7 @@ packages: react: '>= 16.8.0' dependencies: js-cookie: 3.0.5 - next: 14.2.3(@babel/core@7.24.6)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(react-dom@18.3.1)(react@18.3.1)(sass@1.77.4) + next: 14.2.3(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.44.1)(react-dom@18.3.1)(react@18.3.1)(sass@1.77.4) react: 18.3.1 dev: false @@ -9647,7 +9522,7 @@ packages: dependencies: '@formatjs/intl-localematcher': 0.2.32 negotiator: 0.6.3 - next: 14.2.3(@babel/core@7.24.6)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(react-dom@18.3.1)(react@18.3.1)(sass@1.77.4) + next: 14.2.3(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.44.1)(react-dom@18.3.1)(react@18.3.1)(sass@1.77.4) react: 18.3.1 use-intl: 3.14.1(react@18.3.1) dev: false @@ -9658,19 +9533,19 @@ packages: next: '>=10.0.0' react: '>=17.0.0' dependencies: - next: 14.2.3(@babel/core@7.24.6)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(react-dom@18.3.1)(react@18.3.1)(sass@1.77.4) + next: 14.2.3(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.44.1)(react-dom@18.3.1)(react@18.3.1)(sass@1.77.4) react: 18.3.1 dev: true - /next-safe-action@6.2.0(ajv@6.12.6)(next@14.2.3)(react@18.3.1)(vite@5.2.12): + /next-safe-action@6.2.0(ajv@6.12.6)(next@14.2.3)(react@18.3.1)(vite@5.2.13): resolution: {integrity: sha512-gssUs3OLoNjLXZalrQaly38s/mUtXsIcKWGIK3jFkW8GHl0/Xhq+3G8yEEyObET2YlYqUj79K+mH3iTNBLDcMw==} engines: {node: '>=18.17'} peerDependencies: next: '>= 14.0.0' react: '>= 18.2.0' dependencies: - '@decs/typeschema': 0.12.2(ajv@6.12.6)(vite@5.2.12)(zod@3.23.8) - next: 14.2.3(@babel/core@7.24.6)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(react-dom@18.3.1)(react@18.3.1)(sass@1.77.4) + '@decs/typeschema': 0.12.2(ajv@6.12.6)(vite@5.2.13)(zod@3.23.8) + next: 14.2.3(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.44.1)(react-dom@18.3.1)(react@18.3.1)(sass@1.77.4) react: 18.3.1 optionalDependencies: zod: 3.23.8 @@ -9692,7 +9567,7 @@ packages: - yup dev: false - /next@14.2.3(@babel/core@7.24.6)(@opentelemetry/api@1.8.0)(@playwright/test@1.44.1)(react-dom@18.3.1)(react@18.3.1)(sass@1.77.4): + /next@14.2.3(@babel/core@7.24.7)(@opentelemetry/api@1.9.0)(@playwright/test@1.44.1)(react-dom@18.3.1)(react@18.3.1)(sass@1.77.4): resolution: {integrity: sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==} engines: {node: '>=18.17.0'} hasBin: true @@ -9711,7 +9586,7 @@ packages: optional: true dependencies: '@next/env': 14.2.3 - '@opentelemetry/api': 1.8.0 + '@opentelemetry/api': 1.9.0 '@playwright/test': 1.44.1 '@swc/helpers': 0.5.5 busboy: 1.6.0 @@ -9721,7 +9596,7 @@ packages: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) sass: 1.77.4 - styled-jsx: 5.1.1(@babel/core@7.24.6)(react@18.3.1) + styled-jsx: 5.1.1(@babel/core@7.24.7)(react@18.3.1) optionalDependencies: '@next/swc-darwin-arm64': 14.2.3 '@next/swc-darwin-x64': 14.2.3 @@ -9775,13 +9650,13 @@ packages: /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} - /nodemon@3.1.2: - resolution: {integrity: sha512-/Ib/kloefDy+N0iRTxIUzyGcdW9lzlnca2Jsa5w73bs3npXjg+WInmiX6VY13mIb6SykkthYX/U5t0ukryGqBw==} + /nodemon@3.1.3: + resolution: {integrity: sha512-m4Vqs+APdKzDFpuaL9F9EVOF85+h070FnkHVEoU4+rmT6Vw0bmNl7s61VEkY/cJkL7RCv1p4urnUDUMrS5rk2w==} engines: {node: '>=10'} hasBin: true dependencies: chokidar: 3.6.0 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) ignore-by-default: 1.0.1 minimatch: 3.1.2 pstree.remy: 1.1.8 @@ -9929,9 +9804,9 @@ packages: engines: {node: '>18.0.0'} requiresBuild: true dependencies: - '@opentelemetry/api': 1.8.0 - '@opentelemetry/instrumentation': 0.43.0(@opentelemetry/api@1.8.0) - '@opentelemetry/semantic-conventions': 1.24.1 + '@opentelemetry/api': 1.9.0 + '@opentelemetry/instrumentation': 0.43.0(@opentelemetry/api@1.9.0) + '@opentelemetry/semantic-conventions': 1.25.0 transitivePeerDependencies: - supports-color dev: false @@ -10022,7 +9897,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.24.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -10064,7 +9939,7 @@ packages: engines: {node: '>=16 || 14 >=14.18'} dependencies: lru-cache: 10.2.2 - minipass: 7.1.1 + minipass: 7.1.2 /path-to-regexp@6.2.2: resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} @@ -10101,12 +9976,12 @@ packages: resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==} engines: {node: '>=4'} - /pg-pool@3.6.2(pg@8.11.5): + /pg-pool@3.6.2(pg@8.12.0): resolution: {integrity: sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==} peerDependencies: pg: '>=8.0' dependencies: - pg: 8.11.5 + pg: 8.12.0 dev: false /pg-protocol@1.6.1: @@ -10135,8 +10010,8 @@ packages: postgres-interval: 3.0.0 postgres-range: 1.1.4 - /pg@8.11.5: - resolution: {integrity: sha512-jqgNHSKL5cbDjFlHyYsCXmQDrfIX/3RsNwYqpd4N0Kt8niLuNoRNH+aazv6cOd43gPh9Y4DjQCtb+X0MH0Hvnw==} + /pg@8.12.0: + resolution: {integrity: sha512-A+LHUSnwnxrnL/tZ+OLfqR1SxLN3c/pgDztZ47Rpbsd4jUytsTtwQo/TLPRzPJMp/1pbhYVhH9cuSZLAajNfjQ==} engines: {node: '>= 8.0.0'} peerDependencies: pg-native: '>=3.0.1' @@ -10145,7 +10020,7 @@ packages: optional: true dependencies: pg-connection-string: 2.6.4 - pg-pool: 3.6.2(pg@8.11.5) + pg-pool: 3.6.2(pg@8.12.0) pg-protocol: 1.6.1 pg-types: 2.2.0 pgpass: 1.0.5 @@ -10278,8 +10153,8 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier@3.2.5: - resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + /prettier@3.3.1: + resolution: {integrity: sha512-7CAwy5dRsxs8PHXT3twixW9/OEll8MLE0VRPCJyl7CkS6VHGPSlsVaWTiASPTyGyYRyApxlaWTzwUxVNrhcwDg==} engines: {node: '>=14'} hasBin: true dev: true @@ -10476,7 +10351,7 @@ packages: '@types/react': 18.3.3 react: 18.3.1 react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) - tslib: 2.6.2 + tslib: 2.6.3 dev: false /react-remove-scroll@2.5.5(@types/react@18.3.3)(react@18.3.1): @@ -10493,7 +10368,7 @@ packages: react: 18.3.1 react-remove-scroll-bar: 2.3.6(@types/react@18.3.3)(react@18.3.1) react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) - tslib: 2.6.2 + tslib: 2.6.3 use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1) use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) dev: false @@ -10512,7 +10387,7 @@ packages: get-nonce: 1.0.1 invariant: 2.2.4 react: 18.3.1 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /react-tooltip@5.26.4(react-dom@18.3.1)(react@18.3.1): @@ -10680,7 +10555,7 @@ packages: resolution: {integrity: sha512-nQFEv9gRw6SJAwWD2LrL0NmQvAcO7FBwJbwmr2ttPAacfy0xuiOjE5zt+zM4xDyuyvUaxBi/9gb2SoCyNEVJcw==} engines: {node: '>=8.6.0'} dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) module-details-from-path: 1.0.3 resolve: 1.22.8 transitivePeerDependencies: @@ -11011,7 +10886,7 @@ packages: /socket.io-adapter@2.5.4: resolution: {integrity: sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==} dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) ws: 8.11.0 transitivePeerDependencies: - bufferutil @@ -11024,7 +10899,7 @@ packages: engines: {node: '>=10.0.0'} dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 engine.io-client: 6.5.3 socket.io-parser: 4.2.4 transitivePeerDependencies: @@ -11038,7 +10913,7 @@ packages: engines: {node: '>=10.0.0'} dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) transitivePeerDependencies: - supports-color dev: false @@ -11050,7 +10925,7 @@ packages: accepts: 1.3.8 base64id: 2.0.0 cors: 2.8.5 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 engine.io: 6.5.4 socket.io-adapter: 2.5.4 socket.io-parser: 4.2.4 @@ -11304,7 +11179,7 @@ packages: inline-style-parser: 0.2.3 dev: false - /styled-jsx@5.1.1(@babel/core@7.24.6)(react@18.3.1): + /styled-jsx@5.1.1(@babel/core@7.24.7)(react@18.3.1): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -11317,7 +11192,7 @@ packages: babel-plugin-macros: optional: true dependencies: - '@babel/core': 7.24.6 + '@babel/core': 7.24.7 client-only: 0.0.1 react: 18.3.1 @@ -11355,7 +11230,7 @@ packages: resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==} engines: {node: '>=12.20'} dependencies: - tslib: 2.6.2 + tslib: 2.6.3 dev: true /systeminformation@5.22.10: @@ -11389,12 +11264,12 @@ packages: jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 - terser: 5.31.0 + terser: 5.31.1 webpack: 5.91.0 dev: false - /terser@5.31.0: - resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} + /terser@5.31.1: + resolution: {integrity: sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==} engines: {node: '>=10'} hasBin: true dependencies: @@ -11568,6 +11443,10 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: true + + /tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} /tsutils@3.21.0(typescript@5.4.5): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -11579,8 +11458,8 @@ packages: typescript: 5.4.5 dev: true - /tsx@4.11.0: - resolution: {integrity: sha512-vzGGELOgAupsNVssAmZjbUDfdm/pWP4R+Kg8TVdsonxbXk0bEpE1qh0yV6/QxUVXaVlNemgcPajGdJJ82n3stg==} + /tsx@4.13.2: + resolution: {integrity: sha512-s+WGqChkA77uU8xij1IdO9jQnwJAiWJto0bF5yJLbAZpLtNs82Qa5CwMBxWjJ7QOYU9MzBf4MCNt6lZduwkQ+g==} engines: {node: '>=18.0.0'} hasBin: true dependencies: @@ -11617,8 +11496,8 @@ packages: engines: {node: '>=8'} dev: false - /type-fest@4.18.2: - resolution: {integrity: sha512-+suCYpfJLAe4OXS6+PPXjW3urOS4IoP9waSiLuXfLgqZODKw/aWwASvzqE886wA0kQgGy0mIWyhd87VpqIy6Xg==} + /type-fest@4.19.0: + resolution: {integrity: sha512-CN2l+hWACRiejlnr68vY0/7734Kzu+9+TOslUXbSCQ1ruY9XIHDBSceVXCcHm/oXrdzhtLMMdJEKfemf1yXiZQ==} engines: {node: '>=16'} dev: true @@ -11809,7 +11688,7 @@ packages: dependencies: '@types/react': 18.3.3 react: 18.3.1 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /use-intl@3.14.1(react@18.3.1): @@ -11835,7 +11714,7 @@ packages: '@types/react': 18.3.3 detect-node-es: 1.1.0 react: 18.3.1 - tslib: 2.6.2 + tslib: 2.6.3 dev: false /use-sync-external-store@1.2.0(react@18.3.1): @@ -11895,16 +11774,16 @@ packages: vfile-message: 4.0.2 dev: false - /vite-node@1.6.0(@types/node@20.13.0)(sass@1.77.4): + /vite-node@1.6.0(@types/node@20.14.2)(sass@1.77.4): resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.5(supports-color@5.5.0) pathe: 1.1.2 picocolors: 1.0.1 - vite: 5.2.11(@types/node@20.13.0)(sass@1.77.4) + vite: 5.2.11(@types/node@20.14.2)(sass@1.77.4) transitivePeerDependencies: - '@types/node' - less @@ -11916,7 +11795,7 @@ packages: - terser dev: true - /vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@5.2.12): + /vite-tsconfig-paths@4.3.2(typescript@5.4.5)(vite@5.2.13): resolution: {integrity: sha512-0Vd/a6po6Q+86rPlntHye7F31zA2URZMbH8M3saAZ/xR9QoGN/L21bxEGfXdWmFdNkqPpRdxFT7nmNe12e9/uA==} peerDependencies: vite: '*' @@ -11924,16 +11803,16 @@ packages: vite: optional: true dependencies: - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 globrex: 0.1.2 tsconfck: 3.0.3(typescript@5.4.5) - vite: 5.2.12(@types/node@20.13.0)(sass@1.77.4) + vite: 5.2.13(@types/node@20.14.2)(sass@1.77.4) transitivePeerDependencies: - supports-color - typescript dev: true - /vite@5.2.11(@types/node@20.13.0)(sass@1.77.4): + /vite@5.2.11(@types/node@20.14.2)(sass@1.77.4): resolution: {integrity: sha512-HndV31LWW05i1BLPMUCE1B9E9GFbOu1MbenhS58FuK6owSO5qHm7GiCotrNY1YE5rMeQSFBGmT5ZaLEjFizgiQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -11961,7 +11840,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.13.0 + '@types/node': 20.14.2 esbuild: 0.20.2 postcss: 8.4.38 rollup: 4.18.0 @@ -11970,8 +11849,8 @@ packages: fsevents: 2.3.3 dev: true - /vite@5.2.12(@types/node@20.13.0)(sass@1.77.4): - resolution: {integrity: sha512-/gC8GxzxMK5ntBwb48pR32GGhENnjtY30G4A0jemunsBkiEZFw60s8InGpN8gkhHEkjnRK1aSAxeQgwvFhUHAA==} + /vite@5.2.13(@types/node@20.14.2)(sass@1.77.4): + resolution: {integrity: sha512-SSq1noJfY9pR3I1TUENL3rQYDQCFqgD+lM6fTRAM8Nv6Lsg5hDLaXkjETVeBt+7vZBCMoibD+6IWnT2mJ+Zb/A==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -11998,7 +11877,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.13.0 + '@types/node': 20.14.2 esbuild: 0.20.2 postcss: 8.4.38 rollup: 4.18.0 @@ -12006,7 +11885,7 @@ packages: optionalDependencies: fsevents: 2.3.3 - /vitest@1.6.0(@types/node@20.13.0)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.4): + /vitest@1.6.0(@types/node@20.14.2)(@vitest/ui@1.6.0)(jsdom@24.1.0)(sass@1.77.4): resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -12031,7 +11910,7 @@ packages: jsdom: optional: true dependencies: - '@types/node': 20.13.0 + '@types/node': 20.14.2 '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 '@vitest/snapshot': 1.6.0 @@ -12040,7 +11919,7 @@ packages: '@vitest/utils': 1.6.0 acorn-walk: 8.3.2 chai: 4.4.1 - debug: 4.3.4(supports-color@5.5.0) + debug: 4.3.4 execa: 8.0.1 jsdom: 24.1.0 local-pkg: 0.5.0 @@ -12051,8 +11930,8 @@ packages: strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.2.11(@types/node@20.13.0)(sass@1.77.4) - vite-node: 1.6.0(@types/node@20.13.0)(sass@1.77.4) + vite: 5.2.11(@types/node@20.14.2)(sass@1.77.4) + vite-node: 1.6.0(@types/node@20.14.2)(sass@1.77.4) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -12153,7 +12032,7 @@ packages: acorn-import-assertions: 1.9.0(acorn@8.11.3) browserslist: 4.23.0 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.16.1 + enhanced-resolve: 5.17.0 es-module-lexer: 1.5.3 eslint-scope: 5.1.1 events: 3.3.0 @@ -12391,8 +12270,8 @@ packages: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: false - /yaml@2.4.2: - resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} + /yaml@2.4.3: + resolution: {integrity: sha512-sntgmxj8o7DE7g/Qi60cqpLBA3HG3STcDA0kO+WfB05jEKhZMbY7umNm2rBpQvsmZ16/lPXCJGW2672dgOUkrg==} engines: {node: '>= 14'} hasBin: true dev: false diff --git a/public/mockServiceWorker.js b/public/mockServiceWorker.js index bdfdb11d..24fe3a25 100644 --- a/public/mockServiceWorker.js +++ b/public/mockServiceWorker.js @@ -8,7 +8,7 @@ * - Please do NOT serve this file on production. */ -const PACKAGE_VERSION = '2.3.0' +const PACKAGE_VERSION = '2.3.1' const INTEGRITY_CHECKSUM = '26357c79639bfa20d64c0efca2a87423' const IS_MOCKED_RESPONSE = Symbol('isMockedResponse') const activeClientIds = new Set() diff --git a/src/app/(dashboard)/app-store/[id]/components/AppDetailsTabs/AppDetailsTabTriggers.tsx b/src/app/(dashboard)/app-store/[id]/components/AppDetailsTabs/AppDetailsTabTriggers.tsx new file mode 100644 index 00000000..f041656d --- /dev/null +++ b/src/app/(dashboard)/app-store/[id]/components/AppDetailsTabs/AppDetailsTabTriggers.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import { TabsList, TabsTrigger } from '@/components/ui/tabs'; +import { useTranslations } from 'next-intl'; +import { AppStatus } from '@/server/db/schema'; +import { useRouter } from 'next/navigation'; + +interface IProps { + status: AppStatus; +} + +export const AppDetailsTabTriggers = ({ status }: IProps) => { + const t = useTranslations(); + + const router = useRouter(); + + const handleTabChange = (newTab: string) => { + void router.push(`?tab=${newTab}`); + }; + + return ( + + handleTabChange('description')} value="description"> + {t('APP_DETAILS_DESCRIPTION')} + + handleTabChange('info')} value="info"> + {t('APP_DETAILS_BASE_INFO')} + + handleTabChange('logs')} value="logs" disabled={status === 'missing'}> + {t('APP_LOGS_TAB_TITLE')} + + + ); +}; diff --git a/src/app/(dashboard)/app-store/[id]/components/AppDetailsTabs/AppDetailsTabs.tsx b/src/app/(dashboard)/app-store/[id]/components/AppDetailsTabs/AppDetailsTabs.tsx index a66f0bd2..26e9b1a8 100644 --- a/src/app/(dashboard)/app-store/[id]/components/AppDetailsTabs/AppDetailsTabs.tsx +++ b/src/app/(dashboard)/app-store/[id]/components/AppDetailsTabs/AppDetailsTabs.tsx @@ -1,12 +1,14 @@ import { IconAlertCircle, IconExternalLink } from '@tabler/icons-react'; import React from 'react'; -import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; +import { Tabs, TabsContent } from '@/components/ui/tabs'; import { useTranslations } from 'next-intl'; import { AppInfo } from '@runtipi/shared'; import { Markdown } from '@/components/Markdown'; import { DataGrid, DataGridItem } from '@/components/ui/DataGrid'; import { AppStatus as AppStatusEnum } from '@/server/db/schema'; import { AppLogs } from './AppLogs'; +import { AppDetailsTabTriggers } from './AppDetailsTabTriggers'; +import { useSearchParams } from 'next/navigation'; interface IProps { info: AppInfo; @@ -16,15 +18,11 @@ interface IProps { export const AppDetailsTabs: React.FC = ({ info, status }) => { const t = useTranslations(); + const defaultTab = useSearchParams().get('tab'); + return ( - - - {t('APP_DETAILS_DESCRIPTION')} - {t('APP_DETAILS_BASE_INFO')} - - {t('APP_LOGS_TAB_TITLE')} - - + + {info.deprecated && (
diff --git a/src/app/(dashboard)/app-store/[id]/components/AppDetailsTabs/AppLogs.tsx b/src/app/(dashboard)/app-store/[id]/components/AppDetailsTabs/AppLogs.tsx index a7b6607a..499558c5 100644 --- a/src/app/(dashboard)/app-store/[id]/components/AppDetailsTabs/AppLogs.tsx +++ b/src/app/(dashboard)/app-store/[id]/components/AppDetailsTabs/AppLogs.tsx @@ -1,18 +1,19 @@ 'use client'; -import React, { useState } from 'react'; +import React, { useState, useRef } from 'react'; import { useSocket } from '@/lib/socket/useSocket'; import { LogsTerminal } from 'src/app/components/LogsTerminal/LogsTerminal'; +import { ClientOnly } from '@/components/ClientOnly/ClientOnly'; export const AppLogs = ({ appId }: { appId: string }) => { let nextId = 0; const [logs, setLogs] = useState<{ id: number; text: string }[]>([]); - const [maxLines, setMaxLines] = useState(300); + const maxLines = useRef(300); useSocket({ selector: { type: 'app-logs', event: 'newLogs', data: { property: 'appId', value: appId } }, onCleanup: () => setLogs([]), - emitOnConnect: { type: 'app-logs-init', event: 'initLogs', data: { appId, maxLines } }, + emitOnConnect: { type: 'app-logs-init', event: 'initLogs', data: { appId, maxLines: maxLines.current } }, emitOnDisconnect: { type: 'app-logs', event: 'stopLogs', data: { appId } }, onEvent: (_, data) => { setLogs((prevLogs) => { @@ -20,8 +21,8 @@ export const AppLogs = ({ appId }: { appId: string }) => { return prevLogs; } const newLogs = [...prevLogs, ...data.lines.map((line) => ({ id: nextId++, text: line.trim() }))]; - if (newLogs.length > maxLines) { - return newLogs.slice(newLogs.length - maxLines); + if (newLogs.length > maxLines.current) { + return newLogs.slice(newLogs.length - maxLines.current); } return newLogs; }); @@ -30,9 +31,13 @@ export const AppLogs = ({ appId }: { appId: string }) => { const updateMaxLines = (lines: number) => { const linesToKeep = Math.max(1, lines); - setMaxLines(linesToKeep); + maxLines.current = linesToKeep; setLogs((currentLogs) => currentLogs.slice(currentLogs.length - linesToKeep)); }; - return ; + return ( + + + + ); }; diff --git a/src/app/(dashboard)/settings/components/LogsContainer/LogsContainer.tsx b/src/app/(dashboard)/settings/components/LogsContainer/LogsContainer.tsx index f2e76f98..748cc972 100644 --- a/src/app/(dashboard)/settings/components/LogsContainer/LogsContainer.tsx +++ b/src/app/(dashboard)/settings/components/LogsContainer/LogsContainer.tsx @@ -1,18 +1,19 @@ 'use client'; -import React, { useState } from 'react'; +import React, { useState, useRef } from 'react'; import { useSocket } from '@/lib/socket/useSocket'; import { LogsTerminal } from 'src/app/components/LogsTerminal/LogsTerminal'; +import { ClientOnly } from '@/components/ClientOnly/ClientOnly'; export const LogsContainer = () => { let nextId = 0; const [logs, setLogs] = useState<{ id: number; text: string }[]>([]); - const [maxLines, setMaxLines] = useState(300); + const maxLines = useRef(300); useSocket({ selector: { type: 'runtipi-logs', event: 'newLogs' }, onCleanup: () => setLogs([]), - emitOnConnect: { type: 'runtipi-logs-init', event: 'initLogs', data: { maxLines } }, + emitOnConnect: { type: 'runtipi-logs-init', event: 'initLogs', data: { maxLines: maxLines.current } }, emitOnDisconnect: { type: 'runtipi-logs', event: 'stopLogs', data: {} }, onEvent: (_, data) => { setLogs((prevLogs) => { @@ -20,8 +21,8 @@ export const LogsContainer = () => { return prevLogs; } const newLogs = [...prevLogs, ...data.lines.map((line) => ({ id: nextId++, text: line.trim() }))]; - if (newLogs.length > maxLines) { - return newLogs.slice(newLogs.length - maxLines); + if (newLogs.length > maxLines.current) { + return newLogs.slice(newLogs.length - maxLines.current); } return newLogs; }); @@ -30,9 +31,13 @@ export const LogsContainer = () => { const updateMaxLines = (lines: number) => { const linesToKeep = Math.max(1, lines); - setMaxLines(linesToKeep); + maxLines.current = linesToKeep; setLogs(logs.slice(logs.length - linesToKeep)); }; - return ; + return ( + + + + ); }; diff --git a/src/app/components/LogsTerminal/LogsTerminal.tsx b/src/app/components/LogsTerminal/LogsTerminal.tsx index 00e36f55..208da90d 100644 --- a/src/app/components/LogsTerminal/LogsTerminal.tsx +++ b/src/app/components/LogsTerminal/LogsTerminal.tsx @@ -1,6 +1,7 @@ 'use client'; -import React, { useEffect, useRef, useState } from 'react'; +import React, { useEffect, useRef } from 'react'; +import { useLocalStorage } from '@uidotdev/usehooks'; import clsx from 'clsx'; import styles from './LogsTerminal.module.scss'; import { useTranslations } from 'next-intl'; @@ -15,8 +16,8 @@ export const LogsTerminal = (props: Props) => { const t = useTranslations(); const { logs, onMaxLinesChange, maxLines } = props; - const [follow, setFollow] = useState(true); - const [wrapLines, setWrapLines] = useState(false); + const [follow, setFollow] = useLocalStorage('logs-follow', true); + const [wrapLines, setWrapLines] = useLocalStorage('logs-wraplines', false); const ref = useRef(null); const lastLogId = logs.length > 0 ? logs.at(-1)?.id : null; diff --git a/src/client/components/ClientOnly/ClientOnly.tsx b/src/client/components/ClientOnly/ClientOnly.tsx new file mode 100644 index 00000000..f166f817 --- /dev/null +++ b/src/client/components/ClientOnly/ClientOnly.tsx @@ -0,0 +1,18 @@ +'use client'; +/** + * Hack to work around next.js hydration + * @see https://github.com/uidotdev/usehooks/issues/218 + */ +import React from 'react'; +import { useIsClient } from '@uidotdev/usehooks'; + +type ClientOnlyProps = { + children: React.ReactNode; +}; + +export const ClientOnly: React.FC = ({ children }) => { + const isClient = useIsClient(); + + // Render children if on client side, otherwise return null + return isClient ? <>{children} : null; +}; diff --git a/src/client/messages/af-ZA.json b/src/client/messages/af-ZA.json index 6e6ed396..87c00f87 100644 --- a/src/client/messages/af-ZA.json +++ b/src/client/messages/af-ZA.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_TITLE": "Install {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "App {id} installed successfully", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_TITLE": "Reset {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Register your account", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_TAB_TITLE": "Security", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Settings", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", diff --git a/src/client/messages/ar-SA.json b/src/client/messages/ar-SA.json index 6e6ed396..87c00f87 100644 --- a/src/client/messages/ar-SA.json +++ b/src/client/messages/ar-SA.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_TITLE": "Install {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "App {id} installed successfully", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_TITLE": "Reset {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Register your account", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_TAB_TITLE": "Security", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Settings", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", diff --git a/src/client/messages/ca-ES.json b/src/client/messages/ca-ES.json index 4846b0e0..2282366e 100644 --- a/src/client/messages/ca-ES.json +++ b/src/client/messages/ca-ES.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Instal·la", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Actualitza", "APP_INSTALL_FORM_TITLE": "Instal·la {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "App {id} installed successfully", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBTITLE": "Tota la informació d'aquesta aplicació es perdrà.", "APP_RESET_FORM_TITLE": "Reset {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Inicia sessió al teu compte", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Torna a l'inici de sessió", "AUTH_RESET_PASSWORD_CANCEL": "Cancel·la la sol·licitud de canvi de contrasenya", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Executa aquesta comanda al teu servidor i després actualitza aquesta pàgina", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "Restableix la contrasenya", "AUTH_RESET_PASSWORD_SUCCESS": "La teva contrasenya s'ha restablert. Ara pots iniciar sessió amb la nova contrasenya. I el correu electrònic {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "La contrasenya s'ha restablert", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Es requereix la teva contrasenya per canviar la configuració de l'autenticació de dos factors.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Escanegeu aquest codi QR amb l'aplicació autenticadora.", "SETTINGS_SECURITY_TAB_TITLE": "Seguretat", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Configuració", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "No s'ha pogut recuperar l'última versió", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "La versió actual ja està actualitzada", diff --git a/src/client/messages/cs-CZ.json b/src/client/messages/cs-CZ.json index 6e6ed396..87c00f87 100644 --- a/src/client/messages/cs-CZ.json +++ b/src/client/messages/cs-CZ.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_TITLE": "Install {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "App {id} installed successfully", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_TITLE": "Reset {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Register your account", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_TAB_TITLE": "Security", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Settings", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", diff --git a/src/client/messages/da-DK.json b/src/client/messages/da-DK.json index 6e6ed396..87c00f87 100644 --- a/src/client/messages/da-DK.json +++ b/src/client/messages/da-DK.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_TITLE": "Install {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "App {id} installed successfully", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_TITLE": "Reset {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Register your account", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_TAB_TITLE": "Security", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Settings", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", diff --git a/src/client/messages/de-DE.json b/src/client/messages/de-DE.json index 36f90fa0..d241140d 100644 --- a/src/client/messages/de-DE.json +++ b/src/client/messages/de-DE.json @@ -3,11 +3,11 @@ "APP_ACTION_INSTALL": "Installieren", "APP_ACTION_LOADING": "Laden", "APP_ACTION_OPEN": "Öffnen", - "APP_ACTION_REMOVE": "Löschen", + "APP_ACTION_REMOVE": "Entfernen", "APP_ACTION_SETTINGS": "Einstellungen", - "APP_ACTION_START": "Start", + "APP_ACTION_START": "Starten", "APP_ACTION_STOP": "Anhalten", - "APP_ACTION_RESTART": "Restart", + "APP_ACTION_RESTART": "Neu starten", "APP_ACTION_UPDATE": "Aktualisieren", "APP_CATEGORY_AI": "KI", "APP_CATEGORY_AUTOMATION": "Automatisierung", @@ -27,22 +27,22 @@ "APP_DETAILS_AUTHOR": "Autor", "APP_DETAILS_BASE_INFO": "Basisinfo", "APP_DETAILS_CATEGORIES_TITLE": "Kategorien", - "APP_DETAILS_CHOOSE_OPEN_METHOD": "Offene Methode wählen", - "APP_DETAILS_DEPRECATED_ALERT_SUBTITLE": "A breaking change in this app prevents it from being updated automatically. You can still use this version and update it manually, but it is recommended to switch to a newer version and migrate your data. You can find an updated version in the app store under the same name.", - "APP_DETAILS_DEPRECATED_ALERT_TITLE": "This app is deprecated", + "APP_DETAILS_CHOOSE_OPEN_METHOD": "Wähle eine Öffnungsmethode aus", + "APP_DETAILS_DEPRECATED_ALERT_SUBTITLE": "Eine grundlegende Änderung in dieser App verhindert eine automatische Aktualisierung. Du kannst diese Version weiterhin verwenden und manuell aktualisieren, aber es wird empfohlen, auf eine neuere Version umzusteigen und deine Daten zu migrieren. Eine aktualisierte Version findest du im App Store unter demselben Namen.", + "APP_DETAILS_DEPRECATED_ALERT_TITLE": "Diese App ist veraltet", "APP_DETAILS_DESCRIPTION": "Beschreibung", "APP_DETAILS_LINK": "Link", "APP_DETAILS_PORT": "Port", "APP_DETAILS_SOURCE_CODE": "Quellcode", "APP_DETAILS_SUPPORTED_ARCH": "Unterstütze Architekturen", - "APP_DETAILS_TITLE": "App details", + "APP_DETAILS_TITLE": "App-Details", "APP_DETAILS_VERSION": "Version", "APP_DETAILS_WEBSITE": "Webseite", - "APP_ERROR_APP_FAILED_TO_INSTALL": "Installieren der App {id} fehlgeschlagen. Siehe die Logs für weitere Informationen", - "APP_ERROR_APP_FAILED_TO_RESET": "Failed to reset app {id}, see logs for more details", + "APP_ERROR_APP_FAILED_TO_INSTALL": "Installieren der App {id} fehlgeschlagen, schau dir die Logs an für weitere Informationen", + "APP_ERROR_APP_FAILED_TO_RESET": "Zurücksetzen der App {id} fehlgeschlagen, schau dir die Logs an für weitere Details", "APP_ERROR_APP_FAILED_TO_START": "Starten der App {id} fehlgeschlagen. Siehe die Logs für weitere Informationen", "APP_ERROR_APP_FAILED_TO_STOP": "Stoppen der App {id} fehlgeschlagen. Siehe die Logs für weitere Informationen", - "APP_ERROR_APP_FAILED_TO_RESTART": "Failed to restart app {id}, see logs for more details", + "APP_ERROR_APP_FAILED_TO_RESTART": "Neustart der App {id} fehlgeschlagen, schau dir die Logs an für weitere Details", "APP_ERROR_APP_FAILED_TO_UNINSTALL": "Deinstallieren der App {id} fehlgeschlagen. Siehe die Logs für weitere Informationen", "APP_ERROR_APP_FAILED_TO_UPDATE": "Aktualisieren der App {id} fehlgeschlagen. Siehe die Logs für weitere Informationen", "APP_ERROR_APP_FORCE_EXPOSED": "App {id} funktioniert nur mit veröffentlichter Domain", @@ -50,57 +50,64 @@ "APP_ERROR_APP_NOT_FOUND": "App {id} nicht gefunden", "APP_ERROR_DOMAIN_ALREADY_IN_USE": "Die Domain {domain} ist bereits in Verwendung von der App {id}", "APP_ERROR_DOMAIN_NOT_VALID": "Die Domain {domain} ist ungültig", - "APP_ERROR_DOMAIN_REQUIRED_IF_EXPOSE_APP": "Eine Domain ist erforderlich, wenn die App veröffentlicht ist", + "APP_ERROR_DOMAIN_REQUIRED_IF_EXPOSE_APP": "Eine Domain ist erforderlich, wenn die App freigegeben ist", "APP_ERROR_INVALID_CONFIG": "Die App {id} hat eine ungültige config.json Datei", - "APP_INSTALL_FORM_CHOOSE_OPTION": "Wählen Sie eine Option...", - "APP_INSTALL_FORM_DISPLAY_ON_GUEST_DASHBOARD": "Display on guest dashboard", - "APP_INSTALL_FORM_DOMAIN_NAME": "Domänenname", - "APP_INSTALL_FORM_DOMAIN_NAME_HINT": "Stellen Sie sicher, dass genau diese Domain einen A-Eintrag enthält, der auf Ihre IP verweist.", + "APP_INSTALL_FORM_CHOOSE_OPTION": "Wähle eine Option...", + "APP_INSTALL_FORM_DISPLAY_ON_GUEST_DASHBOARD": "Anzeige auf dem Gast-Dashboard", + "APP_INSTALL_FORM_DOMAIN_NAME": "Domainname", + "APP_INSTALL_FORM_DOMAIN_NAME_HINT": "Stelle sicher, dass genau diese Domain einen A-Record enthält, der auf deine IP zeigt.", "APP_INSTALL_FORM_ERROR_BETWEEN_LENGTH": "{label} muss zwischen {min} und {max} Zeichen lang sein", "APP_INSTALL_FORM_ERROR_FQDN": "{label} muss eine gültige Domain sein", - "APP_INSTALL_FORM_ERROR_FQDNIP": "{label} muss eine gültige Domain oder IP-Addresse sein", - "APP_INSTALL_FORM_ERROR_INVALID_EMAIL": "{label} muss eine gültige E-Mail Adresse sein", + "APP_INSTALL_FORM_ERROR_FQDNIP": "{label} muss eine gültige Domain oder IP-Adresse sein", + "APP_INSTALL_FORM_ERROR_INVALID_EMAIL": "{label} muss eine gültige E-Mail-Adresse sein", "APP_INSTALL_FORM_ERROR_IP": "{label} muss eine gültige IP-Adresse sein", - "APP_INSTALL_FORM_ERROR_MAX_LENGTH": "{label} muss kleiner als {max} Zeichen sein", + "APP_INSTALL_FORM_ERROR_MAX_LENGTH": "{label} darf nicht mehr als {max} Zeichen enthalten", "APP_INSTALL_FORM_ERROR_MIN_LENGTH": "{label} muss mindestens {min} Zeichen lang sein", - "APP_INSTALL_FORM_ERROR_NUMBER": "{label} muss eine Nummer sein", + "APP_INSTALL_FORM_ERROR_NUMBER": "{label} muss eine Zahl sein", "APP_INSTALL_FORM_ERROR_REGEX": "{label} stimmt nicht mit dem Format {pattern} überein", "APP_INSTALL_FORM_ERROR_REQUIRED": "{label} ist erforderlich", "APP_INSTALL_FORM_ERROR_URL": "{label} muss eine gültige URL sein", - "APP_INSTALL_FORM_EXPOSE_APP": "Expose app on the internet", - "APP_INSTALL_FORM_OPEN_PORT": "Open port", - "APP_INSTALL_FORM_OPEN_PORT_HINT": "Open a port on the host? This app will be accessible at {internalIp}:{port}. (Easiest but less secure)", - "APP_INSTALL_FORM_EXPOSE_LOCAL": "Expose app on local network", - "APP_INSTALL_FORM_EXPOSE_LOCAL_HINT": "Expose the app on the local network? This app will be accessible at {appId}.{domain}. (Visit settings page to setup your local domain)", - "APP_INSTALL_FORM_RESET": "Reset app", + "APP_INSTALL_FORM_EXPOSE_APP": "App im Internet verfügbar machen", + "APP_INSTALL_FORM_OPEN_PORT": "Port öffnen", + "APP_INSTALL_FORM_OPEN_PORT_HINT": "Einen Port auf dem Host öffnen? Diese App wird unter {internalIp}:{port} erreichbar sein. (Einfachste, aber weniger sichere Methode)", + "APP_INSTALL_FORM_EXPOSE_LOCAL": "Die App im lokalen Netzwerk freigeben", + "APP_INSTALL_FORM_EXPOSE_LOCAL_HINT": "Die App im lokalen Netzwerk freigeben? Diese App wird unter {appId}.{domain} erreichbar sein. (Besuche die Einstellungsseite, um deine lokale Domain einzurichten)", + "APP_INSTALL_FORM_RESET": "App zurücksetzen", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Installieren", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Aktualisieren", "APP_INSTALL_FORM_TITLE": "{name} installieren", + "APP_INSTALL_FORM_GENERAL": "Allgemein", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse Proxy", "APP_INSTALL_SUCCESS": "App- {id} erfolgreich installiert", - "APP_RESET_FORM_SUBMIT": "Reset", - "APP_RESET_FORM_SUBTITLE": "Alle Daten für diese Anwendung werden gelöscht.", - "APP_RESET_FORM_TITLE": "Reset {name} ?", - "APP_RESET_FORM_WARNING": "Sind Sie sicher? Dieser Schritt kann nicht rückgängig gemacht werden.", - "APP_RESET_SUCCESS": "App {id} reset successfully", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEU", + "APP_RESET_FORM_SUBMIT": "Zurücksetzen", + "APP_RESET_FORM_SUBTITLE": "Alle Daten für diese App gehen verloren.", + "APP_RESET_FORM_TITLE": "{name} zurücksetzen?", + "APP_RESET_FORM_WARNING": "Bist du sicher? Diese Aktion kann nicht rückgängig gemacht werden.", + "APP_RESET_SUCCESS": "App {id} erfolgreich zurückgesetzt", "APP_START_SUCCESS": "App {id} erfolgreich gestartet", "APP_STATUS_INSTALLING": "Installieren", "APP_STATUS_MISSING": "Fehlt", - "APP_STATUS_RESETTING": "Resetting", + "APP_STATUS_RESETTING": "Wird zurückgesetzt", "APP_STATUS_RUNNING": "Aktiv", "APP_STATUS_STARTING": "Startet", - "APP_STATUS_STOPPED": "Angehalten", + "APP_STATUS_STOPPED": "Gestoppt", "APP_STATUS_STOPPING": "Stoppen", - "APP_STATUS_RESTARTING": "Restarting", + "APP_STATUS_RESTARTING": "Wird neu gestartet", "APP_STATUS_UNINSTALLING": "Deinstallieren", "APP_STATUS_UPDATING": "Aktualisieren", "APP_STOP_FORM_SUBMIT": "Anhalten", "APP_STOP_FORM_SUBTITLE": "Alle Daten werden aufbewahrt", "APP_STOP_FORM_TITLE": "{name} anhalten?", "APP_STOP_SUCCESS": "App {id} erfolgreich angehalten", - "APP_RESTART_FORM_SUBMIT": "Restart", - "APP_RESTART_FORM_SUBTITLE": "All data will be retained", - "APP_RESTART_FORM_TITLE": "Restart {name} ?", - "APP_RESTART_SUCCESS": "App {id} restarted successfully", + "APP_RESTART_FORM_SUBMIT": "Neu starten", + "APP_RESTART_FORM_SUBTITLE": "Alle Daten bleiben erhalten", + "APP_RESTART_FORM_TITLE": "{name} neu starten?", + "APP_RESTART_SUCCESS": "App {id} erfolgreich neu gestartet", "APP_STORE_CATEGORY_PLACEHOLDER": "Kategorie wählen", "APP_STORE_NO_RESULTS": "Keine App gefunden", "APP_STORE_NO_RESULTS_SUBTITLE": "Versuche, deine Suche zu verbessern", @@ -112,7 +119,7 @@ "APP_UNINSTALL_FORM_WARNING": "Sind Sie sicher? Dieser Schritt kann nicht rückgängig gemacht werden.", "APP_UNINSTALL_SUCCESS": "App {id} erfolgreich deinstalliert", "APP_UPDATE_CONFIG_SUCCESS": "App-Konfiguration erfolgreich aktualisiert. Starte die App neu, um die Änderungen zu übernehmen", - "APP_UPDATE_ERROR_MIN_TIPI_VERSION": "App {id} update requires Tipi version {minVersion} or higher. Please update your instance.", + "APP_UPDATE_ERROR_MIN_TIPI_VERSION": "Update der App {id} erfordert Tipi-Version {minVersion} oder höher. Bitte aktualisiere deine Instanz.", "APP_UPDATE_FORM_SUBMIT": "Aktualisieren", "APP_UPDATE_FORM_SUBTITLE_1": "App auf die neueste Version aktualisieren:", "APP_UPDATE_FORM_SUBTITLE_2": "Dies wird Ihre benutzerdefinierte Konfiguration zurücksetzen (z.B. Änderungen in docker-compose.yml).", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Ihr Konto erstellen", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Zurück zur Anmeldung", "AUTH_RESET_PASSWORD_CANCEL": "Passwortänderung abbrechen", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Führen Sie diesen Befehl auf Ihrem Server aus und aktualisieren Sie die Seite", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Um zu beginnen, führe diesen Befehl auf deinem Server aus und aktualisiere dann diese Seite. Falls du das bereits zuvor getan hast, könnte die Anforderung zum Zurücksetzen des Passworts abgelaufen sein. In diesem Fall versuche es bitte erneut", "AUTH_RESET_PASSWORD_SUBMIT": "Zurücksetzen", "AUTH_RESET_PASSWORD_SUCCESS": "Ihr Passwort wurde gespeichert. Sie können sich nun mit Ihrem neuen Passwort und ihrer E-Mail {email} anmelden", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Passwort zurückgesetzt", @@ -165,18 +172,18 @@ "AUTH_TOTP_INSTRUCTIONS": "Code aus der Authenticator-App eingeben", "AUTH_TOTP_SUBMIT": "Bestätigen", "AUTH_TOTP_TITLE": "Zwei-Faktor Authentifizierung", - "COMMON_CLOSE": "Close", + "COMMON_CLOSE": "Schließen", "DASHBOARD_CPU_SUBTITLE": "Apps deinstallieren um Last zu reduzieren", "DASHBOARD_CPU_TITLE": "CPU Last", "DASHBOARD_DISK_SPACE_SUBTITLE": "Wird von {total} GB verwendet", "DASHBOARD_DISK_SPACE_TITLE": "Speicherplatz", "DASHBOARD_MEMORY_TITLE": "Benutzter Speicher", "DASHBOARD_TITLE": "Dashboard", - "DASHBOARD_IP_WARNING_TITLE": "Insecure configuration", - "DASHBOARD_IP_WARNING": "Warning, you might be at risk! it looks like you are accessing your instance through a public IP address. This makes your dashboard and all apps that you install vulnerable to attackers", - "GUEST_DASHBOARD": "Guest dashboard", - "GUEST_DASHBOARD_NO_APPS": "No apps to display", - "GUEST_DASHBOARD_NO_APPS_SUBTITLE": "Ask your administrator to add apps to the guest dashboard or login to see your apps.", + "DASHBOARD_IP_WARNING_TITLE": "Unsichere Konfiguration", + "DASHBOARD_IP_WARNING": "Warnung, du könntest gefährdet sein! Es sieht so aus, als würdest du auf deine Instanz über eine öffentliche IP-Adresse zugreifen. Dies macht dein Dashboard und alle installierten Apps anfällig für Angreifer", + "GUEST_DASHBOARD": "Gast-Dashboard", + "GUEST_DASHBOARD_NO_APPS": "Keine Apps anzuzeigen", + "GUEST_DASHBOARD_NO_APPS_SUBTITLE": "Bitte deinen Administrator, Apps zum Gast-Dashboard hinzuzufügen, oder melde dich an, um deine Apps anzuzeigen.", "HEADER_APPS": "Meine Apps", "HEADER_APP_STORE": "App Store", "HEADER_DARK_MODE": "Dunkler Modus", @@ -188,35 +195,35 @@ "HEADER_SOURCE_CODE": "Quellcode", "HEADER_SPONSOR": "Sponsor", "HEADER_UPDATE_AVAILABLE": "Aktualisierung verfügbar", - "INTERNAL_SERVER_ERROR": "Internal server error", - "LINKS_ADD_SUBMIT": "Submit", - "LINKS_ADD_SUBTITLE": "Add external link to the dashboard", - "LINKS_ADD_SUCCESS": "Link added succesfully", - "LINKS_ADD_TITLE": "Add external link", - "LINKS_DELETE_CONTEXT_MENU": "Delete", - "LINKS_DELETE_SUBMIT": "Delete", - "LINKS_DELETE_SUBTITLE": "Are you sure you want to delete this external link?", - "LINKS_DELETE_SUCCESS": "Link deleted succesfully", - "LINKS_DELETE_TITLE": "Delete external link", - "LINKS_EDIT_CONTEXT_MENU": "Edit", - "LINKS_EDIT_SUBMIT": "Save", - "LINKS_EDIT_SUCCESS": "Link edited succesfully", - "LINKS_EDIT_TITLE": "Edit link", + "INTERNAL_SERVER_ERROR": "Interner Serverfehler", + "LINKS_ADD_SUBMIT": "Bestätigen", + "LINKS_ADD_SUBTITLE": "Externen Link zum Dashboard hinzufügen", + "LINKS_ADD_SUCCESS": "Link erfolgreich hinzugefügt", + "LINKS_ADD_TITLE": "Externen Link hinzufügen", + "LINKS_DELETE_CONTEXT_MENU": "Löschen", + "LINKS_DELETE_SUBMIT": "Löschen", + "LINKS_DELETE_SUBTITLE": "Bist du sicher, dass du diesen externen Link entfernen willst?", + "LINKS_DELETE_SUCCESS": "Link erfolgreich gelöscht", + "LINKS_DELETE_TITLE": "Externen Link löschen", + "LINKS_EDIT_CONTEXT_MENU": "Bearbeiten", + "LINKS_EDIT_SUBMIT": "Speichern", + "LINKS_EDIT_SUCCESS": "Link erfolgreich bearbeitet", + "LINKS_EDIT_TITLE": "Link bearbeiten", "LINKS_FORM_ICON_PLACEHOLDER": "Link logo URL", - "LINKS_FORM_ICON_URL": "Icon URL", - "LINKS_FORM_LINK_TITLE": "Link title", - "LINKS_FORM_LINK_URL": "Link URL", - "LINKS_FROM_LINK_DESCRIPTION": "Link Description", - "MY_APPS_DEPRECATED": "This app is deprecated", + "LINKS_FORM_ICON_URL": "Icon-URL", + "LINKS_FORM_LINK_TITLE": "Linktitel", + "LINKS_FORM_LINK_URL": "Link-URL", + "LINKS_FROM_LINK_DESCRIPTION": "Linkbeschreibung", + "MY_APPS_DEPRECATED": "Diese App ist veraltet", "MY_APPS_EMPTY_ACTION": "Zum App Store", "MY_APPS_EMPTY_SUBTITLE": "Installiere eine App aus dem App Store, um loszulegen", "MY_APPS_EMPTY_TITLE": "Keine Apps installiert", "MY_APPS_TITLE": "Meine Apps", - "MY_APPS_UPDATE_ALL_FORM_SUBMIT": "Update all", - "MY_APPS_UPDATE_ALL_FORM_SUBTITLE_1": "Do you want to update all your apps to the latest version?", - "MY_APPS_UPDATE_ALL_FORM_SUBTITLE_2": "This will update all your apps to the latest version. Make sure you've read the release notes of the apps and you've backed up your app data.", - "MY_APPS_UPDATE_ALL_FORM_TITLE": "Update all apps", - "MY_APPS_UPDATE_ALL_IN_PROGRESS": "Updating all apps", + "MY_APPS_UPDATE_ALL_FORM_SUBMIT": "Alle aktualisieren", + "MY_APPS_UPDATE_ALL_FORM_SUBTITLE_1": "Möchtest du alle deine Apps auf die neueste Version aktualisieren?", + "MY_APPS_UPDATE_ALL_FORM_SUBTITLE_2": "Dies wird all deine Apps auf die neueste Version aktualisieren. Stelle sicher, dass du die Release Notes der Apps gelesen und deine App-Daten gesichert hast.", + "MY_APPS_UPDATE_ALL_FORM_TITLE": "Alle Apps aktualisieren", + "MY_APPS_UPDATE_ALL_IN_PROGRESS": "Alle Apps werden aktualisiert", "MY_APPS_UPDATE_AVAILABLE": "Aktualisierung verfügbar", "RUNTIPI": "Runtipi", "SERVER_ERROR_INVALID_LOCALE": "Ungültige Region", @@ -231,18 +238,18 @@ "SETTINGS_ACTIONS_STAY_UP_TO_DATE": "Bleiben Sie auf dem Laufenden mit der neuesten Version von Tipi", "SETTINGS_ACTIONS_TAB_TITLE": "Aktionen", "SETTINGS_ACTIONS_TITLE": "Aktionen", - "SETTINGS_GENERAL_ALLOW_AUTO_THEMES": "Allow auto themes", - "SETTINGS_GENERAL_ALLOW_AUTO_THEMES_HINT": "Be surprised by themes that change automatically based on the time of the year.", - "SETTINGS_GENERAL_ALLOW_ERROR_MONITORING": "Allow anonymous error monitoring", - "SETTINGS_GENERAL_ALLOW_ERROR_MONITORING_HINT": "Error monitoring is used to track errors and improve Tipi. Keep this option enabled to help us improve Tipi.", + "SETTINGS_GENERAL_ALLOW_AUTO_THEMES": "Automatische Themes zulassen", + "SETTINGS_GENERAL_ALLOW_AUTO_THEMES_HINT": "Lass dich von Themes überraschen, die sich automatisch je nach Jahreszeit ändern.", + "SETTINGS_GENERAL_ALLOW_ERROR_MONITORING": "Anonymes Fehler-Monitoring zulassen", + "SETTINGS_GENERAL_ALLOW_ERROR_MONITORING_HINT": "Fehler-Monitoring wird verwendet, um Fehler zu tracken und Tipi zu verbessern. Lass diese Option aktiviert, um uns bei der Verbesserung von Tipi zu unterstützen.", "SETTINGS_GENERAL_APPS_REPO": "App-Repo-URL", "SETTINGS_GENERAL_APPS_REPO_HINT": "URL zum App-Repository.", "SETTINGS_GENERAL_DNS_IP": "DNS IP", "SETTINGS_GENERAL_DOMAIN_NAME": "Domänenname", "SETTINGS_GENERAL_DOMAIN_NAME_HINT": "Stellen Sie sicher, dass genau diese Domain einen A-Eintrag enthält, der auf Ihre IP verweist.", "SETTINGS_GENERAL_DOWNLOAD_CERTIFICATE": "Zertifikat herunterladen", - "SETTINGS_GENERAL_GUEST_DASHBOARD": "Enable guest dashboard", - "SETTINGS_GENERAL_GUEST_DASHBOARD_HINT": "This will allow non-authenticated users to see a limited dashboard and easily access the running apps on your instance.", + "SETTINGS_GENERAL_GUEST_DASHBOARD": "Gast-Dashboard aktivieren", + "SETTINGS_GENERAL_GUEST_DASHBOARD_HINT": "Dies ermöglicht nicht authentifizierten Benutzern, ein begrenztes Dashboard zu sehen und einfach auf die laufenden Apps auf deiner Instanz zuzugreifen.", "SETTINGS_GENERAL_INTERNAL_IP": "Interne IP", "SETTINGS_GENERAL_INTERNAL_IP_HINT": "IP-Adresse, die Ihr Server abhört.", "SETTINGS_GENERAL_INVALID_DOMAIN": "Ungültige Domain", @@ -251,10 +258,10 @@ "SETTINGS_GENERAL_LANGUAGE": "Sprache", "SETTINGS_GENERAL_LANGUAGE_HELP_TRANSLATE": "Beim Übersetzen helfen", "SETTINGS_GENERAL_LOCAL_DOMAIN": "Local domain", - "SETTINGS_GENERAL_LOCAL_DOMAIN_HINT": "Domain name used for accessing apps in your local network. Your apps will be accessible at app-name.local-domain.", + "SETTINGS_GENERAL_LOCAL_DOMAIN_HINT": "Domainname für den Zugriff auf Apps in deinem lokalen Netzwerk. Deine Apps werden unter app-name.local-domain erreichbar sein.", "SETTINGS_GENERAL_SETTINGS_UPDATED": "Einstellungen aktualisiert. Starten Sie Ihre Instanz neu, um die Einstellungen zu übernehmen.", "SETTINGS_GENERAL_STORAGE_PATH": "Speicherpfad", - "SETTINGS_GENERAL_STORAGE_PATH_HINT": "Path to the storage directory. Make sure it is an absolute path and that it exists.", + "SETTINGS_GENERAL_STORAGE_PATH_HINT": "Pfad zum Speicherverzeichnis. Stelle sicher, dass es ein absoluter Pfad ist und er existiert.", "SETTINGS_GENERAL_SUBMIT": "Einstellungen aktualisieren", "SETTINGS_GENERAL_SUBTITLE": "Dadurch wird Ihre Datei settings.json aktualisiert. Stellen Sie sicher, dass Sie wissen, was Sie tun, bevor Sie diese Werte aktualisieren.", "SETTINGS_GENERAL_TAB_TITLE": "Einstellungen", @@ -265,15 +272,15 @@ "SETTINGS_SECURITY_2FA_SUBTITLE": "Zwei-Faktor Authentifizierung (2FA) fügt deinem Konto eine weitere Sicherheitsebene zu.", "SETTINGS_SECURITY_2FA_SUBTITLE_2": "Wenn aktiviert, werden Sie bei der Anmeldung aufgefordert, einen Code aus ihrer Authentifizierungs-App einzugeben.", "SETTINGS_SECURITY_2FA_TITLE": "Zwei-Faktor Authentifizierung", - "SETTINGS_SECURITY_CHANGE_PASSWORD_SUBTITLE": "Changing your password will log you out of all devices.", + "SETTINGS_SECURITY_CHANGE_PASSWORD_SUBTITLE": "Wenn du dein Passwort änderst, wirst du von allen Geräten abgemeldet.", "SETTINGS_SECURITY_CHANGE_PASSWORD_TITLE": "Passwort ändern", "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_INVALID_USERNAME": "Muss eine gültige E-Mail Adresse sein", "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_NEW_USERNAME": "Neuer Benutzername", "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_PASSWORD": "Passwort", - "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_PASSWORD_NEEDED_HINT": "Your password is required to change your username.", + "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_PASSWORD_NEEDED_HINT": "Dein Passwort wird benötigt, um deinen Benutzernamen zu ändern.", "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_SUBMIT": "Benutzername ändern", - "SETTINGS_SECURITY_CHANGE_USERNAME_SUBTITLE": "Changing your username will log you out of all devices.", - "SETTINGS_SECURITY_CHANGE_USERNAME_SUCCESS": "Username changed successfully", + "SETTINGS_SECURITY_CHANGE_USERNAME_SUBTITLE": "Wenn du deinen Benutzernamen änderst, wirst du von allen Geräten abgemeldet.", + "SETTINGS_SECURITY_CHANGE_USERNAME_SUCCESS": "Benutzername erfolgreich geändert", "SETTINGS_SECURITY_CHANGE_USERNAME_TITLE": "Benutzername ändern", "SETTINGS_SECURITY_DISABLE_2FA": "Zwei-Faktor-Authentifizierung deaktivieren", "SETTINGS_SECURITY_ENABLE_2FA": "Zwei-Faktor-Authentifizierung aktivieren", @@ -291,10 +298,11 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Ihr Passwort wird benötigt, um die Zwei-Faktor-Authentifizierungseinstellungen zu ändern.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scannen Sie diesen QR-Code mit Ihrer Authentifizierungs-App.", "SETTINGS_SECURITY_TAB_TITLE": "Sicherheit", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Einstellungen", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Konnte aktuellste Version nicht abfragen", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Die aktuelle Version ist bereits auf dem neuesten Stand", "SYSTEM_ERROR_DEMO_MODE_LIMIT": "Im Demo-Modus können nur 6 Apps installiert werden. Bitte deinstallieren Sie eine andere App, um eine neue zu installieren.", "SYSTEM_ERROR_MAJOR_VERSION_UPDATE": "Die Hauptversion hat sich geändert. Bitte aktualisieren Sie manuell. (Anleitung auf GitHub)", - "SYSTEM_ERROR_YOU_MUST_BE_LOGGED_IN": "You must be logged in to perform this action" + "SYSTEM_ERROR_YOU_MUST_BE_LOGGED_IN": "Du musst angemeldet sein, um diese Aktion auszuführen" } diff --git a/src/client/messages/el-GR.json b/src/client/messages/el-GR.json index 2fb05870..efc5c4e1 100644 --- a/src/client/messages/el-GR.json +++ b/src/client/messages/el-GR.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Εγκατάσταση", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Ενημέρωση", "APP_INSTALL_FORM_TITLE": "Εγκατάσταση {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "App {id} installed successfully", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBTITLE": "Όλα τα δεδομένα αυτής της εφαρμογής θα χαθούν.", "APP_RESET_FORM_TITLE": "Reset {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Εγγραφή του λογαριασμού σας", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Επιστροφή στη σελίδα εισόδου", "AUTH_RESET_PASSWORD_CANCEL": "Ακύρωση αιτήματος αλλαγής κωδικού πρόσβασης", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Εκτελέστε αυτήν την εντολή στο διακομιστή σας και στη συνέχεια ανανεώστε αυτή τη σελίδα", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "Επαναφορά κωδικού πρόσβασης", "AUTH_RESET_PASSWORD_SUCCESS": "Ο κωδικός σας έχει επαναφερθεί. Μπορείτε τώρα να συνδεθείτε με τον καινούριο κωδικό πρόσβασης και τη διεύθυνση ηλεκτρονικού ταχυδρομείου {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Επαναφορά κωδικού πρόσβασης", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Απαιτείται κωδικός πρόσβασης για να αλλάξετε τις ρυθμίσεις ελέγχου ταυτότητας δύο βημάτων.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Σαρώστε αυτόν τον κώδικα QR με την εφαρμογή επαλήθευσης.", "SETTINGS_SECURITY_TAB_TITLE": "Ασφάλεια", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Ρυθμίσεις", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Αδυναμία λήψης της τελευταίας έκδοσης", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Η τρέχουσα έκδοση είναι ενημερωμένη", diff --git a/src/client/messages/en-US.json b/src/client/messages/en-US.json index 6e6ed396..87c00f87 100644 --- a/src/client/messages/en-US.json +++ b/src/client/messages/en-US.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_TITLE": "Install {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "App {id} installed successfully", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_TITLE": "Reset {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Register your account", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_TAB_TITLE": "Security", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Settings", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", diff --git a/src/client/messages/es-ES.json b/src/client/messages/es-ES.json index 7a3bdd8c..f170f33e 100644 --- a/src/client/messages/es-ES.json +++ b/src/client/messages/es-ES.json @@ -76,11 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Instalar", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Actualizar", "APP_INSTALL_FORM_TITLE": "Instalar {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Proxy inverso", "APP_INSTALL_SUCCESS": "La aplicación {id} se instaló correctamente", "APP_LOGS_TAB_FOLLOW": "Seguir trazas", - "APP_LOGS_TAB_MAX_LINES": "Maximo numero de líneas:", + "APP_LOGS_TAB_MAX_LINES": "Líneas máximas:", "APP_LOGS_TAB_TITLE": "Trazas", "APP_LOGS_TAB_WRAP_LINES": "Ajustar líneas", + "APP_NEW": "NUEVA", "APP_RESET_FORM_SUBMIT": "Restablecer", "APP_RESET_FORM_SUBTITLE": "Todos los datos de esta aplicación se perderán.", "APP_RESET_FORM_TITLE": "Restablecer {name}?", @@ -161,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Registre su cuenta", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Volver al inicio de sesión", "AUTH_RESET_PASSWORD_CANCEL": "Cancelar cambio de contraseña", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Ejecuta este comando en tu servidor y luego actualiza esta página", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Ejecuta este comando en el servidor y recarga la página. Si ya has hecho esto previamente, es posible que la solicitud haya caducado. En ese caso, inténtelo de nuevo por favor", "AUTH_RESET_PASSWORD_SUBMIT": "Restablecer contraseña", "AUTH_RESET_PASSWORD_SUCCESS": "Tu contraseña ha sido restablecida. Ahora puedes iniciar sesión con tu nueva contraseña. Y tu correo electrónico es {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Restablecimiento de contraseña", @@ -295,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Tu contraseña es necesaria para cambiar la configuración de autenticación de dos factores.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Escanea este código QR con tu aplicación de autenticación.", "SETTINGS_SECURITY_TAB_TITLE": "Seguridad", + "SETTINGS_LOGS_TAB_TITLE": "Trazas", "SETTINGS_TITLE": "Configuración", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "No se pudo obtener la última versión", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "La versión ya está actualizada", diff --git a/src/client/messages/fi-FI.json b/src/client/messages/fi-FI.json index 6e6ed396..87c00f87 100644 --- a/src/client/messages/fi-FI.json +++ b/src/client/messages/fi-FI.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_TITLE": "Install {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "App {id} installed successfully", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_TITLE": "Reset {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Register your account", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_TAB_TITLE": "Security", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Settings", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", diff --git a/src/client/messages/fr-FR.json b/src/client/messages/fr-FR.json index 6fc5c0a1..ca2095fc 100644 --- a/src/client/messages/fr-FR.json +++ b/src/client/messages/fr-FR.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Installer", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Mettre à jour", "APP_INSTALL_FORM_TITLE": "Installer {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "Application {id} installée avec succès", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NOUVEAU", "APP_RESET_FORM_SUBMIT": "Réinitialiser", "APP_RESET_FORM_SUBTITLE": "Toutes les données de cette application seront perdues.", "APP_RESET_FORM_TITLE": "Réinitialiser {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Créez votre compte", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Retour au login", "AUTH_RESET_PASSWORD_CANCEL": "Annuler la demande de changement de mot de passe", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Exécutez cette commande sur votre serveur, puis rafraîchissez cette page", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Pour commencer, exécutez cette commande sur votre serveur puis actualisez cette page. Si vous l'avez déjà fait, la demande de réinitialisation du mot de passe peut avoir expiré. Dans ce cas, veuillez réessayer.", "AUTH_RESET_PASSWORD_SUBMIT": "Réinitialiser", "AUTH_RESET_PASSWORD_SUCCESS": "Votre mot de passe a été réinitialisé. Vous pouvez maintenant vous connecter avec votre nouveau mot de passe. Et votre e-mail {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Mot de passe réinitialisé", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Votre mot de passe est requis pour modifier les paramètres d'authentification à deux facteurs.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scannez ce QR code avec votre application d'authentification.", "SETTINGS_SECURITY_TAB_TITLE": "Sécurité", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Paramètres", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Impossible d'obtenir la dernière version", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "La version actuelle est déjà à jour", diff --git a/src/client/messages/he-IL.json b/src/client/messages/he-IL.json index 6e6ed396..87c00f87 100644 --- a/src/client/messages/he-IL.json +++ b/src/client/messages/he-IL.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_TITLE": "Install {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "App {id} installed successfully", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_TITLE": "Reset {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Register your account", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_TAB_TITLE": "Security", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Settings", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", diff --git a/src/client/messages/hu-HU.json b/src/client/messages/hu-HU.json index f67b7f82..a5ce905f 100644 --- a/src/client/messages/hu-HU.json +++ b/src/client/messages/hu-HU.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Telepítés", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Frissítés", "APP_INSTALL_FORM_TITLE": "{name} telepítése", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "A(z) {id} alkalmazás sikeresen telepítve", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Alaphelyzetbe állítás", "APP_RESET_FORM_SUBTITLE": "Az alkalmazás összes adata elveszik.", "APP_RESET_FORM_TITLE": "Alaphelyzetbe állítod a következőt: {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Fiók regisztráció", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Vissza a belépéshez", "AUTH_RESET_PASSWORD_CANCEL": "Jelszómódosítási kérés visszavonása", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Futtassa ezt a parancsot a szerverén, majd frissítse ezt az oldalt", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "Jelszó visszaállítása", "AUTH_RESET_PASSWORD_SUCCESS": "A jelszava vissza lett állítva. Most már bejelentkezhet az új jelszavával. Ez az e-mail címe {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Jelszó visszaállítása", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "A kétlépcsős hitelesítési beállítások megváltoztatásához szükséges a jelszavad.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Ezt a QR kódot kell beolvasni a hitelesítő alkalmazással.", "SETTINGS_SECURITY_TAB_TITLE": "Biztonság", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Beállítások", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Nem sikerült letölteni a legújabb verziót", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "A jelenlegi verzió már naprakész", diff --git a/src/client/messages/it-IT.json b/src/client/messages/it-IT.json index 65f9d2a3..12239a71 100644 --- a/src/client/messages/it-IT.json +++ b/src/client/messages/it-IT.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Installa", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Aggiorna", "APP_INSTALL_FORM_TITLE": "Installa {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "App {id} installata con successo", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBTITLE": "Tutti i dati relativi a questa app verranno persi.", "APP_RESET_FORM_TITLE": "Reset {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Crea un nuovo account", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Torna alla pagina di login", "AUTH_RESET_PASSWORD_CANCEL": "Annulla richiesta di cambio password", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Esegui questo comando sul tuo server e poi aggiorna questa pagina", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "Resetta password", "AUTH_RESET_PASSWORD_SUCCESS": "La tua password è stata resettata. Ora puoi accedere con la tua nuova password. E la tua email {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Resettata la password", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "La tua password è richiesta per cambiare le impostazioni relative all'autenticazione a due fattori.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scansiona questo codice QR con la tua app di autenticazione.", "SETTINGS_SECURITY_TAB_TITLE": "Sicurezza", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Impostazioni", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Impossibile ottenere l'ultima versione", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "La versione corrente è già la più recente", diff --git a/src/client/messages/ja-JP.json b/src/client/messages/ja-JP.json index 0fefaade..d6c4b8a1 100644 --- a/src/client/messages/ja-JP.json +++ b/src/client/messages/ja-JP.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "インストール", "APP_INSTALL_FORM_SUBMIT_UPDATE": "更新", "APP_INSTALL_FORM_TITLE": "{name} をインストール", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "App {id} installed successfully", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBTITLE": "このアプリのすべてのデータが失われます。", "APP_RESET_FORM_TITLE": "Reset {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "アカウントを作成", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "ログインページへ戻る", "AUTH_RESET_PASSWORD_CANCEL": "パスワード変更リクエストをキャンセルする", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "サーバーでこのコマンドを実行してから、このページを更新してください", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "パスワードをリセット", "AUTH_RESET_PASSWORD_SUCCESS": "パスワードがリセットされました。新しいパスワードでログインできるようになりました。そして、メールアドレス {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "パスワードをリセットする", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "二段階認証の設定を変更するにはパスワードが必要です。", "SETTINGS_SECURITY_SCAN_QR_CODE": "認証アプリでQRコードをスキャンして下さい。", "SETTINGS_SECURITY_TAB_TITLE": "セキュリティ", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "設定", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "最新バージョンを取得できませんでした", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "現在のバージョンは既に最新です", diff --git a/src/client/messages/ko-KR.json b/src/client/messages/ko-KR.json index 6e6ed396..87c00f87 100644 --- a/src/client/messages/ko-KR.json +++ b/src/client/messages/ko-KR.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_TITLE": "Install {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "App {id} installed successfully", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_TITLE": "Reset {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Register your account", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_TAB_TITLE": "Security", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Settings", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", diff --git a/src/client/messages/nl-NL.json b/src/client/messages/nl-NL.json index abb1dc20..61b679ab 100644 --- a/src/client/messages/nl-NL.json +++ b/src/client/messages/nl-NL.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_TITLE": "Install {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "App {id} installed successfully", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_TITLE": "Reset {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Register your account", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_TAB_TITLE": "Security", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Settings", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", diff --git a/src/client/messages/no-NO.json b/src/client/messages/no-NO.json index 6e6ed396..87c00f87 100644 --- a/src/client/messages/no-NO.json +++ b/src/client/messages/no-NO.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_TITLE": "Install {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "App {id} installed successfully", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_TITLE": "Reset {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Register your account", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_TAB_TITLE": "Security", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Settings", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", diff --git a/src/client/messages/pl-PL.json b/src/client/messages/pl-PL.json index c4f3b0c9..b7880824 100644 --- a/src/client/messages/pl-PL.json +++ b/src/client/messages/pl-PL.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Zainstaluj", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Aktualizuj", "APP_INSTALL_FORM_TITLE": "Zainstaluj {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "App {id} installed successfully", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBTITLE": "Wszystkie dane tej aplikacji zostaną utracone.", "APP_RESET_FORM_TITLE": "Reset {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Register your account", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Uruchom to polecenie na swoim serwerze, a następnie odśwież tę stronę", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "Zresetuj hasło", "AUTH_RESET_PASSWORD_SUCCESS": "Twoje hasło zostało zresetowane. Możesz teraz zalogować się przy użyciu nowego hasła. I e-mail {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Resetowanie hasła", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Twoje hasło jest wymagane do zmiany ustawień weryfikacji dwuetapowej.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Zeskanuj ten kod QR za pomocą aplikacji uwierzytelniającej.", "SETTINGS_SECURITY_TAB_TITLE": "Bezpieczeństwo", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Ustawienia", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Nie udało się pobrać najnowszej wersji", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Bieżąca wersja jest już aktualna", diff --git a/src/client/messages/pt-BR.json b/src/client/messages/pt-BR.json index 48f56cbb..f141575c 100644 --- a/src/client/messages/pt-BR.json +++ b/src/client/messages/pt-BR.json @@ -59,28 +59,35 @@ "APP_INSTALL_FORM_ERROR_BETWEEN_LENGTH": "{label} Deve ter entre {min} e {max} caracteres", "APP_INSTALL_FORM_ERROR_FQDN": "{label} Deve ser um domínio válido", "APP_INSTALL_FORM_ERROR_FQDNIP": "{label} Deve ser um domínio ou endereço IP válido", - "APP_INSTALL_FORM_ERROR_INVALID_EMAIL": "Deve ser um endereço de e-mail válido", - "APP_INSTALL_FORM_ERROR_IP": "O endereço IP não é válido", + "APP_INSTALL_FORM_ERROR_INVALID_EMAIL": "{label} Deve ser um endereço de e-mail válido", + "APP_INSTALL_FORM_ERROR_IP": "{label} O endereço IP não é válido", "APP_INSTALL_FORM_ERROR_MAX_LENGTH": "{label} Deve ter entre {min} e {max} caracteres", - "APP_INSTALL_FORM_ERROR_MIN_LENGTH": "{label} deve ter pelo menos {min} caracteres", - "APP_INSTALL_FORM_ERROR_NUMBER": "{label} deve ser um número", - "APP_INSTALL_FORM_ERROR_REGEX": "{label} deve corresponder ao padrão {pattern}", + "APP_INSTALL_FORM_ERROR_MIN_LENGTH": "{label} Deve ter pelo menos {min} caracteres", + "APP_INSTALL_FORM_ERROR_NUMBER": "{label} Deve ser um número", + "APP_INSTALL_FORM_ERROR_REGEX": "{label} Deve corresponder ao padrão {pattern}", "APP_INSTALL_FORM_ERROR_REQUIRED": "{label} É obrigatório", "APP_INSTALL_FORM_ERROR_URL": "{label} Deve ser um endereço válido", "APP_INSTALL_FORM_EXPOSE_APP": "Tornar aplicação pública", "APP_INSTALL_FORM_OPEN_PORT": "Abrir porta", - "APP_INSTALL_FORM_OPEN_PORT_HINT": "Abrir uma porta no host? Este aplicativo será acessível em {internalIp}:{port}. (Mais fácil, mas menos seguro)", - "APP_INSTALL_FORM_EXPOSE_LOCAL": "Expor o aplicativo na rede local", + "APP_INSTALL_FORM_OPEN_PORT_HINT": "Abrir uma porta nesse endereço? Este aplicativo será acessível em {internalIp}:{port}. (Mais fácil, mas menos seguro)", + "APP_INSTALL_FORM_EXPOSE_LOCAL": "Tornar acessível apenas na rede local", "APP_INSTALL_FORM_EXPOSE_LOCAL_HINT": "Expor o aplicativo na rede local? Este aplicativo estará acessível em {appId}.{domain}. (Visite a página de configurações para configurar seu domínio local)", "APP_INSTALL_FORM_RESET": "Redefinir o aplicativo", "APP_INSTALL_FORM_SUBMIT_INSTALL": "Instalar", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Atualizar", "APP_INSTALL_FORM_TITLE": "Instalar {name}", + "APP_INSTALL_FORM_GENERAL": "Geral", + "APP_INSTALL_FORM_REVERSE_PROXY": "Proxy Reverso", "APP_INSTALL_SUCCESS": "Aplicativo {id} instalado com sucesso", + "APP_LOGS_TAB_FOLLOW": "Seguir registros", + "APP_LOGS_TAB_MAX_LINES": "Máximo de linhas", + "APP_LOGS_TAB_TITLE": "Registros", + "APP_LOGS_TAB_WRAP_LINES": "Ajuste de linha automático", + "APP_NEW": "NOVO", "APP_RESET_FORM_SUBMIT": "Redefinir", "APP_RESET_FORM_SUBTITLE": "Todos os dados deste aplicativo serão perdidos.", "APP_RESET_FORM_TITLE": "Redefinir {name} ?", - "APP_RESET_FORM_WARNING": "Confirma? essa ação não poderá ser desfeita.", + "APP_RESET_FORM_WARNING": "Confirma? Essa ação não poderá ser desfeita.", "APP_RESET_SUCCESS": "App {id} redefinido com sucesso", "APP_START_SUCCESS": "App {id} iniciado com sucesso", "APP_STATUS_INSTALLING": "Instalando", @@ -95,7 +102,7 @@ "APP_STATUS_UPDATING": "Atualizando", "APP_STOP_FORM_SUBMIT": "Parar", "APP_STOP_FORM_SUBTITLE": "Todos os dados serão removidos", - "APP_STOP_FORM_TITLE": "Parar {name}?", + "APP_STOP_FORM_TITLE": "Interromper {name}?", "APP_STOP_SUCCESS": "O aplicativo {id} foi interrompido com sucesso", "APP_RESTART_FORM_SUBMIT": "Reiniciar", "APP_RESTART_FORM_SUBTITLE": "Todos os dados serão apagados", @@ -112,7 +119,7 @@ "APP_UNINSTALL_FORM_WARNING": "Tem certeza? Esta ação não pode ser desfeita.", "APP_UNINSTALL_SUCCESS": "App {id} desinstalado com sucesso", "APP_UPDATE_CONFIG_SUCCESS": "Configuração do aplicativo atualizada com sucesso. Reinicie o aplicativo para aplicar as alterações", - "APP_UPDATE_ERROR_MIN_TIPI_VERSION": "App {id} update requires Tipi version {minVersion} or higher. Please update your instance.", + "APP_UPDATE_ERROR_MIN_TIPI_VERSION": "A atualização do aplicativo {id} requer a versão do Tipi {minVersion} ou superior. Por favor, atualize sua instância.", "APP_UPDATE_FORM_SUBMIT": "Atualizar", "APP_UPDATE_FORM_SUBTITLE_1": "Atualize o aplicativo para a última versão :", "APP_UPDATE_FORM_SUBTITLE_2": "Certifique-se de ter lido as notas de lançamento do app e de ter feito backup dos dados do seu aplicativo.", @@ -132,15 +139,15 @@ "AUTH_ERROR_TOTP_INVALID_CODE": "Código 2FA inválido", "AUTH_ERROR_TOTP_NOT_ENABLED": "2FA não está habilitado para esse usuário", "AUTH_ERROR_TOTP_SESSION_NOT_FOUND": "Sessão 2FA não encontrado", - "AUTH_ERROR_USER_ALREADY_EXISTS": "Usuário já existe", + "AUTH_ERROR_USER_ALREADY_EXISTS": "Usuário já existente ", "AUTH_ERROR_USER_NOT_FOUND": "Usuário não encontrado", "AUTH_FORM_EMAIL": "Endereço de e-mail", "AUTH_FORM_EMAIL_PLACEHOLDER": "voce@exemplo.com", "AUTH_FORM_ERROR_EMAIL_EMAIL": "O endereço de e-mail é inválido", "AUTH_FORM_ERROR_EMAIL_INVALID": "O endereço de e-mail é inválido", - "AUTH_FORM_ERROR_EMAIL_REQUIRED": "E-mail é obrigatório", + "AUTH_FORM_ERROR_EMAIL_REQUIRED": "O endereço de e-mail é obrigatório", "AUTH_FORM_ERROR_PASSWORD_CONFIRMATION_LENGTH": "A confirmação da senha deve ter pelo menos 8 caracteres", - "AUTH_FORM_ERROR_PASSWORD_CONFIRMATION_MATCH": "As senhas não conferem", + "AUTH_FORM_ERROR_PASSWORD_CONFIRMATION_MATCH": "As senhas não são iguais", "AUTH_FORM_ERROR_PASSWORD_CONFIRMATION_REQUIRED": "Confirmação de senha é necessária", "AUTH_FORM_ERROR_PASSWORD_LENGTH": "A senha deve ter pelo menos 8 caracteres", "AUTH_FORM_ERROR_PASSWORD_REQUIRED": "A senha é obrigatória", @@ -151,13 +158,13 @@ "AUTH_FORM_PASSWORD_CONFIRMATION": "Confirme a senha", "AUTH_FORM_PASSWORD_CONFIRMATION_PLACEHOLDER": "Confirme sua senha", "AUTH_FORM_PASSWORD_PLACEHOLDER": "Digite sua senha", - "AUTH_LOGIN_SUBMIT": "Entrar", + "AUTH_LOGIN_SUBMIT": "Acessar", "AUTH_LOGIN_TITLE": "Entrar na sua conta", "AUTH_REGISTER_SUBMIT": "Registrar", "AUTH_REGISTER_TITLE": "Crie sua conta", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Voltar para o login", "AUTH_RESET_PASSWORD_CANCEL": "Cancelar solicitação de alteração de senha", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Execute este comando em seu servidor e depois atualize a página", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Para começar, execute este comando em seu servidor e depois atualize esta página. Se você já fez isso anteriormente, a solicitação de redefinição de senha pode ter expirado. Nesse caso, por favor, tente novamente", "AUTH_RESET_PASSWORD_SUBMIT": "Redefinir senha", "AUTH_RESET_PASSWORD_SUCCESS": "Sua senha foi atualizada com sucesso, Agora você pode utilizar sua nova senha e seu e-mail {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Senha atualizada", @@ -165,15 +172,15 @@ "AUTH_TOTP_INSTRUCTIONS": "Insira o código de autenticação", "AUTH_TOTP_SUBMIT": "Aceitar", "AUTH_TOTP_TITLE": "Autenticação de 3 fatores", - "COMMON_CLOSE": "Close", + "COMMON_CLOSE": "Finalizar", "DASHBOARD_CPU_SUBTITLE": "Desinstale aplicativos para reduzir a carga", "DASHBOARD_CPU_TITLE": "Utilização do Processador", "DASHBOARD_DISK_SPACE_SUBTITLE": "Espaço disponível {total} GB", "DASHBOARD_DISK_SPACE_TITLE": "Espaço total em disco", "DASHBOARD_MEMORY_TITLE": "Memória utilizada", "DASHBOARD_TITLE": "Painel de controle", - "DASHBOARD_IP_WARNING_TITLE": "Insecure configuration", - "DASHBOARD_IP_WARNING": "Warning, you might be at risk! it looks like you are accessing your instance through a public IP address. This makes your dashboard and all apps that you install vulnerable to attackers", + "DASHBOARD_IP_WARNING_TITLE": "Configuração insegura", + "DASHBOARD_IP_WARNING": "Atenção, você pode estar em risco! Parece que você está acessando sua instância através de um endereço IP público. Isso torna seu painel e todos os aplicativos que você instala vulneráveis ​​a ataques", "GUEST_DASHBOARD": "Painel de controle para visitantes", "GUEST_DASHBOARD_NO_APPS": "Nenhum aplicativo instalado", "GUEST_DASHBOARD_NO_APPS_SUBTITLE": "Peça ao seu administrador para adicionar aplicativos ao painel de visitantes ou fazer login para ver seus aplicativos.", @@ -202,14 +209,14 @@ "LINKS_EDIT_SUBMIT": "Salvar", "LINKS_EDIT_SUCCESS": "Link editado com sucesso", "LINKS_EDIT_TITLE": "Editar link", - "LINKS_FORM_ICON_PLACEHOLDER": "Link URL da logo", + "LINKS_FORM_ICON_PLACEHOLDER": "URL da logo", "LINKS_FORM_ICON_URL": "URL do ícone", "LINKS_FORM_LINK_TITLE": "Título do link", "LINKS_FORM_LINK_URL": "URL do link", "LINKS_FROM_LINK_DESCRIPTION": "Descrição do link", - "MY_APPS_DEPRECATED": "Este aplicativo está obsoleto", + "MY_APPS_DEPRECATED": "Esse aplicativo foi descontinuado", "MY_APPS_EMPTY_ACTION": "Ir para a App Store", - "MY_APPS_EMPTY_SUBTITLE": "Instale um aplicativo da loja de aplicativos para começar", + "MY_APPS_EMPTY_SUBTITLE": "Instale uma aplicação na loja de aplicativos para começar", "MY_APPS_EMPTY_TITLE": "Nenhum aplicativo instalado", "MY_APPS_TITLE": "Meus aplicativos", "MY_APPS_UPDATE_ALL_FORM_SUBMIT": "Atualizar tudo", @@ -217,12 +224,12 @@ "MY_APPS_UPDATE_ALL_FORM_SUBTITLE_2": "Isso atualizará todos os seus aplicativos para a versão mais recente. Certifique-se de ter lido as notas de lançamento dos aplicativos e ter feito backup dos dados do seu aplicativo.", "MY_APPS_UPDATE_ALL_FORM_TITLE": "Atualizar todos os aplicativos", "MY_APPS_UPDATE_ALL_IN_PROGRESS": "Atualizando todos os aplicativos", - "MY_APPS_UPDATE_AVAILABLE": "Atualização Disponível", + "MY_APPS_UPDATE_AVAILABLE": "Atualização disponível", "RUNTIPI": "Runtipi", "SERVER_ERROR_INVALID_LOCALE": "Idioma inválido", "SERVER_ERROR_NOT_ALLOWED_IN_DEMO": "Não é permitido no modo demonstração", "SERVER_ERROR_NOT_ALLOWED_IN_DEV": "Não permitido no modo de desenvolvimento", - "SETTINGS_ACTIONS_ALREADY_LATEST": "Já está atualizado", + "SETTINGS_ACTIONS_ALREADY_LATEST": "Você já está na última versão", "SETTINGS_ACTIONS_CURRENT_VERSION": "Versão atual: {version}", "SETTINGS_ACTIONS_MAINTENANCE_SUBTITLE": "Ações comuns a serem realizadas em sua instância", "SETTINGS_ACTIONS_MAINTENANCE_TITLE": "Manutenção", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Sua senha é necessária para alterar as configurações de autenticação em duas etapas.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Escaneie este código de barras com\nseu aplicativo autenticador.", "SETTINGS_SECURITY_TAB_TITLE": "Segurança", + "SETTINGS_LOGS_TAB_TITLE": "Registros", "SETTINGS_TITLE": "Configurações", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Error ao baixar atualização", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "A versão atual já está atualizada", diff --git a/src/client/messages/pt-PT.json b/src/client/messages/pt-PT.json index 981094e0..4c21584a 100644 --- a/src/client/messages/pt-PT.json +++ b/src/client/messages/pt-PT.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Instalar", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Atualizar", "APP_INSTALL_FORM_TITLE": "Instalar {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "App {id} installed successfully", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBTITLE": "Todos os dados deste aplicativo serão perdidos.", "APP_RESET_FORM_TITLE": "Reset {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Registre a sua conta", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Voltar ao início de sessão", "AUTH_RESET_PASSWORD_CANCEL": "Cancelar solicitação de alteração de senha", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Execute este comando no seu servidor e, em seguida, atualize esta página", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "Repor palavra-passe", "AUTH_RESET_PASSWORD_SUCCESS": "Sua senha foi redefinida. Agora você pode acessar com a sua nova senha. E seu e-mail {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Redefinir palavra-passe", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "A sua senha é necessária para alterar as configurações de autenticação de dois fatores.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Digitalize este código QR com o seu aplicativo de autenticação.", "SETTINGS_SECURITY_TAB_TITLE": "Segurança", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Configurações", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Não foi possível obter a versão recente", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "A versão atual já é atualizada", diff --git a/src/client/messages/ro-RO.json b/src/client/messages/ro-RO.json index 929e84bf..9e3fd365 100644 --- a/src/client/messages/ro-RO.json +++ b/src/client/messages/ro-RO.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Instalare", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Actualizare", "APP_INSTALL_FORM_TITLE": "Instalează {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "App {id} installed successfully", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBTITLE": "Toate datele pentru această aplicație vor fi pierdute.", "APP_RESET_FORM_TITLE": "Reset {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Înregistrați-vă contul", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Inapoi la autentificare", "AUTH_RESET_PASSWORD_CANCEL": "Anulează cererea de modificare a parolei", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Rulează această comandă pe serverul tău și apoi reîmprospătează această pagină", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "Resetare parola", "AUTH_RESET_PASSWORD_SUCCESS": "Parola ta a fost resetată. Acum te poți conecta cu noua ta parolă. Și adresa de e-mail {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Parolă resetată", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Parola dvs. este necesară pentru a schimba setările de autentificare cu doi factori.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scanați acest cod QR cu aplicația de autentificare.", "SETTINGS_SECURITY_TAB_TITLE": "Securitate", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Setări", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Nu s-a putut obține cea mai recentă versiune", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Versiunea curentă este deja actualizată", diff --git a/src/client/messages/ru-RU.json b/src/client/messages/ru-RU.json index 0c1710f7..1e25b3b2 100644 --- a/src/client/messages/ru-RU.json +++ b/src/client/messages/ru-RU.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Установить", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Обновить", "APP_INSTALL_FORM_TITLE": "Установить {name}", + "APP_INSTALL_FORM_GENERAL": "Общее", + "APP_INSTALL_FORM_REVERSE_PROXY": "Обратный прокси", "APP_INSTALL_SUCCESS": "Приложение {id} успешно установлено", + "APP_LOGS_TAB_FOLLOW": "Следить за логами", + "APP_LOGS_TAB_MAX_LINES": "Максимум строк:", + "APP_LOGS_TAB_TITLE": "Логи", + "APP_LOGS_TAB_WRAP_LINES": "Переносить строки", + "APP_NEW": "НОВОЕ", "APP_RESET_FORM_SUBMIT": "Сбросить", "APP_RESET_FORM_SUBTITLE": "Все данные этого приложения будут потеряны.", "APP_RESET_FORM_TITLE": "Сбросить {name}?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Зарегистрируйте аккаунт", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Вернуться на страницу входа", "AUTH_RESET_PASSWORD_CANCEL": "Отменить запрос на смену пароля", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Выполните эту команду на вашем сервере, затем обновите эту страницу", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Чтобы начать, запустите команду на вашем сервере и обновите эту страницу. Если вы уже сделали это, возможно, запрос на сброс пароля истёк. В этом случае повторите попытку", "AUTH_RESET_PASSWORD_SUBMIT": "Сбросить пароль", "AUTH_RESET_PASSWORD_SUCCESS": "Ваш пароль был сброшен. Теперь вы можете войти с новым паролем. Ваш адрес электронной почты {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Пароль сброшен", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Для изменения параметров двухфакторной аутентификации требуется пароль.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Сканируйте этот QR-код вашим приложением-аутентификатором.", "SETTINGS_SECURITY_TAB_TITLE": "Безопасность", + "SETTINGS_LOGS_TAB_TITLE": "Логи", "SETTINGS_TITLE": "Настройки", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Не удалось получить последнюю версию", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Текущая версия уже актуальна", diff --git a/src/client/messages/sr-SP.json b/src/client/messages/sr-SP.json index 6e6ed396..87c00f87 100644 --- a/src/client/messages/sr-SP.json +++ b/src/client/messages/sr-SP.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_TITLE": "Install {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "App {id} installed successfully", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_TITLE": "Reset {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Register your account", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_TAB_TITLE": "Security", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Settings", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", diff --git a/src/client/messages/sv-SE.json b/src/client/messages/sv-SE.json index d496159e..fc1ebb86 100644 --- a/src/client/messages/sv-SE.json +++ b/src/client/messages/sv-SE.json @@ -42,7 +42,7 @@ "APP_ERROR_APP_FAILED_TO_RESET": "Det gick inte att återställa appen {id}, se loggar för mer information", "APP_ERROR_APP_FAILED_TO_START": "Det gick inte att starta app {id}, se loggar för mer information", "APP_ERROR_APP_FAILED_TO_STOP": "Det gick inte att stoppa app {id}, se loggar för mer information", - "APP_ERROR_APP_FAILED_TO_RESTART": "Failed to restart app {id}, see logs for more details", + "APP_ERROR_APP_FAILED_TO_RESTART": "Misslyckades med att starta om appen{id}. Se loggen för mer detaljer", "APP_ERROR_APP_FAILED_TO_UNINSTALL": "Det gick inte att avinstallera app {id}, se loggar för mer information", "APP_ERROR_APP_FAILED_TO_UPDATE": "Det gick inte att uppdatera app {id}, se loggar för mer information", "APP_ERROR_APP_FORCE_EXPOSED": "Appen {id} fungerar endast med exponerad domän", @@ -67,8 +67,8 @@ "APP_INSTALL_FORM_ERROR_REGEX": "{label} måste matcha mönstret {pattern}", "APP_INSTALL_FORM_ERROR_REQUIRED": "{label} krävs", "APP_INSTALL_FORM_ERROR_URL": "{label} måste vara en giltig URL", - "APP_INSTALL_FORM_EXPOSE_APP": "Expose app on the internet", - "APP_INSTALL_FORM_OPEN_PORT": "Open port", + "APP_INSTALL_FORM_EXPOSE_APP": "Exponera appen mot internet", + "APP_INSTALL_FORM_OPEN_PORT": "Öppna en port", "APP_INSTALL_FORM_OPEN_PORT_HINT": "Open a port on the host? This app will be accessible at {internalIp}:{port}. (Easiest but less secure)", "APP_INSTALL_FORM_EXPOSE_LOCAL": "Expose app on local network", "APP_INSTALL_FORM_EXPOSE_LOCAL_HINT": "Expose the app on the local network? This app will be accessible at {appId}.{domain}. (Visit settings page to setup your local domain)", @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Installera", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Uppdatera", "APP_INSTALL_FORM_TITLE": "Installera {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "Appen {id} installerades", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Återställ", "APP_RESET_FORM_SUBTITLE": "Alla data för denna app kommer att försvinna.", "APP_RESET_FORM_TITLE": "Återställ {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Registrera ditt konto", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Tillbaka till inloggningen", "AUTH_RESET_PASSWORD_CANCEL": "Avbryta begäran om ändring av lösenord", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Kör detta kommando på din server och uppdatera sedan den här sidan", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "Återställ lösenord", "AUTH_RESET_PASSWORD_SUCCESS": "Ditt lösenord har återställts. Du kan nu logga in med ditt nya lösenord. Och din e-postadress {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Återställ lösenord", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Ditt lösenord krävs för att ändra tvåfaktorsautentiseringsinställningar.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Skanna den här QR-koden med din autentiseringsapp.", "SETTINGS_SECURITY_TAB_TITLE": "Säkerhet", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Inställningar", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Kunde inte hämta senaste versionen", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Den nuvarande versionen är redan uppdaterad", diff --git a/src/client/messages/tr-TR.json b/src/client/messages/tr-TR.json index 118aeef0..b2a578d2 100644 --- a/src/client/messages/tr-TR.json +++ b/src/client/messages/tr-TR.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Yükle", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Güncelle", "APP_INSTALL_FORM_TITLE": "Yükle {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "Uygulama başarıyla yüklendi", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Sıfırla", "APP_RESET_FORM_SUBTITLE": "Bu uygulama için tüm veriler kaybolacak.", "APP_RESET_FORM_TITLE": "Yeniden Başlat {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Yeni hesabınızı kaydedin", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Giriş sayfasına dön", "AUTH_RESET_PASSWORD_CANCEL": "Parola değiştirme isteğini iptal et", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Bu komutu sunucunuzda çalıştırtıkdan sonra bu sayfayı yenileyin", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "Parolayı sıfırla", "AUTH_RESET_PASSWORD_SUCCESS": "Parolanız sıfırlandı. Artık yeni parolanız ile giriş yapabilirsiniz. Ve e-postanız {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Parolayı sıfırla", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "İki faktörlü kimlik doğrulama ayarlarını değiştirmek için parolanız gereklidir.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Bu QR kodunu kimlik doğrulama uygulamanızla tarayın.", "SETTINGS_SECURITY_TAB_TITLE": "Güvenlik", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Ayarlar", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "En son sürüm alınamadı", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Son versiyon zaten yüklü", diff --git a/src/client/messages/uk-UA.json b/src/client/messages/uk-UA.json index 6e6ed396..87c00f87 100644 --- a/src/client/messages/uk-UA.json +++ b/src/client/messages/uk-UA.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Install", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Update", "APP_INSTALL_FORM_TITLE": "Install {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "App {id} installed successfully", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBTITLE": "All data for this app will be lost.", "APP_RESET_FORM_TITLE": "Reset {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Register your account", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Back to login", "AUTH_RESET_PASSWORD_CANCEL": "Cancel password change request", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Run this command on your server and then refresh this page", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "Reset password", "AUTH_RESET_PASSWORD_SUCCESS": "Your password has been reset. You can now login with your new password. And your email {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Password reset", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Your password is required to change two-factor authentication settings.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Scan this QR code with your authenticator app.", "SETTINGS_SECURITY_TAB_TITLE": "Security", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Settings", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Could not get latest version", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Current version is already up to date", diff --git a/src/client/messages/vi-VN.json b/src/client/messages/vi-VN.json index a03bd9e7..d926e3fc 100644 --- a/src/client/messages/vi-VN.json +++ b/src/client/messages/vi-VN.json @@ -7,7 +7,7 @@ "APP_ACTION_SETTINGS": "Cài đặt", "APP_ACTION_START": "Bắt đầu", "APP_ACTION_STOP": "Dừng", - "APP_ACTION_RESTART": "Restart", + "APP_ACTION_RESTART": "Khởi Động Lại", "APP_ACTION_UPDATE": "Cập nhật", "APP_CATEGORY_AI": "Trí tuệ nhân tạo", "APP_CATEGORY_AUTOMATION": "Tự động hóa", @@ -28,8 +28,8 @@ "APP_DETAILS_BASE_INFO": "Thông tin cơ bản", "APP_DETAILS_CATEGORIES_TITLE": "Danh mục", "APP_DETAILS_CHOOSE_OPEN_METHOD": "Chọn phương thức mở", - "APP_DETAILS_DEPRECATED_ALERT_SUBTITLE": "A breaking change in this app prevents it from being updated automatically. You can still use this version and update it manually, but it is recommended to switch to a newer version and migrate your data. You can find an updated version in the app store under the same name.", - "APP_DETAILS_DEPRECATED_ALERT_TITLE": "This app is deprecated", + "APP_DETAILS_DEPRECATED_ALERT_SUBTITLE": "Một thay đổi nghiêm trọng trong ứng dụng này ngăn nó khỏi được cập nhật tự động. Bạn vẫn có thể sử dụng phiên bản này và cập nhật thủ công, nhưng khuyến khích chuyển sang phiên bản mới hơn và di dời dữ liệu của bạn. Bạn có thể tìm thấy phiên bản cập nhật trong cửa hàng ứng dụng dưới cùng tên.", + "APP_DETAILS_DEPRECATED_ALERT_TITLE": "Ứng dụng này đã bị loại bỏ", "APP_DETAILS_DESCRIPTION": "Mô tả", "APP_DETAILS_LINK": "Liên kết", "APP_DETAILS_PORT": "Cổng", @@ -38,11 +38,11 @@ "APP_DETAILS_TITLE": "Chi tiết ứng dụng", "APP_DETAILS_VERSION": "Phiên bản", "APP_DETAILS_WEBSITE": "Trang web", - "APP_ERROR_APP_FAILED_TO_INSTALL": "Cài đặt ứng dụng {id} thất bại, vui lòng xem log để biết chi tiết", + "APP_ERROR_APP_FAILED_TO_INSTALL": "Cài đặt ứng dụng {id} thất bại, xem nhật kí để biết chi tiết", "APP_ERROR_APP_FAILED_TO_RESET": "Failed to reset app {id}, see logs for more details", "APP_ERROR_APP_FAILED_TO_START": "Khởi động ứng dụng {id} thất bại, vui lòng xem log để biết chi tiết", "APP_ERROR_APP_FAILED_TO_STOP": "Dừng ứng dụng {id} thất bại, vui lòng xem log để biết chi tiết", - "APP_ERROR_APP_FAILED_TO_RESTART": "Failed to restart app {id}, see logs for more details", + "APP_ERROR_APP_FAILED_TO_RESTART": "Khởi động lại ứng dụng {id} thất bại, xem nhật kí biết thêm", "APP_ERROR_APP_FAILED_TO_UNINSTALL": "Gỡ cài đặt ứng dụng {id} thất bại, vui lòng xem log để biết chi tiết", "APP_ERROR_APP_FAILED_TO_UPDATE": "Cập nhật ứng dụng {id} thất bại, vui lòng xem log để biết chi tiết", "APP_ERROR_APP_FORCE_EXPOSED": "Ứng dụng {id} chỉ hoạt động với tên miền công khai", @@ -76,31 +76,38 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "Cài đặt", "APP_INSTALL_FORM_SUBMIT_UPDATE": "Cập nhật", "APP_INSTALL_FORM_TITLE": "Cài đặt {name}", - "APP_INSTALL_SUCCESS": "App {id} installed successfully", + "APP_INSTALL_FORM_GENERAL": "Chung", + "APP_INSTALL_FORM_REVERSE_PROXY": "Proxy ngược", + "APP_INSTALL_SUCCESS": "Ứng dụng {id} đã được cài đặt thành công", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "MỚI", "APP_RESET_FORM_SUBMIT": "Thiết lập lại", "APP_RESET_FORM_SUBTITLE": "Tất cả dữ liệu của ứng dụng này sẽ bị mất.", - "APP_RESET_FORM_TITLE": "Reset {name} ?", + "APP_RESET_FORM_TITLE": "Đặt lại {name}?", "APP_RESET_FORM_WARNING": "Bạn chắc chứ? Hành động này không thể hoàn tác.", - "APP_RESET_SUCCESS": "App {id} reset successfully", - "APP_START_SUCCESS": "App {id} started successfully", + "APP_RESET_SUCCESS": "Ứng dụng {id} đã được thiết lập lại thành công", + "APP_START_SUCCESS": "Ứng dụng {id} Bắt đầu thành công", "APP_STATUS_INSTALLING": "Đang cài đặt", "APP_STATUS_MISSING": "Thiếu", - "APP_STATUS_RESETTING": "Resetting", + "APP_STATUS_RESETTING": "Đang đặt lại", "APP_STATUS_RUNNING": "Đang hoạt động", "APP_STATUS_STARTING": "Đang khởi động", "APP_STATUS_STOPPED": "Đã dừng", "APP_STATUS_STOPPING": "Đang dừng", - "APP_STATUS_RESTARTING": "Restarting", + "APP_STATUS_RESTARTING": "Khởi động lại", "APP_STATUS_UNINSTALLING": "Đang gỡ cài đặt", "APP_STATUS_UPDATING": "Đang cập nhật", "APP_STOP_FORM_SUBMIT": "Dừng", "APP_STOP_FORM_SUBTITLE": "Tất cả dữ liệu sẽ được giữ lại", "APP_STOP_FORM_TITLE": "Dừng {name}?", - "APP_STOP_SUCCESS": "App {id} stopped successfully", - "APP_RESTART_FORM_SUBMIT": "Restart", - "APP_RESTART_FORM_SUBTITLE": "All data will be retained", - "APP_RESTART_FORM_TITLE": "Restart {name} ?", - "APP_RESTART_SUCCESS": "App {id} restarted successfully", + "APP_STOP_SUCCESS": "Ứng dụng {id} đã dừng thành công", + "APP_RESTART_FORM_SUBMIT": "Khởi động lại", + "APP_RESTART_FORM_SUBTITLE": "Tất cả dữ liệu sẽ được giữ lại", + "APP_RESTART_FORM_TITLE": "Khởi động lại {name} ?", + "APP_RESTART_SUCCESS": "Ứng dụng {id} đã khởi động lại thành công", "APP_STORE_CATEGORY_PLACEHOLDER": "Chọn một danh mục", "APP_STORE_NO_RESULTS": "Không tìm thấy ứng dụng", "APP_STORE_NO_RESULTS_SUBTITLE": "Hãy thử tìm kiếm lại", @@ -110,15 +117,15 @@ "APP_UNINSTALL_FORM_SUBTITLE": "Tất cả dữ liệu của ứng dụng này sẽ bị mất.", "APP_UNINSTALL_FORM_TITLE": "Gỡ cài đặt {name}?", "APP_UNINSTALL_FORM_WARNING": "Bạn chắc chứ? Hành động này không thể hoàn tác.", - "APP_UNINSTALL_SUCCESS": "App {id} uninstalled successfully", + "APP_UNINSTALL_SUCCESS": "Ứng dụng {id} đã được gỡ cài đặt thành công", "APP_UPDATE_CONFIG_SUCCESS": "Cài đặt của ứng dụng đã được cập nhật. Khởi động lại ứng dụng để áp dụng thay đổi", - "APP_UPDATE_ERROR_MIN_TIPI_VERSION": "App {id} update requires Tipi version {minVersion} or higher. Please update your instance.", + "APP_UPDATE_ERROR_MIN_TIPI_VERSION": "Ứng dụng {id} cần cập nhật phiên bản Tipi {minVersion} hoặc cao hơn. Vui lòng cập nhật phiên bản của bạn.", "APP_UPDATE_FORM_SUBMIT": "Cập nhật", "APP_UPDATE_FORM_SUBTITLE_1": "Cập nhật ứng dụng lên phiên bản mới nhất:", "APP_UPDATE_FORM_SUBTITLE_2": "Việc này sẽ thay đổi cấu hình tùy chọn của bạn (ví dụ: các thay đổi trong file docker-compose.yml).", "APP_UPDATE_FORM_TITLE": "Cập nhật {name}?", "APP_UPDATE_SETTINGS_FORM_TITLE": "Cập nhật cấu hình {name}", - "APP_UPDATE_SUCCESS": "App {id} updated successfully", + "APP_UPDATE_SUCCESS": "Ứng dụng {id} cập nhật thành công", "AUTH_ERROR_ADMIN_ALREADY_EXISTS": "Người dùng với quyền quản trị đã tồn tại. Vui lòng đăng nhập để tạo người dùng mới từ Trang quản trị.", "AUTH_ERROR_ERROR_CREATING_USER": "Đã có lỗi khi tạo người dùng", "AUTH_ERROR_INVALID_CREDENTIALS": "Thông tin đăng nhập không hợp lệ", @@ -127,7 +134,7 @@ "AUTH_ERROR_INVALID_USERNAME": "Tên người dùng không hợp lệ", "AUTH_ERROR_MISSING_EMAIL_OR_PASSWORD": "Thiếu email hoặc mật khẩu", "AUTH_ERROR_NO_CHANGE_PASSWORD_REQUEST": "Không có yêu cầu thay đổi mật khẩu nào được tìm thấy", - "AUTH_ERROR_OPERATOR_NOT_FOUND": "Operator user not found", + "AUTH_ERROR_OPERATOR_NOT_FOUND": "Không tìm thấy người quản lí", "AUTH_ERROR_TOTP_ALREADY_ENABLED": "2FA đã được kích hoạt cho người dùng này", "AUTH_ERROR_TOTP_INVALID_CODE": "Mã 2FA không hợp lệ", "AUTH_ERROR_TOTP_NOT_ENABLED": "2FA không kích hoạt cho người dùng này", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "Đăng kí tài khoản của bạn", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "Trở lại trang đăng nhập", "AUTH_RESET_PASSWORD_CANCEL": "Hủy yêu cầu thay đổi mật khẩu", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Chạy lệnh này trên máy chủ của bạn và tải lại trang này", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "Để bắt đầu, chạy lệnh này trên máy chủ của bạn và sau đó làm mới trang này. Nếu bạn đã thực hiện điều này trước đó, yêu cầu đặt lại mật khẩu có thể đã hết hạn. Trong trường hợp đó, vui lòng thử lại", "AUTH_RESET_PASSWORD_SUBMIT": "Đặt lại mật khẩu", "AUTH_RESET_PASSWORD_SUCCESS": "Mật khẩu của bạn đã được khôi phục. Bạn có thể đăng nhập với mật khẩu mới và email {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "Khôi phục mật khẩu", @@ -165,18 +172,18 @@ "AUTH_TOTP_INSTRUCTIONS": "Nhập mã từ ứng dụng xác thực của bạn", "AUTH_TOTP_SUBMIT": "Xác nhận", "AUTH_TOTP_TITLE": "Xác thực 2 bước", - "COMMON_CLOSE": "Close", + "COMMON_CLOSE": "Đóng", "DASHBOARD_CPU_SUBTITLE": "Gỡ cài đặt ứng dụng để giảm thiểu việc quá tải", "DASHBOARD_CPU_TITLE": "Tải CPU", "DASHBOARD_DISK_SPACE_SUBTITLE": "Đã dùng trên tổng số {total} GB", "DASHBOARD_DISK_SPACE_TITLE": "Dung lượng đĩa", "DASHBOARD_MEMORY_TITLE": "Đã sử dụng bộ nhớ", "DASHBOARD_TITLE": "Bảng điều khiển", - "DASHBOARD_IP_WARNING_TITLE": "Insecure configuration", - "DASHBOARD_IP_WARNING": "Warning, you might be at risk! it looks like you are accessing your instance through a public IP address. This makes your dashboard and all apps that you install vulnerable to attackers", - "GUEST_DASHBOARD": "Guest dashboard", - "GUEST_DASHBOARD_NO_APPS": "No apps to display", - "GUEST_DASHBOARD_NO_APPS_SUBTITLE": "Ask your administrator to add apps to the guest dashboard or login to see your apps.", + "DASHBOARD_IP_WARNING_TITLE": "Cấu hình không an toàn", + "DASHBOARD_IP_WARNING": "Cảnh báo, bạn có thể gặp nguy hiểm! Có vẻ bạn đang truy cập vào phiên của mình thông qua IP công cộng. Điều này khiến bảng điều khiển của bạn và các ứng dụng bạn cài đặt có thể bị tấn công", + "GUEST_DASHBOARD": "Bảng điều khiển Khách", + "GUEST_DASHBOARD_NO_APPS": "Không có ứng dụng để hiển thị", + "GUEST_DASHBOARD_NO_APPS_SUBTITLE": "Yêu cầu người quản trị của bạn thêm ứng dụng vào bảng điều khiển khách hoặc đăng nhập để xem ứng dụng của bạn.", "HEADER_APPS": "Ứng dụng của tôi", "HEADER_APP_STORE": "Cửa hàng ứng dụng", "HEADER_DARK_MODE": "Chế độ Ban đêm", @@ -188,33 +195,33 @@ "HEADER_SOURCE_CODE": "Mã nguồn", "HEADER_SPONSOR": "Nhà tài trợ", "HEADER_UPDATE_AVAILABLE": "Đã có bản cập nhật", - "INTERNAL_SERVER_ERROR": "Internal server error", - "LINKS_ADD_SUBMIT": "Submit", - "LINKS_ADD_SUBTITLE": "Add external link to the dashboard", - "LINKS_ADD_SUCCESS": "Link added succesfully", - "LINKS_ADD_TITLE": "Add external link", - "LINKS_DELETE_CONTEXT_MENU": "Delete", - "LINKS_DELETE_SUBMIT": "Delete", - "LINKS_DELETE_SUBTITLE": "Are you sure you want to delete this external link?", - "LINKS_DELETE_SUCCESS": "Link deleted succesfully", - "LINKS_DELETE_TITLE": "Delete external link", - "LINKS_EDIT_CONTEXT_MENU": "Edit", - "LINKS_EDIT_SUBMIT": "Save", - "LINKS_EDIT_SUCCESS": "Link edited succesfully", - "LINKS_EDIT_TITLE": "Edit link", - "LINKS_FORM_ICON_PLACEHOLDER": "Link logo URL", - "LINKS_FORM_ICON_URL": "Icon URL", - "LINKS_FORM_LINK_TITLE": "Link title", - "LINKS_FORM_LINK_URL": "Link URL", - "LINKS_FROM_LINK_DESCRIPTION": "Link Description", - "MY_APPS_DEPRECATED": "This app is deprecated", + "INTERNAL_SERVER_ERROR": "Lỗi máy chủ nội bộ", + "LINKS_ADD_SUBMIT": "Gửi", + "LINKS_ADD_SUBTITLE": "Thêm liên kết bên ngoài vào bảng điều khiển", + "LINKS_ADD_SUCCESS": "Liên kết được thêm thành công", + "LINKS_ADD_TITLE": "Thêm liên kết ngoài", + "LINKS_DELETE_CONTEXT_MENU": "Xóa", + "LINKS_DELETE_SUBMIT": "Xóa", + "LINKS_DELETE_SUBTITLE": "Bạn có chắc chắn muốn xóa liên kết bên ngoài này không?", + "LINKS_DELETE_SUCCESS": "Xóa liên kết thành công", + "LINKS_DELETE_TITLE": "Xóa liên kết bên ngoài", + "LINKS_EDIT_CONTEXT_MENU": "Chỉnh sửa", + "LINKS_EDIT_SUBMIT": "Lưu", + "LINKS_EDIT_SUCCESS": "Sửa liên kết thành công", + "LINKS_EDIT_TITLE": "Sửa liên kết", + "LINKS_FORM_ICON_PLACEHOLDER": "Liên kết logo", + "LINKS_FORM_ICON_URL": "URL biểu tượng", + "LINKS_FORM_LINK_TITLE": "Liên kết tiêu đề", + "LINKS_FORM_LINK_URL": "Địa chỉ liên kết:", + "LINKS_FROM_LINK_DESCRIPTION": "Mô tả Liên kết", + "MY_APPS_DEPRECATED": "Ứng dụng này đã bị loại bỏ", "MY_APPS_EMPTY_ACTION": "Đi đến Cửa hàng Ứng dụng", "MY_APPS_EMPTY_SUBTITLE": "Cài đặt một ứng dụng từ Cửa hàng Ứng dụng để bắt đầu", "MY_APPS_EMPTY_TITLE": "Không có ứng dụng nào được cài đặt", "MY_APPS_TITLE": "Ứng dụng của tôi", "MY_APPS_UPDATE_ALL_FORM_SUBMIT": "Cập nhật tất cả", - "MY_APPS_UPDATE_ALL_FORM_SUBTITLE_1": "Do you want to update all your apps to the latest version?", - "MY_APPS_UPDATE_ALL_FORM_SUBTITLE_2": "This will update all your apps to the latest version. Make sure you've read the release notes of the apps and you've backed up your app data.", + "MY_APPS_UPDATE_ALL_FORM_SUBTITLE_1": "Bạn có muốn cập nhật tất cả ứng dụng của mình lên phiên bản mới nhất?", + "MY_APPS_UPDATE_ALL_FORM_SUBTITLE_2": "Điều này sẽ cập nhật tất cả ứng dụng của bạn lên phiên bản mới nhất. Hãy chắc chắn bạn đã đọc ghi chú phát hành của ứng dụng và đã sao lưu dữ liệu ứng dụng của bạn.", "MY_APPS_UPDATE_ALL_FORM_TITLE": "Cập nhật tất cả ứng dụng", "MY_APPS_UPDATE_ALL_IN_PROGRESS": "Đang cập nhật tất cả ứng dụng", "MY_APPS_UPDATE_AVAILABLE": "Đã có bản cập nhật", @@ -231,18 +238,18 @@ "SETTINGS_ACTIONS_STAY_UP_TO_DATE": "Luôn được cập nhật phiên bản mới nhất của Tipi", "SETTINGS_ACTIONS_TAB_TITLE": "Thao tác", "SETTINGS_ACTIONS_TITLE": "Thao tác", - "SETTINGS_GENERAL_ALLOW_AUTO_THEMES": "Allow auto themes", - "SETTINGS_GENERAL_ALLOW_AUTO_THEMES_HINT": "Be surprised by themes that change automatically based on the time of the year.", - "SETTINGS_GENERAL_ALLOW_ERROR_MONITORING": "Allow anonymous error monitoring", - "SETTINGS_GENERAL_ALLOW_ERROR_MONITORING_HINT": "Error monitoring is used to track errors and improve Tipi. Keep this option enabled to help us improve Tipi.", + "SETTINGS_GENERAL_ALLOW_AUTO_THEMES": "Cho phép chủ đề tự động", + "SETTINGS_GENERAL_ALLOW_AUTO_THEMES_HINT": "Hãy ngạc nhiên bởi các chủ đề thay đổi tự động dựa trên thời gian trong năm.", + "SETTINGS_GENERAL_ALLOW_ERROR_MONITORING": "Cho phép theo dõi lỗi ẩn danh", + "SETTINGS_GENERAL_ALLOW_ERROR_MONITORING_HINT": "Theo dõi lỗi được sử dụng để theo dõi lỗi và cải thiện Tipi. Hãy giữ cho tùy chọn này được bật để giúp chúng tôi cải thiện Tipi.", "SETTINGS_GENERAL_APPS_REPO": "Đường dẫn kho ứng dụng", "SETTINGS_GENERAL_APPS_REPO_HINT": "Đường dẫn đến kho ứng dụng.", "SETTINGS_GENERAL_DNS_IP": "Địa chỉ IP DNS", "SETTINGS_GENERAL_DOMAIN_NAME": "Tên miền", "SETTINGS_GENERAL_DOMAIN_NAME_HINT": "Hãy chắc chắn rằng tên miền này có chứa bản ghi A trỏ đến địa chỉ IP của bạn.", "SETTINGS_GENERAL_DOWNLOAD_CERTIFICATE": "Tải chứng chỉ", - "SETTINGS_GENERAL_GUEST_DASHBOARD": "Enable guest dashboard", - "SETTINGS_GENERAL_GUEST_DASHBOARD_HINT": "This will allow non-authenticated users to see a limited dashboard and easily access the running apps on your instance.", + "SETTINGS_GENERAL_GUEST_DASHBOARD": "Kích hoạt bảng điều khiển khách", + "SETTINGS_GENERAL_GUEST_DASHBOARD_HINT": "Điều này sẽ cho phép người dùng chưa xác thực xem bảng điều khiển giới hạn và dễ dàng truy cập các ứng dụng đang chạy trên phiên bản của bạn.", "SETTINGS_GENERAL_INTERNAL_IP": "Địa chỉ IP nội bộ", "SETTINGS_GENERAL_INTERNAL_IP_HINT": "Địa chỉ IP máy chủ của bạn sẽ nhận gói tin.", "SETTINGS_GENERAL_INVALID_DOMAIN": "Tên miền không hợp lệ", @@ -254,7 +261,7 @@ "SETTINGS_GENERAL_LOCAL_DOMAIN_HINT": "Tên miền để truy cập ứng dụng từ mạng nội bộ của bạn. Ứng dụng có thể được truy cập tại app-name.local-domain.", "SETTINGS_GENERAL_SETTINGS_UPDATED": "Cài đặt đã được cập nhật. Khởi động lại máy chủ của bạn để áp dụng cài đặt mới.", "SETTINGS_GENERAL_STORAGE_PATH": "Đường dẫn lưu trữ dữ liệu", - "SETTINGS_GENERAL_STORAGE_PATH_HINT": "Path to the storage directory. Make sure it is an absolute path and that it exists.", + "SETTINGS_GENERAL_STORAGE_PATH_HINT": "Đường dẫn đến thư mục lưu trữ dữ liệu. Hãy chắc rằng đó là đường dẫn tuyệt đối và đã tồn tại.", "SETTINGS_GENERAL_SUBMIT": "Cập nhật cài đặt", "SETTINGS_GENERAL_SUBTITLE": "Điều này sẽ thay đổi file setting.json của bạn. Hãy chắc chắn rằng bạn hiểu rõ mình đang làm gì trước khi thay đổi các giá trị này.", "SETTINGS_GENERAL_TAB_TITLE": "Cài đặt", @@ -270,9 +277,9 @@ "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_INVALID_USERNAME": "Phải là một địa chỉ email hợp lệ", "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_NEW_USERNAME": "Tên đăng nhập mới", "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_PASSWORD": "Mật khẩu", - "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_PASSWORD_NEEDED_HINT": "Your password is required to change your username.", + "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_PASSWORD_NEEDED_HINT": "Mật khẩu của bạn cần thiết để thay đổi tên người dùng của bạn.", "SETTINGS_SECURITY_CHANGE_USERNAME_FORM_SUBMIT": "Thay đổi tên đăng nhập", - "SETTINGS_SECURITY_CHANGE_USERNAME_SUBTITLE": "Changing your username will log you out of all devices.", + "SETTINGS_SECURITY_CHANGE_USERNAME_SUBTITLE": "Thay đổi tên người dùng sẽ đăng xuất bạn khỏi tất cả các thiết bị.", "SETTINGS_SECURITY_CHANGE_USERNAME_SUCCESS": "Tên đăng nhập thay đổi thành công", "SETTINGS_SECURITY_CHANGE_USERNAME_TITLE": "Thay đổi tên đăng nhập", "SETTINGS_SECURITY_DISABLE_2FA": "Tắt xác thực 2 bước", @@ -291,10 +298,11 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "Mật khẩu của bạn được yêu cầu khi muốn thay đổi cấu hình Xác thực 2 bước.", "SETTINGS_SECURITY_SCAN_QR_CODE": "Quét mã QR này bằng ứng dụng xác thực của bạn.", "SETTINGS_SECURITY_TAB_TITLE": "Bảo mật", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "Cài đặt", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "Không thể kiểm tra phiên bản mới nhất", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "Phiên bản hiện tại đã được cập nhật", - "SYSTEM_ERROR_DEMO_MODE_LIMIT": "Only 6 apps can be installed in the demo mode. Please uninstall an other app to install a new one.", + "SYSTEM_ERROR_DEMO_MODE_LIMIT": "Chỉ có thể cài đặt 6 ứng dụng trong chế độ demo. Vui lòng gỡ bỏ một ứng dụng khác để cài đặt một ứng dụng mới.", "SYSTEM_ERROR_MAJOR_VERSION_UPDATE": "Ứng dụng được cập nhật phiên bản lớn. Vui lòng cập nhật thủ công (hướng dẫn được tim thấy ở GitHub)", - "SYSTEM_ERROR_YOU_MUST_BE_LOGGED_IN": "You must be logged in to perform this action" + "SYSTEM_ERROR_YOU_MUST_BE_LOGGED_IN": "Bạn phải đăng nhập để thực hiện hành động này" } diff --git a/src/client/messages/zh-CN.json b/src/client/messages/zh-CN.json index 1f81c89a..83c1fb80 100644 --- a/src/client/messages/zh-CN.json +++ b/src/client/messages/zh-CN.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "安装", "APP_INSTALL_FORM_SUBMIT_UPDATE": "更新", "APP_INSTALL_FORM_TITLE": "安装 {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "应用 {id} 安装成功", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "重置", "APP_RESET_FORM_SUBTITLE": "此应用的所有数据将丢失。", "APP_RESET_FORM_TITLE": "确认重置 {name}?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "注册您的账户", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "返回登录界面", "AUTH_RESET_PASSWORD_CANCEL": "取消密码更改请求", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "在您的服务器上运行此命令,然后刷新此页", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "重置密码", "AUTH_RESET_PASSWORD_SUCCESS": "您的密码已重置。您现在可以使用您的新密码登录。您的电子邮件 {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "密码重置", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "更改双重身份验证设置需要您的密码。", "SETTINGS_SECURITY_SCAN_QR_CODE": "使用验证器应用扫描这个二维码", "SETTINGS_SECURITY_TAB_TITLE": "安全", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "设置", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "无法获取最新版本", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "当前版本已经是最新版本", diff --git a/src/client/messages/zh-TW.json b/src/client/messages/zh-TW.json index eda4faaf..f2c4e265 100644 --- a/src/client/messages/zh-TW.json +++ b/src/client/messages/zh-TW.json @@ -76,7 +76,14 @@ "APP_INSTALL_FORM_SUBMIT_INSTALL": "安裝", "APP_INSTALL_FORM_SUBMIT_UPDATE": "更新", "APP_INSTALL_FORM_TITLE": "安裝 {name}", + "APP_INSTALL_FORM_GENERAL": "General", + "APP_INSTALL_FORM_REVERSE_PROXY": "Reverse proxy", "APP_INSTALL_SUCCESS": "App {id} installed successfully", + "APP_LOGS_TAB_FOLLOW": "Follow logs", + "APP_LOGS_TAB_MAX_LINES": "Max lines:", + "APP_LOGS_TAB_TITLE": "Logs", + "APP_LOGS_TAB_WRAP_LINES": "Wrap lines", + "APP_NEW": "NEW", "APP_RESET_FORM_SUBMIT": "Reset", "APP_RESET_FORM_SUBTITLE": "此應用程序的所有數據都將丟失。", "APP_RESET_FORM_TITLE": "Reset {name} ?", @@ -157,7 +164,7 @@ "AUTH_REGISTER_TITLE": "註冊您的帳戶", "AUTH_RESET_PASSWORD_BACK_TO_LOGIN": "返回登入", "AUTH_RESET_PASSWORD_CANCEL": "取消密碼更改請求", - "AUTH_RESET_PASSWORD_INSTRUCTIONS": "在您的服務器上運行此命令,然後刷新此頁面", + "AUTH_RESET_PASSWORD_INSTRUCTIONS": "To get started, run this command on your server and then refresh this page. If you have previously done so, the password reset request may have expired. In that case please retry", "AUTH_RESET_PASSWORD_SUBMIT": "密碼重置", "AUTH_RESET_PASSWORD_SUCCESS": "您的密碼已重置。 您現在可以使用新密碼登錄。 還有你的電子郵件 {email}", "AUTH_RESET_PASSWORD_SUCCESS_TITLE": "重置密碼", @@ -291,6 +298,7 @@ "SETTINGS_SECURITY_PASSWORD_NEEDED_HINT": "需要您的密碼才能更改雙因素身份驗證設置", "SETTINGS_SECURITY_SCAN_QR_CODE": "使用您的驗證器程式掃描此 QR Code", "SETTINGS_SECURITY_TAB_TITLE": "安全性", + "SETTINGS_LOGS_TAB_TITLE": "Logs", "SETTINGS_TITLE": "設定", "SYSTEM_ERROR_COULD_NOT_GET_LATEST_VERSION": "無法檢查最新版本", "SYSTEM_ERROR_CURRENT_VERSION_IS_LATEST": "當前版本已經是最新的", diff --git a/src/shared/internationalization/locales.ts b/src/shared/internationalization/locales.ts index 361c2eaf..60a518db 100644 --- a/src/shared/internationalization/locales.ts +++ b/src/shared/internationalization/locales.ts @@ -15,6 +15,8 @@ const APP_LOCALES = { 'vi-VN': 'Tiếng Việt', 'zh-CN': '简体中文', 'zh-TW': '繁體中文', + 'pt-PT': 'Português', + 'pt-BR': 'Português (Brasil)', } as const; type BaseLang = T extends `${infer U}-${string}` ? U : T; // 'en-US' -> 'en' @@ -28,6 +30,7 @@ const FALLBACK_LOCALES: { from: BaseLang; to: keyof ty { from: 'it', to: 'it-IT' }, { from: 'ja', to: 'ja-JP' }, { from: 'pl', to: 'pl-PL' }, + { from: 'pt', to: 'pt-PT' }, { from: 'sv', to: 'sv-SE' }, { from: 'ro', to: 'ro-RO' }, { from: 'ru', to: 'ru-RU' },